arm64: KVM: PMU: Refactor pmu_*_el0_disabled
authorMarc Zyngier <marc.zyngier@arm.com>
Mon, 27 Mar 2017 16:03:37 +0000 (17:03 +0100)
committerChristoffer Dall <cdall@linaro.org>
Sun, 9 Apr 2017 14:49:12 +0000 (07:49 -0700)
There is a lot of duplication in the pmu_*_el0_disabled helpers,
and as we're going to modify them shortly, let's move all the
common stuff in a single function.

No functional change.

Reviewed-by: Christoffer Dall <cdall@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Christoffer Dall <cdall@linaro.org>
arch/arm64/kvm/sys_regs.c

index 0e26f8c2b56f8270a6ff4bc5d3a3a1ba2e1c3210..036efc971e8948644b8f1590d4e6d81b9cd23b66 100644 (file)
@@ -460,35 +460,32 @@ static void reset_pmcr(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r)
        vcpu_sys_reg(vcpu, PMCR_EL0) = val;
 }
 
-static bool pmu_access_el0_disabled(struct kvm_vcpu *vcpu)
+static bool check_pmu_access_disabled(struct kvm_vcpu *vcpu, u64 flags)
 {
        u64 reg = vcpu_sys_reg(vcpu, PMUSERENR_EL0);
+       bool enabled = (reg & flags) || vcpu_mode_priv(vcpu);
 
-       return !((reg & ARMV8_PMU_USERENR_EN) || vcpu_mode_priv(vcpu));
+       return !enabled;
 }
 
-static bool pmu_write_swinc_el0_disabled(struct kvm_vcpu *vcpu)
+static bool pmu_access_el0_disabled(struct kvm_vcpu *vcpu)
 {
-       u64 reg = vcpu_sys_reg(vcpu, PMUSERENR_EL0);
+       return check_pmu_access_disabled(vcpu, ARMV8_PMU_USERENR_EN);
+}
 
-       return !((reg & (ARMV8_PMU_USERENR_SW | ARMV8_PMU_USERENR_EN))
-                || vcpu_mode_priv(vcpu));
+static bool pmu_write_swinc_el0_disabled(struct kvm_vcpu *vcpu)
+{
+       return check_pmu_access_disabled(vcpu, ARMV8_PMU_USERENR_SW | ARMV8_PMU_USERENR_EN);
 }
 
 static bool pmu_access_cycle_counter_el0_disabled(struct kvm_vcpu *vcpu)
 {
-       u64 reg = vcpu_sys_reg(vcpu, PMUSERENR_EL0);
-
-       return !((reg & (ARMV8_PMU_USERENR_CR | ARMV8_PMU_USERENR_EN))
-                || vcpu_mode_priv(vcpu));
+       return check_pmu_access_disabled(vcpu, ARMV8_PMU_USERENR_CR | ARMV8_PMU_USERENR_EN);
 }
 
 static bool pmu_access_event_counter_el0_disabled(struct kvm_vcpu *vcpu)
 {
-       u64 reg = vcpu_sys_reg(vcpu, PMUSERENR_EL0);
-
-       return !((reg & (ARMV8_PMU_USERENR_ER | ARMV8_PMU_USERENR_EN))
-                || vcpu_mode_priv(vcpu));
+       return check_pmu_access_disabled(vcpu, ARMV8_PMU_USERENR_ER | ARMV8_PMU_USERENR_EN);
 }
 
 static bool access_pmcr(struct kvm_vcpu *vcpu, struct sys_reg_params *p,