[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v2 3/4] x86/microcode: Ignore microcode loading interface for revision = -1
Some hypervisors report ~0 as the microcode revision to mean "don't issue microcode updates". Ignore the microcode loading interface in that case. Signed-off-by: Alejandro Vallejo <alejandro.vallejo@xxxxxxxxx> --- v2: * New addition --- xen/arch/x86/cpu/microcode/core.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c index 892bcec901..4f60d96d98 100644 --- a/xen/arch/x86/cpu/microcode/core.c +++ b/xen/arch/x86/cpu/microcode/core.c @@ -874,6 +874,21 @@ int __init early_microcode_init(unsigned long *module_map, break; } + if ( ucode_ops.collect_cpu_info ) + ucode_ops.collect_cpu_info(); + + /* + * This is a special case for virtualized Xen. Some hypervisors + * deliberately report a microcode revision of -1 to mean that they + * will not accept microcode updates. We take the hint and ignore the + * microcode interface in that case. + */ + if ( this_cpu(cpu_sig).rev == ~0 ) + { + this_cpu(cpu_sig) = (struct cpu_signature){ 0 }; + ucode_ops = (struct microcode_ops){ 0 }; + } + if ( !ucode_ops.apply_microcode ) { printk(XENLOG_WARNING "Microcode loading not available\n"); @@ -882,8 +897,6 @@ int __init early_microcode_init(unsigned long *module_map, microcode_grab_module(module_map, mbi); - ucode_ops.collect_cpu_info(); - if ( ucode_mod.mod_end || ucode_blob.size ) rc = early_microcode_update_cpu(); -- 2.34.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |