[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <18060.15144.986090.570992@cargo.ozlabs.ibm.com>
Date: Thu, 5 Jul 2007 10:28:24 +1000
From: Paul Mackerras <paulus@...ba.org>
To: Alan Stern <stern@...land.harvard.edu>
Cc: Oliver Neukum <oliver@...kum.org>,
Matthew Garrett <mjg59@...f.ucam.org>,
<linux-pm@...ts.linux-foundation.org>,
<linux-kernel@...r.kernel.org>
Subject: Re: [linux-pm] Re: [PATCH] Remove process freezer from suspend to
RAM pathway
Alan Stern writes:
> That's not what I'm saying. What I'm saying is that it would be a big
> mistake to force all drivers which implement runtime PM to do it using
> a separate code path from system PM.
OK; I can accept that provided there is a way to change the "what to
do with an I/O request" policy from auto-resume to something else
while we're suspending the system (and presumably restore the old
policy on system resume if the device was runtime-suspended at the
point where the system was suspended).
> > The main attraction of the late-suspend call is that it really does,
> > reliably, guarantee that the driver's I/O request methods won't get
> > called between the late-suspend call and the early-resume call.
>
> For some drivers (like USB), carrying out an actual suspend requires a
> delay. Right now we implement those delays using wait_event(),
> wait_for_completion(), and so on. Would you have us check at runtime
> whether or not a system suspend is underway and in each case use a
> busy-loop instead if it is?
No; the late suspend call isn't appropriate for all drivers. It is a
simple and safe way to do the suspend for some drivers, mostly the
simpler ones. Things that are complex enough to have a subsystem
(e.g. USB) would want to use the early suspend call.
> What happens if, in order to carry out the late-suspend, a driver needs
> to acquire a mutex which happens to be held by some other task? That
> other task won't be able to run and release the mutex, so you will
> deadlock.
Then late-suspend is not appropriate for that driver, and it needs to
use the early-suspend call, and do something such as setting a flag
that the I/O request function tests.
Paul.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists