All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86/idt: load idt early in start_secondary
@ 2017-11-27 14:21 Chunyu Hu
  2017-11-27 23:35 ` [tip:x86/urgent] x86/idt: Load " tip-bot for Chunyu Hu
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Chunyu Hu @ 2017-11-27 14:21 UTC (permalink / raw)
  To: tglx; +Cc: mingo, hpa, peterz, luto, bp, rostedt, linux-kernel

For ap, idt is first loaded in cpu_init() with load_current_idt(),
that is to say, no exception can be handled before there. And then
the idt_table has been completed by the bp.

While there are some WARNs which needs the UD exception handling
in the early boot code might be triggered when something uexpected
happens during boot. In that case, cpu would fail to boot as the
exception can't be handled. A WARNing during boot is not usually
meaning the system could not boot.

One use case is when ftrace=function is setup in kernel cmdline, the
ftrace callback function will be called for every traced function.
And in my case, the first traced function is load_ucode_ap. And there
are WARN()s in function trace callback handling, it failed to reboot
as one of the WARN()s is triggered before load_current_idt() executed.

To make WARN()s can work earlier to ap, we load the idt_table early
in start_secondary, and keep the second time idt load in cpu_init,
as there is a load_ucode_ap() there.

Signed-off-by: Chunyu Hu <chuhu@redhat.com>
---
 arch/x86/kernel/smpboot.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index 3d01df7..05a97d5 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -237,7 +237,7 @@ static void notrace start_secondary(void *unused)
 	load_cr3(swapper_pg_dir);
 	__flush_tlb_all();
 #endif
-
+	load_current_idt();
 	cpu_init();
 	x86_cpuinit.early_percpu_clock_init();
 	preempt_disable();
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2017-11-28 14:56 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-27 14:21 [PATCH] x86/idt: load idt early in start_secondary Chunyu Hu
2017-11-27 23:35 ` [tip:x86/urgent] x86/idt: Load " tip-bot for Chunyu Hu
2017-11-28  3:41 ` [PATCH] x86/idt: load " Andy Lutomirski
2017-11-28  4:57   ` Chunyu Hu
2017-11-28  5:28     ` Andy Lutomirski
2017-11-28  7:17       ` Thomas Gleixner
2017-11-28 14:56     ` Steven Rostedt
2017-11-28  7:22 ` [tip:x86/urgent] x86/idt: Load " tip-bot for Chunyu Hu

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.