From nobody Mon Feb 2 05:54:46 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1769421087; cv=none; d=zohomail.com; s=zohoarc; b=BT3EPtcl+2tLi61bdJd7FKhzcZsVAAQG3bwtGWyfKeGZJ8oMqxYorCTzoKlS/lQrd+1TL/6dgYWocez4WoVtWukw/LdlsQkviQ0o3YxTinwK0ddoB20NvoMiRktCggGxkmdQ74GThD+1mi5WtOqkw2BNvK1lWxdU88px6rOjMGQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1769421087; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=vHHmtCpjCweYWpWzH7n8xP3fw855WcaJD4/7S9jAdiU=; b=JTrIsKQPrYIxv+yoGP6u+CvFSyfzEYFAeqzOzBgWXu0nRH0SyaUtKMLzjCgBWLmnRWG/6IKebrhHaBvEzZv8fPz0RDSfJArJXAh7Eu8QAjsnb6KOeDobmGYJjSbBbfPS5yiBQgomtDW9JsPx9SriWQD7zarMFCJdxl+lOYV3h1Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1769421087281154.6602698180352; Mon, 26 Jan 2026 01:51:27 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 07EC141A25; Mon, 26 Jan 2026 04:51:26 -0500 (EST) Received: from [172.19.199.3] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 791724194C; Mon, 26 Jan 2026 04:50:35 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id CCC3F418DF; Mon, 26 Jan 2026 04:50:28 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id E713341904 for ; Mon, 26 Jan 2026 04:50:27 -0500 (EST) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-319-5qvb8XR2OpGsOygX8qgWZw-1; Mon, 26 Jan 2026 04:50:25 -0500 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id EF158180047F for ; Mon, 26 Jan 2026 09:50:24 +0000 (UTC) Received: from moe (unknown [10.43.3.236]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 5770D1956095 for ; Mon, 26 Jan 2026 09:50:24 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1769421027; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=vHHmtCpjCweYWpWzH7n8xP3fw855WcaJD4/7S9jAdiU=; b=OY4ruAvoQ3qoDAQ+wMqU+p2arNhPG5Lzte2pI1VpgrG9oRRYzoD5BCUNG5HP7pI6cmyUGD NGdGTeTON9OHsuBQPniRO0H1EZXha6WNQ/RH8gHFlkUXxwyJgtbYxBmCopkA6f2hi0euXq ZA4ahApsXyoAHlxspdg8U29vUw6d1fM= X-MC-Unique: 5qvb8XR2OpGsOygX8qgWZw-1 X-Mimecast-MFC-AGG-ID: 5qvb8XR2OpGsOygX8qgWZw_1769421025 To: devel@lists.libvirt.org Subject: [PATCH v2 1/7] conf: Teach virDomainParseMemory() new retval Date: Mon, 26 Jan 2026 10:50:15 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: G6jFhoUoilAMqnJq03kfDm5Quji9Skgc4AOv5GE70X4_1769421025 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 6EBU363OAKG2U7BYEYODCP5PWEYTUQTV X-Message-ID-Hash: 6EBU363OAKG2U7BYEYODCP5PWEYTUQTV X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1769421091176158500 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik So far, virDomainParseMemory() returns either 0 or -1. While this allows callers to distinguish a success case from an error it doesn't allow them to differentiate the case when no value was provided in the XML, thus nothing was parsed and nothing was required. Therefore, make virDomainParseMemory() return 1 on success, 0 in case nothing was parsed and nothing was required, and -1 on failure. Arguably, no caller needs this distinction currently, but that is about to change. Signed-off-by: Michal Privoznik --- src/conf/domain_conf.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 9672168df9..1b2a439ca4 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -8719,7 +8719,9 @@ virDomainDiskDefParseXML(virDomainXMLOption *xmlopt, * if @capped is true, the value must fit within an unsigned long * (only matters on 32-bit platforms). * - * Return 0 on success, -1 on failure after issuing error. + * Returns: 1 if value was parsed successfully, + * 0 if value wasn't present and @required is false, + * -1 on failure after issuing error. */ int virDomainParseMemory(const char *xpath, @@ -8730,21 +8732,27 @@ virDomainParseMemory(const char *xpath, bool capped) { unsigned long long bytes, max; + int rc; =20 max =3D virMemoryMaxValue(capped); =20 - if (virParseScaledValue(xpath, units_xpath, ctxt, - &bytes, 1024, max, required) < 0) + rc =3D virParseScaledValue(xpath, units_xpath, ctxt, + &bytes, 1024, max, required); + if (rc < 0) { return -1; + } else if (rc =3D=3D 0) { + *mem =3D 0; + return 0; + } =20 - /* Yes, we really do use kibibytes for our internal sizing. */ + /* Yes, we really do use kibibytes for our internal sizing. */ *mem =3D VIR_DIV_UP(bytes, 1024); =20 if (*mem >=3D VIR_DIV_UP(max, 1024)) { virReportError(VIR_ERR_OVERFLOW, "%s", _("size value too large")); return -1; } - return 0; + return 1; } =20 =20 --=20 2.52.0 From nobody Mon Feb 2 05:54:46 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1769421171; cv=none; d=zohomail.com; s=zohoarc; b=gIaqNMH8lVQEJx2KqDHtlYoLDuTZRU6G0QykqRPhbTHJqI497I84crQmibFqA/dwHRmXuebGg9+2lCIQFzckOIOddQXxAFNMbZMS/oDnEpWvonIJu9vrRopsYET/ZPbSEj5u4LiLVdnLz0YdVRG06zx3D57AfvHhxbLfLinlhgY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1769421171; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=fcgkJglRH8b6BP73ud+9jZERW5bgcFV8TezCsTAHCSw=; b=HMyhNONnEpPPj5lUUeuZP7dpd+OFoIAmRAEKhAc3/WSw/qiGymzT6o6jfyM6oisHV9iJp9OdZJxl7uaXrTXcWeJql6zHNBxJwz2uDhnoM1i/rLjM3//IhEF2ta7Yq+6vlZPcHFQ5jA9SujDL1nvj6jHoXTMZRpNi/+5ED13UA4k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1769421170883706.2899910720251; Mon, 26 Jan 2026 01:52:50 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 771C241908; Mon, 26 Jan 2026 04:52:49 -0500 (EST) Received: from [172.19.199.3] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id E790B41C87; Mon, 26 Jan 2026 04:50:37 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id D0D6341908; Mon, 26 Jan 2026 04:50:29 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 188F9418DF for ; Mon, 26 Jan 2026 04:50:29 -0500 (EST) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-570-VfmdUZcdMKmNkkd4cBT1Lw-1; Mon, 26 Jan 2026 04:50:26 -0500 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id F045F1800365 for ; Mon, 26 Jan 2026 09:50:25 +0000 (UTC) Received: from moe (unknown [10.43.3.236]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 5824E1956053 for ; Mon, 26 Jan 2026 09:50:25 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1769421028; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fcgkJglRH8b6BP73ud+9jZERW5bgcFV8TezCsTAHCSw=; b=Kfo1CbbagScn4A63AvmrjqOBK+X4pvLMBtpFwH9rYyX3b/Suun11PPHFQi16tibXRF6W9k 9fMAxib6khWG8QIVW4tYuGYQHYZ9m84/jz740g5Xd1MdyrkrZbR1tawY+yWOZeq6udl/A4 g7od4Gr6HpTZDyO2rhjCm1l8U9ZjtNA= X-MC-Unique: VfmdUZcdMKmNkkd4cBT1Lw-1 X-Mimecast-MFC-AGG-ID: VfmdUZcdMKmNkkd4cBT1Lw_1769421026 To: devel@lists.libvirt.org Subject: [PATCH v2 2/7] qemu_capabilities: Introduce QEMU_CAPS_VIRTIO_IOMMU_AW_BITS Date: Mon, 26 Jan 2026 10:50:16 +0100 Message-ID: <093afdbf6042437c3cafc0d396ef048a90b1afbb.1769420937.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: fk3zy-O1XyTaUS9jrOa972JGuXrUKHKe6lfgzgqqirc_1769421026 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: EIDOE3OHO5IYOXLJVWRW7DX3EQ45BDPL X-Message-ID-Hash: EIDOE3OHO5IYOXLJVWRW7DX3EQ45BDPL X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1769421175593154100 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik This capability tracks whether the virtio-iommu device has aw-bits attribute. Signed-off-by: Michal Privoznik Reviewed-by: Peter Krempa --- src/qemu/qemu_capabilities.c | 2 ++ src/qemu/qemu_capabilities.h | 1 + tests/qemucapabilitiesdata/caps_10.0.0_aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_10.0.0_s390x.xml | 1 + tests/qemucapabilitiesdata/caps_10.0.0_x86_64+amdsev.xml | 1 + tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_10.1.0_s390x.xml | 1 + tests/qemucapabilitiesdata/caps_10.1.0_x86_64+inteltdx.xml | 1 + tests/qemucapabilitiesdata/caps_10.1.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_10.2.0_aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_10.2.0_x86_64+mshv.xml | 1 + tests/qemucapabilitiesdata/caps_10.2.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_11.0.0_aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_11.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_9.1.0_riscv64.xml | 1 + tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml | 1 + tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_9.2.0_aarch64+hvf.xml | 1 + tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml | 1 + tests/qemucapabilitiesdata/caps_9.2.0_x86_64+amdsev.xml | 1 + tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml | 1 + 23 files changed, 24 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index f456e8a378..b4d52eebcd 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -755,6 +755,7 @@ VIR_ENUM_IMPL(virQEMUCaps, "disk-timed-stats", /* QEMU_CAPS_DISK_TIMED_STATS */ "query-accelerators", /* QEMU_CAPS_QUERY_ACCELERATORS */ "mshv", /* QEMU_CAPS_MSHV */ + "virtio-iommu.aw-bits", /* QEMU_CAPS_VIRTIO_IOMMU_AW_BITS */ ); =20 =20 @@ -1612,6 +1613,7 @@ static struct virQEMUCapsDevicePropsFlags virQEMUCaps= DevicePropsVirtioMemPCI[] =3D =20 static struct virQEMUCapsDevicePropsFlags virQEMUCapsDevicePropsVirtioIOMM= U[] =3D { { "boot-bypass", QEMU_CAPS_VIRTIO_IOMMU_BOOT_BYPASS, NULL }, + { "aw-bits", QEMU_CAPS_VIRTIO_IOMMU_AW_BITS, NULL }, }; =20 static struct virQEMUCapsDevicePropsFlags virQEMUCapsDevicePropsVirtioBlkC= CW[] =3D { diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index f180844e66..b02385ab0f 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -730,6 +730,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for = syntax-check */ QEMU_CAPS_DISK_TIMED_STATS, /* timed stats support ('stats-intervals' = property of disk frontends) */ QEMU_CAPS_QUERY_ACCELERATORS, /* query-accelerators command */ QEMU_CAPS_MSHV, /* -accel mshv */ + QEMU_CAPS_VIRTIO_IOMMU_AW_BITS, /* virtio-iommu.aw-bits */ =20 QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_10.0.0_aarch64.xml b/tests/qem= ucapabilitiesdata/caps_10.0.0_aarch64.xml index 90e8d868cc..c2bffe88ad 100644 --- a/tests/qemucapabilitiesdata/caps_10.0.0_aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_10.0.0_aarch64.xml @@ -163,6 +163,7 @@ + 10000000 61700285 v10.0.0 diff --git a/tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml b/tests/qemuc= apabilitiesdata/caps_10.0.0_ppc64.xml index 4b3cded2d1..0b9613b921 100644 --- a/tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml @@ -170,6 +170,7 @@ + 10000000 42900285 v10.0.0 diff --git a/tests/qemucapabilitiesdata/caps_10.0.0_s390x.xml b/tests/qemuc= apabilitiesdata/caps_10.0.0_s390x.xml index 82a66a6524..410f7c324c 100644 --- a/tests/qemucapabilitiesdata/caps_10.0.0_s390x.xml +++ b/tests/qemucapabilitiesdata/caps_10.0.0_s390x.xml @@ -136,6 +136,7 @@ + 10000000 39100285 v10.0.0 diff --git a/tests/qemucapabilitiesdata/caps_10.0.0_x86_64+amdsev.xml b/tes= ts/qemucapabilitiesdata/caps_10.0.0_x86_64+amdsev.xml index cfce1c963d..a7166aba44 100644 --- a/tests/qemucapabilitiesdata/caps_10.0.0_x86_64+amdsev.xml +++ b/tests/qemucapabilitiesdata/caps_10.0.0_x86_64+amdsev.xml @@ -209,6 +209,7 @@ + 10000000 43100285 v10.0.0 diff --git a/tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml b/tests/qemu= capabilitiesdata/caps_10.0.0_x86_64.xml index f94c8388d6..4177eb06b6 100644 --- a/tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml @@ -209,6 +209,7 @@ + 10000000 43100285 v10.0.0 diff --git a/tests/qemucapabilitiesdata/caps_10.1.0_s390x.xml b/tests/qemuc= apabilitiesdata/caps_10.1.0_s390x.xml index 8d59566cc0..9faa853da2 100644 --- a/tests/qemucapabilitiesdata/caps_10.1.0_s390x.xml +++ b/tests/qemucapabilitiesdata/caps_10.1.0_s390x.xml @@ -140,6 +140,7 @@ + 10001000 39100286 v10.1.0 diff --git a/tests/qemucapabilitiesdata/caps_10.1.0_x86_64+inteltdx.xml b/t= ests/qemucapabilitiesdata/caps_10.1.0_x86_64+inteltdx.xml index 377541ff53..d5566234a2 100644 --- a/tests/qemucapabilitiesdata/caps_10.1.0_x86_64+inteltdx.xml +++ b/tests/qemucapabilitiesdata/caps_10.1.0_x86_64+inteltdx.xml @@ -192,6 +192,7 @@ + 10001000 43100286 v10.1.0 diff --git a/tests/qemucapabilitiesdata/caps_10.1.0_x86_64.xml b/tests/qemu= capabilitiesdata/caps_10.1.0_x86_64.xml index 520a3d8ee8..12d2b262a5 100644 --- a/tests/qemucapabilitiesdata/caps_10.1.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_10.1.0_x86_64.xml @@ -214,6 +214,7 @@ + 10001000 43100286 v10.1.0 diff --git a/tests/qemucapabilitiesdata/caps_10.2.0_aarch64.xml b/tests/qem= ucapabilitiesdata/caps_10.2.0_aarch64.xml index d0c22d2541..7154cdb66c 100644 --- a/tests/qemucapabilitiesdata/caps_10.2.0_aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_10.2.0_aarch64.xml @@ -182,6 +182,7 @@ + 10002000 61700287 v10.2.0 diff --git a/tests/qemucapabilitiesdata/caps_10.2.0_x86_64+mshv.xml b/tests= /qemucapabilitiesdata/caps_10.2.0_x86_64+mshv.xml index 2b6708be6a..0d627136e8 100644 --- a/tests/qemucapabilitiesdata/caps_10.2.0_x86_64+mshv.xml +++ b/tests/qemucapabilitiesdata/caps_10.2.0_x86_64+mshv.xml @@ -202,6 +202,7 @@ + 10002000 43100287 v10.2.0 diff --git a/tests/qemucapabilitiesdata/caps_10.2.0_x86_64.xml b/tests/qemu= capabilitiesdata/caps_10.2.0_x86_64.xml index 06f7bf784d..5eae704512 100644 --- a/tests/qemucapabilitiesdata/caps_10.2.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_10.2.0_x86_64.xml @@ -215,6 +215,7 @@ + 10002000 43100287 v10.2.0 diff --git a/tests/qemucapabilitiesdata/caps_11.0.0_aarch64.xml b/tests/qem= ucapabilitiesdata/caps_11.0.0_aarch64.xml index f626f3ea46..3600be0301 100644 --- a/tests/qemucapabilitiesdata/caps_11.0.0_aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_11.0.0_aarch64.xml @@ -182,6 +182,7 @@ + 10002050 61700286 v10.2.0-476-gcf3e71d8fc diff --git a/tests/qemucapabilitiesdata/caps_11.0.0_x86_64.xml b/tests/qemu= capabilitiesdata/caps_11.0.0_x86_64.xml index f5ef2b2e45..6aa17de843 100644 --- a/tests/qemucapabilitiesdata/caps_11.0.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_11.0.0_x86_64.xml @@ -215,6 +215,7 @@ + 10002050 43100286 v10.2.0-476-gcf3e71d8fc diff --git a/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml b/tests/qemuc= apabilitiesdata/caps_9.0.0_x86_64.xml index 1f2e27a218..43c174e0e6 100644 --- a/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml @@ -204,6 +204,7 @@ + 9000000 43100245 v9.0.0 diff --git a/tests/qemucapabilitiesdata/caps_9.1.0_riscv64.xml b/tests/qemu= capabilitiesdata/caps_9.1.0_riscv64.xml index 85c013a724..b5ca67b445 100644 --- a/tests/qemucapabilitiesdata/caps_9.1.0_riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_9.1.0_riscv64.xml @@ -162,6 +162,7 @@ + 9001000 0 v9.1.0 diff --git a/tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml b/tests/qemuca= pabilitiesdata/caps_9.1.0_s390x.xml index b961f79808..78b7493b53 100644 --- a/tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml +++ b/tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml @@ -126,6 +126,7 @@ + 9001000 39100246 v9.1.0 diff --git a/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml b/tests/qemuc= apabilitiesdata/caps_9.1.0_x86_64.xml index 35ddf30736..d68bb783e8 100644 --- a/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml @@ -203,6 +203,7 @@ + 9001000 43100246 v9.1.0 diff --git a/tests/qemucapabilitiesdata/caps_9.2.0_aarch64+hvf.xml b/tests/= qemucapabilitiesdata/caps_9.2.0_aarch64+hvf.xml index 79784d553f..9c843f9e5c 100644 --- a/tests/qemucapabilitiesdata/caps_9.2.0_aarch64+hvf.xml +++ b/tests/qemucapabilitiesdata/caps_9.2.0_aarch64+hvf.xml @@ -135,6 +135,7 @@ + 9002002 61700247 diff --git a/tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml b/tests/qemuca= pabilitiesdata/caps_9.2.0_s390x.xml index e9f79261f7..01fb50038d 100644 --- a/tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml +++ b/tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml @@ -129,6 +129,7 @@ + 9002000 39100247 v9.2.0 diff --git a/tests/qemucapabilitiesdata/caps_9.2.0_x86_64+amdsev.xml b/test= s/qemucapabilitiesdata/caps_9.2.0_x86_64+amdsev.xml index 0e52c3e23d..ac936bc17b 100644 --- a/tests/qemucapabilitiesdata/caps_9.2.0_x86_64+amdsev.xml +++ b/tests/qemucapabilitiesdata/caps_9.2.0_x86_64+amdsev.xml @@ -207,6 +207,7 @@ + 9002000 43100247 v9.2.0 diff --git a/tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml b/tests/qemuc= apabilitiesdata/caps_9.2.0_x86_64.xml index 95f8a4d878..fd851d9201 100644 --- a/tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml @@ -205,6 +205,7 @@ + 9002000 43100247 v9.2.0 --=20 2.52.0 From nobody Mon Feb 2 05:54:46 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1769421268; cv=none; d=zohomail.com; s=zohoarc; b=GtM8K9p0ukglg81ry+k/2wy5vKIKvQw3LifcBMzeiChikaMA76YwVlG44McQtDhRnv2fy38I0f+EoThG6Z//XxhAvG9BWA+l7TdP8of6/EtyoQz77f2NFZE9QYaluLeeohmSEUOJKrZs8CjeGPaexwAnlj4haVKDt38M5GRhQHw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1769421268; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=F/TJb3FkU7SSgGfb3aOhktFWo4JphV1jU2vVixc0gE8=; b=AMzM6jLep08oWpr8KJ8Y9BF5lQ0eAnjEUa6K95WlPFR2shN/on8z9v7rpn+okAvZVSYBqp/l9f2AAy5BmPofnQPkJLhHE8gIdlFfVJIoD9RMWob/lDV0SVdq08Yvl9wl4NaqtrjaxU54zrMLk89/mJlVWdTvdo/WDVxE9bc3jt8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1769421268217777.0649986090464; Mon, 26 Jan 2026 01:54:28 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 9FDBB41AEE; Mon, 26 Jan 2026 04:54:27 -0500 (EST) Received: from [172.19.199.3] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 25B6F43E62; Mon, 26 Jan 2026 04:50:42 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id A26EE418DF; Mon, 26 Jan 2026 04:50:31 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 3BDB941904 for ; Mon, 26 Jan 2026 04:50:31 -0500 (EST) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-584-5Ha2zezsMrq3SnTrF7v4qg-1; Mon, 26 Jan 2026 04:50:28 -0500 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 13EAF1800451 for ; Mon, 26 Jan 2026 09:50:27 +0000 (UTC) Received: from moe (unknown [10.43.3.236]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 58DE71956095 for ; Mon, 26 Jan 2026 09:50:26 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1769421030; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=F/TJb3FkU7SSgGfb3aOhktFWo4JphV1jU2vVixc0gE8=; b=RlOzb/WInYGu60p/HyvViSkgFlfYwGFX87ykA7GJ7iTaji7/SLH99qkAPoHFfTwGBi055j Z+Fd8azCUbd9OHm2nDaroASBL5xJPKvpKeIrOkwAvL6MSbPLSn8HR+lCFZJh3q8ME8ltMF YFU+YfPH4vDhGTAhvrxOjx8EcBQevBA= X-MC-Unique: 5Ha2zezsMrq3SnTrF7v4qg-1 X-Mimecast-MFC-AGG-ID: 5Ha2zezsMrq3SnTrF7v4qg_1769421027 To: devel@lists.libvirt.org Subject: [PATCH v2 3/7] conf: Allow aw_bits for virtio-iommu Date: Mon, 26 Jan 2026 10:50:17 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 1IsToHEhDt8OpGzWxmHPJmrrd6EVfAcVH8PyvDORaEY_1769421027 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 635SOIP7G6HOH7OBPOZGY7IQ6WT62H6B X-Message-ID-Hash: 635SOIP7G6HOH7OBPOZGY7IQ6WT62H6B X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1769421269955154100 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Introduced in QEMU commit of v9.0.0-rc0~9^2~7 the virtio-iommu device is also capable of using different addres width. The corresponding attribute is also called 'aw-bits', just like in case of intel-iommu. Wire up the missing pieces. Signed-off-by: Michal Privoznik Reviewed-by: Peter Krempa --- docs/formatdomain.rst | 2 +- src/conf/domain_validate.c | 12 ++++++++++-- src/qemu/qemu_validate.c | 7 +++++-- .../virtio-iommu-aarch64.aarch64-latest.xml | 1 + tests/qemuxmlconfdata/virtio-iommu-aarch64.xml | 4 +++- .../virtio-iommu-dma-translation.x86_64-latest.err | 2 +- 6 files changed, 21 insertions(+), 7 deletions(-) diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index 04ef319a73..4b34a8a963 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -9243,7 +9243,7 @@ Example: ``aw_bits`` The ``aw_bits`` attribute can be used to set the address width to al= low mapping larger iova addresses in the guest. :since:`Since 6.5.0` (QE= MU/KVM - and ``intel`` model only) + and ``intel`` or ``virtio`` models only) =20 ``dma_translation`` The ``dma_translation`` attribute with possible values ``on`` and ``= off`` can diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c index 4482203087..c83fff132b 100644 --- a/src/conf/domain_validate.c +++ b/src/conf/domain_validate.c @@ -3206,14 +3206,22 @@ virDomainIOMMUDefValidate(const virDomainIOMMUDef *= iommu) iommu->caching_mode !=3D VIR_TRISTATE_SWITCH_ABSENT || iommu->eim !=3D VIR_TRISTATE_SWITCH_ABSENT || iommu->iotlb !=3D VIR_TRISTATE_SWITCH_ABSENT || - iommu->aw_bits !=3D 0 || iommu->dma_translation !=3D VIR_TRISTATE_SWITCH_ABSENT || iommu->pci_bus >=3D 0) { virReportError(VIR_ERR_XML_ERROR, - _("iommu model '%1$s' doesn't support additiona= l attributes"), + _("iommu model '%1$s' doesn't support some addi= tional attributes"), virDomainIOMMUModelTypeToString(iommu->model)); return -1; } + + /* QEMU mandates address width of the IOVA address space to be ins= ide + * [32,64] range, but since it stems from virtio specification it = can + * be assumed to be hypervisor agnostic and thus can live here. */ + if (iommu->aw_bits !=3D 0 && (iommu->aw_bits < 32 || iommu->aw_bit= s > 64)) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("aw-bits must be within [32,64]")); + return -1; + } break; =20 case VIR_DOMAIN_IOMMU_MODEL_AMD: diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 184c23d307..ab8a1938c1 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -5551,6 +5551,8 @@ qemuValidateDomainDeviceDefIOMMU(const virDomainIOMMU= Def *iommu, const virDomainDef *def, virQEMUCaps *qemuCaps) { + bool aw_bits_supported =3D false; + switch (iommu->model) { case VIR_DOMAIN_IOMMU_MODEL_INTEL: if (!qemuDomainIsQ35(def)) { @@ -5565,6 +5567,7 @@ qemuValidateDomainDeviceDefIOMMU(const virDomainIOMMU= Def *iommu, virDomainIOMMUModelTypeToString(iommu->model)); return -1; } + aw_bits_supported =3D virQEMUCapsGet(qemuCaps, QEMU_CAPS_INTEL_IOM= MU_AW_BITS); break; =20 case VIR_DOMAIN_IOMMU_MODEL_SMMUV3: @@ -5610,6 +5613,7 @@ qemuValidateDomainDeviceDefIOMMU(const virDomainIOMMU= Def *iommu, virDomainIOMMUModelTypeToString(iommu->model)); return -1; } + aw_bits_supported =3D virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_IO= MMU_AW_BITS); break; =20 case VIR_DOMAIN_IOMMU_MODEL_AMD: @@ -5669,8 +5673,7 @@ qemuValidateDomainDeviceDefIOMMU(const virDomainIOMMU= Def *iommu, _("iommu: device IOTLB is not supported with this Q= EMU binary")); return -1; } - if (iommu->aw_bits > 0 && - !virQEMUCapsGet(qemuCaps, QEMU_CAPS_INTEL_IOMMU_AW_BITS)) { + if (iommu->aw_bits > 0 && !aw_bits_supported) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("iommu: aw_bits is not supported with this QEMU b= inary")); return -1; diff --git a/tests/qemuxmlconfdata/virtio-iommu-aarch64.aarch64-latest.xml = b/tests/qemuxmlconfdata/virtio-iommu-aarch64.aarch64-latest.xml index 3cb794cbc9..4ae628ab5a 100644 --- a/tests/qemuxmlconfdata/virtio-iommu-aarch64.aarch64-latest.xml +++ b/tests/qemuxmlconfdata/virtio-iommu-aarch64.aarch64-latest.xml @@ -29,6 +29,7 @@