Skip to content

Commit cb1d220

Browse files
Like Xubonzini
authored andcommitted
KVM: x86/pmu: Fix reserved bits for AMD PerfEvtSeln register
If we run the following perf command in an AMD Milan guest: perf stat \ -e cpu/event=0x1d0/ \ -e cpu/event=0x1c7/ \ -e cpu/umask=0x1f,event=0x18e/ \ -e cpu/umask=0x7,event=0x18e/ \ -e cpu/umask=0x18,event=0x18e/ \ ./workload dmesg will report a #GP warning from an unchecked MSR access error on MSR_F15H_PERF_CTLx. This is because according to APM (Revision: 4.03) Figure 13-7, the bits [35:32] of AMD PerfEvtSeln register is a part of the event select encoding, which extends the EVENT_SELECT field from 8 bits to 12 bits. Opportunistically update pmu->reserved_bits for reserved bit 19. Reported-by: Jim Mattson <[email protected]> Fixes: ca72430 ("KVM: x86/vPMU: Implement AMD vPMU code for KVM") Signed-off-by: Like Xu <[email protected]> Message-Id: <[email protected]> Signed-off-by: Paolo Bonzini <[email protected]>
1 parent 7cfc5c6 commit cb1d220

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

arch/x86/kvm/svm/pmu.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ static void amd_pmu_refresh(struct kvm_vcpu *vcpu)
281281
pmu->nr_arch_gp_counters = AMD64_NUM_COUNTERS;
282282

283283
pmu->counter_bitmask[KVM_PMC_GP] = ((u64)1 << 48) - 1;
284-
pmu->reserved_bits = 0xffffffff00200000ull;
284+
pmu->reserved_bits = 0xfffffff000280000ull;
285285
pmu->version = 1;
286286
/* not applicable to AMD; but clean them to prevent any fall out */
287287
pmu->counter_bitmask[KVM_PMC_FIXED] = 0;

0 commit comments

Comments
 (0)