summaryrefslogtreecommitdiff
path: root/kernel/rcutree.h
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2013-11-04 21:21:10 (GMT)
committerScott Wood <scottwood@freescale.com>2014-04-10 00:20:09 (GMT)
commitf52ddab2074470fdba8f6d074e829127dbb86b96 (patch)
treed4a5a72f2f54067648de9b34fd9dedee69e2695b /kernel/rcutree.h
parent77d4d0606477a4f434f9b1efdac77a2af9d0e880 (diff)
downloadlinux-fsl-qoriq-f52ddab2074470fdba8f6d074e829127dbb86b96.tar.xz
rcu: Eliminate softirq processing from rcutree
Running RCU out of softirq is a problem for some workloads that would like to manage RCU core processing independently of other softirq work, for example, setting kthread priority. This commit therefore moves the RCU core work from softirq to a per-CPU/per-flavor SCHED_OTHER kthread named rcuc. The SCHED_OTHER approach avoids the scalability problems that appeared with the earlier attempt to move RCU core processing to from softirq to kthreads. That said, kernels built with RCU_BOOST=y will run the rcuc kthreads at the RCU-boosting priority. Reported-by: Thomas Gleixner <tglx@linutronix.de> Tested-by: Mike Galbraith <bitbucket@online.de> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Diffstat (limited to 'kernel/rcutree.h')
-rw-r--r--kernel/rcutree.h3
1 files changed, 1 insertions, 2 deletions
diff --git a/kernel/rcutree.h b/kernel/rcutree.h
index 7d71c06..68ed6a8 100644
--- a/kernel/rcutree.h
+++ b/kernel/rcutree.h
@@ -527,10 +527,9 @@ static void rcu_report_exp_rnp(struct rcu_state *rsp, struct rcu_node *rnp,
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);
-static void invoke_rcu_callbacks_kthread(void);
static bool rcu_is_callbacks_kthread(void);
+static void rcu_cpu_kthread_setup(unsigned int cpu);
#ifdef CONFIG_RCU_BOOST
-static void rcu_preempt_do_callbacks(void);
static int rcu_spawn_one_boost_kthread(struct rcu_state *rsp,
struct rcu_node *rnp);
#endif /* #ifdef CONFIG_RCU_BOOST */