]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: arm64: Add a composite EL2 visibility helper
authorMarc Zyngier <maz@kernel.org>
Wed, 23 Oct 2024 14:53:30 +0000 (15:53 +0100)
committerOliver Upton <oliver.upton@linux.dev>
Thu, 31 Oct 2024 02:44:21 +0000 (02:44 +0000)
We are starting to have a bunch of visibility helpers checking
for EL2 + something else, and we are going to add more.

Simplify things somehow by introducing a helper that implement
extractly that by taking a visibility helper as a parameter,
and convert the existing ones to that.

Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20241023145345.1613824-23-maz@kernel.org
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
arch/arm64/kvm/sys_regs.c

index 2d30266a4c65be314393e8e55ec8a1246b6905c6..9938c768c5acf16b3af7f83bb1bbae3ea15a4ed5 100644 (file)
@@ -2303,16 +2303,18 @@ static u64 reset_hcr(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r)
        return __vcpu_sys_reg(vcpu, r->reg) = val;
 }
 
+static unsigned int __el2_visibility(const struct kvm_vcpu *vcpu,
+                                    const struct sys_reg_desc *rd,
+                                    unsigned int (*fn)(const struct kvm_vcpu *,
+                                                       const struct sys_reg_desc *))
+{
+       return el2_visibility(vcpu, rd) ?: fn(vcpu, rd);
+}
+
 static unsigned int sve_el2_visibility(const struct kvm_vcpu *vcpu,
                                       const struct sys_reg_desc *rd)
 {
-       unsigned int r;
-
-       r = el2_visibility(vcpu, rd);
-       if (r)
-               return r;
-
-       return sve_visibility(vcpu, rd);
+       return __el2_visibility(vcpu, rd, sve_visibility);
 }
 
 static bool access_zcr_el2(struct kvm_vcpu *vcpu,