提交 4b703a23 编写于 作者: A Anton Blanchard 提交者: Paul Mackerras

[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: NAnton Blanchard <anton@samba.org>
Signed-off-by: NPaul Mackerras <paulus@samba.org>
上级 2c066042
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include <linux/sysdev.h> #include <linux/sysdev.h>
#include <linux/cpu.h> #include <linux/cpu.h>
#include <linux/notifier.h> #include <linux/notifier.h>
#include <linux/topology.h>
#include <asm/ptrace.h> #include <asm/ptrace.h>
#include <asm/atomic.h> #include <asm/atomic.h>
...@@ -568,6 +569,8 @@ void __init smp_cpus_done(unsigned int max_cpus) ...@@ -568,6 +569,8 @@ void __init smp_cpus_done(unsigned int max_cpus)
smp_ops->setup_cpu(boot_cpuid); smp_ops->setup_cpu(boot_cpuid);
set_cpus_allowed(current, old_mask); set_cpus_allowed(current, old_mask);
dump_numa_cpu_topology();
} }
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
......
...@@ -489,7 +489,41 @@ static void __init setup_nonnuma(void) ...@@ -489,7 +489,41 @@ static void __init setup_nonnuma(void)
node_set_online(0); node_set_online(0);
} }
static void __init dump_numa_topology(void) void __init dump_numa_cpu_topology(void)
{
unsigned int node;
unsigned int cpu, count;
if (min_common_depth == -1 || !numa_enabled)
return;
for_each_online_node(node) {
printk(KERN_INFO "Node %d CPUs:", node);
count = 0;
/*
* If we used a CPU iterator here we would miss printing
* the holes in the cpumap.
*/
for (cpu = 0; cpu < NR_CPUS; cpu++) {
if (cpu_isset(cpu, numa_cpumask_lookup_table[node])) {
if (count == 0)
printk(" %u", cpu);
++count;
} else {
if (count > 1)
printk("-%u", cpu - 1);
count = 0;
}
}
if (count > 1)
printk("-%u", NR_CPUS - 1);
printk("\n");
}
}
static void __init dump_numa_memory_topology(void)
{ {
unsigned int node; unsigned int node;
unsigned int count; unsigned int count;
...@@ -521,7 +555,6 @@ static void __init dump_numa_topology(void) ...@@ -521,7 +555,6 @@ static void __init dump_numa_topology(void)
printk("-0x%lx", i); printk("-0x%lx", i);
printk("\n"); printk("\n");
} }
return;
} }
/* /*
...@@ -583,7 +616,7 @@ void __init do_init_bootmem(void) ...@@ -583,7 +616,7 @@ void __init do_init_bootmem(void)
if (parse_numa_properties()) if (parse_numa_properties())
setup_nonnuma(); setup_nonnuma();
else else
dump_numa_topology(); dump_numa_memory_topology();
register_cpu_notifier(&ppc64_numa_nb); register_cpu_notifier(&ppc64_numa_nb);
......
...@@ -55,8 +55,12 @@ static inline int node_to_first_cpu(int node) ...@@ -55,8 +55,12 @@ static inline int node_to_first_cpu(int node)
.nr_balance_failed = 0, \ .nr_balance_failed = 0, \
} }
extern void __init dump_numa_cpu_topology(void);
#else #else
static inline void dump_numa_cpu_topology(void) {}
#include <asm-generic/topology.h> #include <asm-generic/topology.h>
#endif /* CONFIG_NUMA */ #endif /* CONFIG_NUMA */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册