@@ -860,6 +860,10 @@ static int __init early_microcode_load(struct boot_info *bi)
rc = ucode_ops.apply_microcode(patch, 0);
+ if ( rc == 0 )
+ /* Rescan CPUID/MSR features, which may have changed after a load. */
+ early_cpu_init(false);
+
unmap:
bootstrap_unmap();
@@ -911,14 +915,5 @@ int __init early_microcode_init(struct boot_info *bi)
rc = early_microcode_load(bi);
- /*
- * Some CPUID leaves and MSRs are only present after microcode updates
- * on some processors. We take the chance here to make sure what little
- * state we have already probed is re-probed in order to ensure we do
- * not use stale values. tsx_init() in particular needs to have up to
- * date MSR_ARCH_CAPS.
- */
- early_cpu_init(false);
-
return rc;
}
There's no point rescanning if we didn't load something new. Take the opportunity to make the comment a bit more concise. Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> --- CC: Jan Beulich <JBeulich@suse.com> CC: Roger Pau Monné <roger.pau@citrix.com> --- xen/arch/x86/cpu/microcode/core.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-)