[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <9f397b71-54c7-4cf9-8c93-515f909404ae@intel.com>
Date: Thu, 22 Jan 2026 11:26:17 -0800
From: Sohil Mehta <sohil.mehta@...el.com>
To: Dave Hansen <dave.hansen@...ux.intel.com>, <linux-kernel@...r.kernel.org>
CC: 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: Re: [PATCH 3/6] x86/microcode: Refactor platform ID enumeration into
a helper
On 1/19/2026 11:50 AM, Dave Hansen wrote:
> +static inline u32 intel_get_platform_id(void)
> +{
> + unsigned int val[2];
> +
> + /*
> + * This can be called early. Use CPUID directly to
> + * generate the VFM value for this CPU.
> + */
> + if (intel_cpuid_vfm() < INTEL_PENTIUM_III_DESCHUTES)
> + return 0;
> +
> + /* get processor flags from MSR 0x17 */
> + native_rdmsr(MSR_IA32_PLATFORM_ID, val[0], val[1]);
> + return 1 << ((val[1] >> 18) & 7);
> +}
Would it be better to use a *native_rdmsrq* and proper #defines instead
of passing the two ints and operating on them using magic values?
I understand the desire to keep this bugfix series as minimal as
possible. But doing this now makes it easier to understand this helper
and what it is returning exactly. That would avoid the confusion in
patch 4 between x86_platform_id and platform_mask.
If you prefer to leave the helper as-is, at a minimum, should we rename
it to intel_get_platform_mask()? Also, the variable name in struct
cpuinfo_x86 should then be x86_platform_mask.
> #endif /* !CONFIG_CPU_SUP_INTEL */
>
> bool microcode_nmi_handler(void);
> diff -puN arch/x86/kernel/cpu/microcode/intel.c~refactor-get-processor-flags arch/x86/kernel/cpu/microcode/intel.c
> --- a/arch/x86/kernel/cpu/microcode/intel.c~refactor-get-processor-flags 2026-01-19 11:38:08.780892582 -0800
> +++ b/arch/x86/kernel/cpu/microcode/intel.c 2026-01-19 11:38:08.783892696 -0800
> @@ -123,16 +123,8 @@ static inline unsigned int exttable_size
> void intel_collect_cpu_info(struct cpu_signature *sig)
> {
> sig->sig = cpuid_eax(1);
> - sig->pf = 0;
> sig->rev = intel_get_microcode_revision();
> -
> - if (IFM(x86_family(sig->sig), x86_model(sig->sig)) >= INTEL_PENTIUM_III_DESCHUTES) {
> - unsigned int val[2];
> -
> - /* get processor flags from MSR 0x17 */
> - native_rdmsr(MSR_IA32_PLATFORM_ID, val[0], val[1]);
> - sig->pf = 1 << ((val[1] >> 18) & 7);
> - }
> + sig->pf = intel_get_platform_id();
> }
> EXPORT_SYMBOL_GPL(intel_collect_cpu_info);
>
> _
Powered by blists - more mailing lists