mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 14:53:58 -04:00
x86/microcode/amd: Use cached microcode for AP load
Now that the microcode cache is initialized before the APs are brought up, there is no point in scanning builtin/initrd microcode during AP loading. Convert the AP loader to utilize the cache, which in turn makes the CPU hotplug callback which applies the microcode after initrd/builtin is gone, obsolete as the early loading during late hotplug operations including the resume path depends now only on the cache. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> Link: https://lore.kernel.org/r/20231017211723.243426023@linutronix.de
This commit is contained in:
committed by
Borislav Petkov (AMD)
parent
a7939f0167
commit
5af05b8d51
@@ -154,7 +154,7 @@ void __init load_ucode_bsp(void)
|
||||
if (intel)
|
||||
load_ucode_intel_bsp();
|
||||
else
|
||||
load_ucode_amd_early(cpuid_1_eax);
|
||||
load_ucode_amd_bsp(cpuid_1_eax);
|
||||
}
|
||||
|
||||
void load_ucode_ap(void)
|
||||
@@ -173,7 +173,7 @@ void load_ucode_ap(void)
|
||||
break;
|
||||
case X86_VENDOR_AMD:
|
||||
if (x86_family(cpuid_1_eax) >= 0x10)
|
||||
load_ucode_amd_early(cpuid_1_eax);
|
||||
load_ucode_amd_ap(cpuid_1_eax);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -494,15 +494,6 @@ static struct syscore_ops mc_syscore_ops = {
|
||||
.resume = microcode_bsp_resume,
|
||||
};
|
||||
|
||||
static int mc_cpu_starting(unsigned int cpu)
|
||||
{
|
||||
enum ucode_state err = microcode_ops->apply_microcode(cpu);
|
||||
|
||||
pr_debug("%s: CPU%d, err: %d\n", __func__, cpu, err);
|
||||
|
||||
return err == UCODE_ERROR;
|
||||
}
|
||||
|
||||
static int mc_cpu_online(unsigned int cpu)
|
||||
{
|
||||
struct device *dev = get_cpu_device(cpu);
|
||||
@@ -590,8 +581,6 @@ static int __init microcode_init(void)
|
||||
schedule_on_each_cpu(setup_online_cpu);
|
||||
|
||||
register_syscore_ops(&mc_syscore_ops);
|
||||
cpuhp_setup_state_nocalls(CPUHP_AP_MICROCODE_LOADER, "x86/microcode:starting",
|
||||
mc_cpu_starting, NULL);
|
||||
cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN, "x86/microcode:online",
|
||||
mc_cpu_online, mc_cpu_down_prep);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user