On Fri, Mar 08, 2019 at 04:05:57PM -0700, Jim Fehlig wrote: > Add support for setting max_grant_frames in libxl domain config > object and include a test to check that it is properly converted > from XML to libxl domain config. > > Signed-off-by: Jim Fehlig <jfehlig@xxxxxxxx> > --- > src/libxl/libxl_conf.c | 9 ++ > .../max-gntframes-hvm.json | 90 +++++++++++++++++++ > .../max-gntframes-hvm.xml | 37 ++++++++ > tests/libxlxml2domconfigtest.c | 3 + > 4 files changed, 139 insertions(+) > > diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c > index c769050ff1..e55a9fe22e 100644 > --- a/src/libxl/libxl_conf.c > +++ b/src/libxl/libxl_conf.c > @@ -393,6 +393,15 @@ libxlMakeDomBuildInfo(virDomainDefPtr def, > def->mem.cur_balloon = VIR_ROUND_UP(def->mem.cur_balloon, 1024); > b_info->max_memkb = virDomainDefGetMemoryInitial(def); > b_info->target_memkb = def->mem.cur_balloon; > + > +#ifdef LIBXL_HAVE_BUILDINFO_GRANT_LIMITS > + for (i = 0; i < def->ncontrollers; i++) { > + if (def->controllers[i]->type == VIR_DOMAIN_CONTROLLER_TYPE_XENBUS && > + def->controllers[i]->opts.xenbusopts.maxGrantFrames > 0) > + b_info->max_grant_frames = def->controllers[i]->opts.xenbusopts.maxGrantFrames; > + } > +#endif > + > if (hvm || pvh) { > if (caps && > def->cpu && def->cpu->mode == (VIR_CPU_MODE_HOST_PASSTHROUGH)) { > diff --git a/tests/libxlxml2domconfigdata/max-gntframes-hvm.json b/tests/libxlxml2domconfigdata/max-gntframes-hvm.json > new file mode 100644 > index 0000000000..ef602f09fc > --- /dev/null > +++ b/tests/libxlxml2domconfigdata/max-gntframes-hvm.json > @@ -0,0 +1,90 @@ > +{ > + "c_info": { > + "type": "hvm", > + "name": "test-hvm", > + "uuid": "2147d599-9cc6-c0dc-92ab-4064b5446e9b" > + }, > + "b_info": { > + "max_vcpus": 4, > + "avail_vcpus": [ > + 0, > + 1, > + 2, > + 3 > + ], > + "max_memkb": 1048576, > + "target_memkb": 1048576, > + "video_memkb": 8192, > + "shadow_memkb": 12288, > + "max_grant_frames": 64, > + "device_model_version": "qemu_xen", > + "device_model": "/bin/true", > + "sched_params": { > + > + }, > + "type.hvm": { > + "pae": "True", > + "apic": "True", > + "acpi": "True", > + "vga": { > + "kind": "cirrus" > + }, > + "vnc": { > + "enable": "True", > + "listen": "0.0.0.0", > + "findunused": "False" > + }, > + "sdl": { > + "enable": "False" > + }, > + "spice": { > + > + }, > + "boot": "c", > + "rdm": { > + > + } > + }, > + "arch_arm": { > + > + } > + }, > + "disks": [ > + { > + "pdev_path": "/var/lib/xen/images/test-hvm.img", > + "vdev": "hda", > + "backend": "qdisk", > + "format": "raw", > + "removable": 1, > + "readwrite": 1 > + } > + ], > + "nics": [ > + { > + "devid": 0, > + "mac": "00:16:3e:66:12:b4", > + "bridge": "br0", > + "script": "/etc/xen/scripts/vif-bridge", > + "nictype": "vif_ioemu" > + } > + ], > + "vfbs": [ > + { > + "devid": -1, > + "vnc": { > + "enable": "True", > + "listen": "0.0.0.0", > + "findunused": "False" > + }, > + "sdl": { > + "enable": "False" > + } > + } > + ], > + "vkbs": [ > + { > + "devid": -1 > + } > + ], > + "on_reboot": "restart" > +} > diff --git a/tests/libxlxml2domconfigdata/max-gntframes-hvm.xml b/tests/libxlxml2domconfigdata/max-gntframes-hvm.xml > new file mode 100644 > index 0000000000..910bbda10b > --- /dev/null > +++ b/tests/libxlxml2domconfigdata/max-gntframes-hvm.xml > @@ -0,0 +1,37 @@ > +<domain type='xen'> > + <name>test-hvm</name> > + <description>None</description> > + <uuid>2147d599-9cc6-c0dc-92ab-4064b5446e9b</uuid> > + <memory>1048576</memory> > + <currentMemory>1048576</currentMemory> > + <vcpu>4</vcpu> > + <on_poweroff>destroy</on_poweroff> > + <on_reboot>restart</on_reboot> > + <on_crash>destroy</on_crash> > + <clock offset='utc'/> > + <os> > + <type>hvm</type> > + <loader>/usr/lib/xen/boot/hvmloader</loader> > + <boot dev='hd'/> > + </os> > + <features> > + <apic/> > + <acpi/> > + <pae/> > + </features> > + <devices> > + <emulator>/bin/true</emulator> > + <disk type='file' device='disk'> > + <driver name='qemu'/> > + <source file='/var/lib/xen/images/test-hvm.img'/> > + <target dev='hda'/> > + </disk> > + <controller type='xenbus' maxGrantFrames='64'/> Normally, <controller> would come before <disk> > + <interface type='bridge'> > + <source bridge='br0'/> > + <mac address='00:16:3e:66:12:b4'/> > + <script path='/etc/xen/scripts/vif-bridge'/> > + </interface> > + <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'/> > + </devices> > +</domain> > diff --git a/tests/libxlxml2domconfigtest.c b/tests/libxlxml2domconfigtest.c > index 863d8cded5..677103bfeb 100644 > --- a/tests/libxlxml2domconfigtest.c > +++ b/tests/libxlxml2domconfigtest.c > @@ -217,6 +217,9 @@ mymain(void) > DO_TEST("fullvirt-cpuid-legacy-nest"); > # endif > > +# ifdef LIBXL_HAVE_BUILDINFO_GRANT_LIMITS > + DO_TEST("max-gntframes-hvm"); > +# endif > > unlink("libxl-driver.log"); Reviewed-by: Daniel P. Berrangé <berrange@xxxxxxxxxx> Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list