diff options
| author | Marc Zyngier <maz@kernel.org> | 2024-10-23 15:53:30 +0100 | 
|---|---|---|
| committer | Oliver Upton <oliver.upton@linux.dev> | 2024-10-31 02:44:21 +0000 | 
| commit | ee3a9a0643c58f61d2227ba819e13dbb552aff11 (patch) | |
| tree | 0e583a8146a1d22429ef6af3a0b9d5a40e698f0e | |
| parent | 364c081029a68b47e0ecb475a0cf337a89c9f960 (diff) | |
KVM: arm64: Add a composite EL2 visibility helper
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>
| -rw-r--r-- | arch/arm64/kvm/sys_regs.c | 16 | 
1 files changed, 9 insertions, 7 deletions
| diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c index 2d30266a4c65..9938c768c5ac 100644 --- a/arch/arm64/kvm/sys_regs.c +++ b/arch/arm64/kvm/sys_regs.c @@ -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, | 
