All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Sakari Ailus <sakari.ailus@linux.intel.com>
Cc: linux-pm@vger.kernel.org, "Rafael J. Wysocki" <rafael@kernel.org>,
	Len Brown <len.brown@intel.com>, Pavel Machek <pavel@kernel.org>
Subject: Re: [PATCH 4/7] pm: runtime: Mark last busy stamp in pm_runtime_put_sync_autosuspend()
Date: Thu, 10 Apr 2025 23:23:18 +0300	[thread overview]
Message-ID: <20250410202318.GC29836@pendragon.ideasonboard.com> (raw)
In-Reply-To: <20250410153106.4146265-5-sakari.ailus@linux.intel.com>

Hi Sakari,

Thank you for the patch.

On Thu, Apr 10, 2025 at 06:31:03PM +0300, Sakari Ailus wrote:
> Set device's last busy timestamp to current time in
> pm_runtime_put_sync_autosuspend().
> 
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

I was a bit puzzled by why this function exists. Reading
Documentation/power/runtime_pm.rst answered that question: if I
understand it correctly, the function is meant to be used by code that
doesn't know whether or not autosuspend has been enabled for a device,
such as core code in subsystems.

I looked at usage patterns, and found the function being used in drivers
as well, for instance in drivers/media/i2c/tc358746.c. Given that the
driver unconditionally enabled autosuspend, is this incorrect usage of
the API ?

> ---
>  Documentation/power/runtime_pm.rst |  3 ++-
>  include/linux/pm_runtime.h         | 11 +++++++----
>  2 files changed, 9 insertions(+), 5 deletions(-)
> 
> diff --git a/Documentation/power/runtime_pm.rst b/Documentation/power/runtime_pm.rst
> index e7bbdc66d64c..9c21c913f9cf 100644
> --- a/Documentation/power/runtime_pm.rst
> +++ b/Documentation/power/runtime_pm.rst
> @@ -428,7 +428,8 @@ drivers/base/power/runtime.c and include/linux/pm_runtime.h:
>        pm_runtime_suspend(dev) and return its result
>  
>    `int pm_runtime_put_sync_autosuspend(struct device *dev);`
> -    - decrement the device's usage counter; if the result is 0 then run
> +    - set the power.last_busy field to the current time and decrement the
> +      device's usage counter; if the result is 0 then run
>        pm_runtime_autosuspend(dev) and return its result
>  
>    `void pm_runtime_enable(struct device *dev);`
> diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h
> index 0ade3f75d903..e26caf2c0552 100644
> --- a/include/linux/pm_runtime.h
> +++ b/include/linux/pm_runtime.h
> @@ -645,12 +645,14 @@ static inline int pm_runtime_put_sync_suspend(struct device *dev)
>  }
>  
>  /**
> - * pm_runtime_put_sync_autosuspend - Drop device usage counter and autosuspend if 0.
> + * pm_runtime_put_sync_autosuspend - Update the last access time of a device,
> + * drop device usage counter and autosuspend if 0.
>   * @dev: Target device.
>   *
> - * Decrement the runtime PM usage counter of @dev and if it turns out to be
> - * equal to 0, set up autosuspend of @dev or suspend it synchronously (depending
> - * on whether or not autosuspend has been enabled for it).
> + * Update the last access time of @dev, decrement the runtime PM usage counter
> + * of @dev and if it turns out to be equal to 0, set up autosuspend of @dev or
> + * suspend it synchronously (depending on whether or not autosuspend has been
> + * enabled for it).
>   *
>   * The runtime PM usage counter of @dev remains decremented in all cases, even
>   * if it returns an error code.
> @@ -670,6 +672,7 @@ static inline int pm_runtime_put_sync_suspend(struct device *dev)
>   */
>  static inline int pm_runtime_put_sync_autosuspend(struct device *dev)
>  {
> +	pm_runtime_mark_last_busy(dev);
>  	return __pm_runtime_suspend(dev, RPM_GET_PUT | RPM_AUTO);
>  }
>  

-- 
Regards,

Laurent Pinchart

  reply	other threads:[~2025-04-10 20:23 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-10 15:30 [PATCH 0/7] Update last busy timestamp in Runtime PM autosuspend callbacks Sakari Ailus
2025-04-10 15:31 ` [PATCH 1/7] Documentation: pm: runtime: Fix a reference to pm_runtime_autosuspend() Sakari Ailus
2025-04-10 20:13   ` Laurent Pinchart
2025-04-15 17:27     ` Rafael J. Wysocki
2025-04-10 15:31 ` [PATCH 2/7] pm: runtime: Document return values of suspend related API functions Sakari Ailus
2025-04-10 15:31 ` [PATCH 3/7] pm: runtime: Mark last busy stamp in pm_runtime_put_autosuspend() Sakari Ailus
2025-04-10 20:17   ` Laurent Pinchart
2025-04-11  6:27     ` Sakari Ailus
2025-04-11  6:33       ` Sakari Ailus
2025-04-10 15:31 ` [PATCH 4/7] pm: runtime: Mark last busy stamp in pm_runtime_put_sync_autosuspend() Sakari Ailus
2025-04-10 20:23   ` Laurent Pinchart [this message]
2025-06-16  5:51     ` Sakari Ailus
2025-04-10 15:31 ` [PATCH 5/7] pm: runtime: Mark last busy stamp in pm_runtime_autosuspend() Sakari Ailus
2025-04-10 20:27   ` Laurent Pinchart
2025-04-10 15:31 ` [PATCH 6/7] pm: runtime: Mark last busy stamp in pm_request_autosuspend() Sakari Ailus
2025-04-10 20:28   ` Laurent Pinchart
2025-04-10 15:31 ` [PATCH 7/7] Documentation: PM: *_autosuspend() functions update last busy time Sakari Ailus
2025-04-10 20:29   ` Laurent Pinchart
2025-04-29 11:10 ` [PATCH 0/7] Update last busy timestamp in Runtime PM autosuspend callbacks Rafael J. Wysocki
2025-06-16  5:42   ` Sakari Ailus

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=20250410202318.GC29836@pendragon.ideasonboard.com \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=len.brown@intel.com \
    --cc=linux-pm@vger.kernel.org \
    --cc=pavel@kernel.org \
    --cc=rafael@kernel.org \
    --cc=sakari.ailus@linux.intel.com \
    /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.