Re: Trouble with APM suspend in 5.3-R
Gleb Smirnoff <[email protected]>
| Newsgroups | gmane.os.freebsd.devel.mobile |
|---|---|
| Message-ID | <[email protected]> |
On Thu, Jan 27, 2005 at 12:31:38PM -0800, Dave Walton wrote: D> It was on, now that you mention it. Why do you ask? Can you try the attached patch? -- Totus tuus, Glebius. GLEBIUS-RIPN GLEB-RIPE _______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-mobile To unsubscribe, send any mail to "[email protected]"
ata-all.patch
(text/plain, 1016 B)
Index: ata-all.c
===================================================================
RCS file: /home/cvs/ncvs/src/sys/dev/ata/ata-all.c,v
retrieving revision 1.232
diff -u -u -r1.232 ata-all.c
--- ata-all.c 13 Oct 2004 15:16:35 -0000 1.232
+++ ata-all.c 19 Oct 2004 19:30:59 -0000
@@ -86,6 +86,7 @@
static struct intr_config_hook *ata_delayed_attach = NULL;
static int ata_dma = 1;
static int atapi_dma = 1;
+static int ata_resuming = 0;
/* sysctl vars */
SYSCTL_NODE(_hw, OID_AUTO, ata, CTLFLAG_RD, 0, "ATA driver parameters");
@@ -364,8 +380,10 @@
if (!dev || !(ch = device_get_softc(dev)))
return ENXIO;
+ ata_resuming = 1;
error = ata_reinit(ch);
ata_start(ch);
+ ata_resuming = 0;
return error;
}
@@ -838,7 +944,7 @@
void
ata_udelay(int interval)
{
- if (interval < (1000000/hz) || ata_delayed_attach)
+ if (interval < (1000000/hz) || ata_delayed_attach || ata_resuming)
DELAY(interval);
else
tsleep(&interval, PRIBIO, "ataslp", interval/(1000000/hz));