Re: [PATCH tip/core/rcu 01/14] rcu: Fix detection of abruptly-ending stall

Josh Triplett
2012-06-15T20:41:00Z

On Fri, Jun 15, 2012 at 01:13:02PM -0700, Paul E. McKenney wrote:
> From: "Paul E. McKenney" <paul.mckenney@linaro.org>
>
> The code that attempts to identify stalls that end just as we detect
> them is broken by both flavors of initialization failure. This commit
> therefore properly initializes and computes the count of the number
> of reasons why the RCU grace period is stalled.
>
> Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>

This approach definitely seems more robust against future code changes.

Reviewed-by: Josh Triplett <josh@joshtriplett.org>

> ---
> kernel/rcutree.c | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/kernel/rcutree.c b/kernel/rcutree.c
> index 0da7b88..0f04480 100644
> --- a/kernel/rcutree.c
> +++ b/kernel/rcutree.c
> @@ -732,7 +732,7 @@ static void print_other_cpu_stall(struct rcu_state *rsp)
> int cpu;
> long delta;
> unsigned long flags;
> - int ndetected;
> + int ndetected = 0;
> struct rcu_node *rnp = rcu_get_root(rsp);
>
> /* Only let one CPU complain about others per time interval. */
> @@ -773,7 +773,7 @@ static void print_other_cpu_stall(struct rcu_state *rsp)
> */
> rnp = rcu_get_root(rsp);
> raw_spin_lock_irqsave(&rnp->lock, flags);
> - ndetected = rcu_print_task_stall(rnp);
> + ndetected += rcu_print_task_stall(rnp);
> raw_spin_unlock_irqrestore(&rnp->lock, flags);
>
> print_cpu_stall_info_end();
> --
> 1.7.8
>