login
Header Space

 
 

[git pull] scheduler updates, #2

Score:
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Linus Torvalds <torvalds@...>
Cc: <linux-kernel@...>, Andrew Morton <akpm@...>
Date: Friday, February 29, 2008 - 3:31 pm

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);
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[git pull] scheduler updates, #2, Ingo Molnar, (Fri Feb 29, 3:31 pm)
speck-geostationary