Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

PM: runtime: Change pm_runtime_put() return type to void

The primary role of pm_runtime_put() is to decrement the runtime PM
usage counter of the given device. It always does that regardless of
the value returned by it later.

In addition, if the runtime PM usage counter after decrementation turns
out to be zero, a work item is queued up to check whether or not the
device can be suspended. This is not guaranteed to succeed though and
even if it is successful, the device may still not be suspended going
forward.

There are multiple valid reasons why pm_runtime_put() may not decide to
queue up the work item mentioned above, including, but not limited to,
the case when user space has written "on" to the device's runtime PM
"control" file in sysfs. In all of those cases, pm_runtime_put()
returns a negative error code (even though the device's runtime PM
usage counter has been successfully decremented by it) which is very
confusing. In fact, its return value should only be used for debug
purposes and care should be taken when doing it even in that case.

Accordingly, to avoid the confusion mentioned above, change the return
type of pm_runtime_put() to void.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
Reviewed-by: Brian Norris <briannorris@chromium.org>
Link: https://patch.msgid.link/14387202.RDIVbhacDa@rafael.j.wysocki

+2 -14
+2 -14
include/linux/pm_runtime.h
··· 545 545 * 546 546 * Decrement the runtime PM usage counter of @dev and if it turns out to be 547 547 * equal to 0, queue up a work item for @dev like in pm_request_idle(). 548 - * 549 - * Return: 550 - * * 1: Success. Usage counter dropped to zero, but device was already suspended. 551 - * * 0: Success. 552 - * * -EINVAL: Runtime PM error. 553 - * * -EACCES: Runtime PM disabled. 554 - * * -EAGAIN: Runtime PM usage counter became non-zero or Runtime PM status 555 - * change ongoing. 556 - * * -EBUSY: Runtime PM child_count non-zero. 557 - * * -EPERM: Device PM QoS resume latency 0. 558 - * * -EINPROGRESS: Suspend already in progress. 559 - * * -ENOSYS: CONFIG_PM not enabled. 560 548 */ 561 - static inline int pm_runtime_put(struct device *dev) 549 + static inline void pm_runtime_put(struct device *dev) 562 550 { 563 - return __pm_runtime_idle(dev, RPM_GET_PUT | RPM_ASYNC); 551 + __pm_runtime_idle(dev, RPM_GET_PUT | RPM_ASYNC); 564 552 } 565 553 566 554 /**