On Mon, May 13, 2019 at 10:19:25AM -0700, Richard Henderson wrote:
> On 5/12/19 1:36 AM, Andrew Jones wrote:
> > @@ -292,7 +292,7 @@ static void aarch64_max_initfn(Object *obj)
> >
> > if (kvm_enabled()) {
> > kvm_arm_set_cpu_features_from_host(cpu);
> > - cpu->sve_max_vq = ARM_MAX_VQ;
> > + cpu->sve_max_vq = -1; /* set in kvm_arch_init_vcpu() */
>
> Perhaps a better comment is "unspecified, to be finalized in ..."
OK
>
> > + object_property_add(obj, "sve-max-vq", "uint32", cpu_max_get_sve_vq,
> > + cpu_max_set_sve_vq, NULL, NULL, &error_fatal);
>
> as one can set it here, via the command-line.
>
> > @@ -644,6 +702,24 @@ int kvm_arch_init_vcpu(CPUState *cs)
> > }
> >
> > if (cpu->sve_max_vq) {
> > + uint64_t sve_vls[KVM_ARM64_SVE_VLS_WORDS];
> > + ret = kvm_arm_get_sve_vls(cs, sve_vls);
> > + if (ret < 0) {
> > + return ret;
> > + }
> > + if (cpu->sve_max_vq == -1) {
> > + cpu->sve_max_vq = ret;
>
> You still cannot set a value larger than ARM_MAX_VQ, as that is the fixed
> amount of space allocated within the cpu structure.
>
Good point. I should check against ARM_MAX_VQ here.
Thanks,
drew