From nobody Sun Feb 8 18:28:29 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) client-ip=207.211.31.120; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1575933395; cv=none; d=zohomail.com; s=zohoarc; b=UupGcACLxfwW/fMKqfIbgIwjETB9vs/FqgpQAXBlc00v5ljmRyGnEUrI+cbTHmNcEJMPpbfcavnbmBpXt9+weAQPp8YdElcHCtZjIPBW5p8NEAQjimskroU8yhdZXLPHKo02YOpJWuJZ91z2g0RjjZGWjd1Boa8CAaAl1s/PEDQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1575933395; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=fxobIvqKXVRoBjOjSymALT/hUTvkuHRJv5z6DSGTz+o=; b=aSUpXYCxJqEZHD/iKb8V49OVDoqJlnEIbKQzt2gRmnsqMh3da7l3CgfPc5PGRxnDGYpZTMxlf2Us84n2czDJC1JPCYOIw96kN/mI6QikJKGU6WZ/KgMn7L8Ru8kQhXeeGioNrNdoXR30UuTnTxw/AQpRNefn/vlYco06xZ3Ywl4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) by mx.zohomail.com with SMTPS id 1575933395025961.3547117362001; Mon, 9 Dec 2019 15:16:35 -0800 (PST) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-387-f2W_EjmYMpGT_uRnyoL1Rw-1; Mon, 09 Dec 2019 18:16:32 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 0CCFD107ACCA; Mon, 9 Dec 2019 23:16:24 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D8CF160567; Mon, 9 Dec 2019 23:16:23 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 9672D83563; Mon, 9 Dec 2019 23:16:23 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id xB9NGCJa008488 for ; Mon, 9 Dec 2019 18:16:12 -0500 Received: by smtp.corp.redhat.com (Postfix) id 8BF872166B29; Mon, 9 Dec 2019 23:16:12 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 87DD72166B27 for ; Mon, 9 Dec 2019 23:16:10 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id C282B90016A for ; Mon, 9 Dec 2019 23:16:10 +0000 (UTC) Received: from mail-qk1-f195.google.com (mail-qk1-f195.google.com [209.85.222.195]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-244-9m0yhzHhMHGAvxl4a7nM0g-1; Mon, 09 Dec 2019 18:16:04 -0500 Received: by mail-qk1-f195.google.com with SMTP id l124so2833068qkf.8; Mon, 09 Dec 2019 15:16:04 -0800 (PST) Received: from rekt.ibmuc.com ([2804:431:c7c6:fe5:8243:c780:f073:3beb]) by smtp.gmail.com with ESMTPSA id e130sm352436qkb.72.2019.12.09.15.16.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Dec 2019 15:16:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1575933393; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=fxobIvqKXVRoBjOjSymALT/hUTvkuHRJv5z6DSGTz+o=; b=WVqNyNpb7pYkCzFO7xpeLHgV+eBvoV24fAfc3jL1bfONGbavXVBcSPKa3NkEz32VqpIP5O 3/8lB+ncipzq+Wf6aRceR+9fDgPDQz4xqcqJYre6EiK+EEdkx1X7X4uiF0pXVCj1dNYdF+ qNWmNL7NKEjtohf93pLB3alJA2mRfGQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8EYhTHaaRvGd1GhFu0bjFT0IBH3gMwm4q3kegpsUasE=; b=VnRKZ5/2vdXYsy9TbfxEXz0NfZjITqTRd9P3vX5M+kJAf7PWVHBl4TVpkrXSi/mrMh JSc8SVhXNskXDgMBTxYQ/nglznk6BVCKGqYyiCoGDN4QT/pt/4wt+X57/WYzrYNZZBZV iTpmVq5NXPEhalywqsg3JryMeAYqWVgTf5DohLlKqNKg8+YQy3G4dcJzUKsZybpSSUsX uR1NNZwGv/lwVa+FnN8AV6TDpJCM3YLGqw21dcrYtY7TKJgbQdEyRk0zMmd0oIrDV071 QHReBuaoNwbg5pFEvWB0n3GCUtMnBCoABjipz5Re44BOiKUKkg2XuHYoVduNzC8NZ4FQ DqYA== X-Gm-Message-State: APjAAAUnRS8xHiGbIafmLmqCWlEts0qyRUbbftHrWTGRgdv1YbGM/W5U MlXSkmvvjObC1AzwxBOF5wyy8qc6FNk= X-Google-Smtp-Source: APXvYqwy0VA/GBylCQmEu2VcD+HnPozsSmFMiXer/xTR1cq8cWFHcc7zOa+S+p9uYqqFt4am8EvZTw== X-Received: by 2002:ae9:c011:: with SMTP id u17mr4390822qkk.480.1575933363760; Mon, 09 Dec 2019 15:16:03 -0800 (PST) From: Daniel Henrique Barboza To: libvir-list@redhat.com Date: Mon, 9 Dec 2019 20:15:18 -0300 Message-Id: <20191209231531.2423222-14-danielhb413@gmail.com> In-Reply-To: <20191209231531.2423222-1-danielhb413@gmail.com> References: <20191209231531.2423222-1-danielhb413@gmail.com> MIME-Version: 1.0 X-MC-Unique: 9m0yhzHhMHGAvxl4a7nM0g-1 X-MC-Unique: f2W_EjmYMpGT_uRnyoL1Rw-1 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id xB9NGCJa008488 X-loop: libvir-list@redhat.com Cc: Daniel Henrique Barboza , crobinso@redhat.com Subject: [libvirt] [PATCH v1 13/26] qemu: move qemuBuildHostdevCommandLine caps validation to qemu_domain X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Mimecast-Spam-Score: 0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Move QEMU caps validation of qemuBuildHostdevCommandLine() to qemuDomainDeviceDefValidateHostdev() and qemuDomainMdevDefValidate(), allowing them to be validated at domain define time. Tests were adapted to consider the new caps being needed in this earlier stage. Signed-off-by: Daniel Henrique Barboza --- src/qemu/qemu_command.c | 32 ------------------------------ src/qemu/qemu_domain.c | 42 +++++++++++++++++++++++++++++++++++++--- tests/qemumemlocktest.c | 16 +++++++++++---- tests/qemuxml2argvtest.c | 6 +++--- tests/qemuxml2xmltest.c | 12 +++++++----- 5 files changed, 61 insertions(+), 47 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 58409a85d9..9431efa384 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5321,17 +5321,6 @@ qemuBuildHostdevCommandLine(virCommandPtr cmd, /* PCI */ if (hostdev->mode =3D=3D VIR_DOMAIN_HOSTDEV_MODE_SUBSYS && subsys->type =3D=3D VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI) { - int backend =3D subsys->u.pci.backend; - - if (backend =3D=3D VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VFIO) { - if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VFIO_PCI)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("VFIO PCI device assignment is not " - "supported by this version of qemu")); - return -1; - } - } - unsigned int bootIndex =3D hostdev->info->bootIndex; =20 /* bootNet will be non-0 if boot order was set and no other @@ -5414,29 +5403,8 @@ qemuBuildHostdevCommandLine(virCommandPtr cmd, =20 switch ((virMediatedDeviceModelType) mdevsrc->model) { case VIR_MDEV_MODEL_TYPE_VFIO_PCI: - if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VFIO_PCI)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("VFIO PCI device assignment is not " - "supported by this version of QEMU")); - return -1; - } - - break; case VIR_MDEV_MODEL_TYPE_VFIO_CCW: - if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VFIO_CCW)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("VFIO CCW device assignment is not " - "supported by this version of QEMU")); - return -1; - } - break; case VIR_MDEV_MODEL_TYPE_VFIO_AP: - if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VFIO_AP)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("VFIO AP device assignment is not " - "supported by this version of QEMU")); - return -1; - } break; case VIR_MDEV_MODEL_TYPE_LAST: default: diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 2b97b5f1bd..b39942c49f 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -6042,6 +6042,13 @@ qemuDomainMdevDefVFIOPCIValidate(const virDomainHost= devDef *hostdev, { const virDomainHostdevSubsysMediatedDev *dev; =20 + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VFIO_PCI)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("VFIO PCI device assignment is not " + "supported by this version of QEMU")); + return -1; + } + /* VFIO-PCI does not support boot */ if (hostdev->info->bootIndex) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", @@ -6085,11 +6092,19 @@ qemuDomainMdevDefVFIOPCIValidate(const virDomainHos= tdevDef *hostdev, =20 static int qemuDomainMdevDefVFIOAPValidate(const virDomainHostdevDef *hostdev, - const virDomainDef *def) + const virDomainDef *def, + virQEMUCapsPtr qemuCaps) { size_t i; bool vfioap_found =3D false; =20 + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VFIO_AP)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("VFIO AP device assignment is not " + "supported by this version of QEMU")); + return -1; + } + /* VFIO-AP does not support boot */ if (hostdev->info->bootIndex) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", @@ -6131,8 +6146,14 @@ qemuDomainMdevDefValidate(const virDomainHostdevDef = *hostdev, case VIR_MDEV_MODEL_TYPE_VFIO_PCI: return qemuDomainMdevDefVFIOPCIValidate(hostdev, def, qemuCaps); case VIR_MDEV_MODEL_TYPE_VFIO_AP: - return qemuDomainMdevDefVFIOAPValidate(hostdev, def); + return qemuDomainMdevDefVFIOAPValidate(hostdev, def, qemuCaps); case VIR_MDEV_MODEL_TYPE_VFIO_CCW: + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VFIO_CCW)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("VFIO CCW device assignment is not " + "supported by this version of QEMU")); + return -1; + } break; case VIR_MDEV_MODEL_TYPE_LAST: default: @@ -6150,6 +6171,8 @@ qemuDomainDeviceDefValidateHostdev(const virDomainHos= tdevDef *hostdev, const virDomainDef *def, virQEMUCapsPtr qemuCaps) { + int backend; + /* forbid capabilities mode hostdev in this kind of hypervisor */ if (hostdev->mode =3D=3D VIR_DOMAIN_HOSTDEV_MODE_CAPABILITIES) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, @@ -6162,9 +6185,22 @@ qemuDomainDeviceDefValidateHostdev(const virDomainHo= stdevDef *hostdev, if (hostdev->mode =3D=3D VIR_DOMAIN_HOSTDEV_MODE_SUBSYS) { switch ((virDomainHostdevSubsysType) hostdev->source.subsys.type) { case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB: - case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI: break; + + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: + backend =3D hostdev->source.subsys.u.pci.backend; + + if (backend =3D=3D VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VFIO) { + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VFIO_PCI)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("VFIO PCI device assignment is not " + "supported by this version of qemu")); + return -1; + } + } + break; + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST: if (hostdev->info->bootIndex) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", diff --git a/tests/qemumemlocktest.c b/tests/qemumemlocktest.c index 986dfb77bd..c70a426c16 100644 --- a/tests/qemumemlocktest.c +++ b/tests/qemumemlocktest.c @@ -106,6 +106,18 @@ mymain(void) DO_TEST("pc-kvm", 0); DO_TEST("pc-tcg", 0); =20 + if (!(qemuCaps =3D virQEMUCapsNew())) { + ret =3D -1; + goto cleanup; + } + + virQEMUCapsSet(qemuCaps, QEMU_CAPS_DEVICE_VFIO_PCI); + + if (qemuTestCapsCacheInsert(driver.qemuCapsCache, qemuCaps) < 0) { + ret =3D -1; + goto cleanup; + }; + DO_TEST("pc-hardlimit", 2147483648); DO_TEST("pc-locked", VIR_DOMAIN_MEMORY_PARAM_UNLIMITED); DO_TEST("pc-hostdev", 2147483648); @@ -116,10 +128,6 @@ mymain(void) DO_TEST("pc-locked+hostdev", VIR_DOMAIN_MEMORY_PARAM_UNLIMITED); =20 qemuTestSetHostArch(&driver, VIR_ARCH_PPC64); - if (!(qemuCaps =3D virQEMUCapsNew())) { - ret =3D -1; - goto cleanup; - } =20 virQEMUCapsSet(qemuCaps, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE); if (qemuTestCapsCacheInsert(driver.qemuCapsCache, qemuCaps) < 0) { diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 3c081651cf..8a5524c3fb 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1638,9 +1638,9 @@ mymain(void) QEMU_CAPS_DEVICE_VFIO_CCW); DO_TEST_CAPS_ARCH_LATEST("hostdev-subsys-mdev-vfio-ccw-boot", "s390x"); - DO_TEST_FAILURE("hostdev-subsys-mdev-vfio-ccw", - QEMU_CAPS_CCW, - QEMU_CAPS_CCW_CSSID_UNRESTRICTED); + DO_TEST_PARSE_ERROR("hostdev-subsys-mdev-vfio-ccw", + QEMU_CAPS_CCW, + QEMU_CAPS_CCW_CSSID_UNRESTRICTED); DO_TEST_PARSE_ERROR("hostdev-subsys-mdev-vfio-ccw-duplicate-address", QEMU_CAPS_CCW, QEMU_CAPS_CCW_CSSID_UNRESTRICTED, diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 0145970774..bd505ff157 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -405,7 +405,7 @@ mymain(void) DO_TEST("net-virtio-rxtxqueuesize", NONE); DO_TEST("net-hostdev", NONE); DO_TEST("net-hostdev-bootorder", NONE); - DO_TEST("net-hostdev-vfio", NONE); + DO_TEST("net-hostdev-vfio", QEMU_CAPS_DEVICE_VFIO_PCI); DO_TEST("net-midonet", NONE); DO_TEST("net-openvswitch", NONE); DO_TEST("sound", NONE); @@ -437,9 +437,10 @@ mymain(void) =20 DO_TEST("hostdev-usb-address", NONE); DO_TEST("hostdev-pci-address", NONE); - DO_TEST("hostdev-pci-multifunction", NONE); - DO_TEST("hostdev-vfio", NONE); + DO_TEST("hostdev-pci-multifunction", QEMU_CAPS_DEVICE_VFIO_PCI); + DO_TEST("hostdev-vfio", QEMU_CAPS_DEVICE_VFIO_PCI); DO_TEST("hostdev-vfio-zpci", + QEMU_CAPS_DEVICE_VFIO_PCI, QEMU_CAPS_DEVICE_ZPCI, QEMU_CAPS_CCW); DO_TEST("hostdev-vfio-zpci-multidomain-many", @@ -453,10 +454,11 @@ mymain(void) QEMU_CAPS_DEVICE_VFIO_PCI, QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_ZPCI); - DO_TEST("hostdev-mdev-precreated", NONE); + DO_TEST("hostdev-mdev-precreated", QEMU_CAPS_DEVICE_VFIO_PCI); DO_TEST("hostdev-mdev-display", QEMU_CAPS_DEVICE_QXL, - QEMU_CAPS_VFIO_PCI_DISPLAY); + QEMU_CAPS_VFIO_PCI_DISPLAY, + QEMU_CAPS_DEVICE_VFIO_PCI); DO_TEST("pci-rom", NONE); DO_TEST("pci-rom-disabled", NONE); DO_TEST("pci-rom-disabled-invalid", NONE); --=20 2.23.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list