rcu: Summarize expedited RCU CPU stall warnings during CSD-lock stalls
authorPaul E. McKenney <paulmck@kernel.org>
Tue, 2 Jul 2024 04:24:29 +0000 (21:24 -0700)
committerNeeraj Upadhyay <neeraj.upadhyay@kernel.org>
Wed, 14 Aug 2024 18:40:50 +0000 (00:10 +0530)
During CSD-lock stalls, the additional information output by expedited
RCU CPU stall warnings is usually redundant, flooding the console for
not good reason.  However, this has been the way things work for a few
years.  This commit therefore uses rcutree.csd_lock_suppress_rcu_stall
kernel boot parameter that causes expedited RCU CPU stall warnings to
be abbreviated to a single line when there is at least one CPU that has
been stuck waiting for CSD lock for more than five seconds.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Neeraj Upadhyay <neeraj.upadhyay@kernel.org>
kernel/rcu/tree_exp.h

index 17dd5169012d45e4a35d4ee4c4b8e45b595057ce..d4be644afb50fcd37be160d46aba1d70771c7164 100644 (file)
@@ -553,6 +553,10 @@ static void synchronize_rcu_expedited_stall(unsigned long jiffies_start, unsigne
        struct rcu_node *rnp;
        struct rcu_node *rnp_root = rcu_get_root();
 
+       if (READ_ONCE(csd_lock_suppress_rcu_stall) && csd_lock_is_stuck()) {
+               pr_err("INFO: %s detected expedited stalls, but suppressed full report due to a stuck CSD-lock.\n", rcu_state.name);
+               return;
+       }
        pr_err("INFO: %s detected expedited stalls on CPUs/tasks: {", rcu_state.name);
        ndetected = 0;
        rcu_for_each_leaf_node(rnp) {