Re: PIIX3 timeout waiting for DMA 2.4 and MAXTOR drive.

From: Meelis Roos (mroos@linux.ee)
Date: Thu Jul 24 2003 - 11:43:09 EST


> This a PIIX3 chipset problem with some disks?

I believe this a MWDMA2 mode bug in Linux IDE layer (but I may be wrong
of course).

> This message appears three times during the copy and finaly dma
> & multicount is disabled, but reactivated with hdparm without
> problems.
>
> hdc: dma_timer_expiry: dma status == 0x20
> hdc: timeout waiting for DMA
> hdc: timeout waiting for DMA
> hdc: (__ide_dma_test_irq) called while not waiting
> hdc: status error: status=0x58 { DriveReady SeekComplete DataRequest }
>
> hdc: drive not ready for command
> hdc: status timeout: status=0xd0 { Busy }
>
> hdc: drive not ready for command
> ide1: reset: success

I have similar messages from one drive (old pre-UDMA Seagate with MWDMA)
on several computres. In short: 2.4.18 with PIIX driver is OK, 2.4.19
gives errors. ICH2 and new kernels give errors, old kernel not tested
yet. VIA 686b gives errors with newer kernels but also gives different
error on 2.4.18 (which is completely unexplained by me). Most errors
occur during disk load, cp -a of a kernel tree usually triggers it.
Needless to say that 2.5.latest have been the sam as current 2.4.

Details are below.

Since the disk works fine with kernels up to 2.4.18 24x7 and gets quite
a load (it's a kernel compile disk in an old K6/200 with 430TX, also
gets bk pulls for the kernel), the disk is probably working.

Since new kernels give errors not only on PIIX4 and ICH2 but also on
VIA, it is probaly not just Intel IDE driver problem.

So far I have seen 3 people with MWDMA problems, they are included in
the reply except one that I have lost the address for. MWDMA _seems_ to
be the common denominator.

The details:

2.4.18+piix tuning on PIIX4 works OK.

2.4.18+via driver on via 686b gets this:

hdd: timeout waiting for DMA
ide_dmaproc: chipset supported ide_dma_timeout func only: 14
hdd: status error: status=0x58 { DriveReady SeekComplete DataRequest }
hdd: drive not ready for command
hdd: status timeout: status=0xd0 { Busy }
hdc: DMA disabled
hdd: drive not ready for command
ide1: reset: success

The same is repeated sometimes without "DMA disabled" message but the
thing seems to work.

2.4.22pre on the same piix4 gets this:

hdd: dma_timer_expiry: dma status == 0x61
hda: dma_timer_expiry: dma status == 0x61
hdd: error waiting for DMA
hdd: dma timeout retry: status=0x58 { DriveReady SeekComplete DataRequest }

hdd: status timeout: status=0xd0 { Busy }

hdc: DMA disabled
hdd: drive not ready for command
ide1: reset timed-out, status=0xff
hdd: dma_timer_expiry: dma status == 0x41
hdd: error waiting for DMA
hdd: dma timeout retry: status=0x58 { DriveReady SeekComplete DataRequest }

hdd: status timeout: status=0xd0 { Busy }

hdd: drive not ready for command
ide1: reset timed-out, status=0xff

And the disk is put offline after lots of IO errors.

2.4.22pre on via686b gets this:

hdd: dma_timer_expiry: dma status == 0x60
hdd: timeout waiting for DMA
hdd: timeout waiting for DMA
hdd: (__ide_dma_test_irq) called while not waiting
hdd: status error: status=0x58 { DriveReady SeekComplete DataRequest }

hdd: drive not ready for command
hdd: status timeout: status=0xd0 { Busy }

hdc: DMA disabled
hdd: drive not ready for command
ide1: reset: success

and the disk stays working but sometimes stops for quite several
seconds, spits this error and continues.

2.4.22pre on ICH2 gets this _during partition detection_:

hdd: dma_timer_expiry: dma status == 0x40
hdd: timeout waiting for DMA
hdd: timeout waiting for DMA
hdd: (__ide_dma_test_irq) called while not waiting
hdd: status error: status=0x58 { DriveReady SeekComplete DataRequest }

hdd: drive not ready for command
hdd: status error: status=0x58 { DriveReady SeekComplete DataRequest }

hdd: drive not ready for command

so no partitions and no mounting withs this kernel version.

Ths disk is Seagate ST32531A, 4996476 sectors (2558 MB), CHS=4956/16/63.
It is used as secondary slave with different cdroms as secondary
masters. Smart info tells it passes tests, has no relocated sectors yet
but seek error rate and raw read error rate have high raw values:

  1 Raw_Read_Error_Rate 0x000a 115 099 000 Old_age Always - 95379906
  3 Spin_Up_Time 0x0006 097 097 000 Old_age Always - 3
  4 Start_Stop_Count 0x0013 100 100 020 Pre-fail Always - 131
  5 Reallocated_Sector_Ct 0x0013 100 100 036 Pre-fail Always - 0
  7 Seek_Error_Rate 0x000b 068 053 030 Pre-fail Always - 25814353362
 10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
 12 Power_Cycle_Count 0x0013 100 100 020 Pre-fail Always - 126

hdparm -i of it:

/dev/hdd:

 Model=ST32531A, FwRev=0.62, SerialNo=VE047143
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
 RawCHS=4956/16/63, TrkSize=0, SectSize=0, ECCbytes=4
 BuffType=unknown, BuffSize=0kB, MaxMultSect=16, MultSect=off
 CurCHS=4956/16/63, CurSects=4996476, LBA=yes, LBAsects=4996476
 IORDY=on/off, tPIO={min:383,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes: pio0 pio1 pio3 pio4
 DMA modes: mdma0 mdma1 *mdma2
 AdvancedPM=no
 Drive conforms to: unknown: 0 1 2

and hdparm -I:
/dev/hdd:

ATA device, with non-removable media
        Model Number: ST32531A
        Serial Number: VE047143
        Firmware Revision: 0.62
Standards:
        Supported: 2 1
        Likely used: 3
Configuration:
        Logical max current
        cylinders 4956 4956
        heads 16 16
        sectors/track 63 63
        --
        CHS current addressable sectors: 4996476
        LBA user addressable sectors: 4996476
        device size with M = 1024*1024: 2439 MBytes
        device size with M = 1000*1000: 2558 MBytes (2 GB)
Capabilities:
        LBA, IORDY(can be disabled)
        bytes avail on r/w long: 4
        Standby timer values: spec'd by Vendor
        R/W multiple sector transfer: Max = 16 Current = 16
        DMA: mdma0 mdma1 *mdma2
             Cycle time: min=120ns recommended=120ns
        PIO: pio0 pio1 pio2 pio3 pio4
             Cycle time: no flow control=383ns IORDY flow control=120ns
Commands/features:
        Enabled Supported:
                Power Management feature set
                SMART feature set

I did try increasing the timeout for DMA reads and DMA writes in
ide-dma.c but of course this did not help.

-- 
Meelis Roos (mroos@linux.ee)

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Thu Jul 31 2003 - 22:00:23 EST