diff options
| -rw-r--r-- | arch/arm64/kvm/guest.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/arch/arm64/kvm/guest.c b/arch/arm64/kvm/guest.c index 3ae2f82fca46..ae734fcfd4ea 100644 --- a/arch/arm64/kvm/guest.c +++ b/arch/arm64/kvm/guest.c | |||
| @@ -207,13 +207,7 @@ out: | |||
| 207 | 207 | ||
| 208 | #define vq_word(vq) (((vq) - SVE_VQ_MIN) / 64) | 208 | #define vq_word(vq) (((vq) - SVE_VQ_MIN) / 64) |
| 209 | #define vq_mask(vq) ((u64)1 << ((vq) - SVE_VQ_MIN) % 64) | 209 | #define vq_mask(vq) ((u64)1 << ((vq) - SVE_VQ_MIN) % 64) |
| 210 | 210 | #define vq_present(vqs, vq) ((vqs)[vq_word(vq)] & vq_mask(vq)) | |
| 211 | static bool vq_present( | ||
| 212 | const u64 (*const vqs)[KVM_ARM64_SVE_VLS_WORDS], | ||
| 213 | unsigned int vq) | ||
| 214 | { | ||
| 215 | return (*vqs)[vq_word(vq)] & vq_mask(vq); | ||
| 216 | } | ||
| 217 | 211 | ||
| 218 | static int get_sve_vls(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg) | 212 | static int get_sve_vls(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg) |
| 219 | { | 213 | { |
| @@ -258,7 +252,7 @@ static int set_sve_vls(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg) | |||
| 258 | 252 | ||
| 259 | max_vq = 0; | 253 | max_vq = 0; |
| 260 | for (vq = SVE_VQ_MIN; vq <= SVE_VQ_MAX; ++vq) | 254 | for (vq = SVE_VQ_MIN; vq <= SVE_VQ_MAX; ++vq) |
| 261 | if (vq_present(&vqs, vq)) | 255 | if (vq_present(vqs, vq)) |
| 262 | max_vq = vq; | 256 | max_vq = vq; |
| 263 | 257 | ||
| 264 | if (max_vq > sve_vq_from_vl(kvm_sve_max_vl)) | 258 | if (max_vq > sve_vq_from_vl(kvm_sve_max_vl)) |
| @@ -272,7 +266,7 @@ static int set_sve_vls(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg) | |||
| 272 | * maximum: | 266 | * maximum: |
| 273 | */ | 267 | */ |
| 274 | for (vq = SVE_VQ_MIN; vq <= max_vq; ++vq) | 268 | for (vq = SVE_VQ_MIN; vq <= max_vq; ++vq) |
| 275 | if (vq_present(&vqs, vq) != sve_vq_available(vq)) | 269 | if (vq_present(vqs, vq) != sve_vq_available(vq)) |
| 276 | return -EINVAL; | 270 | return -EINVAL; |
| 277 | 271 | ||
| 278 | /* Can't run with no vector lengths at all: */ | 272 | /* Can't run with no vector lengths at all: */ |
