Thread (16 messages) 16 messages, 3 authors, 2011-11-25

Re: [PATCH v3 3/6] [SCSI] runtime resume device before system suspend

flat view

From: Alan Stern <stern@rowland.harvard.edu>
Date: 2011-11-25 00:17:12
Also in: linux-scsi, lkml

On Thu, 24 Nov 2011, Tejun Heo wrote:
Hello,

On Thu, Nov 24, 2011 at 2:54 PM, Alan Stern [off-list ref] wrote:
quoted
Therefore, when entering the SUSPEND or HIBERNATE stages of system
sleep, we can skip the callback to the driver if the device is already
in runtime suspend. �When entering the FREEZE stage, however, we should
first issue a runtime resume. �The overhead of doing this is
negligible, because a suspended drive would be spun up during the THAW
stage of hibernation anyway.
My brain is half fried at the moment so maybe you're saying the same
thing, but I hope this is something simple. Like...

    /* for libata runtime suspend is equivalent to suspend */
    if (runtime suspended && target == SUSPEND) {
        yeah! skip drive pm ops;
    } else {
        end runtime pm;
        ask EH to enter target PM state;
    }
Almost.  More like this:

	/*
	 * sd is the only high-level SCSI driver to implement runtime 
	 * PM, and sd treats runtime suspend, system suspend, and 
	 * system hibernate identically (but not system freeze).
	 */
	if (runtime-suspended) {
		if (target == SUSPEND || target == HIBERNATE)
			return 0;	/* already suspended */
		/* wake up device so that FREEZE will succeed */
		pm_runtime_resume();
	}
	tell device driver to enter target PM state

libata does not contain the SCSI device driver; it contains the host
driver.
I really don't think we need to optimize this further than this.
The above has two lines (plus comments) of optimization.  Okay?

Alan Stern
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help