From nobody Fri Nov 21 10:03:41 2025 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=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=1762447391; cv=none; d=zohomail.com; s=zohoarc; b=B1ONY+/HBREiaQWl/zIzmwiP5HR4BkOuePMWL2jhre1TFFw+3ELquXDK0e6B7xxtbb21aw7Qd6dusS76NkgVZjQZMgVtyfLjL/+c9or0I7Gg9T9PQkh/9eLYNE5dhTHmbezg1RLSLbSdzltcU+m21o+uyjAyzFl+w2Q/enZ91Ho= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1762447391; h=Content-Transfer-Encoding:Cc:Cc: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; bh=CglKLMa3//FUz2a9Tj05oKcvDY2YFfMVTDJCTt8Mq+8=; b=Q0hCBhraRc8/IyFylNv/dfRbF2gQ4EyIeISZp5bZ5fjJNA4ah3zkmic86kCa1jsoUs6pJZe+DBUPmFV6qRtmmekYDGvXSxVCDjruALKfgvVyFZwgbHove+vb7GHOyJxAX9JWPv+I/VsJKysKLeVcH2hLVWqv171mNceLGdsukpE= 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 1762447391809652.5721714356395; Thu, 6 Nov 2025 08:43:11 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id DCC3D3F84A; Thu, 6 Nov 2025 11:43:10 -0500 (EST) Received: from [172.19.199.29] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id A848744140; Thu, 6 Nov 2025 11:41:38 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 5E6A73F87C; Thu, 6 Nov 2025 11:41:27 -0500 (EST) Received: from mail-oi1-f175.google.com (mail-oi1-f175.google.com [209.85.167.175]) (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 2B9D444298 for ; Thu, 6 Nov 2025 11:27:03 -0500 (EST) Received: by mail-oi1-f175.google.com with SMTP id 5614622812f47-4491510f005so297521b6e.2 for ; Thu, 06 Nov 2025 08:27:03 -0800 (PST) Received: from home ([72.191.74.189]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-656c57d5928sm1026998eaf.13.2025.11.06.08.27.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Nov 2025 08:27:01 -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=-5.3 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_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=gmail.com; s=20230601; t=1762446422; x=1763051222; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CglKLMa3//FUz2a9Tj05oKcvDY2YFfMVTDJCTt8Mq+8=; b=RKghrS54GOzwoUnW4Zsz/SGj89Ny0oXH7PCi+XI0yyR0sG6kC9+0dzPAE93a+XJHgw xDaTtHueXM6ykZcPu96dacEPhXRFVMLMrSGhgxwLgo8SGsk6o8uJGCAvC9sHEjMCnv71 ZKKduw/oRPG0jvIkU/YytGeYJr7Kmz2xb1r74TnHaNGOlQ7wUX3qIITv/QTVncL5cZhu 9RZnIk232K49azrAL+Pet6TnAZi40/ZgWplrJUjfiJXmUYr2Az8ztebkd3F0/rwxDqhm 4PfQyRSeRJmvth9HoR2VHQLefOFCnn+PayxTQQANv6ONLosTWTxFwRgEXSIYqHdC6BMA Rmzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762446422; x=1763051222; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CglKLMa3//FUz2a9Tj05oKcvDY2YFfMVTDJCTt8Mq+8=; b=V44zfTrHLcTlbFnYdlrraEGWeo7/U5kqVy/uvd+lWXqp4J/AQP3Xpc0d8Vij/HsCEN gTMZgvEEOCFQtFaNlmjYZ/UUCay70bbLlPpKV85hgL8Em9sdn+sM/Tn+iLxzEH7LvsZP WXfJN2fsVrhNF9xMPvajwBbse6Weh4brFWjSONmgXMsBT3rF4uFvl7vM51xf1fIcp2uA OILqsTyU9xe5odi0i7f2HWVctvzommDPsqsgvp1Jrbxi9KT2tvL0/KlpBdYOFTnal7zz nyqqQyIt1l1RgJfyfYdjK4kxZjwsmF5lHLf/cx2uhtcTSjj02YuxeflYD75VfTTCiURU zcCA== X-Gm-Message-State: AOJu0YzooSrdLH4EAOrwB/armygCXWVGZyWdSBIgifOVP3bEcOL20FLG RbcKRquJAZzRzkWhGveEazauT2GD6KPTg+5SmXKQ/CW5DbivNtChfMMERQmHqQ== X-Gm-Gg: ASbGncssHKuigc9qoDmDZ16N0N7MzyUO9G7Zd33qCZH6w1XEssXC3cmH/Foa+snw48w oy4mzkuijcXhfRaYhwoj/DldFA9DlR/OTP1e05Bi3e1Y42fT6C4IOp1KgFWAHVAtz9Y22V81K/T qN0Sb4ewHXiVeIl2DrwYhinLYF6p53/q+xzssusMVdnpQt8muheABDDUL11bIXM33Q+T6Idn9z3 nlC2k5gR8AgMcrYjJT6Dp+5tmmY7yumCLcmC3rmR02JjgW7y/j2H516Nb5nP7Vrx8ZLd58DQi5O K+RO2YJX+XeDsfeg5lGWy5Oz7ZwuGQw7tgEO/PmHPtOFDz7EBqsKhNDgHCKBa/fR2sGvh770aWH ewWZCXQ/AImH4xh8pr/ZcGreStcWx8fgisztU+WBXAxif18VfSg0LFmPV9eI5/tBCFK5LlHiphG w= X-Google-Smtp-Source: AGHT+IGsbPdR6KaXH7Mafte3LryYSzqU+JPl1qAHSj/aQgPyW6UwEJYHUinjAicNft+U2Fw8VOR1Aw== X-Received: by 2002:a05:6808:148b:b0:44d:ad7e:384b with SMTP id 5614622812f47-44fed1f50b8mr3707738b6e.22.1762446422110; Thu, 06 Nov 2025 08:27:02 -0800 (PST) From: Praveen K Paladugu To: devel@lists.libvirt.org Subject: [PATCH v3 1/2] qemu: Introduce query-accelerators cap Date: Thu, 6 Nov 2025 10:26:53 -0600 Message-ID: <20251106162654.13903-2-praveenkpaladugu@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251106162654.13903-1-praveenkpaladugu@gmail.com> References: <20251106162654.13903-1-praveenkpaladugu@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: KQM4BE7MDWLSFYCCT63OEVK332A4V7JA X-Message-ID-Hash: KQM4BE7MDWLSFYCCT63OEVK332A4V7JA X-MailFrom: praveenkpaladugu@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 CC: wei.liu@kernel.org 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: 1762447393882158500 Content-Type: text/plain; charset="utf-8" From: Praveen K Paladugu Introduce query-accelerators capability which is a generic way to query the accelerators supported by qemu. Signed-off-by: Praveen K Paladugu Reviewed-by: Michal Privoznik --- src/qemu/qemu_capabilities.c | 2 ++ src/qemu/qemu_capabilities.h | 1 + tests/qemucapabilitiesdata/caps_10.2.0_x86_64.xml | 1 + 3 files changed, 4 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index c6d312447a..b0d4e76572 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -747,6 +747,7 @@ VIR_ENUM_IMPL(virQEMUCaps, /* 485 */ "acpi-generic-initiator", /* QEMU_CAPS_ACPI_GENERIC_INITIATO= R */ "disk-timed-stats", /* QEMU_CAPS_DISK_TIMED_STATS */ + "query-accelerators", /* QEMU_CAPS_QUERY_ACCELERATORS */ ); =20 =20 @@ -1262,6 +1263,7 @@ struct virQEMUCapsStringFlags virQEMUCapsCommands[] = =3D { { "display-reload", QEMU_CAPS_DISPLAY_RELOAD }, { "blockdev-set-active", QEMU_CAPS_BLOCKDEV_SET_ACTIVE }, { "qom-list-get", QEMU_CAPS_QOM_LIST_GET }, + { "query-accelerators", QEMU_CAPS_QUERY_ACCELERATORS }, }; =20 struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] =3D { diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 3ca0b419fe..efbef2acef 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -728,6 +728,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for = syntax-check */ /* 485 */ QEMU_CAPS_ACPI_GENERIC_INITIATOR, /* -object acpi-generic-initiator */ QEMU_CAPS_DISK_TIMED_STATS, /* timed stats support ('stats-intervals' = property of disk frontends) */ + QEMU_CAPS_QUERY_ACCELERATORS, /* query-accelerators command */ =20 QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_10.2.0_x86_64.xml b/tests/qemu= capabilitiesdata/caps_10.2.0_x86_64.xml index 3d83a278c8..371680778c 100644 --- a/tests/qemucapabilitiesdata/caps_10.2.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_10.2.0_x86_64.xml @@ -214,6 +214,7 @@ + 10001050 43100287 v10.1.0-1969-g53b41bb789 --=20 2.51.0 From nobody Fri Nov 21 10:03:41 2025 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=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=1762447468; cv=none; d=zohomail.com; s=zohoarc; b=kICcP4cO8JoEe+ROgJX9+kjXjg4+/Q98K8pwPH9bzJl5McveYeDnQ+dwsASzXowwja48bg0LIcetUxdYyr+Z0pfH92D777wm19fIByEgtDvCGT9gRJ3NHRwYpdrWa3r9l5FyZGApzzYyeCn0n/cipnDklR6dffOc39dk2s/NEsc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1762447468; h=Content-Transfer-Encoding:Cc:Cc: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; bh=c8qDB5uczLSAiTvTsBlwJqUNLze6HPwu7eI74VhVp7M=; b=i4HV35GD+VEDo3gLPHbjLGKnzvVkbFFk5YWI807d2lgG/963rmNz28XX16JNtHKeqxMkOnqMd+jCeCxTDzegrygfV7w2bjfPKDDnwPmwpKBiV9v8o97yXMKGTvWPAhReS0JI84DplnBx6w0f3X1p7hiLDAC6So1F82X14MIt0F4= 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 1762447468267368.5701814319847; Thu, 6 Nov 2025 08:44:28 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 54D2F3F831; Thu, 6 Nov 2025 11:44:23 -0500 (EST) Received: from [172.19.199.29] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 977494426D; Thu, 6 Nov 2025 11:41:45 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 364003F898; Thu, 6 Nov 2025 11:41:27 -0500 (EST) Received: from mail-ot1-f42.google.com (mail-ot1-f42.google.com [209.85.210.42]) (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 2FE4443EDA for ; Thu, 6 Nov 2025 11:27:04 -0500 (EST) Received: by mail-ot1-f42.google.com with SMTP id 46e09a7af769-7c6ce4f65f7so618930a34.0 for ; Thu, 06 Nov 2025 08:27:04 -0800 (PST) Received: from home ([72.191.74.189]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-656c57d5928sm1026998eaf.13.2025.11.06.08.27.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Nov 2025 08:27:02 -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=-5.3 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_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=gmail.com; s=20230601; t=1762446423; x=1763051223; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=c8qDB5uczLSAiTvTsBlwJqUNLze6HPwu7eI74VhVp7M=; b=bNzn/zeDf85n3GgWw90NOQSpg9cxqmNmZootebkx2WOu5JUHS9850Tc6Taxwy9FbGO DlqKzMs71c+GAWxhd5Vt2d4ATaIM3iXHsx++g1D7x7xNfkUaE0+zW8dqi4L2xZEaS611 AUhmy+xS+ZF5gVaBGW5YqYLIuC8x0ao7q5n9VjToUGKlx4vOcrjZVqI+I7L3E9YDD5WU md0u+ExDyx7L7lJB4Ni5HN4KcL9Z9w/+diYfdTi1POQ7SoG/ryliub35Z0dCErnP7m3M dyE0CV5XpEb7/SGBLZSU4QgMfS+bkm+KMEeqZ+pp59BBp7R44RZTFEKsHTiBrvfErup4 iQaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762446423; x=1763051223; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=c8qDB5uczLSAiTvTsBlwJqUNLze6HPwu7eI74VhVp7M=; b=qzm8coZ4qRfIAyqiOEthUzqXSwosZMVE39NEMPH+YsB2GB2FdYR2pP87To4yEekcPu Uj6g8FNSh0KUaBXyvrB8ScvZ4gZMYvS34PXXh+2vFbiw3UvvTAzHeXS162k/WFMRe6Li gLFO27UBGb7JB+ehk4x3om67BmnNm+EbO3lgehkAEZfmAbbRA2kj0l9N6QIgmvPonnYJ bFR7OjIchF0KVhkJqJsd2vmnu2LWYidEtqfBaRWacYVEfX13C6No0y94zWisG7+2Mz/6 z6lvFyjLTE0Z96YoIZpDVyZkQnpLGi3WH1IjsIIBP/Ce1DeY0pc9LvEfkKzPx76nBfV2 tGmg== X-Gm-Message-State: AOJu0YwRPhbI/5hnEx9DNNhK3GhCpyggQcEhKAzf/6AfPUc/p4i/NjNM fslLOT7F4Gzmbwy4qkj4d6/1vZb3VcjtlsFEtofHuYj02pTURuOlm2S1XpzEAg== X-Gm-Gg: ASbGncslWe9fpvqzhfWLdty/gAPBmPVEnCsP04lAtEOSX1Ti7d9SPeQG31Z61L3/wrh zffATZR/1v4BbT2pBgNXqvnHmLzudWn9dM3Tcn1V4G2NCBe9vvHylMyvhUqw6MywgUWMN0b48lx N74OBBHptmebfyeuT9MmhMsQMh8p79xStj0f4N8XCRbXdSsULqU2U55HIvrhWShXTkgJJBQzgKG wv1jeKsPx+ZxgJ6w1hIQaZHs+4R5KhzdSp8Pr5f7qWkvqvWvXh+oFYEhRv6CVGf9FPxud4ARpyP 7+TGLsu6sMkiKldzy7pST6i39rKjeg2fXVhjLZdeOZ9RV1hnuDwrnDaSrz+tBZxWK4bLjt6I6qR vcAIfcXgJHuUZQCMbrNLS8VznaZLWWkhEjQWruv+tNLfj0cD//qjCDwKVyOiktgNkukziq1AGwL Y= X-Google-Smtp-Source: AGHT+IHoM4WrIaDXnWNO5/+YAZ3kVZyY/TflPmFUYPyfNhoUdTOcHIp76NHZFFC4UQ64kiEk3Wty8A== X-Received: by 2002:a05:6808:219d:b0:44b:1f75:def3 with SMTP id 5614622812f47-44fed367001mr3487513b6e.54.1762446423240; Thu, 06 Nov 2025 08:27:03 -0800 (PST) From: Praveen K Paladugu To: devel@lists.libvirt.org Subject: [PATCH v3 2/2] qemu: Use query-accelerators to query accelerators Date: Thu, 6 Nov 2025 10:26:54 -0600 Message-ID: <20251106162654.13903-3-praveenkpaladugu@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251106162654.13903-1-praveenkpaladugu@gmail.com> References: <20251106162654.13903-1-praveenkpaladugu@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: LF2C44IDV64MWJYDQXU5TP5LTVY5SBQP X-Message-ID-Hash: LF2C44IDV64MWJYDQXU5TP5LTVY5SBQP X-MailFrom: praveenkpaladugu@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 CC: wei.liu@kernel.org 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: 1762447470269158500 Content-Type: text/plain; charset="utf-8" From: Praveen K Paladugu Use the `query-accelerators` command to generically query the enabled acclerator. Below is an example invocation in Qemu: { "execute": "query-accelerators"} "return": {"enabled": "kvm", "present": ["kvm", "mshv", "qtest", "tcg", "= xen"]}} "enabled" here indicates "kvm" is the enabled accelertor. If query-accelerators command is not available, fallback to existing mechnisms for querying kvm and hvf capabilities. Signed-off-by: Praveen K Paladugu Reviewed-by: Michal Privoznik --- src/qemu/qemu_capabilities.c | 38 ++++++++++++++++--- src/qemu/qemu_monitor.c | 9 +++++ src/qemu/qemu_monitor.h | 4 ++ src/qemu/qemu_monitor_json.c | 23 +++++++++++ src/qemu/qemu_monitor_json.h | 5 +++ .../caps_10.2.0_x86_64.replies | 11 ++++-- 6 files changed, 82 insertions(+), 8 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index b0d4e76572..38e1913d49 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3466,6 +3466,29 @@ virQEMUCapsProbeQMPKVMState(virQEMUCaps *qemuCaps, return 0; } =20 +static int +virQEMUCapsProbeAccels(virQEMUCaps *qemuCaps, + qemuMonitor *mon) +{ + g_autofree char *enabled =3D NULL; + + if (qemuMonitorGetAccelerators(mon, &enabled) < 0) + return -1; + + if (!enabled) { + return 0; + } + + if (STREQ(enabled, "tcg")) + virQEMUCapsSet(qemuCaps, QEMU_CAPS_TCG); + else if (STREQ(enabled, "hvf")) + virQEMUCapsSet(qemuCaps, QEMU_CAPS_HVF); + else if (STREQ(enabled, "kvm")) + virQEMUCapsSet(qemuCaps, QEMU_CAPS_KVM); + + return 0; +} + #ifdef __APPLE__ bool virQEMUCapsProbeHVF(virQEMUCaps *qemuCaps) @@ -5781,12 +5804,17 @@ virQEMUCapsInitQMPMonitor(virQEMUCaps *qemuCaps, if (virQEMUCapsProbeQMPSchemaCapabilities(qemuCaps, mon) < 0) return -1; =20 - /* Some capabilities may differ depending on KVM state */ - if (virQEMUCapsProbeQMPKVMState(qemuCaps, mon) < 0) - return -1; + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_QUERY_ACCELERATORS)) { + if (virQEMUCapsProbeAccels(qemuCaps, mon) < 0) + return -1; + } else { + /* Some capabilities may differ depending on KVM state */ + if (virQEMUCapsProbeQMPKVMState(qemuCaps, mon) < 0) + return -1; =20 - if (virQEMUCapsProbeHVF(qemuCaps)) - virQEMUCapsSet(qemuCaps, QEMU_CAPS_HVF); + if (virQEMUCapsProbeHVF(qemuCaps)) + virQEMUCapsSet(qemuCaps, QEMU_CAPS_HVF); + } =20 type =3D virQEMUCapsGetVirtType(qemuCaps); accel =3D virQEMUCapsGetAccel(qemuCaps, type); diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index f61da140ea..f2df59d12d 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -3446,6 +3446,15 @@ qemuMonitorGetKVMState(qemuMonitor *mon, return qemuMonitorJSONGetKVMState(mon, enabled, present); } =20 +int +qemuMonitorGetAccelerators(qemuMonitor *mon, + char **enabled) +{ + QEMU_CHECK_MONITOR(mon); + + return qemuMonitorJSONGetAccelerators(mon, enabled); +} + =20 int qemuMonitorGetObjectTypes(qemuMonitor *mon, diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index 83d702a96c..dd038f2775 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -1477,6 +1477,10 @@ qemuMonitorGetKVMState(qemuMonitor *mon, bool *enabled, bool *present); =20 +int +qemuMonitorGetAccelerators(qemuMonitor *mon, + char **enabled); + int qemuMonitorGetObjectTypes(qemuMonitor *mon, char ***types); diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index c7d291a201..12d8b11e11 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -5675,6 +5675,29 @@ qemuMonitorJSONGetKVMState(qemuMonitor *mon, return 0; } =20 +int +qemuMonitorJSONGetAccelerators(qemuMonitor *mon, char **enabled) +{ + g_autoptr(virJSONValue) cmd =3D NULL; + g_autoptr(virJSONValue) reply =3D NULL; + virJSONValue *data; + + *enabled =3D NULL; + + if (!(cmd =3D qemuMonitorJSONMakeCommand("query-accelerators", NULL))) + return -1; + + if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0) + return -1; + + if (!(data =3D qemuMonitorJSONGetReply(cmd, reply, VIR_JSON_TYPE_OBJEC= T))) + return -1; + + *enabled =3D g_strdup(virJSONValueObjectGetString(data, "enabled")); + + return 0; +} + =20 int qemuMonitorJSONGetObjectTypes(qemuMonitor *mon, diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h index f20830532d..db9160eb68 100644 --- a/src/qemu/qemu_monitor_json.h +++ b/src/qemu/qemu_monitor_json.h @@ -451,6 +451,11 @@ qemuMonitorJSONGetKVMState(qemuMonitor *mon, bool *present) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3); =20 +int +qemuMonitorJSONGetAccelerators(qemuMonitor *mon, + char **enabled) + ATTRIBUTE_NONNULL(2); + int qemuMonitorJSONGetObjectTypes(qemuMonitor *mon, char ***types) diff --git a/tests/qemucapabilitiesdata/caps_10.2.0_x86_64.replies b/tests/= qemucapabilitiesdata/caps_10.2.0_x86_64.replies index 6c14a0f9f6..3b6d4e0575 100644 --- a/tests/qemucapabilitiesdata/caps_10.2.0_x86_64.replies +++ b/tests/qemucapabilitiesdata/caps_10.2.0_x86_64.replies @@ -24947,14 +24947,19 @@ } =20 { - "execute": "query-kvm", + "execute": "query-accelerators", "id": "libvirt-5" } =20 { "return": { - "enabled": true, - "present": true + "enabled": "kvm", + "present": [ + "kvm", + "mshv", + "qtest", + "tcg" + ] }, "id": "libvirt-5" } --=20 2.51.0