Commit 5b4c6d65 authored by Juergen Gross's avatar Juergen Gross Committed by Borislav Petkov

x86/xen: Use specific Xen pv interrupt entry for DF

Xen PV guests don't use IST. For double fault interrupts, switch to
the same model as NMI.

Correct a typo in a comment while copying it.
Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
Reviewed-by: default avatarThomas Gleixner <tglx@linutronix.de>
Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20210120135555.32594-4-jgross@suse.com
parent c3d7fa66
...@@ -608,6 +608,9 @@ DECLARE_IDTENTRY_RAW(X86_TRAP_DB, xenpv_exc_debug); ...@@ -608,6 +608,9 @@ DECLARE_IDTENTRY_RAW(X86_TRAP_DB, xenpv_exc_debug);
/* #DF */ /* #DF */
DECLARE_IDTENTRY_DF(X86_TRAP_DF, exc_double_fault); DECLARE_IDTENTRY_DF(X86_TRAP_DF, exc_double_fault);
#ifdef CONFIG_XEN_PV
DECLARE_IDTENTRY_RAW_ERRORCODE(X86_TRAP_DF, xenpv_exc_double_fault);
#endif
/* #VC */ /* #VC */
#ifdef CONFIG_AMD_MEM_ENCRYPT #ifdef CONFIG_AMD_MEM_ENCRYPT
......
...@@ -567,10 +567,16 @@ void noist_exc_debug(struct pt_regs *regs); ...@@ -567,10 +567,16 @@ void noist_exc_debug(struct pt_regs *regs);
DEFINE_IDTENTRY_RAW(xenpv_exc_nmi) DEFINE_IDTENTRY_RAW(xenpv_exc_nmi)
{ {
/* On Xen PV, NMI doesn't use IST. The C part is the sane as native. */ /* On Xen PV, NMI doesn't use IST. The C part is the same as native. */
exc_nmi(regs); exc_nmi(regs);
} }
DEFINE_IDTENTRY_RAW_ERRORCODE(xenpv_exc_double_fault)
{
/* On Xen PV, DF doesn't use IST. The C part is the same as native. */
exc_double_fault(regs, error_code);
}
DEFINE_IDTENTRY_RAW(xenpv_exc_debug) DEFINE_IDTENTRY_RAW(xenpv_exc_debug)
{ {
/* /*
...@@ -622,7 +628,7 @@ struct trap_array_entry { ...@@ -622,7 +628,7 @@ struct trap_array_entry {
static struct trap_array_entry trap_array[] = { static struct trap_array_entry trap_array[] = {
TRAP_ENTRY_REDIR(exc_debug, true ), TRAP_ENTRY_REDIR(exc_debug, true ),
TRAP_ENTRY(exc_double_fault, true ), TRAP_ENTRY_REDIR(exc_double_fault, true ),
#ifdef CONFIG_X86_MCE #ifdef CONFIG_X86_MCE
TRAP_ENTRY_REDIR(exc_machine_check, true ), TRAP_ENTRY_REDIR(exc_machine_check, true ),
#endif #endif
......
...@@ -161,7 +161,7 @@ xen_pv_trap asm_exc_overflow ...@@ -161,7 +161,7 @@ xen_pv_trap asm_exc_overflow
xen_pv_trap asm_exc_bounds xen_pv_trap asm_exc_bounds
xen_pv_trap asm_exc_invalid_op xen_pv_trap asm_exc_invalid_op
xen_pv_trap asm_exc_device_not_available xen_pv_trap asm_exc_device_not_available
xen_pv_trap asm_exc_double_fault xen_pv_trap asm_xenpv_exc_double_fault
xen_pv_trap asm_exc_coproc_segment_overrun xen_pv_trap asm_exc_coproc_segment_overrun
xen_pv_trap asm_exc_invalid_tss xen_pv_trap asm_exc_invalid_tss
xen_pv_trap asm_exc_segment_not_present xen_pv_trap asm_exc_segment_not_present
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment