Messages in this thread | | | Date | Wed, 13 May 2020 16:43:00 -0500 | From | Josh Poimboeuf <> | Subject | Re: [patch V5 06/38] x86/entry: Provide helpers for execute on irqstack |
| |
On Tue, May 12, 2020 at 11:01:05PM +0200, Thomas Gleixner wrote: > Device interrupt handlers and system vector handlers are executed on the > interrupt stack. The stack switch happens in the low level assembly entry > code. This conflicts with the efforts to consolidate the exit code in C to > ensure correctness vs. RCU and tracing. > > As there is no way to move #DB away from IST due to the MOV SS issue, the > requirements vs. #DB and NMI for switching to the interrupt stack do not > exist anymore. The only requirement is that interrupts are disabled. > > That allows to move the stack switching to C code which simplifies the > entry/exit handling further because it allows to switch stacks after > handling the entry and on exit before handling RCU, return to usermode and > kernel preemption in the same way as for regular exceptions. > > The initial attempt of having the stack switching in inline ASM caused too > much headache vs. objtool and the unwinder. After analysing the use cases > it was agreed on that having the stack switch in ASM for the price of an > indirect call is acceptable as the main users are indirect call heavy > anyway and the few system vectors which are empty shells (scheduler IPI and > KVM posted interrupt vectors) can run from the regular stack. > > Provide helper functions to check whether the interrupt stack is already > active and whether stack switching is required. > > 64 bit only for now. 32 bit has a variant of that already. Once this is > cleaned up the two implementations might be consolidated as a cleanup on > top. > > Signed-off-by: Thomas Gleixner <tglx@linutronix.de> > Link: https://lore.kernel.org/r/20200507161020.783541450@infradead.org > --- > V5: Moved the actual switch to ASM code
Acked-by: Josh Poimboeuf <jpoimboe@redhat.com>
-- Josh
| |