[linux-pm] Power management for SCSI

James Bottomley James.Bottomley at HansenPartnership.com
Wed Aug 13 12:42:06 PDT 2008


On Wed, 2008-08-13 at 15:37 -0400, Alan Stern wrote:
> On Wed, 13 Aug 2008, Oliver Neukum wrote:
> 
> > > In Alan's patch, SCSI calls scsi_host_template methods (if the LLD
> > > provides ones) to suspend and resume a Scsi_Host.  The LLD can use them
> > > to work with the underlying infrastructure to determine what can be done
> > > at that time.  I.e. are there other protocols or other initiator-like
> > > nodes sharing the link?  If yes or if "maybe yes", the infrastructure
> > > keeps the link up.  If not, it can move it into a low-power state.
> > 
> > That is a parculiar way of viewing it. Alan's patch introduce runtime
> > pm attributes to the devices. Quoting:
> > 
> > 
> > +/**
> > + * scsi_suspend_sdev - suspend a SCSI device
> > + * @sdev: the scsi_device to suspend
> > + * @msg: Power Management message describing this state transition
> > + *
> > + * SCSI devices can't actually be suspended in a literal sense,
> > + * because SCSI doesn't have any notion of power management.  Instead
> > + * this routine drains the request queue and calls the ULD's suspend
> > + * method to flush caches, spin-down drives, and so on.
> > + *
> > + * If the suspend succeeds, we call scsi_autosuspend_host to decrement
> > + * the host's count of unsuspended devices and invoke the LLD's suspend
> > + * method.
> > 
> > So you cannot operate on the link independent from the devices.
> 
> With the original patch, you can't operate on the link independent from 
> the devices.  But with the revised patch (whenever I manage to find 
> time to write it!), you _will_ be able to.

That sounds great .. if you link it through the transport class, that
can implement the policy you want (as in power all devices down before
the link for USB, but just power down the link for SAS/SATA).

James




More information about the linux-pm mailing list