public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH 1/4] use nr_cpus= to set nr_cpu_ids early
@ 2010-01-12  2:48 Yinghai Lu
  2010-01-12  2:48 ` [RFC PATCH 3/4] x86: using logical flat for amd cpu too Yinghai Lu
                   ` (3 more replies)
  0 siblings, 4 replies; 24+ messages in thread
From: Yinghai Lu @ 2010-01-12  2:48 UTC (permalink / raw)
  To: Suresh Siddha, Linus Torvalds, ananth@in.ibm.com, Ingo Molnar,
	Thomas Gleixner, H. Peter Anvin, Andrew Morton
  Cc: linux-kernel, Yinghai Lu

on x86, before prefill_possible_map(), nr_cpu_ids will be NR_CPUS aka CONFIG_NR_CPUS

add nr_cpus= to set nr_cpu_ids. so we can simulate cpus <=8 on normal config.
instead of change NR_CPUS directly.

Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 arch/ia64/kernel/acpi.c   |    4 ++--
 arch/x86/kernel/smpboot.c |    7 ++++---
 init/main.c               |   14 ++++++++++++++
 3 files changed, 20 insertions(+), 5 deletions(-)

Index: linux-2.6/init/main.c
===================================================================
--- linux-2.6.orig/init/main.c
+++ linux-2.6/init/main.c
@@ -149,6 +149,20 @@ static int __init nosmp(char *str)
 
 early_param("nosmp", nosmp);
 
