Messages in this thread | | | Subject | Re: workqueue code needing preemption disabled | From | Steven Rostedt <> | Date | Mon, 18 Mar 2013 15:19:21 -0400 |
| |
On Mon, 2013-03-18 at 12:06 -0700, Tejun Heo wrote:
> Me neither. Unfortunately, I'm out of ideas at the moment. > Hmm... last year, there was a similar issue, I think it was in AMD > cpufreq, which was caused by work function doing > set_cpus_allowed_ptr(), so the idle worker was on the correct CPU but > the one issuing local wake up was on the wrong one.
I should also tell you that -rt is currently based on 3.6.11. Did that bug get passed on to stable? If not, we could be hitting that same bug too. Except this is running on Intel. :-/
> It could be that > there's another such usage in kernle which doesn't trigger easily w/o > RT. As preemption doesn't trigger concurrency management wakeup, as > long as such user doesn't do something explicitly blocking, upstream > would be fine as long as it restores affinity before finishing but in > RT spinlocks become mutexes and can trigger local wakeups, so...
And these wakeups can be triggered by blocking on the gcwq->lock as well, where it probably happens more often on -rt than mainline.
> > Anyways, having a crashdump would go a long way towards identifying > what's going on. All we need to know are the work function which was > being executed, whether the worker was on the right CPU and which > worker it was trying to wake up. >
OK, I'll have my box set up. But I doubt this bug will even trigger again before I have to return it :-(
-- Steve
| |