linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rafael@kernel.org>
To: Linux PM <linux-pm@vger.kernel.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
	Ulf Hansson <ulf.hansson@linaro.org>,
	Brian Norris <briannorris@chromium.org>
Subject: [PATCH v1 23/23] PM: runtime: Change pm_runtime_put() return type to void
Date: Mon, 22 Dec 2025 21:36:25 +0100	[thread overview]
Message-ID: <14387202.RDIVbhacDa@rafael.j.wysocki> (raw)
In-Reply-To: <6245770.lOV4Wx5bFT@rafael.j.wysocki>

From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

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>
---
 include/linux/pm_runtime.h |   16 ++--------------
 1 file changed, 2 insertions(+), 14 deletions(-)

--- a/include/linux/pm_runtime.h
+++ b/include/linux/pm_runtime.h
@@ -545,22 +545,10 @@ static inline int pm_runtime_resume_and_
  *
  * Decrement the runtime PM usage counter of @dev and if it turns out to be
  * equal to 0, queue up a work item for @dev like in pm_request_idle().
- *
- * Return:
- * * 1: Success. Usage counter dropped to zero, but device was already suspended.
- * * 0: Success.
- * * -EINVAL: Runtime PM error.
- * * -EACCES: Runtime PM disabled.
- * * -EAGAIN: Runtime PM usage counter became non-zero or Runtime PM status
- *            change ongoing.
- * * -EBUSY: Runtime PM child_count non-zero.
- * * -EPERM: Device PM QoS resume latency 0.
- * * -EINPROGRESS: Suspend already in progress.
- * * -ENOSYS: CONFIG_PM not enabled.
  */
-static inline int pm_runtime_put(struct device *dev)
+static inline void pm_runtime_put(struct device *dev)
 {
-	return __pm_runtime_idle(dev, RPM_GET_PUT | RPM_ASYNC);
+	__pm_runtime_idle(dev, RPM_GET_PUT | RPM_ASYNC);
 }
 
 /**




  parent reply	other threads:[~2025-12-22 20:37 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-22 19:48 [PATCH v1 00/23] PM: runtime: Convert pm_runtime_put() to a void function Rafael J. Wysocki
2025-12-22 19:50 ` [PATCH v1 01/23] genirq/chip: Change irq_chip_pm_put() return type to void Rafael J. Wysocki
2025-12-22 19:52 ` [PATCH v1 02/23] USB: core: Discard pm_runtime_put() return value Rafael J. Wysocki
2025-12-22 20:57   ` Alan Stern
2025-12-23  7:56   ` Greg Kroah-Hartman
2025-12-22 19:57 ` [PATCH v1 03/23] drm: " Rafael J. Wysocki
2025-12-23 10:23   ` Dave Stevenson
2025-12-23 15:57   ` Liviu Dudau
2025-12-22 19:59 ` [PATCH v1 04/23] drm/imagination: " Rafael J. Wysocki
2025-12-22 20:01 ` [PATCH v1 05/23] media: rkisp1: " Rafael J. Wysocki
2025-12-23 16:30   ` Laurent Pinchart
2025-12-22 20:03 ` [PATCH v1 06/23] media: ccs: " Rafael J. Wysocki
2025-12-22 20:06 ` [PATCH v1 07/23] media: mediatek: vcodec: " Rafael J. Wysocki
2025-12-22 20:07 ` [PATCH v1 08/23] watchdog: rz: Discard pm_runtime_put() return values Rafael J. Wysocki
2025-12-28 19:14   ` Guenter Roeck
2025-12-22 20:09 ` [PATCH v1 09/23] watchdog: rzv2h_wdt: Discard pm_runtime_put() return value Rafael J. Wysocki
2025-12-28 19:15   ` Guenter Roeck
2025-12-22 20:11 ` [PATCH v1 10/23] net: ethernet: ti: am65-cpsw: " Rafael J. Wysocki
2025-12-22 20:14 ` [PATCH v1 11/23] net: cadence: macb: " Rafael J. Wysocki
2025-12-23  8:48   ` Nicolas Ferre
2025-12-22 20:16 ` [PATCH v1 12/23] net: wan: framer: Discard pm_runtime_put() return values Rafael J. Wysocki
2025-12-22 20:18 ` [PATCH v1 13/23] phy: freescale: Discard pm_runtime_put() return value Rafael J. Wysocki
2025-12-22 20:21 ` [PATCH v1 14/23] phy: rockchip-samsung-dcphy: " Rafael J. Wysocki
2025-12-22 20:22 ` [PATCH v1 15/23] phy: core: Discard pm_runtime_put() return values Rafael J. Wysocki
2025-12-30 10:34   ` Geert Uytterhoeven
2025-12-30 10:54     ` Geert Uytterhoeven
2025-12-30 15:05       ` Geert Uytterhoeven
2025-12-30 16:18         ` Rafael J. Wysocki
2025-12-30 16:17       ` Rafael J. Wysocki
2025-12-22 20:24 ` [PATCH v1 16/23] hwspinlock: omap: Discard pm_runtime_put() return value Rafael J. Wysocki
2025-12-22 20:46   ` Bjorn Andersson
2025-12-22 20:25 ` [PATCH v1 17/23] coresight: Discard pm_runtime_put() return values Rafael J. Wysocki
2025-12-23  9:53   ` Suzuki K Poulose
2025-12-22 20:27 ` [PATCH v1 18/23] platform/chrome: cros_hps_i2c: Discard pm_runtime_put() return value Rafael J. Wysocki
2025-12-23  3:56   ` Tzung-Bi Shih
2025-12-22 20:29 ` [PATCH v1 19/23] pmdomain: imx: gpcv2: " Rafael J. Wysocki
2025-12-23 13:02   ` Peng Fan
2025-12-28 15:51   ` Ulf Hansson
2025-12-22 20:31 ` [PATCH v1 20/23] scsi: ufs: core: Discard pm_runtime_put() return values Rafael J. Wysocki
2025-12-23 15:29   ` Bart Van Assche
2025-12-22 20:33 ` [PATCH v1 21/23] dmaengine: sh: Discard pm_runtime_put() return value Rafael J. Wysocki
2025-12-22 20:35 ` [PATCH v1 22/23] ASoC: rockchip: " Rafael J. Wysocki
2025-12-22 20:36 ` Rafael J. Wysocki [this message]
2025-12-28 15:51   ` [PATCH v1 23/23] PM: runtime: Change pm_runtime_put() return type to void Ulf Hansson
2025-12-23 11:28 ` (subset) [PATCH v1 00/23] PM: runtime: Convert pm_runtime_put() to a void function Vinod Koul
2025-12-23 17:07 ` Mark Brown
2025-12-23 17:44 ` Vinod Koul

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=14387202.RDIVbhacDa@rafael.j.wysocki \
    --to=rafael@kernel.org \
    --cc=briannorris@chromium.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=ulf.hansson@linaro.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).