On Mon, Nov 27, 2017 at 6:21 AM, Chunyu Hu <ch...@redhat.com> 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 <l...@kernel.org> Except that this is presumably missing a Cc: stable.