aboutsummaryrefslogtreecommitdiff
path: root/arch/x86/kernel/tsc.c
diff options
context:
space:
mode:
authorGravatar Borislav Petkov (AMD) <bp@alien8.de> 2022-12-18 21:53:36 +0100
committerGravatar Borislav Petkov (AMD) <bp@alien8.de> 2023-02-11 10:44:07 +0100
commit6b8d5dde5b6903baf82fc7400e0b3376b10805b4 (patch)
tree2f538623d9a2601479dc86b81b9a11ce8ea62d1f /arch/x86/kernel/tsc.c
parentx86/tsc: Make recalibrate_cpu_khz() export GPL only (diff)
downloadlinux-6b8d5dde5b6903baf82fc7400e0b3376b10805b4.tar.gz
linux-6b8d5dde5b6903baf82fc7400e0b3376b10805b4.tar.bz2
linux-6b8d5dde5b6903baf82fc7400e0b3376b10805b4.zip
x86/tsc: Do feature check as the very first thing
Do the feature check as the very first thing in the function. Everything else comes after that and is meaningless work if the TSC CPUID bit is not even set. Switch to cpu_feature_enabled() too, while at it. No functional changes. Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> Link: https://lore.kernel.org/r/Y5990CUCuWd5jfBH@zn.tnic
Diffstat (limited to 'arch/x86/kernel/tsc.c')
-rw-r--r--arch/x86/kernel/tsc.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
index eaeffef93a12..aff1d79dd6ba 100644
--- a/arch/x86/kernel/tsc.c
+++ b/arch/x86/kernel/tsc.c
@@ -1509,6 +1509,11 @@ void __init tsc_early_init(void)
void __init tsc_init(void)
{
+ if (!cpu_feature_enabled(X86_FEATURE_TSC)) {
+ setup_clear_cpu_cap(X86_FEATURE_TSC_DEADLINE_TIMER);
+ return;
+ }
+
/*
* native_calibrate_cpu_early can only calibrate using methods that are
* available early in boot.
@@ -1516,11 +1521,6 @@ void __init tsc_init(void)
if (x86_platform.calibrate_cpu == native_calibrate_cpu_early)
x86_platform.calibrate_cpu = native_calibrate_cpu;
- if (!boot_cpu_has(X86_FEATURE_TSC)) {
- setup_clear_cpu_cap(X86_FEATURE_TSC_DEADLINE_TIMER);
- return;
- }
-
if (!tsc_khz) {
/* We failed to determine frequencies earlier, try again */
if (!determine_cpu_tsc_frequencies(false)) {