forked from Minki/linux
KVM: arm64/sve: Explain validity checks in set_sve_vls()
Correct virtualization of SVE relies for correctness on code in set_sve_vls() that verifies consistency between the set of vector lengths requested by userspace and the set of vector lengths available on the host. However, the purpose of this code is not obvious, and not likely to be apparent at all to people who do not have detailed knowledge of the SVE system-level architecture. This patch adds a suitable comment to explain what these checks are for. No functional change. Suggested-by: Andrew Jones <drjones@redhat.com> Signed-off-by: Dave Martin <Dave.Martin@arm.com> Reviewed-by: Andrew Jones <drjones@redhat.com> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
This commit is contained in:
parent
4bd774e57b
commit
ecfb6ed4f6
@ -264,6 +264,13 @@ static int set_sve_vls(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
|
|||||||
if (max_vq > sve_vq_from_vl(kvm_sve_max_vl))
|
if (max_vq > sve_vq_from_vl(kvm_sve_max_vl))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Vector lengths supported by the host can't currently be
|
||||||
|
* hidden from the guest individually: instead we can only set a
|
||||||
|
* maxmium via ZCR_EL2.LEN. So, make sure the available vector
|
||||||
|
* lengths match the set requested exactly up to the requested
|
||||||
|
* maximum:
|
||||||
|
*/
|
||||||
for (vq = SVE_VQ_MIN; vq <= max_vq; ++vq)
|
for (vq = SVE_VQ_MIN; vq <= max_vq; ++vq)
|
||||||
if (vq_present(&vqs, vq) != sve_vq_available(vq))
|
if (vq_present(&vqs, vq) != sve_vq_available(vq))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
Loading…
Reference in New Issue
Block a user