All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: Kevin Hilman <khilman@ti.com>,
	linux-pm@lists.linux-foundation.org,
	"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>
Subject: [PATCH] PM / Runtime: Update documentation regarding driver removal
Date: Sat, 2 Jul 2011 00:12:29 +0200	[thread overview]
Message-ID: <201107020012.29661.rjw@sisk.pl> (raw)
In-Reply-To: <Pine.LNX.4.44L0.1107011711370.1624-100000@iolanthe.rowland.org>

From: Rafael J. Wysocki <rjw@sisk.pl>

Commit e1866b33b1e89f077b7132daae3dfd9a594e9a1a (PM / Runtime: Rework
runtime PM handling during driver removal) forgot to update the
documentation in Documentation/power/runtime_pm.txt to match the new
code in drivers/base/dd.c.  Update that documentation to match the
code it describes.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 Documentation/power/runtime_pm.txt |   26 +++++++++++++++++++++-----
 1 file changed, 21 insertions(+), 5 deletions(-)

Index: linux-2.6/Documentation/power/runtime_pm.txt
===================================================================
--- linux-2.6.orig/Documentation/power/runtime_pm.txt
+++ linux-2.6/Documentation/power/runtime_pm.txt
@@ -513,13 +513,29 @@ helper functions described in Section 4.
 should be used.  Of course, for this purpose the device's runtime PM has to be
 enabled earlier by calling pm_runtime_enable().
 
-If the device bus type's or driver's ->probe() or ->remove() callback runs
+If the device bus type's or driver's ->probe() callback runs
 pm_runtime_suspend() or pm_runtime_idle() or their asynchronous counterparts,
 they will fail returning -EAGAIN, because the device's usage counter is
-incremented by the core before executing ->probe() and ->remove().  Still, it
-may be desirable to suspend the device as soon as ->probe() or ->remove() has
-finished, so the PM core uses pm_runtime_put_sync() to invoke the
-subsystem-level idle callback for the device at that time.
+incremented by the driver core before executing ->probe().  Still, it may be
+desirable to suspend the device as soon as ->probe() has finished, so the driver
+core uses pm_runtime_put_sync() to invoke the subsystem-level idle callback for
+the device at that time.
+
+Moreover, the driver core prevents runtime PM callbacks from racing with the bus
+notifier callback in __device_release_driver(), which is necessary, because the
+notifier is used by some subsystems to carry out operations affecting the
+runtime PM functionality.  It does so by calling pm_runtime_get_sync() before
+driver_sysfs_remove() and the BUS_NOTIFY_UNBIND_DRIVER notifications.  This
+resumes the device if it's in the suspended state and prevents it from
+being suspended again while those routines are being executed.
+
+To allow bus types and drivers to put devices into the suspended state by
+calling pm_runtime_suspend() from their ->remove() routines, the driver core
+executes pm_runtime_put_sync() after running the BUS_NOTIFY_UNBIND_DRIVER
+notifications in __device_release_driver().  This requires bus types and
+drivers to make their ->remove() callbacks avoid races with runtime PM directly,
+but also it allows of more flexibility in the handling of devices during the
+removal of their drivers.
 
 The user space can effectively disallow the driver of the device to power manage
 it at run time by changing the value of its /sys/devices/.../power/control


  parent reply	other threads:[~2011-07-01 22:11 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-30 22:19 runtime PM usage_count during driver_probe_device()? Kevin Hilman
2011-07-01  0:09 ` Kevin Hilman
2011-07-01  0:09 ` Kevin Hilman
2011-07-01  0:33   ` Rafael J. Wysocki
2011-07-01  0:33   ` [linux-pm] " Rafael J. Wysocki
2011-07-01  5:57     ` Ohad Ben-Cohen
2011-07-01 14:46       ` Kevin Hilman
2011-07-01 14:46       ` Kevin Hilman
2011-07-01  5:57     ` Ohad Ben-Cohen
2011-07-01 11:32     ` Ming Lei
2011-07-01 11:32     ` [linux-pm] " Ming Lei
2011-07-01 14:54   ` Alan Stern
2011-07-01 21:13     ` [PATCH] PM: prevent runtime_resume from racing with probe Alan Stern
2011-07-01 21:42       ` Rafael J. Wysocki
2011-07-01 14:54   ` runtime PM usage_count during driver_probe_device()? Alan Stern
2011-07-01 14:43 ` [linux-pm] " Alan Stern
2011-07-01 14:43 ` Alan Stern
2011-07-01 14:44 ` Kevin Hilman
2011-07-01 15:25   ` Alan Stern
2011-07-01 15:25   ` [linux-pm] " Alan Stern
2011-07-01 15:45     ` Kevin Hilman
2011-07-01 15:59       ` Alan Stern
2011-07-01 16:54         ` Kevin Hilman
2011-07-01 16:54         ` Kevin Hilman
2011-07-01 15:59       ` Alan Stern
2011-07-01 20:53       ` Rafael J. Wysocki
2011-07-01 20:53       ` [linux-pm] " Rafael J. Wysocki
2011-07-01 21:12         ` Alan Stern
2011-07-01 21:44           ` Rafael J. Wysocki
2011-07-01 21:44           ` [linux-pm] " Rafael J. Wysocki
2011-07-01 22:12           ` Rafael J. Wysocki [this message]
2011-07-01 22:49             ` [PATCH] PM / Runtime: Update documentation regarding driver removal Kevin Hilman
2011-07-01 22:49             ` Kevin Hilman
2011-07-01 22:12           ` Rafael J. Wysocki
2011-07-01 21:12         ` runtime PM usage_count during driver_probe_device()? Alan Stern
2011-07-01 15:45     ` Kevin Hilman
2011-07-01 14:44 ` Kevin Hilman
2011-07-01 21:42 ` Rafael J. Wysocki
2011-07-01 21:42 ` [linux-pm] " Rafael J. Wysocki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201107020012.29661.rjw@sisk.pl \
    --to=rjw@sisk.pl \
    --cc=khilman@ti.com \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=stern@rowland.harvard.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.