Thread (15 messages) 15 messages, 2 authors, 2011-10-24

Re: [PATCH -rt 4/5] workqueue: hotplug fix

From: Thomas Gleixner <hidden>
Date: 2011-10-19 07:14:31
Also in: lkml

On Sun, 16 Oct 2011, Yong Zhang wrote:
quoted hunk ↗ jump to hunk
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -3195,30 +3195,34 @@ static int __devinit workqueue_cpu_up_callback(struct notifier_block *nfb,
 	}
 
 	/* some are called w/ irq disabled, don't disturb irq status */
-	spin_lock_irqsave(&gcwq->lock, flags);
 
 	switch (action) {
 	case CPU_UP_PREPARE:
+		spin_lock_irqsave(&gcwq->lock, flags);
 		BUG_ON(gcwq->first_idle);
 		gcwq->first_idle = new_worker;
+		spin_unlock_irqrestore(&gcwq->lock, flags);
 		break;
 
 	case CPU_UP_CANCELED:
+		spin_lock_irqsave(&gcwq->lock, flags);
 		destroy_worker(gcwq->first_idle);
 		gcwq->first_idle = NULL;
+		spin_unlock_irqrestore(&gcwq->lock, flags);
 		break;
 
 	case CPU_ONLINE:
+		spin_lock_irqsave(&gcwq->lock, flags);
 		spin_unlock_irq(&gcwq->lock);
 		kthread_bind(gcwq->first_idle->task, cpu);
 		spin_lock_irq(&gcwq->lock);
 		gcwq->flags |= GCWQ_MANAGE_WORKERS;
 		start_worker(gcwq->first_idle);
 		gcwq->first_idle = NULL;
+		spin_unlock_irqrestore(&gcwq->lock, flags);
 		break;
 	}
 
-	spin_unlock_irqrestore(&gcwq->lock, flags);
This part of the patch is pretty pointless.
  
quoted hunk ↗ jump to hunk
 	return notifier_from_errno(0);
 }
@@ -3274,14 +3278,14 @@ static void flush_gcwq(struct global_cwq *gcwq)
 
 	spin_unlock_irq(&gcwq->lock);
 
-	gcwq = get_gcwq(get_cpu());
+	gcwq = get_gcwq(get_cpu_light());
Right.
 	spin_lock_irq(&gcwq->lock);
 	list_for_each_entry_safe(work, nw, &non_affine_works, entry) {
 		list_del_init(&work->entry);
 		___queue_work(get_work_cwq(work)->wq, gcwq, work);
 	}
 	spin_unlock_irq(&gcwq->lock);
-	put_cpu();
+	put_cpu_light();
 }
 
 static int __devinit workqueue_cpu_down_callback(struct notifier_block *nfb,
-- 
1.7.1
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help