+/* this is hard limit */
+static int __init nrcpus(char *str)
+{
+	int nr_cpus;
+
+	get_option(&str, &nr_cpus);
+	if (nr_cpus > 0 && nr_cpus < nr_cpu_ids)
+		nr_cpu_ids = nr_cpus;
+
+	return 0;
+}
+
+early_param("nr_cpus", nrcpus);
+
 static int __init maxcpus(char *str)
 {
 	get_option(&str, &setup_max_cpus);
Index: linux-2.6/arch/ia64/kernel/acpi.c
===================================================================
--- linux-2.6.orig/arch/ia64/kernel/acpi.c
+++ linux-2.6/arch/ia64/kernel/acpi.c
@@ -883,8 +883,8 @@ __init void prefill_possible_map(void)
 
 	possible = available_cpus + additional_cpus;
 
-	if (possible > NR_CPUS)
-		possible = NR_CPUS;
+	if (possible > nr_cpu_ids)
+		possible = nr_cpu_ids;
 
 	printk(KERN_INFO "SMP: Allowing %d CPUs, %d hotplug CPUs\n",
 		possible, max((possible - available_cpus), 0));
Index: linux-2.6/arch/x86/kernel/smpboot.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/smpboot.c
+++ linux-2.6/arch/x86/kernel/smpboot.c
@@ -1213,11 +1213,12 @@ __init void prefill_possible_map(void)
 
 	total_cpus = max_t(int, possible, num_processors + disabled_cpus);
 
-	if (possible > CONFIG_NR_CPUS) {
+	/* nr_cpu_ids could be reduced via nr_cpus= */
+	if (possible > nr_cpu_ids) {
 		printk(KERN_WARNING
 			"%d Processors exceeds NR_CPUS limit of %d\n",
-			possible, CONFIG_NR_CPUS);
-		possible = CONFIG_NR_CPUS;
+			possible, nr_cpu_ids);
+		possible = nr_cpu_ids;
 	}
 
 	printk(KERN_INFO "SMP: Allowing %d CPUs, %d hotplug CPUs\n",

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [RFC PATCH 3/4] x86: using logical flat for amd cpu too.
  2010-01-12  2:48 [RFC PATCH 1/4] use nr_cpus= to set nr_cpu_ids early Yinghai Lu
@ 2010-01-12  2:48 ` Yinghai Lu
  2010-01-12  3:16   ` Linus Torvalds
  2010-01-12  8:27   ` Ananth N Mavinakayanahalli
  2010-01-12  2:48 ` [RFC PATCH 4/4] x86: according to nr_cpu_ids to decide if need to leave logical flat Yinghai Lu
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 24+ messages in thread
From: Yinghai Lu @ 2010-01-12  2:48 UTC (permalink / raw)
  To: Suresh Siddha, Linus Torvalds, ananth@in.ibm.com, Ingo Molnar,
	Thomas Gleixner, H. Peter Anvin, Andrew Morton
  Cc: linux-kernel, Yinghai Lu

not sure it works again, could be bios fix the irq routing dest ?

tested that amd support logical flat too when cpus num <= 8 and even
bsp apic id > 8

so could remove vendor check...

Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 arch/x86/kernel/apic/apic.c     |   11 ++---------
 arch/x86/kernel/apic/probe_64.c |   13 ++-----------
 2 files changed, 4 insertions(+), 20 deletions(-)

Index: linux-2.6/arch/x86/kernel/apic/apic.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/apic/apic.c
+++ linux-2.6/arch/x86/kernel/apic/apic.c
@@ -1898,15 +1898,8 @@ void __cpuinit generic_processor_info(in
 		max_physical_apicid = apicid;
 
 #ifdef CONFIG_X86_32
-	switch (boot_cpu_data.x86_vendor) {
-	case X86_VENDOR_INTEL:
-		if (num_processors > 8)
-			def_to_bigsmp = 1;
-		break;
-	case X86_VENDOR_AMD:
-		if (max_physical_apicid >= 8)
-			def_to_bigsmp = 1;
-	}
+	if (num_processors > 8)
+		def_to_bigsmp = 1;
 #endif
 
 #if defined(CONFIG_SMP) || defined(CONFIG_X86_64)
Index: linux-2.6/arch/x86/kernel/apic/probe_64.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/apic/probe_64.c
+++ linux-2.6/arch/x86/kernel/apic/probe_64.c
@@ -67,17 +67,8 @@ void __init default_setup_apic_routing(v
 	}
 #endif
 
-	if (apic == &apic_flat) {
-		switch (boot_cpu_data.x86_vendor) {
-		case X86_VENDOR_INTEL:
-			if (num_processors > 8)
-				apic = &apic_physflat;
-			break;
-		case X86_VENDOR_AMD:
-			if (max_physical_apicid >= 8)
-				apic = &apic_physflat;
-		}
-	}
+	if (apic == &apic_flat && num_processors > 8)
+		apic = &apic_physflat;
 
 	printk(KERN_INFO "Setting APIC routing to %s\n", apic->name);
 

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [RFC PATCH 4/4] x86: according to nr_cpu_ids to decide if need to leave logical flat
  2010-01-12  2:48 [RFC PATCH 1/4] use nr_cpus= to set nr_cpu_ids early Yinghai Lu
  2010-01-12  2:48 ` [RFC PATCH 3/4] x86: using logical flat for amd cpu too Yinghai Lu
@ 2010-01-12  2:48 ` Yinghai Lu
  2010-01-12  3:20   ` Linus Torvalds
  2010-01-12  2:48 ` [RFC PATCH 2/4] x86: use dmi check to treat disabled cpus as hotplug cpus Yinghai Lu
  2010-01-12  3:06 ` [RFC PATCH 1/4] use nr_cpus= to set nr_cpu_ids early Linus Torvalds
  3 siblings, 1 reply; 24+ messages in thread
From: Yinghai Lu @ 2010-01-12  2:48 UTC (permalink / raw)
  To: Suresh Siddha, Linus Torvalds, ananth@in.ibm.com, Ingo Molnar,
	Thomas Gleixner, H. Peter Anvin, Andrew Morton
  Cc: linux-kernel, Yinghai Lu

should use nr_cpu_ids instead of num_processor, in case we have hotplug cpus.

if current only have 8 cpus is up, but if we will have more cpus that
will be hot added later, we should use physical flat at first.

nr_cpu_ids is the total cpus that could be supported.

Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 arch/x86/kernel/apic/probe_32.c |   20 ++++++++++++++++++--
 arch/x86/kernel/apic/probe_64.c |    3 ++-
 arch/x86/kernel/smpboot.c       |    2 --
 3 files changed, 20 insertions(+), 5 deletions(-)

Index: linux-2.6/arch/x86/kernel/apic/probe_32.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/apic/probe_32.c
+++ linux-2.6/arch/x86/kernel/apic/probe_32.c
@@ -52,7 +52,7 @@ static int __init print_ipi_mode(void)
 }
 late_initcall(print_ipi_mode);
 
-void default_setup_apic_routing(void)
+static void local_default_setup_apic_routing(void)
 {
 #ifdef CONFIG_X86_IO_APIC
 	printk(KERN_INFO
@@ -103,7 +103,7 @@ struct apic apic_default = {
 	.init_apic_ldr			= default_init_apic_ldr,
 
 	.ioapic_phys_id_map		= default_ioapic_phys_id_map,
-	.setup_apic_routing		= default_setup_apic_routing,
+	.setup_apic_routing		= local_default_setup_apic_routing,
 	.multi_timer_check		= NULL,
 	.apicid_to_node			= default_apicid_to_node,
 	.cpu_to_logical_apicid		= default_cpu_to_logical_apicid,
@@ -207,6 +207,22 @@ void __init generic_bigsmp_probe(void)
 			apic = &apic_bigsmp;
 			printk(KERN_INFO "Overriding APIC driver with %s\n",
 			       apic->name);
+		}
+	}
+#endif
+}
+
+void default_setup_apic_routing(void)
+{
+#ifdef CONFIG_X86_BIGSMP
+	/*
+	 * make sure we go to bigsmp according to real nr_cpu_ids
+	 */
+	if (!cmdline_apic && apic == &apic_default) {
+		if (nr_cpu_ids > 8) {
+			apic = &apic_bigsmp;
+			printk(KERN_INFO "Overriding APIC driver with %s\n",
+			       apic->name);
 		}
 	}
 #endif
Index: linux-2.6/arch/x86/kernel/smpboot.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/smpboot.c
+++ linux-2.6/arch/x86/kernel/smpboot.c
@@ -1084,9 +1084,7 @@ void __init native_smp_prepare_cpus(unsi
 	set_cpu_sibling_map(0);
 
 	enable_IR_x2apic();
-#ifdef CONFIG_X86_64
 	default_setup_apic_routing();
-#endif
 
 	if (smp_sanity_check(max_cpus) < 0) {
 		printk(KERN_INFO "SMP disabled\n");
Index: linux-2.6/arch/x86/kernel/apic/probe_64.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/apic/probe_64.c
+++ linux-2.6/arch/x86/kernel/apic/probe_64.c
@@ -67,7 +67,8 @@ void __init default_setup_apic_routing(v
 	}
 #endif
 
-	if (apic == &apic_flat && num_processors > 8)
+	/* not just num_processors, we could have hotplug cpus */
+	if (apic == &apic_flat && nr_cpu_ids > 8)
 		apic = &apic_physflat;
 
 	printk(KERN_INFO "Setting APIC routing to %s\n", apic->name);

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [RFC PATCH 2/4] x86: use dmi check to treat disabled cpus as hotplug cpus.
  2010-01-12  2:48 [RFC PATCH 1/4] use nr_cpus= to set nr_cpu_ids early Yinghai Lu
  2010-01-12  2:48 ` [RFC PATCH 3/4] x86: using logical flat for amd cpu too Yinghai Lu
  2010-01-12  2:48 ` [RFC PATCH 4/4] x86: according to nr_cpu_ids to decide if need to leave logical flat Yinghai Lu
@ 2010-01-12  2:48 ` Yinghai Lu
  2010-01-12  3:13   ` Linus Torvalds
  2010-01-12  3:06 ` [RFC PATCH 1/4] use nr_cpus= to set nr_cpu_ids early Linus Torvalds
  3 siblings, 1 reply; 24+ messages in thread
From: Yinghai Lu @ 2010-01-12  2:48 UTC (permalink / raw)
  To: Suresh Siddha, Linus Torvalds, ananth@in.ibm.com, Ingo Molnar,
	Thomas Gleixner, H. Peter Anvin, Andrew Morton
  Cc: linux-kernel, Yinghai Lu

some systems that have disable cpus entries because same
  BIOS will support 2 sockets and 4 sockets and more at
  same time, BIOS just leave some disable entries, but
  those system do not support cpu hotplug. we don't need
  treat disabled_cpus as hotplug cpus.
so we can make nr_cpu_ids smaller and save more space
  (pcpu data allocations), and could make some systems run
  with logical flat instead of physical flat apic mode

Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 arch/x86/kernel/smpboot.c |   39 +++++++++++++++++++++++++++++++++++++--
 1 file changed, 37 insertions(+), 2 deletions(-)

Index: linux-2.6/arch/x86/kernel/smpboot.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/smpboot.c
+++ linux-2.6/arch/x86/kernel/smpboot.c
@@ -47,6 +47,7 @@
 #include <linux/bootmem.h>
 #include <linux/err.h>
 #include <linux/nmi.h>
+#include <linux/dmi.h>
 #include <linux/tboot.h>
 
 #include <asm/acpi.h>
@@ -1180,6 +1181,24 @@ static int __init _setup_possible_cpus(c
 }
 early_param("possible_cpus", _setup_possible_cpus);
 
+static __initdata int treat_disabled_cpus_as_hotplug;
+static __init int hotplug_cpus_check(const struct dmi_system_id *d)
+{
+        printk(KERN_NOTICE "%s detected: treat disabled cpus as hotplug ones\n", d->ident);
+        treat_disabled_cpus_as_hotplug = 1;
+
+        return 0;
+}
+
+static struct dmi_system_id hotplug_cpus_dmi_table[] __initdata = {
+        { hotplug_cpus_check, "WHICH VENDOR WHAT SYSTEM",
+                {       DMI_MATCH(DMI_BIOS_VENDOR, "WHAT VENDOR"),
+                        DMI_MATCH(DMI_BIOS_VERSION, "WHAT VER"),
+                }
+        },
+        { } /* NULL entry stops DMI scanning */
+};
+
 
 /*
  * cpu_possible_mask should be static, it cannot change as cpu's
@@ -1206,8 +1225,24 @@ __init void prefill_possible_map(void)
 	if (!num_processors)
 		num_processors = 1;
 
-	if (setup_possible_cpus == -1)
-		possible = num_processors + disabled_cpus;
+	if (setup_possible_cpus == -1) {
+		possible = num_processors;
+		/*
+		 * do we have better way to detect hotplug cpus?
+		 *
+		 * some systems that have disable cpus entries because same
+		 *  BIOS will support 2 sockets and 4 sockets and more at
+		 *  same time, BIOS just leave some disable entries, but
+		 *  those system do not support cpu hotplug. we don't need
+		 *  treat disabled_cpus as hotplug cpus.
+		 * so we can make nr_cpu_ids smaller and save more space
+		 *  (pcpu data allocations), and could make some systems run
+		 *  with logical flat instead of physical flat apic mode
+		 */
+		dmi_check_system(hotplug_cpus_dmi_table);
+		if (treat_disabled_cpus_as_hotplug)
+			possible += disabled_cpus;
+	}
 	else
 		possible = setup_possible_cpus;
 

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [RFC PATCH 1/4] use nr_cpus= to set nr_cpu_ids early
  2010-01-12  2:48 [RFC PATCH 1/4] use nr_cpus= to set nr_cpu_ids early Yinghai Lu
                   ` (2 preceding siblings ...)
  2010-01-12  2:48 ` [RFC PATCH 2/4] x86: use dmi check to treat disabled cpus as hotplug cpus Yinghai Lu
@ 2010-01-12  3:06 ` Linus Torvalds
  3 siblings, 0 replies; 24+ messages in thread
From: Linus Torvalds @ 2010-01-12  3:06 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Suresh Siddha, ananth@in.ibm.com, Ingo Molnar, Thomas Gleixner,
	H. Peter Anvin, Andrew Morton, linux-kernel



On Mon, 11 Jan 2010, Yinghai Lu wrote:
>
> on x86, before prefill_possible_map(), nr_cpu_ids will be NR_CPUS aka CONFIG_NR_CPUS
> 
> add nr_cpus= to set nr_cpu_ids. so we can simulate cpus <=8 on normal config.
> instead of change NR_CPUS directly.

Looks sane.

		Linus

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [RFC PATCH 2/4] x86: use dmi check to treat disabled cpus as hotplug cpus.
  2010-01-12  2:48 ` [RFC PATCH 2/4] x86: use dmi check to treat disabled cpus as hotplug cpus Yinghai Lu
@ 2010-01-12  3:13   ` Linus Torvalds
  2010-01-12  8:59     ` Yinghai Lu
                       ` (3 more replies)
  0 siblings, 4 replies; 24+ messages in thread
From: Linus Torvalds @ 2010-01-12  3:13 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Suresh Siddha, ananth@in.ibm.com, Ingo Molnar, Thomas Gleixner,
	H. Peter Anvin, Andrew Morton, linux-kernel



On Mon, 11 Jan 2010, Yinghai Lu wrote:
>
> some systems that have disable cpus entries because same
>   BIOS will support 2 sockets and 4 sockets and more at
>   same time, BIOS just leave some disable entries, but
>   those system do not support cpu hotplug. we don't need
>   treat disabled_cpus as hotplug cpus.
>
> so we can make nr_cpu_ids smaller and save more space
>   (pcpu data allocations), and could make some systems run
>   with logical flat instead of physical flat apic mode

.. but this one I detest.

We can't play games that depend on us always filling in some DMI table 
correctly. Things need to "just work".

So while 1/4 looks fine, 2/4 looks fundamentally unacceptable.

Is the flat APIC mode really so important?

I would suggest a few alternatives:

Truly static:

 - only use that flat apic mode when you _know_ that you absolutely will 
   never have more than 8 cpu's. Ie when CONFIG_NR_CPUS <= 8 (or, with 
   1/3, when nr_cpu_ids <= 8) and/or when <= 8 CPU's were detected, and 
   CPU hotplug is disabled entirely.

Slightly more intelligent:

 - Look at the ACPI socket count, and hey, if it says it might have more 
   sockets - whether they are really hotplug or not, don't use flat mode, 
   because we simply don't know. But do _not_ do some kind of DMI table to 
   say one way or the other.

And if it's _really_ important:

 - if flat mode is so important that you want to enable it whenever 
   possible, what about enabling/disabling it dynamically at CPU hotplug 
   time? That does sound _very_ painful, but it's still better than having 
   to maintain some list of all systems that can ever hot-plug. 

Hmm?

		Linus

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [RFC PATCH 3/4] x86: using logical flat for amd cpu too.
  2010-01-12  2:48 ` [RFC PATCH 3/4] x86: using logical flat for amd cpu too Yinghai Lu
@ 2010-01-12  3:16   ` Linus Torvalds
  2010-01-12  8:47     ` Yinghai Lu
  2010-01-12  8:27   ` Ananth N Mavinakayanahalli
  1 sibling, 1 reply; 24+ messages in thread
From: Linus Torvalds @ 2010-01-12  3:16 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Suresh Siddha, ananth@in.ibm.com, Ingo Molnar, Thomas Gleixner,
	H. Peter Anvin, Andrew Morton, linux-kernel



On Mon, 11 Jan 2010, Yinghai Lu wrote:
> 
> tested that amd support logical flat too when cpus num <= 8 and even
> bsp apic id > 8
> 
> so could remove vendor check...

At least this one makes code simpler.

What was the background for thinking that AMD didn't support the same APIC 
addressing models? If there really is some issue external to the CPU's 
themselves, whatever problem was attributed to AMD might be the same (or 
similar) problem that Ananth had.

		Linus

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [RFC PATCH 4/4] x86: according to nr_cpu_ids to decide if need to leave logical flat
  2010-01-12  2:48 ` [RFC PATCH 4/4] x86: according to nr_cpu_ids to decide if need to leave logical flat Yinghai Lu
@ 2010-01-12  3:20   ` Linus Torvalds
  2010-01-12  8:50     ` Yinghai Lu
  0 siblings, 1 reply; 24+ messages in thread
From: Linus Torvalds @ 2010-01-12  3:20 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Suresh Siddha, ananth@in.ibm.com, Ingo Molnar, Thomas Gleixner,
	H. Peter Anvin, Andrew Morton, linux-kernel



On Mon, 11 Jan 2010, Yinghai Lu wrote:
> +
> +void default_setup_apic_routing(void)

Good cleanup, makes x86-64 and x86-32 look similar. However, you should 
mark it __init too, I think, to match the current probe_64.c thing.

Also, what about the default_setup_apic_routing() call in 
arch/x86/kernel/apic/apic.c? Is that not ripe for unification too now? You 
only did the smpboot.c one, not the APIC_init_uniprocessor() one.

Hmm?

		Linus

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [RFC PATCH 3/4] x86: using logical flat for amd cpu too.
  2010-01-12  2:48 ` [RFC PATCH 3/4] x86: using logical flat for amd cpu too Yinghai Lu
  2010-01-12  3:16   ` Linus Torvalds
@ 2010-01-12  8:27   ` Ananth N Mavinakayanahalli
  2010-01-12 22:50     ` H. Peter Anvin
  1 sibling, 1 reply; 24+ messages in thread
From: Ananth N Mavinakayanahalli @ 2010-01-12  8:27 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Suresh Siddha, Linus Torvalds, Ingo Molnar, Thomas Gleixner,
	H. Peter Anvin, Andrew Morton, linux-kernel

On Mon, Jan 11, 2010 at 06:48:01PM -0800, Yinghai Lu wrote:

> not sure it works again, could be bios fix the irq routing dest ?

Nope, it doesn't. I applied this patchset.. no luck.

Ananth

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [RFC PATCH 3/4] x86: using logical flat for amd cpu too.
  2010-01-12  3:16   ` Linus Torvalds
@ 2010-01-12  8:47     ` Yinghai Lu
  0 siblings, 0 replies; 24+ messages in thread
From: Yinghai Lu @ 2010-01-12  8:47 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Suresh Siddha, ananth@in.ibm.com, Ingo Molnar, Thomas Gleixner,
	H. Peter Anvin, Andrew Morton, linux-kernel

On Mon, Jan 11, 2010 at 7:16 PM, Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
>
> On Mon, 11 Jan 2010, Yinghai Lu wrote:
>>
>> tested that amd support logical flat too when cpus num <= 8 and even
>> bsp apic id > 8
>>
>> so could remove vendor check...
>
> At least this one makes code simpler.
>
> What was the background for thinking that AMD didn't support the same APIC
> addressing models? If there really is some issue external to the CPU's
> themselves, whatever problem was attributed to AMD might be the same (or
> similar) problem that Ananth had.

not sure.

i remembered that bios fix one apic dest apic id in ioapic register.
before that that field
is set to 0 always.

YH

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [RFC PATCH 4/4] x86: according to nr_cpu_ids to decide if need to  leave logical flat
  2010-01-12  3:20   ` Linus Torvalds
@ 2010-01-12  8:50     ` Yinghai Lu
  0 siblings, 0 replies; 24+ messages in thread
From: Yinghai Lu @ 2010-01-12  8:50 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Suresh Siddha, ananth@in.ibm.com, Ingo Molnar, Thomas Gleixner,
	H. Peter Anvin, Andrew Morton, linux-kernel

On Mon, Jan 11, 2010 at 7:20 PM, Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
>
> On Mon, 11 Jan 2010, Yinghai Lu wrote:
>> +
>> +void default_setup_apic_routing(void)
>
> Good cleanup, makes x86-64 and x86-32 look similar. However, you should
> mark it __init too, I think, to match the current probe_64.c thing.
>
> Also, what about the default_setup_apic_routing() call in
> arch/x86/kernel/apic/apic.c? Is that not ripe for unification too now? You
> only did the smpboot.c one, not the APIC_init_uniprocessor() one.
>
that was intentionally. because one cpu, don't need to switch to bigsmp..

will make the change to that to make them consistent.

YH

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [RFC PATCH 2/4] x86: use dmi check to treat disabled cpus as  hotplug cpus.
  2010-01-12  3:13   ` Linus Torvalds
@ 2010-01-12  8:59     ` Yinghai Lu
  2010-01-12 15:19       ` Linus Torvalds
  2010-01-12  9:15     ` Yinghai Lu
                       ` (2 subsequent siblings)
  3 siblings, 1 reply; 24+ messages in thread
From: Yinghai Lu @ 2010-01-12  8:59 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Suresh Siddha, ananth@in.ibm.com, Ingo Molnar, Thomas Gleixner,
	H. Peter Anvin, Andrew Morton, linux-kernel

On Mon, Jan 11, 2010 at 7:13 PM, Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
>
> On Mon, 11 Jan 2010, Yinghai Lu wrote:
>>
>> some systems that have disable cpus entries because same
>>   BIOS will support 2 sockets and 4 sockets and more at
>>   same time, BIOS just leave some disable entries, but
>>   those system do not support cpu hotplug. we don't need
>>   treat disabled_cpus as hotplug cpus.
>>
>> so we can make nr_cpu_ids smaller and save more space
>>   (pcpu data allocations), and could make some systems run
>>   with logical flat instead of physical flat apic mode
>
> .. but this one I detest.
>
> We can't play games that depend on us always filling in some DMI table
> correctly. Things need to "just work".
>
> So while 1/4 looks fine, 2/4 looks fundamentally unacceptable.
>
> Is the flat APIC mode really so important?
>
> I would suggest a few alternatives:
>
> Truly static:
>
>  - only use that flat apic mode when you _know_ that you absolutely will
>   never have more than 8 cpu's. Ie when CONFIG_NR_CPUS <= 8 (or, with
>   1/3, when nr_cpu_ids <= 8) and/or when <= 8 CPU's were detected, and
>   CPU hotplug is disabled entirely.
that is this patch try to do. but can not find out the system that does support
real hw support hotadd cpus.
>
> Slightly more intelligent:
>
>  - Look at the ACPI socket count, and hey, if it says it might have more
>   sockets - whether they are really hotplug or not, don't use flat mode,
>   because we simply don't know. But do _not_ do some kind of DMI table to
>   say one way or the other.

that acpi could lie, for example, some system share one BIOS between 2
socket/4 socket/8 sockets
model. and BIOS could have bunch disabled entries in MADT. or MPTABLE.

>
> And if it's _really_ important:
>
>  - if flat mode is so important that you want to enable it whenever
>   possible, what about enabling/disabling it dynamically at CPU hotplug
>   time? That does sound _very_ painful, but it's still better than having
>   to maintain some list of all systems that can ever hot-plug.

interesting, could be done.
init_apic_ldr is called even for physical flat on 64 bit.
could change apic on fly.

YH

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [RFC PATCH 2/4] x86: use dmi check to treat disabled cpus as  hotplug cpus.
  2010-01-12  3:13   ` Linus Torvalds
  2010-01-12  8:59     ` Yinghai Lu
@ 2010-01-12  9:15     ` Yinghai Lu
  2010-01-12  9:46     ` Ingo Molnar
  2010-01-12 16:14     ` Valdis.Kletnieks
  3 siblings, 0 replies; 24+ messages in thread
From: Yinghai Lu @ 2010-01-12  9:15 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Suresh Siddha, ananth@in.ibm.com, Ingo Molnar, Thomas Gleixner,
	H. Peter Anvin, Andrew Morton, linux-kernel

On Mon, Jan 11, 2010 at 7:13 PM, Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
>
> On Mon, 11 Jan 2010, Yinghai Lu wrote:
>>
>> some systems that have disable cpus entries because same
>>   BIOS will support 2 sockets and 4 sockets and more at
>>   same time, BIOS just leave some disable entries, but
>>   those system do not support cpu hotplug. we don't need
>>   treat disabled_cpus as hotplug cpus.
>>
>> so we can make nr_cpu_ids smaller and save more space
>>   (pcpu data allocations), and could make some systems run
>>   with logical flat instead of physical flat apic mode
>
> .. but this one I detest.
>
> We can't play games that depend on us always filling in some DMI table
> correctly. Things need to "just work".

maybe could change to list that doesn't need to treat disabled cpus as
hotplug cpus?

YH

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [RFC PATCH 2/4] x86: use dmi check to treat disabled cpus as hotplug cpus.
  2010-01-12  3:13   ` Linus Torvalds
  2010-01-12  8:59     ` Yinghai Lu
  2010-01-12  9:15     ` Yinghai Lu
@ 2010-01-12  9:46     ` Ingo Molnar
  2010-01-12 16:14     ` Valdis.Kletnieks
  3 siblings, 0 replies; 24+ messages in thread
From: Ingo Molnar @ 2010-01-12  9:46 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Yinghai Lu, Suresh Siddha, ananth@in.ibm.com, Thomas Gleixner,
	H. Peter Anvin, Andrew Morton, linux-kernel


* Linus Torvalds <torvalds@linux-foundation.org> wrote:

> 
> 
> On Mon, 11 Jan 2010, Yinghai Lu wrote:
> >
> > some systems that have disable cpus entries because same
> >   BIOS will support 2 sockets and 4 sockets and more at
> >   same time, BIOS just leave some disable entries, but
> >   those system do not support cpu hotplug. we don't need
> >   treat disabled_cpus as hotplug cpus.
> >
> > so we can make nr_cpu_ids smaller and save more space
> >   (pcpu data allocations), and could make some systems run
> >   with logical flat instead of physical flat apic mode
> 
> .. but this one I detest.
> 
> We can't play games that depend on us always filling in some DMI table 
> correctly. Things need to "just work".
> 
> So while 1/4 looks fine, 2/4 looks fundamentally unacceptable.
> 
> Is the flat APIC mode really so important?

it's not important at all. When it's proven safe it's fine but it's clearly 
not unconditionally safe ...

> I would suggest a few alternatives:
> 
> Truly static:
> 
>  - only use that flat apic mode when you _know_ that you absolutely will 
>    never have more than 8 cpu's. Ie when CONFIG_NR_CPUS <= 8 (or, with 
>    1/3, when nr_cpu_ids <= 8) and/or when <= 8 CPU's were detected, and 
>    CPU hotplug is disabled entirely.
> 
> Slightly more intelligent:
> 
>  - Look at the ACPI socket count, and hey, if it says it might have more 
>    sockets - whether they are really hotplug or not, don't use flat mode, 
>    because we simply don't know. But do _not_ do some kind of DMI table to 
>    say one way or the other.
> 
> And if it's _really_ important:
> 
>  - if flat mode is so important that you want to enable it whenever 
>    possible, what about enabling/disabling it dynamically at CPU hotplug 
>    time? That does sound _very_ painful, but it's still better than having 
>    to maintain some list of all systems that can ever hot-plug. 
> 
> Hmm?

I'd go for #1. If the (modest) micro-performance advantages of flat delivery 
matter to a hardware vendor the system/BIOS can be built in a way to trigger 
the optimization. But even single socket systems are quickly running out of 
the space of 8 APIC ids so the relevance is dwindling ...

	Ingo

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [RFC PATCH 2/4] x86: use dmi check to treat disabled cpus as  hotplug cpus.
  2010-01-12  8:59     ` Yinghai Lu
@ 2010-01-12 15:19       ` Linus Torvalds
  2010-01-12 17:54         ` Suresh Siddha
  2010-01-12 18:13         ` Yinghai Lu
  0 siblings, 2 replies; 24+ messages in thread
From: Linus Torvalds @ 2010-01-12 15:19 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Suresh Siddha, ananth@in.ibm.com, Ingo Molnar, Thomas Gleixner,
	H. Peter Anvin, Andrew Morton, linux-kernel


On Tue, 12 Jan 2010, Yinghai Lu wrote:
> >
> > Slightly more intelligent:
> >
> >  - Look at the ACPI socket count, and hey, if it says it might have more
> >   sockets - whether they are really hotplug or not, don't use flat mode,
> >   because we simply don't know. But do _not_ do some kind of DMI table to
> >   say one way or the other.
> 
> that acpi could lie, for example, some system share one BIOS between 2
> socket/4 socket/8 sockets
> model. and BIOS could have bunch disabled entries in MADT. or MPTABLE.

That's fine. So it would mean that sometimes we'd use non-flat mode even 
if we strictly didn't need to (because we _think_ that there could be four 
sockets even though there is only one, and three are disabled). But things 
would still work without any special cases.

> > And if it's _really_ important:
> >
> >  - if flat mode is so important that you want to enable it whenever
> >   possible, what about enabling/disabling it dynamically at CPU hotplug
> >   time? That does sound _very_ painful, but it's still better than having
> >   to maintain some list of all systems that can ever hot-plug.
> 
> interesting, could be done.
> init_apic_ldr is called even for physical flat on 64 bit.
> could change apic on fly.

Quite frankly, while I suggested it as an option, I really suspect it's 
too much complexity for very little real gain.

Say that you have only four cores, but the kernel decided that it can't 
use logical flat APIC mode because it sees three disabled sockets and 
thinks "ok, we may end up with a total of 16 cores if those sockets are 
hotplugged". Is that such a disaster?

Realistically, do we really care? Do you have performance numbers that say 
that logical flat mode is so important that we really _really_ want to use 
it, even at the cost of nasty run-time complexity with having to 
re-program the APIC setup entirely when going from 8->9 CPU's?

			Linus

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [RFC PATCH 2/4] x86: use dmi check to treat disabled cpus as hotplug cpus.
  2010-01-12  3:13   ` Linus Torvalds
                       ` (2 preceding siblings ...)
  2010-01-12  9:46     ` Ingo Molnar
@ 2010-01-12 16:14     ` Valdis.Kletnieks
  2010-01-12 16:26       ` Linus Torvalds
  3 siblings, 1 reply; 24+ messages in thread
From: Valdis.Kletnieks @ 2010-01-12 16:14 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Yinghai Lu, Suresh Siddha, ananth@in.ibm.com, Ingo Molnar,
	Thomas Gleixner, H. Peter Anvin, Andrew Morton, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 699 bytes --]

On Mon, 11 Jan 2010 19:13:32 PST, Linus Torvalds said:

>  - only use that flat apic mode when you _know_ that you absolutely will 
>    never have more than 8 cpu's. Ie when CONFIG_NR_CPUS <= 8 (or, with 
>    1/3, when nr_cpu_ids <= 8) and/or when <= 8 CPU's were detected, and 
>    CPU hotplug is disabled entirely.

