Skip to content

Commit

Permalink
x86/ucode: Only rescan features on successful microcode load
Browse files Browse the repository at this point in the history
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 <[email protected]>
Reviewed-by: Jan Beulich <[email protected]>
  • Loading branch information
andyhhp committed Nov 21, 2024
1 parent 365f408 commit f52004b
Showing 1 changed file with 5 additions and 13 deletions.
18 changes: 5 additions & 13 deletions xen/arch/x86/cpu/microcode/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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();

Expand All @@ -869,7 +873,6 @@ static int __init early_microcode_load(struct boot_info *bi)
int __init early_microcode_init(struct boot_info *bi)
{
const struct cpuinfo_x86 *c = &boot_cpu_data;
int rc = 0;

switch ( c->x86_vendor )
{
Expand Down Expand Up @@ -909,16 +912,5 @@ int __init early_microcode_init(struct boot_info *bi)
return -ENODEV;
}

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;
return early_microcode_load(bi);
}

0 comments on commit f52004b

Please sign in to comment.