From nobody Mon Sep 8 17:07:20 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=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=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1754986472803798.848120822533; Tue, 12 Aug 2025 01:14:32 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id CC2AE11C6; Tue, 12 Aug 2025 04:14:31 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 6397011C0; Tue, 12 Aug 2025 04:06:03 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 494E42A69; Thu, 7 Aug 2025 16:48:54 -0400 (EDT) Received: from mail-oa1-f51.google.com (mail-oa1-f51.google.com [209.85.160.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 976592A87 for ; Thu, 7 Aug 2025 16:48:53 -0400 (EDT) Received: by mail-oa1-f51.google.com with SMTP id 586e51a60fabf-2e95ab2704fso1265892fac.3 for ; Thu, 07 Aug 2025 13:48:53 -0700 (PDT) Received: from home ([2603:8081:c640:1::1003]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-742fe78add9sm1605484a34.17.2025.08.07.13.48.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Aug 2025 13:48:52 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754599733; x=1755204533; 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=lzBnwsVVg8ury9iezWHJZ6OoRgzwaSgrTZKPdc1xHss=; b=hYNQO+MIZeQw12WnG+UVDNouCbS2W5JcYD4d05nHs8VZcuwAtjqX6DxbiYcnY+npHm aMtNym87pFolW5KivOMT7rHfJPUPv8wZO7/yq9XDWRm8hsQXOC4JKi1HnykmZSrLtcg/ ddsif3tS4vODDSPUuw0PjxtKuGWjG44bqLFdwlV2nqz+wPRRM3+NeetxdmQJnH7UXJ5O wpZHbP8Sh1uvr3QJ3sZu48dJ8lzl20B+sKztwlZ0gvTjvQhavCPbgOMpI+VLdB1b+Zut PBzqfCBq4ErT+FnEoLKNZNSx5cPkgnymyBXKNXLJyj29MpTbG+0yAcv9pu7g+I5zQo4P Qe9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754599733; x=1755204533; 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=lzBnwsVVg8ury9iezWHJZ6OoRgzwaSgrTZKPdc1xHss=; b=AX1xEmt6FlyeAr3YGX3QSAbITiUh0/G/3z/84v6q2pJxpsio+bxMbaB0Cf2XYoftI/ 1vGE5bX4eKpr3aZYPddJ60WntbFJ2hLoWActSRi1qmr6DGFsFP4KE2SRdnx6assvV3Ot gzyCiJ/BLmZMvTVpCfvPkSrBBPr/tWwWqx54GFNi+EwKz/+DzjEWWMqTdjZ2YN6c1SYO MJf6A91NyENRZi7lTJhBgYxsZzDXbamwRqWnliV2bw9V97gVFrSeHHYs6NsK6YxC0Azz xElwyzeGhnfWET0TpBY7sbyfktHlV7n9NX/GvK1FOk5hcYC25KcZyqyJ44cTQa9t/3Ei z1hQ== X-Gm-Message-State: AOJu0YzSOygrQW7V/BxvK6HuvKyIXmIwOyt55yIBLNGPlbzwceH9cIw2 kmNqwkWsIUWCeyG2NmQKQUhvcmmcRQClL54uxH5s54RibpAk9QmMUaUlqJ1kFg== X-Gm-Gg: ASbGnctdNypjkdodPwheoXzczqLW6ZeJ91s0vtsQ8XxpjnB/vCAVAFmwnAYeL116tW8 X8ZbRxSUENZ76m/OBodPu1L0OBgFYVlp0kh5FdZKMsi4Zdx7NPPMaVeRNxX7AIqkwwNRTVBWktU z4Wf5buJdBelvJNo25CgLXRoAjpIIT8rWm2xs9yP7mwhz9dkRoTik4X2+Q6oVHoqqrTp7osEaSW b0QJIMWKIIi59zfvCpjMiEtEo8APyCUV42zbrD435ksz815cHc+tCa+E6tlgjGk3RLMWN2jmaBw LTlFPo/rJ32wJbD1aPbeE4X/SoVGsv7AMXUAuPToRwkwWGQ8bKR443iclER4wDinyAfu5s7jCvP BoLE= X-Google-Smtp-Source: AGHT+IE7Eq/GEVSVVp32S7UshB8Z4ZTorUWKcDa/5hUl3+BgU2fhpAVLkfAmv6wlaR7bJ7lIBpc2MQ== X-Received: by 2002:a05:6870:c0b:b0:2d6:2a40:fb9d with SMTP id 586e51a60fabf-30c2134be60mr459129fac.28.1754599732628; Thu, 07 Aug 2025 13:48:52 -0700 (PDT) From: Praveen K Paladugu To: devel@lists.libvirt.org Subject: [PATCH 2/4] qemu: probe mshv capabilities Date: Thu, 7 Aug 2025 15:48:41 -0500 Message-ID: <20250807204843.17902-3-praveenkpaladugu@gmail.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250807204843.17902-1-praveenkpaladugu@gmail.com> References: <20250807204843.17902-1-praveenkpaladugu@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: OAL3ZWIT7KFIPT5TAI2GIRNOXAWTH5CH X-Message-ID-Hash: OAL3ZWIT7KFIPT5TAI2GIRNOXAWTH5CH X-MailFrom: praveenkpaladugu@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: liuwe@microsoft.com X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1754986473287116600 Content-Type: text/plain; charset="utf-8" From: Praveen K Paladugu Probe mshv capabilities from qemu with QMP commands. Signed-off-by: Praveen K Paladugu Signed-off-by: Praveen K Paladugu --- src/qemu/qemu_capabilities.c | 31 ++++++++++++++++++++++++------- src/qemu/qemu_monitor.c | 9 +++++---- src/qemu/qemu_monitor.h | 8 +++++--- src/qemu/qemu_monitor_json.c | 13 +++++++------ src/qemu/qemu_monitor_json.h | 10 +++++----- 5 files changed, 46 insertions(+), 25 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 1e069eb0e5..02dbae8e00 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3473,17 +3473,31 @@ virQEMUCapsProbeQMPTPM(virQEMUCaps *qemuCaps, =20 =20 static int -virQEMUCapsProbeQMPKVMState(virQEMUCaps *qemuCaps, - qemuMonitor *mon) +virQEMUCapsProbeQMPHypervisorState(virQEMUCaps *qemuCaps, + qemuMonitor *mon, + virQEMUCapsFlags flag) { bool enabled =3D false; bool present =3D false; =20 - if (qemuMonitorGetKVMState(mon, &enabled, &present) < 0) - return -1; + if (flag =3D=3D QEMU_CAPS_KVM) { + if (qemuMonitorGetHypervisorState(mon, "query-kvm", + &enabled, &present) < 0) + return -1; + if (present && enabled) + virQEMUCapsSet(qemuCaps, QEMU_CAPS_KVM); + } else if (flag =3D=3D QEMU_CAPS_MSHV) { =20 - if (present && enabled) - virQEMUCapsSet(qemuCaps, QEMU_CAPS_KVM); + if (qemuMonitorGetHypervisorState(mon, "query-mshv", + &enabled, &present) < 0) + return -1; + if (present && enabled) + virQEMUCapsSet(qemuCaps, QEMU_CAPS_MSHV); + } else { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Invalid Hypervisor type specified for qemu")); + return -1; + } =20 return 0; } @@ -5792,7 +5806,10 @@ virQEMUCapsInitQMPMonitor(virQEMUCaps *qemuCaps, return -1; =20 /* Some capabilities may differ depending on KVM state */ - if (virQEMUCapsProbeQMPKVMState(qemuCaps, mon) < 0) + if (virQEMUCapsProbeQMPHypervisorState(qemuCaps, mon, QEMU_CAPS_KVM) <= 0) + return -1; + + if (virQEMUCapsProbeQMPHypervisorState(qemuCaps, mon, QEMU_CAPS_MSHV) = < 0) return -1; =20 if (virQEMUCapsProbeHVF(qemuCaps)) diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index c1fef8d5de..3d01844074 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -3423,15 +3423,16 @@ qemuMonitorGetCommandLineOptions(qemuMonitor *mon) =20 =20 int -qemuMonitorGetKVMState(qemuMonitor *mon, - bool *enabled, - bool *present) +qemuMonitorGetHypervisorState(qemuMonitor *mon, + const char *query_cmd, + bool *enabled, + bool *present) { VIR_DEBUG("enabled=3D%p present=3D%p", enabled, present); =20 QEMU_CHECK_MONITOR(mon); =20 - return qemuMonitorJSONGetKVMState(mon, enabled, present); + return qemuMonitorJSONGetHypervisorState(mon, query_cmd, enabled, pres= ent); } =20 =20 diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index 755f347e17..8bb0919a00 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -1220,9 +1220,11 @@ qemuMonitorCPUModelInfoCopy(const qemuMonitorCPUMode= lInfo *orig); =20 GHashTable *qemuMonitorGetCommandLineOptions(qemuMonitor *mon); =20 -int qemuMonitorGetKVMState(qemuMonitor *mon, - bool *enabled, - bool *present); +int +qemuMonitorGetHypervisorState(qemuMonitor *mon, + const char *query_cmd, + bool *enabled, + bool *present); =20 int qemuMonitorGetObjectTypes(qemuMonitor *mon, char ***types); diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 9f51421478..18ca124e46 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -5520,9 +5520,10 @@ qemuMonitorJSONGetCommandLineOptions(qemuMonitor *mo= n) } =20 =20 -int qemuMonitorJSONGetKVMState(qemuMonitor *mon, - bool *enabled, - bool *present) +int qemuMonitorJSONGetHypervisorState(qemuMonitor *mon, + const char *query_cmd, + bool *enabled, + bool *present) { g_autoptr(virJSONValue) cmd =3D NULL; g_autoptr(virJSONValue) reply =3D NULL; @@ -5531,7 +5532,7 @@ int qemuMonitorJSONGetKVMState(qemuMonitor *mon, /* Safe defaults */ *enabled =3D *present =3D false; =20 - if (!(cmd =3D qemuMonitorJSONMakeCommand("query-kvm", NULL))) + if (!(cmd =3D qemuMonitorJSONMakeCommand(query_cmd, NULL))) return -1; =20 if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0) @@ -5542,8 +5543,8 @@ int qemuMonitorJSONGetKVMState(qemuMonitor *mon, =20 if (virJSONValueObjectGetBoolean(data, "enabled", enabled) < 0 || virJSONValueObjectGetBoolean(data, "present", present) < 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("query-kvm replied unexpected data")); + virReportError(VIR_ERR_INTERNAL_ERROR, + _("%1$s replied unexpected data"), query_cmd); return -1; } =20 diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h index bd437f7938..2de17e3d75 100644 --- a/src/qemu/qemu_monitor_json.h +++ b/src/qemu/qemu_monitor_json.h @@ -451,11 +451,11 @@ qemuMonitorJSONGetCPUModelComparison(qemuMonitor *mon, GHashTable * qemuMonitorJSONGetCommandLineOptions(qemuMonitor *mon); =20 -int -qemuMonitorJSONGetKVMState(qemuMonitor *mon, - bool *enabled, - bool *present) - ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3); +int qemuMonitorJSONGetHypervisorState(qemuMonitor *mon, + const char *query_cmd, + bool *enabled, + bool *present) + ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4); =20 int qemuMonitorJSONGetObjectTypes(qemuMonitor *mon, --=20 2.50.1