OK, I'll bite - how do you build an X86-64 kernel that doesn't have
CONFIG_HOTPLUG_CPU selected?  Try as I might, even if I have PM_SLEEP=n,
PM_SLEEP_SMP insists on being set, and then selecting HOTPLUG_SMP.  For the
record, I do *not* need/desire S2R, S2D, 'suspend', or similar functionality.

Is there some subtle reason why PM_SLEEP_SMP has to be on even without PM_SLEEP?


[-- Attachment #2: Type: application/pgp-signature, Size: 227 bytes --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [RFC PATCH 2/4] x86: use dmi check to treat disabled cpus as hotplug cpus.
  2010-01-12 16:14     ` Valdis.Kletnieks
@ 2010-01-12 16:26       ` Linus Torvalds
  2010-01-12 17:17         ` Valdis.Kletnieks
  0 siblings, 1 reply; 24+ messages in thread
From: Linus Torvalds @ 2010-01-12 16:26 UTC (permalink / raw)
  To: Valdis.Kletnieks
  Cc: Yinghai Lu, Suresh Siddha, ananth@in.ibm.com, Ingo Molnar,
	Thomas Gleixner, H. Peter Anvin, Andrew Morton, linux-kernel



On Tue, 12 Jan 2010, Valdis.Kletnieks@vt.edu wrote:
> 
> OK, I'll bite - how do you build an X86-64 kernel that doesn't have
> CONFIG_HOTPLUG_CPU selected?  Try as I might, even if I have PM_SLEEP=n,
> PM_SLEEP_SMP insists on being set, and then selecting HOTPLUG_SMP.

If that is true, then there is some bug in the kconfig parser. 
PM_SLEEP_SMP depends on PM_SLEEP, so with PM_SLEEP=n it should never be 
set.

That said, regardless of any such problems, I do think that we should 
think about splitting up HOTPLUG_CPU into two config options: one that 
allows CPU's to be put to sleep (which is common, and needed for any 
suspend/hibernate support), and one that actually has support for actual 
physical hotplugging.

				Linus

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [RFC PATCH 2/4] x86: use dmi check to treat disabled cpus as hotplug cpus.
  2010-01-12 16:26       ` Linus Torvalds
@ 2010-01-12 17:17         ` Valdis.Kletnieks
  0 siblings, 0 replies; 24+ messages in thread
From: Valdis.Kletnieks @ 2010-01-12 17:17 UTC (permalink / raw)
  To: Linus Torvalds, Roman Zippel, linux-kbuild
  Cc: Yinghai Lu, Suresh Siddha, ananth@in.ibm.com, Ingo Molnar,
	Thomas Gleixner, H. Peter Anvin, Andrew Morton, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1497 bytes --]

On Tue, 12 Jan 2010 08:26:22 PST, Linus Torvalds said:
> 
> 
> On Tue, 12 Jan 2010, Valdis.Kletnieks@vt.edu wrote:
> > 
> > OK, I'll bite - how do you build an X86-64 kernel that doesn't have
> > CONFIG_HOTPLUG_CPU selected?  Try as I might, even if I have PM_SLEEP=n,
> > PM_SLEEP_SMP insists on being set, and then selecting HOTPLUG_SMP.
> 
> If that is true, then there is some bug in the kconfig parser. 
> PM_SLEEP_SMP depends on PM_SLEEP, so with PM_SLEEP=n it should never be 
> set.

So now I go back and check, and it *was* possible to get a PM_SLEEP_SMP=n.
Apparently in my previous attempts, I tried turning stuff off and PM_SLEEP_SMP
stayed on just like this time as long as I was puttering around in menuconfig.
But turning it off, *exiting menuconfig*, and then re-starting menuconfig made
it work.  Weird.  It seems like if something does a 'select' on something
that isn't a visible symbol, and the symbol gets toggled, the selects
aren't redriven - and since it's not a visible symbol, you can't toggle it
yourself. But saving and restarting menuconfig forces a refresh and things
start acting right. Adding Roman and the kbuild list to the cc:

And turning off PM_SLEEP and HOTPLUG_CPU ended up saving a chunk of memory:

Before:
% size vmlinux
   text    data     bss     dec     hex filename
8964445 1377200 6094320 16435965         facafd vmlinux

After:
% size vmlinux
   text    data     bss     dec     hex filename
8889523 1378768 6089648 16357939         f99a33 vmlinux


[-- Attachment #2: Type: application/pgp-signature, Size: 227 bytes --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [RFC PATCH 2/4] x86: use dmi check to treat disabled cpus as hotplug cpus.
  2010-01-12 15:19       ` Linus Torvalds
@ 2010-01-12 17:54         ` Suresh Siddha
  2010-01-12 18:13         ` Yinghai Lu
  1 sibling, 0 replies; 24+ messages in thread
From: Suresh Siddha @ 2010-01-12 17:54 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Yinghai Lu, ananth@in.ibm.com, Ingo Molnar, Thomas Gleixner,
	H. Peter Anvin, Andrew Morton, linux-kernel@vger.kernel.org

On Tue, 2010-01-12 at 07:19 -0800, Linus Torvalds wrote:
> On Tue, 12 Jan 2010, Yinghai Lu wrote:
> > > And if it's _really_ important:
> > >
> > >  - if flat mode is so important that you want to enable it whenever
> > >   possible, what about enabling/disabling it dynamically at CPU hotplug
> > >   time? That does sound _very_ painful, but it's still better than having
> > >   to maintain some list of all systems that can ever hot-plug.
> > 
> > interesting, could be done.
> > init_apic_ldr is called even for physical flat on 64 bit.
> > could change apic on fly.
> 
> Quite frankly, while I suggested it as an option, I really suspect it's 
> too much complexity for very little real gain.

I agree.

> Say that you have only four cores, but the kernel decided that it can't 
> use logical flat APIC mode because it sees three disabled sockets and 
> thinks "ok, we may end up with a total of 16 cores if those sockets are 
> hotplugged". Is that such a disaster?
> 
> Realistically, do we really care? Do you have performance numbers that say 
> that logical flat mode is so important that we really _really_ want to use 
> it, 

We had some customers in the past who wanted to use logical flat mode
when there are only 8 logical cpus mainly because they can use chipset
based interrupt routing. I think in one case, they wanted to use HW's
round-robin algorithm so that the interrupt load was uniformly
distributed to all the logical cpu's etc. This is probably fine if all
the logical cpu's are in the same socket (/under same memory
controller). But this might be a bad idea if those 8 logical cpu's are
spread across different sockets etc.

