From: Thomas Gleixner <tglx@linutronix.de>
To: LKML <linux-kernel@vger.kernel.org>
Cc: x86@kernel.org, Steven Rostedt <rostedt@goodmis.org>,
Brian Gerst <brgerst@gmail.com>, Juergen Gross <jgross@suse.com>,
Frederic Weisbecker <frederic@kernel.org>,
Alexandre Chartre <alexandre.chartre@oracle.com>
Subject: [patch part-III V2 16/23] x86/entry: Convert Segment not present exception to IDTENTRY
Date: Mon, 09 Mar 2020 00:14:26 +0100 [thread overview]
Message-ID: <20200308231720.026128812@linutronix.de> (raw)
In-Reply-To: 20200308231410.905396057@linutronix.de
From: Thomas Gleixner <tglx@linutronix.de>
Convert #NP to IDTENTRY_ERRORCODE:
- Implement the C entry point with DEFINE_IDTENTRY
- Emit the ASM stub with DECLARE_IDTENTRY
- Remove the ASM idtentry in 64bit
- Remove the open coded ASM entry code in 32bit
- Fixup the XEN/PV code
- Remove the old prototyoes
No functional change.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/x86/entry/entry_32.S | 6 ------
arch/x86/entry/entry_64.S | 1 -
arch/x86/include/asm/idtentry.h | 1 +
arch/x86/include/asm/traps.h | 3 ---
arch/x86/kernel/idt.c | 2 +-
arch/x86/kernel/traps.c | 7 ++++++-
arch/x86/xen/enlighten_pv.c | 2 +-
arch/x86/xen/xen-asm_64.S | 2 +-
8 files changed, 10 insertions(+), 14 deletions(-)
--- a/arch/x86/entry/entry_32.S
+++ b/arch/x86/entry/entry_32.S
@@ -1327,12 +1327,6 @@ SYM_CODE_START(native_iret)
SYM_CODE_END(native_iret)
#endif
-SYM_CODE_START(segment_not_present)
- ASM_CLAC
- pushl $do_segment_not_present
- jmp common_exception
-SYM_CODE_END(segment_not_present)
-
SYM_CODE_START(stack_segment)
ASM_CLAC
pushl $do_stack_segment
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -1062,7 +1062,6 @@ apicinterrupt IRQ_WORK_VECTOR irq_work
*/
idtentry X86_TRAP_BP int3 do_int3 has_error_code=0
-idtentry X86_TRAP_NP segment_not_present do_segment_not_present has_error_code=1
idtentry X86_TRAP_SS stack_segment do_stack_segment has_error_code=1
idtentry X86_TRAP_GP general_protection do_general_protection has_error_code=1
idtentry X86_TRAP_SPURIOUS spurious_interrupt_bug do_spurious_interrupt_bug has_error_code=0
--- a/arch/x86/include/asm/idtentry.h
+++ b/arch/x86/include/asm/idtentry.h
@@ -146,5 +146,6 @@ DECLARE_IDTENTRY(X86_TRAP_OLD_MF, exc_co
/* Simple exception entries with error code pushed by hardware */
DECLARE_IDTENTRY_ERRORCODE(X86_TRAP_TS, exc_invalid_tss);
+DECLARE_IDTENTRY_ERRORCODE(X86_TRAP_NP, exc_segment_not_present);
#endif
--- a/arch/x86/include/asm/traps.h
+++ b/arch/x86/include/asm/traps.h
@@ -17,7 +17,6 @@ asmlinkage void int3(void);
#ifdef CONFIG_X86_64
asmlinkage void double_fault(void);
#endif
-asmlinkage void segment_not_present(void);
asmlinkage void stack_segment(void);
asmlinkage void general_protection(void);
asmlinkage void page_fault(void);
@@ -35,7 +34,6 @@ asmlinkage void xen_xennmi(void);
asmlinkage void xen_xendebug(void);
asmlinkage void xen_int3(void);
asmlinkage void xen_double_fault(void);
-asmlinkage void xen_segment_not_present(void);
asmlinkage void xen_stack_segment(void);
asmlinkage void xen_general_protection(void);
asmlinkage void xen_page_fault(void);
@@ -54,7 +52,6 @@ dotraplinkage void do_int3(struct pt_reg
#if defined(CONFIG_X86_64) || defined(CONFIG_DOUBLEFAULT)
dotraplinkage void do_double_fault(struct pt_regs *regs, long error_code, unsigned long cr2);
#endif
-dotraplinkage void do_segment_not_present(struct pt_regs *regs, long error_code);
dotraplinkage void do_stack_segment(struct pt_regs *regs, long error_code);
dotraplinkage void do_general_protection(struct pt_regs *regs, long error_code);
dotraplinkage void do_page_fault(struct pt_regs *regs, unsigned long error_code, unsigned long address);
--- a/arch/x86/kernel/idt.c
+++ b/arch/x86/kernel/idt.c
@@ -77,7 +77,7 @@ static const __initconst struct idt_data
INTG(X86_TRAP_NM, asm_exc_device_not_available),
INTG(X86_TRAP_OLD_MF, asm_exc_coproc_segment_overrun),
INTG(X86_TRAP_TS, asm_exc_invalid_tss),
- INTG(X86_TRAP_NP, segment_not_present),
+ INTG(X86_TRAP_NP, asm_exc_segment_not_present),
INTG(X86_TRAP_SS, stack_segment),
INTG(X86_TRAP_GP, general_protection),
INTG(X86_TRAP_SPURIOUS, spurious_interrupt_bug),
--- a/arch/x86/kernel/traps.c
+++ b/arch/x86/kernel/traps.c
@@ -317,6 +317,12 @@ DEFINE_IDTENTRY_ERRORCODE(exc_invalid_ts
0, NULL);
}
+DEFINE_IDTENTRY_ERRORCODE(exc_segment_not_present)
+{
+ do_error_trap(regs, error_code, "segment not present", X86_TRAP_NP,
+ SIGBUS, 0, NULL);
+}
+
#define IP ((void __user *)uprobe_get_trap_addr(regs))
#define DO_ERROR(trapnr, signr, sicode, addr, str, name) \
dotraplinkage void do_##name(struct pt_regs *regs, long error_code) \
@@ -324,7 +330,6 @@ dotraplinkage void do_##name(struct pt_r
do_error_trap(regs, error_code, str, trapnr, signr, sicode, addr); \
}
-DO_ERROR(X86_TRAP_NP, SIGBUS, 0, NULL, "segment not present", segment_not_present)
DO_ERROR(X86_TRAP_SS, SIGBUS, 0, NULL, "stack segment", stack_segment)
DO_ERROR(X86_TRAP_AC, SIGBUS, BUS_ADRALN, NULL, "alignment check", alignment_check)
#undef IP
--- a/arch/x86/xen/enlighten_pv.c
+++ b/arch/x86/xen/enlighten_pv.c
@@ -626,7 +626,7 @@ static struct trap_array_entry trap_arra
TRAP_ENTRY(exc_device_not_available, false ),
TRAP_ENTRY(exc_coproc_segment_overrun, false ),
TRAP_ENTRY(exc_invalid_tss, false ),
- { segment_not_present, xen_segment_not_present, false },
+ TRAP_ENTRY(exc_segment_not_present, false ),
{ stack_segment, xen_stack_segment, false },
{ general_protection, xen_general_protection, false },
{ spurious_interrupt_bug, xen_spurious_interrupt_bug, false },
--- a/arch/x86/xen/xen-asm_64.S
+++ b/arch/x86/xen/xen-asm_64.S
@@ -40,7 +40,7 @@ xen_pv_trap asm_exc_device_not_available
xen_pv_trap double_fault
xen_pv_trap asm_exc_coproc_segment_overrun
xen_pv_trap asm_exc_invalid_tss
-xen_pv_trap segment_not_present
+xen_pv_trap asm_exc_segment_not_present
xen_pv_trap stack_segment
xen_pv_trap general_protection
xen_pv_trap page_fault
next prev parent reply other threads:[~2020-03-08 23:24 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-08 23:14 [patch part-III V2 00/23] x86/entry: Consolidation - Part III (simple exceptions) Thomas Gleixner
2020-03-08 23:14 ` [patch part-III V2 01/23] x86/traps: Split trap numbers out in a seperate header Thomas Gleixner
2020-03-08 23:14 ` [patch part-III V2 02/23] x86/entry/64: Avoid pointless code when CONTEXT_TRACKING=n Thomas Gleixner
2020-03-08 23:14 ` [patch part-III V2 03/23] x86/entry/64: Reorder idtentries Thomas Gleixner
2020-03-08 23:14 ` [patch part-III V2 04/23] x86/entry: Distangle idtentry Thomas Gleixner
2020-03-08 23:14 ` [patch part-III V2 05/23] x86/entry/32: Provide macro to emit IDT entry stubs Thomas Gleixner
2020-03-09 5:08 ` Brian Gerst
2020-03-09 7:01 ` Thomas Gleixner
2020-03-08 23:14 ` [patch part-III V2 06/23] x86/idtentry: Provide macros to define/declare IDT entry points Thomas Gleixner
2020-03-08 23:14 ` [patch part-III V2 07/23] x86/traps: Prepare for using DEFINE_IDTENTRY Thomas Gleixner
2020-03-08 23:14 ` [patch part-III V2 08/23] x86/entry: Convert Divide Error to IDTENTRY Thomas Gleixner
2020-03-08 23:14 ` [patch part-III V2 09/23] x86/entry: Convert Overflow exception " Thomas Gleixner
2020-03-08 23:14 ` [patch part-III V2 10/23] x86/entry: Convert Bounds " Thomas Gleixner
2020-03-08 23:14 ` [patch part-III V2 11/23] x86/entry: Convert Invalid Opcode " Thomas Gleixner
2020-03-08 23:14 ` [patch part-III V2 12/23] x86/entry: Convert Device not available " Thomas Gleixner
2020-03-08 23:14 ` [patch part-III V2 13/23] x86/entry: Convert Coprocessor segment overrun " Thomas Gleixner
2020-03-08 23:14 ` [patch part-III V2 14/23] x86/entry: Provide IDTENTRY_ERRORCODE Thomas Gleixner
2020-03-08 23:14 ` [patch part-III V2 15/23] x86/entry: Convert Invalid TSS exception to IDTENTRY Thomas Gleixner
2020-03-08 23:14 ` Thomas Gleixner [this message]
2020-03-08 23:14 ` [patch part-III V2 17/23] x86/entry: Convert Stack segment " Thomas Gleixner
2020-03-08 23:14 ` [patch part-III V2 18/23] x86/entry: Convert General protection " Thomas Gleixner
2020-03-08 23:14 ` [patch part-III V2 19/23] x86/entry: Convert Spurious interrupt bug " Thomas Gleixner
2020-03-08 23:14 ` [patch part-III V2 20/23] x86/entry: Convert Coprocessor error " Thomas Gleixner
2020-03-08 23:14 ` [patch part-III V2 21/23] x86/entry: Convert Alignment check " Thomas Gleixner
2020-03-08 23:14 ` [patch part-III V2 22/23] x86/entry: Convert SIMD coprocessor error " Thomas Gleixner
2020-03-08 23:14 ` [patch part-III V2 23/23] x86/entry/32: Convert IRET exception to IDTENTRY_SW Thomas Gleixner
2020-03-09 9:32 ` [patch part-III V2 00/23] x86/entry: Consolidation - Part III (simple exceptions) Jürgen Groß
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200308231720.026128812@linutronix.de \
--to=tglx@linutronix.de \
--cc=alexandre.chartre@oracle.com \
--cc=brgerst@gmail.com \
--cc=frederic@kernel.org \
--cc=jgross@suse.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rostedt@goodmis.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.