On Wed, May 9, 2012 at 5:59 AM, tip-bot for Ingo Molnar <mingo@xxxxxxxxxx> wrote: > Commit-ID: ad7687dde8780a0d618a3e3b5a62bb383696fc22 > Gitweb: http://git.kernel.org/tip/ad7687dde8780a0d618a3e3b5a62bb383696fc22 > Author: Ingo Molnar <mingo@xxxxxxxxxx> > AuthorDate: Wed, 9 May 2012 13:31:47 +0200 > Committer: Ingo Molnar <mingo@xxxxxxxxxx> > CommitDate: Wed, 9 May 2012 13:32:35 +0200 > > x86/numa: Check for nonsensical topologies on real hw as well > > Instead of only checking nonsensical topologies on numa-emu, do it > on real hardware as well, and print a warning. > > Acked-by: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx> > Cc: Tejun Heo <tj@xxxxxxxxxx> > Cc: Yinghai Lu <yinghai@xxxxxxxxxx> > Cc: x86@xxxxxxxxxx > Link: http://lkml.kernel.org/n/tip-re15l0jqjtpz709oxozt2zoh@xxxxxxxxxxxxxx > Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx> > --- > arch/x86/kernel/smpboot.c | 12 ++++++------ > 1 files changed, 6 insertions(+), 6 deletions(-) > > diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c > index edfd03a..7c53d96 100644 > --- a/arch/x86/kernel/smpboot.c > +++ b/arch/x86/kernel/smpboot.c > @@ -337,10 +337,10 @@ void __cpuinit set_cpu_sibling_map(int cpu) > for_each_cpu(i, cpu_sibling_setup_mask) { > struct cpuinfo_x86 *o = &cpu_data(i); > > -#ifdef CONFIG_NUMA_EMU > - if (cpu_to_node(cpu) != cpu_to_node(i)) > + if (cpu_to_node(cpu) != cpu_to_node(i)) { > + WARN_ONCE(1, "sched: CPU #%d's thread-sibling CPU #%d not on the same node! [node %d != %d]. Ignoring sibling dependency.\n", cpu, i, cpu_to_node(cpu), cpu_to_node(i)); > continue; > -#endif > + } > > if (cpu_has(c, X86_FEATURE_TOPOEXT)) { > if (c->phys_proc_id == o->phys_proc_id && > @@ -365,10 +365,10 @@ void __cpuinit set_cpu_sibling_map(int cpu) > } > > for_each_cpu(i, cpu_sibling_setup_mask) { > -#ifdef CONFIG_NUMA_EMU > - if (cpu_to_node(cpu) != cpu_to_node(i)) > + if (cpu_to_node(cpu) != cpu_to_node(i)) { > + WARN_ONCE(1, "sched: CPU #%d's core-sibling CPU #%d not on the same node! [node %d != %d]. Ignoring sibling dependency.\n", cpu, i, cpu_to_node(cpu), cpu_to_node(i)); > continue; > -#endif > + } > > if (per_cpu(cpu_llc_id, cpu) != BAD_APICID && > per_cpu(cpu_llc_id, cpu) == per_cpu(cpu_llc_id, i)) { get wrong warning on system without using numa emu. ------------[ cut here ]------------ WARNING: at arch/x86/kernel/smpboot.c:320 set_cpu_sibling_map+0x9c/0x382() Hardware name: Sun Blade X6270 M3 sched: CPU #8's thread-sibling CPU #0 not on the same node! [node 1 != 0]. Ignoring sibling dependency. Modules linked in: Pid: 0, comm: swapper/8 Not tainted 3.4.0-rc6-yh-03506-gac97716-dirty #308 Call Trace: [<ffffffff8106a7d1>] warn_slowpath_common+0x83/0x9b [<ffffffff8106a88c>] warn_slowpath_fmt+0x46/0x48 [<ffffffff81d78b78>] set_cpu_sibling_map+0x9c/0x382 [<ffffffff81d77aca>] ? mcheck_cpu_init+0xcf/0x11c [<ffffffff81d760ce>] ? identify_cpu+0x24c/0x251 [<ffffffff81d78f5c>] smp_callin+0xfe/0x114 [<ffffffff81d78f8a>] start_secondary+0x18/0xc4 [<ffffffff81d78f72>] ? smp_callin+0x114/0x114 ---[ end trace b0a3493fd2ab781d ]--- ------------[ cut here ]------------ WARNING: at arch/x86/kernel/smpboot.c:348 set_cpu_sibling_map+0x20f/0x382() Hardware name: Sun Blade X6270 M3 sched: CPU #8's core-sibling CPU #0 not on the same node! [node 1 != 0]. Ignoring sibling dependency. Modules linked in: Pid: 0, comm: swapper/8 Tainted: G W 3.4.0-rc6-yh-03506-gac97716-dirty #308 Call Trace: [<ffffffff8106a7d1>] warn_slowpath_common+0x83/0x9b [<ffffffff8106a88c>] warn_slowpath_fmt+0x46/0x48 [<ffffffff81d78ceb>] set_cpu_sibling_map+0x20f/0x382 [<ffffffff81d77aca>] ? mcheck_cpu_init+0xcf/0x11c [<ffffffff81d760ce>] ? identify_cpu+0x24c/0x251 [<ffffffff81d78f5c>] smp_callin+0xfe/0x114 [<ffffffff81d78f8a>] start_secondary+0x18/0xc4 [<ffffffff81d78f72>] ? smp_callin+0x114/0x114 ---[ end trace b0a3493fd2ab781e ]--- SRAT: PXM 0 -> APIC 0x00 -> Node 0 SRAT: PXM 0 -> APIC 0x02 -> Node 0 SRAT: PXM 0 -> APIC 0x04 -> Node 0 SRAT: PXM 0 -> APIC 0x06 -> Node 0 SRAT: PXM 0 -> APIC 0x08 -> Node 0 SRAT: PXM 0 -> APIC 0x0a -> Node 0 SRAT: PXM 0 -> APIC 0x0c -> Node 0 SRAT: PXM 0 -> APIC 0x0e -> Node 0 SRAT: PXM 1 -> APIC 0x20 -> Node 1 SRAT: PXM 1 -> APIC 0x22 -> Node 1 SRAT: PXM 1 -> APIC 0x24 -> Node 1 SRAT: PXM 1 -> APIC 0x26 -> Node 1 SRAT: PXM 1 -> APIC 0x28 -> Node 1 SRAT: PXM 1 -> APIC 0x2a -> Node 1 SRAT: PXM 1 -> APIC 0x2c -> Node 1 SRAT: PXM 1 -> APIC 0x2e -> Node 1 SRAT: PXM 0 -> APIC 0x01 -> Node 0 SRAT: PXM 0 -> APIC 0x03 -> Node 0 SRAT: PXM 0 -> APIC 0x05 -> Node 0 SRAT: PXM 0 -> APIC 0x07 -> Node 0 SRAT: PXM 0 -> APIC 0x09 -> Node 0 SRAT: PXM 0 -> APIC 0x0b -> Node 0 SRAT: PXM 0 -> APIC 0x0d -> Node 0 SRAT: PXM 0 -> APIC 0x0f -> Node 0 SRAT: PXM 1 -> APIC 0x21 -> Node 1 SRAT: PXM 1 -> APIC 0x23 -> Node 1 SRAT: PXM 1 -> APIC 0x25 -> Node 1 SRAT: PXM 1 -> APIC 0x27 -> Node 1 SRAT: PXM 1 -> APIC 0x29 -> Node 1 SRAT: PXM 1 -> APIC 0x2b -> Node 1 SRAT: PXM 1 -> APIC 0x2d -> Node 1 SRAT: PXM 1 -> APIC 0x2f -> Node 1 ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] enabled) ACPI: LAPIC (acpi_id[0x04] lapic_id[0x04] enabled) ACPI: LAPIC (acpi_id[0x06] lapic_id[0x06] enabled) ACPI: LAPIC (acpi_id[0x08] lapic_id[0x08] enabled) ACPI: LAPIC (acpi_id[0x0a] lapic_id[0x0a] enabled) ACPI: LAPIC (acpi_id[0x0c] lapic_id[0x0c] enabled) ACPI: LAPIC (acpi_id[0x0e] lapic_id[0x0e] enabled) ACPI: LAPIC (acpi_id[0x10] lapic_id[0x20] enabled) ACPI: LAPIC (acpi_id[0x12] lapic_id[0x22] enabled) ACPI: LAPIC (acpi_id[0x14] lapic_id[0x24] enabled) ACPI: LAPIC (acpi_id[0x16] lapic_id[0x26] enabled) ACPI: LAPIC (acpi_id[0x18] lapic_id[0x28] enabled) ACPI: LAPIC (acpi_id[0x1a] lapic_id[0x2a] enabled) ACPI: LAPIC (acpi_id[0x1c] lapic_id[0x2c] enabled) ACPI: LAPIC (acpi_id[0x1e] lapic_id[0x2e] enabled) ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled) ACPI: LAPIC (acpi_id[0x03] lapic_id[0x03] enabled) ACPI: LAPIC (acpi_id[0x05] lapic_id[0x05] enabled) ACPI: LAPIC (acpi_id[0x07] lapic_id[0x07] enabled) ACPI: LAPIC (acpi_id[0x09] lapic_id[0x09] enabled) ACPI: LAPIC (acpi_id[0x0b] lapic_id[0x0b] enabled) ACPI: LAPIC (acpi_id[0x0d] lapic_id[0x0d] enabled) ACPI: LAPIC (acpi_id[0x0f] lapic_id[0x0f] enabled) ACPI: LAPIC (acpi_id[0x11] lapic_id[0x21] enabled) ACPI: LAPIC (acpi_id[0x13] lapic_id[0x23] enabled) ACPI: LAPIC (acpi_id[0x15] lapic_id[0x25] enabled) ACPI: LAPIC (acpi_id[0x17] lapic_id[0x27] enabled) ACPI: LAPIC (acpi_id[0x19] lapic_id[0x29] enabled) ACPI: LAPIC (acpi_id[0x1b] lapic_id[0x2b] enabled) ACPI: LAPIC (acpi_id[0x1d] lapic_id[0x2d] enabled) ACPI: LAPIC (acpi_id[0x1f] lapic_id[0x2f] enabled) init_cpu_to_node: cpu 0 -> apicid 0x0 -> node 0 cpu 1 -> apicid 0x2 -> node 0 cpu 2 -> apicid 0x4 -> node 0 cpu 3 -> apicid 0x6 -> node 0 cpu 4 -> apicid 0x8 -> node 0 cpu 5 -> apicid 0xa -> node 0 cpu 6 -> apicid 0xc -> node 0 cpu 7 -> apicid 0xe -> node 0 cpu 8 -> apicid 0x20 -> node 1 cpu 9 -> apicid 0x22 -> node 1 cpu 10 -> apicid 0x24 -> node 1 cpu 11 -> apicid 0x26 -> node 1 cpu 12 -> apicid 0x28 -> node 1 cpu 13 -> apicid 0x2a -> node 1 cpu 14 -> apicid 0x2c -> node 1 cpu 15 -> apicid 0x2e -> node 1 cpu 16 -> apicid 0x1 -> node 0 cpu 17 -> apicid 0x3 -> node 0 cpu 18 -> apicid 0x5 -> node 0 cpu 19 -> apicid 0x7 -> node 0 cpu 20 -> apicid 0x9 -> node 0 cpu 21 -> apicid 0xb -> node 0 cpu 22 -> apicid 0xd -> node 0 cpu 23 -> apicid 0xf -> node 0 cpu 24 -> apicid 0x21 -> node 1 cpu 25 -> apicid 0x23 -> node 1 cpu 26 -> apicid 0x25 -> node 1 cpu 27 -> apicid 0x27 -> node 1 cpu 28 -> apicid 0x29 -> node 1 cpu 29 -> apicid 0x2b -> node 1 cpu 30 -> apicid 0x2d -> node 1 cpu 31 -> apicid 0x2f -> node 1 -- To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html