Commit 700698a8 authored by Dave Martin's avatar Dave Martin Committed by Marc Zyngier

KVM: arm64/sve: sys_regs: Demote redundant vcpu_has_sve() checks to WARNs

Because of the logic in kvm_arm_sys_reg_{get,set}_reg() and
sve_id_visibility(), we should never call
{get,set}_id_aa64zfr0_el1() for a vcpu where !vcpu_has_sve(vcpu).

To avoid the code giving the impression that it is valid for these
functions to be called in this situation, and to help the compiler
make the right optimisation decisions, this patch adds WARN_ON()
for these cases.

Given the way the logic is spread out, this seems preferable to
dropping the checks altogether.
Suggested-by: default avatarAndrew Jones <drjones@redhat.com>
Signed-off-by: default avatarDave Martin <Dave.Martin@arm.com>
Reviewed-by: default avatarAndrew Jones <drjones@redhat.com>
Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
parent 0323e027
...@@ -1144,7 +1144,7 @@ static int get_id_aa64zfr0_el1(struct kvm_vcpu *vcpu, ...@@ -1144,7 +1144,7 @@ static int get_id_aa64zfr0_el1(struct kvm_vcpu *vcpu,
{ {
u64 val; u64 val;
if (!vcpu_has_sve(vcpu)) if (WARN_ON(!vcpu_has_sve(vcpu)))
return -ENOENT; return -ENOENT;
val = guest_id_aa64zfr0_el1(vcpu); val = guest_id_aa64zfr0_el1(vcpu);
...@@ -1159,7 +1159,7 @@ static int set_id_aa64zfr0_el1(struct kvm_vcpu *vcpu, ...@@ -1159,7 +1159,7 @@ static int set_id_aa64zfr0_el1(struct kvm_vcpu *vcpu,
int err; int err;
u64 val; u64 val;
if (!vcpu_has_sve(vcpu)) if (WARN_ON(!vcpu_has_sve(vcpu)))
return -ENOENT; return -ENOENT;
err = reg_from_user(&val, uaddr, id); err = reg_from_user(&val, uaddr, id);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment