On Fri, Oct 02, 2026 at 11:05:09AM +1000, Gavin Shan wrote:
> On 9/4/26 5:35 AM, Mathieu Poirier wrote:
> > From: Jean-Philippe Brucker <[email protected]>
> >
> > When a Realm is requested, create a scratch Realm VM by setting bit 8
> > of the argument given to the KVM_CREATE_VM ioctl(). Bit 7-0 are reserved
> > for the guest PA size.
> >
> > Signed-off-by: Jean-Philippe Brucker <[email protected]>
> > Signed-off-by: Mathieu Poirier <[email protected]>
> > ---
> > target/arm/kvm.c | 6 +++++-
> > 1 file changed, 5 insertions(+), 1 deletion(-)
> >
> > diff --git a/target/arm/kvm.c b/target/arm/kvm.c
> > index b4c6da1fb9f3..d86e66e056b9 100644
> > --- a/target/arm/kvm.c
> > +++ b/target/arm/kvm.c
> > @@ -108,7 +108,9 @@ bool kvm_arm_create_scratch_host_vcpu(int *fdarray,
> > struct kvm_vcpu_init *init)
> > {
> > int ret = 0, kvmfd = -1, vmfd = -1, cpufd = -1;
> > + MachineState *ms = MACHINE(qdev_get_machine());
> > int max_vm_pa_size;
> > + int vm_type;
> >
>
> @vm_type can be initialized when it's declared.
>
> MachineState *ms = MACHINE(qdev_get_machine());
> int vm_type = ms->cgs ? KVM_VM_TYPE_ARM_REALM : KVM_VM_TYPE_ARM_NORMAL;
> int max_vm_pa_size;
>
> > kvmfd = qemu_open_old("/dev/kvm", O_RDWR);
> > if (kvmfd < 0) {
> > @@ -118,8 +120,10 @@ bool kvm_arm_create_scratch_host_vcpu(int *fdarray,
> > if (max_vm_pa_size < 0) {
> > max_vm_pa_size = 0;
> > }
> > +
> > + vm_type = (ms->cgs ? KVM_VM_TYPE_ARM_REALM : KVM_VM_TYPE_ARM_NORMAL);
>
> () aren't needed.
>
All fixed.
> > do {
> > - vmfd = ioctl(kvmfd, KVM_CREATE_VM, max_vm_pa_size);
> > + vmfd = ioctl(kvmfd, KVM_CREATE_VM, max_vm_pa_size | vm_type);
> > } while (vmfd == -1 && errno == EINTR);
> > if (vmfd < 0) {
> > goto err;
>
> Thanks,
> Gavin
>