]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
cpuidle: Respect the CPU system wakeup QoS limit for cpuidle
authorUlf Hansson <ulf.hansson@linaro.org>
Tue, 25 Nov 2025 11:26:46 +0000 (12:26 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 25 Nov 2025 18:01:29 +0000 (19:01 +0100)
The CPU system wakeup QoS limit must be respected for the regular cpuidle
state selection. Therefore, let's extend the common governor helper
cpuidle_governor_latency_req(), to take the constraint into account.

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-6-ulf.hansson@linaro.org
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/cpuidle/governor.c

index 0d0f9751ff8fabf400dae1779e2c8cf79285873f..5d0e7f78c6c5152139a76c919f45771bf6623176 100644 (file)
@@ -111,6 +111,10 @@ s64 cpuidle_governor_latency_req(unsigned int cpu)
        struct device *device = get_cpu_device(cpu);
        int device_req = dev_pm_qos_raw_resume_latency(device);
        int global_req = cpu_latency_qos_limit();
+       int global_wake_req = cpu_wakeup_latency_qos_limit();
+
+       if (global_req > global_wake_req)
+               global_req = global_wake_req;
 
        if (device_req > global_req)
                device_req = global_req;