Re: WARN_ON_ONCE(in_nmi()) hit in irq_work_queue_on

From: Peter Zijlstra
Date: Thu Aug 07 2014 - 09:15:51 EST


On Thu, Aug 07, 2014 at 02:58:55PM +0200, Frederic Weisbecker wrote:
> On Thu, Aug 07, 2014 at 10:13:21AM +0200, Peter Zijlstra wrote:
> > On Thu, Aug 07, 2014 at 01:44:58AM +0200, Frederic Weisbecker wrote:
> > > In fact the problem has arised since the recent irq work patches I did.
> >
> > No, those just added the WARN, previously we send the resched IPI, and
> > that's equally wrong from NMI context.
>
> Well the scheduler IPI was rather used for remote kicks before we had remote irq
> work. This includes local kicks as well as the caller could need to kick
> anywhere. As in inc_nr_running().
>
> But for strict local kicks, as in perf, we were using tick_nohz_full_kick() which has
> been using irq work for a while. But it got broken when we replaced it to call irq_work_queue_on
> instead of irq_work_queue.

OK, clearly I made a mess of things in my head ;-)

Attachment: pgpUDyy9J_QKQ.pgp
Description: PGP signature