On Fri, Sep 07, 2018 at 09:41:48AM -0400, Steven Rostedt wrote:
> On Fri, 7 Sep 2018 09:34:48 +0200
> Peter Zijlstra <pet...@infradead.org> wrote:
> 
> > On Wed, Sep 05, 2018 at 09:33:34PM -0400, Steven Rostedt wrote:
> > >   do_idle {
> > > 
> > >     [interrupts enabled]
> > > 
> > >     <interrupt> [interrupts disabled]
> > >   TRACE_IRQS_OFF [lockdep says irqs off]
> > >   [...]
> > >   TRACE_IRQS_IRET
> > >       test if pt_regs say return to interrupts enabled [yes]
> > >       TRACE_IRQS_ON [lockdep says irqs are on]
> > > 
> > >       <nmi>
> > >           nmi_enter() {
> > >               printk_nmi_enter() [traced by ftrace]
> > >               [ hit ftrace breakpoint ]
> > >               <breakpoint exception>
> > >                   TRACE_IRQS_OFF [lockdep says irqs off]
> > >                   [...]
> > >                   TRACE_IRQS_IRET [return from breakpoint]
> > >                      test if pt_regs say interrupts enabled [no]
> > >                      [iret back to interrupt]
> > >      [iret back to code]
> > > 
> > >     tick_nohz_idle_enter() {
> > > 
> > >   lockdep_assert_irqs_enabled() [lockdep say no!]  
> > 
> > Isn't the problem that we muck with the IRQ state from NMI context? We
> > shouldn't be doing that.
> 
> Not really. 

Yes really, we should not muck with the IRQ state from NMI context.

Reply via email to