Documentation: power/cpuidle: Document the CPU system wakeup latency QoS

Let's document how the new CPU system wakeup latency QoS limit can be used
from user space, along with how the constraint is taken into account for
s2idle and cpuidle.

Reviewed-by: Dhruva Gole <d-gole@ti.com>
Reviewed-by: Kevin Hilman (TI) <khilman@baylibre.com>
Tested-by: Kevin Hilman (TI) <khilman@baylibre.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Link: https://patch.msgid.link/20251125112650.329269-7-ulf.hansson@linaro.org
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
Ulf Hansson 2025-11-25 12:26:47 +01:00 committed by Rafael J. Wysocki
parent 2b8d594742
commit c19dfb267c
2 changed files with 14 additions and 4 deletions

View File

@ -580,6 +580,15 @@ the given CPU as the upper limit for the exit latency of the idle states that
they are allowed to select for that CPU. They should never select any idle they are allowed to select for that CPU. They should never select any idle
states with exit latency beyond that limit. states with exit latency beyond that limit.
While the above CPU QoS constraints apply to CPU idle time management, user
space may also request a CPU system wakeup latency QoS limit, via the
`cpu_wakeup_latency` file. This QoS constraint is respected when selecting a
suitable idle state for the CPUs, while entering the system-wide suspend-to-idle
sleep state, but also to the regular CPU idle time management.
Note that, the management of the `cpu_wakeup_latency` file works according to
the 'cpu_dma_latency' file from user space point of view. Moreover, the unit
is also microseconds.
Idle States Control Via Kernel Command Line Idle States Control Via Kernel Command Line
=========================================== ===========================================

View File

@ -55,7 +55,8 @@ int cpu_latency_qos_request_active(handle):
From user space: From user space:
The infrastructure exposes one device node, /dev/cpu_dma_latency, for the CPU The infrastructure exposes two separate device nodes, /dev/cpu_dma_latency for
the CPU latency QoS and /dev/cpu_wakeup_latency for the CPU system wakeup
latency QoS. latency QoS.
Only processes can register a PM QoS request. To provide for automatic Only processes can register a PM QoS request. To provide for automatic
@ -63,15 +64,15 @@ cleanup of a process, the interface requires the process to register its
parameter requests as follows. parameter requests as follows.
To register the default PM QoS target for the CPU latency QoS, the process must To register the default PM QoS target for the CPU latency QoS, the process must
open /dev/cpu_dma_latency. open /dev/cpu_dma_latency. To register a CPU system wakeup QoS limit, the
process must open /dev/cpu_wakeup_latency.
As long as the device node is held open that process has a registered As long as the device node is held open that process has a registered
request on the parameter. request on the parameter.
To change the requested target value, the process needs to write an s32 value to To change the requested target value, the process needs to write an s32 value to
the open device node. Alternatively, it can write a hex string for the value the open device node. Alternatively, it can write a hex string for the value
using the 10 char long format e.g. "0x12345678". This translates to a using the 10 char long format e.g. "0x12345678".
cpu_latency_qos_update_request() call.
To remove the user mode request for a target value simply close the device To remove the user mode request for a target value simply close the device
node. node.