From nobody Sat Feb 7 11:31:01 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=1770402869; cv=none; d=zohomail.com; s=zohoarc; b=ajPmUiyhgUGAJHB744fXbnyoc8j+erd6yB6UrJC2hyLNX2UwPFdKANf1OVg7clU5tnfj5BC7tfUuZs44LG8/disXVyZJOWbse1Nqd/qPxi/tc9jm53JUH7Bo0RJg/U4681/Y1Bp8rQITAgkE+YMcla76S3AHJVKYfKuUkeBFBIo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770402869; 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=0WP1hDN2GiBQQCENMDIU9gE1WXcimiqfj8rnfWDEsbg=; b=iC4pwATvzM2MEx3AkpBipQzgAhnFM3klmKiM3Jktcvtf+rRr6Mfl84o4pGAum2+x19gTeHL/3x+41Dgmu16V7Np0Ani2vKhkGQdW8U5aGnDboe24SfnHyPcgnPu196EQCkfnNg1Gj0BJ2v9TP68FMZcMph/KKO1W7W0aB78Gdpk= 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 1770402869616630.3074546749203; Fri, 6 Feb 2026 10:34:29 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 0A63341B41; Fri, 6 Feb 2026 13:34:29 -0500 (EST) Received: from [172.19.199.6] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id B4A9641B71; Fri, 6 Feb 2026 13:33:36 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 3196E4180E; Fri, 6 Feb 2026 13:33:30 -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 8D8F341AEE for ; Fri, 6 Feb 2026 13:28:13 -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-611-gx-iypPzMD2Xb5NQGPQO5w-1; Fri, 06 Feb 2026 13:28:11 -0500 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (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 B5405180057E for ; Fri, 6 Feb 2026 18:28:10 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.3]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 050AE18003F6 for ; Fri, 6 Feb 2026 18:28:09 +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=1770402493; 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=0WP1hDN2GiBQQCENMDIU9gE1WXcimiqfj8rnfWDEsbg=; b=hg1meFNUv6XMEVt/lwvI0EQdqtYwXCtCz9rkO6tqNug6wnvu/93wUaaXkxFCSM2fHzCU7N R1QBHxU/kiemGkDsm/7E/GotomERhm4N+8Y8B8rHs6g1Tge3tsrgtnWalPSDrNLx+7Zz+W IKFdlp/CANqwVV/+Dck9RMede5bENJw= X-MC-Unique: gx-iypPzMD2Xb5NQGPQO5w-1 X-Mimecast-MFC-AGG-ID: gx-iypPzMD2Xb5NQGPQO5w_1770402490 To: devel@lists.libvirt.org Subject: [PATCH 1/5] virQEMUQAPISchemaTraverseObject: Consider features also on current members Date: Fri, 6 Feb 2026 19:28:03 +0100 Message-ID: <44db690de97f07332ecb52acf9779d82b19e1390.1770397360.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: f4OhsEA992xCcdyxCD0x_puiRqCxRp8VMz9w0aCOZ08_1770402490 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: LN7ONEXFHJQDUKU2HZFWWJBTTHQ6JORG X-Message-ID-Hash: LN7ONEXFHJQDUKU2HZFWWJBTTHQ6JORG X-MailFrom: pkrempa@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: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1770402872855154100 Content-Type: text/plain; charset="utf-8" From: Peter Krempa The 'features' to check can be also on the entry in the 'members' array of an object type. We wouldn't check that because we'd only check if the type of the member has any features. While the query language is flawed in the way that the user can't specify if they want to check features of the member rather than the type we work it around by checking both and returing if either of them matches. Signed-off-by: Peter Krempa --- src/qemu/qemu_qapi.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/qemu/qemu_qapi.c b/src/qemu/qemu_qapi.c index a2fef55019..e2b1904bf5 100644 --- a/src/qemu/qemu_qapi.c +++ b/src/qemu/qemu_qapi.c @@ -107,6 +107,24 @@ virQEMUQAPISchemaTraverseContextNextQuery(struct virQE= MUQAPISchemaTraverseContex } +/** + * virQEMUQAPISchemaTraverseContextHasNextQueryFeatures: + * @ctxt: query context + * + * If the next query is a feature query returns it without advancing the q= uery + * state in the context. + */ +static const char * +virQEMUQAPISchemaTraverseContextHasNextQueryFeatures(struct virQEMUQAPISch= emaTraverseContext *ctxt) +{ + if (!ctxt->queries[0] || + *ctxt->queries[0] !=3D '$') + return NULL; + + return ctxt->queries[0] + 1; +} + + static bool virQEMUQAPISchemaTraverseContextHasNextQuery(struct virQEMUQAPISchemaTrave= rseContext *ctxt) { @@ -178,11 +196,19 @@ virQEMUQAPISchemaTraverseObject(virJSONValue *cur, if (modifier =3D=3D '+') { obj =3D virQEMUQAPISchemaObjectGet("variants", query, "case", cur); } else { + const char *featuresquery; + obj =3D virQEMUQAPISchemaObjectGet("members", query, "name", cur); if (modifier =3D=3D '*' && obj && !virJSONValueObjectHasKey(obj, "default")) return 0; + + /* checks if the member itself has features, because if not we also + * need to check the subsequent object */ + if ((featuresquery =3D virQEMUQAPISchemaTraverseContextHasNextQuer= yFeatures(ctxt)) && + virQEMUQAPISchemaTraverseHasObjectFeature(featuresquery, obj) = =3D=3D 1) + return 1; } if (!obj) --=20 2.53.0 From nobody Sat Feb 7 11:31:01 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=1770402975; cv=none; d=zohomail.com; s=zohoarc; b=kqwVokhdoXIeDqlbxNP/K2kWBRAftUSboC3ds0QNIW7gNqSKO1gbJvBqPm+V9LiiIt+KtcNIqhZ0DsvNr5DbXAUbODSKvVQge/WsJDnja5aEJu4IznvQi5u+fCEtG2vBxtouEDZldUwXSI3bUKqbrDYnuLCSGXF+UP3zqXi2y60= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770402975; 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=Ewdlclu/JFd0WoFs+kJIzQHkml7SiiI6zjKr1JpVLoM=; b=SMyGBBbybp05aLCqIUgPikTJ4rF2VXPPDYw5AOuMcOClmAnGyTy8N3AEGHCoQnpJYzadrm2R5uMO8wCtRDhX6tOByLHHlhCij+3ZatmSyIWMIqPpenYz5gNDYVExb0zp51KAO0jG6XYZOHXcU2qtmb6VyXhF8lt+AJ3RuPhUpqA= 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 1770402975357494.8039120427561; Fri, 6 Feb 2026 10:36:15 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 7CB4741AA5; Fri, 6 Feb 2026 13:36:14 -0500 (EST) Received: from [172.19.199.6] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 76B1B41E4A; Fri, 6 Feb 2026 13:33:42 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id B48EB3FACE; Fri, 6 Feb 2026 13:33:30 -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 6142241AAD for ; Fri, 6 Feb 2026 13:28:14 -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-578-5aS_dw6OPYmBx6fAJDsgRw-1; Fri, 06 Feb 2026 13:28:12 -0500 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (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 D6CF61800464 for ; Fri, 6 Feb 2026 18:28:11 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.3]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 29ECC1800465 for ; Fri, 6 Feb 2026 18:28:10 +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=1770402494; 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=Ewdlclu/JFd0WoFs+kJIzQHkml7SiiI6zjKr1JpVLoM=; b=IDEd2l/mpxRUAYVS5Xs1cJmRUDZPLTPXuvCAGQDD4/ll2FIjWUDR09ALOYTXggbC7V83lc YkXWCZb68JFB9qJ1muiOnyCtSHb5LTRyEEmFvMYZhQr9kkfMFvNpFatRrm/yl2HdbPiDJq JcqXxS4ZMRVAJ+zhGaCFEtyhQQylnlA= X-MC-Unique: 5aS_dw6OPYmBx6fAJDsgRw-1 X-Mimecast-MFC-AGG-ID: 5aS_dw6OPYmBx6fAJDsgRw_1770402492 To: devel@lists.libvirt.org Subject: [PATCH 2/5] qemu: capabilities: Introduce QEMU_CAPS_NETDEV_TAP_FD_VHOSTFD_PLURAL Date: Fri, 6 Feb 2026 19:28:04 +0100 Message-ID: <3cba03ce9ef3928fe61d36a658103a020e58861b.1770397360.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: apFQgApw6lSuCmQUgScyyNeIy9cHIFkYpIFVKIwZimc_1770402492 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 4KWJTHJ3STBYCX3ZDVPEGUACKYWOUZLJ X-Message-ID-Hash: 4KWJTHJ3STBYCX3ZDVPEGUACKYWOUZLJ X-MailFrom: pkrempa@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: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1770402978116158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa qemu is going to deprecate the 'fd' and 'vhostfd' options of 'tap' netdev. While the current guidance is to use the plural 'fds' and 'vhostfds' even when one FD is used, this doesn't apply cleanly on older versions. Add capability QEMU_CAPS_NETDEV_TAP_FD_VHOSTFD_PLURAL which is detected if 'vhostfd' is deprecated or completely missing to switch to the new behaviour only conditionally. Currently there's no caps dump showing this because it'd at the same time break test validation due to use of deprecated fields. Signed-off-by: Peter Krempa --- src/qemu/qemu_capabilities.c | 8 ++++++++ src/qemu/qemu_capabilities.h | 1 + 2 files changed, 9 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index f456e8a378..bf73b083b3 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 */ + "netdev.tap.use.fd.vhostfd.plural", /* QEMU_CAPS_NETDEV_TAP_= FD_VHOSTFD_PLURAL */ ); @@ -5874,6 +5875,13 @@ virQEMUCapsProbeQMPSchemaCapabilities(virQEMUCaps *q= emuCaps, virQEMUQAPISchemaPathExists("block-stream/arg-type/backing-mask-pr= otocol", schema)) virQEMUCapsSet(qemuCaps, QEMU_CAPS_BLOCKJOB_BACKING_MASK_PROTOCOL); + /* QEMU-11.0 deprecated use of 'fd' and 'vhostfd' for TAP netdevs but = the + * replacement ('fds', 'vhostfds' for one FD) doesn't reliably work in + * all versions which support the attributes. Detect deprecation or ab= sence. */ + if (virQEMUQAPISchemaPathExists("netdev_add/arg-type/+tap/vhostfd/$dep= recated", schema) || + !virQEMUQAPISchemaPathExists("netdev_add/arg-type/+tap/vhostfd", s= chema)) + virQEMUCapsSet(qemuCaps, QEMU_CAPS_NETDEV_TAP_FD_VHOSTFD_PLURAL); + return 0; } diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index f180844e66..22318c769c 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_NETDEV_TAP_FD_VHOSTFD_PLURAL, /* use 'fds' and 'vhostfds' al= so for 1 fd 'tap' in -netdev */ QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; --=20 2.53.0 From nobody Sat Feb 7 11:31:01 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=1770403037; cv=none; d=zohomail.com; s=zohoarc; b=gN3t5NP+KHWUDEiXu9uSQaP0WvVeDmFcpoIJnhyh/XErQJm56aK7bRJ5b8T4b9lC8GccxReNpv0/+XURpvkNLXNdGXK8xYPy6tQr0oXF1eRslevuLlOf1RXxTc2OZn1qiyUuzSJ8rrbvOL+fFAvgXHN1OWP8EGQmRv/eG0KFcnQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770403037; 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=OzoNN6qw3JRCp4Xra72M1G/9i6Lsq8UVOav5rUAz6YI=; b=RAigpzAsLsBE56tlSU059qG1igXnsDqwFli53R9yh3uWsDSiYT01ZQkzE0ZpqiB6H6Vj94bnQ3hhaAcBgms1ZZbIAsak0CBbnoWYoPK88ekdtjjujdcBgdlD8LP7Y1q3FMewFX1BnkuNaOVuUab3S69KwHrII/Mpt4cImf1wwlw= 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 1770403037821376.30781761153594; Fri, 6 Feb 2026 10:37:17 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id EDB3D41AB2; Fri, 6 Feb 2026 13:37:16 -0500 (EST) Received: from [172.19.199.6] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id B6BAE43DC2; Fri, 6 Feb 2026 13:33:44 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id C22AA417D0; Fri, 6 Feb 2026 13:33: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 A4C0441A42 for ; Fri, 6 Feb 2026 13:28:16 -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-148-uSRb_lNjOKaly_ciCquqPA-1; Fri, 06 Feb 2026 13:28:13 -0500 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (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 2D78218003F5 for ; Fri, 6 Feb 2026 18:28:13 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.3]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 5C7451800465 for ; Fri, 6 Feb 2026 18:28:12 +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=1770402496; 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=OzoNN6qw3JRCp4Xra72M1G/9i6Lsq8UVOav5rUAz6YI=; b=WENwWKOSgc6uaEpVEB0fi43bGARVgDkbObeK/fAoJxQKl1V68KZ06HeREhFTYnsf/mP+SD pzYdNmYey9eJs240HG/BaT+d7ICpTbaUgO71tlX4VBp+dPiHIjpO00nZHaIfPNVGfQrYRw QfQ0Xp8Ts5VmVlAIrmKfrDb9fvU8ijM= X-MC-Unique: uSRb_lNjOKaly_ciCquqPA-1 X-Mimecast-MFC-AGG-ID: uSRb_lNjOKaly_ciCquqPA_1770402493 To: devel@lists.libvirt.org Subject: [PATCH 3/5] qemuxmlconftest: Add version-locked test cases for the use of -netdev tap with fd/vhostfd Date: Fri, 6 Feb 2026 19:28:05 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: ffj2C-1GpSTRGeL2WwpgNNHgql-NquU9G7FiYuUUcyA_1770402493 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: HGBSPLCD6BHRGFPMAR563INFC4DWQ5VG X-Message-ID-Hash: HGBSPLCD6BHRGFPMAR563INFC4DWQ5VG X-MailFrom: pkrempa@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: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1770403038359158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa QEMU 11.0 will deprecate that in favor of fds/vhostfds. Signed-off-by: Peter Krempa --- .../net-eth.x86_64-10.2.0.args | 36 ++++++++++ .../qemuxmlconfdata/net-eth.x86_64-10.2.0.xml | 44 +++++++++++++ .../net-virtio-vhost.x86_64-10.2.0.args | 42 ++++++++++++ .../net-virtio-vhost.x86_64-10.2.0.xml | 65 +++++++++++++++++++ tests/qemuxmlconftest.c | 4 ++ 5 files changed, 191 insertions(+) create mode 100644 tests/qemuxmlconfdata/net-eth.x86_64-10.2.0.args create mode 100644 tests/qemuxmlconfdata/net-eth.x86_64-10.2.0.xml create mode 100644 tests/qemuxmlconfdata/net-virtio-vhost.x86_64-10.2.0.ar= gs create mode 100644 tests/qemuxmlconfdata/net-virtio-vhost.x86_64-10.2.0.xml diff --git a/tests/qemuxmlconfdata/net-eth.x86_64-10.2.0.args b/tests/qemux= mlconfdata/net-eth.x86_64-10.2.0.args new file mode 100644 index 0000000000..745cbd4d79 --- /dev/null +++ b/tests/qemuxmlconfdata/net-eth.x86_64-10.2.0.args @@ -0,0 +1,36 @@ +LC_ALL=3DC \ +PATH=3D/bin \ +HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1 \ +USER=3Dtest \ +LOGNAME=3Dtest \ +XDG_DATA_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.local/share \ +XDG_CACHE_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.cache \ +XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \ +/usr/bin/qemu-system-x86_64 \ +-name guest=3DQEMUGuest1,debug-threads=3Don \ +-S \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/va= r/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \ +-machine pc-i440fx-10.2,usb=3Doff,dump-guest-core=3Doff,memory-backend=3Dp= c.ram,acpi=3Doff \ +-accel tcg \ +-cpu qemu64 \ +-m size=3D219136k \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}'= \ +-overcommit mem-lock=3Doff \ +-smp 1,sockets=3D1,cores=3D1,threads=3D1 \ +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=3Dcharmonitor,fd=3D1729,server=3Don,wait=3Doff \ +-mon chardev=3Dcharmonitor,id=3Dmonitor,mode=3Dcontrol \ +-rtc base=3Dutc \ +-no-shutdown \ +-boot strict=3Don \ +-device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0= x2"}' \ +-blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","no= de-name":"libvirt-1-storage","read-only":false}' \ +-device '{"driver":"ide-hd","bus":"ide.0","unit":0,"drive":"libvirt-1-stor= age","id":"ide0-0-0","bootindex":1}' \ +-netdev '{"type":"tap","fd":"3","id":"hostnet0"}' \ +-device '{"driver":"rtl8139","netdev":"hostnet0","id":"net0","mac":"00:11:= 22:33:44:55","bus":"pci.0","addr":"0x2"}' \ +-audiodev '{"id":"audio1","driver":"none"}' \ +-sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,resource= control=3Ddeny \ +-msg timestamp=3Don diff --git a/tests/qemuxmlconfdata/net-eth.x86_64-10.2.0.xml b/tests/qemuxm= lconfdata/net-eth.x86_64-10.2.0.xml new file mode 100644 index 0000000000..385cc59304 --- /dev/null +++ b/tests/qemuxmlconfdata/net-eth.x86_64-10.2.0.xml @@ -0,0 +1,44 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219100 + 219100 + 1 + + hvm + + + + qemu64 + + + destroy + restart + destroy + + /usr/bin/qemu-system-x86_64 + + + + +
+ + +
+ + +
+ + + + +