Skip to content

Commit

Permalink
x86/entry: Remove the transition leftovers
Browse files Browse the repository at this point in the history
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@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Acked-by: Andy Lutomirski <luto@kernel.org>
Link: https://lore.kernel.org/r/20200521202118.331115895@linutronix.de
  • Loading branch information
Thomas Gleixner committed Jun 11, 2020
1 parent 91eeafe commit e2dcb5f
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 27 deletions.
3 changes: 1 addition & 2 deletions arch/x86/entry/entry_32.S
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
26 changes: 4 additions & 22 deletions arch/x86/entry/entry_64.S
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -526,11 +513,7 @@ SYM_CODE_END(spurious_entries_start)

call \cfunc

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

/**
Expand All @@ -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
Expand All @@ -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)
Expand Down Expand Up @@ -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)
Expand Down
6 changes: 3 additions & 3 deletions arch/x86/include/asm/idtentry.h
Original file line number Diff line number Diff line change
Expand Up @@ -298,10 +298,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)
Expand Down Expand Up @@ -345,7 +345,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__ */

Expand Down

0 comments on commit e2dcb5f

Please sign in to comment.