Also, sending IPI's becomes easier as we can target multiple logical
cpu's in the logical IPI destination mask etc.

> even at the cost of nasty run-time complexity with having to 
> re-program the APIC setup entirely when going from 8->9 CPU's?

No. I don't think it is worth it. As we have more and more cores, flat
mode usage will reduce and perhaps will remain mainly for
netbooks/laptops (before we have > 8 logical cpus in that space
aswell...). Also future generations will start supporting x2apic, where
we can use x2apic cluster mode.

For now, I think we should just make sure that for smaller HW configs
like laptops/desktops we should use flat mode when we have no more than
8 logical cpu's and use physical mode when there is a potential of
supporting more than 8 cpu's.

thanks,
suresh


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [RFC PATCH 2/4] x86: use dmi check to treat disabled cpus as  hotplug cpus.
  2010-01-12 15:19       ` Linus Torvalds
  2010-01-12 17:54         ` Suresh Siddha
@ 2010-01-12 18:13         ` Yinghai Lu
  2010-01-12 18:24           ` Suresh Siddha
  1 sibling, 1 reply; 24+ messages in thread
From: Yinghai Lu @ 2010-01-12 18:13 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Suresh Siddha, ananth@in.ibm.com, Ingo Molnar, Thomas Gleixner,
	H. Peter Anvin, Andrew Morton, linux-kernel

On Tue, Jan 12, 2010 at 7:19 AM, Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
> On Tue, 12 Jan 2010, Yinghai Lu wrote:
>> >
>> > Slightly more intelligent:
>> >
>> >  - Look at the ACPI socket count, and hey, if it says it might have more
>> >   sockets - whether they are really hotplug or not, don't use flat mode,
>> >   because we simply don't know. But do _not_ do some kind of DMI table to
>> >   say one way or the other.
>>
>> that acpi could lie, for example, some system share one BIOS between 2
>> socket/4 socket/8 sockets
>> model. and BIOS could have bunch disabled entries in MADT. or MPTABLE.
>
> That's fine. So it would mean that sometimes we'd use non-flat mode even
> if we strictly didn't need to (because we _think_ that there could be four
> sockets even though there is only one, and three are disabled). But things
> would still work without any special cases.
>
>> > And if it's _really_ important:
>> >
>> >  - if flat mode is so important that you want to enable it whenever
>> >   possible, what about enabling/disabling it dynamically at CPU hotplug
>> >   time? That does sound _very_ painful, but it's still better than having
>> >   to maintain some list of all systems that can ever hot-plug.
>>
>> interesting, could be done.
>> init_apic_ldr is called even for physical flat on 64 bit.
>> could change apic on fly.
>
> Quite frankly, while I suggested it as an option, I really suspect it's
> too much complexity for very little real gain.
>
> Say that you have only four cores, but the kernel decided that it can't
> use logical flat APIC mode because it sees three disabled sockets and
> thinks "ok, we may end up with a total of 16 cores if those sockets are
> hotplugged". Is that such a disaster?
>
> Realistically, do we really care? Do you have performance numbers that say
> that logical flat mode is so important that we really _really_ want to use
> it, even at the cost of nasty run-time complexity with having to
> re-program the APIC setup entirely when going from 8->9 CPU's?

