More info: ATA hang on resume

From: Nate Lawson <nate_at_root.org>
Date: Tue, 23 Dec 2003 17:38:39 -0800 (PST)
I did some more tracing on this and found that the reset of ata0 is indeed
hanging.  My machine does not have an APIC, just a simple PIC laptop (IBM
T23).  I've disabled most devices and am not using atapi-cam.

atapci0_at_pci0:31:1:      class=0x01018a card=0x02201014 chip=0x248a8086 rev=0x02 hdr=0x00
    vendor   = 'Intel Corporation'
    device   = '82801CAM (ICH3-M) UltraATA/100 EIDE Controller'

atapci0: <Intel ICH3 UDMA100 controller> port 0x1860-0x186f,0x374-0x377,0x170-0x177,0x3f4-0x3f7,0x1f0-0x1f7 at device 31.1 on pci0
ata0: at 0x1f0 irq 14 on atapci0
ata0: [MPSAFE]
ata1: at 0x170 irq 15 on atapci0
ata1: [MPSAFE]

ad0: 19077MB <IC25N020ATCS04-0> [41344/15/63] at ata0-master UDMA100
acd0: CDRW <UJDA720 DVD/CDRW> at ata1-master PIO4

After putting in some debugging prints, I found that the hang is
happening in this call stack:

ata_controlcmd(ATA_SF_SETXFER)	ata-chipset.c:874
ata_intel_new_setmode()		ata-chipset.c:851
ch->device[MASTER].setmode(..., ATA_PIO_MAX)  ata-all.c:681
ata_identify_devices()		ata-all.c:276
ata_reinit()			ata-all.c:231

I don't know what in ata_controlcmd() is hanging.  If I remove the call to
setting ATA_PIO_MAX so I just do the call to set ATA_DMA_MAX, it still
hangs in that call in the same place.  Are you sure it's legal to call
ATA_SF_SETXFER with a mode of ATA_PIO_MAX (0x0f) or ATA_DMA_MAX (0x4f)?
I tried changing these calls to set PIO4 and UDMA5 just in case, but no
luck.

What information can I find to help you track down this regression?  You
fixed suspend/resume early October (I think) although it broke again
sometime in November.

Thanks,
-Nate
Received on Tue Dec 23 2003 - 16:38:39 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:35 UTC