Re: [PATCH tip/core/rcu 1/2] rcu: Provide RCU CPU stall warnings fortiny RCU

From: Josh Triplett
Date: Sun Jan 27 2013 - 05:57:10 EST


On Sat, Jan 26, 2013 at 04:23:46PM -0800, Paul E. McKenney wrote:
> From: "Paul E. McKenney" <paul.mckenney@xxxxxxxxxx>
>
> Tiny RCU has historically omitted RCU CPU stall warnings in order to
> reduce memory requirements, however, lack of these warnings caused
> Thomas Gleixner some debugging pain recently. Therefore, this commit
> adds RCU CPU stall warnings to tiny RCU if RCU_TRACE=y. This keeps
> the memory footprint small, while still enabling CPU stall warnings
> in kernels built to enable them.
>
> Updated to include Josh Triplett's suggested use of RCU_STALL_COMMON
> config variable to simplify #if expressions.
>
> Reported-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> Signed-off-by: Paul E. McKenney <paul.mckenney@xxxxxxxxxx>
> Signed-off-by: Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx>

One suggestion below; with that change,
Reviewed-by: Josh Triplett <josh@xxxxxxxxxxxxxxxx>

> --- a/init/Kconfig
> +++ b/init/Kconfig
> @@ -486,6 +486,14 @@ config PREEMPT_RCU
> This option enables preemptible-RCU code that is common between
> the TREE_PREEMPT_RCU and TINY_PREEMPT_RCU implementations.
>
> +config RCU_STALL_COMMON
> + def_bool ( TREE_RCU || TREE_PREEMPT_RCU || RCU_TRACE )
> + help
> + This option enables RCU CPU stall code that is common between
> + the TINY and TREE variants of RCU. The purpose is to allow
> + the tiny variants to disable RCU CPU stall warnings, while
> + making these warnings mandatory for the tree variants.
> +
[...]
> --- a/lib/Kconfig.debug
> +++ b/lib/Kconfig.debug
> @@ -970,7 +970,7 @@ config RCU_TORTURE_TEST_RUNNABLE
>
> config RCU_CPU_STALL_TIMEOUT
> int "RCU CPU stall timeout in seconds"
> - depends on TREE_RCU || TREE_PREEMPT_RCU
> + depends on TREE_RCU || TREE_PREEMPT_RCU || RCU_TRACE

depends on RCU_STALL_COMMON
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/