KVM: arm64: Add kvm_vcpu_has_pmu() helper
authorMarc Zyngier <maz@kernel.org>
Fri, 13 Nov 2020 16:39:44 +0000 (16:39 +0000)
committerMarc Zyngier <maz@kernel.org>
Fri, 27 Nov 2020 11:39:14 +0000 (11:39 +0000)
There are a number of places where we check for the KVM_ARM_VCPU_PMU_V3
feature. Wrap this check into a new kvm_vcpu_has_pmu(), and use
it at the existing locations.

No functional change.

Reviewed-by: Alexandru Elisei <alexandru.elisei@arm.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/include/asm/kvm_host.h
arch/arm64/kvm/pmu-emul.c

index 709f892f7a142537470d956f5354520323f0a1d6..8c681d621a82038b1382c31989ff58b995740e99 100644 (file)
@@ -731,4 +731,7 @@ bool kvm_arm_vcpu_is_finalized(struct kvm_vcpu *vcpu);
 #define kvm_arm_vcpu_sve_finalized(vcpu) \
        ((vcpu)->arch.flags & KVM_ARM64_VCPU_SVE_FINALIZED)
 
+#define kvm_vcpu_has_pmu(vcpu)                                 \
+       (test_bit(KVM_ARM_VCPU_PMU_V3, (vcpu)->arch.features))
+
 #endif /* __ARM64_KVM_HOST_H__ */
index 2ed5ef8f274b142b25f118b0db355d2e0bb88f13..e7e3b462986400c0c33bb0e66104e2daf41e9200 100644 (file)
@@ -913,8 +913,7 @@ static bool pmu_irq_is_valid(struct kvm *kvm, int irq)
 
 int kvm_arm_pmu_v3_set_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr)
 {
-       if (!kvm_arm_support_pmu_v3() ||
-           !test_bit(KVM_ARM_VCPU_PMU_V3, vcpu->arch.features))
+       if (!kvm_arm_support_pmu_v3() || !kvm_vcpu_has_pmu(vcpu))
                return -ENODEV;
 
        if (vcpu->arch.pmu.created)
@@ -1015,7 +1014,7 @@ int kvm_arm_pmu_v3_get_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr)
                if (!irqchip_in_kernel(vcpu->kvm))
                        return -EINVAL;
 
-               if (!test_bit(KVM_ARM_VCPU_PMU_V3, vcpu->arch.features))
+               if (!kvm_vcpu_has_pmu(vcpu))
                        return -ENODEV;
 
                if (!kvm_arm_pmu_irq_initialized(vcpu))
@@ -1035,8 +1034,7 @@ int kvm_arm_pmu_v3_has_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr)
        case KVM_ARM_VCPU_PMU_V3_IRQ:
        case KVM_ARM_VCPU_PMU_V3_INIT:
        case KVM_ARM_VCPU_PMU_V3_FILTER:
-               if (kvm_arm_support_pmu_v3() &&
-                   test_bit(KVM_ARM_VCPU_PMU_V3, vcpu->arch.features))
+               if (kvm_arm_support_pmu_v3() && kvm_vcpu_has_pmu(vcpu))
                        return 0;
        }