]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
x86/cpu: Remove unused !CONFIG_X86_TSC code
authorIngo Molnar <mingo@kernel.org>
Mon, 27 Apr 2026 06:07:02 +0000 (08:07 +0200)
committerIngo Molnar <mingo@kernel.org>
Thu, 11 Jun 2026 08:25:34 +0000 (10:25 +0200)
Now that the Kconfig space always enables CONFIG_X86_TSC (on x86),
remove !CONFIG_X86_TSC code from the x86 arch code.

We still keep the Kconfig option to catch any eventual code still
pending in maintainer or non-mainline trees, plus some drivers
have raw TSC timestamping hacks that use CONFIG_X86_TSC.

It's also still possible to disable TSC support runtime.

Signed-off-by: Ingo Molnar <mingo@kernel.org>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Ahmed S . Darwish <darwi@linutronix.de>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Ard Biesheuvel <ardb@kernel.org>
Cc: H . Peter Anvin <hpa@zytor.com>
Cc: John Ogness <john.ogness@linutronix.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20250425084216.3913608-13-mingo@kernel.org
arch/x86/include/asm/timex.h
arch/x86/include/asm/trace_clock.h
arch/x86/include/asm/tsc.h
arch/x86/kernel/Makefile
arch/x86/kernel/i8253.c
arch/x86/kernel/tsc.c

index 956e4145311b12744ad78df053e991308cfe03ed..6e57e3c0fdd206f478ac6599d4f28f67de4fc3a9 100644 (file)
@@ -7,8 +7,7 @@
 
 static inline unsigned long random_get_entropy(void)
 {
-       if (!IS_ENABLED(CONFIG_X86_TSC) &&
-           !cpu_feature_enabled(X86_FEATURE_TSC))
+       if (!cpu_feature_enabled(X86_FEATURE_TSC))
                return random_get_entropy_fallback();
        return rdtsc();
 }
index 7061a5650969ec1b6165293685180dc567a10318..1efab284c32ae136e68c07c8f68abb147a87e171 100644 (file)
@@ -5,17 +5,9 @@
 #include <linux/compiler.h>
 #include <linux/types.h>
 
-#ifdef CONFIG_X86_TSC
-
 extern u64 notrace trace_clock_x86_tsc(void);
 
 # define ARCH_TRACE_CLOCKS \
        { trace_clock_x86_tsc,  "x86-tsc",      .in_ns = 0 },
 
-#else /* !CONFIG_X86_TSC */
-
-#define ARCH_TRACE_CLOCKS
-
-#endif
-
 #endif  /* _ASM_X86_TRACE_CLOCK_H */
index 4f7f09f505521db6e353491377bf6d2ba62230ef..4d2d2f21ff063feeba69f72545fd354ad9102105 100644 (file)
@@ -76,8 +76,7 @@ extern void disable_TSC(void);
 
 static inline cycles_t get_cycles(void)
 {
-       if (!IS_ENABLED(CONFIG_X86_TSC) &&
-           !cpu_feature_enabled(X86_FEATURE_TSC))
+       if (!cpu_feature_enabled(X86_FEATURE_TSC))
                return 0;
        return rdtsc();
 }
@@ -94,25 +93,15 @@ extern unsigned long native_calibrate_tsc(void);
 extern unsigned long long native_sched_clock_from_tsc(u64 tsc);
 
 extern int tsc_clocksource_reliable;
-#ifdef CONFIG_X86_TSC
 extern bool tsc_async_resets;
-#else
-# define tsc_async_resets      false
-#endif
 
 /*
  * Boot-time check whether the TSCs are synchronized across
  * all CPUs/cores:
  */
-#ifdef CONFIG_X86_TSC
 extern bool tsc_store_and_check_tsc_adjust(bool bootcpu);
 extern void tsc_verify_tsc_adjust(bool resume);
 extern void check_tsc_sync_target(void);
-#else
-static inline bool tsc_store_and_check_tsc_adjust(bool bootcpu) { return false; }
-static inline void tsc_verify_tsc_adjust(bool resume) { }
-static inline void check_tsc_sync_target(void) { }
-#endif
 
 extern int notsc_setup(char *);
 extern void tsc_save_sched_clock_state(void);
index 47a32f5839300438045bdd4a33dc92c0ffb6afbc..31f46fd005278541e18209da086dbc017015f961 100644 (file)
@@ -108,7 +108,7 @@ apm-y                               := apm_32.o
 obj-$(CONFIG_APM)              += apm.o
 obj-$(CONFIG_SMP)              += smp.o
 obj-$(CONFIG_SMP)              += smpboot.o
-obj-$(CONFIG_X86_TSC)          += tsc_sync.o
+obj-y                          += tsc_sync.o
 obj-$(CONFIG_SMP)              += setup_percpu.o
 obj-$(CONFIG_X86_MPPARSE)      += mpparse.o
 obj-y                          += apic/
@@ -117,7 +117,7 @@ obj-$(CONFIG_DYNAMIC_FTRACE)        += ftrace.o
 obj-$(CONFIG_FUNCTION_TRACER)  += ftrace_$(BITS).o
 obj-$(CONFIG_FUNCTION_GRAPH_TRACER) += ftrace.o
 obj-$(CONFIG_FTRACE_SYSCALLS)  += ftrace.o
-obj-$(CONFIG_X86_TSC)          += trace_clock.o
+obj-y                          += trace_clock.o
 obj-$(CONFIG_TRACING)          += trace.o
 obj-$(CONFIG_RETHOOK)          += rethook.o
 obj-$(CONFIG_VMCORE_INFO)      += vmcore_info_$(BITS).o
index cb9852ad6098935990dc0f77791eb8101d0c0fff..0b991035f12796f6e14cdd0694eff0f8765234f5 100644 (file)
@@ -31,7 +31,7 @@ struct clock_event_device *global_clock_event;
  */
 static bool __init use_pit(void)
 {
-       if (!IS_ENABLED(CONFIG_X86_TSC) || !boot_cpu_has(X86_FEATURE_TSC))
+       if (!boot_cpu_has(X86_FEATURE_TSC))
                return true;
 
        /* This also returns true when APIC is disabled */
index c5110eb554bcf17f1ca9f3af1ed63a77f1c2b4ad..ce10ae4b298b79684220f00de805d75a6bdd79fc 100644 (file)
@@ -298,30 +298,17 @@ notrace u64 sched_clock(void)
        preempt_enable_notrace();
        return now;
 }
-
 int check_tsc_unstable(void)
 {
        return tsc_unstable;
 }
 EXPORT_SYMBOL_GPL(check_tsc_unstable);
 
-#ifdef CONFIG_X86_TSC
 int __init notsc_setup(char *str)
 {
        mark_tsc_unstable("boot parameter notsc");
        return 1;
 }
-#else
-/*
- * disable flag for tsc. Takes effect by clearing the TSC cpu flag
- * in cpu/common.c
- */
-int __init notsc_setup(char *str)
-{
-       setup_clear_cpu_cap(X86_FEATURE_TSC);
-       return 1;
-}
-#endif
 __setup("notsc", notsc_setup);
 
 enum {