aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
authorAnton Blanchard <anton@samba.org>2005-12-12 14:56:47 -0500
committerPaul Mackerras <paulus@samba.org>2006-01-08 22:53:37 -0500
commit4b703a231799f43f3414b62300b8ad6736a4aa9d (patch)
tree401d9edc69193858bd25f97477207f143dd5aa68 /arch/powerpc
parent2c066042ecc3b0d811440002b74fa3778d4432cb (diff)
[PATCH] ppc64: Add NUMA cpu summary at boot
We used to print a NUMA cpu summary at boot before the hotplug cpu code was added. This has been useful for catching machine configuration as well as firmware bugs in the past. This patch restores that functionality. An example of the output is: Node 0 CPUs: 0-7 Node 1 CPUs: 8-15 Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/kernel/smp.c3
-rw-r--r--arch/powerpc/mm/numa.c39
2 files changed, 39 insertions, 3 deletions
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
index 8e3ca674d359..d381ec90b759 100644
--- a/arch/powerpc/kernel/smp.c
+++ b/arch/powerpc/kernel/smp.c
@@ -31,6 +31,7 @@
31#include <linux/sysdev.h> 31#include <linux/sysdev.h>
32#include <linux/cpu.h> 32#include <linux/cpu.h>
33#include <linux/notifier.h> 33#include <linux/notifier.h>
34#include <linux/topology.h>
34 35
35#include <asm/ptrace.h> 36#include <asm/ptrace.h>
36#include <asm/atomic.h> 37#include <asm/atomic.h>
@@ -568,6 +569,8 @@ void __init smp_cpus_done(unsigned int max_cpus)
568 smp_ops->setup_cpu(boot_cpuid); 569 smp_ops->setup_cpu(boot_cpuid);
569 570
570 set_cpus_allowed(current, old_mask); 571 set_cpus_allowed(current, old_mask);
572
573 dump_numa_cpu_topology();
571} 574}
572 575
573#ifdef CONFIG_HOTPLUG_CPU 576#ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
index 97e83f1d1bdb..fc519cd90f77 100644
--- a/arch/powerpc/mm/numa.c
+++ b/arch/powerpc/mm/numa.c
@@ -489,7 +489,41 @@ static void __init setup_nonnuma(void)
489 node_set_online(0); 489 node_set_online(0);
490} 490}
491 491
492static void __init dump_numa_topology(void) 492void __init dump_numa_cpu_topology(void)
493{
494 unsigned int node;
495 unsigned int cpu, count;
496
497 if (min_common_depth == -1 || !numa_enabled)
498 return;
499
500 for_each_online_node(node) {
501 printk(KERN_INFO "Node %d CPUs:", node);
502
503 count = 0;
504 /*
505 * If we used a CPU iterator here we would miss printing
506 * the holes in the cpumap.
507 */
508 for (cpu = 0; cpu < NR_CPUS; cpu++) {
509 if (cpu_isset(cpu, numa_cpumask_lookup_table[node])) {
510 if (count == 0)
511 printk(" %u", cpu);
512 ++count;
513 } else {
514 if (count > 1)
515 printk("-%u", cpu - 1);
516 count = 0;
517 }
518 }
519
520 if (count > 1)
521 printk("-%u", NR_CPUS - 1);
522 printk("\n");
523 }
524}
525
526static void __init dump_numa_memory_topology(void)
493{ 527{
494 unsigned int node; 528 unsigned int node;
495 unsigned int count; 529 unsigned int count;
@@ -521,7 +555,6 @@ static void __init dump_numa_topology(void)
521 printk("-0x%lx", i); 555 printk("-0x%lx", i);
522 printk("\n"); 556 printk("\n");
523 } 557 }
524 return;
525} 558}
526 559
527/* 560/*
@@ -583,7 +616,7 @@ void __init do_init_bootmem(void)
583 if (parse_numa_properties()) 616 if (parse_numa_properties())
584 setup_nonnuma(); 617 setup_nonnuma();
585 else 618 else
586 dump_numa_topology(); 619 dump_numa_memory_topology();
587 620
588 register_cpu_notifier(&ppc64_numa_nb); 621 register_cpu_notifier(&ppc64_numa_nb);
589 622