OSDN Git Service

KVM: arm64: PMU: Narrow the overflow checking when required
authorMarc Zyngier <maz@kernel.org>
Sun, 13 Nov 2022 16:38:21 +0000 (16:38 +0000)
committerMarc Zyngier <maz@kernel.org>
Thu, 17 Nov 2022 15:39:51 +0000 (15:39 +0000)
For 64bit counters that overflow on a 32bit boundary, make
sure we only check the bottom 32bit to generate a CHAIN event.

Signed-off-by: Marc Zyngier <maz@kernel.org>
Reviewed-by: Reiji Watanabe <reijiw@google.com>
Link: https://lore.kernel.org/r/20221113163832.3154370-6-maz@kernel.org
arch/arm64/kvm/pmu-emul.c

index d050143..9e6bc7e 100644 (file)
@@ -417,7 +417,8 @@ static void kvm_pmu_counter_increment(struct kvm_vcpu *vcpu,
                reg = lower_32_bits(reg);
                __vcpu_sys_reg(vcpu, PMEVCNTR0_EL0 + i) = reg;
 
-               if (reg) /* No overflow? move on */
+               /* No overflow? move on */
+               if (kvm_pmu_idx_has_64bit_overflow(vcpu, i) ? reg : lower_32_bits(reg))
                        continue;
 
                /* Mark overflow */