On Mon, Aug 05, 2024 at 03:58:09PM +0100, Christian Loehle wrote:
commit 449914398083148f93d070a8aace04f9ec296ce3 upstream.
The logic for recent intercepts didn't work, there is an underflow of the 'recent' value that can be observed during boot already, which teo usually doesn't recover from, making the entire logic pointless. Furthermore the recent intercepts also were never reset, thus not actually being very 'recent'.
Having underflowed 'recent' values lead to teo always acting as if we were in a scenario were expected sleep length based on timers is too high and it therefore unnecessarily selecting shallower states.
Experiments show that the remaining 'intercept' logic is enough to quickly react to scenarios in which teo cannot rely on the timer expected sleep length.
See also here: https://lore.kernel.org/lkml/0ce2d536-1125-4df8-9a5b-0d5e389cd8af@arm.com/
Fixes: 77577558f25d ("cpuidle: teo: Rework most recent idle duration values treatment") Link: https://patch.msgid.link/20240628095955.34096-3-christian.loehle@arm.com Signed-off-by: Christian Loehle christian.loehle@arm.com Signed-off-by: Rafael J. Wysocki rafael.j.wysocki@intel.com
drivers/cpuidle/governors/teo.c | 79 ++++++--------------------------- 1 file changed, 14 insertions(+), 65 deletions(-)
We can't just take a 6.1.y backport without newer kernels also having this fix. Can you resend this as backports for all relevant kernels please?
thanks,
greg k-h