[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] x86: Move microcode loading earlier



On 18/04/17 16:47, Ross Lagerwall wrote:
> Move microcode loading earlier for the boot CPU and secondary CPUs so
> that it takes place before identify_cpu() is called for each CPU.
> Without this, the detected features may be wrong if the new microcode
> loading adjusts the feature bits. That could mean that some fixes (e.g.
> d6e9f8d4f35d ("x86/vmx: fix vmentry failure with TSX bits in LBR"))
> don't work as expected.
>
> Previously during boot, the microcode loader was invoked for each
> secondary CPU started and then again for each CPU as part of an
> initcall. Simplify the code so that it is invoked exactly once for each
> CPU during boot.
>
> Signed-off-by: Ross Lagerwall <ross.lagerwall@xxxxxxxxxx>

CC'ing Julien.  This should be taken in 4.9

This also resolves my LBR XTF test, so

Tested-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>

Also, Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, with 3
corrections (which I can fix on commit)

> @@ -409,50 +381,55 @@ static struct notifier_block microcode_percpu_nfb = {
>      .notifier_call = microcode_percpu_callback,
>  };
>  
> -static int __init microcode_presmp_init(void)
> +int __init early_microcode_update_cpu(bool_t start_update)

s/bool_t/bool/ throughout.

> diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c
> index 82559ed..4e01c7b 100644
> --- a/xen/arch/x86/smpboot.c
> +++ b/xen/arch/x86/smpboot.c
> @@ -83,22 +83,22 @@ static enum cpu_state {
>  
>  void *stack_base[NR_CPUS];
>  
> +void initialize_cpu_data(unsigned int cpu)
> +{
> +    *(cpu_data + cpu) = boot_cpu_data;

cpu_data[cpu] = boot_cpu_data;

> +}
> +
>  static void smp_store_cpu_info(int id)
>  {
> -    struct cpuinfo_x86 *c = cpu_data + id;
>      unsigned int socket;
>  
> -    *c = boot_cpu_data;
> -    if ( id != 0 )
> -    {
> -        identify_cpu(c);
> +    identify_cpu(cpu_data + id);

&cpu_data[id]

~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.