5.2-RC2: APM suspend/resume ata0 reset problem

Dr. Gary E. RAFE gary.rafe at utoledo.edu
Mon Jan 5 10:40:28 PST 2004


Here's another data point regarding the APM suspend/resume ata reset
problem with 5.2-RC2.

I currently run 4.8-R on my Toshiba Satellite Pro 6100
(I burned a 4.9-R CD when it became available, but haven't
had time to work through the upgrade).

In an open partition, I installed 5.2-RC2 during the recent
holiday.  I was pleased to find most everything working
correctly (e.g., XFree86 with the nVidia, WiFi through cbb/pccard,
pcm, usb, and so on).

I did give ACPI a go, but found that suspending the system only managed
to hang it without powering anything down.

When I got to testing APM suspend/resume, I noted that:

1) The system hangs upon resume during the ata0 reset:

	pci_cfgintr: 0:29 INTA BIOS irq 11
	pci_cfgintr: 0:29 INTB BIOS irq 11
	pci_cfgintr: 0:29 INTC BIOS irq 11
	pci_cfgintr: 0:31 INTA BIOS irq 11
	pci_cfgintr: 0:31 INTB BIOS irq 11
	pci_cfgintr: 0:31 INTB BIOS irq 11
	pci_cfgintr: 1:0 INTA BIOS irq 10
	pci_cfgintr: 2:8 INTA BIOS irq 11
	pci_cfgintr: 2:10 INTA BIOS irq 11
	pci_cfgintr: 2:11 INTA BIOS irq 11
	pci_cfgintr: 2:11 INTB BIOS irq 11
	pci_cfgintr: 2:13 INTA BIOS irq 11
	ata0: resetting devices ..
	[stuck here with the disk activity LED on]

2) With a "verbose" kernel boot, the system resumes OK,
   but USB goes away:

	...
	wakeup from sleeping state (slept 15:33:52)
	atkbd: the current kbd controller command byte 0065
	atkbd: keyboard ID 0x41ab (2)
	kbdc: RESET_KBD return code:00fa
	kbdc: RESET_KBD status:00aa
	ata0: resetting devices ..
	ata0: reset tp1 mask=03 ostat0=50 ostat1=00
	ad0: stat=0x50 err=0x01 lsb=0x00 msb=0x00
	ata0-slave:  stat=0x00 err=0x01 lsb=0x00 msb=0x00
	ata0: reset tp2 mask=03 stat0=50 stat1=00 devices=0x1<ATA_MASTER>
	ad0: pio=0x0c wdma=0x22 udma=0x45 cable=80pin
	ad0: setting PIO4 on Intel ICH3 chip
	ad0: setting UDMA100 on Intel ICH3 chip
	ad0: setting UDMA100 on Intel ICH3 chip
	done
	ata1: resetting devices ..
	ata1: reset tp1 mask=03 ostat0=50 ostat1=00
	acd0: stat=0x00 err=0x01 lsb=0x14 msb=0xeb
	ata1-slave:  stat=0x00 err=0x04 lsb=0x00 msb=0x00
	ata1: reset tp2 mask=03 stat0=00 stat1=00 devices=0x4<ATAPI_MASTER>
	acd0: pio=0x0c wdma=0x22 udma=0x42 cable=40pin
	acd0: setting PIO4 on Intel ICH3 chip  
	acd0: setting PIO4 on Intel ICH3 chip
	done
	uhub1: at uhub0 port 1 (addr 2) disconnected
	ums0: detached
	uhub1: detached
	...
	(probe0:ata0:0:0:0): error 22
	(probe0:ata0:0:0:0): Unretryable Error
	(probe1:ata0:0:1:0): error 22
	(probe1:ata0:0:1:0): Unretryable Error
	(probe3:ata1:0:1:0): error 22
	(probe3:ata1:0:1:0): Unretryable Error
	uhub0: device problem, disabling port 1
	uhub0: device problem, disabling port 1
	uhub0: port error, restarting port 1
	uhub0: device problem, disabling port 1

In the second case above, I found that the system hangs during
a *subsequent* suspend/resume cycle.

Once we returned from our holiday travel,
I tried the simple patch to ata-all.c proposed by Hiroyuki Aizu,
but this code had no positive result to the ata0 reset hang problem.

The ATA controller here, as reported by the 5.2-RC2 kernel:

	atapci0: <Intel ICH3 UDMA100 controller> port 0xcfa0-0xcfaf,
	0xcfe4-0xcfe7,0xcfe8-0xcfef,0xcff4-0xcff7,0xcff8-0xcfff irq 11
	at device 31.1 on pci0

Looking forward to a solution to this "show stopper" !

Cheers,
--
Dr. Gary E. RAFE
gary.rafe at utoledo.edu


More information about the freebsd-current mailing list