Re: workqueue deadlock

From: Andrew Morton
Date: Sat Dec 09 2006 - 14:48:02 EST


On Sat, 9 Dec 2006 11:26:52 +0100
Ingo Molnar <mingo@xxxxxxx> wrote:

>
> * Andrew Morton <akpm@xxxxxxxx> wrote:
>
> > > > + if (cpu != -1)
> > > > + mutex_lock(&workqueue_mutex);
> > >
> > > events/4 thread itself wanting the same mutex above?
> >
> > Could do, not sure. I'm planning on converting all the locking around
> > here to preempt_disable() though.
>
> please at least use an owner-recursive per-CPU lock,

a wot?

> not a naked
> preempt_disable()! The concurrency rules for data structures changed via
> preempt_disable() are quite hard to sort out after the fact.
> (preempt_disable() is too opaque,

preempt_disable() is the preferred way of holding off cpu hotplug.

> it doesnt attach data structure to
> critical section, like normal locks do.)

the data structure is the CPU, and its per-cpu data. And cpu_online_map.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/