rcu: Remove CONFIG_RCU_CPU_STALL_INFO
The CONFIG_RCU_CPU_STALL_INFO has been default-y for a couple of releases with no complaints, so it is time to eliminate this Kconfig option entirely, so that the long-form RCU CPU stall warnings cannot be disabled. This commit does just that. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
This commit is contained in:
parent
9b68387450
commit
75c27f119b
16 changed files with 2 additions and 85 deletions
|
@ -26,12 +26,6 @@ CONFIG_RCU_CPU_STALL_TIMEOUT
|
||||||
Stall-warning messages may be enabled and disabled completely via
|
Stall-warning messages may be enabled and disabled completely via
|
||||||
/sys/module/rcupdate/parameters/rcu_cpu_stall_suppress.
|
/sys/module/rcupdate/parameters/rcu_cpu_stall_suppress.
|
||||||
|
|
||||||
CONFIG_RCU_CPU_STALL_INFO
|
|
||||||
|
|
||||||
This kernel configuration parameter causes the stall warning to
|
|
||||||
print out additional per-CPU diagnostic information, including
|
|
||||||
information on scheduling-clock ticks and RCU's idle-CPU tracking.
|
|
||||||
|
|
||||||
RCU_STALL_DELAY_DELTA
|
RCU_STALL_DELAY_DELTA
|
||||||
|
|
||||||
Although the lockdep facility is extremely useful, it does add
|
Although the lockdep facility is extremely useful, it does add
|
||||||
|
@ -101,15 +95,13 @@ interact. Please note that it is not possible to entirely eliminate this
|
||||||
sort of false positive without resorting to things like stop_machine(),
|
sort of false positive without resorting to things like stop_machine(),
|
||||||
which is overkill for this sort of problem.
|
which is overkill for this sort of problem.
|
||||||
|
|
||||||
If the CONFIG_RCU_CPU_STALL_INFO kernel configuration parameter is set,
|
Recent kernels will print a long form of the stall-warning message:
|
||||||
more information is printed with the stall-warning message, for example:
|
|
||||||
|
|
||||||
INFO: rcu_preempt detected stall on CPU
|
INFO: rcu_preempt detected stall on CPU
|
||||||
0: (63959 ticks this GP) idle=241/3fffffffffffffff/0 softirq=82/543
|
0: (63959 ticks this GP) idle=241/3fffffffffffffff/0 softirq=82/543
|
||||||
(t=65000 jiffies)
|
(t=65000 jiffies)
|
||||||
|
|
||||||
In kernels with CONFIG_RCU_FAST_NO_HZ, even more information is
|
In kernels with CONFIG_RCU_FAST_NO_HZ, more information is printed:
|
||||||
printed:
|
|
||||||
|
|
||||||
INFO: rcu_preempt detected stall on CPU
|
INFO: rcu_preempt detected stall on CPU
|
||||||
0: (64628 ticks this GP) idle=dd5/3fffffffffffffff/0 softirq=82/543 last_accelerate: a345/d342 nonlazy_posted: 25 .D
|
0: (64628 ticks this GP) idle=dd5/3fffffffffffffff/0 softirq=82/543 last_accelerate: a345/d342 nonlazy_posted: 25 .D
|
||||||
|
|
|
@ -288,12 +288,10 @@ struct rcu_data {
|
||||||
bool gpwrap; /* Possible gpnum/completed wrap. */
|
bool gpwrap; /* Possible gpnum/completed wrap. */
|
||||||
struct rcu_node *mynode; /* This CPU's leaf of hierarchy */
|
struct rcu_node *mynode; /* This CPU's leaf of hierarchy */
|
||||||
unsigned long grpmask; /* Mask to apply to leaf qsmask. */
|
unsigned long grpmask; /* Mask to apply to leaf qsmask. */
|
||||||
#ifdef CONFIG_RCU_CPU_STALL_INFO
|
|
||||||
unsigned long ticks_this_gp; /* The number of scheduling-clock */
|
unsigned long ticks_this_gp; /* The number of scheduling-clock */
|
||||||
/* ticks this CPU has handled */
|
/* ticks this CPU has handled */
|
||||||
/* during and after the last grace */
|
/* during and after the last grace */
|
||||||
/* period it is aware of. */
|
/* period it is aware of. */
|
||||||
#endif /* #ifdef CONFIG_RCU_CPU_STALL_INFO */
|
|
||||||
|
|
||||||
/* 2) batch handling */
|
/* 2) batch handling */
|
||||||
/*
|
/*
|
||||||
|
@ -388,9 +386,7 @@ struct rcu_data {
|
||||||
#endif /* #ifdef CONFIG_RCU_NOCB_CPU */
|
#endif /* #ifdef CONFIG_RCU_NOCB_CPU */
|
||||||
|
|
||||||
/* 8) RCU CPU stall data. */
|
/* 8) RCU CPU stall data. */
|
||||||
#ifdef CONFIG_RCU_CPU_STALL_INFO
|
|
||||||
unsigned int softirq_snap; /* Snapshot of softirq activity. */
|
unsigned int softirq_snap; /* Snapshot of softirq activity. */
|
||||||
#endif /* #ifdef CONFIG_RCU_CPU_STALL_INFO */
|
|
||||||
|
|
||||||
int cpu;
|
int cpu;
|
||||||
struct rcu_state *rsp;
|
struct rcu_state *rsp;
|
||||||
|
|
|
@ -82,8 +82,6 @@ static void __init rcu_bootup_announce_oddness(void)
|
||||||
pr_info("\tRCU lockdep checking is enabled.\n");
|
pr_info("\tRCU lockdep checking is enabled.\n");
|
||||||
if (IS_ENABLED(CONFIG_RCU_TORTURE_TEST_RUNNABLE))
|
if (IS_ENABLED(CONFIG_RCU_TORTURE_TEST_RUNNABLE))
|
||||||
pr_info("\tRCU torture testing starts during boot.\n");
|
pr_info("\tRCU torture testing starts during boot.\n");
|
||||||
if (IS_ENABLED(CONFIG_RCU_CPU_STALL_INFO))
|
|
||||||
pr_info("\tAdditional per-CPU info printed with stalls.\n");
|
|
||||||
if (RCU_NUM_LVLS >= 4)
|
if (RCU_NUM_LVLS >= 4)
|
||||||
pr_info("\tFour(or more)-level hierarchy is enabled.\n");
|
pr_info("\tFour(or more)-level hierarchy is enabled.\n");
|
||||||
if (RCU_FANOUT_LEAF != 16)
|
if (RCU_FANOUT_LEAF != 16)
|
||||||
|
@ -418,8 +416,6 @@ static void rcu_print_detail_task_stall(struct rcu_state *rsp)
|
||||||
rcu_print_detail_task_stall_rnp(rnp);
|
rcu_print_detail_task_stall_rnp(rnp);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_RCU_CPU_STALL_INFO
|
|
||||||
|
|
||||||
static void rcu_print_task_stall_begin(struct rcu_node *rnp)
|
static void rcu_print_task_stall_begin(struct rcu_node *rnp)
|
||||||
{
|
{
|
||||||
pr_err("\tTasks blocked on level-%d rcu_node (CPUs %d-%d):",
|
pr_err("\tTasks blocked on level-%d rcu_node (CPUs %d-%d):",
|
||||||
|
@ -431,18 +427,6 @@ static void rcu_print_task_stall_end(void)
|
||||||
pr_cont("\n");
|
pr_cont("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* #ifdef CONFIG_RCU_CPU_STALL_INFO */
|
|
||||||
|
|
||||||
static void rcu_print_task_stall_begin(struct rcu_node *rnp)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static void rcu_print_task_stall_end(void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* #else #ifdef CONFIG_RCU_CPU_STALL_INFO */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Scan the current list of tasks blocked within RCU read-side critical
|
* Scan the current list of tasks blocked within RCU read-side critical
|
||||||
* sections, printing out the tid of each.
|
* sections, printing out the tid of each.
|
||||||
|
@ -1685,8 +1669,6 @@ early_initcall(rcu_register_oom_notifier);
|
||||||
|
|
||||||
#endif /* #else #if !defined(CONFIG_RCU_FAST_NO_HZ) */
|
#endif /* #else #if !defined(CONFIG_RCU_FAST_NO_HZ) */
|
||||||
|
|
||||||
#ifdef CONFIG_RCU_CPU_STALL_INFO
|
|
||||||
|
|
||||||
#ifdef CONFIG_RCU_FAST_NO_HZ
|
#ifdef CONFIG_RCU_FAST_NO_HZ
|
||||||
|
|
||||||
static void print_cpu_stall_fast_no_hz(char *cp, int cpu)
|
static void print_cpu_stall_fast_no_hz(char *cp, int cpu)
|
||||||
|
@ -1775,33 +1757,6 @@ static void increment_cpu_stall_ticks(void)
|
||||||
raw_cpu_inc(rsp->rda->ticks_this_gp);
|
raw_cpu_inc(rsp->rda->ticks_this_gp);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* #ifdef CONFIG_RCU_CPU_STALL_INFO */
|
|
||||||
|
|
||||||
static void print_cpu_stall_info_begin(void)
|
|
||||||
{
|
|
||||||
pr_cont(" {");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void print_cpu_stall_info(struct rcu_state *rsp, int cpu)
|
|
||||||
{
|
|
||||||
pr_cont(" %d", cpu);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void print_cpu_stall_info_end(void)
|
|
||||||
{
|
|
||||||
pr_cont("} ");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void zero_cpu_stall_ticks(struct rcu_data *rdp)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static void increment_cpu_stall_ticks(void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* #else #ifdef CONFIG_RCU_CPU_STALL_INFO */
|
|
||||||
|
|
||||||
#ifdef CONFIG_RCU_NOCB_CPU
|
#ifdef CONFIG_RCU_NOCB_CPU
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1353,20 +1353,6 @@ config RCU_CPU_STALL_TIMEOUT
|
||||||
RCU grace period persists, additional CPU stall warnings are
|
RCU grace period persists, additional CPU stall warnings are
|
||||||
printed at more widely spaced intervals.
|
printed at more widely spaced intervals.
|
||||||
|
|
||||||
config RCU_CPU_STALL_INFO
|
|
||||||
bool "Print additional diagnostics on RCU CPU stall"
|
|
||||||
depends on (TREE_RCU || PREEMPT_RCU) && DEBUG_KERNEL
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
For each stalled CPU that is aware of the current RCU grace
|
|
||||||
period, print out additional per-CPU diagnostic information
|
|
||||||
regarding scheduling-clock ticks, idle state, and,
|
|
||||||
for RCU_FAST_NO_HZ kernels, idle-entry state.
|
|
||||||
|
|
||||||
Say N if you are unsure.
|
|
||||||
|
|
||||||
Say Y if you want to enable such diagnostics.
|
|
||||||
|
|
||||||
config RCU_TRACE
|
config RCU_TRACE
|
||||||
bool "Enable tracing for RCU"
|
bool "Enable tracing for RCU"
|
||||||
depends on DEBUG_KERNEL
|
depends on DEBUG_KERNEL
|
||||||
|
|
|
@ -13,7 +13,6 @@ CONFIG_MAXSMP=y
|
||||||
CONFIG_RCU_NOCB_CPU=y
|
CONFIG_RCU_NOCB_CPU=y
|
||||||
CONFIG_RCU_NOCB_CPU_ZERO=y
|
CONFIG_RCU_NOCB_CPU_ZERO=y
|
||||||
CONFIG_DEBUG_LOCK_ALLOC=n
|
CONFIG_DEBUG_LOCK_ALLOC=n
|
||||||
CONFIG_RCU_CPU_STALL_INFO=n
|
|
||||||
CONFIG_RCU_BOOST=n
|
CONFIG_RCU_BOOST=n
|
||||||
CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
|
CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
|
||||||
CONFIG_RCU_EXPERT=y
|
CONFIG_RCU_EXPERT=y
|
||||||
|
|
|
@ -17,7 +17,6 @@ CONFIG_RCU_FANOUT_LEAF=3
|
||||||
CONFIG_RCU_NOCB_CPU=n
|
CONFIG_RCU_NOCB_CPU=n
|
||||||
CONFIG_DEBUG_LOCK_ALLOC=y
|
CONFIG_DEBUG_LOCK_ALLOC=y
|
||||||
CONFIG_PROVE_LOCKING=n
|
CONFIG_PROVE_LOCKING=n
|
||||||
CONFIG_RCU_CPU_STALL_INFO=n
|
|
||||||
CONFIG_RCU_BOOST=n
|
CONFIG_RCU_BOOST=n
|
||||||
CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
|
CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
|
||||||
CONFIG_RCU_EXPERT=y
|
CONFIG_RCU_EXPERT=y
|
||||||
|
|
|
@ -17,6 +17,5 @@ CONFIG_RCU_FANOUT_LEAF=3
|
||||||
CONFIG_RCU_NOCB_CPU=n
|
CONFIG_RCU_NOCB_CPU=n
|
||||||
CONFIG_DEBUG_LOCK_ALLOC=y
|
CONFIG_DEBUG_LOCK_ALLOC=y
|
||||||
CONFIG_PROVE_LOCKING=n
|
CONFIG_PROVE_LOCKING=n
|
||||||
CONFIG_RCU_CPU_STALL_INFO=n
|
|
||||||
CONFIG_RCU_BOOST=n
|
CONFIG_RCU_BOOST=n
|
||||||
CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
|
CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
|
||||||
|
|
|
@ -13,7 +13,6 @@ CONFIG_RCU_FANOUT=2
|
||||||
CONFIG_RCU_FANOUT_LEAF=2
|
CONFIG_RCU_FANOUT_LEAF=2
|
||||||
CONFIG_RCU_NOCB_CPU=n
|
CONFIG_RCU_NOCB_CPU=n
|
||||||
CONFIG_DEBUG_LOCK_ALLOC=n
|
CONFIG_DEBUG_LOCK_ALLOC=n
|
||||||
CONFIG_RCU_CPU_STALL_INFO=n
|
|
||||||
CONFIG_RCU_BOOST=y
|
CONFIG_RCU_BOOST=y
|
||||||
CONFIG_RCU_KTHREAD_PRIO=2
|
CONFIG_RCU_KTHREAD_PRIO=2
|
||||||
CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
|
CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
|
||||||
|
|
|
@ -17,6 +17,5 @@ CONFIG_RCU_FANOUT=4
|
||||||
CONFIG_RCU_FANOUT_LEAF=4
|
CONFIG_RCU_FANOUT_LEAF=4
|
||||||
CONFIG_RCU_NOCB_CPU=n
|
CONFIG_RCU_NOCB_CPU=n
|
||||||
CONFIG_DEBUG_LOCK_ALLOC=n
|
CONFIG_DEBUG_LOCK_ALLOC=n
|
||||||
CONFIG_RCU_CPU_STALL_INFO=n
|
|
||||||
CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
|
CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
|
||||||
CONFIG_RCU_EXPERT=y
|
CONFIG_RCU_EXPERT=y
|
||||||
|
|
|
@ -17,6 +17,5 @@ CONFIG_RCU_NOCB_CPU_NONE=y
|
||||||
CONFIG_DEBUG_LOCK_ALLOC=y
|
CONFIG_DEBUG_LOCK_ALLOC=y
|
||||||
CONFIG_PROVE_LOCKING=y
|
CONFIG_PROVE_LOCKING=y
|
||||||
#CHECK#CONFIG_PROVE_RCU=y
|
#CHECK#CONFIG_PROVE_RCU=y
|
||||||
CONFIG_RCU_CPU_STALL_INFO=n
|
|
||||||
CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
|
CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
|
||||||
CONFIG_RCU_EXPERT=y
|
CONFIG_RCU_EXPERT=y
|
||||||
|
|
|
@ -18,6 +18,5 @@ CONFIG_RCU_NOCB_CPU=n
|
||||||
CONFIG_DEBUG_LOCK_ALLOC=y
|
CONFIG_DEBUG_LOCK_ALLOC=y
|
||||||
CONFIG_PROVE_LOCKING=y
|
CONFIG_PROVE_LOCKING=y
|
||||||
#CHECK#CONFIG_PROVE_RCU=y
|
#CHECK#CONFIG_PROVE_RCU=y
|
||||||
CONFIG_RCU_CPU_STALL_INFO=n
|
|
||||||
CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
|
CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
|
||||||
CONFIG_RCU_EXPERT=y
|
CONFIG_RCU_EXPERT=y
|
||||||
|
|
|
@ -17,6 +17,5 @@ CONFIG_RCU_FANOUT=2
|
||||||
CONFIG_RCU_FANOUT_LEAF=2
|
CONFIG_RCU_FANOUT_LEAF=2
|
||||||
CONFIG_RCU_NOCB_CPU=n
|
CONFIG_RCU_NOCB_CPU=n
|
||||||
CONFIG_DEBUG_LOCK_ALLOC=n
|
CONFIG_DEBUG_LOCK_ALLOC=n
|
||||||
CONFIG_RCU_CPU_STALL_INFO=n
|
|
||||||
CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
|
CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
|
||||||
CONFIG_RCU_EXPERT=y
|
CONFIG_RCU_EXPERT=y
|
||||||
|
|
|
@ -19,7 +19,6 @@ CONFIG_RCU_NOCB_CPU_ALL=y
|
||||||
CONFIG_DEBUG_LOCK_ALLOC=n
|
CONFIG_DEBUG_LOCK_ALLOC=n
|
||||||
CONFIG_PROVE_LOCKING=y
|
CONFIG_PROVE_LOCKING=y
|
||||||
#CHECK#CONFIG_PROVE_RCU=y
|
#CHECK#CONFIG_PROVE_RCU=y
|
||||||
CONFIG_RCU_CPU_STALL_INFO=n
|
|
||||||
CONFIG_RCU_BOOST=n
|
CONFIG_RCU_BOOST=n
|
||||||
CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
|
CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
|
||||||
CONFIG_RCU_EXPERT=y
|
CONFIG_RCU_EXPERT=y
|
||||||
|
|
|
@ -17,6 +17,5 @@ CONFIG_RCU_FANOUT_LEAF=2
|
||||||
CONFIG_RCU_NOCB_CPU=y
|
CONFIG_RCU_NOCB_CPU=y
|
||||||
CONFIG_RCU_NOCB_CPU_ALL=y
|
CONFIG_RCU_NOCB_CPU_ALL=y
|
||||||
CONFIG_DEBUG_LOCK_ALLOC=n
|
CONFIG_DEBUG_LOCK_ALLOC=n
|
||||||
CONFIG_RCU_CPU_STALL_INFO=n
|
|
||||||
CONFIG_RCU_BOOST=n
|
CONFIG_RCU_BOOST=n
|
||||||
CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
|
CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
|
||||||
|
|
|
@ -13,7 +13,6 @@ CONFIG_SUSPEND=n
|
||||||
CONFIG_HIBERNATION=n
|
CONFIG_HIBERNATION=n
|
||||||
CONFIG_RCU_NOCB_CPU=n
|
CONFIG_RCU_NOCB_CPU=n
|
||||||
CONFIG_DEBUG_LOCK_ALLOC=n
|
CONFIG_DEBUG_LOCK_ALLOC=n
|
||||||
CONFIG_RCU_CPU_STALL_INFO=n
|
|
||||||
CONFIG_RCU_BOOST=n
|
CONFIG_RCU_BOOST=n
|
||||||
CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
|
CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
|
||||||
#CHECK#CONFIG_RCU_EXPERT=n
|
#CHECK#CONFIG_RCU_EXPERT=n
|
||||||
|
|
|
@ -16,7 +16,6 @@ CONFIG_PROVE_LOCKING -- Do several, covering CONFIG_DEBUG_LOCK_ALLOC=y and not.
|
||||||
CONFIG_PROVE_RCU -- Hardwired to CONFIG_PROVE_LOCKING.
|
CONFIG_PROVE_RCU -- Hardwired to CONFIG_PROVE_LOCKING.
|
||||||
CONFIG_RCU_BOOST -- one of PREEMPT_RCU.
|
CONFIG_RCU_BOOST -- one of PREEMPT_RCU.
|
||||||
CONFIG_RCU_KTHREAD_PRIO -- set to 2 for _BOOST testing.
|
CONFIG_RCU_KTHREAD_PRIO -- set to 2 for _BOOST testing.
|
||||||
CONFIG_RCU_CPU_STALL_INFO -- Now default, avoid at least twice.
|
|
||||||
CONFIG_RCU_FANOUT -- Cover hierarchy, but overlap with others.
|
CONFIG_RCU_FANOUT -- Cover hierarchy, but overlap with others.
|
||||||
CONFIG_RCU_FANOUT_LEAF -- Do one non-default.
|
CONFIG_RCU_FANOUT_LEAF -- Do one non-default.
|
||||||
CONFIG_RCU_FAST_NO_HZ -- Do one, but not with CONFIG_RCU_NOCB_CPU_ALL.
|
CONFIG_RCU_FAST_NO_HZ -- Do one, but not with CONFIG_RCU_NOCB_CPU_ALL.
|
||||||
|
|
Loading…
Add table
Reference in a new issue