Sam Leffler wrote: > Nate Lawson wrote: >> I've seen a recent regression in the past few months when suspending my >> laptop. When I have an ath0 card inserted in a cardbus slot and then >> press the sleep button, the system hangs. If I eject the card, it >> continues going into suspend and everything works as normal. >> >> If the card is up (ifconfig up), this process hangs. If it's down, no >> hang and it suspends normally. I did some debugging by starting the >> suspend, waiting for the hang, hitting "break to ddb", and then ejecting >> the card. The eject causes an interrupt which causes ddb to be entered. >> With ps, I can see that the thread on the acpi_taskq is running the >> button event and then calling bus_generic_suspend(), which eventually >> calls cbb_detach(), which then calls a power routine in pccbb.c. This >> routine calls tsleep() (wchan "cbbP3") which never wakes up. >> >> Any idea why tsleep() is not waking up now? It seems tsleep() calls >> mi_switch() and never returns. >> > > A more likely scenario is that ath_stop is putting the card into "deep > sleep". At that point you cannot touch any of the PCI domain registers > for the card w/o bringing it out of sleep. If you do then the > pci/cardbus will hang. Ejecting the card removes the device from the > bus and allows things to continue. > > I walked through this scenario with Ed Maste when he mentioned it to me > and we tried to catch ath being entered after it set the card to sleep > but failed. Note that something as simple as checking for ath_intrpend > at the top of ath_intr can cause this but after shuffling code to ensure > this does not occur we still couldn't catch what was going on. > > My suggestion is you work under the above assumption and try to catch > entry to the ath driver. I still think the problem is a shared irq > interrupting after ath_stop puts the card to sleep. Thanks, I'll look into that. The relevant card is: ath_hal: 0.9.17.2 (AR5210, AR5211, AR5212, RF5111, RF5112, RF2413, RF5413) ath0: <Atheros 5212> mem 0xc0210000-0xc021ffff at device 0.0 on cardbus1 ath0: mac 7.9 phy 4.5 radio 5.6 The interrupt is shared with: vgapci0: <VGA-compatible display> mem 0xc0100000-0xc017ffff,0xe8000000-0xebffffff,0xe4000000-0xe7ffffff,0xe0000000-0xe1ffffff irq 11 at device 0.0 on pci1 cbb0: <TI1420 PCI-CardBus Bridge> mem 0x50000000-0x50000fff irq 11 at device 0.0 on pci2 cbb1: <TI1420 PCI-CardBus Bridge> mem 0x51000000-0x51000fff irq 11 at device 0.1 on pci2 fxp0: <Intel 82801CAM (ICH3) Pro/100 VE Ethernet> port 0x6000-0x603f mem 0xc0200000-0xc0200fff irq 11 at device 8.0 on pci2 ichsmb0: <Intel 82801CA (ICH3) SMBus controller> port 0x1880-0x189f irq 11 at device 31.3 on pci0 pcm0: <Intel ICH3 (82801CA)> port 0x1c00-0x1cff,0x18c0-0x18ff irq 11 at device 31.5 on pci0 -- NateReceived on Thu Jul 13 2006 - 04:07:13 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:58 UTC