diff options
author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2014-10-21 10:53:02 -0400 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2014-11-03 22:20:11 -0500 |
commit | c3377c2da6e594504c900d5ef72374c109e4ca99 (patch) | |
tree | a22b9894500e373290eee77862b0f29a21879b29 | |
parent | 11bbb235c26f93b7c69e441452e44adbf6ed6996 (diff) |
rcu: Remove "cpu" argument to rcu_check_callbacks()
The "cpu" argument was kept around on the off-chance that RCU might
offload scheduler-clock interrupts. However, this offload approach
has been replaced by NO_HZ_FULL, which offloads -all- RCU processing
from qualifying CPUs. It is therefore time to remove the "cpu" argument
to rcu_check_callbacks(), which this commit does.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Pranith Kumar <bobby.prani@gmail.com>
-rw-r--r-- | include/linux/rcupdate.h | 2 | ||||
-rw-r--r-- | kernel/rcu/tiny.c | 2 | ||||
-rw-r--r-- | kernel/rcu/tree.c | 6 | ||||
-rw-r--r-- | kernel/time/timer.c | 3 |
4 files changed, 6 insertions, 7 deletions
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index a4a819ffb2d1..b4ad275d90d0 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h | |||
@@ -260,7 +260,7 @@ static inline int rcu_preempt_depth(void) | |||
260 | void rcu_init(void); | 260 | void rcu_init(void); |
261 | void rcu_sched_qs(void); | 261 | void rcu_sched_qs(void); |
262 | void rcu_bh_qs(void); | 262 | void rcu_bh_qs(void); |
263 | void rcu_check_callbacks(int cpu, int user); | 263 | void rcu_check_callbacks(int user); |
264 | struct notifier_block; | 264 | struct notifier_block; |
265 | void rcu_idle_enter(void); | 265 | void rcu_idle_enter(void); |
266 | void rcu_idle_exit(void); | 266 | void rcu_idle_exit(void); |
diff --git a/kernel/rcu/tiny.c b/kernel/rcu/tiny.c index c0623fc47125..01570c68d237 100644 --- a/kernel/rcu/tiny.c +++ b/kernel/rcu/tiny.c | |||
@@ -247,7 +247,7 @@ void rcu_bh_qs(void) | |||
247 | * be called from hardirq context. It is normally called from the | 247 | * be called from hardirq context. It is normally called from the |
248 | * scheduling-clock interrupt. | 248 | * scheduling-clock interrupt. |
249 | */ | 249 | */ |
250 | void rcu_check_callbacks(int cpu, int user) | 250 | void rcu_check_callbacks(int user) |
251 | { | 251 | { |
252 | RCU_TRACE(check_cpu_stalls()); | 252 | RCU_TRACE(check_cpu_stalls()); |
253 | if (user || rcu_is_cpu_rrupt_from_idle()) | 253 | if (user || rcu_is_cpu_rrupt_from_idle()) |
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index ab6fcfb4fe11..3107811bba69 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c | |||
@@ -2388,7 +2388,7 @@ static void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp) | |||
2388 | * invoked from the scheduling-clock interrupt. If rcu_pending returns | 2388 | * invoked from the scheduling-clock interrupt. If rcu_pending returns |
2389 | * false, there is no point in invoking rcu_check_callbacks(). | 2389 | * false, there is no point in invoking rcu_check_callbacks(). |
2390 | */ | 2390 | */ |
2391 | void rcu_check_callbacks(int cpu, int user) | 2391 | void rcu_check_callbacks(int user) |
2392 | { | 2392 | { |
2393 | trace_rcu_utilization(TPS("Start scheduler-tick")); | 2393 | trace_rcu_utilization(TPS("Start scheduler-tick")); |
2394 | increment_cpu_stall_ticks(); | 2394 | increment_cpu_stall_ticks(); |
@@ -2420,8 +2420,8 @@ void rcu_check_callbacks(int cpu, int user) | |||
2420 | 2420 | ||
2421 | rcu_bh_qs(); | 2421 | rcu_bh_qs(); |
2422 | } | 2422 | } |
2423 | rcu_preempt_check_callbacks(cpu); | 2423 | rcu_preempt_check_callbacks(smp_processor_id()); |
2424 | if (rcu_pending(cpu)) | 2424 | if (rcu_pending(smp_processor_id())) |
2425 | invoke_rcu_core(); | 2425 | invoke_rcu_core(); |
2426 | if (user) | 2426 | if (user) |
2427 | rcu_note_voluntary_context_switch(current); | 2427 | rcu_note_voluntary_context_switch(current); |
diff --git a/kernel/time/timer.c b/kernel/time/timer.c index 3260ffdb368f..2d3f5c504939 100644 --- a/kernel/time/timer.c +++ b/kernel/time/timer.c | |||
@@ -1377,12 +1377,11 @@ unsigned long get_next_timer_interrupt(unsigned long now) | |||
1377 | void update_process_times(int user_tick) | 1377 | void update_process_times(int user_tick) |
1378 | { | 1378 | { |
1379 | struct task_struct *p = current; | 1379 | struct task_struct *p = current; |
1380 | int cpu = smp_processor_id(); | ||
1381 | 1380 | ||
1382 | /* Note: this timer irq context must be accounted for as well. */ | 1381 | /* Note: this timer irq context must be accounted for as well. */ |
1383 | account_process_tick(p, user_tick); | 1382 | account_process_tick(p, user_tick); |
1384 | run_local_timers(); | 1383 | run_local_timers(); |
1385 | rcu_check_callbacks(cpu, user_tick); | 1384 | rcu_check_callbacks(user_tick); |
1386 | #ifdef CONFIG_IRQ_WORK | 1385 | #ifdef CONFIG_IRQ_WORK |
1387 | if (in_irq()) | 1386 | if (in_irq()) |
1388 | irq_work_tick(); | 1387 | irq_work_tick(); |