linux-stable/arch/x86/kvm
Like Xu 14ddbb83c3 KVM: x86/pmu: Do not speculatively query Intel GP PMCs that don't exist yet
[ Upstream commit 8631ef59b6 ]

The SDM lists an architectural MSR IA32_CORE_CAPABILITIES (0xCF)
that limits the theoretical maximum value of the Intel GP PMC MSRs
allocated at 0xC1 to 14; likewise the Intel April 2022 SDM adds
IA32_OVERCLOCKING_STATUS at 0x195 which limits the number of event
selection MSRs to 15 (0x186-0x194).

Limiting the maximum number of counters to 14 or 18 based on the currently
allocated MSRs is clearly fragile, and it seems likely that Intel will
even place PMCs 8-15 at a completely different range of MSR indices.
So stop at the maximum number of GP PMCs supported today on Intel
processors.

There are some machines, like Intel P4 with non Architectural PMU, that
may indeed have 18 counters, but those counters are in a completely
different MSR address range and are not supported by KVM.

Cc: Vitaly Kuznetsov <vkuznets@redhat.com>
Cc: stable@vger.kernel.org
Fixes: cf05a67b68 ("KVM: x86: omit "impossible" pmu MSRs from MSR list")
Suggested-by: Jim Mattson <jmattson@google.com>
Signed-off-by: Like Xu <likexu@tencent.com>
Reviewed-by: Jim Mattson <jmattson@google.com>
Message-Id: <20220919091008.60695-1-likexu@tencent.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-11-26 09:24:33 +01:00
..
mmu KVM: x86/mmu: Fold rmap_recycle into rmap_add 2022-09-28 11:11:54 +02:00
svm x86/cpu: Restore AMD's DE_CFG MSR after resume 2022-11-16 09:58:31 +01:00
vmx KVM: VMX: fully disable SGX if SECONDARY_EXEC_ENCLS_EXITING unavailable 2022-11-10 18:15:41 +01:00
cpuid.c KVM: x86: Mask off reserved bits in CPUID.8000001FH 2022-11-10 18:15:41 +01:00
cpuid.h KVM: x86: Move reverse CPUID helpers to separate header file 2021-04-26 05:27:13 -04:00
debugfs.c KVM: x86: Check for rmaps allocation 2022-01-11 15:35:15 +01:00
emulate.c KVM: x86: emulator: update the emulation mode after CR0 write 2022-11-10 18:15:42 +01:00
fpu.h KVM: x86: Move FPU register accessors into fpu.h 2021-06-17 13:09:24 -04:00
hyperv.c KVM: x86: Forbid VMM to set SYNIC/STIMER MSRs when SynIC wasn't activated 2022-04-08 14:24:07 +02:00
hyperv.h KVM: x86: Query vcpu->vcpu_idx directly and drop its accessor 2021-09-22 10:33:11 -04:00
i8254.c KVM: x86: Migrate the PIT only if vcpu0 is migrated, not any BSP 2021-08-02 11:01:51 -04:00
i8254.h
i8259.c x86: Fix typo s/ECLR/ELCR/ for the PIC register 2021-08-10 23:31:44 +02:00
ioapic.c Revert "x86/kvm: fix vcpu-id indexed array sizes" 2021-11-12 15:05:47 +01:00
ioapic.h x86/kvm: remove unused ack_notifier callbacks 2021-12-22 09:32:34 +01:00
irq.c
irq.h x86/kvm: remove unused ack_notifier callbacks 2021-12-22 09:32:34 +01:00
irq_comm.c x86: Fix various typos in comments 2021-03-18 15:31:53 +01:00
Kconfig ARM: 2021-06-28 15:40:51 -07:00
kvm_cache_regs.h KVM: x86: Introduce KVM_GET_SREGS2 / KVM_SET_SREGS2 2021-06-17 13:09:47 -04:00
kvm_emulate.h KVM: x86/emulator: Emulate RDPID only if it is enabled in guest 2022-04-13 20:59:00 +02:00
kvm_onhyperv.c KVM: x86: hyper-v: Move the remote TLB flush logic out of vmx 2021-06-17 13:09:36 -04:00
kvm_onhyperv.h KVM: x86: hyper-v: Move the remote TLB flush logic out of vmx 2021-06-17 13:09:36 -04:00
lapic.c KVM: LAPIC: Drop pending LAPIC timer injection when canceling the timer 2022-06-09 10:23:13 +02:00
lapic.h KVM: x86: Add a return code to kvm_apic_accept_events 2021-06-17 13:09:31 -04:00
Makefile KVM: stats: Add fd-based API to read binary stats data 2021-06-24 11:47:57 -04:00
mmu.h KVM: x86: Reinitialize context if host userspace toggles EFER.LME 2022-04-08 14:24:03 +02:00
mtrr.c
pmu.c KVM: x86/pmu: Fix and isolate TSX-specific performance event logic 2022-04-13 20:59:00 +02:00
pmu.h KVM: x86/pmu: Update AMD PMC sample period to fix guest NMI-watchdog 2022-04-27 14:39:00 +02: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: Trace re-injected exceptions 2022-11-10 18:15:24 +01:00
tss.h
x86.c KVM: x86/pmu: Do not speculatively query Intel GP PMCs that don't exist yet 2022-11-26 09:24:33 +01:00
x86.h lockdep: Fix -Wunused-parameter for _THIS_IP_ 2022-09-20 12:39:42 +02:00
xen.c KVM: x86/xen: Fix runstate updates to be atomic when preempting vCPU 2022-02-23 12:03:07 +01:00
xen.h KVM: x86: do not set st->preempted when going back to user space 2022-08-11 13:07:51 +02:00