Messages in this thread Patch in this message | | | Date | Fri, 29 Feb 2008 20:31:18 +0100 | From | Ingo Molnar <> | Subject | [git pull] scheduler updates, #2 |
| |
Linus, please pull the latest scheduler fixes git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-sched.git
Two more rcupreempt updates (that i forgot about for the previous pull request - they hid in the middle of the queue). Thanks,
Ingo
------------------> Paul E. McKenney (2): rcupreempt: fix hibernate/resume in presence of PREEMPT_RCU and hotplug rcupreempt: remove never-migrates assumption from rcu_process_callbacks()
kernel/rcupreempt.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/kernel/rcupreempt.c b/kernel/rcupreempt.c index c7c5209..e951701 100644 --- a/kernel/rcupreempt.c +++ b/kernel/rcupreempt.c @@ -918,8 +918,9 @@ void rcu_offline_cpu(int cpu) * fix. */ + local_irq_save(flags); rdp = RCU_DATA_ME(); - spin_lock_irqsave(&rdp->lock, flags); + spin_lock(&rdp->lock); *rdp->nexttail = list; if (list) rdp->nexttail = tail; @@ -951,9 +952,11 @@ static void rcu_process_callbacks(struct softirq_action *unused) { unsigned long flags; struct rcu_head *next, *list; - struct rcu_data *rdp = RCU_DATA_ME(); + struct rcu_data *rdp; - spin_lock_irqsave(&rdp->lock, flags); + local_irq_save(flags); + rdp = RCU_DATA_ME(); + spin_lock(&rdp->lock); list = rdp->donelist; if (list == NULL) { spin_unlock_irqrestore(&rdp->lock, flags);
| |