ok let stay with option 1.

and would like to use DMI to blacklist those systems that do need treat disabled
cpus MADT as hotplug cpus.

YH

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [RFC PATCH 2/4] x86: use dmi check to treat disabled cpus as hotplug cpus.
  2010-01-12 18:13         ` Yinghai Lu
@ 2010-01-12 18:24           ` Suresh Siddha
  2010-01-12 19:19             ` Yinghai Lu
  0 siblings, 1 reply; 24+ messages in thread
From: Suresh Siddha @ 2010-01-12 18:24 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Linus Torvalds, ananth@in.ibm.com, Ingo Molnar, Thomas Gleixner,
	H. Peter Anvin, Andrew Morton, linux-kernel@vger.kernel.org

On Tue, 2010-01-12 at 10:13 -0800, Yinghai Lu wrote:
> ok let stay with option 1.
>
> and would like to use DMI to blacklist those systems that do need treat disabled
> cpus MADT as hotplug cpus.

Yinghai, I don't think we have to worry about disabled cpu's etc using
DMI etc. If we really come across such a system, they can use ACPI FADT
flags (ACPI_FADT_APIC_PHYSICAL) to specify that they need to use
physical mode.

thanks,
suresh


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [RFC PATCH 2/4] x86: use dmi check to treat disabled cpus as  hotplug cpus.
  2010-01-12 18:24           ` Suresh Siddha
@ 2010-01-12 19:19             ` Yinghai Lu
  0 siblings, 0 replies; 24+ messages in thread
From: Yinghai Lu @ 2010-01-12 19:19 UTC (permalink / raw)
  To: Suresh Siddha
  Cc: Linus Torvalds, ananth@in.ibm.com, Ingo Molnar, Thomas Gleixner,
	H. Peter Anvin, Andrew Morton, linux-kernel@vger.kernel.org

On Tue, Jan 12, 2010 at 10:24 AM, Suresh Siddha
<suresh.b.siddha@intel.com> wrote:
> On Tue, 2010-01-12 at 10:13 -0800, Yinghai Lu wrote:
>> ok let stay with option 1.
>>
>> and would like to use DMI to blacklist those systems that do need treat disabled
>> cpus MADT as hotplug cpus.
>
> Yinghai, I don't think we have to worry about disabled cpu's etc using
> DMI etc. If we really come across such a system, they can use ACPI FADT
> flags (ACPI_FADT_APIC_PHYSICAL) to specify that they need to use
> physical mode.

i want other way.

1. after use nr_cpu_ids instead of num_processors to decide if we need
switch to physflat.
some systems that disabled cpus entries that will use physflat even
those system doesn't support
CPU hotplug and could use logical flat.
2. those systems are several model (2 sockets or 4 sockets or 8
sockets) but share one BIOS, and BIOS guys are
 too lazy to remove the disabled entries.
3. so I want to use DMI list to state that those system doesn't need
to treat those disabled cpu as hot plug cpu.
   then we could use logical flat with them.

YH

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [RFC PATCH 3/4] x86: using logical flat for amd cpu too.
  2010-01-12  8:27   ` Ananth N Mavinakayanahalli
@ 2010-01-12 22:50     ` H. Peter Anvin
  2010-01-13  4:53       ` Ananth N Mavinakayanahalli
  0 siblings, 1 reply; 24+ messages in thread
From: H. Peter Anvin @ 2010-01-12 22:50 UTC (permalink / raw)
  To: ananth
  Cc: Yinghai Lu, Suresh Siddha, Linus Torvalds, Ingo Molnar,
	Thomas Gleixner, Andrew Morton, linux-kernel

On 01/12/2010 12:27 AM, Ananth N Mavinakayanahalli wrote:
> On Mon, Jan 11, 2010 at 06:48:01PM -0800, Yinghai Lu wrote:
> 
>> not sure it works again, could be bios fix the irq routing dest ?
> 
> Nope, it doesn't. I applied this patchset.. no luck.

Okay, I have been monitoring this discussion, but I would like to make
sure I have understood all the relevant details:

1. The original patch is already reverted in Linus' tree.

2. The Intel/AMD thing is likely to be a red herring; specifically it's
   a proxy for some other platform difference.

3. There is at least one platform ("an IBM platform with two quad-core
   Xeon X7350 CPUs" -- which platform?) for which the logical
   destination mode fails even though it should have been supported.
   Currently there is no known workaround for this platform other than
   forcing physical mode on this machine, which is what the current
   code does, for valid or invalid reasons.

It would be good to clean up this code for .34, and I would really like
to know *which* platform this is; furthermore, Ananth, if you could send
as much technical information on this platform as possible including DMI
and lspci dumps I would appreciate it.

Furthermore, is this a production or preproduction system?

	-hpa

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [RFC PATCH 3/4] x86: using logical flat for amd cpu too.
  2010-01-12 22:50     ` H. Peter Anvin
@ 2010-01-13  4:53       ` Ananth N Mavinakayanahalli
  0 siblings, 0 replies; 24+ messages in thread
From: Ananth N Mavinakayanahalli @ 2010-01-13  4:53 UTC (permalink / raw)
  To: H. Peter Anvin
  Cc: Yinghai Lu, Suresh Siddha, Linus Torvalds, Ingo Molnar,
	Thomas Gleixner, Andrew Morton, linux-kernel, lcm

On Tue, Jan 12, 2010 at 02:50:58PM -0800, H. Peter Anvin wrote:
> On 01/12/2010 12:27 AM, Ananth N Mavinakayanahalli wrote:
> > On Mon, Jan 11, 2010 at 06:48:01PM -0800, Yinghai Lu wrote:
> > 
> >> not sure it works again, could be bios fix the irq routing dest ?
> > 
> > Nope, it doesn't. I applied this patchset.. no luck.

Hi Peter,

> Okay, I have been monitoring this discussion, but I would like to make
> sure I have understood all the relevant details:
> 
> 1. The original patch is already reverted in Linus' tree.
> 
> 2. The Intel/AMD thing is likely to be a red herring; specifically it's
>    a proxy for some other platform difference.
> 
> 3. There is at least one platform ("an IBM platform with two quad-core
>    Xeon X7350 CPUs" -- which platform?) for which the logical
>    destination mode fails even though it should have been supported.
>    Currently there is no known workaround for this platform other than
>    forcing physical mode on this machine, which is what the current
>    code does, for valid or invalid reasons.

The machine in question is has 2 quad-core Tigerton processors, with a
provision to upgrade to 4 processors.
 
> It would be good to clean up this code for .34, and I would really like
> to know *which* platform this is; furthermore, Ananth, if you could send
> as much technical information on this platform as possible including DMI
> and lspci dumps I would appreciate it.

As Suresh cited in another email,
http://www.redbooks.ibm.com/redbooks/pdfs/sg247630.pdf has more
information about the system. The one I have access to is a 7141-4RA.

[1] is the lspci output.
[2] is the dmidecode output.
 
Chris McDermott, on cc should be able to provide more information about
the platform, etc.

> Furthermore, is this a production or preproduction system?

This is a System x3850 M2 and is Generally Available.

Ananth

--------
[1] lspci output:

00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 01) (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
	Memory behind bridge: f2000000-f5ffffff
	Capabilities: [40] Express Root Port (Slot-) IRQ 0
	Capabilities: [80] Message Signalled Interrupts: 64bit- Queue=0/0 Enable+
	Capabilities: [90] #0d [0000]
	Capabilities: [a0] Power Management version 2
	Capabilities: [100] Virtual Channel
	Capabilities: [180] Unknown (5)

00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 (rev 01) (prog-if 00 [UHCI])
	Subsystem: IBM Unknown device 0381
	Flags: bus master, medium devsel, latency 0, IRQ 23
	I/O ports at 3000 [size=32]

00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 01) (prog-if 00 [UHCI])
	Subsystem: IBM Unknown device 0381
	Flags: bus master, medium devsel, latency 0, IRQ 17
	I/O ports at 3100 [size=32]

00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 01) (prog-if 00 [UHCI])
	Subsystem: IBM Unknown device 0381
	Flags: bus master, medium devsel, latency 0, IRQ 18
	I/O ports at 3200 [size=32]

00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 (rev 01) (prog-if 00 [UHCI])
	Subsystem: IBM Unknown device 0381
	Flags: bus master, medium devsel, latency 0, IRQ 19
	I/O ports at 3300 [size=32]

00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 01) (prog-if 20 [EHCI])
	Subsystem: IBM Unknown device 0381
	Flags: bus master, medium devsel, latency 0, IRQ 23
	Memory at f6100000 (32-bit, non-prefetchable) [size=1K]
	Capabilities: [50] Power Management version 2
	Capabilities: [58] Debug port

00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev e1) (prog-if 01 [Subtractive decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=32
	I/O behind bridge: 00002000-00002fff
	Memory behind bridge: f6000000-f60fffff
	Prefetchable memory behind bridge: 00000000e8000000-00000000eff00000
	Capabilities: [50] #0d [0000]

00:1f.0 ISA bridge: Intel Corporation 82801GB/GR (ICH7 Family) LPC Interface Bridge (rev 01)
	Subsystem: IBM Unknown device 0381
	Flags: bus master, medium devsel, latency 0
	Capabilities: [e0] Vendor Specific Information

00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 01) (prog-if 8a [Master SecP PriP])
	Subsystem: IBM Unknown device 0381
	Flags: bus master, medium devsel, latency 0
	I/O ports at 01f0 [size=8]
	I/O ports at 03f4 [size=1]
	I/O ports at 0170 [size=8]
	I/O ports at 0374 [size=1]
	I/O ports at 0700 [size=16]

01:00.0 VGA compatible controller: ATI Technologies Inc ES1000 (rev 02) (prog-if 00 [VGA controller])
	Subsystem: IBM Unknown device 0319
	Flags: bus master, stepping, medium devsel, latency 240, IRQ 3
	Memory at e8000000 (32-bit, prefetchable) [size=128M]
	I/O ports at 2000 [size=256]
	Memory at f6020000 (32-bit, non-prefetchable) [size=64K]
	[virtual] Expansion ROM at f6000000 [disabled] [size=128K]
	Capabilities: [50] Power Management version 2

02:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 01)
	Subsystem: IBM Unknown device 037c
	Flags: bus master, fast devsel, latency 0, IRQ 102
	Memory at f2000000 (64-bit, non-prefetchable) [size=32M]
	Capabilities: [48] Power Management version 3
	Capabilities: [50] Vital Product Data
	Capabilities: [58] Message Signalled Interrupts: 64bit+ Queue=0/3 Enable+
	Capabilities: [a0] MSI-X: Enable- Mask- TabSize=8
	Capabilities: [ac] Express Endpoint IRQ 0
	Capabilities: [100] Device Serial Number b4-66-36-fe-ff-64-1a-00
	Capabilities: [110] Advanced Error Reporting
	Capabilities: [150] Power Budgeting
	Capabilities: [160] Virtual Channel

02:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 01)
	Subsystem: IBM Unknown device 037c
	Flags: bus master, fast devsel, latency 0, IRQ 17
	Memory at f4000000 (64-bit, non-prefetchable) [size=32M]
	Capabilities: [48] Power Management version 3
	Capabilities: [50] Vital Product Data
	Capabilities: [58] Message Signalled Interrupts: 64bit+ Queue=0/3 Enable-
	Capabilities: [a0] MSI-X: Enable- Mask- TabSize=8
	Capabilities: [ac] Express Endpoint IRQ 0
	Capabilities: [100] Device Serial Number b6-66-36-fe-ff-64-1a-00
	Capabilities: [110] Advanced Error Reporting
	Capabilities: [150] Power Budgeting
	Capabilities: [160] Virtual Channel

03:00.0 PCI bridge: IBM CalIOC2 PCI-E Root Port (rev 01) (prog-if 01 [Subtractive decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=03, secondary=04, subordinate=04, sec-latency=0
	Prefetchable memory behind bridge: 00000000e0000000-00000000e0000000
	Capabilities: [40] Power Management version 3
	Capabilities: [80] Express Root Port (Slot-) IRQ 0
	Capabilities: [100] Advanced Error Reporting

04:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 1078 (rev 03)
	Subsystem: IBM MegaRAID SAS PCI Express ROMB
	Flags: bus master, fast devsel, latency 0, IRQ 46
	Memory at f6200000 (64-bit, non-prefetchable) [size=256K]
	I/O ports at 3400 [size=256]
	Memory at f6240000 (64-bit, non-prefetchable) [size=256K]
	[virtual] Expansion ROM at e0000000 [disabled] [size=128K]
	Capabilities: [b0] Express Endpoint IRQ 0
	Capabilities: [c4] Message Signalled Interrupts: 64bit+ Queue=0/2 Enable-
	Capabilities: [d4] MSI-X: Enable- Mask- TabSize=4
	Capabilities: [e0] Power Management version 2
	Capabilities: [ec] Vital Product Data
	Capabilities: [100] Power Budgeting

05:00.0 PCI bridge: IBM CalIOC2 PCI-E Root Port (rev 01) (prog-if 01 [Subtractive decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=05, secondary=06, subordinate=0a, sec-latency=0
	Capabilities: [40] Power Management version 3
	Capabilities: [80] Express Root Port (Slot+) IRQ 0
	Capabilities: [100] Advanced Error Reporting

0b:00.0 PCI bridge: IBM CalIOC2 PCI-E Root Port (rev 01) (prog-if 01 [Subtractive decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=0b, secondary=0c, subordinate=10, sec-latency=0
	I/O behind bridge: 00001000-00001fff
	Memory behind bridge: e0200000-e03fffff
	Prefetchable memory behind bridge: 00000000e0400000-00000000e0500000
	Capabilities: [40] Power Management version 3
	Capabilities: [80] Express Root Port (Slot+) IRQ 0
	Capabilities: [100] Advanced Error Reporting

11:00.0 PCI bridge: IBM CalIOC2 PCI-E Root Port (rev 01) (prog-if 01 [Subtractive decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=11, secondary=12, subordinate=16, sec-latency=0
	I/O behind bridge: 00004000-00004fff
	Memory behind bridge: e0600000-e07fffff
	Prefetchable memory behind bridge: 00000000e0800000-00000000e0900000
	Capabilities: [40] Power Management version 3
	Capabilities: [80] Express Root Port (Slot+) IRQ 0
	Capabilities: [100] Advanced Error Reporting

17:00.0 PCI bridge: IBM CalIOC2 PCI-E Root Port (rev 01) (prog-if 01 [Subtractive decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=17, secondary=18, subordinate=1c, sec-latency=0
	Capabilities: [40] Power Management version 3
	Capabilities: [80] Express Root Port (Slot+) IRQ 0
	Capabilities: [100] Advanced Error Reporting

1d:00.0 PCI bridge: IBM CalIOC2 PCI-E Root Port (rev 01) (prog-if 01 [Subtractive decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=1d, secondary=1e, subordinate=22, sec-latency=0
	Prefetchable memory behind bridge: 00000000e0100000-00000000e0100000
	Capabilities: [40] Power Management version 3
	Capabilities: [80] Express Root Port (Slot+) IRQ 0
	Capabilities: [100] Advanced Error Reporting

1e:00.0 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (rev 06)
	Subsystem: Intel Corporation PRO/1000 PT Dual Port Server Adapter
	Flags: bus master, fast devsel, latency 0, IRQ 100
	Memory at f6320000 (32-bit, non-prefetchable) [size=128K]
	Memory at f6340000 (32-bit, non-prefetchable) [size=128K]
	I/O ports at 3500 [size=32]
	[virtual] Expansion ROM at e0100000 [disabled] [size=128K]
	Capabilities: [c8] Power Management version 2
	Capabilities: [d0] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable+
	Capabilities: [e0] Express Endpoint IRQ 0
	Capabilities: [100] Advanced Error Reporting
	Capabilities: [140] Device Serial Number cc-3b-73-ff-ff-17-15-00

1e:00.1 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (rev 06)
	Subsystem: Intel Corporation PRO/1000 PT Dual Port Server Adapter
	Flags: bus master, fast devsel, latency 0, IRQ 101
	Memory at f6360000 (32-bit, non-prefetchable) [size=128K]
	Memory at f6380000 (32-bit, non-prefetchable) [size=128K]
	I/O ports at 3600 [size=32]
	Capabilities: [c8] Power Management version 2
	Capabilities: [d0] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable+
	Capabilities: [e0] Express Endpoint IRQ 0
	Capabilities: [100] Advanced Error Reporting
	Capabilities: [140] Device Serial Number cc-3b-73-ff-ff-17-15-00

23:00.0 PCI bridge: IBM CalIOC2 PCI-E Root Port (rev 01) (prog-if 01 [Subtractive decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=23, secondary=24, subordinate=28, sec-latency=0
	Capabilities: [40] Power Management version 3
	Capabilities: [80] Express Root Port (Slot+) IRQ 0
	Capabilities: [100] Advanced Error Reporting

29:00.0 PCI bridge: IBM CalIOC2 PCI-E Root Port (rev 01) (prog-if 01 [Subtractive decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=29, secondary=2a, subordinate=2e, sec-latency=0
	Capabilities: [40] Power Management version 3
	Capabilities: [80] Express Root Port (Slot+) IRQ 0
	Capabilities: [100] Advanced Error Reporting


--------
[2] dmidecode output:

# dmidecode 2.9
SMBIOS 2.4 present.
82 structures occupying 4995 bytes.
Table at 0xBFF57B40.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
	Vendor: IBM
	Version: -[A3E148AUS-1.07]-
	Release Date: 11/05/2008
	Address: 0xF01E0
	Runtime Size: 65056 bytes
	ROM Size: 8192 kB
	Characteristics:
		PCI is supported
		BIOS is upgradeable
		BIOS shadowing is allowed
		Boot from CD is supported
		Selectable boot is supported
		Japanese floppy for NEC 9800 1.2 MB is supported (int 13h)
		Japanese floppy for Toshiba 1.2 MB is supported (int 13h)
		5.25"/360 KB floppy services are supported (int 13h)
		5.25"/1.2 MB floppy services are supported (int 13h)
		3.5"/720 KB floppy services are supported (int 13h)
		3.5"/2.88 MB floppy services are supported (int 13h)
		Print screen service is supported (int 5h)
		8042 keyboard services are supported (int 9h)
		Serial services are supported (int 14h)
		Printer services are supported (int 17h)
		CGA/mono video services are supported (int 10h)
		ACPI is supported
		USB legacy is supported
		I2O boot is supported
		LS-120 boot is supported
		Function key-initiated network boot is supported
		Targeted content distribution is supported
	BIOS Revision: 1.7

Handle 0x0001, DMI type 1, 27 bytes
System Information
	Manufacturer: IBM
	Product Name: IBM 3850 M2 / x3950 M2 -[71414RA]-
	Version: Not Specified
	Serial Number: 99B0888
	UUID: 40AA2C62-7B67-B601-759D-001A643666B4
	Wake-up Type: Power Switch
	SKU Number: Not Specified
	Family: Not Specified

Handle 0x0002, DMI type 2, 95 bytes
Base Board Information
	Manufacturer: IBM
	Product Name: Node1 Processor Card
	Version: Not Specified
	Serial Number: Not Specified
	Asset Tag: Not Specified
	Features:
		Board is a hosting board
		Board is replaceable
	Location In Chassis: Node1, Bottom Front
	Chassis Handle: 0x003A
	Type: Processor Module
	Contained Object Handles: 20
		0x0042
		0x0043
		0x0044
		0x0045
		0x0046
		0x0047
		0x0048
		0x0049
		0x004A
		0x004B
		0x004C
		0x004D
		0x00A2
		0x00A3
		0x00A4
		0x00A5
		0x00C2
		0x00C3
		0x00C4
		0x0274

Handle 0x0003, DMI type 2, 95 bytes
Base Board Information
	Manufacturer: IBM
	Product Name: Node1 PCI I/O Planar
	Version: Not Specified
	Serial Number: Not Specified
	Asset Tag: Not Specified
	Features:
		Board is removable
		Board is replaceable
	Location In Chassis: Node1, Rear Center
	Chassis Handle: 0x003A
	Type: I/O Module
	Contained Object Handles: 19
		0x00C5
		0x00C6
		0x00C7
		0x00C8
		0x00C9
		0x00CA
		0x00CB
		0x00CC
		0x00CD
		0x00CE
		0x00CF
		0x012B
		0x012C
		0x012D
		0x012E
		0x012F
		0x0130
		0x0131
		0x0163

Handle 0x0005, DMI type 2, 31 bytes
Base Board Information
	Manufacturer: IBM
	Product Name: Node1 Memory Card1
	Version: Not Specified
	Serial Number: Not Specified
	Asset Tag: Not Specified
	Features:
		Board requires at least one daughter board
		Board is removable
		Board is replaceable
		Board is hot swappable
	Location In Chassis: Node1, Rear Left 1st From Top
	Chassis Handle: 0x003A
	Type: Memory Module
	Contained Object Handles: 8
		0x0172
		0x0173
		0x0174
		0x0175
		0x0176
		0x0177
		0x0178
		0x0179

Handle 0x0006, DMI type 2, 31 bytes
Base Board Information
	Manufacturer: IBM
	Product Name: Node1 Memory Card2
	Version: Not Specified
	Serial Number: Not Specified
	Asset Tag: Not Specified
	Features:
		Board requires at least one daughter board
		Board is removable
		Board is replaceable
		Board is hot swappable
	Location In Chassis: Node1, Rear Left 2nd From Top
	Chassis Handle: 0x003A
	Type: Memory Module
	Contained Object Handles: 8
		0x017A
		0x017B
		0x017C
		0x017D
		0x017E
		0x017F
		0x0180
		0x0181

Handle 0x0007, DMI type 2, 31 bytes
Base Board Information
	Manufacturer: IBM
	Product Name: Node1 Memory Card3
	Version: Not Specified
	Serial Number: Not Specified
	Asset Tag: Not Specified
	Features:
		Board requires at least one daughter board
		Board is removable
		Board is replaceable
		Board is hot swappable
	Location In Chassis: Node1, Rear Left 3rd From Top
	Chassis Handle: 0x003A
	Type: Memory Module
	Contained Object Handles: 8
		0x0182
		0x0183
		0x0184
		0x0185
		0x0186
		0x0187
		0x0188
		0x0189

Handle 0x0008, DMI type 2, 31 bytes
Base Board Information
	Manufacturer: IBM
	Product Name: Node1 Memory Card4
	Version: Not Specified
	Serial Number: Not Specified
	Asset Tag: Not Specified
	Features:
		Board requires at least one daughter board
		Board is removable
		Board is replaceable
		Board is hot swappable
	Location In Chassis: Node1, Rear Left 4th From Top
	Chassis Handle: 0x003A
	Type: Memory Module
	Contained Object Handles: 8
		0x018A
		0x018B
		0x018C
		0x018D
		0x018E
		0x018F
		0x0190
		0x0191

Handle 0x003A, DMI type 3, 13 bytes
Chassis Information
	Manufacturer: IBM
	Type: Main Server Chassis
	Lock: Not Present
	Version: Not Specified
	Serial Number: Not Specified
	Asset Tag:                                 
	Boot-up State: Safe
	Power Supply State: Unknown
	Thermal State: Unknown
	Security Status: Unknown

Handle 0x0046, DMI type 7, 19 bytes
Cache Information
	Socket Designation: Internal L2 Cache
	Configuration: Enabled, Not Socketed, Level 2
	Operational Mode: Write Back
	Location: Internal
	Installed Size: 8192 KB
	Maximum Size: 4096 KB
	Supported SRAM Types:
		Burst
	Installed SRAM Type: Burst
	Speed: Unknown
	Error Correction Type: Single-bit ECC
	System Type: Unified
	Associativity: 8-way Set-associative

Handle 0x0049, DMI type 7, 19 bytes
Cache Information
	Socket Designation: Internal L2 Cache
	Configuration: Enabled, Not Socketed, Level 2
	Operational Mode: Write Back
	Location: Internal
	Installed Size: 8192 KB
	Maximum Size: 4096 KB
	Supported SRAM Types:
		Burst
	Installed SRAM Type: Burst
	Speed: Unknown
	Error Correction Type: Single-bit ECC
	System Type: Unified
	Associativity: 8-way Set-associative

Handle 0x00A2, DMI type 4, 40 bytes
Processor Information
	Socket Designation: Node 1 CPU 3
	Type: Central Processor
	Family: Xeon MP
	Manufacturer: GenuineIntel
	ID: 00 00 00 00 00 00 00 00
	Signature: Type 0, Family 0, Model 0, Stepping 0
	Flags: None
	Version: Intel Xeon MP  Quad-Core
	Voltage: 1.5 V
	External Clock: Unknown
	Max Speed: 4000 MHz
	Current Speed: Unknown
	Status: Unpopulated
	Upgrade: ZIF Socket
	L1 Cache Handle: 0x0042
	L2 Cache Handle: 0x0043
	L3 Cache Handle: 0x0044
	Serial Number: Not Specified
	Asset Tag: Not Specified
	Part Number: Not Specified
	Characteristics:
		64-bit capable

Handle 0x00A3, DMI type 4, 40 bytes
Processor Information
	Socket Designation: Node 1 CPU 1
	Type: Central Processor
	Family: Xeon MP
	Manufacturer: GenuineIntel
	ID: FB 06 00 00 00 00 00 00
	Signature: Type 0, Family 6, Model 15, Stepping 11
	Flags: None
	Version: Intel Xeon MP           
	Voltage: 1.5 V
	External Clock: 133 MHz
	Max Speed: 4000 MHz
	Current Speed: 2933 MHz
	Status: Populated, Enabled
	Upgrade: ZIF Socket
	L1 Cache Handle: 0x0045
	L2 Cache Handle: 0x0046
	L3 Cache Handle: 0x0047
	Serial Number: Not Specified
	Asset Tag: Not Specified
	Part Number: Not Specified
	Core Count: 4
	Core Enabled: 4
	Thread Count: 4
	Characteristics:
		64-bit capable

Handle 0x00A4, DMI type 4, 40 bytes
Processor Information
	Socket Designation: Node 1 CPU 2
	Type: Central Processor
	Family: Xeon MP
	Manufacturer: GenuineIntel
	ID: FB 06 00 00 00 00 00 00
	Signature: Type 0, Family 6, Model 15, Stepping 11
	Flags: None
	Version: Intel Xeon MP           
	Voltage: 1.5 V
	External Clock: 133 MHz
	Max Speed: 4000 MHz
	Current Speed: 2933 MHz
	Status: Populated, Enabled
	Upgrade: ZIF Socket
	L1 Cache Handle: 0x0048
	L2 Cache Handle: 0x0049
	L3 Cache Handle: 0x004A
	Serial Number: Not Specified
	Asset Tag: Not Specified
	Part Number: Not Specified
	Core Count: 4
	Core Enabled: 4
	Thread Count: 4
	Characteristics:
		64-bit capable

Handle 0x00A5, DMI type 4, 40 bytes
Processor Information
	Socket Designation: Node 1 CPU 4
	Type: Central Processor
	Family: Xeon MP
	Manufacturer: GenuineIntel
	ID: 00 00 00 00 00 00 00 00
	Signature: Type 0, Family 0, Model 0, Stepping 0
	Flags: None
	Version: Intel Xeon MP  Quad-Core
	Voltage: 1.5 V
	External Clock: Unknown
	Max Speed: 4000 MHz
	Current Speed: Unknown
	Status: Unpopulated
	Upgrade: ZIF Socket
	L1 Cache Handle: 0x004B
	L2 Cache Handle: 0x004C
	L3 Cache Handle: 0x004D
	Serial Number: Not Specified
	Asset Tag: Not Specified
	Part Number: Not Specified
	Characteristics:
		64-bit capable

Handle 0x00C2, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: Not Specified
	Internal Connector Type: None
	External Reference Designator: Scalability 1
	External Connector Type: Proprietary
	Port Type: Other

Handle 0x00C3, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: Not Specified
	Internal Connector Type: None
	External Reference Designator: Scalability 2
	External Connector Type: Proprietary
	Port Type: Other

Handle 0x00C4, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: Not Specified
	Internal Connector Type: None
	External Reference Designator: Scalability 3
	External Connector Type: Proprietary
	Port Type: Other

Handle 0x00C5, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: Not Specified
	Internal Connector Type: None
	External Reference Designator: 10/100/1000 Ethernet (port A)
	External Connector Type: RJ-45
	Port Type: Network Port

Handle 0x00C6, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: Not Specified
	Internal Connector Type: None
	External Reference Designator: 10/100/1000 Ethernet (port B)
	External Connector Type: RJ-45
	Port Type: Network Port

Handle 0x00C7, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: Not Specified
	Internal Connector Type: None
	External Reference Designator: USB 1
	External Connector Type: Access Bus (USB)
	Port Type: USB

Handle 0x00C8, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: Not Specified
	Internal Connector Type: None
	External Reference Designator: USB 2
	External Connector Type: Access Bus (USB)
	Port Type: USB

Handle 0x00C9, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: Not Specified
	Internal Connector Type: None
	External Reference Designator: USB 3
	External Connector Type: Access Bus (USB)
	Port Type: USB

Handle 0x00CA, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: Not Specified
	Internal Connector Type: None
	External Reference Designator: Video
	External Connector Type: DB-15 female
	Port Type: Video Port

Handle 0x00CB, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: Diskette/CDROM
	Internal Connector Type: Other
	External Reference Designator: Not Specified
	External Connector Type: None
	Port Type: Other

Handle 0x00CC, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: Internal SAS SCSI
	Internal Connector Type: Other
	External Reference Designator: Not Specified
	External Connector Type: None
	Port Type: Other

Handle 0x00CD, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: External SAS SCSI
	Internal Connector Type: Other
	External Reference Designator: Not Specified
	External Connector Type: None
	Port Type: Other

Handle 0x00CE, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: Not Specified
	Internal Connector Type: None
	External Reference Designator: Serial-A / System Management
	External Connector Type: DB-9 male
	Port Type: Serial Port 16550A Compatible

Handle 0x00CF, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: Not Specified
	Internal Connector Type: None
	External Reference Designator: RSA Ethernet
	External Connector Type: RJ-45
	Port Type: Network Port

Handle 0x00D0, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: Not Specified
	Internal Connector Type: None
	External Reference Designator: Scalability 1
	External Connector Type: Proprietary
	Port Type: Other

Handle 0x00D1, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: Not Specified
	Internal Connector Type: None
	External Reference Designator: Scalability 2
	External Connector Type: Proprietary
	Port Type: Other

Handle 0x00D2, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: Not Specified
	Internal Connector Type: None
	External Reference Designator: Scalability 3
	External Connector Type: Proprietary
	Port Type: Other

Handle 0x012B, DMI type 9, 13 bytes
System Slot Information
	Designation: Node1 PCI-Express Slot 1
	Type: x8 PCI Express
	Current Usage: Available
	Length: Long
	ID: 1
	Characteristics:
		3.3 V is provided
		PME signal is supported

Handle 0x012C, DMI type 9, 13 bytes
System Slot Information
	Designation: Node1 PCI-Express Slot 2
	Type: x8 PCI Express
	Current Usage: In Use
	Length: Long
	ID: 2
	Characteristics:
		3.3 V is provided
		PME signal is supported

Handle 0x012D, DMI type 9, 13 bytes
System Slot Information
	Designation: Node1 PCI-Express Slot 3
	Type: x8 PCI Express
	Current Usage: Available
	Length: Long
	ID: 3
	Characteristics:
		3.3 V is provided
		PME signal is supported

Handle 0x012E, DMI type 9, 13 bytes
System Slot Information
	Designation: Node1 PCI-Express Slot 4
	Type: x8 PCI Express
	Current Usage: Available
	Length: Long
	ID: 4
	Characteristics:
		3.3 V is provided
		PME signal is supported

Handle 0x012F, DMI type 9, 13 bytes
System Slot Information
	Designation: Node1 PCI-Express Slot 5
	Type: x8 PCI Express
	Current Usage: Available
	Length: Long
	ID: 5
	Characteristics:
		3.3 V is provided
		PME signal is supported

Handle 0x0130, DMI type 9, 13 bytes
System Slot Information
	Designation: Node1 PCI-Express Slot 6
	Type: x8 PCI Express
	Current Usage: Available
	Length: Long
	ID: 6
	Characteristics:
		3.3 V is provided
		PME signal is supported
		Hot-plug devices are supported

Handle 0x0131, DMI type 9, 13 bytes
System Slot Information
	Designation: Node1 PCI-Express Slot 7
	Type: x8 PCI Express
	Current Usage: Available
	Length: Long
	ID: 7
	Characteristics:
		3.3 V is provided
		PME signal is supported
		Hot-plug devices are supported

Handle 0x016B, DMI type 11, 5 bytes
OEM Strings
	String 1: IBM Preboot Diagnostics (DSA) 1.00.55 -[A3YT55AUS-1.00.55]-
	String 2: IBM CRTM Code 1.00 -[A3CP08AUS-1.00]-
	String 3: IBM Backup CRTM Code 1.00 -[A3CP08AUS-1.00]-
	String 4: IBM BaseBoard Management Controller -[A3BT50A  ]-
	String 5: IBM Remote Supervisor Adapter -[A3EP29BUS]-
	String 6: IBM Processor Card FPGA Version 001.006
	String 7: IBM PCI I/O Planar FPGA Version 001.004

Handle 0x016C, DMI type 12, 5 bytes
System Configuration Options
	Option 1: J33-Power on Password Override jumper
	Option 2: Changing the position of this jumper bypasses the
	Option 3: power-on password checking on the next power-on. 
	Option 4: You do not need to move the jumper back to the 
	Option 5: default position after the password is overridden. 
	Option 6: Changing the position of this jumper does not affect 
	Option 7: the administrator password check if an administrator 
	Option 8: password is set.

Handle 0x016D, DMI type 12, 5 bytes
System Configuration Options
	Option 1: J17-Flash ROM page swap jumper
	Option 2: Primary-on pins 1-2, Backup-on pins 2-3
	Option 3: The Primary(default) position is a jumper installed 
	Option 4: on pins marked by a white block under the pins.
	Option 5: Changing the position of this jumper will change 
	Option 6: which of the two pages of flash ROM is used when 
	Option 7: the system is started.

Handle 0x016E, DMI type 12, 5 bytes
System Configuration Options
	Option 1: J16- Force Power On Jumper
	Option 2: Pin 1-2 Force Power On disabled
	Option 3: Pin 2-3 Force Power On enabled

Handle 0x016F, DMI type 12, 5 bytes
System Configuration Options
	Option 1: J21- BMC Disable Jumper
	Option 2: Pin 1-2 BMC Enabled
	Option 3: Pin 2-3 BMC Disabled

Handle 0x0170, DMI type 13, 22 bytes
BIOS Language Information
	Installable Languages: 1
		en|US|iso8859-1
	Currently Installed Language: en|US|iso8859-1

Handle 0x0171, DMI type 16, 15 bytes
Physical Memory Array
	Location: Proprietary Add-on Card
	Use: System Memory
	Error Correction Type: Multi-bit ECC
	Maximum Capacity: Unknown
	Error Information Handle: Not Provided
	Number Of Devices: 32

Handle 0x0172, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: 1024 MB
	Form Factor: DIMM
	Set: 1
	Locator: DIMM1
	Bank Locator: Node1/Bank1/MemCard1
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x0173, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: 1024 MB
	Form Factor: DIMM
	Set: 1
	Locator: DIMM5
	Bank Locator: Node1/Bank1/MemCard1
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x0174, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: 2048 MB
	Form Factor: DIMM
	Set: 2
	Locator: DIMM2
	Bank Locator: Node1/Bank2/MemCard1
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x0175, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: 2048 MB
	Form Factor: DIMM
	Set: 2
	Locator: DIMM6
	Bank Locator: Node1/Bank2/MemCard1
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x0176, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: 2048 MB
	Form Factor: DIMM
	Set: 3
	Locator: DIMM3
	Bank Locator: Node1/Bank3/MemCard1
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x0177, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: 2048 MB
	Form Factor: DIMM
	Set: 3
	Locator: DIMM7
	Bank Locator: Node1/Bank3/MemCard1
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x0178, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: No Module Installed
	Form Factor: DIMM
	Set: 4
	Locator: DIMM4
	Bank Locator: Node1/Bank4/MemCard1
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x0179, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: No Module Installed
	Form Factor: DIMM
	Set: 4
	Locator: DIMM8
	Bank Locator: Node1/Bank4/MemCard1
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x017A, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: 1024 MB
	Form Factor: DIMM
	Set: 5
	Locator: DIMM1
	Bank Locator: Node1/Bank5/MemCard2
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x017B, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: 1024 MB
	Form Factor: DIMM
	Set: 5
	Locator: DIMM5
	Bank Locator: Node1/Bank5/MemCard2
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x017C, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: 2048 MB
	Form Factor: DIMM
	Set: 6
	Locator: DIMM2
	Bank Locator: Node1/Bank6/MemCard2
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x017D, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: 2048 MB
	Form Factor: DIMM
	Set: 6
	Locator: DIMM6
	Bank Locator: Node1/Bank6/MemCard2
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x017E, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: No Module Installed
	Form Factor: DIMM
	Set: 7
	Locator: DIMM3
	Bank Locator: Node1/Bank7/MemCard2
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x017F, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: No Module Installed
	Form Factor: DIMM
	Set: 7
	Locator: DIMM7
	Bank Locator: Node1/Bank7/MemCard2
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x0180, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: No Module Installed
	Form Factor: DIMM
	Set: 8
	Locator: DIMM4
	Bank Locator: Node1/Bank8/MemCard2
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x0181, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: No Module Installed
	Form Factor: DIMM
	Set: 8
	Locator: DIMM8
	Bank Locator: Node1/Bank8/MemCard2
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x0182, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: 1024 MB
	Form Factor: DIMM
	Set: 9
	Locator: DIMM1
	Bank Locator: Node1/Bank9/MemCard3
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x0183, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: 1024 MB
	Form Factor: DIMM
	Set: 9
	Locator: DIMM5
	Bank Locator: Node1/Bank9/MemCard3
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x0184, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: 2048 MB
	Form Factor: DIMM
	Set: 10
	Locator: DIMM2
	Bank Locator: Node1/Bank10/MemCard3
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x0185, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: 2048 MB
	Form Factor: DIMM
	Set: 10
	Locator: DIMM6
	Bank Locator: Node1/Bank10/MemCard3
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x0186, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: No Module Installed
	Form Factor: DIMM
	Set: 11
	Locator: DIMM3
	Bank Locator: Node1/Bank11/MemCard3
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x0187, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: No Module Installed
	Form Factor: DIMM
	Set: 11
	Locator: DIMM7
	Bank Locator: Node1/Bank11/MemCard3
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x0188, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: No Module Installed
	Form Factor: DIMM
	Set: 12
	Locator: DIMM4
	Bank Locator: Node1/Bank12/MemCard3
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x0189, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: No Module Installed
	Form Factor: DIMM
	Set: 12
	Locator: DIMM8
	Bank Locator: Node1/Bank12/MemCard3
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x018A, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: 1024 MB
	Form Factor: DIMM
	Set: 13
	Locator: DIMM1
	Bank Locator: Node1/Bank13/MemCard4
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x018B, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: 1024 MB
	Form Factor: DIMM
	Set: 13
	Locator: DIMM5
	Bank Locator: Node1/Bank13/MemCard4
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x018C, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: 2048 MB
	Form Factor: DIMM
	Set: 14
	Locator: DIMM2
	Bank Locator: Node1/Bank14/MemCard4
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x018D, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: 2048 MB
	Form Factor: DIMM
	Set: 14
	Locator: DIMM6
	Bank Locator: Node1/Bank14/MemCard4
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x018E, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: 2048 MB
	Form Factor: DIMM
	Set: 15
	Locator: DIMM3
	Bank Locator: Node1/Bank15/MemCard4
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x018F, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: 2048 MB
	Form Factor: DIMM
	Set: 15
	Locator: DIMM7
	Bank Locator: Node1/Bank15/MemCard4
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x0190, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: No Module Installed
	Form Factor: DIMM
	Set: 16
	Locator: DIMM4
	Bank Locator: Node1/Bank16/MemCard4
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x0191, DMI type 17, 23 bytes
Memory Device
	Array Handle: 0x0171
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: No Module Installed
	Form Factor: DIMM
	Set: 16
	Locator: DIMM8
	Bank Locator: Node1/Bank16/MemCard4
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)

Handle 0x0272, DMI type 19, 15 bytes
Memory Array Mapped Address
	Starting Address: 0x00000000000
	Ending Address: 0x007FFFFFFFF
	Range Size: 32 GB
	Physical Array Handle: 0x0171
	Partition Width: 0

Handle 0x0273, DMI type 32, 11 bytes
System Boot Information
	Status: No errors detected

Handle 0x0274, DMI type 38, 18 bytes
IPMI Device Information
	Interface Type: KCS (Keyboard Control Style)
	Specification Version: 2.0
	I2C Slave Address: 0x10
	NV Storage Device: Not Present
	Base Address: 0x0000000000000CA8 (I/O)
	Register Spacing: 32-bit Boundaries

Handle 0x027C, DMI type 127, 4 bytes
End Of Table


^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2010-01-13  4:53 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-12  2:48 [RFC PATCH 1/4] use nr_cpus= to set nr_cpu_ids early Yinghai Lu
2010-01-12  2:48 ` [RFC PATCH 3/4] x86: using logical flat for amd cpu too Yinghai Lu
2010-01-12  3:16   ` Linus Torvalds
2010-01-12  8:47     ` Yinghai Lu
2010-01-12  8:27   ` Ananth N Mavinakayanahalli
2010-01-12 22:50     ` H. Peter Anvin
2010-01-13  4:53       ` Ananth N Mavinakayanahalli
2010-01-12  2:48 ` [RFC PATCH 4/4] x86: according to nr_cpu_ids to decide if need to leave logical flat Yinghai Lu
2010-01-12  3:20   ` Linus Torvalds
2010-01-12  8:50     ` Yinghai Lu
2010-01-12  2:48 ` [RFC PATCH 2/4] x86: use dmi check to treat disabled cpus as hotplug cpus Yinghai Lu
2010-01-12  3:13   ` Linus Torvalds
2010-01-12  8:59     ` Yinghai Lu
2010-01-12 15:19       ` Linus Torvalds
2010-01-12 17:54         ` Suresh Siddha
2010-01-12 18:13         ` Yinghai Lu
2010-01-12 18:24           ` Suresh Siddha
2010-01-12 19:19             ` Yinghai Lu
2010-01-12  9:15     ` Yinghai Lu
2010-01-12  9:46     ` Ingo Molnar
2010-01-12 16:14     ` Valdis.Kletnieks
2010-01-12 16:26       ` Linus Torvalds
2010-01-12 17:17         ` Valdis.Kletnieks
2010-01-12  3:06 ` [RFC PATCH 1/4] use nr_cpus= to set nr_cpu_ids early Linus Torvalds

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox