KVM: x86/pmu: Don't truncate the PerfEvtSeln MSR when creating a perf event
[ Upstream commit b8bfee85f1307426e0242d654f3a14c06ef639c5 ]
AMD's event select is 3 nybbles, with the high nybble in bits 35:32 of
a PerfEvtSeln MSR. Don't drop the high nybble when setting up the
config field of a perf_event_attr structure for a call to
perf_event_create_kernel_counter().
Fixes: ca724305a2
("KVM: x86/vPMU: Implement AMD vPMU code for KVM")
Reported-by: Stephane Eranian <eranian@google.com>
Signed-off-by: Jim Mattson <jmattson@google.com>
Message-Id: <20220203014813.2130559-1-jmattson@google.com>
Reviewed-by: David Dunn <daviddunn@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
99cd2a0437
commit
0ee4bb8ce8
@@ -95,7 +95,7 @@ static void kvm_perf_overflow_intr(struct perf_event *perf_event,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void pmc_reprogram_counter(struct kvm_pmc *pmc, u32 type,
|
static void pmc_reprogram_counter(struct kvm_pmc *pmc, u32 type,
|
||||||
unsigned config, bool exclude_user,
|
u64 config, bool exclude_user,
|
||||||
bool exclude_kernel, bool intr,
|
bool exclude_kernel, bool intr,
|
||||||
bool in_tx, bool in_tx_cp)
|
bool in_tx, bool in_tx_cp)
|
||||||
{
|
{
|
||||||
@@ -170,7 +170,8 @@ static bool pmc_resume_counter(struct kvm_pmc *pmc)
|
|||||||
|
|
||||||
void reprogram_gp_counter(struct kvm_pmc *pmc, u64 eventsel)
|
void reprogram_gp_counter(struct kvm_pmc *pmc, u64 eventsel)
|
||||||
{
|
{
|
||||||
unsigned config, type = PERF_TYPE_RAW;
|
u64 config;
|
||||||
|
u32 type = PERF_TYPE_RAW;
|
||||||
struct kvm *kvm = pmc->vcpu->kvm;
|
struct kvm *kvm = pmc->vcpu->kvm;
|
||||||
struct kvm_pmu_event_filter *filter;
|
struct kvm_pmu_event_filter *filter;
|
||||||
int i;
|
int i;
|
||||||
|
Reference in New Issue
Block a user