Re: workqueue code needing preemption disabled

From: Steven Rostedt
Date: Mon Mar 18 2013 - 15:19:30 EST


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


--
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/