From: Andy Shevchenko <andriy.shevchenko@intel.com>
To: Dave Hansen <dave.hansen@linux.intel.com>
Cc: linux-kernel@vger.kernel.org, sohil.mehta@intel.com,
Borislav Petkov <bp@alien8.de>, "H. Peter Anvin" <hpa@zytor.com>,
Ingo Molnar <mingo@redhat.com>, Jon Kohler <jon@nutanix.com>,
Pawan Gupta <pawan.kumar.gupta@linux.intel.com>,
"Peter Zijlstra (Intel)" <peterz@infradead.org>,
Thomas Gleixner <tglx@kernel.org>,
Tony Luck <tony.luck@intel.com>,
x86@kernel.org
Subject: Re: [PATCH 5/6] x86/cpu: Add platform ID to CPU matching structure
Date: Tue, 20 Jan 2026 09:30:50 +0100 [thread overview]
Message-ID: <aW89OokcLlnFHlii@black.igk.intel.com> (raw)
In-Reply-To: <20260119195057.E6728139@davehans-spike.ostc.intel.com>
On Mon, Jan 19, 2026 at 11:50:57AM -0800, Dave Hansen wrote:
> The existing x86_match_cpu() infrastructure can be used to match
> a bunch of attributes of a CPU: vendor, family, model, steppings
> and CPU features.
>
> But, there's one more attribute that's missing and unable to be
> matched against: the platform ID, enumerated on Intel CPUs in
> MSR_IA32_PLATFORM_ID. It is a little more obscure and is only
> queried during microcode loading. This is because Intel sometimes
> has CPUs with identical family/model/stepping but which need
> different microcode. These CPUs are differentiated with the
> platform ID.
>
> Add a field in 'struct x86_cpu_id' for the platform ID. Similar
> to the stepping field, make the new field a mask of platform IDs.
> Some examples:
>
> 0x01: matches only platform ID 0x0
> 0x02: matches only platform ID 0x1
> 0x03: matches platform IDs 0x0 or 0x1
> 0x80: matches only platform ID 0x7
> 0xff: matches all 8 possible platform IDs
>
> Since the mask is only a byte wide, it nestles in next to another
> u8 and does not even increase the size of 'struct x86_cpu_id'.
>
> Reserve the all 0's value as the wildcard (X86_PLATFORM_ANY). This
> avoids forcing changes changes to existing 'struct x86_cpu_id' users.
> They can just continue to fill the field with 0's and their matching
> will work exactly as before.
>
> Note: If someone is ever looking for space in 'struct x86_cpu_id',
> this new field could probably get stuck over in ->driver_data
> for the one user that there is.
...
> struct x86_cpu_id {
> __u16 feature; /* bit index */
> /* Solely for kernel-internal use: DO NOT EXPORT to userspace! */
> __u16 flags;
> + __u8 platform_mask;
> __u8 type;
> kernel_ulong_t driver_data;
> };
...
> #define X86_STEPPING_ANY 0
> #define X86_STEP_MIN 0
> #define X86_STEP_MAX 0xf
> +#define X86_PLATFORM_ANY 0x0
> #define X86_FEATURE_ANY 0 /* Same as FPU, you can't test for that */
Wouldn't it be slightly better to locate the new one here to follow the order
in x86_cpu_id above?
> #define X86_CPU_TYPE_ANY 0
--
With Best Regards,
Andy Shevchenko
next prev parent reply other threads:[~2026-01-20 8:30 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-19 19:50 [PATCH 0/6] x86/cpu: Take Intel platform into account for old microcode checks Dave Hansen
2026-01-19 19:50 ` [PATCH 1/6] x86/cpu: Break Vendor/Family/Model macros into separate header Dave Hansen
2026-01-20 8:24 ` Andy Shevchenko
2026-01-20 15:03 ` Dave Hansen
2026-01-20 16:22 ` Andy Shevchenko
2026-01-20 16:34 ` Dave Hansen
2026-01-20 20:54 ` Andy Shevchenko
2026-01-20 16:48 ` Luck, Tony
2026-01-20 20:50 ` Shevchenko, Andriy
2026-01-19 19:50 ` [PATCH 2/6] x86/cpu: Add missing #include Dave Hansen
2026-01-19 23:33 ` kernel test robot
2026-01-20 0:26 ` Dave Hansen
2026-01-20 8:19 ` Andy Shevchenko
2026-01-20 15:35 ` Dave Hansen
2026-01-20 3:26 ` kernel test robot
2026-01-19 19:50 ` [PATCH 3/6] x86/microcode: Refactor platform ID enumeration into a helper Dave Hansen
2026-01-20 3:07 ` Chao Gao
2026-01-20 16:06 ` Dave Hansen
2026-01-20 20:59 ` Andy Shevchenko
2026-01-22 19:26 ` Sohil Mehta
2026-01-19 19:50 ` [PATCH 4/6] x86/cpu: Add platform ID to CPU info structure Dave Hansen
2026-01-20 3:14 ` Chao Gao
2026-01-20 15:22 ` Dave Hansen
2026-01-21 2:03 ` Chao Gao
2026-01-20 8:27 ` Andy Shevchenko
2026-01-20 15:06 ` Dave Hansen
2026-01-20 20:44 ` Andy Shevchenko
2026-01-20 20:48 ` Dave Hansen
2026-01-19 19:50 ` [PATCH 5/6] x86/cpu: Add platform ID to CPU matching structure Dave Hansen
2026-01-20 8:30 ` Andy Shevchenko [this message]
2026-01-20 15:09 ` Dave Hansen
2026-01-19 19:51 ` [PATCH 6/6] x86/microcode: Add platform mask to Intel microcode "old" list Dave Hansen
2026-01-20 14:33 ` Zhao Liu
2026-01-20 15:10 ` Dave Hansen
2026-01-29 21:23 ` Sohil Mehta
2026-01-20 18:18 ` [PATCH 0/6] x86/cpu: Take Intel platform into account for old microcode checks Dave Hansen
2026-01-22 13:56 ` Ricardo Neri
-- strict thread matches above, loose matches on Subject: below --
2026-02-06 23:14 [PATCH 0/6] [v2] " Dave Hansen
2026-02-06 23:14 ` [PATCH 5/6] x86/cpu: Add platform ID to CPU matching structure Dave Hansen
2026-02-10 23:27 ` Sohil Mehta
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aW89OokcLlnFHlii@black.igk.intel.com \
--to=andriy.shevchenko@intel.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=jon@nutanix.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=pawan.kumar.gupta@linux.intel.com \
--cc=peterz@infradead.org \
--cc=sohil.mehta@intel.com \
--cc=tglx@kernel.org \
--cc=tony.luck@intel.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.