[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <200808251934.03569.oneukum@suse.de>
Date: Mon, 25 Aug 2008 19:34:02 +0200
From: Oliver Neukum <oneukum@...e.de>
To: Alan Stern <stern@...land.harvard.edu>
Cc: Pavel Machek <pavel@...e.cz>, linux-pm@...ts.linux-foundation.org,
James.Bottomley@...senpartnership.com,
"Linux-pm mailing list" <linux-pm@...ts.osdl.org>,
kernel list <linux-kernel@...r.kernel.org>, teheo@...ell.com
Subject: Re: [linux-pm] Power management for SCSI
Am Montag 25 August 2008 18:18:19 schrieb Alan Stern:
> On Mon, 25 Aug 2008, Oliver Neukum wrote:
> > There's some truth to that. Unfortunately the transport does not know
> > whether a device or link may be suspended. Take the case of a CD playing
> > sound. The transport may know what the consequences of suspending
> > a link will be to the devices, but only the devices know whether the
> > consequences are acceptable.
>
> Even the device (or more properly, the driver) might not know! In your
> example the driver might realize that playing had been started, but it
> probably wouldn't know when the playing had ended.
There is that possibility.
> That's not true at all. Maybe the name is specific to USB, but the
> concept isn't. Notice how we have power/wakeup files in the sysfs
> directory for every device, even non-USB devices? Requesting a
> low-power to high-power transition is a generic operation.
True. Let's say that we have to deal with busses incapable of supporting it.
> > If you are writing for
> > a generic system the question is indeed whether devices may want
> > to talk to the host and whether they can.
> > It seems to me that the ULD will know whether its devices will need
> > to talk to the CPU.
>
> In general, the link or transport class will know whether it is
> possible for a device to initiate communication with the CPU. If it is
Yes.
> possible then the link would probably want to have remote wakeup
> enabled before autosuspending, even if none of the devices currently
> attached actually wants to use it.
That supposes it doesn't matter in terms of power use. Is that true?
> So sd.c might, in theory, want to respond in two different ways to an
> autosuspend request:
>
> (A) Drain the cache,
>
> (B) Drain the cache and spin down the drive.
(C) Do nothing
(D) Refuse (i.e. the user has opened a block device and used a vendor
specific command)
> How does it know which to do? Ask the transport class for help
> choosing?
I see no other way.
> (A) would leave us in an awkward "half-suspended" state. Is the device
> suspended or not? It is, in the sense that now the link can safely be
> suspended. But it isn't, in the sense that a system sleep would still
> require the drive to be spun down.
>
> It's kind of like the state we have following a PMSG_FREEZE --
> quiescent but not suspended. Somehow this extra state needs to be
> incorporated into the autosuspend framework.
Why? Unless the device can be skipped for purposes of autosuspend and
system sleep, isn't it active?
Regards
Oliver
--
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