Remove the per-AP "CPU %d online" printf from ap_online() and the per-CPU "enabling apic" printf from enable_apic(). Replace them with a single "smp: %d CPUs online" message printed once after all APs have come up. On systems with many CPUs, the serial lock contention from per-AP prints delays bringup long enough to trigger platform watchdogs. A single summary line provides the same information without O(ncpus) serial transactions during bringup. Signed-off-by: Giacomo Mazzola --- lib/x86/apic.c | 1 - lib/x86/smp.c | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/x86/apic.c b/lib/x86/apic.c index c538fb5f..483b26d3 100644 --- a/lib/x86/apic.c +++ b/lib/x86/apic.c @@ -237,7 +237,6 @@ void set_irq_line(unsigned line, int val) void enable_apic(void) { - printf("enabling apic\n"); xapic_write(APIC_SPIV, 0x1ff); } diff --git a/lib/x86/smp.c b/lib/x86/smp.c index 0cd44cdc..706f071a 100644 --- a/lib/x86/smp.c +++ b/lib/x86/smp.c @@ -97,7 +97,6 @@ void ap_online(void) { sti(); - printf("setup: CPU %" PRId32 " online\n", apic_id()); atomic_inc(&cpu_online_count); /* Only the BSP runs the test's main(), APs are given work via IPIs. */ @@ -294,7 +293,8 @@ void bringup_aps(void) _cpu_count = fwcfg_get_nb_cpus(); - printf("smp: waiting for %d APs\n", _cpu_count - 1); while (_cpu_count != atomic_read(&cpu_online_count)) cpu_relax(); + + printf("smp: %d CPUs online\n", _cpu_count); } -- 2.47.3 Amazon Web Services Development Center Germany GmbH Tamara-Danz-Str. 13 10243 Berlin Geschaeftsfuehrung: Christof Hellmis, Andreas Stieger Eingetragen am Amtsgericht Charlottenburg unter HRB 257764 B Sitz: Berlin Ust-ID: DE 365 538 597