linux/Documentation/driver-api
Rafael J. Wysocki 104dc5e20f PM: Document rules on using pm_runtime_resume() in system suspend callbacks
It quite often is necessary to resume devices from runtime suspend
during system suspend for various reasons (for example, if their
wakeup settings need to be changed), but that requires middle-layer
or subsystem code to follow additional rules which currently are not
clearly documented.

Namely, if a driver calls pm_runtime_resume() for the device from
its ->suspend (or equivalent) system sleep callback, that may not
work if the middle layer above it has updated the state of the
device from its ->prepare or ->suspend callbacks already in an
incompatible way.  For this reason, all middle layers must follow
the rule that, until the ->suspend callback provided by the device's
driver is invoked, the only way in which the device's state can be
updated is by calling pm_runtime_resume() for it, if necessary.
Fortunately enough, all middle layers in the code base today follow
this rule, but it is not explicitly stated anywhere, so do that.

Note that calling pm_runtime_resume() from the ->suspend callback
of a driver will cause the ->runtime_resume callback provided by the
middle layer to be invoked, but the rule above guarantees that this
callback will nest properly with the middle layer's ->suspend
callback and it will play well with the ->prepare one invoked before.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
2017-09-23 15:00:57 +02:00
..
80211 cfg80211: add intro to documentation 2017-03-31 09:15:46 +02:00
firmware Revert "firmware: add sanity check on shutdown/suspend" 2017-09-10 21:19:06 -07:00
iio docs: IIO documentation sphinx conversion 2017-01-04 13:24:41 -07:00
pm PM: Document rules on using pm_runtime_resume() in system suspend callbacks 2017-09-23 15:00:57 +02:00
usb usb: changes for v4.13 merge window 2017-06-20 11:39:34 +08:00
basics.rst docs: Do not include kerneldoc comments from kernel/sys.c 2017-07-17 14:05:36 -06:00
conf.py doc-rst: make driver-api folder buildable stand-alone 2016-10-26 17:25:00 -06:00
device_link.rst docs / driver-api: Fix structure references in device_link.rst 2017-02-20 16:40:46 -07:00
device-io.rst docs: Convert the deviceio template to RST 2017-01-31 17:31:21 -07:00
dma-buf.rst docs: Do not include from .../seqno-fence.c 2017-07-17 14:07:49 -06:00
edac.rst edac.rst: move concepts dictionary from edac.h 2016-12-15 08:58:12 -02:00
frame-buffer.rst
gpio.rst docs: driver-api: Add GPIO section 2017-08-14 15:01:13 +02:00
hsi.rst docs: split up serial-interfaces.rst 2016-09-06 09:14:52 -06:00
i2c.rst Merge branch 'i2c/for-4.13' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2017-07-12 10:04:56 -07:00
index.rst docs: driver-api: Add GPIO section 2017-08-14 15:01:13 +02:00
infrastructure.rst PM / docs: Drop confusing kernel-doc references from infrastructure.rst 2017-01-03 00:07:09 +01:00
input.rst
libata.rst libata.rst: add c function and struct cross-references 2017-05-16 08:44:11 -03:00
message-based.rst docs: Don't format internal MPT docs 2016-09-06 09:15:48 -06:00
misc_devices.rst docs-rst: core_api: move driver-specific stuff to drivers_api 2017-04-02 14:17:43 -06:00
miscellaneous.rst docs: driver-api: Remove trailing blank line 2017-08-07 14:27:45 -06:00
mtdnand.rst mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
pci.rst docs-rst: core_api: move driver-specific stuff to drivers_api 2017-04-02 14:17:43 -06:00
pinctl.rst pinctrl.txt: move it to the driver-api book 2017-06-20 13:11:14 +02:00
rapidio.rst docs-rst: convert rapidio book to ReST 2017-05-16 08:44:16 -03:00
regulator.rst docs: Convert the regulator docbook to RST 2017-01-31 17:31:41 -07:00
s390-drivers.rst docs: Get the struct cmbdata kernel doc from the right file 2017-07-17 14:19:25 -06:00
scsi.rst docs: Do not include from drivers/scsi/constants.c 2017-07-17 14:27:19 -06:00
sound.rst
spi.rst docs: split up serial-interfaces.rst 2016-09-06 09:14:52 -06:00
uio-howto.rst doc: convert UIO howto from docbook to sphinx 2017-01-31 11:12:41 +01:00
vme.rst docs: Update VME documentation to include kerneldoc comments 2017-03-17 15:10:49 +09:00
w1.rst There has been a fair amount of activity in the docs tree this time 2017-07-03 21:13:25 -07:00