Re: [PATCH 1/2] kernel/smp: Make the SMP boot message common on all arches

From: Ingo Molnar
Date: Sun Oct 16 2016 - 03:04:36 EST



* Michael Ellerman <mpe@xxxxxxxxxxxxxx> wrote:

> Currently after bringing up secondary CPUs all arches print "Brought up
> %d CPUs". On x86 they also print the number of nodes that were brought
> online.
>
> It would be nice to also print the number of nodes on other arches.
> Although we could override smp_announce() on the other ~10 NUMA aware
> arches, it seems simpler to just always print the number of nodes. On
> non-NUMA arches there is just always 1 node.
>
> Having done that, smp_announce() is no longer weak, and seems small
> enough to just pull directly into smp_init().
>
> Signed-off-by: Michael Ellerman <mpe@xxxxxxxxxxxxxx>
> ---
> arch/x86/kernel/smpboot.c | 8 --------
> kernel/smp.c | 11 +++++------
> 2 files changed, 5 insertions(+), 14 deletions(-)
>
> diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
> index 42a93621f5b0..7eb8dfa56d34 100644
> --- a/arch/x86/kernel/smpboot.c
> +++ b/arch/x86/kernel/smpboot.c
> @@ -821,14 +821,6 @@ wakeup_secondary_cpu_via_init(int phys_apicid, unsigned long start_eip)
> return (send_status | accept_status);
> }
>
> -void smp_announce(void)
> -{
> - int num_nodes = num_online_nodes();
> -
> - printk(KERN_INFO "x86: Booted up %d node%s, %d CPUs\n",
> - num_nodes, (num_nodes > 1 ? "s" : ""), num_online_cpus());
> -}
> -
> /* reduce the number of lines printed when booting a large cpu count system */
> static void announce_cpu(int cpu, int apicid)
> {
> diff --git a/kernel/smp.c b/kernel/smp.c
> index bba3b201668d..6f5696d260c8 100644
> --- a/kernel/smp.c
> +++ b/kernel/smp.c
> @@ -543,15 +543,11 @@ void __init setup_nr_cpu_ids(void)
> nr_cpu_ids = find_last_bit(cpumask_bits(cpu_possible_mask),NR_CPUS) + 1;
> }
>
> -void __weak smp_announce(void)
> -{
> - printk(KERN_INFO "Brought up %d CPUs\n", num_online_cpus());
> -}
> -
> /* Called by boot processor to activate the rest. */
> void __init smp_init(void)
> {
> unsigned int cpu;
> + int num_nodes;
>
> idle_threads_init();
> cpuhp_threads_init();
> @@ -564,8 +560,11 @@ void __init smp_init(void)
> cpu_up(cpu);
> }
>
> + num_nodes = num_online_nodes();
> + pr_info("smp: Brought up %d node%s, %d CPUs\n",
> + num_nodes, (num_nodes > 1 ? "s" : ""), num_online_cpus());

No objections - but pedantry requires me to mention that while we are evolving
this code and changing the strings I think we should make the CPU announcement
CPU%s smart as well: an SMP kernel on a single CPU bootup will result in
num_online_cpus() == 1, right?

Thanks,

Ingo