Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4b703a23 authored by Anton Blanchard's avatar Anton Blanchard Committed by Paul Mackerras
Browse files

[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: default avatarAnton Blanchard <anton@samba.org>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 2c066042
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@
#include <linux/sysdev.h>
#include <linux/cpu.h>
#include <linux/notifier.h>
#include <linux/topology.h>

#include <asm/ptrace.h>
#include <asm/atomic.h>
@@ -568,6 +569,8 @@ void __init smp_cpus_done(unsigned int max_cpus)
	smp_ops->setup_cpu(boot_cpuid);

	set_cpus_allowed(current, old_mask);

	dump_numa_cpu_topology();
}

#ifdef CONFIG_HOTPLUG_CPU
+36 −3
Original line number Diff line number Diff line
@@ -489,7 +489,41 @@ static void __init setup_nonnuma(void)
	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 count;
@@ -521,7 +555,6 @@ static void __init dump_numa_topology(void)
			printk("-0x%lx", i);
		printk("\n");
	}
	return;
}

/*
@@ -583,7 +616,7 @@ void __init do_init_bootmem(void)
	if (parse_numa_properties())
		setup_nonnuma();
	else
		dump_numa_topology();
		dump_numa_memory_topology();

	register_cpu_notifier(&ppc64_numa_nb);

+4 −0
Original line number Diff line number Diff line
@@ -55,8 +55,12 @@ static inline int node_to_first_cpu(int node)
	.nr_balance_failed	= 0,			\
}

extern void __init dump_numa_cpu_topology(void);

#else

static inline void dump_numa_cpu_topology(void) {}

#include <asm-generic/topology.h>

#endif /* CONFIG_NUMA */