[PATCH v4 0/6] PM: QoS: Introduce a CPU system wakeup QoS limit for s2idle

Ulf Hansson posted 6 patches 6 days, 12 hours ago
Documentation/admin-guide/pm/cpuidle.rst |   9 ++
Documentation/power/pm_qos_interface.rst |   9 +-
drivers/cpuidle/cpuidle.c                |  12 +--
drivers/cpuidle/governor.c               |   4 +
drivers/pmdomain/core.c                  |  10 ++-
drivers/pmdomain/governor.c              |  33 ++++++-
include/linux/cpuidle.h                  |   6 +-
include/linux/pm_domain.h                |   1 +
include/linux/pm_qos.h                   |   9 ++
kernel/power/Kconfig                     |  11 +++
kernel/power/qos.c                       | 106 +++++++++++++++++++++++
kernel/sched/idle.c                      |  12 +--
12 files changed, 203 insertions(+), 19 deletions(-)
[PATCH v4 0/6] PM: QoS: Introduce a CPU system wakeup QoS limit for s2idle
Posted by Ulf Hansson 6 days, 12 hours ago
Changes in v4:
	- Add Kconfig help text. (Dhruva)
	- Fixed grammar in documentation patch (Dhruva)
	- Added reviewed/tested-by tags from Dhruva/Kevin. I leave Rafael to add
	his tags when applying.

Changes in v3:
	- Take new the new QoS limit into account for cpuidle too (Rafael).
	- Add a new Kconfig for the new QoS interface (Rafael)
	- Improved the documentation (Dhruva) 
	- Clarified commit messages and added acks.

Changes in v2:
	- Limit the new QoS to CPUs  and make some corresponding renaming of the
	functions along with name of the device node for user space.
	- Make sure we deal with the failure/error path correctly when there are
	no state available for s2idle.
	- Add documentation.

Some platforms supports multiple low power states for CPUs that can be used
when entering system-wide suspend and s2idle in particular. Currently we are
always selecting the deepest possible state for the CPUs, which can break the
system wakeup latency constraint that may be required for a use case.

Therefore, this series suggests to introduce a new interface for user space,
allowing us to specify the CPU system wakeup QoS limit. The QoS limit is then
taken into account when selecting a suitable low power state for s2idle/cpuidle.

Kind regards
Ulf Hansson

Ulf Hansson (6):
  PM: QoS: Introduce a CPU system wakeup QoS limit
  pmdomain: Respect the CPU system wakeup QoS limit for s2idle
  pmdomain: Respect the CPU system wakeup QoS limit for cpuidle
  sched: idle: Respect the CPU system wakeup QoS limit for s2idle
  cpuidle: Respect the CPU system wakeup QoS limit for cpuidle
  Documentation: power/cpuidle: Document the CPU system wakeup latency
    QoS

 Documentation/admin-guide/pm/cpuidle.rst |   9 ++
 Documentation/power/pm_qos_interface.rst |   9 +-
 drivers/cpuidle/cpuidle.c                |  12 +--
 drivers/cpuidle/governor.c               |   4 +
 drivers/pmdomain/core.c                  |  10 ++-
 drivers/pmdomain/governor.c              |  33 ++++++-
 include/linux/cpuidle.h                  |   6 +-
 include/linux/pm_domain.h                |   1 +
 include/linux/pm_qos.h                   |   9 ++
 kernel/power/Kconfig                     |  11 +++
 kernel/power/qos.c                       | 106 +++++++++++++++++++++++
 kernel/sched/idle.c                      |  12 +--
 12 files changed, 203 insertions(+), 19 deletions(-)

-- 
2.43.0
Re: [PATCH v4 0/6] PM: QoS: Introduce a CPU system wakeup QoS limit for s2idle
Posted by Rafael J. Wysocki 6 days, 5 hours ago
On Tue, Nov 25, 2025 at 12:26 PM Ulf Hansson <ulf.hansson@linaro.org> wrote:
>
> Changes in v4:
>         - Add Kconfig help text. (Dhruva)
>         - Fixed grammar in documentation patch (Dhruva)
>         - Added reviewed/tested-by tags from Dhruva/Kevin. I leave Rafael to add
>         his tags when applying.
>
> Changes in v3:
>         - Take new the new QoS limit into account for cpuidle too (Rafael).
>         - Add a new Kconfig for the new QoS interface (Rafael)
>         - Improved the documentation (Dhruva)
>         - Clarified commit messages and added acks.
>
> Changes in v2:
>         - Limit the new QoS to CPUs  and make some corresponding renaming of the
>         functions along with name of the device node for user space.
>         - Make sure we deal with the failure/error path correctly when there are
>         no state available for s2idle.
>         - Add documentation.
>
> Some platforms supports multiple low power states for CPUs that can be used
> when entering system-wide suspend and s2idle in particular. Currently we are
> always selecting the deepest possible state for the CPUs, which can break the
> system wakeup latency constraint that may be required for a use case.
>
> Therefore, this series suggests to introduce a new interface for user space,
> allowing us to specify the CPU system wakeup QoS limit. The QoS limit is then
> taken into account when selecting a suitable low power state for s2idle/cpuidle.
>
> Kind regards
> Ulf Hansson
>
> Ulf Hansson (6):
>   PM: QoS: Introduce a CPU system wakeup QoS limit
>   pmdomain: Respect the CPU system wakeup QoS limit for s2idle
>   pmdomain: Respect the CPU system wakeup QoS limit for cpuidle
>   sched: idle: Respect the CPU system wakeup QoS limit for s2idle
>   cpuidle: Respect the CPU system wakeup QoS limit for cpuidle
>   Documentation: power/cpuidle: Document the CPU system wakeup latency
>     QoS
>
>  Documentation/admin-guide/pm/cpuidle.rst |   9 ++
>  Documentation/power/pm_qos_interface.rst |   9 +-
>  drivers/cpuidle/cpuidle.c                |  12 +--
>  drivers/cpuidle/governor.c               |   4 +
>  drivers/pmdomain/core.c                  |  10 ++-
>  drivers/pmdomain/governor.c              |  33 ++++++-
>  include/linux/cpuidle.h                  |   6 +-
>  include/linux/pm_domain.h                |   1 +
>  include/linux/pm_qos.h                   |   9 ++
>  kernel/power/Kconfig                     |  11 +++
>  kernel/power/qos.c                       | 106 +++++++++++++++++++++++
>  kernel/sched/idle.c                      |  12 +--
>  12 files changed, 203 insertions(+), 19 deletions(-)
>
> --

Applied as 6.19 material, thanks!