Re: [PATCH v3 2/4] PM / QoS: add lockless read for flags
From: Kendall Willis
Date: Tue Jun 30 2026 - 17:14:31 EST
On 12:59-20260611, Kevin Hilman (TI) wrote:
> Add a lockless read for QoS flags similar to the lockless read for
> resume latency (dev_pm_qos_raw_resume_latency) which may be called
> from atomic context (e.g. genpd governors running under a raw spinlock
> or in the syscore suspend path), where taking that sleeping lock would
> be invalid on PREEMPT_RT.
>
> Signed-off-by: Kevin Hilman (TI) <khilman@xxxxxxxxxxxx>
Reviewed-by: Kendall Willis <k-willis@xxxxxx>
> ---
> include/linux/pm_qos.h | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/include/linux/pm_qos.h b/include/linux/pm_qos.h
> index aededda52b6b..439a9e779d81 100644
> --- a/include/linux/pm_qos.h
> +++ b/include/linux/pm_qos.h
> @@ -219,6 +219,12 @@ static inline s32 dev_pm_qos_raw_resume_latency(struct device *dev)
> PM_QOS_RESUME_LATENCY_NO_CONSTRAINT :
> pm_qos_read_value(&dev->power.qos->resume_latency);
> }
> +
> +static inline s32 dev_pm_qos_raw_flags(struct device *dev)
> +{
> + return IS_ERR_OR_NULL(dev->power.qos) ?
> + 0 : READ_ONCE(dev->power.qos->flags.effective_flags);
> +}
> #else
> static inline enum pm_qos_flags_status __dev_pm_qos_flags(struct device *dev,
> s32 mask)
> @@ -300,6 +306,7 @@ static inline s32 dev_pm_qos_raw_resume_latency(struct device *dev)
> {
> return PM_QOS_RESUME_LATENCY_NO_CONSTRAINT;
> }
> +static inline s32 dev_pm_qos_raw_flags(struct device *dev) { return 0; }
> #endif
>
> static inline int freq_qos_request_active(struct freq_qos_request *req)
>
> --
> 2.47.3
>
>