linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Chunyu Hu <chuhu@redhat.com>
To: tglx@linutronix.de
Cc: mingo@kernel.org, hpa@zytor.com, peterz@infradead.org,
	luto@kernel.org, bp@alien8.de, rostedt@goodmis.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH] x86/idt: load idt early in start_secondary
Date: Mon, 27 Nov 2017 22:21:39 +0800	[thread overview]
Message-ID: <1511792499-4073-1-git-send-email-chuhu@redhat.com> (raw)

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

             reply	other threads:[~2017-11-27 14:21 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-27 14:21 Chunyu Hu [this message]
2017-11-27 23:35 ` [tip:x86/urgent] x86/idt: Load idt early in start_secondary 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

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=1511792499-4073-1-git-send-email-chuhu@redhat.com \
    --to=chuhu@redhat.com \
    --cc=bp@alien8.de \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    /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 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).