From: "Rafael J. Wysocki" <rjw@rjwysocki.net>
To: Linux PM <linux-pm@vger.kernel.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
Alan Stern <stern@rowland.harvard.edu>,
Ulf Hansson <ulf.hansson@linaro.org>,
Johan Hovold <johan@kernel.org>,
Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>,
Jon Hunter <jonathanh@nvidia.com>
Subject: [PATCH v1 2/3] PM: runtime: Convert pm_runtime_blocked() to static inline
Date: Thu, 27 Feb 2025 11:47:33 +0100 [thread overview]
Message-ID: <1923449.tdWV9SEqCh@rjwysocki.net> (raw)
In-Reply-To: <5000287.31r3eYUQgx@rjwysocki.net>
From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
The comment in pm_runtime_blocked() is acutally wrong: power.last_status
is not a bit field. Its data type is an enum and so one can reasonably
assume that partial updates of it will not be observed.
Accordingly, pm_runtime_blocked() can be converted to a static inline
function and the related locking overhead can be eliminated, so long
as it is only used in system suspend/resume code paths because
power.last_status is not expected to be updated concurrently while
that code is running.
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---
drivers/base/power/runtime.c | 17 -----------------
include/linux/pm_runtime.h | 12 +++++++++++-
2 files changed, 11 insertions(+), 18 deletions(-)
--- a/drivers/base/power/runtime.c
+++ b/drivers/base/power/runtime.c
@@ -1560,23 +1560,6 @@
}
EXPORT_SYMBOL_GPL(pm_runtime_enable);
-bool pm_runtime_blocked(struct device *dev)
-{
- bool ret;
-
- /*
- * dev->power.last_status is a bit field, so in case it is updated via
- * RMW, read it under the spin lock.
- */
- spin_lock_irq(&dev->power.lock);
-
- ret = dev->power.last_status == RPM_BLOCKED;
-
- spin_unlock_irq(&dev->power.lock);
-
- return ret;
-}
-
static void pm_runtime_disable_action(void *data)
{
pm_runtime_dont_use_autosuspend(data);
--- a/include/linux/pm_runtime.h
+++ b/include/linux/pm_runtime.h
@@ -81,7 +81,6 @@
extern void pm_runtime_unblock(struct device *dev);
extern void pm_runtime_enable(struct device *dev);
extern void __pm_runtime_disable(struct device *dev, bool check_resume);
-extern bool pm_runtime_blocked(struct device *dev);
extern void pm_runtime_allow(struct device *dev);
extern void pm_runtime_forbid(struct device *dev);
extern void pm_runtime_no_callbacks(struct device *dev);
@@ -200,6 +199,17 @@
}
/**
+ * pm_runtime_blocked - Check if runtime PM enabling is blocked.
+ * @dev: Target device.
+ *
+ * Do not call this function outside system suspend/resume code paths.
+ */
+static inline bool pm_runtime_blocked(struct device *dev)
+{
+ return dev->power.last_status == RPM_BLOCKED;
+}
+
+/**
* pm_runtime_has_no_callbacks - Check if runtime PM callbacks may be present.
* @dev: Target device.
*
next prev parent reply other threads:[~2025-02-27 11:49 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-27 10:44 [PATCH v1 0/3] PM: Tweaks on top of "smart suspend" handling changes Rafael J. Wysocki
2025-02-27 10:45 ` [PATCH v1 1/3] PM: sleep: Update power.smart_suspend under PM spinlock Rafael J. Wysocki
2025-02-27 10:47 ` Rafael J. Wysocki [this message]
2025-02-27 10:49 ` [PATCH v1 3/3] PM: core: Tweak pm_runtime_block_if_disabled() return value Rafael J. Wysocki
2025-03-03 11:55 ` [PATCH v1 0/3] PM: Tweaks on top of "smart suspend" handling changes Ulf Hansson
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=1923449.tdWV9SEqCh@rjwysocki.net \
--to=rjw@rjwysocki.net \
--cc=johan@kernel.org \
--cc=jonathanh@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=manivannan.sadhasivam@linaro.org \
--cc=stern@rowland.harvard.edu \
--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 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.