Re: [PATCH v4 1/3] pmdomain: core: introduce dev_pm_genpd_is_on
From: Ulf Hansson <hidden>
Date: 2025-06-16 13:14:03
Also in:
imx, linux-pm, linux-remoteproc, lkml
On Thu, 12 Jun 2025 at 19:31, Hiago De Franco [off-list ref] wrote:
On Wed, Jun 11, 2025 at 10:32:28AM -0500, Bjorn Andersson wrote:quoted
On Mon, Jun 02, 2025 at 10:19:03AM -0300, Hiago De Franco wrote:quoted
From: Hiago De Franco <redacted> This helper function returns the current power status of a given generic power domain.Please correct me if I'm wrong, but this returns the momentary status of the device's associated genpd, and as genpds can be shared among devices wouldn't there be a risk that you think the genpd is on but then that other device powers it off?I am not fully familiar with the genpd's, so my knowledge might be limited, but I think this is correct, if the genpd is shared.quoted
quoted
As example, remoteproc/imx_rproc.c can now use this function to check the power status of the remote core to properly set "attached" or "offline" modes.I presume this example works because there is a dedicated, single usage, genpd for the remoteproc instance?Peng might correct if I am wrong, but yes, I believe this is correct.quoted
quoted
Suggested-by: Ulf Hansson <redacted> Signed-off-by: Hiago De Franco <redacted> --- v4: New patch. --- drivers/pmdomain/core.c | 27 +++++++++++++++++++++++++++ include/linux/pm_domain.h | 6 ++++++ 2 files changed, 33 insertions(+)diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index ff5c7f2b69ce..bcb74d10960c 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c@@ -758,6 +758,33 @@ int dev_pm_genpd_rpm_always_on(struct device *dev, bool on) } EXPORT_SYMBOL_GPL(dev_pm_genpd_rpm_always_on); +/** + * dev_pm_genpd_is_on - Get device's power statusFunctions in kernel-doc should have () prefixThanks, I will correct this is next patch version.quoted
quoted
+ * + * @dev: Device to get the current power status + * + * This function checks whether the generic power domain is on or not by + * verifying if genpd_status_on equals GENPD_STATE_ON. + *If my understanding is correct, I'd like a warning here saying that this is dangerous if the underlying genpd is shared.I believe this is correct, maybe Peng or Ulf can also comment here, but if that is the case then I can update the comment.
Good point! I would not say that it's "dangerous", while I agree that we need to extend the comment to make it really clear that it returns the current power status of the genpd, which potentially may change beyond returning from the function and especially if the genpd has multiple consumers. [...] Kind regards Uffe