There's no need for microcode_init_cache() to be called exactly where it is in
__start_xen(). All that matters is it must be after xmalloc() is available
and before APs start up.
As a consequence, microcode_init_cache() runs a little later on boot now.
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>
return rc;
}
-int __init microcode_init_cache(struct boot_info *bi)
+static int __init cf_check microcode_init_cache(void)
{
+ struct boot_info *bi = &xen_boot_info;
int rc = 0;
if ( !ucode_ops.apply_microcode )
return rc;
}
+presmp_initcall(microcode_init_cache);
/* BSP calls this function to parse ucode blob and then apply an update. */
static int __init early_microcode_update_cpu(void)
struct boot_info;
int early_microcode_init(struct boot_info *bi);
-int microcode_init_cache(struct boot_info *bi);
#endif /* ASM_X86__MICROCODE_H */
timer_init();
- microcode_init_cache(bi); /* Needs xmalloc() */
-
tsx_init(); /* Needs microcode. May change HLE/RTM feature bits. */
calculate_raw_cpu_policy(); /* Needs microcode. No other dependenices. */