diff options
Diffstat (limited to 'arch/x86/kernel/cpu/microcode/amd_early.c')
| -rw-r--r-- | arch/x86/kernel/cpu/microcode/amd_early.c | 18 | 
1 files changed, 18 insertions, 0 deletions
diff --git a/arch/x86/kernel/cpu/microcode/amd_early.c b/arch/x86/kernel/cpu/microcode/amd_early.c index 3d988a30a21d..737737edbd1e 100644 --- a/arch/x86/kernel/cpu/microcode/amd_early.c +++ b/arch/x86/kernel/cpu/microcode/amd_early.c @@ -402,3 +402,21 @@ int __init save_microcode_in_initrd_amd(void)  	return retval;  } + +void reload_ucode_amd(void) +{ +	struct microcode_amd *mc; +	u32 rev, eax; + +	rdmsr(MSR_AMD64_PATCH_LEVEL, rev, eax); + +	mc = (struct microcode_amd *)amd_ucode_patch; + +	if (mc && rev < mc->hdr.patch_id) { +		if (!__apply_microcode_amd(mc)) { +			ucode_new_rev = mc->hdr.patch_id; +			pr_info("microcode: reload patch_level=0x%08x\n", +				ucode_new_rev); +		} +	} +}  |