All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lai Jiangshan <jiangshanlai@gmail.com>
To: linux-kernel@vger.kernel.org
Cc: x86@kernel.org, Lai Jiangshan <laijs@linux.alibaba.com>,
	Andy Lutomirski <luto@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H. Peter Anvin" <hpa@zytor.com>, Tony Luck <tony.luck@intel.com>,
	Juergen Gross <jgross@suse.com>,
	"Peter Zijlstra (Intel)" <peterz@infradead.org>,
	Joerg Roedel <jroedel@suse.de>,
	linux-edac@vger.kernel.org
Subject: [PATCH V5 39/50] x86/debug, mce: Use C entry code
Date: Wed, 10 Nov 2021 19:57:25 +0800	[thread overview]
Message-ID: <20211110115736.3776-40-jiangshanlai@gmail.com> (raw)
In-Reply-To: <20211110115736.3776-1-jiangshanlai@gmail.com>

From: Lai Jiangshan <laijs@linux.alibaba.com>

Use DEFINE_IDTENTRY_IST_ETNRY to emit C entry function and use the function
directly in entry_64.S.

Signed-off-by: Lai Jiangshan <laijs@linux.alibaba.com>
---
 arch/x86/entry/entry_64.S        | 10 +---------
 arch/x86/include/asm/idtentry.h  |  1 +
 arch/x86/kernel/cpu/mce/Makefile |  3 +++
 3 files changed, 5 insertions(+), 9 deletions(-)

diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
index b6bcf7fcad34..61e89fd5ad8a 100644
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -465,16 +465,8 @@ SYM_CODE_START(\asmsym)
 	testb	$3, CS(%rsp)
 	jnz	.Lfrom_usermode_switch_stack_\@
 
-	/* paranoid_entry returns GS information for paranoid_exit in EBX. */
-	call	paranoid_entry
-
-	UNWIND_HINT_REGS
-
 	movq	%rsp, %rdi		/* pt_regs pointer */
-
-	call	\cfunc
-
-	call	paranoid_exit
+	call	ist_\cfunc
 	jmp	restore_regs_and_return_to_kernel
 
 	/* Switch to the regular task stack and use the noist entry point */
diff --git a/arch/x86/include/asm/idtentry.h b/arch/x86/include/asm/idtentry.h
index 0f615943a460..d0fd32288442 100644
--- a/arch/x86/include/asm/idtentry.h
+++ b/arch/x86/include/asm/idtentry.h
@@ -358,6 +358,7 @@ __visible __entry_text void ist_##func(struct pt_regs *regs)		\
  * Maps to DEFINE_IDTENTRY_RAW
  */
 #define DEFINE_IDTENTRY_IST(func)					\
