]> git.baikalelectronics.ru Git - kernel.git/commitdiff
KVM: arm64: Remove dead PMU sysreg decoding code
authorMarc Zyngier <maz@kernel.org>
Thu, 12 Nov 2020 18:50:06 +0000 (18:50 +0000)
committerMarc Zyngier <maz@kernel.org>
Fri, 27 Nov 2020 11:41:03 +0000 (11:41 +0000)
The handling of traps in access_pmu_evcntr() has a couple of
omminous "else return false;" statements that don't make any sense:
the decoding tree coverse all the registers that trap to this handler,
and returning false implies that we change PC, which we don't.

Get rid of what is evidently dead code.

Reviewed-by: Alexandru Elisei <alexandru.elisei@arm.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/sys_regs.c

index 3bd4cc40536b6a68f3aaf3dc2de2c206856e46ba..dd7a73468286de89522455e5d9321469e4298f51 100644 (file)
@@ -717,7 +717,7 @@ static bool access_pmu_evcntr(struct kvm_vcpu *vcpu,
                              struct sys_reg_params *p,
                              const struct sys_reg_desc *r)
 {
-       u64 idx;
+       u64 idx = ~0UL;
 
        if (r->CRn == 9 && r->CRm == 13) {
                if (r->Op2 == 2) {
@@ -733,8 +733,6 @@ static bool access_pmu_evcntr(struct kvm_vcpu *vcpu,
                                return false;
 
                        idx = ARMV8_PMU_CYCLE_IDX;
-               } else {
-                       return false;
                }
        } else if (r->CRn == 0 && r->CRm == 9) {
                /* PMCCNTR */
@@ -748,10 +746,11 @@ static bool access_pmu_evcntr(struct kvm_vcpu *vcpu,
                        return false;
 
                idx = ((r->CRm & 3) << 3) | (r->Op2 & 7);
-       } else {
-               return false;
        }
 
+       /* Catch any decoding mistake */
+       WARN_ON(idx == ~0UL);
+
        if (!pmu_counter_idx_valid(vcpu, idx))
                return false;