From nobody Fri Nov 21 10:08:31 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=reject dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1763678331; cv=none; d=zohomail.com; s=zohoarc; b=V9+sn1GfpJHmD0f5QyQk4ubohcgHBEPDVkKcCDL7w+ZaM1ARsP5H0Yht9Dj5tWBU4jTYR/dleNFw2oitiCzQQqLmjeuwcB6bGV9hB/Xk+BKftT1+CEaGe2F5UzE390RlIUBOh02qmQaMzBzHSgdItycP6kTQ53ymTGqi+wJr9Q0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1763678331; 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=Uk/N+4wprFXyd+F7m5yUoM4HNXcgm39vy9ON75zJXmw=; b=O8l9+A+95uzx7Vn3eXvIPDMYSrDNRv3JTuUd4aDpWeQxPH75UhIbPZ+Mp/WlPbKeAqXvh/4HkwvcgsjKhcyQ+Z0jhptrjpdvYE6L6hXY8H9vCGAbhm/+qwkqlM05r4ihvvjMrxZkmWR89Yk5ldYChx07wL5QCMi4F0NzbkeR7A0= 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=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1763678331885113.90876772535603; Thu, 20 Nov 2025 14:38:51 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 40706418AC; Thu, 20 Nov 2025 17:38:51 -0500 (EST) Received: from [172.19.199.53] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id E502544219; Thu, 20 Nov 2025 17:37:01 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id D14FF41A34; Thu, 20 Nov 2025 17:35:05 -0500 (EST) Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (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 5C5754412A for ; Thu, 20 Nov 2025 17:35:00 -0500 (EST) Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5AKLRMiq003872 for ; Thu, 20 Nov 2025 22:35:00 GMT Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4aejju7ehp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 20 Nov 2025 22:34:59 +0000 (GMT) Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 5AKJfeTF010411 for ; Thu, 20 Nov 2025 22:34:58 GMT Received: from smtprelay03.dal12v.mail.ibm.com ([172.16.1.5]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4af3ush5q4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 20 Nov 2025 22:34:58 +0000 Received: from smtpav01.dal12v.mail.ibm.com (smtpav01.dal12v.mail.ibm.com [10.241.53.100]) by smtprelay03.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 5AKMYwb719530242 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 20 Nov 2025 22:34:58 GMT Received: from smtpav01.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 859AD58058 for ; Thu, 20 Nov 2025 22:34:58 +0000 (GMT) Received: from smtpav01.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 56DFD5806D for ; Thu, 20 Nov 2025 22:34:58 +0000 (GMT) Received: from li-d664314c-3171-11b2-a85c-fa8047ef35bd.pok.ibm.com (unknown [9.12.68.85]) by smtpav01.dal12v.mail.ibm.com (Postfix) with ESMTP for ; Thu, 20 Nov 2025 22:34:58 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,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=ibm.com; h= content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=Uk/N+4wprFXyd+F7m 5yUoM4HNXcgm39vy9ON75zJXmw=; b=HMRFQ9OR0DyMS24MsCYf5FToyl1V75b7t CiF4bzos+eN3nRezEN+rG1wWtA5WBH4l2Q1hvwxaDeBRYENH6s8IUXSn+Gn5Edi7 eEiw7T9txk+jLsCNRPPoKkdkCDjCItlF0VBWIQjQ/w5WOV7bK2TF6FQO9NQD6bSo WM1GKd8v56nmjHH848dxatfozLvq2lQyJUuutNeLuJgoMddoeZqIkeeFbSGSCQKr Cd36aKy0UEEzjXd5Vk8bQ+9KHl9qJfWIW1fPHmRQXjbk2Zl1zga1g0cMLZHrkhe0 gxhEcP0/M+vpc6hLOVNWuE4uk57ta8RaJnNRBmVeIPAGOU9l/K8Wg== From: Collin Walling To: devel@lists.libvirt.org Subject: [PATCH v1 2/4] qemu: refactor load/format of deprecated features Date: Thu, 20 Nov 2025 17:34:41 -0500 Message-ID: <20251120223443.45446-3-walling@linux.ibm.com> X-Mailer: git-send-email 2.51.1 In-Reply-To: <20251120223443.45446-1-walling@linux.ibm.com> References: <20251120223443.45446-1-walling@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-GUID: zYos5IIHSX9xCGMheyFWQAf5QU_DpX4r X-Proofpoint-ORIG-GUID: zYos5IIHSX9xCGMheyFWQAf5QU_DpX4r X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTE1MDAzMiBTYWx0ZWRfX+GU12G1bEqg/ h9t1pNW3IMCOLz+mFv+p7HV5l08CQ0ae73zkJzEuj+rWidbS9Mu+k26R6qzRb+HZjo3ksee3u5Z 84oUfUaeBtIm+Ew5kU7uczl+FRDZ1SZ0KvzO5E87OhcSem2NmyvK2nmJ1SaE7ZJDoF/5uZ5Ihhe KwPTwT+SNlZqg+vNF6fgWgRpd1SZcMxLbroR47vlSl4tUlxoy8REUNx5zfxZxTzSEPZ+smMahGU u1rojNDWoZzlNU95UdUOy2UO0V5Iq+l5LUEfSiW/h1yc05/74VJ2dUEEVBC+6kE0jgBDwAy/4eS Qj2Jrm08+cPpIO5s5HbCwKU9kdK0ecaL53RiB4gkCV9ENoLptGnLZJNfWqWERF3ZoUblHJyHUv6 +XOFxVXY0jT4LRcsUclv6EVJYacWyw== X-Authority-Analysis: v=2.4 cv=SvOdKfO0 c=1 sm=1 tr=0 ts=691f9793 cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=6UeiqGixMTsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VnNF1IyMAAAA:8 a=ybTZXA7WAAAA:8 a=pyy5daH9qZ21Xrr4Q9MA:9 a=HcEtEu571YGEX4aK26Fo:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-20_09,2025-11-20_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 lowpriorityscore=0 spamscore=0 clxscore=1015 suspectscore=0 phishscore=0 adultscore=0 bulkscore=0 impostorscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510240000 definitions=main-2511150032 Message-ID-Hash: 34PPJUPQBKBRPFBKF7LZVPE6BDWPBTGF X-Message-ID-Hash: 34PPJUPQBKBRPFBKF7LZVPE6BDWPBTGF X-MailFrom: walling@linux.ibm.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 @ibm.com) X-ZM-MESSAGEID: 1763678332207018900 Content-Type: text/plain; charset="utf-8" Signed-off-by: Collin Walling --- src/qemu/qemu_capabilities.c | 81 ++++++++++++++++++++++++------------ 1 file changed, 54 insertions(+), 27 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index bcc7c5b602..3243ba8ad3 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -4106,13 +4106,40 @@ virQEMUCapsSetCPUModelInfo(virQEMUCaps *qemuCaps, } =20 =20 +static int +virQEMUCapsParseHostCPUModelInfoDepFeats(xmlXPathContextPtr ctxt, + GStrv *dep_props, + const char *xpath) +{ + xmlNodePtr node; + size_t i; + + if ((node =3D virXPathNode(xpath, ctxt))) { + g_autoptr(GPtrArray) props =3D virXMLNodeGetSubelementList(node, N= ULL); + + *dep_props =3D g_new0(char *, props->len + 1); + + for (i =3D 0; i < props->len; i++) { + xmlNodePtr prop =3D g_ptr_array_index(props, i); + + if (!((*dep_props)[i] =3D virXMLPropString(prop, "name"))) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("missing 'name' attribute for a host CPU= model deprecated property in QEMU capabilities cache")); + return -1; + } + } + } + + return 0; +} + + static int virQEMUCapsLoadHostCPUModelInfo(virQEMUCapsAccel *caps, xmlXPathContextPtr ctxt, const char *typeStr) { xmlNodePtr hostCPUNode; - xmlNodePtr deprecated_props; g_autofree xmlNodePtr *nodes =3D NULL; VIR_XPATH_NODE_AUTORESTORE(ctxt) g_autoptr(qemuMonitorCPUModelInfo) hostCPU =3D NULL; @@ -4206,21 +4233,9 @@ virQEMUCapsLoadHostCPUModelInfo(virQEMUCapsAccel *ca= ps, } =20 ctxt->node =3D hostCPUNode; - - if ((deprecated_props =3D virXPathNode("./deprecatedFeatures", ctxt)))= { - g_autoptr(GPtrArray) props =3D virXMLNodeGetSubelementList(depreca= ted_props, NULL); - - hostCPU->full_dep_props =3D g_new0(char *, props->len + 1); - - for (i =3D 0; i < props->len; i++) { - xmlNodePtr prop =3D g_ptr_array_index(props, i); - - if (!(hostCPU->full_dep_props[i] =3D virXMLPropString(prop, "n= ame"))) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("missing 'name' attribute for a host CPU = model deprecated property in QEMU capabilities cache")); - return -1; - } - } + if (virQEMUCapsParseHostCPUModelInfoDepFeats(ctxt, &hostCPU->full_dep_= props, + "./deprecatedFeatures") < = 0) { + return -1; } =20 caps->hostCPU.info =3D g_steal_pointer(&hostCPU); @@ -4930,6 +4945,27 @@ virQEMUCapsLoadCache(virArch hostArch, } =20 =20 +static void +virQEMUCapsFormatHostCPUModelInfoDepFeats(virBuffer *buf, + GStrv props, + const char *xmlStr) +{ + size_t i; + + if (!props) + return; + + virBufferAsprintf(buf, "<%s>\n", xmlStr); + virBufferAdjustIndent(buf, 2); + + for (i =3D 0; i < g_strv_length(props); i++) + virBufferAsprintf(buf, "\n", props[i]); + + virBufferAdjustIndent(buf, -2); + virBufferAsprintf(buf, "\n", xmlStr); +} + + static void virQEMUCapsFormatHostCPUModelInfo(virQEMUCapsAccel *caps, virBuffer *buf, @@ -4979,17 +5015,8 @@ virQEMUCapsFormatHostCPUModelInfo(virQEMUCapsAccel *= caps, virBufferAddLit(buf, "/>\n"); } =20 - if (model->full_dep_props) { - virBufferAddLit(buf, "\n"); - virBufferAdjustIndent(buf, 2); - - for (i =3D 0; i < g_strv_length(model->full_dep_props); i++) - virBufferAsprintf(buf, "\n", - model->full_dep_props[i]); - - virBufferAdjustIndent(buf, -2); - virBufferAddLit(buf, "\n"); - } + virQEMUCapsFormatHostCPUModelInfoDepFeats(buf, model->full_dep_props, + "deprecatedFeatures"); =20 virBufferAdjustIndent(buf, -2); virBufferAddLit(buf, "\n"); --=20 2.51.1