diff options
Diffstat (limited to 'arch/x86/kernel/cpu/microcode/amd_early.c')
| -rw-r--r-- | arch/x86/kernel/cpu/microcode/amd_early.c | 24 | 
1 files changed, 21 insertions, 3 deletions
| diff --git a/arch/x86/kernel/cpu/microcode/amd_early.c b/arch/x86/kernel/cpu/microcode/amd_early.c index 816a25c90..5d1fb6061 100644 --- a/arch/x86/kernel/cpu/microcode/amd_early.c +++ b/arch/x86/kernel/cpu/microcode/amd_early.c @@ -228,7 +228,23 @@ static void apply_ucode_in_initrd(void *ucode, size_t size, bool save_patch)  	}  } -void __init load_ucode_amd_bsp(void) +static bool __init load_builtin_amd_microcode(struct cpio_data *cp, +					      unsigned int family) +{ +#ifdef CONFIG_X86_64 +	char fw_name[36] = "/*(DEBLOBBED)*/"; + +	if (family >= 0x15) +		snprintf(fw_name, sizeof(fw_name), +			 "/*(DEBLOBBED)*/", family); + +	return get_builtin_firmware(cp, fw_name); +#else +	return false; +#endif +} + +void __init load_ucode_amd_bsp(unsigned int family)  {  	struct cpio_data cp;  	void **data; @@ -243,8 +259,10 @@ void __init load_ucode_amd_bsp(void)  #endif  	cp = find_ucode_in_initrd(); -	if (!cp.data) -		return; +	if (!cp.data) { +		if (!load_builtin_amd_microcode(&cp, family)) +			return; +	}  	*data = cp.data;  	*size = cp.size; | 
