* [PATCH V6 38/49] x86/debug, mce: Use C entry code
[not found] <20211126101209.8613-1-jiangshanlai@gmail.com>
@ 2021-11-26 10:11 ` Lai Jiangshan
0 siblings, 0 replies; only message in thread
From: Lai Jiangshan @ 2021-11-26 10:11 UTC (permalink / raw)
To: linux-kernel
Cc: x86, Lai Jiangshan, Andy Lutomirski, Thomas Gleixner, Ingo Molnar,
Borislav Petkov, Dave Hansen, H. Peter Anvin, Tony Luck,
Juergen Gross, Peter Zijlstra (Intel), Joerg Roedel,
Javier Martinez Canillas, Daniel Bristot de Oliveira,
Brijesh Singh, Andy Shevchenko, Tom Lendacky, linux-edac
From: Lai Jiangshan <laijs@linux.alibaba.com>
Use DEFINE_IDTENTRY_IST_ENTRY to emit C entry function in C files and
use the function directly in entry_64.S.
It also removes stack-protector from C files because the C entry code
can NOT use percpu register until GSBASE is properly switched.
And stack-protector depends on the percpu register to work.
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/Makefile | 1 +
arch/x86/kernel/cpu/mce/Makefile | 3 +++
4 files changed, 6 insertions(+), 9 deletions(-)
diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
index bd5e005316a3..ac05cbf894f5 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 7b17ffa43e10..f274e4e2ca17 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_ENTRY(func) \
DEFINE_IDTENTRY_RAW(func)
/**
diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile
index 2ff3e600f426..8ac45801ba8b 100644
--- a/arch/x86/kernel/Makefile
+++ b/arch/x86/kernel/Makefile
@@ -50,6 +50,7 @@ KCOV_INSTRUMENT := n
CFLAGS_head$(BITS).o += -fno-stack-protector
CFLAGS_cc_platform.o += -fno-stack-protector
+CFLAGS_traps.o += -fno-stack-protector
CFLAGS_irq.o := -I $(srctree)/$(src)/../include/asm/trace
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
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2021-11-26 10:26 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20211126101209.8613-1-jiangshanlai@gmail.com>
2021-11-26 10:11 ` [PATCH V6 38/49] x86/debug, mce: Use C entry code Lai Jiangshan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).