Re: [patch 2/2] Convert bigsmp to use flat physical mode

From: Ashok Raj
Date: Mon Nov 21 2005 - 20:04:37 EST


On Mon, Nov 21, 2005 at 03:39:16PM -0800, Ashok Raj wrote:
>
> - if ((num_processors > 8) &&
> - APIC_XAPIC(ver) &&
> - (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL))
> + if (APIC_XAPIC(ver) &&
> + (CPU_HOTPLUG_ENABLED ||
> + ((num_processors > 8) &&
> + (boot_cpu_data.x86_vendor ==
> X86_VENDOR_INTEL))))
> def_to_bigsmp = 1;

Noticed that Andi send one more patch do enable bigsmp for AMD (i386), and the
APIC_XAPIC() check was not properly placed to factor this in. This updated
patch should work for AMD as well, and switch to bigsmp when we have hotplug
enabled.

--
Cheers,
Ashok Raj
- Open Source Technology Center


If we are using hotplug enabled kernel, then make bigsmp the default mode.


Signed-off-by: Ashok Raj <ashok.raj@xxxxxxxxx>
Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@xxxxxxxxx>
-------------------------------------------------------
arch/i386/kernel/mpparse.c | 25 ++++++++++++++++++-------
1 files changed, 18 insertions(+), 7 deletions(-)

Index: linux-2.6.15-rc1-mm2/arch/i386/kernel/mpparse.c
===================================================================
--- linux-2.6.15-rc1-mm2.orig/arch/i386/kernel/mpparse.c
+++ linux-2.6.15-rc1-mm2/arch/i386/kernel/mpparse.c
@@ -38,6 +38,12 @@
int smp_found_config;
unsigned int __initdata maxcpus = NR_CPUS;

+#ifdef CONFIG_HOTPLUG_CPU
+#define CPU_HOTPLUG_ENABLED (1)
+#else
+#define CPU_HOTPLUG_ENABLED (0)
+#endif
+
/*
* Various Linux-internal data structures created from the
* MP-table.
@@ -219,13 +225,18 @@ static void __devinit MP_processor_info
cpu_set(num_processors, cpu_possible_map);
num_processors++;

- if ((num_processors > 8) &&
- APIC_XAPIC(ver) &&
- (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL))
- def_to_bigsmp = 1;
- else
- def_to_bigsmp = 0;
-
+ if (CPU_HOTPLUG_ENABLED || (num_processors > 8)) {
+ switch (boot_cpu_data.x86_vendor) {
+ case X86_VENDOR_INTEL:
+ if (!APIC_XAPIC(ver)) {
+ def_to_bigsmp = 0;
+ break;
+ }
+ /* If P4 and above fall through */
+ case X86_VENDOR_AMD:
+ def_to_bigsmp = 1;
+ }
+ }
bios_cpu_apicid[num_processors - 1] = m->mpc_apicid;
}

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/