Re: WARN_ON_ONCE(in_nmi()) hit in irq_work_queue_on

Frederic Weisbecker
2014-08-07T13:18:47Z

On Thu, Aug 07, 2014 at 03:15:36PM +0200, Peter Zijlstra wrote:
> 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 ;-)

I'm a bit responsible for that mess since I created quite some flavours of nohz kicks
all around :)

But now they should be more unified.