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] [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

Powered by Openwall GNU/*/Linux Powered by OpenVZ