linux_dsm_epyc7002/arch
Thomas Gleixner 931b941459 x86/entry: Provide helpers for executing on the irqstack
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 the moving of the stack switching to C code, which simplifies the
entry/exit handling further, because it allows the switching of stacks after
handling the entry and on exit before handling RCU, returning 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, as 32-bit has a variant of that already. Once this is
cleaned up, the two implementations might be consolidated as an additional
cleanup on top.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Acked-by: Andy Lutomirski <luto@kernel.org>
Link: https://lore.kernel.org/r/20200521202117.763775313@linutronix.de
2020-06-11 15:15:07 +02:00
..
alpha mmap locking API: convert mmap_sem API comments 2020-06-09 09:39:14 -07:00
arc mmap locking API: convert mmap_sem comments 2020-06-09 09:39:14 -07:00
arm Merge branch 'rwonce/rework' of git://git.kernel.org/pub/scm/linux/kernel/git/will/linux 2020-06-10 14:46:54 -07:00
arm64 locking/atomics: Flip fallbacks and instrumentation 2020-06-11 08:03:24 +02:00
c6x This time around we have 4 lines of diff in the core framework, removing a 2020-06-10 11:42:19 -07:00
csky mmap locking API: use coccinelle to convert mmap_sem rwsem call sites 2020-06-09 09:39:14 -07:00
h8300 This time around we have 4 lines of diff in the core framework, removing a 2020-06-10 11:42:19 -07:00
hexagon mmap locking API: use coccinelle to convert mmap_sem rwsem call sites 2020-06-09 09:39:14 -07:00
ia64 mmap locking API: convert mmap_sem comments 2020-06-09 09:39:14 -07:00
m68k This time around we have 4 lines of diff in the core framework, removing a 2020-06-10 11:42:19 -07:00
microblaze mmap locking API: convert mmap_sem comments 2020-06-09 09:39:14 -07:00
mips This time around we have 4 lines of diff in the core framework, removing a 2020-06-10 11:42:19 -07:00
nds32 mmap locking API: convert mmap_sem comments 2020-06-09 09:39:14 -07:00
nios2 mmap locking API: convert mmap_sem API comments 2020-06-09 09:39:14 -07:00
openrisc mmap locking API: convert mmap_sem API comments 2020-06-09 09:39:14 -07:00
parisc maccess: always use strict semantics for probe_kernel_read 2020-06-09 09:39:15 -07:00
powerpc arch/powerpc/mm/pgtable.c: another missed conversion 2020-06-10 14:44:46 -07:00
riscv mmap locking API: convert mmap_sem comments 2020-06-09 09:39:14 -07:00
s390 mmap locking API: convert mmap_sem comments 2020-06-09 09:39:14 -07:00
sh This time around we have 4 lines of diff in the core framework, removing a 2020-06-10 11:42:19 -07:00
sparc arch/sparc/mm/srmmu.c: fix build 2020-06-10 10:35:28 -07:00
um This pull request contains the following changes for UML: 2020-06-10 13:25:40 -07:00
unicore32 This time around we have 4 lines of diff in the core framework, removing a 2020-06-10 11:42:19 -07:00
x86 x86/entry: Provide helpers for executing on the irqstack 2020-06-11 15:15:07 +02:00
xtensa mmap locking API: convert mmap_sem API comments 2020-06-09 09:39:14 -07:00
.gitignore
Kconfig This time around we have 4 lines of diff in the core framework, removing a 2020-06-10 11:42:19 -07:00