x86/ucode: Break early_microcode_load() out of early_microcode_init()

microcode_grab_module() and early_microcode_update_cpu() are logically one
task that passes state via static variables.

We intend to delete said static variables; start by breaking these functions
out of early_microcode_init().

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Daniel P. Smith <dpsmith@apertussolutions.com>
This commit is contained in:
Andrew Cooper committed 2024-11-05 23:42:30 +00:00
1 parent 29a4fbf60a
commit 54047cedab
1 file changed
+17 -4
+17 -4
View File
@@ -876,6 +876,22 @@ static int __init early_microcode_update_cpu(void)
return microcode_update_cpu(patch, 0);
}
/*
* There are several tasks:
* - Locate the ucode blob in the boot modules.
* - Parse and attempt in-place load.
* - Inform microcode_init_cache() of how to find the blob again.
*/
static int __init early_microcode_load(struct boot_info *bi)
{
microcode_grab_module(bi);
if ( !ucode_mod.mod_end && !ucode_blob.size )
return 0;
return early_microcode_update_cpu();
}
int __init early_microcode_init(struct boot_info *bi)
{
const struct cpuinfo_x86 *c = &boot_cpu_data;
@@ -919,10 +935,7 @@ int __init early_microcode_init(struct boot_info *bi)
return -ENODEV;
}
microcode_grab_module(bi);
if ( ucode_mod.mod_end || ucode_blob.size )
rc = early_microcode_update_cpu();
rc = early_microcode_load(bi);
/*
* Some CPUID leaves and MSRs are only present after microcode updates
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.