Messages in this thread | | | Date | Mon, 18 Mar 2013 09:43:51 -0700 | From | Tejun Heo <> | Subject | Re: workqueue code needing preemption disabled |
| |
Hello, Steven.
On Mon, Mar 18, 2013 at 12:30:43PM -0400, Steven Rostedt wrote: > If you happen to know the critical areas that require preemption to be > disabled for real, we can encapsulate them with: > > preempt_disable_rt(); > > preempt_enable_rt(); > > These are currently only in the -rt patch, but it annotates locations > that require preemption to be disabled even when -rt converts spin_locks > into mutexes. These obviously can not contain spin_locks() as > spin_locks() can block and schedule out.
Making gcwq locks disable preemption would be much safer / easier, but if that's not desirable, anything touching gcwq->idle_list would be a good place to start - worker_enter_idle() and worker_leave_idle(). Hmmm... ignoring CPU hotplug, I think those two might just do it. Give it a try? How reproducible is the problem?
Thanks.
-- tejun
| |