|
|
Log in / Subscribe / Register

PM: QoS: Introduce a CPU system wakeup QoS limit for s2idle

From:  Ulf Hansson <ulf.hansson-AT-linaro.org>
To:  "Rafael J . Wysocki" <rafael-AT-kernel.org>, linux-pm-AT-vger.kernel.org
Subject:  [PATCH v3 0/6] PM: QoS: Introduce a CPU system wakeup QoS limit for s2idle
Date:  Fri, 21 Nov 2025 11:03:06 +0100
Message-ID:  <20251121100315.316300-1-ulf.hansson@linaro.org>
Cc:  Vincent Guittot <vincent.guittot-AT-linaro.org>, Peter Zijlstra <peterz-AT-infradead.org>, Kevin Hilman <khilman-AT-baylibre.com>, Pavel Machek <pavel-AT-kernel.org>, Len Brown <len.brown-AT-intel.com>, Daniel Lezcano <daniel.lezcano-AT-linaro.org>, Maulik Shah <quic_mkshah-AT-quicinc.com>, Prasad Sodagudi <psodagud-AT-quicinc.com>, Dhruva Gole <d-gole-AT-ti.com>, Deepti Jaggi <quic_djaggi-AT-quicinc.com>, Ulf Hansson <ulf.hansson-AT-linaro.org>, linux-kernel-AT-vger.kernel.org
Archive-link:  Article

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                     |   4 +
 kernel/power/qos.c                       | 106 +++++++++++++++++++++++
 kernel/sched/idle.c                      |  12 +--
 12 files changed, 196 insertions(+), 19 deletions(-)

-- 
2.43.0




Copyright © 2025, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds