Re: [PATCH] x86/idt: load idt early in start_secondary

From: Chunyu Hu
Date: Mon Nov 27 2017 - 23:57:41 EST




----- Original Message -----
> From: "Andy Lutomirski" <luto@xxxxxxxxxx>
> To: "Chunyu Hu" <chuhu@xxxxxxxxxx>
> Cc: "Thomas Gleixner" <tglx@xxxxxxxxxxxxx>, "Ingo Molnar" <mingo@xxxxxxxxxx>, "H. Peter Anvin" <hpa@xxxxxxxxx>,
> "Peter Zijlstra" <peterz@xxxxxxxxxxxxx>, "Andrew Lutomirski" <luto@xxxxxxxxxx>, "Borislav Petkov" <bp@xxxxxxxxx>,
> "Steven Rostedt" <rostedt@xxxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx
> Sent: Tuesday, November 28, 2017 11:41:20 AM
> Subject: Re: [PATCH] x86/idt: load idt early in start_secondary
>
> On Mon, Nov 27, 2017 at 6:21 AM, Chunyu Hu <chuhu@xxxxxxxxxx> wrote:
> > 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.
>
> Reviewed-by: Andy Lutomirski <luto@xxxxxxxxxx>
>
> Except that this is presumably missing a Cc: stable.

Do I need to resend this origin version and Cc stable?

>

--
Regards,
Chunyu Hu