diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-03-20 06:27:18 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-03-20 06:27:18 -0400 |
commit | 4958134df54c2c84e9c22ea042761d439164d26e (patch) | |
tree | 503177afab11f7d25b12a84ce25b481d305c51ba /arch/x86/kernel/cpu/common.c | |
parent | c4f528795d1add8b63652673f7262729f679c6c1 (diff) | |
parent | c698ca5278934c0ae32297a8725ced2e27585d7f (diff) |
Merge 4.16-rc6 into tty-next
We want the serial/tty fixes in here as well.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch/x86/kernel/cpu/common.c')
-rw-r--r-- | arch/x86/kernel/cpu/common.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index 824aee0117bb..348cf4821240 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c | |||
@@ -1749,3 +1749,33 @@ static int __init init_cpu_syscore(void) | |||
1749 | return 0; | 1749 | return 0; |
1750 | } | 1750 | } |
1751 | core_initcall(init_cpu_syscore); | 1751 | core_initcall(init_cpu_syscore); |
1752 | |||
1753 | /* | ||
1754 | * The microcode loader calls this upon late microcode load to recheck features, | ||
1755 | * only when microcode has been updated. Caller holds microcode_mutex and CPU | ||
1756 | * hotplug lock. | ||
1757 | */ | ||
1758 | void microcode_check(void) | ||
1759 | { | ||
1760 | struct cpuinfo_x86 info; | ||
1761 | |||
1762 | perf_check_microcode(); | ||
1763 | |||
1764 | /* Reload CPUID max function as it might've changed. */ | ||
1765 | info.cpuid_level = cpuid_eax(0); | ||
1766 | |||
1767 | /* | ||
1768 | * Copy all capability leafs to pick up the synthetic ones so that | ||
1769 | * memcmp() below doesn't fail on that. The ones coming from CPUID will | ||
1770 | * get overwritten in get_cpu_cap(). | ||
1771 | */ | ||
1772 | memcpy(&info.x86_capability, &boot_cpu_data.x86_capability, sizeof(info.x86_capability)); | ||
1773 | |||
1774 | get_cpu_cap(&info); | ||
1775 | |||
1776 | if (!memcmp(&info.x86_capability, &boot_cpu_data.x86_capability, sizeof(info.x86_capability))) | ||
1777 | return; | ||
1778 | |||
1779 | pr_warn("x86/CPU: CPU features have changed after loading microcode, but might not take effect.\n"); | ||
1780 | pr_warn("x86/CPU: Please consider either early loading through initrd/built-in or a potential BIOS update.\n"); | ||
1781 | } | ||