RE: [PATCH v3 08/10] x86/head64.c: Early update ucode in 64-bit

From: Yu, Fenghua
Date: Sun Dec 16 2012 - 13:38:49 EST


> -----Original Message-----
> From: yhlu.kernel@xxxxxxxxx [mailto:yhlu.kernel@xxxxxxxxx] On Behalf Of
> Yinghai Lu
> Sent: Sunday, December 16, 2012 9:59 AM
> To: Yu, Fenghua
> Cc: H Peter Anvin; Ingo Molnar; Thomas Gleixner; Mallick, Asit K;
> Tigran Aivazian; Andreas Herrmann; Borislav Petkov; linux-kernel; x86
> Subject: Re: [PATCH v3 08/10] x86/head64.c: Early update ucode in 64-
> bit
>
> On Sun, Dec 16, 2012 at 2:43 AM, Fenghua Yu <fenghua.yu@xxxxxxxxx>
> wrote:
> > From: Fenghua Yu <fenghua.yu@xxxxxxxxx>
> >
> > This updates ucode in 64-bit mode. Paging and virtual address are
> working now.
> >
> > Signed-off-by: Fenghua Yu <fenghua.yu@xxxxxxxxx>
> > ---
> > arch/x86/kernel/head64.c | 6 ++++++
> > 1 file changed, 6 insertions(+)
> >
> > diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
> > index 037df57..a512f56 100644
> > --- a/arch/x86/kernel/head64.c
> > +++ b/arch/x86/kernel/head64.c
> > @@ -25,6 +25,7 @@
> > #include <asm/kdebug.h>
> > #include <asm/e820.h>
> > #include <asm/bios_ebda.h>
> > +#include <asm/microcode.h>
> >
> > static void __init zap_identity_mappings(void)
> > {
> > @@ -73,6 +74,11 @@ void __init x86_64_start_kernel(char *
> real_mode_data)
> > /* clear bss before set_intr_gate with early_idt_handler */
> > clear_bss();
> >
> > + /*
> > + * Load microcode early on BSP.
> > + */
> > + load_ucode_bsp(real_mode_data);
> > +
> > /* Make NULL pointers segfault */
> > zap_identity_mappings();
> >
>
> So this patchset is after #PF handler set early page table version?
>
> then load_ucode_bsp() should be after
>
> load_idt((const struct desc_ptr *)&idt_descr);
>
> otherwise it will not work.
>
> Yinghai

load_ucode_bsp() only accesses initrd image, a few global variables. It doesn't call any other kernel functions (e.g. printk or kmalloc()). It is like this mainly because it works on both 32 and 64 bit.

So there is no PF and idt should not impact the function, right?

Thanks.

-Fenghua
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/