+	DEFINE_IDTENTRY_IST_ETNRY(func)					\
 	DEFINE_IDTENTRY_RAW(func)
 
 /**
diff --git a/arch/x86/kernel/cpu/mce/Makefile b/arch/x86/kernel/cpu/mce/Makefile
index 015856abdbb1..555963416ec3 100644
--- a/arch/x86/kernel/cpu/mce/Makefile
+++ b/arch/x86/kernel/cpu/mce/Makefile
@@ -1,4 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
+
+CFLAGS_core.o			+= -fno-stack-protector
+
 obj-y				=  core.o severity.o genpool.o
 
 obj-$(CONFIG_X86_ANCIENT_MCE)	+= winchip.o p5.o
-- 
2.19.1.6.gb485710b


  parent reply	other threads:[~2021-11-10 12:01 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-10 11:56 [PATCH V5 00/50] x86/entry/64: Convert a bunch of ASM entry code into C code Lai Jiangshan
2021-11-10 11:56 ` [PATCH V5 01/50] x86/entry: Add fence for kernel entry swapgs in paranoid_entry() Lai Jiangshan
2021-11-18 15:54   ` Peter Zijlstra
2021-11-18 17:27     ` Lai Jiangshan
2021-11-10 11:56 ` [PATCH V5 02/50] x86/entry: Use the correct fence macro after swapgs in kernel CR3 Lai Jiangshan
2021-11-10 11:56 ` [PATCH V5 03/50] x86/traps: Remove stack-protector from traps.c Lai Jiangshan
2021-11-18 19:55   ` Peter Zijlstra
2021-11-19  1:38     ` Lai Jiangshan
2021-11-10 11:56 ` [PATCH V5 04/50] x86/xen: Add xenpv_restore_regs_and_return_to_usermode() Lai Jiangshan
2021-11-10 11:56 ` [PATCH V5 05/50] x86/entry: Use swapgs and native_iret directly in swapgs_restore_regs_and_return_to_usermode Lai Jiangshan
2021-11-10 11:56 ` [PATCH V5 06/50] compiler_types.h: Add __noinstr_section() for noinstr Lai Jiangshan
2021-11-10 11:56 ` [PATCH V5 07/50] x86/entry: Introduce __entry_text for entry code written in C Lai Jiangshan
2021-11-10 11:56 ` [PATCH V5 08/50] x86/entry: Move PTI_USER_* to arch/x86/include/asm/processor-flags.h Lai Jiangshan
2021-11-10 11:56 ` [PATCH V5 09/50] x86: Remove unused kernel_to_user_p4dp() and user_to_kernel_p4dp() Lai Jiangshan
2021-11-10 11:56 ` [PATCH V5 10/50] x86: Replace PTI_PGTABLE_SWITCH_BIT with PTI_USER_PGTABLE_BIT Lai Jiangshan
2021-11-10 11:56 ` [PATCH V5 11/50] x86: Mark __native_read_cr3() & native_write_cr3() as __always_inline Lai Jiangshan
2021-11-10 11:56 ` [PATCH V5 12/50] x86/traps: Move the declaration of native_irq_return_iret into proto.h Lai Jiangshan
2021-11-10 11:56 ` [PATCH V5 13/50] x86/entry: Add arch/x86/entry/entry64.c for C entry code Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 14/50] x86/entry: Expose the address of .Lgs_change to entry64.c Lai Jiangshan
2021-11-18 20:13   ` Peter Zijlstra
2021-11-10 11:57 ` [PATCH V5 15/50] x86/entry: Add C verion of SWITCH_TO_KERNEL_CR3 as switch_to_kernel_cr3() Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 16/50] x86/traps: Add fence_swapgs_{user,kernel}_entry() Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 17/50] x86/entry: Add C user_entry_swapgs_and_fence() Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 18/50] x86/traps: Move pt_regs only in fixup_bad_iret() Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 19/50] x86/entry: Switch the stack after error_entry() returns Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 20/50] x86/entry: move PUSH_AND_CLEAR_REGS out of error_entry Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 21/50] x86/entry: Move cld to the start of idtentry Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 22/50] x86/entry: Don't call error_entry for XENPV Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 23/50] x86/entry: Convert SWAPGS to swapgs in error_entry() Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 24/50] x86/entry: Implement the whole error_entry() as C code Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 25/50] x86/entry: Use idtentry macro for entry_INT80_compat Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 26/50] x86/entry: Convert SWAPGS to swapgs in entry_SYSENTER_compat() Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 27/50] x86: Remove the definition of SWAPGS Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 28/50] x86/entry: Make paranoid_exit() callable Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 29/50] x86/entry: Call paranoid_exit() in asm_exc_nmi() Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 30/50] x86/entry: move PUSH_AND_CLEAR_REGS out of paranoid_entry Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 31/50] x86/entry: Add the C version ist_switch_to_kernel_cr3() Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 32/50] x86/entry: Skip CR3 write when the saved CR3 is kernel CR3 in RESTORE_CR3 Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 33/50] x86/entry: Add the C version ist_restore_cr3() Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 34/50] x86/entry: Add the C version get_percpu_base() Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 35/50] x86/entry: Add the C version ist_switch_to_kernel_gsbase() Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 36/50] x86/entry: Implement the C version ist_paranoid_entry() Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 37/50] x86/entry: Implement the C version ist_paranoid_exit() Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 38/50] x86/entry: Add a C macro to define the function body for IST in .entry.text Lai Jiangshan
2021-11-10 11:57 ` Lai Jiangshan [this message]
2021-11-10 11:57 ` [PATCH V5 40/50] x86/idtentry.h: Move the definitions *IDTENTRY_{MCE|DEBUG}* up Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 41/50] x86/nmi: Use DEFINE_IDTENTRY_NMI for nmi Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 42/50] x86/nmi: Use C entry code Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 43/50] x86/entry: Add a C macro to define the function body for IST in .entry.text with an error code Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 44/50] x86/doublefault: Use C entry code Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 45/50] x86/sev: Add and use ist_vc_switch_off_ist() Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 46/50] x86/sev: Use C entry code Lai Jiangshan
2021-11-18  9:31   ` Liam Merwick
2021-11-18 11:04     ` Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 47/50] x86/entry: Remove ASM function paranoid_entry() and paranoid_exit() Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 48/50] x86/entry: Remove the unused ASM macros Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 49/50] x86/entry: Remove save_ret from PUSH_AND_CLEAR_REGS Lai Jiangshan
2021-11-10 11:57 ` [PATCH V5 50/50] x86/syscall/64: Move the checking for sysret to C code Lai Jiangshan
2021-11-18  8:54 ` [PATCH V5 00/50] x86/entry/64: Convert a bunch of ASM entry code into " Lai Jiangshan

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=20211110115736.3776-40-jiangshanlai@gmail.com \
    --to=jiangshanlai@gmail.com \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=jgross@suse.com \
    --cc=jroedel@suse.de \
    --cc=laijs@linux.alibaba.com \
    --cc=linux-edac@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    --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.