]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: arm64: pmu: Kill the PMU interrupt level cache
authorMarc Zyngier <maz@kernel.org>
Wed, 20 May 2026 10:01:58 +0000 (11:01 +0100)
committerMarc Zyngier <maz@kernel.org>
Thu, 21 May 2026 07:08:49 +0000 (08:08 +0100)
Just like the timer, the PMU has an interrupt cache that serves little
purpose. Drop it.

Reviewed-by: Oliver Upton <oupton@kernel.org>
Link: https://patch.msgid.link/20260520100200.543845-5-maz@kernel.org
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/pmu-emul.c
include/kvm/arm_pmu.h

index 31a472a2c4881eff8a852c429e27259e6e2cc223..edb21239478a95a6183b0cb682cd463a00f57845 100644 (file)
@@ -396,19 +396,12 @@ static bool kvm_pmu_overflow_status(struct kvm_vcpu *vcpu)
 static void kvm_pmu_update_state(struct kvm_vcpu *vcpu)
 {
        struct kvm_pmu *pmu = &vcpu->arch.pmu;
-       bool overflow;
 
-       overflow = kvm_pmu_overflow_status(vcpu);
-       if (pmu->irq_level == overflow)
+       if (unlikely(!irqchip_in_kernel(vcpu->kvm)))
                return;
 
-       pmu->irq_level = overflow;
-
-       if (likely(irqchip_in_kernel(vcpu->kvm))) {
-               int ret = kvm_vgic_inject_irq(vcpu->kvm, vcpu,
-                                             pmu->irq_num, overflow, pmu);
-               WARN_ON(ret);
-       }
+       WARN_ON(kvm_vgic_inject_irq(vcpu->kvm, vcpu, pmu->irq_num,
+                                   kvm_pmu_overflow_status(vcpu), pmu));
 }
 
 bool kvm_pmu_should_notify_user(struct kvm_vcpu *vcpu)
index 3e844c5ee91747b059c19fbe2b1442001e7d9aff..b5e5942204fc69aae50bd0cfa36dbff9d801d330 100644 (file)
@@ -32,7 +32,6 @@ struct kvm_pmu {
        struct kvm_pmc pmc[KVM_ARMV8_PMU_MAX_COUNTERS];
        int irq_num;
        bool created;
-       bool irq_level;
 };
 
 struct arm_pmu_entry {