Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Jan 2005 10:51:44 +0300
From:      Gleb Smirnoff <glebius@freebsd.org>
To:        Dave Walton <dwalton@acm.org>
Cc:        Andrew Belashov <bel@orel.ru>
Subject:   Re: Trouble with APM suspend in 5.3-R
Message-ID:  <20050128075144.GA88243@cell.sick.ru>
In-Reply-To: <41F94FAA.2070307@acm.org>
References:  <41EF6101.7010008@acm.org> <20050120092812.GB16150@cell.sick.ru> <41F02F9A.40201@acm.org> <41F0A398.7080800@orel.ru> <41F4C6BD.4060406@acm.org> <41F4D7EE.9030108@orel.ru> <41F8C5EA.3040007@acm.org> <20050127140010.GA82418@cell.sick.ru> <41F94FAA.2070307@acm.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--GvXjxJ+pjyke8COw
Content-Type: text/plain; charset=koi8-r
Content-Disposition: inline

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

--GvXjxJ+pjyke8COw
Content-Type: text/plain; charset=koi8-r
Content-Disposition: attachment; filename="ata-all.patch"

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));

--GvXjxJ+pjyke8COw--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050128075144.GA88243>