[patch V6 14/37] x86/entry: Remove the transition leftovers

From: Thomas Gleixner
Date: Fri May 15 2020 - 20:10:55 EST



Now that all exceptions are converted over the sane flag is not longer
needed. Also the vector argument of idtentry_body on 64 bit is pointless
now.

Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>

diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
index 3c3ca6fbe58e..dd8064ffdf12 100644
--- a/arch/x86/entry/entry_32.S
+++ b/arch/x86/entry/entry_32.S
@@ -734,9 +734,8 @@
* @asmsym: ASM symbol for the entry point
* @cfunc: C function to be called
* @has_error_code: Hardware pushed error code on stack
- * @sane: Compatibility flag with 64bit
*/
-.macro idtentry vector asmsym cfunc has_error_code:req sane=0
+.macro idtentry vector asmsym cfunc has_error_code:req
SYM_CODE_START(\asmsym)
ASM_CLAC
cld
diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
index e061c48d0ae2..1157d63b3682 100644
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -496,27 +496,14 @@ SYM_CODE_END(spurious_entries_start)

/**
* idtentry_body - Macro to emit code calling the C function
- * @vector: Vector number
* @cfunc: C function to be called
* @has_error_code: Hardware pushed error code on stack
- * @sane: Sane variant which handles irq tracing, context tracking in C
*/
-.macro idtentry_body vector cfunc has_error_code:req sane=0
+.macro idtentry_body cfunc has_error_code:req

call error_entry
UNWIND_HINT_REGS

- .if \sane == 0
- TRACE_IRQS_OFF
-
-#ifdef CONFIG_CONTEXT_TRACKING
- testb $3, CS(%rsp)
- jz .Lfrom_kernel_no_ctxt_tracking_\@
- CALL_enter_from_user_mode
-.Lfrom_kernel_no_ctxt_tracking_\@:
-#endif
- .endif
-
movq %rsp, %rdi /* pt_regs pointer into 1st argument*/

.if \has_error_code == 1
@@ -526,11 +513,7 @@ SYM_CODE_END(spurious_entries_start)

call \cfunc

- .if \sane == 0
- jmp error_exit
- .else
jmp error_return
- .endif
.endm

/**
@@ -539,12 +522,11 @@ SYM_CODE_END(spurious_entries_start)
* @asmsym: ASM symbol for the entry point
* @cfunc: C function to be called
* @has_error_code: Hardware pushed error code on stack
- * @sane: Sane variant which handles irq tracing, context tracking in C
*
* The macro emits code to set up the kernel context for straight forward
* and simple IDT entries. No IST stack, no paranoid entry checks.
*/
-.macro idtentry vector asmsym cfunc has_error_code:req sane=0
+.macro idtentry vector asmsym cfunc has_error_code:req
SYM_CODE_START(\asmsym)
UNWIND_HINT_IRET_REGS offset=\has_error_code*8
ASM_CLAC
@@ -567,7 +549,7 @@ SYM_CODE_START(\asmsym)
.Lfrom_usermode_no_gap_\@:
.endif

- idtentry_body \vector \cfunc \has_error_code \sane
+ idtentry_body \cfunc \has_error_code

_ASM_NOKPROBE(\asmsym)
SYM_CODE_END(\asmsym)
@@ -642,7 +624,7 @@ SYM_CODE_START(\asmsym)

/* Switch to the regular task stack and use the noist entry point */
.Lfrom_usermode_switch_stack_\@:
- idtentry_body vector noist_\cfunc, has_error_code=0 sane=1
+ idtentry_body noist_\cfunc, has_error_code=0

_ASM_NOKPROBE(\asmsym)
SYM_CODE_END(\asmsym)
diff --git a/arch/x86/include/asm/idtentry.h b/arch/x86/include/asm/idtentry.h
index 4e4975df7ce0..3c239db60d7b 100644
--- a/arch/x86/include/asm/idtentry.h
+++ b/arch/x86/include/asm/idtentry.h
@@ -281,10 +281,10 @@ __visible noinstr void func(struct pt_regs *regs, \
* The ASM variants for DECLARE_IDTENTRY*() which emit the ASM entry stubs.
*/
#define DECLARE_IDTENTRY(vector, func) \
- idtentry vector asm_##func func has_error_code=0 sane=1
+ idtentry vector asm_##func func has_error_code=0

#define DECLARE_IDTENTRY_ERRORCODE(vector, func) \
- idtentry vector asm_##func func has_error_code=1 sane=1
+ idtentry vector asm_##func func has_error_code=1

/* Special case for 32bit IRET 'trap'. Do not emit ASM code */
#define DECLARE_IDTENTRY_SW(vector, func)
@@ -322,7 +322,7 @@ __visible noinstr void func(struct pt_regs *regs, \

/* XEN NMI and DB wrapper */
#define DECLARE_IDTENTRY_XEN(vector, func) \
- idtentry vector asm_exc_xen##func exc_##func has_error_code=0 sane=1
+ idtentry vector asm_exc_xen##func exc_##func has_error_code=0

#endif /* __ASSEMBLY__ */