diff options
author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2012-07-16 06:42:38 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2012-08-13 11:01:08 -0400 |
commit | 62ab7072476ae1600e877cc62b43758e485f4f1e (patch) | |
tree | c1df0992432cf5bae0f9122d606e73628368fb8e /kernel/rcutree.c | |
parent | bcd951cf10f24e341defcd002c15a1f4eea13ddb (diff) |
rcu: Use smp_hotplug_thread facility for RCUs per-CPU kthread
Bring RCU into the new-age CPU-hotplug fold by modifying RCU's per-CPU
kthread code to use the new smp_hotplug_thread facility.
[ tglx: Adapted it to use callbacks and to the simplified rcu yield ]
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: http://lkml.kernel.org/r/20120716103948.673354828@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/rcutree.c')
-rw-r--r-- | kernel/rcutree.c | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/kernel/rcutree.c b/kernel/rcutree.c index f08ee3bc574..11a4fdca1df 100644 --- a/kernel/rcutree.c +++ b/kernel/rcutree.c | |||
@@ -133,7 +133,6 @@ static int rcu_scheduler_fully_active __read_mostly; | |||
133 | */ | 133 | */ |
134 | static DEFINE_PER_CPU(struct task_struct *, rcu_cpu_kthread_task); | 134 | static DEFINE_PER_CPU(struct task_struct *, rcu_cpu_kthread_task); |
135 | DEFINE_PER_CPU(unsigned int, rcu_cpu_kthread_status); | 135 | DEFINE_PER_CPU(unsigned int, rcu_cpu_kthread_status); |
136 | DEFINE_PER_CPU(int, rcu_cpu_kthread_cpu); | ||
137 | DEFINE_PER_CPU(unsigned int, rcu_cpu_kthread_loops); | 136 | DEFINE_PER_CPU(unsigned int, rcu_cpu_kthread_loops); |
138 | DEFINE_PER_CPU(char, rcu_cpu_has_work); | 137 | DEFINE_PER_CPU(char, rcu_cpu_has_work); |
139 | 138 | ||
@@ -1468,7 +1467,6 @@ static void rcu_cleanup_dead_cpu(int cpu, struct rcu_state *rsp) | |||
1468 | struct rcu_node *rnp = rdp->mynode; /* Outgoing CPU's rdp & rnp. */ | 1467 | struct rcu_node *rnp = rdp->mynode; /* Outgoing CPU's rdp & rnp. */ |
1469 | 1468 | ||
1470 | /* Adjust any no-longer-needed kthreads. */ | 1469 | /* Adjust any no-longer-needed kthreads. */ |
1471 | rcu_stop_cpu_kthread(cpu); | ||
1472 | rcu_boost_kthread_setaffinity(rnp, -1); | 1470 | rcu_boost_kthread_setaffinity(rnp, -1); |
1473 | 1471 | ||
1474 | /* Remove the dead CPU from the bitmasks in the rcu_node hierarchy. */ | 1472 | /* Remove the dead CPU from the bitmasks in the rcu_node hierarchy. */ |
@@ -2595,11 +2593,9 @@ static int __cpuinit rcu_cpu_notify(struct notifier_block *self, | |||
2595 | case CPU_ONLINE: | 2593 | case CPU_ONLINE: |
2596 | case CPU_DOWN_FAILED: | 2594 | case CPU_DOWN_FAILED: |
2597 | rcu_boost_kthread_setaffinity(rnp, -1); | 2595 | rcu_boost_kthread_setaffinity(rnp, -1); |
2598 | rcu_cpu_kthread_setrt(cpu, 1); | ||
2599 | break; | 2596 | break; |
2600 | case CPU_DOWN_PREPARE: | 2597 | case CPU_DOWN_PREPARE: |
2601 | rcu_boost_kthread_setaffinity(rnp, cpu); | 2598 | rcu_boost_kthread_setaffinity(rnp, cpu); |
2602 | rcu_cpu_kthread_setrt(cpu, 0); | ||
2603 | break; | 2599 | break; |
2604 | case CPU_DYING: | 2600 | case CPU_DYING: |
2605 | case CPU_DYING_FROZEN: | 2601 | case CPU_DYING_FROZEN: |