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