Re: [PATCH] arm64: Reduce verbosity on SMP CPU stop

From: Will Deacon
Date: Fri Apr 15 2016 - 07:37:15 EST


On Fri, Apr 15, 2016 at 12:24:36PM +0200, Jan Glauber wrote:
> When CPUs are stopped during an abnormal operation like panic
> for each CPU a line is printed and the stack trace is dumped.
>
> This information is only interesting for the aborting CPU
> and on systems with many CPUs it only makes it harder to
> debug if after the aborting CPU the log is flooded with data
> about all other CPUs too.
>
> Therefore remove the stack dump and printk of other CPUs
> and only print a single line that the other CPUs are going to be
> stopped.
>
> Signed-off-by: Jan Glauber <jglauber@xxxxxxxxxx>
> ---
> arch/arm64/kernel/smp.c | 11 +++--------
> 1 file changed, 3 insertions(+), 8 deletions(-)
>
> diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c
> index b2d5f4e..e6c2eb1 100644
> --- a/arch/arm64/kernel/smp.c
> +++ b/arch/arm64/kernel/smp.c
> @@ -770,14 +770,6 @@ static DEFINE_RAW_SPINLOCK(stop_lock);
> */
> static void ipi_cpu_stop(unsigned int cpu)
> {
> - if (system_state == SYSTEM_BOOTING ||
> - system_state == SYSTEM_RUNNING) {
> - raw_spin_lock(&stop_lock);
> - pr_crit("CPU%u: stopping\n", cpu);
> - dump_stack();
> - raw_spin_unlock(&stop_lock);
> - }
> -
> set_cpu_online(cpu, false);
>
> local_irq_disable();
> @@ -872,6 +864,9 @@ void smp_send_stop(void)
> cpumask_copy(&mask, cpu_online_mask);
> cpumask_clear_cpu(smp_processor_id(), &mask);
>
> + if (system_state == SYSTEM_BOOTING ||
> + system_state == SYSTEM_RUNNING)
> + pr_crit("SMP: stopping secondary CPUs\n");

You can remove stop_lock altogether now, right? I also wonder whether
it would be worth printing out which CPUs are still online in the case where
we fail to stop all the secondaries?

Will