From nobody Mon Feb 2 07:29:08 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; 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=pass; 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=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768532570; cv=none; d=zohomail.com; s=zohoarc; b=A185yMfErhA0B/SJ82VEv+RMhGSFJx4TnLvegf+0Jhp7GOQH5kSuGcb9jOvIPKw/r6wkVg9/FkUIwFh6YL9qbrFC15Fy92Rcfa3a6NuuOGf46C9BOiRFFCn4WaHwT+X/w6OAss7GWdJGZlDm7y3N5PfyEcDoZoaO8tET5ODfDBw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768532570; h=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:References:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=1r/dQyqxU8yG5P04hyBnwWd9vQQyqPK3rvNWLEn1uWI=; b=YvsfVLB1uBI1xEyTuj/B3T2DQeoFTsbBw6lYquRTheefBTVnpmMPAM1HKg1C9iwP2NEkYCe6tSAgEe+ZrxzNxCcF/j3ao6xT5JMY0pvHYJWYZ4TThjjx4qaZHRK5lLx9ZpEyz0lTiRUljyBmXTxeG3bdcUG4B2QVAqmuIvHdRyE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=none dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 176853257016314.629138917360706; Thu, 15 Jan 2026 19:02:50 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 4A92541BA6; Thu, 15 Jan 2026 22:02:49 -0500 (EST) Received: from [172.19.199.83] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id AB8C441BB2; Thu, 15 Jan 2026 21:58:14 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 015F543DDE; Thu, 15 Jan 2026 21:58:07 -0500 (EST) Received: from mail-qk1-f176.google.com (mail-qk1-f176.google.com [209.85.222.176]) (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 C55BB41C1F for ; Thu, 15 Jan 2026 21:57:42 -0500 (EST) Received: by mail-qk1-f176.google.com with SMTP id af79cd13be357-8c0f13e4424so188188385a.1 for ; Thu, 15 Jan 2026 18:57:42 -0800 (PST) Received: from fedora ([2804:14c:3b83:91fd::fa62]) by smtp.gmail.com with ESMTPSA id af79cd13be357-8c6a71c14a9sm120243785a.22.2026.01.15.18.57.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 18:57:41 -0800 (PST) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, 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=gmail.com; s=20230601; t=1768532262; x=1769137062; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=1r/dQyqxU8yG5P04hyBnwWd9vQQyqPK3rvNWLEn1uWI=; b=mUYDnfowt72z+OoW8G9cJR0N0t4fWCQGel4BnfGY4q3ML2kZQmTJcG0SEDA4Ode7nq Sj0oCi4ZQ/ZPJzdwVuL4BhjMjdzN41nS6OqARib9TOUpXVsOEwcbmy1h6dziEOFGOJBL zqFRXXcx0VlggcavpIs4RDCuoQ30de2rK6vVZymrtGhp5O3eSflLcBpxM1xRkqdbc58w 1pmbn+lasM8LjS4EX7VjAczsZuff+gufLWG9ew9t5Ct6i6HX9OuuoqO67lNn2Q7694mC vDxzvFEQIZO5Blz8qWDCLKMT2KcaNe0WEh590X3o8GARXrxNhXfp69IcgK/DGgvAuokd BZPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768532262; x=1769137062; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=1r/dQyqxU8yG5P04hyBnwWd9vQQyqPK3rvNWLEn1uWI=; b=BkYeCNFiL0XJdPP/fVexMtr0ais5kffYqhGs7N0GoQuSuogBRsAYuQe32Rk4pjYmrA ROMHirv9RTxpZF2Q2Ihaj1UUWaQgXyvD7NkHf3AYEdMYZzmf4H3kJZyX3jAmeeES9Mdh S3B9AxjYPfEM5tTHk1knp+B/+J2+YOAtq48EjVq4Zlfa69B0amSUUXfxw013vgvbJ8Gk U4iSyEkvYranUqPOIqcdFq5KReb5bLe3XeYqfbHKgSp1RCLY5JAqrY+58ViM4FUJKSa+ zm72LI8hFA80s2GSrwWk+50tTD5lK8XPoEbb0OGdnBZoUmg0eJyz/lQNGGrzFyo8T64L Xa8A== X-Gm-Message-State: AOJu0YxKFWbKbMkUr/JbH4PSPSEh5XR48x2mufaC+mkigJCQZ8surMi4 byb6fWRYPWhQogXcn91i5G3EJM07p84D9hC7BOam5x+MGg/afFN31x7UbC+zFA== X-Gm-Gg: AY/fxX5huSp0QSbz7zA7H7VHLxkW4i6KVrhkRk8pEiJj/YFJ82sD/H/k1R+aydDSg/X qBCvYLhGX45SLG0oZ3iKtcRm8CScBUHxwICSVLkWiKwvQgG5jZ0LQl7jlaSuZvN0R/21P4tKC8B fLy6+aOgx6a0hx2br36QwLcmNdQdfcAhCtfZ6FJTKfOhOO0usYAvqTUQpNOV/GHtdVxFv0AzQOb iH1Rfej0YcsToR+O8YgYBAV/vT9pKUrc0+2SwXiWQpojCC1Z3WZ9Jq8qWEEC2+IB7kqRBPg4/xx /D1t3Io0PkGy8BYRnht8ZHeELDUDbY0r/lJKptF9INhgMiJi2NLAiiaO5PS7LJvFNWqT46Kcmnn LuBpuE9G8ebXFoIXHVuLHxkqeHuLgxcvdisVRImAz3gOLsRnc03lsb/j0ETPQg6pc X-Received: by 2002:a05:620a:4155:b0:8a2:bff5:40d9 with SMTP id af79cd13be357-8c6a66d1590mr248996185a.16.1768532262001; Thu, 15 Jan 2026 18:57:42 -0800 (PST) From: Julio Faracco To: devel@lists.libvirt.org Subject: [PATCH 6/8] qemu: Add the multitouch device capability Date: Thu, 15 Jan 2026 23:52:34 -0300 Message-ID: <20260116025708.18419-7-jcfaracco@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260116025708.18419-1-jcfaracco@gmail.com> References: <20260116025708.18419-1-jcfaracco@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: Z6XKXBADJRGWIBSOEHAI227F3VHBPDWM X-Message-ID-Hash: Z6XKXBADJRGWIBSOEHAI227F3VHBPDWM X-MailFrom: jcfaracco@gmail.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: X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768532571733158500 Content-Type: text/plain; charset="utf-8" This commit introduces QEMU capability detection and validation for virtio-multitouch devices. 1. Capability flag (QEMU_CAPS_VIRTIO_MULTITOUCH): A new capability flag is defined in src/qemu/qemu_capabilities.h to track whether the QEMU binary supports virtio-multitouch devices. 2. Device detection (src/qemu/qemu_capabilities.c): The capability probing code is updated to detect the presence of "virtio-multitouch-device" and "virtio-multitouch-pci" device types when querying QEMU. This allows libvirt to determine at runtime whether the installed QEMU version supports multitouch devices (available since QEMU 8.1.0). 3. Validation (src/qemu/qemu_validate.c): Validation logic is added to ensu= re that multitouch devices are only used when QEMU supports them. If a doma= in configuration specifies a multitouch device but QEMU lacks support, libv= irt will reject the configuration with a clear error message rather than generating invalid command-line arguments. This capability-based approach ensures that libvirt gracefully handles different QEMU versions, allowing multitouch devices on newer QEMU while preventing configuration errors on older versions. Signed-off-by: Julio Faracco --- src/qemu/qemu_capabilities.c | 3 +++ src/qemu/qemu_capabilities.h | 1 + src/qemu/qemu_validate.c | 5 +++++ 3 files changed, 9 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 92b863a826..bc19aa1a5d 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-multitouch", /* QEMU_CAPS_VIRTIO_MULTITOUCH */ ); =20 =20 @@ -1345,6 +1346,8 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[= ] =3D { { "virtio-keyboard-pci", QEMU_CAPS_VIRTIO_KEYBOARD }, { "virtio-mouse-device", QEMU_CAPS_VIRTIO_MOUSE }, { "virtio-mouse-pci", QEMU_CAPS_VIRTIO_MOUSE }, + { "virtio-multitouch-device", QEMU_CAPS_VIRTIO_MULTITOUCH }, + { "virtio-multitouch-pci", QEMU_CAPS_VIRTIO_MULTITOUCH }, { "virtio-tablet-device", QEMU_CAPS_VIRTIO_TABLET }, { "virtio-tablet-pci", QEMU_CAPS_VIRTIO_TABLET }, { "virtio-input-host-device", QEMU_CAPS_VIRTIO_INPUT_HOST }, diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index f180844e66..44a3350cf9 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_MULTITOUCH, /* -device virtio-multitouch-{device,pci}= */ =20 QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 184c23d307..6589939290 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -5485,6 +5485,11 @@ qemuValidateDomainDeviceDefInput(const virDomainInpu= tDef *input, cap =3D QEMU_CAPS_VIRTIO_INPUT_HOST; ccwCap =3D QEMU_CAPS_LAST; break; + case VIR_DOMAIN_INPUT_TYPE_MULTITOUCH: + baseName =3D "virtio-multitouch"; + cap =3D QEMU_CAPS_VIRTIO_MULTITOUCH; + ccwCap =3D QEMU_CAPS_LAST; + break; case VIR_DOMAIN_INPUT_TYPE_EVDEV: baseName =3D "input-linux"; cap =3D QEMU_CAPS_INPUT_LINUX; --=20 2.52.0