From: Greg Kroah-Hartman Date: Mon, 27 May 2024 18:18:11 +0000 (+0200) Subject: 4.19-stable patches X-Git-Tag: v6.9.3~11 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9c41bbe8c1b298bdc5f189e280abd0aeaca39b36;p=thirdparty%2Fkernel%2Fstable-queue.git 4.19-stable patches added patches: x86-tsc-trust-initial-offset-in-architectural-tsc-adjust-msrs.patch --- diff --git a/queue-4.19/series b/queue-4.19/series index 7df9dcdb72a..b1c280311d7 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -1,3 +1,4 @@ +x86-tsc-trust-initial-offset-in-architectural-tsc-adjust-msrs.patch speakup-fix-sizeof-vs-array_size-bug.patch ring-buffer-fix-a-race-between-readers-and-resize-checks.patch net-smc91x-fix-m68k-kernel-compilation-for-coldfire-cpu.patch diff --git a/queue-4.19/x86-tsc-trust-initial-offset-in-architectural-tsc-adjust-msrs.patch b/queue-4.19/x86-tsc-trust-initial-offset-in-architectural-tsc-adjust-msrs.patch new file mode 100644 index 00000000000..7930f945f73 --- /dev/null +++ b/queue-4.19/x86-tsc-trust-initial-offset-in-architectural-tsc-adjust-msrs.patch @@ -0,0 +1,46 @@ +From 455f9075f14484f358b3c1d6845b4a438de198a7 Mon Sep 17 00:00:00 2001 +From: Daniel J Blueman +Date: Fri, 19 Apr 2024 16:51:46 +0800 +Subject: x86/tsc: Trust initial offset in architectural TSC-adjust MSRs + +From: Daniel J Blueman + +commit 455f9075f14484f358b3c1d6845b4a438de198a7 upstream. + +When the BIOS configures the architectural TSC-adjust MSRs on secondary +sockets to correct a constant inter-chassis offset, after Linux brings the +cores online, the TSC sync check later resets the core-local MSR to 0, +triggering HPET fallback and leading to performance loss. + +Fix this by unconditionally using the initial adjust values read from the +MSRs. Trusting the initial offsets in this architectural mechanism is a +better approach than special-casing workarounds for specific platforms. + +Signed-off-by: Daniel J Blueman +Signed-off-by: Thomas Gleixner +Reviewed-by: Steffen Persvold +Reviewed-by: James Cleverdon +Reviewed-by: Dimitri Sivanich +Reviewed-by: Prarit Bhargava +Link: https://lore.kernel.org/r/20240419085146.175665-1-daniel@quora.org +Signed-off-by: Greg Kroah-Hartman +--- + arch/x86/kernel/tsc_sync.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +--- a/arch/x86/kernel/tsc_sync.c ++++ b/arch/x86/kernel/tsc_sync.c +@@ -151,11 +151,9 @@ bool tsc_store_and_check_tsc_adjust(bool + cur->warned = false; + + /* +- * If a non-zero TSC value for socket 0 may be valid then the default +- * adjusted value cannot assumed to be zero either. ++ * The default adjust value cannot be assumed to be zero on any socket. + */ +- if (tsc_async_resets) +- cur->adjusted = bootval; ++ cur->adjusted = bootval; + + /* + * Check whether this CPU is the first in a package to come up. In