Skip to content

Commit 3837407

Browse files
eaugerMarc Zyngier
authored andcommitted
KVM: arm64: pmu: Don't increment SW_INCR if PMCR.E is unset
The specification says PMSWINC increments PMEVCNTR<n>_EL1 by 1 if PMEVCNTR<n>_EL0 is enabled and configured to count SW_INCR. For PMEVCNTR<n>_EL0 to be enabled, we need both PMCNTENSET to be set for the corresponding event counter but we also need the PMCR.E bit to be set. Fixes: 7a0adc7 ("arm64: KVM: Add access handler for PMSWINC register") Signed-off-by: Eric Auger <[email protected]> Signed-off-by: Marc Zyngier <[email protected]> Reviewed-by: Andrew Murray <[email protected]> Acked-by: Marc Zyngier <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent 21aecdb commit 3837407

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

virt/kvm/arm/pmu.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,9 @@ void kvm_pmu_software_increment(struct kvm_vcpu *vcpu, u64 val)
486486
if (val == 0)
487487
return;
488488

489+
if (!(__vcpu_sys_reg(vcpu, PMCR_EL0) & ARMV8_PMU_PMCR_E))
490+
return;
491+
489492
enable = __vcpu_sys_reg(vcpu, PMCNTENSET_EL0);
490493
for (i = 0; i < ARMV8_PMU_CYCLE_IDX; i++) {
491494
if (!(val & BIT(i)))

0 commit comments

Comments
 (0)