]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit - arch/x86/kernel/cpu/common.c
x86/cpu: Prevent cpuinfo_x86::x86_phys_bits adjustment corruption
authorKirill A. Shutemov <kirill.shutemov@linux.intel.com>
Tue, 10 Apr 2018 09:27:04 +0000 (12:27 +0300)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 10 Apr 2018 14:33:21 +0000 (16:33 +0200)
commitd94a155c59c98c19b98ee949eaab6a0312bbd6be
treec6b73deac64398eaef6a3c9b69652572939f68a2
parent92e830f25fc0be447486a4658887ded68ef824f5
x86/cpu: Prevent cpuinfo_x86::x86_phys_bits adjustment corruption

Some features (Intel MKTME, AMD SME) reduce the number of effectively
available physical address bits. cpuinfo_x86::x86_phys_bits is adjusted
accordingly during the early cpu feature detection.

Though if get_cpu_cap() is called later again then this adjustement is
overwritten. That happens in setup_pku(), which is called after
detect_tme().

To address this, extract the address sizes enumeration into a separate
function, which is only called only from early_identify_cpu() and from
generic_identify().

This makes get_cpu_cap() safe to be called later during boot proccess
without overwriting cpuinfo_x86::x86_phys_bits.

[ tglx: Massaged changelog ]

Fixes: cb06d8e3d020 ("x86/tme: Detect if TME and MKTME is activated by BIOS")
Reported-by: Kai Huang <kai.huang@linux.intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Tom Lendacky <thomas.lendacky@amd.com>
Cc: Dave Hansen <dave.hansen@intel.com>
Cc: linux-mm@kvack.org
Cc: "H. Peter Anvin" <hpa@zytor.com>
Link: https://lkml.kernel.org/r/20180410092704.41106-1-kirill.shutemov@linux.intel.com
arch/x86/kernel/cpu/common.c