Messages in this thread | | | Date | Fri, 15 Dec 2006 08:11:38 -0800 | From | Andrew Morton <> | Subject | Re: + schedule_on_each_cpu-use-preempt_disable.patch added to -mm tree |
| |
On Fri, 15 Dec 2006 09:31:12 +0100 Ingo Molnar <mingo@elte.hu> wrote:
> > * akpm@osdl.org <akpm@osdl.org> wrote: > > > - mutex_lock(&workqueue_mutex); > > + preempt_disable(); /* CPU hotplug */ > > for_each_online_cpu(cpu) { > > INIT_WORK(per_cpu_ptr(works, cpu), func); > > __queue_work(per_cpu_ptr(keventd_wq->cpu_wq, cpu), > > per_cpu_ptr(works, cpu)); > > } > > - mutex_unlock(&workqueue_mutex); > > + preempt_enable(); > > Why not cpu_hotplug_lock()? >
Because the workqueue code was explicitly switched over to per-subsystem cpu-hotplug locking.
Because lock_cpu_hotplug() is a complete turkey, source of deadlocks and overall bad idea.
This is actually a pretty simple problem. A subsystem has per-cpu reosurces, and it needs to lock them while using them. duh. We know how to do that sort of thing. But because the first implementation of lock_cpu_hotplug() was conceived with magical properties, we seem to think we need to retain magical properties. We don't... - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |