diff options
Diffstat (limited to 'arch/x86/kernel/cpu/microcode/amd.c')
| -rw-r--r-- | arch/x86/kernel/cpu/microcode/amd.c | 16 | 
1 files changed, 8 insertions, 8 deletions
diff --git a/arch/x86/kernel/cpu/microcode/amd.c b/arch/x86/kernel/cpu/microcode/amd.c index 45db4d2ebd01..e9f4d762aa5b 100644 --- a/arch/x86/kernel/cpu/microcode/amd.c +++ b/arch/x86/kernel/cpu/microcode/amd.c @@ -320,7 +320,7 @@ void load_ucode_amd_ap(unsigned int cpuid_1_eax)  }  static enum ucode_state -load_microcode_amd(int cpu, u8 family, const u8 *data, size_t size); +load_microcode_amd(bool save, u8 family, const u8 *data, size_t size);  int __init save_microcode_in_initrd_amd(unsigned int cpuid_1_eax)  { @@ -338,8 +338,7 @@ int __init save_microcode_in_initrd_amd(unsigned int cpuid_1_eax)  	if (!desc.mc)  		return -EINVAL; -	ret = load_microcode_amd(smp_processor_id(), x86_family(cpuid_1_eax), -				 desc.data, desc.size); +	ret = load_microcode_amd(true, x86_family(cpuid_1_eax), desc.data, desc.size);  	if (ret != UCODE_OK)  		return -EINVAL; @@ -675,7 +674,7 @@ static enum ucode_state __load_microcode_amd(u8 family, const u8 *data,  }  static enum ucode_state -load_microcode_amd(int cpu, u8 family, const u8 *data, size_t size) +load_microcode_amd(bool save, u8 family, const u8 *data, size_t size)  {  	enum ucode_state ret; @@ -689,8 +688,8 @@ load_microcode_amd(int cpu, u8 family, const u8 *data, size_t size)  #ifdef CONFIG_X86_32  	/* save BSP's matching patch for early load */ -	if (cpu_data(cpu).cpu_index == boot_cpu_data.cpu_index) { -		struct ucode_patch *p = find_patch(cpu); +	if (save) { +		struct ucode_patch *p = find_patch(0);  		if (p) {  			memset(amd_ucode_patch, 0, PATCH_MAX_SIZE);  			memcpy(amd_ucode_patch, p->data, min_t(u32, ksize(p->data), @@ -722,11 +721,12 @@ static enum ucode_state request_microcode_amd(int cpu, struct device *device,  {  	char fw_name[36] = "amd-ucode/microcode_amd.bin";  	struct cpuinfo_x86 *c = &cpu_data(cpu); +	bool bsp = c->cpu_index == boot_cpu_data.cpu_index;  	enum ucode_state ret = UCODE_NFOUND;  	const struct firmware *fw;  	/* reload ucode container only on the boot cpu */ -	if (!refresh_fw || c->cpu_index != boot_cpu_data.cpu_index) +	if (!refresh_fw || !bsp)  		return UCODE_OK;  	if (c->x86 >= 0x15) @@ -743,7 +743,7 @@ static enum ucode_state request_microcode_amd(int cpu, struct device *device,  		goto fw_release;  	} -	ret = load_microcode_amd(cpu, c->x86, fw->data, fw->size); +	ret = load_microcode_amd(bsp, c->x86, fw->data, fw->size);   fw_release:  	release_firmware(fw);  | 
