rcu: Remove redundant TREE_PREEMPT_RCU config option
PREEMPT_RCU and TREE_PREEMPT_RCU serve the same function after TINY_PREEMPT_RCU has been removed. This patch removes TREE_PREEMPT_RCU and uses PREEMPT_RCU config option in its place. Signed-off-by: Pranith Kumar <bobby.prani@gmail.com> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
This commit is contained in:
Родитель
21871d7eff
Коммит
28f6569ab7
|
@ -36,7 +36,7 @@ o How can the updater tell when a grace period has completed
|
|||
executed in user mode, or executed in the idle loop, we can
|
||||
safely free up that item.
|
||||
|
||||
Preemptible variants of RCU (CONFIG_TREE_PREEMPT_RCU) get the
|
||||
Preemptible variants of RCU (CONFIG_PREEMPT_RCU) get the
|
||||
same effect, but require that the readers manipulate CPU-local
|
||||
counters. These counters allow limited types of blocking within
|
||||
RCU read-side critical sections. SRCU also uses CPU-local
|
||||
|
@ -81,7 +81,7 @@ o I hear that RCU is patented? What is with that?
|
|||
o I hear that RCU needs work in order to support realtime kernels?
|
||||
|
||||
This work is largely completed. Realtime-friendly RCU can be
|
||||
enabled via the CONFIG_TREE_PREEMPT_RCU kernel configuration
|
||||
enabled via the CONFIG_PREEMPT_RCU kernel configuration
|
||||
parameter. However, work is in progress for enabling priority
|
||||
boosting of preempted RCU read-side critical sections. This is
|
||||
needed if you have CPU-bound realtime threads.
|
||||
|
|
|
@ -77,7 +77,7 @@ This message indicates that CPU 5 detected that it was causing a stall,
|
|||
and that the stall was affecting RCU-sched. This message will normally be
|
||||
followed by a stack dump of the offending CPU. On TREE_RCU kernel builds,
|
||||
RCU and RCU-sched are implemented by the same underlying mechanism,
|
||||
while on TREE_PREEMPT_RCU kernel builds, RCU is instead implemented
|
||||
while on PREEMPT_RCU kernel builds, RCU is instead implemented
|
||||
by rcu_preempt_state.
|
||||
|
||||
On the other hand, if the offending CPU fails to print out a stall-warning
|
||||
|
@ -89,7 +89,7 @@ INFO: rcu_bh_state detected stalls on CPUs/tasks: { 3 5 } (detected by 2, 2502 j
|
|||
This message indicates that CPU 2 detected that CPUs 3 and 5 were both
|
||||
causing stalls, and that the stall was affecting RCU-bh. This message
|
||||
will normally be followed by stack dumps for each CPU. Please note that
|
||||
TREE_PREEMPT_RCU builds can be stalled by tasks as well as by CPUs,
|
||||
PREEMPT_RCU builds can be stalled by tasks as well as by CPUs,
|
||||
and that the tasks will be indicated by PID, for example, "P3421".
|
||||
It is even possible for a rcu_preempt_state stall to be caused by both
|
||||
CPUs -and- tasks, in which case the offending CPUs and tasks will all
|
||||
|
@ -205,10 +205,10 @@ o A CPU-bound real-time task in a CONFIG_PREEMPT kernel, which might
|
|||
o A CPU-bound real-time task in a CONFIG_PREEMPT_RT kernel that
|
||||
is running at a higher priority than the RCU softirq threads.
|
||||
This will prevent RCU callbacks from ever being invoked,
|
||||
and in a CONFIG_TREE_PREEMPT_RCU kernel will further prevent
|
||||
and in a CONFIG_PREEMPT_RCU kernel will further prevent
|
||||
RCU grace periods from ever completing. Either way, the
|
||||
system will eventually run out of memory and hang. In the
|
||||
CONFIG_TREE_PREEMPT_RCU case, you might see stall-warning
|
||||
CONFIG_PREEMPT_RCU case, you might see stall-warning
|
||||
messages.
|
||||
|
||||
o A hardware or software issue shuts off the scheduler-clock
|
||||
|
|
|
@ -8,7 +8,7 @@ The following sections describe the debugfs files and formats, first
|
|||
for rcutree and next for rcutiny.
|
||||
|
||||
|
||||
CONFIG_TREE_RCU and CONFIG_TREE_PREEMPT_RCU debugfs Files and Formats
|
||||
CONFIG_TREE_RCU and CONFIG_PREEMPT_RCU debugfs Files and Formats
|
||||
|
||||
These implementations of RCU provide several debugfs directories under the
|
||||
top-level directory "rcu":
|
||||
|
@ -18,7 +18,7 @@ rcu/rcu_preempt
|
|||
rcu/rcu_sched
|
||||
|
||||
Each directory contains files for the corresponding flavor of RCU.
|
||||
Note that rcu/rcu_preempt is only present for CONFIG_TREE_PREEMPT_RCU.
|
||||
Note that rcu/rcu_preempt is only present for CONFIG_PREEMPT_RCU.
|
||||
For CONFIG_TREE_RCU, the RCU flavor maps onto the RCU-sched flavor,
|
||||
so that activity for both appears in rcu/rcu_sched.
|
||||
|
||||
|
|
|
@ -137,7 +137,7 @@ rcu_read_lock()
|
|||
Used by a reader to inform the reclaimer that the reader is
|
||||
entering an RCU read-side critical section. It is illegal
|
||||
to block while in an RCU read-side critical section, though
|
||||
kernels built with CONFIG_TREE_PREEMPT_RCU can preempt RCU
|
||||
kernels built with CONFIG_PREEMPT_RCU can preempt RCU
|
||||
read-side critical sections. Any RCU-protected data structure
|
||||
accessed during an RCU read-side critical section is guaranteed to
|
||||
remain unreclaimed for the full duration of that critical section.
|
||||
|
|
|
@ -102,7 +102,7 @@ extern struct group_info init_groups;
|
|||
#define INIT_IDS
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_TREE_PREEMPT_RCU
|
||||
#ifdef CONFIG_PREEMPT_RCU
|
||||
#define INIT_TASK_RCU_TREE_PREEMPT() \
|
||||
.rcu_blocked_node = NULL,
|
||||
#else
|
||||
|
|
|
@ -57,7 +57,7 @@ enum rcutorture_type {
|
|||
INVALID_RCU_FLAVOR
|
||||
};
|
||||
|
||||
#if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU)
|
||||
#if defined(CONFIG_TREE_RCU) || defined(CONFIG_PREEMPT_RCU)
|
||||
void rcutorture_get_gp_data(enum rcutorture_type test_type, int *flags,
|
||||
unsigned long *gpnum, unsigned long *completed);
|
||||
void rcutorture_record_test_transition(void);
|
||||
|
@ -365,7 +365,7 @@ typedef void call_rcu_func_t(struct rcu_head *head,
|
|||
void (*func)(struct rcu_head *head));
|
||||
void wait_rcu_gp(call_rcu_func_t crf);
|
||||
|
||||
#if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU)
|
||||
#if defined(CONFIG_TREE_RCU) || defined(CONFIG_PREEMPT_RCU)
|
||||
#include <linux/rcutree.h>
|
||||
#elif defined(CONFIG_TINY_RCU)
|
||||
#include <linux/rcutiny.h>
|
||||
|
@ -852,7 +852,7 @@ static inline void rcu_preempt_sleep_check(void)
|
|||
*
|
||||
* In non-preemptible RCU implementations (TREE_RCU and TINY_RCU),
|
||||
* it is illegal to block while in an RCU read-side critical section.
|
||||
* In preemptible RCU implementations (TREE_PREEMPT_RCU) in CONFIG_PREEMPT
|
||||
* In preemptible RCU implementations (PREEMPT_RCU) in CONFIG_PREEMPT
|
||||
* kernel builds, RCU read-side critical sections may be preempted,
|
||||
* but explicit blocking is illegal. Finally, in preemptible RCU
|
||||
* implementations in real-time (with -rt patchset) kernel builds, RCU
|
||||
|
|
|
@ -1278,9 +1278,9 @@ struct task_struct {
|
|||
union rcu_special rcu_read_unlock_special;
|
||||
struct list_head rcu_node_entry;
|
||||
#endif /* #ifdef CONFIG_PREEMPT_RCU */
|
||||
#ifdef CONFIG_TREE_PREEMPT_RCU
|
||||
#ifdef CONFIG_PREEMPT_RCU
|
||||
struct rcu_node *rcu_blocked_node;
|
||||
#endif /* #ifdef CONFIG_TREE_PREEMPT_RCU */
|
||||
#endif /* #ifdef CONFIG_PREEMPT_RCU */
|
||||
#ifdef CONFIG_TASKS_RCU
|
||||
unsigned long rcu_tasks_nvcsw;
|
||||
bool rcu_tasks_holdout;
|
||||
|
|
|
@ -36,7 +36,7 @@ TRACE_EVENT(rcu_utilization,
|
|||
|
||||
#ifdef CONFIG_RCU_TRACE
|
||||
|
||||
#if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU)
|
||||
#if defined(CONFIG_TREE_RCU) || defined(CONFIG_PREEMPT_RCU)
|
||||
|
||||
/*
|
||||
* Tracepoint for grace-period events. Takes a string identifying the
|
||||
|
@ -345,7 +345,7 @@ TRACE_EVENT(rcu_fqs,
|
|||
__entry->cpu, __entry->qsevent)
|
||||
);
|
||||
|
||||
#endif /* #if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU) */
|
||||
#endif /* #if defined(CONFIG_TREE_RCU) || defined(CONFIG_PREEMPT_RCU) */
|
||||
|
||||
/*
|
||||
* Tracepoint for dyntick-idle entry/exit events. These take a string
|
||||
|
|
22
init/Kconfig
22
init/Kconfig
|
@ -477,7 +477,7 @@ config TREE_RCU
|
|||
thousands of CPUs. It also scales down nicely to
|
||||
smaller systems.
|
||||
|
||||
config TREE_PREEMPT_RCU
|
||||
config PREEMPT_RCU
|
||||
bool "Preemptible tree-based hierarchical RCU"
|
||||
depends on PREEMPT
|
||||
select IRQ_WORK
|
||||
|
@ -501,12 +501,6 @@ config TINY_RCU
|
|||
|
||||
endchoice
|
||||
|
||||
config PREEMPT_RCU
|
||||
def_bool TREE_PREEMPT_RCU
|
||||
help
|
||||
This option enables preemptible-RCU code that is common between
|
||||
TREE_PREEMPT_RCU and, in the old days, TINY_PREEMPT_RCU.
|
||||
|
||||
config TASKS_RCU
|
||||
bool "Task_based RCU implementation using voluntary context switch"
|
||||
default n
|
||||
|
@ -518,7 +512,7 @@ config TASKS_RCU
|
|||
If unsure, say N.
|
||||
|
||||
config RCU_STALL_COMMON
|
||||
def_bool ( TREE_RCU || TREE_PREEMPT_RCU || RCU_TRACE )
|
||||
def_bool ( TREE_RCU || 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
|
||||
|
@ -576,7 +570,7 @@ config RCU_FANOUT
|
|||
int "Tree-based hierarchical RCU fanout value"
|
||||
range 2 64 if 64BIT
|
||||
range 2 32 if !64BIT
|
||||
depends on TREE_RCU || TREE_PREEMPT_RCU
|
||||
depends on TREE_RCU || PREEMPT_RCU
|
||||
default 64 if 64BIT
|
||||
default 32 if !64BIT
|
||||
help
|
||||
|
@ -596,7 +590,7 @@ config RCU_FANOUT_LEAF
|
|||
int "Tree-based hierarchical RCU leaf-level fanout value"
|
||||
range 2 RCU_FANOUT if 64BIT
|
||||
range 2 RCU_FANOUT if !64BIT
|
||||
depends on TREE_RCU || TREE_PREEMPT_RCU
|
||||
depends on TREE_RCU || PREEMPT_RCU
|
||||
default 16
|
||||
help
|
||||
This option controls the leaf-level fanout of hierarchical
|
||||
|
@ -621,7 +615,7 @@ config RCU_FANOUT_LEAF
|
|||
|
||||
config RCU_FANOUT_EXACT
|
||||
bool "Disable tree-based hierarchical RCU auto-balancing"
|
||||
depends on TREE_RCU || TREE_PREEMPT_RCU
|
||||
depends on TREE_RCU || PREEMPT_RCU
|
||||
default n
|
||||
help
|
||||
This option forces use of the exact RCU_FANOUT value specified,
|
||||
|
@ -652,11 +646,11 @@ config RCU_FAST_NO_HZ
|
|||
Say N if you are unsure.
|
||||
|
||||
config TREE_RCU_TRACE
|
||||
def_bool RCU_TRACE && ( TREE_RCU || TREE_PREEMPT_RCU )
|
||||
def_bool RCU_TRACE && ( TREE_RCU || PREEMPT_RCU )
|
||||
select DEBUG_FS
|
||||
help
|
||||
This option provides tracing for the TREE_RCU and
|
||||
TREE_PREEMPT_RCU implementations, permitting Makefile to
|
||||
PREEMPT_RCU implementations, permitting Makefile to
|
||||
trivially select kernel/rcutree_trace.c.
|
||||
|
||||
config RCU_BOOST
|
||||
|
@ -716,7 +710,7 @@ config RCU_BOOST_DELAY
|
|||
|
||||
config RCU_NOCB_CPU
|
||||
bool "Offload RCU callback processing from boot-selected CPUs"
|
||||
depends on TREE_RCU || TREE_PREEMPT_RCU
|
||||
depends on TREE_RCU || PREEMPT_RCU
|
||||
default n
|
||||
help
|
||||
Use this option to reduce OS jitter for aggressive HPC or
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
obj-y += update.o srcu.o
|
||||
obj-$(CONFIG_RCU_TORTURE_TEST) += rcutorture.o
|
||||
obj-$(CONFIG_TREE_RCU) += tree.o
|
||||
obj-$(CONFIG_TREE_PREEMPT_RCU) += tree.o
|
||||
obj-$(CONFIG_PREEMPT_RCU) += tree.o
|
||||
obj-$(CONFIG_TREE_RCU_TRACE) += tree_trace.o
|
||||
obj-$(CONFIG_TINY_RCU) += tiny.o
|
||||
|
|
|
@ -139,7 +139,7 @@ struct rcu_node {
|
|||
unsigned long expmask; /* Groups that have ->blkd_tasks */
|
||||
/* elements that need to drain to allow the */
|
||||
/* current expedited grace period to */
|
||||
/* complete (only for TREE_PREEMPT_RCU). */
|
||||
/* complete (only for PREEMPT_RCU). */
|
||||
unsigned long qsmaskinit;
|
||||
/* Per-GP initial value for qsmask & expmask. */
|
||||
unsigned long grpmask; /* Mask to apply to parent qsmask. */
|
||||
|
@ -530,10 +530,10 @@ DECLARE_PER_CPU(struct rcu_data, rcu_sched_data);
|
|||
extern struct rcu_state rcu_bh_state;
|
||||
DECLARE_PER_CPU(struct rcu_data, rcu_bh_data);
|
||||
|
||||
#ifdef CONFIG_TREE_PREEMPT_RCU
|
||||
#ifdef CONFIG_PREEMPT_RCU
|
||||
extern struct rcu_state rcu_preempt_state;
|
||||
DECLARE_PER_CPU(struct rcu_data, rcu_preempt_data);
|
||||
#endif /* #ifdef CONFIG_TREE_PREEMPT_RCU */
|
||||
#endif /* #ifdef CONFIG_PREEMPT_RCU */
|
||||
|
||||
#ifdef CONFIG_RCU_BOOST
|
||||
DECLARE_PER_CPU(unsigned int, rcu_cpu_kthread_status);
|
||||
|
@ -563,10 +563,10 @@ static int rcu_preempt_offline_tasks(struct rcu_state *rsp,
|
|||
#endif /* #ifdef CONFIG_HOTPLUG_CPU */
|
||||
static void rcu_preempt_check_callbacks(int cpu);
|
||||
void call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu));
|
||||
#if defined(CONFIG_HOTPLUG_CPU) || defined(CONFIG_TREE_PREEMPT_RCU)
|
||||
#if defined(CONFIG_HOTPLUG_CPU) || defined(CONFIG_PREEMPT_RCU)
|
||||
static void rcu_report_exp_rnp(struct rcu_state *rsp, struct rcu_node *rnp,
|
||||
bool wake);
|
||||
#endif /* #if defined(CONFIG_HOTPLUG_CPU) || defined(CONFIG_TREE_PREEMPT_RCU) */
|
||||
#endif /* #if defined(CONFIG_HOTPLUG_CPU) || defined(CONFIG_PREEMPT_RCU) */
|
||||
static void __init __rcu_init_preempt(void);
|
||||
static void rcu_initiate_boost(struct rcu_node *rnp, unsigned long flags);
|
||||
static void rcu_preempt_boost_start_gp(struct rcu_node *rnp);
|
||||
|
|
|
@ -100,7 +100,7 @@ static void __init rcu_bootup_announce_oddness(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
#ifdef CONFIG_TREE_PREEMPT_RCU
|
||||
#ifdef CONFIG_PREEMPT_RCU
|
||||
|
||||
RCU_STATE_INITIALIZER(rcu_preempt, 'p', call_rcu);
|
||||
static struct rcu_state *rcu_state_p = &rcu_preempt_state;
|
||||
|
@ -932,7 +932,7 @@ void exit_rcu(void)
|
|||
__rcu_read_unlock();
|
||||
}
|
||||
|
||||
#else /* #ifdef CONFIG_TREE_PREEMPT_RCU */
|
||||
#else /* #ifdef CONFIG_PREEMPT_RCU */
|
||||
|
||||
static struct rcu_state *rcu_state_p = &rcu_sched_state;
|
||||
|
||||
|
@ -1083,7 +1083,7 @@ void exit_rcu(void)
|
|||
{
|
||||
}
|
||||
|
||||
#endif /* #else #ifdef CONFIG_TREE_PREEMPT_RCU */
|
||||
#endif /* #else #ifdef CONFIG_PREEMPT_RCU */
|
||||
|
||||
#ifdef CONFIG_RCU_BOOST
|
||||
|
||||
|
|
|
@ -306,7 +306,7 @@ struct debug_obj_descr rcuhead_debug_descr = {
|
|||
EXPORT_SYMBOL_GPL(rcuhead_debug_descr);
|
||||
#endif /* #ifdef CONFIG_DEBUG_OBJECTS_RCU_HEAD */
|
||||
|
||||
#if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU) || defined(CONFIG_RCU_TRACE)
|
||||
#if defined(CONFIG_TREE_RCU) || defined(CONFIG_PREEMPT_RCU) || defined(CONFIG_RCU_TRACE)
|
||||
void do_trace_rcu_torture_read(const char *rcutorturename, struct rcu_head *rhp,
|
||||
unsigned long secs,
|
||||
unsigned long c_old, unsigned long c)
|
||||
|
|
|
@ -1252,7 +1252,7 @@ config RCU_CPU_STALL_VERBOSE
|
|||
|
||||
config RCU_CPU_STALL_INFO
|
||||
bool "Print additional diagnostics on RCU CPU stall"
|
||||
depends on (TREE_RCU || TREE_PREEMPT_RCU) && DEBUG_KERNEL
|
||||
depends on (TREE_RCU || PREEMPT_RCU) && DEBUG_KERNEL
|
||||
default n
|
||||
help
|
||||
For each stalled CPU that is aware of the current RCU grace
|
||||
|
|
|
@ -2,7 +2,7 @@ CONFIG_SMP=y
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_HZ_PERIODIC=n
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_NO_HZ_FULL=n
|
||||
|
|
|
@ -3,7 +3,7 @@ CONFIG_NR_CPUS=8
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_HZ_PERIODIC=n
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_NO_HZ_FULL=n
|
||||
|
|
|
@ -3,7 +3,7 @@ CONFIG_NR_CPUS=8
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_HZ_PERIODIC=n
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_NO_HZ_FULL=n
|
||||
|
|
|
@ -3,7 +3,7 @@ CONFIG_NR_CPUS=8
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_HZ_PERIODIC=y
|
||||
CONFIG_NO_HZ_IDLE=n
|
||||
CONFIG_NO_HZ_FULL=n
|
||||
|
|
|
@ -3,7 +3,7 @@ CONFIG_NR_CPUS=16
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_HZ_PERIODIC=n
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_NO_HZ_FULL=n
|
||||
|
|
|
@ -3,7 +3,7 @@ CONFIG_NR_CPUS=16
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_HZ_PERIODIC=n
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_NO_HZ_FULL=n
|
||||
|
|
|
@ -3,7 +3,7 @@ CONFIG_NR_CPUS=1
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_HZ_PERIODIC=n
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_NO_HZ_FULL=n
|
||||
|
|
|
@ -9,7 +9,7 @@ CONFIG_HOTPLUG_CPU=y
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_RCU_TORTURE_TEST=m
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
|
|
|
@ -10,7 +10,7 @@ CONFIG_HIBERNATION=n
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_RCU_TORTURE_TEST=m
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
|
|
|
@ -10,7 +10,7 @@ CONFIG_HIBERNATION=n
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_RCU_TORTURE_TEST=m
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
|
|
|
@ -8,7 +8,7 @@ CONFIG_HOTPLUG_CPU=y
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_RCU_TORTURE_TEST=m
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
|
|
|
@ -11,7 +11,7 @@ CONFIG_HIBERNATION=n
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_DEBUG_OBJECTS=y
|
||||
CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
|
||||
|
|
|
@ -10,7 +10,7 @@ CONFIG_HOTPLUG_CPU=y
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_RCU_TORTURE_TEST=m
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
|
|
|
@ -10,7 +10,7 @@ CONFIG_HIBERNATION=n
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_RCU_TORTURE_TEST=m
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
|
|
|
@ -10,7 +10,7 @@ CONFIG_HIBERNATION=n
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_RCU_TORTURE_TEST=m
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
|
|
|
@ -8,7 +8,7 @@ CONFIG_HOTPLUG_CPU=y
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_RCU_TORTURE_TEST=m
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
|
|
|
@ -11,7 +11,7 @@ CONFIG_HIBERNATION=n
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_DEBUG_OBJECTS=y
|
||||
CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
|
||||
|
|
|
@ -8,7 +8,7 @@ CONFIG_HIBERNATION=n
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_TREE_PREEMPT_RCU=y
|
||||
CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_RCU_TORTURE_TEST=m
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
|
|
|
@ -14,7 +14,7 @@ CONFIG_HIBERNATION=n
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_RCU_TORTURE_TEST=m
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_PROVE_LOCKING=y
|
||||
|
|
|
@ -14,7 +14,7 @@ CONFIG_HIBERNATION=n
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_RCU_TORTURE_TEST=m
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_PROVE_LOCKING=y
|
||||
|
|
|
@ -14,7 +14,7 @@ CONFIG_HIBERNATION=n
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_RCU_TORTURE_TEST=m
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_PROVE_LOCKING=y
|
||||
|
|
|
@ -14,7 +14,7 @@ CONFIG_HIBERNATION=n
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_RCU_TORTURE_TEST=m
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_PROVE_LOCKING=y
|
||||
|
|
|
@ -10,7 +10,7 @@ CONFIG_HOTPLUG_CPU=y
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_RCU_TORTURE_TEST=m
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
|
|
|
@ -10,7 +10,7 @@ CONFIG_HIBERNATION=n
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_RCU_TORTURE_TEST=m
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
|
|
|
@ -10,7 +10,7 @@ CONFIG_HIBERNATION=n
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_RCU_TORTURE_TEST=m
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
|
|
|
@ -8,7 +8,7 @@ CONFIG_HOTPLUG_CPU=y
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_RCU_TORTURE_TEST=m
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
|
|
|
@ -11,7 +11,7 @@ CONFIG_HIBERNATION=n
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_DEBUG_OBJECTS=y
|
||||
CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
|
||||
|
|
|
@ -10,7 +10,7 @@ CONFIG_HOTPLUG_CPU=y
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_RCU_TORTURE_TEST=m
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
|
|
|
@ -10,7 +10,7 @@ CONFIG_HIBERNATION=n
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_RCU_TORTURE_TEST=m
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
|
|
|
@ -10,7 +10,7 @@ CONFIG_HIBERNATION=n
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_RCU_TORTURE_TEST=m
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
|
|
|
@ -8,7 +8,7 @@ CONFIG_HOTPLUG_CPU=y
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_RCU_TORTURE_TEST=m
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
|
|
|
@ -11,7 +11,7 @@ CONFIG_HIBERNATION=n
|
|||
CONFIG_PREEMPT_NONE=n
|
||||
CONFIG_PREEMPT_VOLUNTARY=n
|
||||
CONFIG_PREEMPT=y
|
||||
#CHECK#CONFIG_TREE_PREEMPT_RCU=y
|
||||
#CHECK#CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_DEBUG_OBJECTS=y
|
||||
CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
|
||||
|
|
|
@ -34,7 +34,7 @@ CONFIG_PREEMPT
|
|||
CONFIG_PREEMPT_RCU
|
||||
CONFIG_SMP
|
||||
CONFIG_TINY_RCU
|
||||
CONFIG_TREE_PREEMPT_RCU
|
||||
CONFIG_PREEMPT_RCU
|
||||
CONFIG_TREE_RCU
|
||||
|
||||
All forced by CONFIG_TINY_RCU.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
This document gives a brief rationale for the TREE_RCU-related test
|
||||
cases, a group that includes TREE_PREEMPT_RCU.
|
||||
cases, a group that includes PREEMPT_RCU.
|
||||
|
||||
|
||||
Kconfig Parameters:
|
||||
|
@ -14,7 +14,7 @@ CONFIG_NO_HZ_FULL_SYSIDLE -- Do one.
|
|||
CONFIG_PREEMPT -- Do half. (First three and #8.)
|
||||
CONFIG_PROVE_LOCKING -- Do all but two, covering CONFIG_PROVE_RCU and not.
|
||||
CONFIG_PROVE_RCU -- Do all but one under CONFIG_PROVE_LOCKING.
|
||||
CONFIG_RCU_BOOST -- one of TREE_PREEMPT_RCU.
|
||||
CONFIG_RCU_BOOST -- one of PREEMPT_RCU.
|
||||
CONFIG_RCU_KTHREAD_PRIO -- set to 2 for _BOOST testing.
|
||||
CONFIG_RCU_CPU_STALL_INFO -- Do one.
|
||||
CONFIG_RCU_CPU_STALL_VERBOSE -- do one with and without _INFO.
|
||||
|
@ -27,7 +27,7 @@ CONFIG_RCU_NOCB_CPU_ALL -- Do one.
|
|||
CONFIG_RCU_NOCB_CPU_NONE -- Do one.
|
||||
CONFIG_RCU_NOCB_CPU_ZERO -- Do one.
|
||||
CONFIG_RCU_TRACE -- Do half.
|
||||
CONFIG_SMP -- Need one !SMP for TREE_PREEMPT_RCU.
|
||||
CONFIG_SMP -- Need one !SMP for PREEMPT_RCU.
|
||||
RCU-bh: Do one with PREEMPT and one with !PREEMPT.
|
||||
RCU-sched: Do one with PREEMPT but not BOOST.
|
||||
|
||||
|
@ -77,7 +77,7 @@ CONFIG_RCU_CPU_STALL_TIMEOUT
|
|||
|
||||
CONFIG_RCU_STALL_COMMON
|
||||
|
||||
Implied by TREE_RCU and TREE_PREEMPT_RCU.
|
||||
Implied by TREE_RCU and PREEMPT_RCU.
|
||||
|
||||
CONFIG_RCU_TORTURE_TEST
|
||||
CONFIG_RCU_TORTURE_TEST_RUNNABLE
|
||||
|
@ -88,7 +88,7 @@ CONFIG_RCU_USER_QS
|
|||
|
||||
Redundant with CONFIG_NO_HZ_FULL.
|
||||
|
||||
CONFIG_TREE_PREEMPT_RCU
|
||||
CONFIG_PREEMPT_RCU
|
||||
CONFIG_TREE_RCU
|
||||
|
||||
These are controlled by CONFIG_PREEMPT.
|
||||
|
|
Загрузка…
Ссылка в новой задаче