Message ID | 20230127150727.612594-8-jean-philippe@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm: Run Arm CCA VMs with KVM | expand |
On 1/27/23 05:07, Jean-Philippe Brucker wrote: > Although the VM type does not affect values probed from the scratch vCPU > at the moment, it could later. Ensure we specify the right type when > creating the temporary VM. > > Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org> > --- > Does the PA size need changing as well? > --- > target/arm/kvm.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/target/arm/kvm.c b/target/arm/kvm.c > index fcddead4fe..d8655d9041 100644 > --- a/target/arm/kvm.c > +++ b/target/arm/kvm.c > @@ -70,6 +70,7 @@ bool kvm_arm_create_scratch_host_vcpu(const uint32_t *cpus_to_try, > { > int ret = 0, kvmfd = -1, vmfd = -1, cpufd = -1; > int max_vm_pa_size; > + int vm_type; > > kvmfd = qemu_open_old("/dev/kvm", O_RDWR); > if (kvmfd < 0) { > @@ -79,8 +80,10 @@ bool kvm_arm_create_scratch_host_vcpu(const uint32_t *cpus_to_try, > if (max_vm_pa_size < 0) { > max_vm_pa_size = 0; > } > + > + vm_type = kvm_arm_rme_vm_type(MACHINE(qdev_get_machine())); > do { > - vmfd = ioctl(kvmfd, KVM_CREATE_VM, max_vm_pa_size); > + vmfd = ioctl(kvmfd, KVM_CREATE_VM, vm_type | max_vm_pa_size); Given the restrictions on register transfer for RME guests, this seems incorrect. We won't be able to probe what we wanted at all. r~
diff --git a/target/arm/kvm.c b/target/arm/kvm.c index fcddead4fe..d8655d9041 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -70,6 +70,7 @@ bool kvm_arm_create_scratch_host_vcpu(const uint32_t *cpus_to_try, { int ret = 0, kvmfd = -1, vmfd = -1, cpufd = -1; int max_vm_pa_size; + int vm_type; kvmfd = qemu_open_old("/dev/kvm", O_RDWR); if (kvmfd < 0) { @@ -79,8 +80,10 @@ bool kvm_arm_create_scratch_host_vcpu(const uint32_t *cpus_to_try, if (max_vm_pa_size < 0) { max_vm_pa_size = 0; } + + vm_type = kvm_arm_rme_vm_type(MACHINE(qdev_get_machine())); do { - vmfd = ioctl(kvmfd, KVM_CREATE_VM, max_vm_pa_size); + vmfd = ioctl(kvmfd, KVM_CREATE_VM, vm_type | max_vm_pa_size); } while (vmfd == -1 && errno == EINTR); if (vmfd < 0) { goto err;
Although the VM type does not affect values probed from the scratch vCPU at the moment, it could later. Ensure we specify the right type when creating the temporary VM. Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org> --- Does the PA size need changing as well? --- target/arm/kvm.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)