From nobody Mon Sep 8 20:03:58 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1756998180; cv=none; d=zohomail.com; s=zohoarc; b=JglCkGPI98mhE91OJYSJnFuKjpdL1tU8d7N8YcQJ0dgg//I1BgNdtxuR3xy7pahAoDjtXhMQmSd3+eaB0Ogl0SkwRm9LHklA/Ql8ITuR6fHZBMJiGvK3RpGBdpY22SAsImvzg09FXnZWOKDYlEWQEJGv69qwp9JPs9ayGzLYUAM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756998180; 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=N8orOq8O2niZVJgL2/HF4FpO3zksp7LRtXA4YYl/KSU=; b=QV+CXfebl3VgRUWLSP//TE3adndcOxOyPoWPVWxe3OmgsdM5WSROBGKope1nW6ngSW5GKIHoLYmL0eZQZXhjkzUGAXZWVk81Fi+vvfn/NAQCdzWiNDPy9hXaF2hiIyoVHcSNUHE2iEg3sMwxOJYCp2624MOATKEUB0j98LCj214= 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 1756998179555124.476745118802; Thu, 4 Sep 2025 08:02:59 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 35F74443DF; Thu, 4 Sep 2025 11:02:58 -0400 (EDT) Received: from [172.19.199.3] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id AA1F8444E2; Thu, 4 Sep 2025 10:48:21 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id D58E8443BD; Thu, 4 Sep 2025 10:48:10 -0400 (EDT) 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 147B144386 for ; Thu, 4 Sep 2025 10:47:19 -0400 (EDT) Received: from mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-130-bG9kfoU-O8CHaJukr-xedw-1; Thu, 04 Sep 2025 10:47:17 -0400 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-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id A134419560B6 for ; Thu, 4 Sep 2025 14:47:16 +0000 (UTC) Received: from orkuz (unknown [10.43.3.115]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 2E2581954126 for ; Thu, 4 Sep 2025 14:47:15 +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=-1.5 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1756997238; 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=N8orOq8O2niZVJgL2/HF4FpO3zksp7LRtXA4YYl/KSU=; b=IcthvdLD3B2ShUmKDtITQETK7qhCQpbtHCntSz1ZXd0bp65155/kqd1feadr/VUPmNaNbI 6LrukS8x7qsRUG4KYWR5be1nZbs84On9YsSxR1NScRZ3BF/GAA82BVSWrsVtoYCKRpzBxW sOoBL6iTLxF0+oj0XjB9fYO3jvz6Dbc= X-MC-Unique: bG9kfoU-O8CHaJukr-xedw-1 X-Mimecast-MFC-AGG-ID: bG9kfoU-O8CHaJukr-xedw_1756997236 To: devel@lists.libvirt.org Subject: [PATCH 05/14] qemu: Move feature filtering to qemuMonitorJSONGetCPUProperties Date: Thu, 4 Sep 2025 16:46:53 +0200 Message-ID: <43f2623637d3d73e247bb11a6f2595c59641719d.1756996033.git.jdenemar@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: x3HhISbVG8hLfYmBOP4zwueRIB-DTkH1UBS5e6bxmxQ_1756997236 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: V2OW4YKJMSWJBUPXOBWDWVSYFHXHWOD2 X-Message-ID-Hash: V2OW4YKJMSWJBUPXOBWDWVSYFHXHWOD2 X-MailFrom: jdenemar@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: Jiri Denemark via Devel Reply-To: Jiri Denemark X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1756998185995124100 Content-Type: text/plain; charset="utf-8" From: Jiri Denemark When getting enabled CPU features (qemuMonitorJSONGetCPUData), we used to call qemuMonitorJSONGetCPUProperties to get the list of all boolean properties and then queried their values and ignored properties that were not true. By moving the filtering inside qemuMonitorJSONGetCPUProperties we don't need to even add disabled features to any list and also get ready for better QMP interface. Signed-off-by: Jiri Denemark Reviewed-by: Peter Krempa --- src/qemu/qemu_monitor_json.c | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 0c78115e9d..be7ad21eca 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -6595,14 +6595,29 @@ qemuMonitorJSONGetDeviceAliases(qemuMonitor *mon, } =20 =20 +struct _qemuMonitorJSONCPUPropsFilterData { + qemuMonitor *mon; + const char *cpuQOMPath; +}; + static int -qemuMonitorJSONCPUPropsFilter(const char *name G_GNUC_UNUSED, +qemuMonitorJSONCPUPropsFilter(const char *name, virJSONValue *propData, - void *data G_GNUC_UNUSED) + void *opaque) { + qemuMonitorJSONObjectProperty prop =3D { .type =3D QEMU_MONITOR_OBJECT= _PROPERTY_BOOLEAN }; + struct _qemuMonitorJSONCPUPropsFilterData *data =3D opaque; + if (STRNEQ_NULLABLE(virJSONValueObjectGetString(propData, "type"), "bo= ol")) return 1; =20 + if (qemuMonitorJSONGetObjectProperty(data->mon, data->cpuQOMPath, + name, &prop) < 0) + return -1; + + if (!prop.val.b) + return 1; + return 0; } =20 @@ -6614,6 +6629,10 @@ qemuMonitorJSONGetCPUProperties(qemuMonitor *mon, { g_autoptr(virJSONValue) cmd =3D NULL; g_autoptr(virJSONValue) reply =3D NULL; + struct _qemuMonitorJSONCPUPropsFilterData filterData =3D { + .mon =3D mon, + .cpuQOMPath =3D cpuQOMPath, + }; =20 *props =3D NULL; =20 @@ -6629,7 +6648,7 @@ qemuMonitorJSONGetCPUProperties(qemuMonitor *mon, return 0; =20 return qemuMonitorJSONParsePropsList(cmd, reply, - qemuMonitorJSONCPUPropsFilter, NU= LL, + qemuMonitorJSONCPUPropsFilter, &f= ilterData, props); } =20 @@ -6640,7 +6659,6 @@ qemuMonitorJSONGetCPUData(qemuMonitor *mon, qemuMonitorCPUFeatureTranslationCallback transla= te, virCPUData *data) { - qemuMonitorJSONObjectProperty prop =3D { .type =3D QEMU_MONITOR_OBJECT= _PROPERTY_BOOLEAN }; g_auto(GStrv) props =3D NULL; char **p; =20 @@ -6650,12 +6668,6 @@ qemuMonitorJSONGetCPUData(qemuMonitor *mon, for (p =3D props; p && *p; p++) { const char *name =3D *p; =20 - if (qemuMonitorJSONGetObjectProperty(mon, cpuQOMPath, name, &prop)= < 0) - return -1; - - if (!prop.val.b) - continue; - if (translate) name =3D translate(data->arch, name); =20 --=20 2.51.0