smp: Reduce logging due to dump_stack of CSD waiters
authorImran Khan <imran.f.khan@oracle.com>
Mon, 8 May 2023 22:31:23 +0000 (08:31 +1000)
committerPaul E. McKenney <paulmck@kernel.org>
Mon, 10 Jul 2023 21:19:04 +0000 (14:19 -0700)
If a waiter is waiting for CSD lock, its call stack will not change
between first and subsequent hang detection for the same CSD lock.
Therefore, do dump_stack only for first-time detection for a given waiter.

This avoids excessive logging on systems with hundreds of CPUs where
repetitive dump_stack from hundreds of CPUs would otherwise flood the
console.

Signed-off-by: Imran Khan <imran.f.khan@oracle.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Juergen Gross <jgross@suse.com>
Cc: Valentin Schneider <vschneid@redhat.com>
Cc: Yury Norov <yury.norov@gmail.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
kernel/smp.c

index 385179d..1d41a0c 100644 (file)
@@ -259,7 +259,8 @@ static bool csd_lock_wait_toolong(struct __call_single_data *csd, u64 ts0, u64 *
                        arch_send_call_function_single_ipi(cpu);
                }
        }
-       dump_stack();
+       if (firsttime)
+               dump_stack();
        *ts1 = ts2;
 
        return false;