Hello community, here is the log from the commit of package libvirt for openSUSE:Leap:15.2 checked in at 2020-04-20 12:55:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Leap:15.2/libvirt (Old) and /work/SRC/openSUSE:Leap:15.2/.libvirt.new.2738 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libvirt" Mon Apr 20 12:55:07 2020 rev:114 rq:795386 version:6.0.0 Changes: -------- --- /work/SRC/openSUSE:Leap:15.2/libvirt/libvirt.changes 2020-03-31 07:22:31.994402281 +0200 +++ /work/SRC/openSUSE:Leap:15.2/.libvirt.new.2738/libvirt.changes 2020-04-20 12:55:28.716727535 +0200 @@ -1,0 +2,25 @@ +Fri Apr 17 05:19:57 UTC 2020 - Lin Ma <l...@suse.com> + +- qemu: fix hang in p2p + xbzrle compression + parallel migration + 93b15ba0-qemu-fix-hang-in-p2p-xbzrle-compression-parallel-mig.patch + bsc#1161159 + +------------------------------------------------------------------- +Thu Apr 9 22:26:36 UTC 2020 - James Fehlig <jfeh...@suse.com> + +- api: Disallow virDomainAgentSetResponseTimeout on read-only + connections. CVE-2020-10701 + 4cc90c2e-CVE-2020-10701.patch + bsc#1168680 + +------------------------------------------------------------------- +Thu Apr 9 22:04:57 UTC 2020 - James Fehlig <jfeh...@suse.com> + +- libxl: Add support for max event channels with maxEventChannel + attribute on the xenbus controller + 8e669b38-conf-add-event-channels.patch, + a93f55c5-libxl-add-event-channels.patch, + 967f4eeb-xenconfig-event-channels.patch + bsc#1168767 + +------------------------------------------------------------------- New: ---- 4cc90c2e-CVE-2020-10701.patch 8e669b38-conf-add-event-channels.patch 93b15ba0-qemu-fix-hang-in-p2p-xbzrle-compression-parallel-mig.patch 967f4eeb-xenconfig-event-channels.patch a93f55c5-libxl-add-event-channels.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libvirt.spec ++++++ --- /var/tmp/diff_new_pack.b1Mqod/_old 2020-04-20 12:55:29.692729066 +0200 +++ /var/tmp/diff_new_pack.b1Mqod/_new 2020-04-20 12:55:29.696729072 +0200 @@ -345,6 +345,11 @@ Patch4: ae9e6c2a-qemu-allow-cond-format-probe.patch Patch5: a30078cb-qemu-create-mp-target.patch Patch6: aeb909bf-qemu-multipath-fix.patch +Patch7: 8e669b38-conf-add-event-channels.patch +Patch8: a93f55c5-libxl-add-event-channels.patch +Patch9: 967f4eeb-xenconfig-event-channels.patch +Patch10: 4cc90c2e-CVE-2020-10701.patch +Patch11: 93b15ba0-qemu-fix-hang-in-p2p-xbzrle-compression-parallel-mig.patch # Patches pending upstream review Patch100: libxl-dom-reset.patch Patch101: network-don-t-use-dhcp-authoritative-on-static-netwo.patch @@ -886,6 +891,11 @@ %patch4 -p1 %patch5 -p1 %patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 %patch100 -p1 %patch101 -p1 %patch150 -p1 ++++++ 4cc90c2e-CVE-2020-10701.patch ++++++ commit 4cc90c2e62df653e909ad31fd810224bf8bcf913 Author: Jonathon Jongsma <jjong...@redhat.com> Date: Fri Mar 20 09:43:13 2020 -0500 api: disallow virDomainAgentSetResponseTimeout() on read-only connections This function changes the amount of time that libvirt waits for a response from the guest agent for all guest agent commands. Since this is a configuration change, it should not be allowed on read-only connections. Signed-off-by: Jonathon Jongsma <jjong...@redhat.com> Reviewed-by: Daniel Henrique Barboza <danielhb...@gmail.com> Reviewed-by: Michal Privoznik <mpriv...@redhat.com> Index: libvirt-6.0.0/src/libvirt-domain.c =================================================================== --- libvirt-6.0.0.orig/src/libvirt-domain.c +++ libvirt-6.0.0/src/libvirt-domain.c @@ -12574,6 +12574,8 @@ virDomainAgentSetResponseTimeout(virDoma virCheckDomainReturn(domain, -1); conn = domain->conn; + virCheckReadOnlyGoto(conn->flags, error); + if (conn->driver->domainAgentSetResponseTimeout) { if (conn->driver->domainAgentSetResponseTimeout(domain, timeout, flags) < 0) goto error; ++++++ 8e669b38-conf-add-event-channels.patch ++++++ commit 8e669b382c3533793356261c6d748df56162a2c6 Author: Jim Fehlig <jfeh...@suse.com> Date: Tue Apr 7 16:37:09 2020 -0600 conf: Add a new xenbus controller option for event channels Event channels are like PV interrupts and in conjuction with grant frames form a data transfer mechanism for PV drivers. They are also used for inter-processor interrupts. Guests with a large number of vcpus and/or many PV devices many need to increase the maximum default value of 1023. For this reason the native Xen config format supports the 'max_event_channels' setting. See xl.cfg(5) man page for more details. Similar to the existing maxGrantFrames option, add a new xenbus controller option 'maxEventChannels', allowing to adjust the maximum value via libvirt. Signed-off-by: Jim Fehlig <jfeh...@suse.com> Reviewed-by: Daniel P. Berrangé <berra...@redhat.com> Index: libvirt-6.0.0/docs/formatdomain.html.in =================================================================== --- libvirt-6.0.0.orig/docs/formatdomain.html.in +++ libvirt-6.0.0/docs/formatdomain.html.in @@ -4309,7 +4309,7 @@ <driver iothread='4'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/> </controller> - <controller type='xenbus' maxGrantFrames='64'/> + <controller type='xenbus' maxGrantFrames='64' maxEventChannels='2047'/> ... </devices> ...</pre> @@ -4369,7 +4369,11 @@ <dd><span class="since">Since 5.2.0</span>, the <code>xenbus</code> controller has an optional attribute <code>maxGrantFrames</code>, which specifies the maximum number of grant frames the controller - makes available for connected devices.</dd> + makes available for connected devices. + <span class="since">Since 6.3.0</span>, the xenbus controller + supports the optional <code>maxEventChannels</code> attribute, + which specifies maximum number of event channels (PV interrupts) + that can be used by the guest.</dd> </dl> <p> Index: libvirt-6.0.0/docs/schemas/domaincommon.rng =================================================================== --- libvirt-6.0.0.orig/docs/schemas/domaincommon.rng +++ libvirt-6.0.0/docs/schemas/domaincommon.rng @@ -2404,6 +2404,11 @@ <ref name="unsignedInt"/> </attribute> </optional> + <optional> + <attribute name="maxEventChannels"> + <ref name="unsignedInt"/> + </attribute> + </optional> </group> </choice> <optional> Index: libvirt-6.0.0/src/conf/domain_conf.c =================================================================== --- libvirt-6.0.0.orig/src/conf/domain_conf.c +++ libvirt-6.0.0/src/conf/domain_conf.c @@ -2222,6 +2222,7 @@ virDomainControllerDefNew(virDomainContr break; case VIR_DOMAIN_CONTROLLER_TYPE_XENBUS: def->opts.xenbusopts.maxGrantFrames = -1; + def->opts.xenbusopts.maxEventChannels = -1; break; case VIR_DOMAIN_CONTROLLER_TYPE_IDE: case VIR_DOMAIN_CONTROLLER_TYPE_FDC: @@ -11058,6 +11059,7 @@ virDomainControllerDefParseXML(virDomain break; case VIR_DOMAIN_CONTROLLER_TYPE_XENBUS: { g_autofree char *gntframes = virXMLPropString(node, "maxGrantFrames"); + g_autofree char *eventchannels = virXMLPropString(node, "maxEventChannels"); if (gntframes) { int r = virStrToLong_i(gntframes, NULL, 10, @@ -11068,6 +11070,15 @@ virDomainControllerDefParseXML(virDomain goto error; } } + if (eventchannels) { + int r = virStrToLong_i(eventchannels, NULL, 10, + &def->opts.xenbusopts.maxEventChannels); + if (r != 0 || def->opts.xenbusopts.maxEventChannels < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Invalid maxEventChannels: %s"), eventchannels); + goto error; + } + } break; } @@ -24742,6 +24753,10 @@ virDomainControllerDefFormat(virBufferPt virBufferAsprintf(&attrBuf, " maxGrantFrames='%d'", def->opts.xenbusopts.maxGrantFrames); } + if (def->opts.xenbusopts.maxEventChannels != -1) { + virBufferAsprintf(&attrBuf, " maxEventChannels='%d'", + def->opts.xenbusopts.maxEventChannels); + } break; default: Index: libvirt-6.0.0/src/conf/domain_conf.h =================================================================== --- libvirt-6.0.0.orig/src/conf/domain_conf.h +++ libvirt-6.0.0/src/conf/domain_conf.h @@ -727,6 +727,7 @@ struct _virDomainUSBControllerOpts { struct _virDomainXenbusControllerOpts { int maxGrantFrames; /* -1 == undef */ + int maxEventChannels; /* -1 == undef */ }; /* Stores the virtual disk controller configuration */ ++++++ 93b15ba0-qemu-fix-hang-in-p2p-xbzrle-compression-parallel-mig.patch ++++++ commit 93b15ba0f2eb7858f8d88a5fd7354bd48bb7fc8d Author: Lin Ma <l...@suse.com> Date: Thu Apr 16 12:44:51 2020 +0800 qemu: fix hang in p2p + xbzrle compression + parallel migration When we do parallel migration, The multifd-channels migration parameter needs to be set on the destination side as well before incoming migration URI, unless we accept the default number of connections(2). Usually, This can be correctly handled by libvirtd. But in this case if we use p2p + xbzrle compression without parameter '--comp-xbzrle-cache', qemuMigrationParamsDump returns too early, The corresponding migration parameter will not be set on the destination side, It results QEMU hangs. Reproducer: virsh migrate --live --p2p --comp-methods xbzrle \ --parallel --parallel-connections 3 GUEST qemu+ssh://dsthost/system or virsh migrate --live --p2p --compressed \ --parallel --parallel-connections 3 GUEST qemu+ssh://dsthost/system Signed-off-by: Lin Ma <l...@suse.com> Message-Id: <20200416044451.21134-1-...@suse.com> Reviewed-by: Jiri Denemark <jdene...@redhat.com> Index: libvirt-6.0.0/src/qemu/qemu_migration_params.c =================================================================== --- libvirt-6.0.0.orig/src/qemu/qemu_migration_params.c +++ libvirt-6.0.0/src/qemu/qemu_migration_params.c @@ -630,7 +630,6 @@ qemuMigrationParamsDump(qemuMigrationPar if (migParams->compMethods == 1ULL << QEMU_MIGRATION_COMPRESS_XBZRLE && !migParams->params[QEMU_MIGRATION_PARAM_XBZRLE_CACHE_SIZE].set) { *flags |= VIR_MIGRATE_COMPRESSED; - return 0; } for (i = 0; i < QEMU_MIGRATION_COMPRESS_LAST; ++i) { ++++++ 967f4eeb-xenconfig-event-channels.patch ++++++ commit 967f4eebdcfed014fb8ad4569e9a04cdc731e9a6 Author: Jim Fehlig <jfeh...@suse.com> Date: Tue Apr 7 17:33:26 2020 -0600 xenconfig: Add support for max_event_channels Add support in the domXML<->native config converter for max_event_channels. The parser and formater functions for max_grant_frames were reworked to also parse max_event_channels. In doing so the xenbus controller is added earlier in the config parsing, requiring a small adjustment to one of the existing tests. Include a new test for the event channel conversion. Signed-off-by: Jim Fehlig <jfeh...@suse.com> Reviewed-by: Daniel P. Berrangé <berra...@redhat.com> Index: libvirt-6.0.0/src/libxl/xen_xl.c =================================================================== --- libvirt-6.0.0.orig/src/libxl/xen_xl.c +++ libvirt-6.0.0/src/libxl/xen_xl.c @@ -597,19 +597,12 @@ xenParseXLVnuma(virConfPtr conf, } #endif -#ifdef LIBXL_HAVE_BUILDINFO_GRANT_LIMITS static int -xenParseXLGntLimits(virConfPtr conf, virDomainDefPtr def) +xenParseXLXenbusLimits(virConfPtr conf, virDomainDefPtr def) { - unsigned long max_gntframes; int ctlr_idx; virDomainControllerDefPtr xenbus_ctlr; - - if (xenConfigGetULong(conf, "max_grant_frames", &max_gntframes, 0) < 0) - return -1; - - if (max_gntframes <= 0) - return 0; + unsigned long limit; ctlr_idx = virDomainControllerFindByType(def, VIR_DOMAIN_CONTROLLER_TYPE_XENBUS); if (ctlr_idx == -1) @@ -620,10 +613,20 @@ xenParseXLGntLimits(virConfPtr conf, vir if (xenbus_ctlr == NULL) return -1; - xenbus_ctlr->opts.xenbusopts.maxGrantFrames = max_gntframes; + if (xenConfigGetULong(conf, "max_event_channels", &limit, 0) < 0) + return -1; + if (limit > 0) + xenbus_ctlr->opts.xenbusopts.maxEventChannels = limit; + +#ifdef LIBXL_HAVE_BUILDINFO_GRANT_LIMITS + if (xenConfigGetULong(conf, "max_grant_frames", &limit, 0) < 0) + return -1; + if (limit > 0) + xenbus_ctlr->opts.xenbusopts.maxGrantFrames = limit; +#endif + return 0; } -#endif static int xenParseXLDiskSrc(virDomainDiskDefPtr disk, char *srcstr) @@ -1180,10 +1183,8 @@ xenParseXL(virConfPtr conf, goto cleanup; #endif -#ifdef LIBXL_HAVE_BUILDINFO_GRANT_LIMITS - if (xenParseXLGntLimits(conf, def) < 0) + if (xenParseXLXenbusLimits(conf, def) < 0) goto cleanup; -#endif if (xenParseXLCPUID(conf, def) < 0) goto cleanup; @@ -1532,23 +1533,31 @@ xenFormatXLDomainVnuma(virConfPtr conf, } #endif -#ifdef LIBXL_HAVE_BUILDINFO_GRANT_LIMITS static int -xenFormatXLGntLimits(virConfPtr conf, virDomainDefPtr def) +xenFormatXLXenbusLimits(virConfPtr conf, virDomainDefPtr def) { size_t i; for (i = 0; i < def->ncontrollers; i++) { - if (def->controllers[i]->type == VIR_DOMAIN_CONTROLLER_TYPE_XENBUS && - def->controllers[i]->opts.xenbusopts.maxGrantFrames > 0) { - if (xenConfigSetInt(conf, "max_grant_frames", - def->controllers[i]->opts.xenbusopts.maxGrantFrames) < 0) - return -1; + if (def->controllers[i]->type == VIR_DOMAIN_CONTROLLER_TYPE_XENBUS) { + if (def->controllers[i]->opts.xenbusopts.maxEventChannels > 0) { + if (xenConfigSetInt(conf, "max_event_channels", + def->controllers[i]->opts.xenbusopts.maxEventChannels) < 0) + return -1; + } + +#ifdef LIBXL_HAVE_BUILDINFO_GRANT_LIMITS + if (def->controllers[i]->opts.xenbusopts.maxGrantFrames > 0) { + if (xenConfigSetInt(conf, "max_grant_frames", + def->controllers[i]->opts.xenbusopts.maxGrantFrames) < 0) + return -1; + } +#endif } } + return 0; } -#endif static char * xenFormatXLDiskSrcNet(virStorageSourcePtr src) @@ -2191,10 +2200,8 @@ xenFormatXL(virDomainDefPtr def, virConn return NULL; #endif -#ifdef LIBXL_HAVE_BUILDINFO_GRANT_LIMITS - if (xenFormatXLGntLimits(conf, def) < 0) + if (xenFormatXLXenbusLimits(conf, def) < 0) return NULL; -#endif if (xenFormatXLDomainDisks(conf, def) < 0) return NULL; Index: libvirt-6.0.0/tests/xlconfigdata/test-max-eventchannels.cfg =================================================================== --- /dev/null +++ libvirt-6.0.0/tests/xlconfigdata/test-max-eventchannels.cfg @@ -0,0 +1,13 @@ +name = "XenGuest1" +uuid = "45b60f51-88a9-47a8-a3b3-5e66d71b2283" +maxmem = 512 +memory = 512 +vcpus = 1 +localtime = 0 +on_poweroff = "preserve" +on_reboot = "restart" +on_crash = "preserve" +vif = [ "mac=5a:36:0e:be:00:09" ] +bootloader = "/usr/bin/pygrub" +max_event_channels = 2047 +disk = [ "format=qcow2,vdev=xvda,access=rw,backendtype=qdisk,target=/var/lib/xen/images/debian/disk.qcow2" ] Index: libvirt-6.0.0/tests/xlconfigdata/test-max-eventchannels.xml =================================================================== --- /dev/null +++ libvirt-6.0.0/tests/xlconfigdata/test-max-eventchannels.xml @@ -0,0 +1,32 @@ +<domain type='xen'> + <name>XenGuest1</name> + <uuid>45b60f51-88a9-47a8-a3b3-5e66d71b2283</uuid> + <memory unit='KiB'>524288</memory> + <currentMemory unit='KiB'>524288</currentMemory> + <vcpu placement='static'>1</vcpu> + <bootloader>/usr/bin/pygrub</bootloader> + <os> + <type arch='x86_64' machine='xenpv'>linux</type> + </os> + <clock offset='utc' adjustment='reset'/> + <on_poweroff>preserve</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>preserve</on_crash> + <devices> + <disk type='file' device='disk'> + <driver name='qemu' type='qcow2'/> + <source file='/var/lib/xen/images/debian/disk.qcow2'/> + <target dev='xvda' bus='xen'/> + </disk> + <controller type='xenbus' index='0' maxEventChannels='2047'/> + <interface type='ethernet'> + <mac address='5a:36:0e:be:00:09'/> + </interface> + <console type='pty'> + <target type='xen' port='0'/> + </console> + <input type='mouse' bus='xen'/> + <input type='keyboard' bus='xen'/> + <memballoon model='xen'/> + </devices> +</domain> Index: libvirt-6.0.0/tests/xlconfigdata/test-usbctrl.xml =================================================================== --- libvirt-6.0.0.orig/tests/xlconfigdata/test-usbctrl.xml +++ libvirt-6.0.0/tests/xlconfigdata/test-usbctrl.xml @@ -18,8 +18,8 @@ <source file='/var/lib/xen/images/debian/disk.qcow2'/> <target dev='xvda' bus='xen'/> </disk> - <controller type='usb' index='0' model='qusb2' ports='6'/> <controller type='xenbus' index='0'/> + <controller type='usb' index='0' model='qusb2' ports='6'/> <interface type='ethernet'> <mac address='5a:36:0e:be:00:09'/> </interface> Index: libvirt-6.0.0/tests/xlconfigtest.c =================================================================== --- libvirt-6.0.0.orig/tests/xlconfigtest.c +++ libvirt-6.0.0/tests/xlconfigtest.c @@ -294,6 +294,8 @@ mymain(void) DO_TEST("max-gntframes"); #endif + DO_TEST("max-eventchannels"); + DO_TEST("vif-typename"); DO_TEST("vif-multi-ip"); DO_TEST("usb"); ++++++ a93f55c5-libxl-add-event-channels.patch ++++++ commit a93f55c53d83ec63fe703db38cb519465b1d2445 Author: Jim Fehlig <jfeh...@suse.com> Date: Tue Apr 7 17:15:04 2020 -0600 libxl: Add support for max_event_channels Add support for setting event_channels 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 <jfeh...@suse.com> Reviewed-by: Daniel P. Berrangé <berra...@redhat.com> Index: libvirt-6.0.0/src/libxl/libxl_conf.c =================================================================== --- libvirt-6.0.0.orig/src/libxl/libxl_conf.c +++ libvirt-6.0.0/src/libxl/libxl_conf.c @@ -381,13 +381,17 @@ libxlMakeDomBuildInfo(virDomainDefPtr de 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; - } + if (def->controllers[i]->type == VIR_DOMAIN_CONTROLLER_TYPE_XENBUS) { + if (def->controllers[i]->opts.xenbusopts.maxEventChannels > 0) + b_info->event_channels = def->controllers[i]->opts.xenbusopts.maxEventChannels; + +#ifdef LIBXL_HAVE_BUILDINFO_GRANT_LIMITS + if (def->controllers[i]->opts.xenbusopts.maxGrantFrames > 0) + b_info->max_grant_frames = def->controllers[i]->opts.xenbusopts.maxGrantFrames; #endif + } + } if (hvm || pvh) { if (caps && Index: libvirt-6.0.0/tests/libxlxml2domconfigdata/max-eventchannels-hvm.json =================================================================== --- /dev/null +++ libvirt-6.0.0/tests/libxlxml2domconfigdata/max-eventchannels-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, + "event_channels": 2047, + "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" +} Index: libvirt-6.0.0/tests/libxlxml2domconfigdata/max-eventchannels-hvm.xml =================================================================== --- /dev/null +++ libvirt-6.0.0/tests/libxlxml2domconfigdata/max-eventchannels-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' maxEventChannels='2047'/> + <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> Index: libvirt-6.0.0/tests/libxlxml2domconfigtest.c =================================================================== --- libvirt-6.0.0.orig/tests/libxlxml2domconfigtest.c +++ libvirt-6.0.0/tests/libxlxml2domconfigtest.c @@ -202,6 +202,8 @@ mymain(void) DO_TEST("max-gntframes-hvm"); # endif + DO_TEST("max-eventchannels-hvm"); + unlink("libxl-driver.log"); testXLFreeDriver(driver); ++++++ libxl-set-cach-mode.patch ++++++ --- /var/tmp/diff_new_pack.b1Mqod/_old 2020-04-20 12:55:29.888729374 +0200 +++ /var/tmp/diff_new_pack.b1Mqod/_new 2020-04-20 12:55:29.888729374 +0200 @@ -7,7 +7,7 @@ =================================================================== --- libvirt-6.0.0.orig/src/libxl/libxl_conf.c +++ libvirt-6.0.0/src/libxl/libxl_conf.c -@@ -867,6 +867,30 @@ libxlDiskSetDiscard(libxl_device_disk *x +@@ -871,6 +871,30 @@ libxlDiskSetDiscard(libxl_device_disk *x #endif } @@ -38,7 +38,7 @@ static char * libxlMakeNetworkDiskSrcStr(virStorageSourcePtr src, const char *username, -@@ -1108,6 +1132,7 @@ libxlMakeDisk(virDomainDiskDefPtr l_disk +@@ -1112,6 +1136,7 @@ libxlMakeDisk(virDomainDiskDefPtr l_disk x_disk->is_cdrom = l_disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM ? 1 : 0; if (libxlDiskSetDiscard(x_disk, l_disk->discard) < 0) return -1; ++++++ libxl-support-block-script.patch ++++++ --- /var/tmp/diff_new_pack.b1Mqod/_old 2020-04-20 12:55:29.896729386 +0200 +++ /var/tmp/diff_new_pack.b1Mqod/_new 2020-04-20 12:55:29.896729386 +0200 @@ -11,7 +11,7 @@ =================================================================== --- libvirt-6.0.0.orig/src/libxl/libxl_conf.c +++ libvirt-6.0.0/src/libxl/libxl_conf.c -@@ -867,6 +867,22 @@ libxlDiskSetDiscard(libxl_device_disk *x +@@ -871,6 +871,22 @@ libxlDiskSetDiscard(libxl_device_disk *x #endif } @@ -34,7 +34,7 @@ static void libxlDiskSetCacheMode(libxl_device_disk *x_disk, int cachemode) { -@@ -1007,6 +1023,7 @@ libxlMakeNetworkDiskSrc(virStorageSource +@@ -1011,6 +1027,7 @@ libxlMakeNetworkDiskSrc(virStorageSource int libxlMakeDisk(virDomainDiskDefPtr l_disk, libxl_device_disk *x_disk) { @@ -42,7 +42,7 @@ const char *driver = virDomainDiskGetDriver(l_disk); int format = virDomainDiskGetFormat(l_disk); int actual_type = virStorageSourceGetActualType(l_disk->src); -@@ -1022,7 +1039,7 @@ libxlMakeDisk(virDomainDiskDefPtr l_disk +@@ -1026,7 +1043,7 @@ libxlMakeDisk(virDomainDiskDefPtr l_disk if (libxlMakeNetworkDiskSrc(l_disk->src, &x_disk->pdev_path) < 0) return -1; } else { @@ -51,7 +51,7 @@ } x_disk->vdev = g_strdup(l_disk->dst); -@@ -1133,6 +1150,9 @@ libxlMakeDisk(virDomainDiskDefPtr l_disk +@@ -1137,6 +1154,9 @@ libxlMakeDisk(virDomainDiskDefPtr l_disk if (libxlDiskSetDiscard(x_disk, l_disk->discard) < 0) return -1; libxlDiskSetCacheMode(x_disk, l_disk->cachemode); ++++++ suse-bump-xen-version.patch ++++++ --- /var/tmp/diff_new_pack.b1Mqod/_old 2020-04-20 12:55:29.916729417 +0200 +++ /var/tmp/diff_new_pack.b1Mqod/_new 2020-04-20 12:55:29.916729417 +0200 @@ -31,7 +31,7 @@ =================================================================== --- libvirt-6.0.0.orig/src/libxl/libxl_conf.c +++ libvirt-6.0.0/src/libxl/libxl_conf.c -@@ -1723,7 +1723,7 @@ libxlDriverConfigNew(void) +@@ -1727,7 +1727,7 @@ libxlDriverConfigNew(void) { libxlDriverConfigPtr cfg; char ebuf[1024]; ++++++ suse-libxl-disable-autoballoon.patch ++++++ --- /var/tmp/diff_new_pack.b1Mqod/_old 2020-04-20 12:55:29.928729437 +0200 +++ /var/tmp/diff_new_pack.b1Mqod/_new 2020-04-20 12:55:29.932729443 +0200 @@ -31,7 +31,7 @@ =================================================================== --- libvirt-6.0.0.orig/src/libxl/libxl_conf.c +++ libvirt-6.0.0/src/libxl/libxl_conf.c -@@ -1699,15 +1699,12 @@ libxlMakeBuildInfoVfb(virPortAllocatorRa +@@ -1703,15 +1703,12 @@ libxlMakeBuildInfoVfb(virPortAllocatorRa /* * Get domain0 autoballoon configuration. Honor user-specified * setting in libxl.conf first. If not specified, autoballooning @@ -48,7 +48,7 @@ int res; res = virConfGetValueBool(conf, "autoballoon", &cfg->autoballoon); -@@ -1716,15 +1713,8 @@ libxlGetAutoballoonConf(libxlDriverConfi +@@ -1720,15 +1717,8 @@ libxlGetAutoballoonConf(libxlDriverConfi else if (res == 1) return 0; ++++++ suse-xen-ovmf-loaders.patch ++++++ --- /var/tmp/diff_new_pack.b1Mqod/_old 2020-04-20 12:55:29.956729480 +0200 +++ /var/tmp/diff_new_pack.b1Mqod/_new 2020-04-20 12:55:29.956729480 +0200 @@ -9,7 +9,7 @@ =================================================================== --- libvirt-6.0.0.orig/src/libxl/libxl_conf.c +++ libvirt-6.0.0/src/libxl/libxl_conf.c -@@ -1776,6 +1776,15 @@ libxlDriverConfigNew(void) +@@ -1780,6 +1780,15 @@ libxlDriverConfigNew(void) goto error; }