linux/arch
Andi Kleen ca7d00c565 x86/mtrr: Check if fixed MTRRs exist before saving them
commit 919f18f961 upstream.

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
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-08-19 05:45:47 +02:00
..
alpha alpha: remove __init annotation from exported page_is_ram() 2023-08-16 18:22:03 +02:00
arc ARC: [plat-hsdk]: Remove misplaced interrupt-cells property 2024-05-02 16:24:44 +02:00
arm ARM: spitz: fix GPIO assignment for backlight 2024-08-19 05:44:54 +02:00
arm64 arm64: errata: Expand speculative SSBS workaround (again) 2024-08-19 05:45:41 +02:00
csky csky, hexagon: fix broken sys_sync_file_range 2024-07-05 09:14:48 +02:00
h8300 h8300: Fix build errors from do_exit() to make_task_dead() transition 2023-02-01 08:27:21 +01:00
hexagon hexagon: fix fadvise64_64 calling conventions 2024-07-05 09:14:48 +02:00
ia64 arch: Introduce CONFIG_FUNCTION_ALIGNMENT 2024-04-10 16:18:49 +02:00
m68k m68k: amiga: Turn off Warp1260 interrupts during boot 2024-08-19 05:45:13 +02:00
microblaze microblaze: Remove early printk call from cpuinfo-static.c 2024-06-16 13:39:38 +02:00
mips MIPS: dts: loongson: Fix ls2k1000-rtc interrupt 2024-08-19 05:45:31 +02:00
nds32 exit: Add and use make_task_dead. 2023-02-01 08:27:20 +01:00
nios2 nios2: dts: Fix tse_mac "max-frame-size" property 2023-06-21 15:59:14 +02:00
openrisc openrisc: Fix pagewalk usage in arch_dma_{clear, set}_uncached 2024-04-10 16:19:42 +02:00
parisc parisc: use generic sys_fanotify_mark implementation 2024-07-05 09:14:45 +02:00
powerpc powerpc/configs: Update defconfig with now user-visible CONFIG_FSL_IFC 2024-08-19 05:45:27 +02:00
riscv riscv/mm: Add handling for VM_FAULT_SIGSEGV in mm_fault_error() 2024-08-19 05:45:33 +02:00
s390 s390: Mark psw in __load_psw_mask() as __unitialized 2024-07-18 13:07:38 +02:00
sh sh: rework sync_file_range ABI 2024-07-05 09:14:48 +02:00
sparc sparc64: Fix incorrect function signature and add prototype for prom_cif_init 2024-08-19 05:45:04 +02:00
um um: time-travel: fix signal blocking race/hang 2024-08-19 05:45:23 +02:00
x86 x86/mtrr: Check if fixed MTRRs exist before saving them 2024-08-19 05:45:47 +02:00
xtensa xtensa: boot/lib: fix function prototypes 2023-10-06 13:18:14 +02:00
.gitignore
Kconfig cpu: Re-enable CPU mitigations by default for !X86 architectures 2024-05-02 16:24:48 +02:00