|
[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |