Re: [PATCH -tip] Switch arm defconfig files fromCONFIG_CLASSIC_RCU to CONFIG_TREE_RCU.

From: Paul E. McKenney
Date: Thu Dec 25 2008 - 20:09:36 EST


On Thu, Dec 25, 2008 at 09:36:11AM +0100, Ingo Molnar wrote:
>
> below is the fix for another small buglet that hits architectures that do
> not include kernel/Kconfig.preempt.

Hmmm... Now that you mention it, I made a similar error some time back.
You would think that I would learn. :-/

Thank you, and Merry Christmas!!!

Thanx, Paul

> Ingo
>
> --------------->
> >From 12d79bafb75639f406a9f71aab94808c414c836e Mon Sep 17 00:00:00 2001
> From: Ingo Molnar <mingo@xxxxxxx>
> Date: Thu, 25 Dec 2008 09:31:28 +0100
> Subject: [PATCH] rcu: provide RCU options on non-preempt architectures too
>
> Impact: build fix
>
> Some old architectures still do not use kernel/Kconfig.preempt, so the
> moving of the RCU options there broke their build:
>
> In file included from /home/mingo/tip/include/linux/sem.h:81,
> from /home/mingo/tip/include/linux/sched.h:69,
> from /home/mingo/tip/arch/alpha/kernel/asm-offsets.c:9:
> /home/mingo/tip/include/linux/rcupdate.h:62:2: error: #error "Unknown RCU implementation specified to kernel configuration"
>
> Move these options back to init/Kconfig, which every architecture
> includes.
>
> Signed-off-by: Ingo Molnar <mingo@xxxxxxx>
> ---
> init/Kconfig | 74 +++++++++++++++++++++++++++++++++++++++++++++++
> kernel/Kconfig.preempt | 75 ------------------------------------------------
> 2 files changed, 74 insertions(+), 75 deletions(-)
>
> diff --git a/init/Kconfig b/init/Kconfig
> index 9dd7958..6b0fded 100644
> --- a/init/Kconfig
> +++ b/init/Kconfig
> @@ -928,6 +928,80 @@ source "block/Kconfig"
> config PREEMPT_NOTIFIERS
> bool
>
> +choice
> + prompt "RCU Implementation"
> + default CLASSIC_RCU
> +
> +config CLASSIC_RCU
> + bool "Classic RCU"
> + help
> + This option selects the classic RCU implementation that is
> + designed for best read-side performance on non-realtime
> + systems.
> +
> + Select this option if you are unsure.
> +
> +config TREE_RCU
> + bool "Tree-based hierarchical RCU"
> + help
> + This option selects the RCU implementation that is
> + designed for very large SMP system with hundreds or
> + thousands of CPUs.
> +
> +config PREEMPT_RCU
> + bool "Preemptible RCU"
> + depends on PREEMPT
> + help
> + This option reduces the latency of the kernel by making certain
> + RCU sections preemptible. Normally RCU code is non-preemptible, if
> + this option is selected then read-only RCU sections become
> + preemptible. This helps latency, but may expose bugs due to
> + now-naive assumptions about each RCU read-side critical section
> + remaining on a given CPU through its execution.
> +
> +endchoice
> +
> +config RCU_TRACE
> + bool "Enable tracing for RCU"
> + depends on TREE_RCU || PREEMPT_RCU
> + help
> + This option provides tracing in RCU which presents stats
> + in debugfs for debugging RCU implementation.
> +
> + Say Y here if you want to enable RCU tracing
> + Say N if you are unsure.
> +
> +config RCU_FANOUT
> + int "Tree-based hierarchical RCU fanout value"
> + range 2 64 if 64BIT
> + range 2 32 if !64BIT
> + depends on TREE_RCU
> + default 64 if 64BIT
> + default 32 if !64BIT
> + help
> + This option controls the fanout of hierarchical implementations
> + of RCU, allowing RCU to work efficiently on machines with
> + large numbers of CPUs. This value must be at least the cube
> + root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit
> + systems and up to 262,144 for 64-bit systems.
> +
> + Select a specific number if testing RCU itself.
> + Take the default if unsure.
> +
> +config RCU_FANOUT_EXACT
> + bool "Disable tree-based hierarchical RCU auto-balancing"
> + depends on TREE_RCU
> + default n
> + help
> + This option forces use of the exact RCU_FANOUT value specified,
> + regardless of imbalances in the hierarchy. This is useful for
> + testing RCU itself, and might one day be useful on systems with
> + strong NUMA behavior.
> +
> + Without RCU_FANOUT_EXACT, the code will balance the hierarchy.
> +
> + Say N if unsure.
> +
> config TREE_RCU_TRACE
> def_bool RCU_TRACE && TREE_RCU
> select DEBUG_FS
> diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt
> index 463f297..bf987b9 100644
> --- a/kernel/Kconfig.preempt
> +++ b/kernel/Kconfig.preempt
> @@ -52,78 +52,3 @@ config PREEMPT
>
> endchoice
>
> -choice
> - prompt "RCU Implementation"
> - default CLASSIC_RCU
> -
> -config CLASSIC_RCU
> - bool "Classic RCU"
> - help
> - This option selects the classic RCU implementation that is
> - designed for best read-side performance on non-realtime
> - systems.
> -
> - Select this option if you are unsure.
> -
> -config TREE_RCU
> - bool "Tree-based hierarchical RCU"
> - help
> - This option selects the RCU implementation that is
> - designed for very large SMP system with hundreds or
> - thousands of CPUs.
> -
> -config PREEMPT_RCU
> - bool "Preemptible RCU"
> - depends on PREEMPT
> - help
> - This option reduces the latency of the kernel by making certain
> - RCU sections preemptible. Normally RCU code is non-preemptible, if
> - this option is selected then read-only RCU sections become
> - preemptible. This helps latency, but may expose bugs due to
> - now-naive assumptions about each RCU read-side critical section
> - remaining on a given CPU through its execution.
> -
> -endchoice
> -
> -config RCU_TRACE
> - bool "Enable tracing for RCU"
> - depends on TREE_RCU || PREEMPT_RCU
> - help
> - This option provides tracing in RCU which presents stats
> - in debugfs for debugging RCU implementation.
> -
> - Say Y here if you want to enable RCU tracing
> - Say N if you are unsure.
> -
> -config RCU_FANOUT
> - int "Tree-based hierarchical RCU fanout value"
> - range 2 64 if 64BIT
> - range 2 32 if !64BIT
> - depends on TREE_RCU
> - default 64 if 64BIT
> - default 32 if !64BIT
> - help
> - This option controls the fanout of hierarchical implementations
> - of RCU, allowing RCU to work efficiently on machines with
> - large numbers of CPUs. This value must be at least the cube
> - root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit
> - systems and up to 262,144 for 64-bit systems.
> -
> - Select a specific number if testing RCU itself.
> - Take the default if unsure.
> -
> -config RCU_FANOUT_EXACT
> - bool "Disable tree-based hierarchical RCU auto-balancing"
> - depends on TREE_RCU
> - default n
> - help
> - This option forces use of the exact RCU_FANOUT value specified,
> - regardless of imbalances in the hierarchy. This is useful for
> - testing RCU itself, and might one day be useful on systems with
> - strong NUMA behavior.
> -
> - Without RCU_FANOUT_EXACT, the code will balance the hierarchy.
> -
> - Say n if unsure.
> -
> -
--
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/