1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/arch/x86/kernel/cpu/mtrr
Andi Kleen 919f18f961 x86/mtrr: Check if fixed MTRRs exist before saving them
MTRRs have an obsolete fixed variant for fine grained caching control
of the 640K-1MB region that uses separate MSRs. This fixed variant has
a separate capability bit in the MTRR capability MSR.

So far all x86 CPUs which support MTRR have this separate bit set, so it
went unnoticed that mtrr_save_state() does not check the capability bit
before accessing the fixed MTRR MSRs.

Though on a CPU that does not support the fixed MTRR capability this
results in a #GP.  The #GP itself is harmless because the RDMSR fault is
handled gracefully, but results in a WARN_ON().

Add the missing capability check to prevent this.

Fixes: 2b1f6278d7 ("[PATCH] x86: Save the MTRRs of the BSP before booting an AP")
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/all/20240808000244.946864-1-ak@linux.intel.com
2024-08-08 17:03:12 +02:00
..
amd.c x86/mtrr: Replace vendor tests in MTRR code 2023-06-01 15:04:32 +02:00
centaur.c x86/mtrr: Remove unused code 2023-06-01 15:04:33 +02:00
cleanup.c x86/mtrr: Unify debugging printing 2023-06-01 15:04:33 +02:00
cyrix.c x86/mtrr: Replace vendor tests in MTRR code 2023-06-01 15:04:32 +02:00
generic.c x86/CPU/AMD: Track SNP host status with cc_platform_*() 2024-04-04 10:40:30 +02:00
if.c proc: convert everything to "struct proc_ops" 2020-02-04 03:05:26 +00:00
legacy.c x86/mtrr: Allocate mtrr_value array dynamically 2023-06-01 15:04:33 +02:00
Makefile x86/mtrr: Move 32-bit code from mtrr.c to legacy.c 2023-06-01 15:04:33 +02:00
mtrr.c x86/mtrr: Check if fixed MTRRs exist before saving them 2024-08-08 17:03:12 +02:00
mtrr.h x86/mtrr: Unify debugging printing 2023-06-01 15:04:33 +02:00