x86/entry/xen: Route #DB correctly on Xen PV
authorAndy Lutomirski <luto@kernel.org>
Fri, 3 Jul 2020 17:02:55 +0000 (10:02 -0700)
committerThomas Gleixner <tglx@linutronix.de>
Sat, 4 Jul 2020 17:47:25 +0000 (19:47 +0200)
commitf41f0824224eb12ad84de8972962dd54be5abe3b
tree6cf0f72f726f716884553c14fbc6318318de5776
parent3c73b81a9164d0c1b6379d6672d2772a9e95168e
x86/entry/xen: Route #DB correctly on Xen PV

On Xen PV, #DB doesn't use IST. It still needs to be correctly routed
depending on whether it came from user or kernel mode.

Get rid of DECLARE/DEFINE_IDTENTRY_XEN -- it was too hard to follow the
logic.  Instead, route #DB and NMI through DECLARE/DEFINE_IDTENTRY_RAW on
Xen, and do the right thing for #DB.  Also add more warnings to the
exc_debug* handlers to make this type of failure more obvious.

This fixes various forms of corruption that happen when usermode
triggers #DB on Xen PV.

Fixes: 4c0dcd8350a0 ("x86/entry: Implement user mode C entry points for #DB and #MCE")
Signed-off-by: Andy Lutomirski <luto@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/4163e733cce0b41658e252c6c6b3464f33fdff17.1593795633.git.luto@kernel.org
arch/x86/include/asm/idtentry.h
arch/x86/kernel/traps.c
arch/x86/xen/enlighten_pv.c
arch/x86/xen/xen-asm_64.S