diff options
| author | Dave Hansen <dave.hansen@linux.intel.com> | 2026-03-04 10:10:20 -0800 |
|---|---|---|
| committer | Dave Hansen <dave.hansen@linux.intel.com> | 2026-03-05 12:25:32 -0800 |
| commit | d8630b67ca1edeea728dbb309b09d239e9db6bdf (patch) | |
| tree | 17106b5a8e066a4e3dccbb0539e3c6900076e6db /arch/x86/kernel/cpu | |
| parent | 238be4ba87605da69de2131e8736be7a0d299e00 (diff) | |
| download | lwn-d8630b67ca1edeea728dbb309b09d239e9db6bdf.tar.gz lwn-d8630b67ca1edeea728dbb309b09d239e9db6bdf.zip | |
x86/cpu: Add platform ID to CPU info structure
The end goal here is to be able to do x86_match_cpu() and match on a
specific platform ID. While it would be possible to stash this ID
off somewhere or read it dynamically, that approaches would not be
consistent with the other fields which can be matched.
Read the platform ID and store it in cpuinfo_x86.
There are lots of sites to set this new field. Place it near
the place c->microcode is established since the platform ID is
so closely intertwined with microcode updates.
Note: This should not grow the size of 'struct cpuinfo_x86' in
practice since the u8 fits next to another u8 in the structure.
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Reviewed-by: Sohil Mehta <sohil.mehta@intel.com>
Reviewed-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
Link: https://patch.msgid.link/20260304181020.8D518228@davehans-spike.ostc.intel.com
Diffstat (limited to 'arch/x86/kernel/cpu')
| -rw-r--r-- | arch/x86/kernel/cpu/intel.c | 1 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/microcode/intel.c | 2 |
2 files changed, 2 insertions, 1 deletions
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c index 646ff33c4651..f28c0efb7c8f 100644 --- a/arch/x86/kernel/cpu/intel.c +++ b/arch/x86/kernel/cpu/intel.c @@ -205,6 +205,7 @@ static void early_init_intel(struct cpuinfo_x86 *c) if (c->x86 >= 6 && !cpu_has(c, X86_FEATURE_IA64)) c->microcode = intel_get_microcode_revision(); + c->intel_platform_id = intel_get_platform_id(); /* Now if any of them are set, check the blacklist and clear the lot */ if ((cpu_has(c, X86_FEATURE_SPEC_CTRL) || diff --git a/arch/x86/kernel/cpu/microcode/intel.c b/arch/x86/kernel/cpu/microcode/intel.c index 83c6cd23d648..37ac4afe0972 100644 --- a/arch/x86/kernel/cpu/microcode/intel.c +++ b/arch/x86/kernel/cpu/microcode/intel.c @@ -134,7 +134,7 @@ static u32 intel_cpuid_vfm(void) return IFM(fam, model); } -static u32 intel_get_platform_id(void) +u32 intel_get_platform_id(void) { unsigned int val[2]; |
