diff options
author | Paul E. McKenney <paul.mckenney@linaro.org> | 2012-08-21 15:14:19 -0400 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2012-09-23 10:42:51 -0400 |
commit | 7a11e2058f02feb6884efb067f328012c318a13f (patch) | |
tree | a0e2694a5ea94bc670de640a2631545517201868 /kernel/rcutiny_plugin.h | |
parent | fdab649b1aa732cd6e79654349088465cdff49af (diff) |
rcu: Move TINY_PREEMPT_RCU away from raw_local_irq_save()
The use of raw_local_irq_save() is unnecessary, given that local_irq_save()
really does disable interrupts. Also, it appears to interfere with lockdep.
Therefore, this commit moves to local_irq_save().
Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Tested-by: Fengguang Wu <fengguang.wu@intel.com>
Diffstat (limited to 'kernel/rcutiny_plugin.h')
-rw-r--r-- | kernel/rcutiny_plugin.h | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/kernel/rcutiny_plugin.h b/kernel/rcutiny_plugin.h index 918fd1e8509c..3d0190282204 100644 --- a/kernel/rcutiny_plugin.h +++ b/kernel/rcutiny_plugin.h | |||
@@ -278,7 +278,7 @@ static int rcu_boost(void) | |||
278 | rcu_preempt_ctrlblk.exp_tasks == NULL) | 278 | rcu_preempt_ctrlblk.exp_tasks == NULL) |
279 | return 0; /* Nothing to boost. */ | 279 | return 0; /* Nothing to boost. */ |
280 | 280 | ||
281 | raw_local_irq_save(flags); | 281 | local_irq_save(flags); |
282 | 282 | ||
283 | /* | 283 | /* |
284 | * Recheck with irqs disabled: all tasks in need of boosting | 284 | * Recheck with irqs disabled: all tasks in need of boosting |
@@ -287,7 +287,7 @@ static int rcu_boost(void) | |||
287 | */ | 287 | */ |
288 | if (rcu_preempt_ctrlblk.boost_tasks == NULL && | 288 | if (rcu_preempt_ctrlblk.boost_tasks == NULL && |
289 | rcu_preempt_ctrlblk.exp_tasks == NULL) { | 289 | rcu_preempt_ctrlblk.exp_tasks == NULL) { |
290 | raw_local_irq_restore(flags); | 290 | local_irq_restore(flags); |
291 | return 0; | 291 | return 0; |
292 | } | 292 | } |
293 | 293 | ||
@@ -317,7 +317,7 @@ static int rcu_boost(void) | |||
317 | t = container_of(tb, struct task_struct, rcu_node_entry); | 317 | t = container_of(tb, struct task_struct, rcu_node_entry); |
318 | rt_mutex_init_proxy_locked(&mtx, t); | 318 | rt_mutex_init_proxy_locked(&mtx, t); |
319 | t->rcu_boost_mutex = &mtx; | 319 | t->rcu_boost_mutex = &mtx; |
320 | raw_local_irq_restore(flags); | 320 | local_irq_restore(flags); |
321 | rt_mutex_lock(&mtx); | 321 | rt_mutex_lock(&mtx); |
322 | rt_mutex_unlock(&mtx); /* Keep lockdep happy. */ | 322 | rt_mutex_unlock(&mtx); /* Keep lockdep happy. */ |
323 | 323 | ||
@@ -991,9 +991,9 @@ static void rcu_trace_sub_qlen(struct rcu_ctrlblk *rcp, int n) | |||
991 | { | 991 | { |
992 | unsigned long flags; | 992 | unsigned long flags; |
993 | 993 | ||
994 | raw_local_irq_save(flags); | 994 | local_irq_save(flags); |
995 | rcp->qlen -= n; | 995 | rcp->qlen -= n; |
996 | raw_local_irq_restore(flags); | 996 | local_irq_restore(flags); |
997 | } | 997 | } |
998 | 998 | ||
999 | /* | 999 | /* |