summaryrefslogtreecommitdiffstats
path: root/kernel/rcutree.h
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2011-08-21 03:29:32 +0200
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2011-09-29 06:38:48 +0200
commite90c53d3e238dd0b7b02964370e8fece1778df96 (patch)
tree23e5b8623c2c37bd8a4656c66266209872f80701 /kernel/rcutree.h
parentrcu: Wire up RCU_BOOST_PRIO for rcutree (diff)
downloadlinux-e90c53d3e238dd0b7b02964370e8fece1778df96.tar.xz
linux-e90c53d3e238dd0b7b02964370e8fece1778df96.zip
rcu: Remove rcu_needs_cpu_flush() to avoid false quiescent states
The purpose of rcu_needs_cpu_flush() was to iterate on pushing the current grace period in order to help the current CPU enter dyntick-idle mode. However, this can result in failures if the CPU starts entering dyntick-idle mode, but then backs out. In this case, the call to rcu_pending() from rcu_needs_cpu_flush() might end up announcing a non-existing quiescent state. This commit therefore removes rcu_needs_cpu_flush() in favor of letting the dyntick-idle machinery at the end of the softirq handler push the loop along via its call to rcu_pending(). Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'kernel/rcutree.h')
-rw-r--r--kernel/rcutree.h1
1 files changed, 0 insertions, 1 deletions
diff --git a/kernel/rcutree.h b/kernel/rcutree.h
index f509f728f9fb..849ce9ec51fe 100644
--- a/kernel/rcutree.h
+++ b/kernel/rcutree.h
@@ -458,7 +458,6 @@ static int rcu_preempt_needs_cpu(int cpu);
static void __cpuinit rcu_preempt_init_percpu_data(int cpu);
static void rcu_preempt_send_cbs_to_online(void);
static void __init __rcu_init_preempt(void);
-static void rcu_needs_cpu_flush(void);
static void rcu_initiate_boost(struct rcu_node *rnp, unsigned long flags);
static void rcu_preempt_boost_start_gp(struct rcu_node *rnp);
static void invoke_rcu_callbacks_kthread(void);