Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libvirt for openSUSE:Factory checked in at 2021-02-22 14:57:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libvirt (Old) and /work/SRC/openSUSE:Factory/.libvirt.new.2378 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libvirt" Mon Feb 22 14:57:58 2021 rev:325 rq:873208 version:7.0.0 Changes: -------- --- /work/SRC/openSUSE:Factory/libvirt/libvirt.changes 2021-02-17 18:09:14.573827846 +0100 +++ /work/SRC/openSUSE:Factory/.libvirt.new.2378/libvirt.changes 2021-02-22 14:58:01.469764368 +0100 @@ -1,0 +2,10 @@ +Wed Feb 17 15:11:25 UTC 2021 - James Fehlig <jfeh...@suse.com> + +- qemu: Add virtio related options to vsock + 8a4b8996-conf-move-virDomainCheckVirtioOptions.patch, + c05f0066-conf-drop-empty-virDomainNetDefPostParse.patch, + 19d4e467-conf-improve-virDomainVirtioOptionsCheckABIStability.patch, + bd112c9e-qemu-virtio-options-vsock.patch + bsc#1182365 + +------------------------------------------------------------------- New: ---- 19d4e467-conf-improve-virDomainVirtioOptionsCheckABIStability.patch 8a4b8996-conf-move-virDomainCheckVirtioOptions.patch bd112c9e-qemu-virtio-options-vsock.patch c05f0066-conf-drop-empty-virDomainNetDefPostParse.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libvirt.spec ++++++ --- /var/tmp/diff_new_pack.2vdZxF/_old 2021-02-22 14:58:02.421765472 +0100 +++ /var/tmp/diff_new_pack.2vdZxF/_new 2021-02-22 14:58:02.425765476 +0100 @@ -295,6 +295,10 @@ Patch1: e3d60f76-fix-socket-file-gen.patch Patch2: 7cf60006-qemu-swtpm-aarch64.patch Patch3: afb823fc-qemu-validate-swtpm.patch +Patch4: 8a4b8996-conf-move-virDomainCheckVirtioOptions.patch +Patch5: c05f0066-conf-drop-empty-virDomainNetDefPostParse.patch +Patch6: 19d4e467-conf-improve-virDomainVirtioOptionsCheckABIStability.patch +Patch7: bd112c9e-qemu-virtio-options-vsock.patch # Patches pending upstream review Patch100: libxl-dom-reset.patch Patch101: network-don-t-use-dhcp-authoritative-on-static-netwo.patch ++++++ 19d4e467-conf-improve-virDomainVirtioOptionsCheckABIStability.patch ++++++ commit 19d4e467707e187f6736f24a35f5a51275d869ce Author: Michal Pr??vozn??k <mpriv...@redhat.com> Date: Thu Jan 28 14:13:32 2021 +0100 conf: Improve virDomainVirtioOptionsCheckABIStability() The virDomainVirtioOptionsCheckABIStability() function is called from various ABI stability check functions. Every caller checks if both old and new definitions have virtio options set and only after that they call the function. This is suboptimal because: a) this check can be done in the function itself (making all callers shorter), b) is inherently wrong, because it doesn't catch case where one definition has virtio options set and the other doesn't. Do proper checks at the beginning of the function and simplify its calls. Signed-off-by: Michal Privoznik <mpriv...@redhat.com> Reviewed-by: J??n Tomko <jto...@redhat.com> Index: libvirt-7.0.0/src/conf/domain_conf.c =================================================================== --- libvirt-7.0.0.orig/src/conf/domain_conf.c +++ libvirt-7.0.0/src/conf/domain_conf.c @@ -21491,6 +21491,15 @@ static bool virDomainVirtioOptionsCheckABIStability(virDomainVirtioOptionsPtr src, virDomainVirtioOptionsPtr dst) { + if (!src && !dst) + return true; + + if (!src || !dst) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("Target device virtio options don't match the source")); + return false; + } + if (src->iommu != dst->iommu) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Target device iommu option '%s' does not " @@ -21575,8 +21584,7 @@ virDomainDiskDefCheckABIStability(virDom return false; } - if (src->virtio && dst->virtio && - !virDomainVirtioOptionsCheckABIStability(src->virtio, dst->virtio)) + if (!virDomainVirtioOptionsCheckABIStability(src->virtio, dst->virtio)) return false; if (!virDomainDeviceInfoCheckABIStability(&src->info, &dst->info)) @@ -21635,8 +21643,7 @@ virDomainControllerDefCheckABIStability( } } - if (src->virtio && dst->virtio && - !virDomainVirtioOptionsCheckABIStability(src->virtio, dst->virtio)) + if (!virDomainVirtioOptionsCheckABIStability(src->virtio, dst->virtio)) return false; if (!virDomainDeviceInfoCheckABIStability(&src->info, &dst->info)) @@ -21669,8 +21676,7 @@ virDomainFsDefCheckABIStability(virDomai return false; } - if (src->virtio && dst->virtio && - !virDomainVirtioOptionsCheckABIStability(src->virtio, dst->virtio)) + if (!virDomainVirtioOptionsCheckABIStability(src->virtio, dst->virtio)) return false; if (!virDomainDeviceInfoCheckABIStability(&src->info, &dst->info)) @@ -21718,8 +21724,7 @@ virDomainNetDefCheckABIStability(virDoma return false; } - if (src->virtio && dst->virtio && - !virDomainVirtioOptionsCheckABIStability(src->virtio, dst->virtio)) + if (!virDomainVirtioOptionsCheckABIStability(src->virtio, dst->virtio)) return false; if (!virDomainDeviceInfoCheckABIStability(&src->info, &dst->info)) @@ -21757,8 +21762,7 @@ virDomainInputDefCheckABIStability(virDo return false; } - if (src->virtio && dst->virtio && - !virDomainVirtioOptionsCheckABIStability(src->virtio, dst->virtio)) + if (!virDomainVirtioOptionsCheckABIStability(src->virtio, dst->virtio)) return false; if (!virDomainDeviceInfoCheckABIStability(&src->info, &dst->info)) @@ -21857,8 +21861,7 @@ virDomainVideoDefCheckABIStability(virDo } } - if (src->virtio && dst->virtio && - !virDomainVirtioOptionsCheckABIStability(src->virtio, dst->virtio)) + if (!virDomainVirtioOptionsCheckABIStability(src->virtio, dst->virtio)) return false; if (!virDomainDeviceInfoCheckABIStability(&src->info, &dst->info)) @@ -22071,8 +22074,7 @@ virDomainMemballoonDefCheckABIStability( return false; } - if (src->virtio && dst->virtio && - !virDomainVirtioOptionsCheckABIStability(src->virtio, dst->virtio)) + if (!virDomainVirtioOptionsCheckABIStability(src->virtio, dst->virtio)) return false; if (!virDomainDeviceInfoCheckABIStability(&src->info, &dst->info)) @@ -22094,8 +22096,7 @@ virDomainRNGDefCheckABIStability(virDoma return false; } - if (src->virtio && dst->virtio && - !virDomainVirtioOptionsCheckABIStability(src->virtio, dst->virtio)) + if (!virDomainVirtioOptionsCheckABIStability(src->virtio, dst->virtio)) return false; if (!virDomainDeviceInfoCheckABIStability(&src->info, &dst->info)) ++++++ 7cf60006-qemu-swtpm-aarch64.patch ++++++ --- /var/tmp/diff_new_pack.2vdZxF/_old 2021-02-22 14:58:02.485765545 +0100 +++ /var/tmp/diff_new_pack.2vdZxF/_new 2021-02-22 14:58:02.485765545 +0100 @@ -30,11 +30,11 @@ Signed-off-by: Jim Fehlig <jfeh...@suse.com> Reviewed-by: Andrea Bolognani <abolo...@redhat.com> -diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c -index d27d5eb55b..5fe4e618fe 100644 ---- a/src/qemu/qemu_command.c -+++ b/src/qemu/qemu_command.c -@@ -9230,6 +9230,9 @@ qemuBuildTPMDevStr(const virDomainDef *def, +Index: libvirt-7.0.0/src/qemu/qemu_command.c +=================================================================== +--- libvirt-7.0.0.orig/src/qemu/qemu_command.c ++++ libvirt-7.0.0/src/qemu/qemu_command.c +@@ -9163,6 +9163,9 @@ qemuBuildTPMDevStr(const virDomainDef *d g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER; const char *model = virDomainTPMModelTypeToString(tpm->model); @@ -44,11 +44,10 @@ virBufferAsprintf(&buf, "%s,tpmdev=tpm-%s,id=%s", model, tpm->info.alias, tpm->info.alias); -diff --git a/tests/qemuxml2argvdata/aarch64-tpm.aarch64-latest.args b/tests/qemuxml2argvdata/aarch64-tpm.aarch64-latest.args -new file mode 100644 -index 0000000000..94a083d816 +Index: libvirt-7.0.0/tests/qemuxml2argvdata/aarch64-tpm.aarch64-latest.args +=================================================================== --- /dev/null -+++ b/tests/qemuxml2argvdata/aarch64-tpm.aarch64-latest.args ++++ libvirt-7.0.0/tests/qemuxml2argvdata/aarch64-tpm.aarch64-latest.args @@ -0,0 +1,37 @@ +LC_ALL=C \ +PATH=/bin \ @@ -87,11 +86,10 @@ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,\ +resourcecontrol=deny \ +-msg timestamp=on -diff --git a/tests/qemuxml2argvdata/aarch64-tpm.xml b/tests/qemuxml2argvdata/aarch64-tpm.xml -new file mode 100644 -index 0000000000..d338a20f17 +Index: libvirt-7.0.0/tests/qemuxml2argvdata/aarch64-tpm.xml +=================================================================== --- /dev/null -+++ b/tests/qemuxml2argvdata/aarch64-tpm.xml ++++ libvirt-7.0.0/tests/qemuxml2argvdata/aarch64-tpm.xml @@ -0,0 +1,15 @@ +<domain type="qemu"> + <name>aarch64test</name> @@ -108,11 +106,11 @@ + </tpm> + </devices> +</domain> -diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c -index d324921271..82cf503dd0 100644 ---- a/tests/qemuxml2argvtest.c -+++ b/tests/qemuxml2argvtest.c -@@ -2478,6 +2478,7 @@ mymain(void) +Index: libvirt-7.0.0/tests/qemuxml2argvtest.c +=================================================================== +--- libvirt-7.0.0.orig/tests/qemuxml2argvtest.c ++++ libvirt-7.0.0/tests/qemuxml2argvtest.c +@@ -2476,6 +2476,7 @@ mymain(void) DO_TEST_CAPS_LATEST("tpm-emulator-tpm2-enc"); DO_TEST_CAPS_LATEST("tpm-emulator-tpm2-pstate"); DO_TEST_CAPS_LATEST_PPC64("tpm-emulator-spapr"); ++++++ 8a4b8996-conf-move-virDomainCheckVirtioOptions.patch ++++++ commit 8a4b8996f78f86bf10fea3e91d54e82db168547b Author: Michal Pr??vozn??k <mpriv...@redhat.com> Date: Thu Jan 28 14:06:55 2021 +0100 conf: Move virDomainCheckVirtioOptions() into domain_validate.c The aim of virDomainCheckVirtioOptions() function is to check whether no virtio options are set, i.e. no @iommu no @ats and no @packed attributes were present in given device's XML (yeah, the function has very misleading name). Nevertheless, this kind of check belongs to validation phase, but now is done in post parse phase. Move the function and its calls to domain_validate.c so that future code is not tempted to repeat this mistake. Signed-off-by: Michal Privoznik <mpriv...@redhat.com> Reviewed-by: J??n Tomko <jto...@redhat.com> Index: libvirt-7.0.0/src/conf/domain_conf.c =================================================================== --- libvirt-7.0.0.orig/src/conf/domain_conf.c +++ libvirt-7.0.0/src/conf/domain_conf.c @@ -5130,34 +5130,6 @@ virDomainHostdevDefPostParse(virDomainHo } -static int -virDomainCheckVirtioOptions(virDomainVirtioOptionsPtr virtio) -{ - if (!virtio) - return 0; - - if (virtio->iommu != VIR_TRISTATE_SWITCH_ABSENT) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("iommu driver option is only supported " - "for virtio devices")); - return -1; - } - if (virtio->ats != VIR_TRISTATE_SWITCH_ABSENT) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("ats driver option is only supported " - "for virtio devices")); - return -1; - } - if (virtio->packed != VIR_TRISTATE_SWITCH_ABSENT) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("packed driver option is only supported " - "for virtio devices")); - return -1; - } - return 0; -} - - static void virDomainChrDefPostParse(virDomainChrDefPtr chr, const virDomainDef *def) @@ -5254,11 +5226,6 @@ virDomainDiskDefPostParse(virDomainDiskD virDomainPostParseCheckISCSIPath(&disk->src->path); } - if (disk->bus != VIR_DOMAIN_DISK_BUS_VIRTIO && - virDomainCheckVirtioOptions(disk->virtio) < 0) { - return -1; - } - if (disk->src->type == VIR_STORAGE_TYPE_NVME) { if (disk->src->nvme->managed == VIR_TRISTATE_BOOL_ABSENT) disk->src->nvme->managed = VIR_TRISTATE_BOOL_YES; @@ -5308,13 +5275,8 @@ virDomainControllerDefPostParse(virDomai static int -virDomainNetDefPostParse(virDomainNetDefPtr net) +virDomainNetDefPostParse(virDomainNetDefPtr net G_GNUC_UNUSED) { - if (!virDomainNetIsVirtioModel(net) && - virDomainCheckVirtioOptions(net->virtio) < 0) { - return -1; - } - return 0; } Index: libvirt-7.0.0/src/conf/domain_validate.c =================================================================== --- libvirt-7.0.0.orig/src/conf/domain_validate.c +++ libvirt-7.0.0/src/conf/domain_validate.c @@ -226,6 +226,34 @@ virSecurityDeviceLabelDefValidate(virSec } +static int +virDomainCheckVirtioOptions(virDomainVirtioOptionsPtr virtio) +{ + if (!virtio) + return 0; + + if (virtio->iommu != VIR_TRISTATE_SWITCH_ABSENT) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("iommu driver option is only supported " + "for virtio devices")); + return -1; + } + if (virtio->ats != VIR_TRISTATE_SWITCH_ABSENT) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("ats driver option is only supported " + "for virtio devices")); + return -1; + } + if (virtio->packed != VIR_TRISTATE_SWITCH_ABSENT) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("packed driver option is only supported " + "for virtio devices")); + return -1; + } + return 0; +} + + #define VENDOR_LEN 8 #define PRODUCT_LEN 16 @@ -277,15 +305,19 @@ virDomainDiskDefValidate(const virDomain return -1; } - if (disk->bus != VIR_DOMAIN_DISK_BUS_VIRTIO && - (disk->model == VIR_DOMAIN_DISK_MODEL_VIRTIO || - disk->model == VIR_DOMAIN_DISK_MODEL_VIRTIO_TRANSITIONAL || - disk->model == VIR_DOMAIN_DISK_MODEL_VIRTIO_NON_TRANSITIONAL)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("disk model '%s' not supported for bus '%s'"), - virDomainDiskModelTypeToString(disk->model), - virDomainDiskBusTypeToString(disk->bus)); - return -1; + if (disk->bus != VIR_DOMAIN_DISK_BUS_VIRTIO) { + if (disk->model == VIR_DOMAIN_DISK_MODEL_VIRTIO || + disk->model == VIR_DOMAIN_DISK_MODEL_VIRTIO_TRANSITIONAL || + disk->model == VIR_DOMAIN_DISK_MODEL_VIRTIO_NON_TRANSITIONAL) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("disk model '%s' not supported for bus '%s'"), + virDomainDiskModelTypeToString(disk->model), + virDomainDiskBusTypeToString(disk->bus)); + return -1; + } + + if (virDomainCheckVirtioOptions(disk->virtio) < 0) + return -1; } if (disk->src->type == VIR_STORAGE_TYPE_NVME) { @@ -1330,6 +1362,11 @@ virDomainNetDefValidate(const virDomainN return -1; } + if (!virDomainNetIsVirtioModel(net) && + virDomainCheckVirtioOptions(net->virtio) < 0) { + return -1; + } + return 0; } ++++++ afb823fc-qemu-validate-swtpm.patch ++++++ --- /var/tmp/diff_new_pack.2vdZxF/_old 2021-02-22 14:58:02.505765569 +0100 +++ /var/tmp/diff_new_pack.2vdZxF/_new 2021-02-22 14:58:02.505765569 +0100 @@ -11,11 +11,11 @@ Signed-off-by: Jim Fehlig <jfeh...@suse.com> Reviewed-by: Andrea Bolognani <abolo...@redhat.com> -diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c -index a70737327e..bf4901bf89 100644 ---- a/src/qemu/qemu_validate.c -+++ b/src/qemu/qemu_validate.c -@@ -4299,6 +4299,12 @@ qemuValidateDomainDeviceDefTPM(virDomainTPMDef *tpm, +Index: libvirt-7.0.0/src/qemu/qemu_validate.c +=================================================================== +--- libvirt-7.0.0.orig/src/qemu/qemu_validate.c ++++ libvirt-7.0.0/src/qemu/qemu_validate.c +@@ -4251,6 +4251,12 @@ qemuValidateDomainDeviceDefTPM(virDomain switch (tpm->model) { case VIR_DOMAIN_TPM_MODEL_TIS: ++++++ bd112c9e-qemu-virtio-options-vsock.patch ++++++ commit bd112c9e0f7523b90bf1362cf60deea7db05a32b Author: Boris Fiuczynski <fiu...@linux.ibm.com> Date: Wed Jan 27 19:46:59 2021 +0100 qemu: Add virtio related options to vsock Add virtio related options iommu, ats and packed as driver element attributes to vsock devices. Ex: <vsock model='virtio'> <cid auto='no' address='3'/> <driver iommu='on'/> </vsock> Signed-off-by: Boris Fiuczynski <fiu...@linux.ibm.com> Signed-off-by: Michal Privoznik <mpriv...@redhat.com> Reviewed-by: Michal Privoznik <mpriv...@redhat.com> Index: libvirt-7.0.0/docs/formatdomain.rst =================================================================== --- libvirt-7.0.0.orig/docs/formatdomain.rst +++ libvirt-7.0.0/docs/formatdomain.rst @@ -7414,6 +7414,8 @@ devices <#elementsVirtioTransitional>`__ attribute ``address`` of the ``cid`` element specifies the CID assigned to the guest. If the attribute ``auto`` is set to ``yes``, libvirt will assign a free CID automatically on domain startup. :since:`Since 4.4.0` +The optional ``driver`` element allows to specify virtio options, see +`Virtio-specific options <#elementsVirtio>`__ for more details. :since:`Since 7.1.0` :: Index: libvirt-7.0.0/docs/schemas/domaincommon.rng =================================================================== --- libvirt-7.0.0.orig/docs/schemas/domaincommon.rng +++ libvirt-7.0.0/docs/schemas/domaincommon.rng @@ -4883,6 +4883,11 @@ <optional> <ref name="alias"/> </optional> + <optional> + <element name="driver"> + <ref name="virtioOptions"/> + </element> + </optional> </interleave> </element> </define> Index: libvirt-7.0.0/src/conf/domain_conf.c =================================================================== --- libvirt-7.0.0.orig/src/conf/domain_conf.c +++ libvirt-7.0.0/src/conf/domain_conf.c @@ -2456,6 +2456,7 @@ virDomainVsockDefFree(virDomainVsockDefP virObjectUnref(vsock->privateData); virDomainDeviceInfoClear(&vsock->info); + VIR_FREE(vsock->virtio); VIR_FREE(vsock); } @@ -15624,6 +15625,11 @@ virDomainVsockDefParseXML(virDomainXMLOp if (virDomainDeviceInfoParseXML(xmlopt, node, &vsock->info, flags) < 0) return NULL; + if (virDomainVirtioOptionsParseXML(virXPathNode("./driver", ctxt), + &vsock->virtio) < 0) + return NULL; + + return g_steal_pointer(&vsock); } @@ -22806,6 +22812,9 @@ virDomainVsockDefCheckABIStability(virDo return false; } + if (!virDomainVirtioOptionsCheckABIStability(src->virtio, dst->virtio)) + return false; + if (!virDomainDeviceInfoCheckABIStability(&src->info, &dst->info)) return false; @@ -27994,6 +28003,7 @@ virDomainVsockDefFormat(virBufferPtr buf g_auto(virBuffer) childBuf = VIR_BUFFER_INIT_CHILD(buf); g_auto(virBuffer) attrBuf = VIR_BUFFER_INITIALIZER; g_auto(virBuffer) cidAttrBuf = VIR_BUFFER_INITIALIZER; + g_auto(virBuffer) drvAttrBuf = VIR_BUFFER_INITIALIZER; if (vsock->model) { virBufferAsprintf(&attrBuf, " model='%s'", @@ -28010,6 +28020,9 @@ virDomainVsockDefFormat(virBufferPtr buf virDomainDeviceInfoFormat(&childBuf, &vsock->info, 0); + virDomainVirtioOptionsFormat(&drvAttrBuf, vsock->virtio); + + virXMLFormatElement(&childBuf, "driver", &drvAttrBuf, NULL); virXMLFormatElement(buf, "vsock", &attrBuf, &childBuf); } Index: libvirt-7.0.0/src/conf/domain_conf.h =================================================================== --- libvirt-7.0.0.orig/src/conf/domain_conf.h +++ libvirt-7.0.0/src/conf/domain_conf.h @@ -2542,6 +2542,7 @@ struct _virDomainVsockDef { virTristateBool auto_cid; virDomainDeviceInfo info; + virDomainVirtioOptionsPtr virtio; }; struct _virDomainVirtioOptions { Index: libvirt-7.0.0/src/conf/domain_validate.c =================================================================== --- libvirt-7.0.0.orig/src/conf/domain_validate.c +++ libvirt-7.0.0/src/conf/domain_validate.c @@ -1450,6 +1450,15 @@ virDomainMemoryDefValidate(const virDoma } +static bool +virDomainVsockIsVirtioModel(const virDomainVsockDef *vsock) +{ + return (vsock->model == VIR_DOMAIN_VSOCK_MODEL_VIRTIO || + vsock->model == VIR_DOMAIN_VSOCK_MODEL_VIRTIO_TRANSITIONAL || + vsock->model == VIR_DOMAIN_VSOCK_MODEL_VIRTIO_NON_TRANSITIONAL); +} + + static int virDomainVsockDefValidate(const virDomainVsockDef *vsock) { @@ -1459,6 +1468,10 @@ virDomainVsockDefValidate(const virDomai return -1; } + if (!virDomainVsockIsVirtioModel(vsock) && + virDomainCheckVirtioOptions(vsock->virtio) < 0) + return -1; + return 0; } Index: libvirt-7.0.0/src/qemu/qemu_command.c =================================================================== --- libvirt-7.0.0.orig/src/qemu/qemu_command.c +++ libvirt-7.0.0/src/qemu/qemu_command.c @@ -9731,6 +9731,9 @@ qemuBuildVsockDevStr(virDomainDefPtr def virBufferAsprintf(&buf, ",id=%s", vsock->info.alias); virBufferAsprintf(&buf, ",guest-cid=%u", vsock->guest_cid); virBufferAsprintf(&buf, ",vhostfd=%s%u", fdprefix, priv->vhostfd); + + qemuBuildVirtioOptionsStr(&buf, vsock->virtio); + if (qemuBuildDeviceAddressStr(&buf, def, &vsock->info, qemuCaps) < 0) return NULL; Index: libvirt-7.0.0/src/qemu/qemu_validate.c =================================================================== --- libvirt-7.0.0.orig/src/qemu/qemu_validate.c +++ libvirt-7.0.0/src/qemu/qemu_validate.c @@ -4200,6 +4200,9 @@ qemuValidateDomainDeviceDefVsock(const v "vsock")) return -1; + if (qemuValidateDomainVirtioOptions(vsock->virtio, qemuCaps) < 0) + return -1; + return 0; } Index: libvirt-7.0.0/tests/qemuxml2argvdata/vhost-vsock-ccw-iommu.s390x-latest.args =================================================================== --- /dev/null +++ libvirt-7.0.0/tests/qemuxml2argvdata/vhost-vsock-ccw-iommu.s390x-latest.args @@ -0,0 +1,42 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/tmp/lib/domain--1-QEMUGuest1 \ +USER=test \ +LOGNAME=test \ +XDG_DATA_HOME=/tmp/lib/domain--1-QEMUGuest1/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-QEMUGuest1/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu-system-s390x \ +-name guest=QEMUGuest1,debug-threads=on \ +-S \ +-object secret,id=masterKey0,format=raw,\ +file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ +-machine s390-ccw-virtio,accel=tcg,usb=off,dump-guest-core=off,\ +memory-backend=s390.ram \ +-cpu qemu \ +-m 214 \ +-object memory-backend-ram,id=s390.ram,size=224395264 \ +-overcommit mem-lock=off \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=charmonitor,fd=1729,server,nowait \ +-mon chardev=charmonitor,id=monitor,mode=control \ +-rtc base=utc \ +-no-shutdown \ +-boot strict=on \ +-blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1",\ +"node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw",\ +"file":"libvirt-1-storage"}' \ +-device virtio-blk-ccw,devno=fe.0.0000,drive=libvirt-1-format,id=virtio-disk0,\ +bootindex=1 \ +-device virtio-balloon-ccw,id=balloon0,devno=fe.0.0001 \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,\ +resourcecontrol=deny \ +-device vhost-vsock-ccw,id=vsock0,guest-cid=4,vhostfd=6789,iommu_platform=on,\ +devno=fe.0.0002 \ +-msg timestamp=on Index: libvirt-7.0.0/tests/qemuxml2argvdata/vhost-vsock-ccw-iommu.xml =================================================================== --- /dev/null +++ libvirt-7.0.0/tests/qemuxml2argvdata/vhost-vsock-ccw-iommu.xml @@ -0,0 +1,37 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219136</memory> + <currentMemory unit='KiB'>219136</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='s390x' machine='s390-ccw-virtio'>hvm</type> + <boot dev='hd'/> + </os> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-s390x</emulator> + <disk type='block' device='disk'> + <driver name='qemu' type='raw'/> + <source dev='/dev/HostVG/QEMUGuest1'/> + <target dev='hda' bus='virtio'/> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0000'/> + </disk> + <controller type='pci' index='0' model='pci-root'/> + <memballoon model='virtio'> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0001'/> + </memballoon> + <panic model='s390'/> + <vsock model='virtio'> + <cid auto='no' address='4'/> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0002'/> + <driver iommu='on'/> + </vsock> + </devices> +</domain> Index: libvirt-7.0.0/tests/qemuxml2argvtest.c =================================================================== --- libvirt-7.0.0.orig/tests/qemuxml2argvtest.c +++ libvirt-7.0.0/tests/qemuxml2argvtest.c @@ -3400,6 +3400,7 @@ mymain(void) DO_TEST_CAPS_LATEST("vhost-vsock-auto"); DO_TEST_CAPS_ARCH_LATEST("vhost-vsock-ccw", "s390x"); DO_TEST_CAPS_ARCH_LATEST("vhost-vsock-ccw-auto", "s390x"); + DO_TEST_CAPS_ARCH_LATEST("vhost-vsock-ccw-iommu", "s390x"); DO_TEST_CAPS_VER("launch-security-sev", "2.12.0"); DO_TEST_CAPS_VER("launch-security-sev-missing-platform-info", "2.12.0"); Index: libvirt-7.0.0/tests/qemuxml2xmloutdata/vhost-vsock-ccw-iommu.s390x-latest.xml =================================================================== --- /dev/null +++ libvirt-7.0.0/tests/qemuxml2xmloutdata/vhost-vsock-ccw-iommu.s390x-latest.xml @@ -0,0 +1,37 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219136</memory> + <currentMemory unit='KiB'>219136</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='s390x' machine='s390-ccw-virtio'>hvm</type> + <boot dev='hd'/> + </os> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-s390x</emulator> + <disk type='block' device='disk'> + <driver name='qemu' type='raw'/> + <source dev='/dev/HostVG/QEMUGuest1'/> + <target dev='hda' bus='virtio'/> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0000'/> + </disk> + <controller type='pci' index='0' model='pci-root'/> + <memballoon model='virtio'> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0001'/> + </memballoon> + <panic model='s390'/> + <vsock model='virtio'> + <cid auto='no' address='4'/> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0002'/> + <driver iommu='on'/> + </vsock> + </devices> +</domain> Index: libvirt-7.0.0/tests/qemuxml2xmltest.c =================================================================== --- libvirt-7.0.0.orig/tests/qemuxml2xmltest.c +++ libvirt-7.0.0/tests/qemuxml2xmltest.c @@ -1402,6 +1402,8 @@ mymain(void) QEMU_CAPS_CCW); DO_TEST("vhost-vsock-ccw-auto", QEMU_CAPS_DEVICE_VHOST_VSOCK, QEMU_CAPS_CCW); + DO_TEST_CAPS_ARCH_LATEST("vhost-vsock-ccw-iommu", "s390x"); + DO_TEST_CAPS_LATEST("vhost-user-fs-fd-memory"); DO_TEST_CAPS_LATEST("vhost-user-fs-hugepages"); ++++++ c05f0066-conf-drop-empty-virDomainNetDefPostParse.patch ++++++ commit c05f00666c730de95a2e18f75326d3e9ee128bdd Author: Michal Pr??vozn??k <mpriv...@redhat.com> Date: Thu Jan 28 14:08:24 2021 +0100 conf: Drop empty virDomainNetDefPostParse() The previous commit rendered this function empty and needless. Remove it. Signed-off-by: Michal Privoznik <mpriv...@redhat.com> Reviewed-by: J??n Tomko <jto...@redhat.com> Index: libvirt-7.0.0/src/conf/domain_conf.c =================================================================== --- libvirt-7.0.0.orig/src/conf/domain_conf.c +++ libvirt-7.0.0/src/conf/domain_conf.c @@ -5274,13 +5274,6 @@ virDomainControllerDefPostParse(virDomai } -static int -virDomainNetDefPostParse(virDomainNetDefPtr net G_GNUC_UNUSED) -{ - return 0; -} - - static void virDomainVsockDefPostParse(virDomainVsockDefPtr vsock) { @@ -5329,10 +5322,6 @@ virDomainDeviceDefPostParseCommon(virDom ret = virDomainControllerDefPostParse(dev->data.controller); break; - case VIR_DOMAIN_DEVICE_NET: - ret = virDomainNetDefPostParse(dev->data.net); - break; - case VIR_DOMAIN_DEVICE_VSOCK: virDomainVsockDefPostParse(dev->data.vsock); ret = 0; @@ -5340,6 +5329,7 @@ virDomainDeviceDefPostParseCommon(virDom case VIR_DOMAIN_DEVICE_LEASE: case VIR_DOMAIN_DEVICE_FS: + case VIR_DOMAIN_DEVICE_NET: case VIR_DOMAIN_DEVICE_INPUT: case VIR_DOMAIN_DEVICE_SOUND: case VIR_DOMAIN_DEVICE_WATCHDOG: