Skip to content

Commit a17bce4

Browse files
bp3tk0vIngo Molnar
authored and
Ingo Molnar
committed
x86/boot: Further compress CPUs bootup message
Turn it into (for example): [ 0.073380] x86: Booting SMP configuration: [ 0.074005] .... node #0, CPUs: #1 #2 #3 #4 #5 #6 #7 [ 0.603005] .... node #1, CPUs: #8 #9 torvalds#10 torvalds#11 torvalds#12 torvalds#13 torvalds#14 torvalds#15 [ 1.200005] .... node #2, CPUs: torvalds#16 torvalds#17 torvalds#18 torvalds#19 torvalds#20 torvalds#21 torvalds#22 torvalds#23 [ 1.796005] .... node #3, CPUs: torvalds#24 torvalds#25 torvalds#26 torvalds#27 torvalds#28 torvalds#29 torvalds#30 torvalds#31 [ 2.393005] .... node #4, CPUs: torvalds#32 torvalds#33 torvalds#34 torvalds#35 torvalds#36 torvalds#37 torvalds#38 torvalds#39 [ 2.996005] .... node #5, CPUs: torvalds#40 torvalds#41 torvalds#42 torvalds#43 torvalds#44 torvalds#45 torvalds#46 torvalds#47 [ 3.600005] .... node #6, CPUs: torvalds#48 torvalds#49 torvalds#50 torvalds#51 #52 #53 torvalds#54 torvalds#55 [ 4.202005] .... node #7, CPUs: torvalds#56 torvalds#57 #58 torvalds#59 torvalds#60 torvalds#61 torvalds#62 torvalds#63 [ 4.811005] .... node #8, CPUs: torvalds#64 torvalds#65 torvalds#66 torvalds#67 torvalds#68 torvalds#69 #70 torvalds#71 [ 5.421006] .... node #9, CPUs: torvalds#72 torvalds#73 torvalds#74 torvalds#75 torvalds#76 torvalds#77 torvalds#78 torvalds#79 [ 6.032005] .... node torvalds#10, CPUs: torvalds#80 torvalds#81 torvalds#82 torvalds#83 torvalds#84 torvalds#85 torvalds#86 torvalds#87 [ 6.648006] .... node torvalds#11, CPUs: torvalds#88 torvalds#89 torvalds#90 torvalds#91 torvalds#92 torvalds#93 torvalds#94 torvalds#95 [ 7.262005] .... node torvalds#12, CPUs: torvalds#96 torvalds#97 torvalds#98 torvalds#99 torvalds#100 torvalds#101 torvalds#102 torvalds#103 [ 7.865005] .... node torvalds#13, CPUs: torvalds#104 torvalds#105 torvalds#106 torvalds#107 torvalds#108 torvalds#109 torvalds#110 torvalds#111 [ 8.466005] .... node torvalds#14, CPUs: torvalds#112 torvalds#113 torvalds#114 torvalds#115 torvalds#116 torvalds#117 torvalds#118 torvalds#119 [ 9.073006] .... node torvalds#15, CPUs: torvalds#120 torvalds#121 torvalds#122 torvalds#123 torvalds#124 torvalds#125 torvalds#126 torvalds#127 [ 9.679901] x86: Booted up 16 nodes, 128 CPUs and drop useless elements. Change num_digits() to hpa's division-avoiding, cell-phone-typed version which he went at great lengths and pains to submit on a Saturday evening. Signed-off-by: Borislav Petkov <[email protected]> Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: Linus Torvalds <[email protected]> Cc: Andrew Morton <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Thomas Gleixner <[email protected]> Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Ingo Molnar <[email protected]>
1 parent 646e29a commit a17bce4

File tree

3 files changed

+40
-11
lines changed

3 files changed

+40
-11
lines changed

arch/x86/kernel/smpboot.c

+19-5
Original file line numberDiff line numberDiff line change
@@ -647,22 +647,38 @@ wakeup_secondary_cpu_via_init(int phys_apicid, unsigned long start_eip)
647647
return (send_status | accept_status);
648648
}
649649

650+
void smp_announce(void)
651+
{
652+
int num_nodes = num_online_nodes();
653+
654+
printk(KERN_INFO "x86: Booted up %d node%s, %d CPUs\n",
655+
num_nodes, (num_nodes > 1 ? "s" : ""), num_online_cpus());
656+
}
657+
650658
/* reduce the number of lines printed when booting a large cpu count system */
651659
static void announce_cpu(int cpu, int apicid)
652660
{
653661
static int current_node = -1;
654662
int node = early_cpu_to_node(cpu);
655-
static int width;
663+
static int width, node_width;
656664

657665
if (!width)
658666
width = num_digits(num_possible_cpus()) + 1; /* + '#' sign */
659667

668+
if (!node_width)
669+
node_width = num_digits(num_possible_nodes()) + 1; /* + '#' */
670+
671+
if (cpu == 1)
672+
printk(KERN_INFO "x86: Booting SMP configuration:\n");
673+
660674
if (system_state == SYSTEM_BOOTING) {
661675
if (node != current_node) {
662676
if (current_node > (-1))
663-
pr_cont(" OK\n");
677+
pr_cont("\n");
664678
current_node = node;
665-
pr_info("Booting Node %3d, Processors:", node);
679+
680+
printk(KERN_INFO ".... node %*s#%d, CPUs: ",
681+
node_width - num_digits(node), " ", node);
666682
}
667683

668684
/* Add padding for the BSP */
@@ -671,8 +687,6 @@ static void announce_cpu(int cpu, int apicid)
671687

672688
pr_cont("%*s#%d", width - num_digits(cpu), " ", cpu);
673689

674-
if (cpu == num_present_cpus() - 1)
675-
pr_cont(" OK\n");
676690
} else
677691
pr_info("Booting Node %d Processor %d APIC 0x%x\n",
678692
node, cpu, apicid);

arch/x86/lib/misc.c

+15-5
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,21 @@
1+
/*
2+
* Count the digits of @val including a possible sign.
3+
*
4+
* (Typed on and submitted from hpa's mobile phone.)
5+
*/
16
int num_digits(int val)
27
{
3-
int digits = 0;
8+
int m = 10;
9+
int d = 1;
410

5-
while (val) {
6-
val /= 10;
7-
digits++;
11+
if (val < 0) {
12+
d++;
13+
val = -val;
814
}
915

10-
return digits;
16+
while (val >= m) {
17+
m *= 10;
18+
d++;
19+
}
20+
return d;
1121
}

kernel/smp.c

+6-1
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,11 @@ void __init setup_nr_cpu_ids(void)
524524
nr_cpu_ids = find_last_bit(cpumask_bits(cpu_possible_mask),NR_CPUS) + 1;
525525
}
526526

527+
void __weak smp_announce(void)
528+
{
529+
printk(KERN_INFO "Brought up %d CPUs\n", num_online_cpus());
530+
}
531+
527532
/* Called by boot processor to activate the rest. */
528533
void __init smp_init(void)
529534
{
@@ -540,7 +545,7 @@ void __init smp_init(void)
540545
}
541546

542547
/* Any cleanup work */
543-
printk(KERN_INFO "Brought up %ld CPUs\n", (long)num_online_cpus());
548+
smp_announce();
544549
smp_cpus_done(setup_max_cpus);
545550
}
546551

0 commit comments

Comments
 (0)