aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/rcupdate.h12
-rw-r--r--kernel/rcu/update.c12
2 files changed, 24 insertions, 0 deletions
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
index 9ccd644c1234..5a75d19aa661 100644
--- a/include/linux/rcupdate.h
+++ b/include/linux/rcupdate.h
@@ -248,6 +248,18 @@ void rcu_idle_exit(void);
248void rcu_irq_enter(void); 248void rcu_irq_enter(void);
249void rcu_irq_exit(void); 249void rcu_irq_exit(void);
250 250
251#ifdef CONFIG_RCU_STALL_COMMON
252void rcu_sysrq_start(void);
253void rcu_sysrq_end(void);
254#else /* #ifdef CONFIG_RCU_STALL_COMMON */
255static inline void rcu_sysrq_start(void)
256{
257}
258static inline void rcu_sysrq_end(void)
259{
260}
261#endif /* #else #ifdef CONFIG_RCU_STALL_COMMON */
262
251#ifdef CONFIG_RCU_USER_QS 263#ifdef CONFIG_RCU_USER_QS
252void rcu_user_enter(void); 264void rcu_user_enter(void);
253void rcu_user_exit(void); 265void rcu_user_exit(void);
diff --git a/kernel/rcu/update.c b/kernel/rcu/update.c
index ed7a0d72562c..a2aeb4df0f60 100644
--- a/kernel/rcu/update.c
+++ b/kernel/rcu/update.c
@@ -320,6 +320,18 @@ int rcu_jiffies_till_stall_check(void)
320 return till_stall_check * HZ + RCU_STALL_DELAY_DELTA; 320 return till_stall_check * HZ + RCU_STALL_DELAY_DELTA;
321} 321}
322 322
323void rcu_sysrq_start(void)
324{
325 if (!rcu_cpu_stall_suppress)
326 rcu_cpu_stall_suppress = 2;
327}
328
329void rcu_sysrq_end(void)
330{
331 if (rcu_cpu_stall_suppress == 2)
332 rcu_cpu_stall_suppress = 0;
333}
334
323static int rcu_panic(struct notifier_block *this, unsigned long ev, void *ptr) 335static int rcu_panic(struct notifier_block *this, unsigned long ev, void *ptr)
324{ 336{
325 rcu_cpu_stall_suppress = 1; 337 rcu_cpu_stall_suppress = 1;