> On Apr 4, 2019, at 10:28 AM, Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote: > >> On Thu, 4 Apr 2019, Tycho Andersen wrote: >> leaq -PTREGS_SIZE(%rax), %rsp >> UNWIND_HINT_FUNC sp_offset=PTREGS_SIZE >> >> + /* >> + * If we oopsed in an interrupt handler, interrupts may be off. Let's turn >> + * them back on before going back to "normal" code. >> + */ >> + sti > > That breaks the paravirt muck and tracing/lockdep. > > ENABLE_INTERRUPTS() is what you want plus TRACE_IRQ_ON to keep the tracer > and lockdep happy. > > I’m sure we’ll find some other thing we forgot to reset eventually, so let’s do this in C. Change the call do_exit to call __finish_rewind_stack_do_exit and add the latter as a C function that does local_irq_enable() and do_exit().