Re: Nested suspends; messages vs. states

Alan Stern
2005-03-23T21:18:24Z

[-- Attachment #1: Type: TEXT/PLAIN, Size: 1265 bytes --]

On Thu, 24 Mar 2005, Nigel Cunningham wrote:

> Hi
>
> On Thu, 2005-03-24 at 06:06, David Brownell wrote:
> > On Tuesday 22 March 2005 4:52 pm, Patrick Mochel wrote:
> > > >
> > > I think the core should always call ->suspend() for a device, regardless
> > > of whether it thinks it's in a low power state, or inactive. This is
> > > specifically for the reason that a device could be a low-power runtime
> > > state when the system is suspended.
> >
> > I don't quite see a need for this. If the parent/bridge driver knows
> > the device is adequately suspended, why kick it again? It's actually
> > rather annoying -- and error/bug prone! -- to have to code drivers to
> > detect and cope with superfluous suspend calls.
>
> I would think it would be simpler not to have the parent/bridge check
> whether the device is already suspended, and to just have all the logic
> that decides what to do in the driver. I'm only thinking intuitively,
> but it sounds like that should help with avoiding race conditions.

David and Patrick are talking about two different things without realizing
it. Patrick said the _core_ should always call bus->suspend. Dave said
the _parent/bridge/bus_ doesn't have to call driver->suspend. Both can be
correct.

Alan Stern