From: Lai Jiangshan <laijs@xxxxxxxxxxxxxxxxx> There is no any functionality change intended. Just rename it and move it to arch/x86/kernel/nmi.c so that we can resue it later in next patch for early NMI and kvm. Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx> Cc: Sean Christopherson <seanjc@xxxxxxxxxx> Cc: Steven Rostedt <rostedt@xxxxxxxxxxx> Cc: Andi Kleen <ak@xxxxxxxxxxxxxxx> Cc: Andy Lutomirski <luto@xxxxxxxxxx> Cc: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> Cc: Wanpeng Li <wanpengli@xxxxxxxxxxx> Cc: Jim Mattson <jmattson@xxxxxxxxxx> Cc: Joerg Roedel <joro@xxxxxxxxxx> Cc: kvm@xxxxxxxxxxxxxxx Cc: Josh Poimboeuf <jpoimboe@xxxxxxxxxx> Cc: Uros Bizjak <ubizjak@xxxxxxxxx> Cc: Maxim Levitsky <mlevitsk@xxxxxxxxxx> Signed-off-by: Lai Jiangshan <laijs@xxxxxxxxxxxxxxxxx> --- arch/x86/include/asm/idtentry.h | 2 +- arch/x86/kernel/nmi.c | 8 ++++++++ arch/x86/xen/enlighten_pv.c | 9 +++------ arch/x86/xen/xen-asm.S | 2 +- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/arch/x86/include/asm/idtentry.h b/arch/x86/include/asm/idtentry.h index e35e342673c7..5b11d2ddbb5c 100644 --- a/arch/x86/include/asm/idtentry.h +++ b/arch/x86/include/asm/idtentry.h @@ -590,7 +590,7 @@ DECLARE_IDTENTRY_RAW(X86_TRAP_MC, xenpv_exc_machine_check); /* NMI */ DECLARE_IDTENTRY_NMI(X86_TRAP_NMI, exc_nmi); #ifdef CONFIG_XEN_PV -DECLARE_IDTENTRY_RAW(X86_TRAP_NMI, xenpv_exc_nmi); +DECLARE_IDTENTRY_RAW(X86_TRAP_NMI, noist_exc_nmi); #endif /* #DB */ diff --git a/arch/x86/kernel/nmi.c b/arch/x86/kernel/nmi.c index bf250a339655..2b907a76d0a1 100644 --- a/arch/x86/kernel/nmi.c +++ b/arch/x86/kernel/nmi.c @@ -524,6 +524,14 @@ DEFINE_IDTENTRY_RAW(exc_nmi) mds_user_clear_cpu_buffers(); } +#ifdef CONFIG_XEN_PV +DEFINE_IDTENTRY_RAW(noist_exc_nmi) +{ + /* On Xen PV, NMI doesn't use IST. The C part is the same as native. */ + exc_nmi(regs); +} +#endif + void stop_nmi(void) { ignore_nmis++; diff --git a/arch/x86/xen/enlighten_pv.c b/arch/x86/xen/enlighten_pv.c index 4f18cd9eacd8..5efbdb0905b7 100644 --- a/arch/x86/xen/enlighten_pv.c +++ b/arch/x86/xen/enlighten_pv.c @@ -565,12 +565,6 @@ static void xen_write_ldt_entry(struct desc_struct *dt, int entrynum, void noist_exc_debug(struct pt_regs *regs); -DEFINE_IDTENTRY_RAW(xenpv_exc_nmi) -{ - /* On Xen PV, NMI doesn't use IST. The C part is the same as native. */ - 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. */ @@ -626,6 +620,9 @@ struct trap_array_entry { .xen = xen_asm_xenpv_##func, \ .ist_okay = ist_ok } +/* Alias to make TRAP_ENTRY_REDIR() happy for nmi */ +#define xen_asm_xenpv_exc_nmi xen_asm_noist_exc_nmi + static struct trap_array_entry trap_array[] = { TRAP_ENTRY_REDIR(exc_debug, true ), TRAP_ENTRY_REDIR(exc_double_fault, true ), diff --git a/arch/x86/xen/xen-asm.S b/arch/x86/xen/xen-asm.S index 1e626444712b..12e7cbbb2a8d 100644 --- a/arch/x86/xen/xen-asm.S +++ b/arch/x86/xen/xen-asm.S @@ -130,7 +130,7 @@ _ASM_NOKPROBE(xen_\name) xen_pv_trap asm_exc_divide_error xen_pv_trap asm_xenpv_exc_debug xen_pv_trap asm_exc_int3 -xen_pv_trap asm_xenpv_exc_nmi +xen_pv_trap asm_noist_exc_nmi xen_pv_trap asm_exc_overflow xen_pv_trap asm_exc_bounds xen_pv_trap asm_exc_invalid_op -- 2.19.1.6.gb485710b