diff mbox series

[RFC,02/15] x86/apic: Fix smp init delay for extended Intel families

Message ID 20241220213711.1892696-3-sohil.mehta@intel.com (mailing list archive)
State New
Headers show
Series Prepare for new Intel family models | expand

Commit Message

Sohil Mehta Dec. 20, 2024, 9:36 p.m. UTC
The MP specification version 1.4 references the i486 and early Pentium
processors in family 5. However, all processors starting with family 6
likely do not need the 10 msec INIT delay. The omission of the Pentium
4s (family 15) seems like an oversight in the original check.

With some risk, choose a simpler check and extend the quirk to all
recent and upcoming Intel processors.

While at it, fix the command line parameter comment to match with the
actual name.

Signed-off-by: Sohil Mehta <sohil.mehta@intel.com>
---
 arch/x86/kernel/smpboot.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Dave Hansen Dec. 20, 2024, 11:20 p.m. UTC | #1
On 12/20/24 13:36, Sohil Mehta wrote:
> The MP specification version 1.4 references the i486 and early Pentium
> processors in family 5. 

Can you please elaborate on how this reference is relevant to the patch
at hand?

> However, all processors starting with family 6 likely do not need the
> 10 msec INIT delay. The omission of the Pentium 4s (family 15) seems
> like an oversight in the original check.
> 
> With some risk, choose a simpler check and extend the quirk to all
> recent and upcoming Intel processors.

I'm struggling to follow this a bit.

I think these are the facts that matter:

 * init_udelay=0 means "no quirk"
 * Modern CPUs don't have the quirk
 * The current check says "only family 6 is modern"
 * Family 15 is _probably_ modern and just forgotten about

And this is what you're doing in the end:

Consider everything PPro and later to be modern, including all of
families 6, 15 and the new 18/19 CPUs.

Right?
diff mbox series

Patch

diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index b5a8f0891135..6c98e9178963 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -668,7 +668,7 @@  static void impress_friends(void)
  * But that slows boot and resume on modern processors, which include
  * many cores and don't require that delay.
  *
- * Cmdline "init_cpu_udelay=" is available to over-ride this delay.
+ * Cmdline "cpu_init_udelay=" is available to override this delay.
  * Modern processor families are quirked to remove the delay entirely.
  */
 #define UDELAY_10MS_DEFAULT 10000
@@ -690,9 +690,9 @@  static void __init smp_quirk_init_udelay(void)
 		return;
 
 	/* if modern processor, use no delay */
-	if (((boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) && (boot_cpu_data.x86 == 6)) ||
-	    ((boot_cpu_data.x86_vendor == X86_VENDOR_HYGON) && (boot_cpu_data.x86 >= 0x18)) ||
-	    ((boot_cpu_data.x86_vendor == X86_VENDOR_AMD) && (boot_cpu_data.x86 >= 0xF))) {
+	if ((boot_cpu_data.x86_vendor == X86_VENDOR_INTEL && boot_cpu_data.x86_vfm >= INTEL_PENTIUM_PRO) ||
+	    (boot_cpu_data.x86_vendor == X86_VENDOR_HYGON && boot_cpu_data.x86 >= 0x18) ||
+	    (boot_cpu_data.x86_vendor == X86_VENDOR_AMD && boot_cpu_data.x86 >= 0xF)) {
 		init_udelay = 0;
 		return;
 	}