Messages in this thread Patch in this message | | | From | Keyon Jie <> | Subject | [PATCH] x86/aperfmperf: Fix the fallback condition in arch_freq_get_on_cpu() | Date | Mon, 26 Jun 2023 12:36:01 -0700 |
| |
From the commit f3eca381bd49 on, the fallback condition about the 'the last update was too long' have been comparing ticks and milliseconds by mistake, which leads to that the condition is met and the fallback method is used frequently.
The change to compare ticks here corrects that and fixes related issues have been seen on x86 platforms since 5.18 kernel.
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217597 Fixes: f3eca381bd49 ("x86/aperfmperf: Replace arch_freq_get_on_cpu()") CC: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Keyon Jie <yang.jie@linux.intel.com> --- arch/x86/kernel/cpu/aperfmperf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/x86/kernel/cpu/aperfmperf.c b/arch/x86/kernel/cpu/aperfmperf.c index fdbb5f07448f..24e24e137226 100644 --- a/arch/x86/kernel/cpu/aperfmperf.c +++ b/arch/x86/kernel/cpu/aperfmperf.c @@ -432,7 +432,7 @@ unsigned int arch_freq_get_on_cpu(int cpu) * Bail on invalid count and when the last update was too long ago, * which covers idle and NOHZ full CPUs. */ - if (!mcnt || (jiffies - last) > MAX_SAMPLE_AGE) + if (!mcnt || (jiffies - last) > MAX_SAMPLE_AGE * cpu_khz) goto fallback; return div64_u64((cpu_khz * acnt), mcnt); -- 2.34.1
| |