lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20260119195055.0B00B57E@davehans-spike.ostc.intel.com>
Date: Mon, 19 Jan 2026 11:50:55 -0800
From: Dave Hansen <dave.hansen@...ux.intel.com>
To: linux-kernel@...r.kernel.org
Cc: sohil.mehta@...el.com, Dave Hansen <dave.hansen@...ux.intel.com>, Borislav Petkov <bp@...en8.de>, "H. Peter Anvin" <hpa@...or.com>, Ingo Molnar <mingo@...hat.com>, Jon Kohler <jon@...anix.com>, Pawan Gupta <pawan.kumar.gupta@...ux.intel.com>, "Peter Zijlstra (Intel)" <peterz@...radead.org>, Thomas Gleixner <tglx@...nel.org>, Tony Luck <tony.luck@...el.com>, x86@...nel.org
Subject: [PATCH 4/6] x86/cpu: Add platform ID to CPU info structure


From: Dave Hansen <dave.hansen@...ux.intel.com>

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->x86_platform_id.

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@...ux.intel.com>
Cc: Thomas Gleixner <tglx@...nel.org>
Cc: Ingo Molnar <mingo@...hat.com>
Cc: Borislav Petkov <bp@...en8.de>
Cc: Dave Hansen <dave.hansen@...ux.intel.com>
Cc: "H. Peter Anvin" <hpa@...or.com>
Cc: Tony Luck <tony.luck@...el.com>
Cc: Pawan Gupta <pawan.kumar.gupta@...ux.intel.com>
Cc: "Peter Zijlstra (Intel)" <peterz@...radead.org>
Cc: x86@...nel.org
Cc: Jon Kohler <jon@...anix.com>
---

 b/arch/x86/include/asm/processor.h |    1 +
 b/arch/x86/kernel/cpu/common.c     |    4 +++-
 b/arch/x86/kernel/cpu/intel.c      |    1 +
 3 files changed, 5 insertions(+), 1 deletion(-)

diff -puN arch/x86/include/asm/processor.h~cpu-x86_stepping arch/x86/include/asm/processor.h
--- a/arch/x86/include/asm/processor.h~cpu-x86_stepping	2026-01-19 11:38:09.341914025 -0800
+++ b/arch/x86/include/asm/processor.h	2026-01-19 11:38:09.444917962 -0800
@@ -140,6 +140,7 @@ struct cpuinfo_x86 {
 		__u32		x86_vfm;
 	};
 	__u8			x86_stepping;
+	__u8			x86_platform_id; /* Intel-only. 3 bits */
 #ifdef CONFIG_X86_64
 	/* Number of 4K pages in DTLB/ITLB combined(in pages): */
 	int			x86_tlbsize;
diff -puN arch/x86/kernel/cpu/common.c~cpu-x86_stepping arch/x86/kernel/cpu/common.c
--- a/arch/x86/kernel/cpu/common.c~cpu-x86_stepping	2026-01-19 11:38:09.428917350 -0800
+++ b/arch/x86/kernel/cpu/common.c	2026-01-19 11:38:09.445918000 -0800
@@ -1981,7 +1981,9 @@ static void identify_cpu(struct cpuinfo_
 	c->loops_per_jiffy = loops_per_jiffy;
 	c->x86_cache_size = 0;
 	c->x86_vendor = X86_VENDOR_UNKNOWN;
-	c->x86_model = c->x86_stepping = 0;	/* So far unknown... */
+	c->x86_model = 0;
+	c->x86_stepping = 0;
+	c->x86_platform_id = 0;
 	c->x86_vendor_id[0] = '\0'; /* Unset */
 	c->x86_model_id[0] = '\0';  /* Unset */
 #ifdef CONFIG_X86_64
diff -puN arch/x86/kernel/cpu/intel.c~cpu-x86_stepping arch/x86/kernel/cpu/intel.c
--- a/arch/x86/kernel/cpu/intel.c~cpu-x86_stepping	2026-01-19 11:38:09.441917848 -0800
+++ b/arch/x86/kernel/cpu/intel.c	2026-01-19 11:38:09.445918000 -0800
@@ -205,6 +205,7 @@ static void early_init_intel(struct cpui
 
 	if (c->x86 >= 6 && !cpu_has(c, X86_FEATURE_IA64))
 		c->microcode = intel_get_microcode_revision();
+	c->x86_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) ||
_

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