Another bug fix for the Factory libvirt package.
OBS-URL: https://build.opensuse.org/package/show/Virtualization/libvirt?expand=0&rev=820
This commit is contained in:
parent
d63331a41e
commit
7ba3f0b84b
120
8e669b38-conf-add-event-channels.patch
Normal file
120
8e669b38-conf-add-event-channels.patch
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
commit 8e669b382c3533793356261c6d748df56162a2c6
|
||||||
|
Author: Jim Fehlig <jfehlig@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 <jfehlig@suse.com>
|
||||||
|
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||||
|
|
||||||
|
Index: libvirt-6.2.0/docs/formatdomain.html.in
|
||||||
|
===================================================================
|
||||||
|
--- libvirt-6.2.0.orig/docs/formatdomain.html.in
|
||||||
|
+++ libvirt-6.2.0/docs/formatdomain.html.in
|
||||||
|
@@ -4416,7 +4416,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>
|
||||||
|
@@ -4476,7 +4476,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.2.0/docs/schemas/domaincommon.rng
|
||||||
|
===================================================================
|
||||||
|
--- libvirt-6.2.0.orig/docs/schemas/domaincommon.rng
|
||||||
|
+++ libvirt-6.2.0/docs/schemas/domaincommon.rng
|
||||||
|
@@ -2548,6 +2548,11 @@
|
||||||
|
<ref name="unsignedInt"/>
|
||||||
|
</attribute>
|
||||||
|
</optional>
|
||||||
|
+ <optional>
|
||||||
|
+ <attribute name="maxEventChannels">
|
||||||
|
+ <ref name="unsignedInt"/>
|
||||||
|
+ </attribute>
|
||||||
|
+ </optional>
|
||||||
|
</group>
|
||||||
|
</choice>
|
||||||
|
<optional>
|
||||||
|
Index: libvirt-6.2.0/src/conf/domain_conf.c
|
||||||
|
===================================================================
|
||||||
|
--- libvirt-6.2.0.orig/src/conf/domain_conf.c
|
||||||
|
+++ libvirt-6.2.0/src/conf/domain_conf.c
|
||||||
|
@@ -2245,6 +2245,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:
|
||||||
|
@@ -11337,6 +11338,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,
|
||||||
|
@@ -11347,6 +11349,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;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -25267,6 +25278,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.2.0/src/conf/domain_conf.h
|
||||||
|
===================================================================
|
||||||
|
--- libvirt-6.2.0.orig/src/conf/domain_conf.h
|
||||||
|
+++ libvirt-6.2.0/src/conf/domain_conf.h
|
||||||
|
@@ -730,6 +730,7 @@ struct _virDomainUSBControllerOpts {
|
||||||
|
|
||||||
|
struct _virDomainXenbusControllerOpts {
|
||||||
|
int maxGrantFrames; /* -1 == undef */
|
||||||
|
+ int maxEventChannels; /* -1 == undef */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Stores the virtual disk controller configuration */
|
210
967f4eeb-xenconfig-event-channels.patch
Normal file
210
967f4eeb-xenconfig-event-channels.patch
Normal file
@ -0,0 +1,210 @@
|
|||||||
|
commit 967f4eebdcfed014fb8ad4569e9a04cdc731e9a6
|
||||||
|
Author: Jim Fehlig <jfehlig@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 <jfehlig@suse.com>
|
||||||
|
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||||
|
|
||||||
|
Index: libvirt-6.2.0/src/libxl/xen_xl.c
|
||||||
|
===================================================================
|
||||||
|
--- libvirt-6.2.0.orig/src/libxl/xen_xl.c
|
||||||
|
+++ libvirt-6.2.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.2.0/tests/xlconfigdata/test-max-eventchannels.cfg
|
||||||
|
===================================================================
|
||||||
|
--- /dev/null
|
||||||
|
+++ libvirt-6.2.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.2.0/tests/xlconfigdata/test-max-eventchannels.xml
|
||||||
|
===================================================================
|
||||||
|
--- /dev/null
|
||||||
|
+++ libvirt-6.2.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.2.0/tests/xlconfigdata/test-usbctrl.xml
|
||||||
|
===================================================================
|
||||||
|
--- libvirt-6.2.0.orig/tests/xlconfigdata/test-usbctrl.xml
|
||||||
|
+++ libvirt-6.2.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.2.0/tests/xlconfigtest.c
|
||||||
|
===================================================================
|
||||||
|
--- libvirt-6.2.0.orig/tests/xlconfigtest.c
|
||||||
|
+++ libvirt-6.2.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");
|
190
a93f55c5-libxl-add-event-channels.patch
Normal file
190
a93f55c5-libxl-add-event-channels.patch
Normal file
@ -0,0 +1,190 @@
|
|||||||
|
commit a93f55c53d83ec63fe703db38cb519465b1d2445
|
||||||
|
Author: Jim Fehlig <jfehlig@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 <jfehlig@suse.com>
|
||||||
|
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||||
|
|
||||||
|
Index: libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||||
|
===================================================================
|
||||||
|
--- libvirt-6.2.0.orig/src/libxl/libxl_conf.c
|
||||||
|
+++ libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||||
|
@@ -380,13 +380,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.2.0/tests/libxlxml2domconfigdata/max-eventchannels-hvm.json
|
||||||
|
===================================================================
|
||||||
|
--- /dev/null
|
||||||
|
+++ libvirt-6.2.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.2.0/tests/libxlxml2domconfigdata/max-eventchannels-hvm.xml
|
||||||
|
===================================================================
|
||||||
|
--- /dev/null
|
||||||
|
+++ libvirt-6.2.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.2.0/tests/libxlxml2domconfigtest.c
|
||||||
|
===================================================================
|
||||||
|
--- libvirt-6.2.0.orig/tests/libxlxml2domconfigtest.c
|
||||||
|
+++ libvirt-6.2.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);
|
@ -1,3 +1,13 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Apr 9 22:04:57 UTC 2020 - James Fehlig <jfehlig@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
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Apr 6 14:30:29 UTC 2020 - James Fehlig <jfehlig@suse.com>
|
Mon Apr 6 14:30:29 UTC 2020 - James Fehlig <jfehlig@suse.com>
|
||||||
|
|
||||||
@ -10,6 +20,8 @@ Fri Apr 3 20:47:27 UTC 2020 - James Fehlig <jfehlig@suse.com>
|
|||||||
- Update to libvirt 6.2.0
|
- Update to libvirt 6.2.0
|
||||||
- Many incremental improvements and bug fixes, see
|
- Many incremental improvements and bug fixes, see
|
||||||
https://libvirt.org/news.html
|
https://libvirt.org/news.html
|
||||||
|
- CVE-2020-10701
|
||||||
|
bsc#1168680
|
||||||
- Dropped patches:
|
- Dropped patches:
|
||||||
a30078cb-qemu-create-mp-target.patch,
|
a30078cb-qemu-create-mp-target.patch,
|
||||||
aeb909bf-qemu-multipath-fix.patch
|
aeb909bf-qemu-multipath-fix.patch
|
||||||
|
@ -339,6 +339,9 @@ Source99: baselibs.conf
|
|||||||
Source100: %{name}-rpmlintrc
|
Source100: %{name}-rpmlintrc
|
||||||
# Upstream patches
|
# Upstream patches
|
||||||
Patch0: 88011ed2-libxl-driver-crash-fix.patch
|
Patch0: 88011ed2-libxl-driver-crash-fix.patch
|
||||||
|
Patch1: 8e669b38-conf-add-event-channels.patch
|
||||||
|
Patch2: a93f55c5-libxl-add-event-channels.patch
|
||||||
|
Patch3: 967f4eeb-xenconfig-event-channels.patch
|
||||||
# Patches pending upstream review
|
# Patches pending upstream review
|
||||||
Patch100: libxl-dom-reset.patch
|
Patch100: libxl-dom-reset.patch
|
||||||
Patch101: network-don-t-use-dhcp-authoritative-on-static-netwo.patch
|
Patch101: network-don-t-use-dhcp-authoritative-on-static-netwo.patch
|
||||||
@ -875,6 +878,9 @@ libvirt plugin for NSS for translating domain names into IP addresses.
|
|||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
%patch0 -p1
|
%patch0 -p1
|
||||||
|
%patch1 -p1
|
||||||
|
%patch2 -p1
|
||||||
|
%patch3 -p1
|
||||||
%patch100 -p1
|
%patch100 -p1
|
||||||
%patch101 -p1
|
%patch101 -p1
|
||||||
%patch150 -p1
|
%patch150 -p1
|
||||||
@ -1226,9 +1232,6 @@ mv %{buildroot}/%{_datadir}/systemtap/tapset/libvirt_qemu_probes.stp \
|
|||||||
%check
|
%check
|
||||||
cd tests
|
cd tests
|
||||||
SKIP_TESTS=""
|
SKIP_TESTS=""
|
||||||
# These tests don't current work in a mock build root
|
|
||||||
# virnetsockettest: needs unsupported linux-user syscalls
|
|
||||||
SKIP_TESTS="$SKIP_TESTS virnetsockettest"
|
|
||||||
# virportallocatortest fails on aarch64 due to unsupported IPV6_V6ONLY flag
|
# virportallocatortest fails on aarch64 due to unsupported IPV6_V6ONLY flag
|
||||||
%ifarch aarch64
|
%ifarch aarch64
|
||||||
SKIP_TESTS="$SKIP_TESTS virportallocatortest"
|
SKIP_TESTS="$SKIP_TESTS virportallocatortest"
|
||||||
|
@ -7,7 +7,7 @@ Index: libvirt-6.2.0/src/libxl/libxl_conf.c
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- libvirt-6.2.0.orig/src/libxl/libxl_conf.c
|
--- libvirt-6.2.0.orig/src/libxl/libxl_conf.c
|
||||||
+++ libvirt-6.2.0/src/libxl/libxl_conf.c
|
+++ libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||||
@@ -866,6 +866,30 @@ libxlDiskSetDiscard(libxl_device_disk *x
|
@@ -870,6 +870,30 @@ libxlDiskSetDiscard(libxl_device_disk *x
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ Index: libvirt-6.2.0/src/libxl/libxl_conf.c
|
|||||||
static char *
|
static char *
|
||||||
libxlMakeNetworkDiskSrcStr(virStorageSourcePtr src,
|
libxlMakeNetworkDiskSrcStr(virStorageSourcePtr src,
|
||||||
const char *username,
|
const char *username,
|
||||||
@@ -1107,6 +1131,7 @@ libxlMakeDisk(virDomainDiskDefPtr l_disk
|
@@ -1111,6 +1135,7 @@ libxlMakeDisk(virDomainDiskDefPtr l_disk
|
||||||
x_disk->is_cdrom = l_disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM ? 1 : 0;
|
x_disk->is_cdrom = l_disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM ? 1 : 0;
|
||||||
if (libxlDiskSetDiscard(x_disk, l_disk->discard) < 0)
|
if (libxlDiskSetDiscard(x_disk, l_disk->discard) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -11,7 +11,7 @@ Index: libvirt-6.2.0/src/libxl/libxl_conf.c
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- libvirt-6.2.0.orig/src/libxl/libxl_conf.c
|
--- libvirt-6.2.0.orig/src/libxl/libxl_conf.c
|
||||||
+++ libvirt-6.2.0/src/libxl/libxl_conf.c
|
+++ libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||||
@@ -866,6 +866,22 @@ libxlDiskSetDiscard(libxl_device_disk *x
|
@@ -870,6 +870,22 @@ libxlDiskSetDiscard(libxl_device_disk *x
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -34,7 +34,7 @@ Index: libvirt-6.2.0/src/libxl/libxl_conf.c
|
|||||||
static void
|
static void
|
||||||
libxlDiskSetCacheMode(libxl_device_disk *x_disk, int cachemode)
|
libxlDiskSetCacheMode(libxl_device_disk *x_disk, int cachemode)
|
||||||
{
|
{
|
||||||
@@ -1006,6 +1022,7 @@ libxlMakeNetworkDiskSrc(virStorageSource
|
@@ -1010,6 +1026,7 @@ libxlMakeNetworkDiskSrc(virStorageSource
|
||||||
int
|
int
|
||||||
libxlMakeDisk(virDomainDiskDefPtr l_disk, libxl_device_disk *x_disk)
|
libxlMakeDisk(virDomainDiskDefPtr l_disk, libxl_device_disk *x_disk)
|
||||||
{
|
{
|
||||||
@ -42,7 +42,7 @@ Index: libvirt-6.2.0/src/libxl/libxl_conf.c
|
|||||||
const char *driver = virDomainDiskGetDriver(l_disk);
|
const char *driver = virDomainDiskGetDriver(l_disk);
|
||||||
int format = virDomainDiskGetFormat(l_disk);
|
int format = virDomainDiskGetFormat(l_disk);
|
||||||
int actual_type = virStorageSourceGetActualType(l_disk->src);
|
int actual_type = virStorageSourceGetActualType(l_disk->src);
|
||||||
@@ -1021,7 +1038,7 @@ libxlMakeDisk(virDomainDiskDefPtr l_disk
|
@@ -1025,7 +1042,7 @@ libxlMakeDisk(virDomainDiskDefPtr l_disk
|
||||||
if (libxlMakeNetworkDiskSrc(l_disk->src, &x_disk->pdev_path) < 0)
|
if (libxlMakeNetworkDiskSrc(l_disk->src, &x_disk->pdev_path) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
} else {
|
} else {
|
||||||
@ -51,7 +51,7 @@ Index: libvirt-6.2.0/src/libxl/libxl_conf.c
|
|||||||
}
|
}
|
||||||
|
|
||||||
x_disk->vdev = g_strdup(l_disk->dst);
|
x_disk->vdev = g_strdup(l_disk->dst);
|
||||||
@@ -1132,6 +1149,9 @@ libxlMakeDisk(virDomainDiskDefPtr l_disk
|
@@ -1136,6 +1153,9 @@ libxlMakeDisk(virDomainDiskDefPtr l_disk
|
||||||
if (libxlDiskSetDiscard(x_disk, l_disk->discard) < 0)
|
if (libxlDiskSetDiscard(x_disk, l_disk->discard) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
libxlDiskSetCacheMode(x_disk, l_disk->cachemode);
|
libxlDiskSetCacheMode(x_disk, l_disk->cachemode);
|
||||||
|
@ -31,7 +31,7 @@ Index: libvirt-6.2.0/src/libxl/libxl_conf.c
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- libvirt-6.2.0.orig/src/libxl/libxl_conf.c
|
--- libvirt-6.2.0.orig/src/libxl/libxl_conf.c
|
||||||
+++ libvirt-6.2.0/src/libxl/libxl_conf.c
|
+++ libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||||
@@ -1784,7 +1784,7 @@ libxlDriverConfigNew(void)
|
@@ -1788,7 +1788,7 @@ libxlDriverConfigNew(void)
|
||||||
int
|
int
|
||||||
libxlDriverConfigInit(libxlDriverConfigPtr cfg)
|
libxlDriverConfigInit(libxlDriverConfigPtr cfg)
|
||||||
{
|
{
|
||||||
|
@ -31,7 +31,7 @@ Index: libvirt-6.2.0/src/libxl/libxl_conf.c
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- libvirt-6.2.0.orig/src/libxl/libxl_conf.c
|
--- libvirt-6.2.0.orig/src/libxl/libxl_conf.c
|
||||||
+++ libvirt-6.2.0/src/libxl/libxl_conf.c
|
+++ libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||||
@@ -1698,15 +1698,12 @@ libxlMakeBuildInfoVfb(virPortAllocatorRa
|
@@ -1702,15 +1702,12 @@ libxlMakeBuildInfoVfb(virPortAllocatorRa
|
||||||
/*
|
/*
|
||||||
* Get domain0 autoballoon configuration. Honor user-specified
|
* Get domain0 autoballoon configuration. Honor user-specified
|
||||||
* setting in libxl.conf first. If not specified, autoballooning
|
* setting in libxl.conf first. If not specified, autoballooning
|
||||||
@ -48,7 +48,7 @@ Index: libvirt-6.2.0/src/libxl/libxl_conf.c
|
|||||||
int res;
|
int res;
|
||||||
|
|
||||||
res = virConfGetValueBool(conf, "autoballoon", &cfg->autoballoon);
|
res = virConfGetValueBool(conf, "autoballoon", &cfg->autoballoon);
|
||||||
@@ -1715,15 +1712,8 @@ libxlGetAutoballoonConf(libxlDriverConfi
|
@@ -1719,15 +1716,8 @@ libxlGetAutoballoonConf(libxlDriverConfi
|
||||||
else if (res == 1)
|
else if (res == 1)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ Index: libvirt-6.2.0/src/libxl/libxl_conf.c
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- libvirt-6.2.0.orig/src/libxl/libxl_conf.c
|
--- libvirt-6.2.0.orig/src/libxl/libxl_conf.c
|
||||||
+++ libvirt-6.2.0/src/libxl/libxl_conf.c
|
+++ libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||||
@@ -1738,6 +1738,15 @@ libxlDriverConfigNew(void)
|
@@ -1742,6 +1742,15 @@ libxlDriverConfigNew(void)
|
||||||
cfg->autoDumpDir = g_strdup(LIBXL_DUMP_DIR);
|
cfg->autoDumpDir = g_strdup(LIBXL_DUMP_DIR);
|
||||||
cfg->channelDir = g_strdup(LIBXL_CHANNEL_DIR);
|
cfg->channelDir = g_strdup(LIBXL_CHANNEL_DIR);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user