Skip to content

Commit 030c15b

Browse files
committed
x86/tsc: Move away from TSC leaf magic numbers
The TSC code has a bunch of hard-coded references to leaf 0x15. Change them over to the symbolic name. Also zap the 'ART_CPUID_LEAF' definition. It was a duplicate of 'CPUID_TSC_LEAF'. Signed-off-by: Dave Hansen <[email protected]> Link: https://lore.kernel.org/all/20241213205034.B79D6224%40davehans-spike.ostc.intel.com
1 parent a86740a commit 030c15b

File tree

2 files changed

+9
-9
lines changed
  • arch/x86/kernel
  • drivers/platform/x86/intel/pmc

2 files changed

+9
-9
lines changed

arch/x86/kernel/tsc.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include <linux/static_key.h>
1717
#include <linux/static_call.h>
1818

19+
#include <asm/cpuid.h>
1920
#include <asm/hpet.h>
2021
#include <asm/timer.h>
2122
#include <asm/vgtod.h>
@@ -665,13 +666,13 @@ unsigned long native_calibrate_tsc(void)
665666
if (boot_cpu_data.x86_vendor != X86_VENDOR_INTEL)
666667
return 0;
667668

668-
if (boot_cpu_data.cpuid_level < 0x15)
669+
if (boot_cpu_data.cpuid_level < CPUID_TSC_LEAF)
669670
return 0;
670671

671672
eax_denominator = ebx_numerator = ecx_hz = edx = 0;
672673

673674
/* CPUID 15H TSC/Crystal ratio, plus optionally Crystal Hz */
674-
cpuid(0x15, &eax_denominator, &ebx_numerator, &ecx_hz, &edx);
675+
cpuid(CPUID_TSC_LEAF, &eax_denominator, &ebx_numerator, &ecx_hz, &edx);
675676

676677
if (ebx_numerator == 0 || eax_denominator == 0)
677678
return 0;
@@ -1067,18 +1068,16 @@ core_initcall(cpufreq_register_tsc_scaling);
10671068

10681069
#endif /* CONFIG_CPU_FREQ */
10691070

1070-
#define ART_CPUID_LEAF (0x15)
10711071
#define ART_MIN_DENOMINATOR (1)
10721072

1073-
10741073
/*
10751074
* If ART is present detect the numerator:denominator to convert to TSC
10761075
*/
10771076
static void __init detect_art(void)
10781077
{
10791078
unsigned int unused;
10801079

1081-
if (boot_cpu_data.cpuid_level < ART_CPUID_LEAF)
1080+
if (boot_cpu_data.cpuid_level < CPUID_TSC_LEAF)
10821081
return;
10831082

10841083
/*
@@ -1091,7 +1090,7 @@ static void __init detect_art(void)
10911090
tsc_async_resets)
10921091
return;
10931092

1094-
cpuid(ART_CPUID_LEAF, &art_base_clk.denominator,
1093+
cpuid(CPUID_TSC_LEAF, &art_base_clk.denominator,
10951094
&art_base_clk.numerator, &art_base_clk.freq_khz, &unused);
10961095

10971096
art_base_clk.freq_khz /= KHZ;

drivers/platform/x86/intel/pmc/core.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include <linux/suspend.h>
2323
#include <linux/units.h>
2424

25+
#include <asm/cpuid.h>
2526
#include <asm/cpu_device_id.h>
2627
#include <asm/intel-family.h>
2728
#include <asm/msr.h>
@@ -935,13 +936,13 @@ static unsigned int pmc_core_get_crystal_freq(void)
935936
{
936937
unsigned int eax_denominator, ebx_numerator, ecx_hz, edx;
937938

938-
if (boot_cpu_data.cpuid_level < 0x15)
939+
if (boot_cpu_data.cpuid_level < CPUID_TSC_LEAF)
939940
return 0;
940941

941942
eax_denominator = ebx_numerator = ecx_hz = edx = 0;
942943

943-
/* CPUID 15H TSC/Crystal ratio, plus optionally Crystal Hz */
944-
cpuid(0x15, &eax_denominator, &ebx_numerator, &ecx_hz, &edx);
944+
/* TSC/Crystal ratio, plus optionally Crystal Hz */
945+
cpuid(CPUID_TSC_LEAF, &eax_denominator, &ebx_numerator, &ecx_hz, &edx);
945946

946947
if (ebx_numerator == 0 || eax_denominator == 0)
947948
return 0;

0 commit comments

Comments
 (0)