Hi, Soren. I've found the problem with detached ATA channel suspending. After detaching second channel, the system drops into infinity loop at ata_suspend(). I'll commit the following patches with acpi_dock patches, so please refine these if they have any problem. Thanks Index: ata-all.c =================================================================== RCS file: /home/ncvs/src/sys/dev/ata/ata-all.c,v retrieving revision 1.271 diff -u -r1.271 ata-all.c --- ata-all.c 31 Mar 2006 08:09:04 -0000 1.271 +++ ata-all.c 14 Apr 2006 14:03:24 -0000 _at__at_ -277,6 +277,10 _at__at_ if (!dev || !(ch = device_get_softc(dev))) return ENXIO; + /* if the channel is already detached, skip waiting for IDLE */ + if ((ch->state & ATA_STALL_QUEUE) == ATA_STALL_QUEUE) + goto out; + /* wait for the channel to be IDLE before entering suspend mode */ while (1) { mtx_lock(&ch->state_mtx); _at__at_ -288,6 +292,7 _at__at_ mtx_unlock(&ch->state_mtx); tsleep(ch, PRIBIO, "atasusp", hz/10); } +out: ATA_LOCKING(dev, ATA_LF_UNLOCK); return 0; }Received on Fri Apr 14 2006 - 12:30:15 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:54 UTC