From: Lai Jiangshan <jiangshan.ljs@xxxxxxxxxxxx> Signed-off-by: Lai Jiangshan <jiangshan.ljs@xxxxxxxxxxxx> --- arch/x86/entry/entry_64.S | 53 --------------------------------- arch/x86/entry/ist_entry.c | 4 +-- arch/x86/include/asm/idtentry.h | 4 +-- 3 files changed, 4 insertions(+), 57 deletions(-) diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S index 2bb7ab8512dc..e4ddc793f841 100644 --- a/arch/x86/entry/entry_64.S +++ b/arch/x86/entry/entry_64.S @@ -621,59 +621,6 @@ _ASM_NOKPROBE(\asmsym) SYM_CODE_END(\asmsym) .endm -/** - * idtentry_mce_db - Macro to generate entry stubs for #MC and #DB - * @vector: Vector number - * @asmsym: ASM symbol for the entry point - * @cfunc: C function to be called - * - * The macro emits code to set up the kernel context for #MC and #DB - * - * If the entry comes from user space it uses the normal entry path - * including the return to user space work and preemption checks on - * exit. - * - * If hits in kernel mode then it needs to go through the paranoid - * entry as the exception can hit any random state. No preemption - * check on exit to keep the paranoid path simple. - */ -.macro idtentry_mce_db vector asmsym cfunc -SYM_CODE_START(\asmsym) - UNWIND_HINT_IRET_REGS - ENDBR - ASM_CLAC - cld - - pushq $-1 /* ORIG_RAX: no syscall to restart */ - - /* - * If the entry is from userspace, switch stacks and treat it as - * a normal entry. - */ - testb $3, CS-ORIG_RAX(%rsp) - jnz .Lfrom_usermode_switch_stack_\@ - - PUSH_AND_CLEAR_REGS - UNWIND_HINT_REGS - ENCODE_FRAME_POINTER - - /* paranoid_entry returns GS information for paranoid_exit in EBX. */ - call paranoid_entry - - movq %rsp, %rdi /* pt_regs pointer */ - - call \cfunc - - jmp paranoid_exit - - /* Switch to the regular task stack and use the noist entry point */ -.Lfrom_usermode_switch_stack_\@: - idtentry_body noist_\cfunc, has_error_code=0 - -_ASM_NOKPROBE(\asmsym) -SYM_CODE_END(\asmsym) -.endm - #ifdef CONFIG_AMD_MEM_ENCRYPT /** * idtentry_vc - Macro to generate entry stub for #VC diff --git a/arch/x86/entry/ist_entry.c b/arch/x86/entry/ist_entry.c index 407571cc4a8c..946b3b537bd5 100644 --- a/arch/x86/entry/ist_entry.c +++ b/arch/x86/entry/ist_entry.c @@ -42,8 +42,8 @@ static __always_inline bool identify_ist_##sym_name( \ } DEFINE_IDENTIFY_IST(NMI, nmi, true) -DEFINE_IDENTIFY_IST(DB, debug, false) -DEFINE_IDENTIFY_IST(MCE, machine_check, false) +DEFINE_IDENTIFY_IST(DB, debug, true) +DEFINE_IDENTIFY_IST(MCE, machine_check, IS_ENABLED(CONFIG_X86_MCE)) DEFINE_IDENTIFY_IST(VC, vmm_communication, false) static __always_inline bool identify_ist( diff --git a/arch/x86/include/asm/idtentry.h b/arch/x86/include/asm/idtentry.h index b568f1de6da6..01f3152ffe82 100644 --- a/arch/x86/include/asm/idtentry.h +++ b/arch/x86/include/asm/idtentry.h @@ -454,10 +454,10 @@ __visible noinstr void func(struct pt_regs *regs, \ idtentry_ist vector asm_##func func func has_error_code=0 stack_offset=CEA_stacks_NMI # define DECLARE_IDTENTRY_MCE(vector, func) \ - idtentry_mce_db vector asm_##func func + idtentry_ist vector asm_##func func noist_##func has_error_code=0 stack_offset=CEA_stacks_MCE # define DECLARE_IDTENTRY_DEBUG(vector, func) \ - idtentry_mce_db vector asm_##func func + idtentry_ist vector asm_##func func noist_##func has_error_code=0 stack_offset=CEA_stacks_DB # define DECLARE_IDTENTRY_DF(vector, func) \ idtentry_df vector asm_##func func -- 2.19.1.6.gb485710b