linux/arch/x86/kvm
Jim Mattson eb0c614c42 KVM: x86: Mask off unsupported and unknown bits of IA32_ARCH_CAPABILITIES
[ Upstream commit 0204750bd4 ]

KVM should not claim to virtualize unknown IA32_ARCH_CAPABILITIES
bits. When kvm_get_arch_capabilities() was originally written, there
were only a few bits defined in this MSR, and KVM could virtualize all
of them. However, over the years, several bits have been defined that
KVM cannot just blindly pass through to the guest without additional
work (such as virtualizing an MSR promised by the
IA32_ARCH_CAPABILITES feature bit).

Define a mask of supported IA32_ARCH_CAPABILITIES bits, and mask off
any other bits that are set in the hardware MSR.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Fixes: 5b76a3cff0 ("KVM: VMX: Tell the nested hypervisor to skip L1D flush on vmentry")
Signed-off-by: Jim Mattson <jmattson@google.com>
Reviewed-by: Vipin Sharma <vipinsh@google.com>
Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>
Message-Id: <20220830174947.2182144-1-jmattson@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-09-08 11:11:38 +02:00
..
mmu KVM: x86: Tag kvm_mmu_x86_module_init() with __init 2022-08-21 15:15:21 +02:00
svm KVM: x86/pmu: Use different raw event masks for AMD and Intel 2022-08-21 15:16:22 +02:00
vmx KVM: x86/pmu: Ignore pmu->global_ctrl check if vPMU doesn't support global_ctrl 2022-08-21 15:16:22 +02:00
cpuid.c kvm: x86/cpuid: Only provide CPUID leaf 0xA if host has architectural PMU 2022-05-12 12:25:43 +02:00
cpuid.h KVM: x86: reinstate vendor-agnostic check on SPEC_CTRL cpuid bits 2020-12-30 11:54:14 +01:00
debugfs.c KVM: let kvm_destroy_vm_debugfs clean up vCPU debugfs directories 2020-06-04 11:00:54 -04:00
emulate.c KVM: x86: Set error code to segment selector on LLDT/LTR non-canonical #GP 2022-08-21 15:15:20 +02:00
hyperv.c KVM: x86: Check lapic_in_kernel() before attempting to set a SynIC irq 2022-08-21 15:16:25 +02:00
hyperv.h x86/kvm/hyper-v: Add support for synthetic debugger interface 2020-06-01 04:26:11 -04:00
i8254.c kvm: i8254: remove redundant assignment to pointer s 2020-06-11 12:35:18 -04:00
i8254.h
i8259.c KVM: x86: Refactor picdev_write() to prevent Spectre-v1/L1TF attacks 2020-01-27 19:59:37 +01:00
ioapic.c Revert "x86/kvm: fix vcpu-id indexed array sizes" 2021-11-12 14:58:32 +01:00
ioapic.h Revert "x86/kvm: fix vcpu-id indexed array sizes" 2021-11-12 14:58:32 +01:00
irq_comm.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
irq.c KVM: x86: Fix split-irqchip vs interrupt injection window request 2020-11-27 09:27:28 -05:00
irq.h kvm/x86: Remove redundant function implementations 2020-05-27 13:11:10 -04:00
Kconfig x86/kvm: hide KVM options from menuconfig when KVM is not compiled 2020-10-21 17:36:30 -04:00
kvm_cache_regs.h KVM: x86: Let the guest own CR4.FSGSBASE 2020-10-21 17:48:50 -04:00
kvm_emulate.h KVM: x86/emulator: Emulate RDPID only if it is enabled in guest 2022-04-13 21:00:54 +02:00
lapic.c KVM: x86: Avoid theoretical NULL pointer dereference in kvm_irq_delivery_to_apic_fast() 2022-08-21 15:16:25 +02:00
lapic.h KVM: nVMX: Morph notification vector IRQ on nested VM-Enter to pending PI 2020-09-28 07:57:22 -04:00
Makefile kvm: x86/mmu: Init / Uninit the TDP MMU 2020-10-21 18:17:00 -04:00
mmu.h KVM: x86: fix shift out of bounds reported by UBSAN 2021-01-12 20:18:26 +01:00
mtrr.c KVM: x86: Protect MSR-based index computations in fixed_msr_to_seg_unit() from Spectre-v1/L1TF attacks 2020-01-27 19:59:39 +01:00
pmu.c kvm: x86/pmu: Fix the compare function used by the pmu event filter 2022-08-21 15:16:26 +02:00
pmu.h KVM: x86/pmu: Refactoring find_arch_event() to pmc_perf_hw_id() 2022-02-23 12:01:04 +01:00
trace.h KVM: x86: Ensure liveliness of nested VM-Enter fail tracepoint message 2021-06-16 12:01:46 +02:00
tss.h
x86.c KVM: x86: Mask off unsupported and unknown bits of IA32_ARCH_CAPABILITIES 2022-09-08 11:11:38 +02:00
x86.h KVM: x86: Factor out x86 instruction emulation with decoding 2021-08-26 08:35:34 -04:00