linux/arch/x86/kvm
Sean Christopherson 3b195ac926 KVM: SVM: Inject #UD on RDTSCP when it should be disabled in the guest
Intercept RDTSCP to inject #UD if RDTSC is disabled in the guest.

Note, SVM does not support intercepting RDPID.  Unlike VMX's
ENABLE_RDTSCP control, RDTSCP interception does not apply to RDPID.  This
is a benign virtualization hole as the host kernel (incorrectly) sets
MSR_TSC_AUX if RDTSCP is supported, and KVM loads the guest's MSR_TSC_AUX
into hardware if RDTSCP is supported in the host, i.e. KVM will not leak
the host's MSR_TSC_AUX to the guest.

But, when the kernel bug is fixed, KVM will start leaking the host's
MSR_TSC_AUX if RDPID is supported in hardware, but RDTSCP isn't available
for whatever reason.  This leak will be remedied in a future commit.

Fixes: 46896c73c1 ("KVM: svm: add support for RDTSCP")
Cc: stable@vger.kernel.org
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20210504171734.1434054-4-seanjc@google.com>
Reviewed-by: Jim Mattson <jmattson@google.com>
Reviewed-by: Reiji Watanabe <reijiw@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2021-05-07 06:06:15 -04:00
..
mmu KVM: x86/mmu: Fix kdoc of __handle_changed_spte 2021-05-03 11:25:39 -04:00
svm KVM: SVM: Inject #UD on RDTSCP when it should be disabled in the guest 2021-05-07 06:06:15 -04:00
vmx KVM: VMX: Do not advertise RDPID if ENABLE_RDTSCP control is unsupported 2021-05-07 06:06:15 -04:00
cpuid.c KVM: x86: Emulate RDPID only if RDTSCP is supported 2021-05-07 06:06:15 -04:00
cpuid.h KVM: x86: Move reverse CPUID helpers to separate header file 2021-04-26 05:27:13 -04:00
debugfs.c KVM: let kvm_destroy_vm_debugfs clean up vCPU debugfs directories 2020-06-04 11:00:54 -04:00
emulate.c ARM: 2021-05-01 10:14:08 -07:00
hyperv.c KVM: x86: hyper-v: Don't touch TSC page values when guest opted for re-enlightenment 2021-03-18 08:02:46 -04:00
hyperv.h KVM: x86: hyper-v: Prevent using not-yet-updated TSC page by secondary CPUs 2021-03-17 04:03:22 -04:00
i8254.c kvm: i8254: remove redundant assignment to pointer s 2020-06-11 12:35:18 -04:00
i8254.h
i8259.c
ioapic.c KVM: ioapic: break infinite recursion on lazy EOI 2020-10-24 04:42:06 -04:00
ioapic.h kvm/x86: Remove redundant function implementations 2020-05-27 13:11:10 -04:00
irq_comm.c x86: Fix various typos in comments 2021-03-18 15:31:53 +01:00
irq.c KVM: x86/xen: Add event channel interrupt vector upcall 2021-02-04 14:19:39 +00:00
irq.h kvm/x86: Remove redundant function implementations 2020-05-27 13:11:10 -04:00
Kconfig x86/sgx: Introduce virtual EPC for use by KVM guests 2021-04-06 09:43:17 +02:00
kvm_cache_regs.h KVM: x86: Rename GPR accessors to make mode-aware variants the defaults 2021-04-26 05:27:13 -04:00
kvm_emulate.h KVM: x86: reading DR cannot fail 2021-02-09 08:17:07 -05:00
lapic.c KVM: LAPIC: Accurately guarantee busy wait for timer to expire when using hv_timer 2021-05-03 11:25:35 -04:00
lapic.h KVM: x86: hyper-v: Always use to_hv_vcpu() accessor to get to 'struct kvm_vcpu_hv' 2021-02-09 08:17:13 -05:00
Makefile Merge branch 'kvm-sev-cgroup' into HEAD 2021-04-22 13:19:01 -04:00
mmu.h KVM: x86: Get active PCID only when writing a CR3 value 2021-03-15 04:43:56 -04:00
mtrr.c KVM: x86: Add helper to consolidate "raw" reserved GPA mask calculations 2021-02-04 09:27:30 -05:00
pmu.c KVM: x86: use static calls to reduce kvm_x86_ops overhead 2021-02-04 05:27:30 -05:00
pmu.h x86: Fix various typos in comments 2021-03-18 15:31:53 +01:00
reverse_cpuid.h KVM: SEV: Mask CPUID[0x8000001F].eax according to supported features 2021-04-26 05:27:15 -04:00
trace.h KVM: x86/xen: intercept xen hypercalls if enabled 2021-02-04 14:18:45 +00:00
tss.h
x86.c KVM: x86: Hoist input checks in kvm_add_msr_filter() 2021-05-07 06:06:14 -04:00
x86.h KVM: x86: Rename GPR accessors to make mode-aware variants the defaults 2021-04-26 05:27:13 -04:00
xen.c KVM: x86: Rename GPR accessors to make mode-aware variants the defaults 2021-04-26 05:27:13 -04:00
xen.h KVM: x86/xen: Add support for vCPU runstate information 2021-03-02 14:30:54 -05:00