Subject: Re: DMA timing issues with promise controllers

From: [email-masked]
Date: Mon, 12 Jan 2004 10:14:39 -0500

If it helps any I've seen exactly the same thing on a Motorola VME board
with a Ramix (now GE Fanuc) card running over PCI.  It also uses
a PROMIS chip.   The error seem to be just a nuisance, but does cause
an extra delay during boot.  You're right that it does appear to be a DMA
timing
issue, as the system sees the drive fine and it works great after the
reset.

Anything I saw on lists said to check cables, etc. which was not the issue
here.     For me, the bigger problem is to get the firmware on the board to
talk to the controller and recognize the drive so I can boot from it.
This was booted from flash.

Snip from boot output ************

Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
PDC20269: IDE controller at PCI slot 00:11.0
PDC20269: chipset revision 2
PDC20269: not 100% native mode: will probe irqs later
    ide2: BM-DMA at 0x77ef90-0x77ef97, BIOS settings: hde:pio, hdf:pio
    ide3: BM-DMA at 0x77ef98-0x77ef9f, BIOS settings: hdg:pio, hdh:pio
Probing IDE interface ide2...
hde: IC25N040ATCS04-0, ATA DISK drive
blk: queue c0224b60, I/O limit 4095Mb (mask 0xffffffff)
Probing IDE interface ide3...
ide2 at 0x77efb8-0x77efbf,0x77efb6 on irq 28
hde: attached ide-disk driver.
hde: host protected area => 1
hde: 78140160 sectors (40008 MB) w/1768KiB Cache, CHS=77520/16/63,
UDMA(100)
Partition check:
 hde:<4>hde: dma_timer_expiry: dma status == 0x21
hde: error waiting for DMA
hde: dma timeout retry: status=0x51 { DriveReady SeekComplete Error }
hde: dma timeout retry: error=0x84 { DriveStatusError BadCRC }
 hde1 hde2 hde3 hde4 <hde: dma_intr: status=0x51 { DriveReady SeekComplete
Error }
hde: dma_intr: error=0x84 { DriveStatusError BadCRC }
hde: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hde: dma_intr: error=0x84 { DriveStatusError BadCRC }
hde: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hde: dma_intr: error=0x84 { DriveStatusError BadCRC }
hde: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hde: dma_intr: error=0x84 { DriveStatusError BadCRC }
PDC202XX: Primary channel reset.
ide2: reset: success
 hde5 >
SCSI subsystem driver Revision: 1.00
scsi0 : SCSI host adapter emulation for IDE ATAPI devices

end snip ************************

If you find a fix and would like me to test it on this platform, I'd be
glad to.
I'm running at 2.4.23-pre5 from the linuxppc_2_4_devel tree.
The errors happen on every reset.

Gary

mutex <[email-masked]> on 01/12/2004 01:54:47 AM

Please respond to mutex <[email-masked]>

To:   [email-masked]
cc:    (bcc: Gary Hannon/CSP)
Subject:  DMA timing issues with promise controllers

Hello all ;-)
I spoke with benh briefly on irc about a problem I was having with
some promise controllers on my quicksilver G4(867).
During boot I get a slew of 'DriveReady SeekComplete Error' and
'DriveStatusError BadCRC' during what looks like some dma timing
tests.
I attached my dmesg.  I did a few tests and this problem manifests
itself irregardless of harddrive(multiple size/version of maxtor
harddrives) and with multiple versions of the promise
chipset(PDC20267, PDC20268)
The drives work fine after a ide reset, but the reset sequence happens
again when I attempt to use fdisk or mount a partition.

I'm willing to do some of the debugging myself, just not sure where to
start.
clues anyone ?