2000-11-05 16:48:09

by Ville Herva

[permalink] [raw]
Subject: 440FX and DMA on 2.2.18pre18

I have a dual Ppro200 with 440FX chipset and an IBM 30GB ide disk. The
kernel is 2.2.18pre18 with no additional patches. DMA appears not to work
with this combination.

lspci:

00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:07.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] (rev 01)
00:07.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:07.2 USB Controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01)
00:0c.0 Ethernet controller: Intel Corporation 82557 [Ethernet Pro 100] (rev 02)
00:0d.0 VGA compatible controller: Matrox Graphics, Inc. MGA 2164W [Millennium II]
00:0e.0 SCSI storage controller: Adaptec AHA-294x / AIC-7871

hdparm -i /dev/hda:

/dev/hda:

Model=IBM-DTLA-305030, FwRev=TW3OA60A, SerialNo=YG0YG017000
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=40
BuffType=DualPortCache, BuffSize=380kB, MaxMultSect=16, MultSect=off
CurCHS=16383/16/63, CurSects=-66060037, LBA=yes, LBAsects=60036480
IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5

hdparm /dev/hda:

/dev/hda:
multcount = 0 (off)
I/O support = 0 (default 16-bit)
unmaskirq = 0 (off)
using_dma = 0 (off)
keepsettings = 0 (off)
nowerr = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
geometry = 3737/255/63, sectors = 60036480, start = 0

If I do hdparm -d1; hdparm -tT /dev/hda

hda: timeout waiting for DMA
hda: irq timeout: status=0x58 { DriveReady SeekComplete DataRequest }
VFS: Disk change detected on device ide0(3,64)
hda: timeout waiting for DMA
hda: irq timeout: status=0x58 { DriveReady SeekComplete DataRequest }
hda: timeout waiting for DMA
hda: irq timeout: status=0x58 { DriveReady SeekComplete DataRequest }
hda: timeout waiting for DMA
hda: irq timeout: status=0x58 { DriveReady SeekComplete DataRequest }
hda: DMA disabled
ide0: reset: success

On another box with a single PPro200 and 440FX chipset, DMA works just
fine. That box also has IBM disk (30GB) but runs 2.0.37.

Should I try the IDE-patch or suspect the cable? Can anybody confirm that
DMA works with 440FX and a recent 2.2.x?


-- v --

[email protected]


2000-11-05 17:14:21

by Andre Hedrick

[permalink] [raw]
Subject: Re: 440FX and DMA on 2.2.18pre18


It looks like you have a P6DNE and yes it doesn, but the patches are
required to downgrade the drive to the host limits.

Cheers,


On Sun, 5 Nov 2000, Ville Herva wrote:

> I have a dual Ppro200 with 440FX chipset and an IBM 30GB ide disk. The
> kernel is 2.2.18pre18 with no additional patches. DMA appears not to work
> with this combination.
>
> lspci:
>
> 00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
> 00:07.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] (rev 01)
> 00:07.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
> 00:07.2 USB Controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01)
> 00:0c.0 Ethernet controller: Intel Corporation 82557 [Ethernet Pro 100] (rev 02)
> 00:0d.0 VGA compatible controller: Matrox Graphics, Inc. MGA 2164W [Millennium II]
> 00:0e.0 SCSI storage controller: Adaptec AHA-294x / AIC-7871
>
> hdparm -i /dev/hda:
>
> /dev/hda:
>
> Model=IBM-DTLA-305030, FwRev=TW3OA60A, SerialNo=YG0YG017000
> Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
> RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=40
> BuffType=DualPortCache, BuffSize=380kB, MaxMultSect=16, MultSect=off
> CurCHS=16383/16/63, CurSects=-66060037, LBA=yes, LBAsects=60036480
> IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
> PIO modes: pio0 pio1 pio2 pio3 pio4
> DMA modes: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5
>
> hdparm /dev/hda:
>
> /dev/hda:
> multcount = 0 (off)
> I/O support = 0 (default 16-bit)
> unmaskirq = 0 (off)
> using_dma = 0 (off)
> keepsettings = 0 (off)
> nowerr = 0 (off)
> readonly = 0 (off)
> readahead = 8 (on)
> geometry = 3737/255/63, sectors = 60036480, start = 0
>
> If I do hdparm -d1; hdparm -tT /dev/hda
>
> hda: timeout waiting for DMA
> hda: irq timeout: status=0x58 { DriveReady SeekComplete DataRequest }
> VFS: Disk change detected on device ide0(3,64)
> hda: timeout waiting for DMA
> hda: irq timeout: status=0x58 { DriveReady SeekComplete DataRequest }
> hda: timeout waiting for DMA
> hda: irq timeout: status=0x58 { DriveReady SeekComplete DataRequest }
> hda: timeout waiting for DMA
> hda: irq timeout: status=0x58 { DriveReady SeekComplete DataRequest }
> hda: DMA disabled
> ide0: reset: success
>
> On another box with a single PPro200 and 440FX chipset, DMA works just
> fine. That box also has IBM disk (30GB) but runs 2.0.37.
>
> Should I try the IDE-patch or suspect the cable? Can anybody confirm that
> DMA works with 440FX and a recent 2.2.x?
>
>
> -- v --
>
> [email protected]
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> Please read the FAQ at http://www.tux.org/lkml/
>

Andre Hedrick
CTO Timpanogas Research Group
EVP Linux Development, TRG
Linux ATA Development

2000-11-05 18:35:53

by Ville Herva

[permalink] [raw]
Subject: Re: 440FX and DMA on 2.2.18pre18

On Sun, Nov 05, 2000 at 09:27:36AM -0800, you [Andre Hedrick] said:
>
> On Sun, 5 Nov 2000, Ville Herva wrote:
>
> > You mean that if I apply the IDE-patch, I can get some DMA mode working?
>
> YES!!! in a word ;-)

Okay, I can confirm that:

hdparm -c1 -d1 /dev/hda

/dev/hda:
setting 32-bit I/O support flag to 1
setting using_dma to 1 (on)
I/O support = 1 (32-bit)
using_dma = 1 (on)


hdparm /dev/hda

/dev/hda:
multcount = 0 (off)
I/O support = 1 (32-bit)
unmaskirq = 0 (off)
using_dma = 1 (on)
keepsettings = 1 (on)
nowerr = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
geometry = 3737/255/63, sectors = 60036480, start = 0

DMA modes: mdma0 mdma1 *mdma2 udma0 udma1 udma2 udma3 udma4 udma5

hdparm -tT /dev/hda

/dev/hda:
Timing buffer-cache reads: 128 MB in 2.55 seconds = 50.20 MB/sec
Timing buffered disk reads: 64 MB in 5.73 seconds = 11.17 MB/sec


Not a top-notch result, but I guess 440FX just isn't capable of better. In
any case, that's heck of a lot better that the <3MB/s I was getting in
PIO mode without the IDE-patch.


-- v --

[email protected]