From: Andrew Morton Not all architectures impement preempt (alpha), so they don't include Kconfig.preempt. net result: arch/alpha/kernel/built-in.o: In function `osf_select': : undefined reference to `__rcu_read_lock' arch/alpha/kernel/built-in.o: In function `osf_select': : undefined reference to `__rcu_read_lock' arch/alpha/kernel/built-in.o: In function `osf_select': : undefined reference to `__rcu_read_unlock' arch/alpha/kernel/built-in.o: In function `osf_select': : undefined reference to `__rcu_read_unlock' kernel/built-in.o: In function `do_sched_setscheduler': : undefined reference to `__rcu_read_lock' kernel/built-in.o: In function `do_sched_setscheduler': : undefined reference to `__rcu_read_lock' kernel/built-in.o: In function `do_sched_setscheduler': : undefined reference to `__rcu_read_unlock' kernel/built-in.o: In function `do_sched_setscheduler': : undefined reference to `__rcu_read_unlock' etc.. Move it to the general steup menu. Cc: Paul McKenney Cc: Dipankar Sarma Signed-off-by: Andrew Morton --- init/Kconfig | 27 +++++++++++++++++++++++++++ kernel/Kconfig.preempt | 26 -------------------------- 2 files changed, 27 insertions(+), 26 deletions(-) diff -puN kernel/Kconfig.preempt~rcu-preemptible-rcu-fix kernel/Kconfig.preempt --- a/kernel/Kconfig.preempt~rcu-preemptible-rcu-fix +++ a/kernel/Kconfig.preempt @@ -63,29 +63,3 @@ config PREEMPT_BKL Say Y here if you are building a kernel for a desktop system. Say N if you are unsure. -choice - prompt "RCU implementation type:" - 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. - - Say Y if you are unsure. - -config PREEMPT_RCU - bool "Preemptible RCU" - 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. - - Say N if you are unsure. - -endchoice diff -puN init/Kconfig~rcu-preemptible-rcu-fix init/Kconfig --- a/init/Kconfig~rcu-preemptible-rcu-fix +++ a/init/Kconfig @@ -483,6 +483,33 @@ config VM_EVENT_COUNTERS on EMBEDDED systems. /proc/vmstat will only show page counts if VM event counters are disabled. +choice + prompt "RCU implementation type:" + 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. + + Say Y if you are unsure. + +config PREEMPT_RCU + bool "Preemptible RCU" + 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. + + Say N if you are unsure. + +endchoice + endmenu # General setup config RT_MUTEXES _