From nobody Sat Feb 7 21:30:24 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; 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=reject dis=none) header.from=linux.ibm.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1734390325390242.12474158598343; Mon, 16 Dec 2024 15:05:25 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id 685771577; Mon, 16 Dec 2024 18:05:24 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id B214B155C; Mon, 16 Dec 2024 18:04:24 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id 0758114A8; Mon, 16 Dec 2024 18:04:19 -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 877B314AC for ; Mon, 16 Dec 2024 18:04:18 -0500 (EST) Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 4BGHQnEV027188; Mon, 16 Dec 2024 23:04:18 GMT Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 43jgd2by7b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 16 Dec 2024 23:04:17 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 4BGL7lTV014323; Mon, 16 Dec 2024 23:04:17 GMT Received: from smtprelay06.dal12v.mail.ibm.com ([172.16.1.8]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 43hmqy081c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 16 Dec 2024 23:04:17 +0000 Received: from smtpav04.wdc07v.mail.ibm.com (smtpav04.wdc07v.mail.ibm.com [10.39.53.231]) by smtprelay06.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 4BGN4Fn219464874 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Dec 2024 23:04:16 GMT Received: from smtpav04.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D81B85808A; Mon, 16 Dec 2024 23:04:15 +0000 (GMT) Received: from smtpav04.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 687B958088; Mon, 16 Dec 2024 23:04:15 +0000 (GMT) Received: from li-d664314c-3171-11b2-a85c-fa8047ef35bd.ibm.com.com (unknown [9.67.33.76]) by smtpav04.wdc07v.mail.ibm.com (Postfix) with ESMTP; Mon, 16 Dec 2024 23:04:15 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2,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=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=IJQ5Vo7H/drOXsyng W4qhuDs8p0twm6y2A9+v+bmIa8=; b=rA4QtAP1ilQY0zYgxSmiMuPhmJtkl6RND qBpiMXCsrgwelWjNvXVACn7+yAmQyPLZNnYl0G6UeKrIHuisjkVFu6CrpH/fSsN5 qaJ6EzuP3lXZija/jjOh8wyHFffdJQlli7ZHe44qI4nmwFyBR2yeDqskEQ7meZ1X Bmx4bCxhOxIvijcdE4Xjfig0p0Jk2gCaMR4OstdL/hOBcONQdOkIzWHAUZSFwRmF 4rS6eYThucLRxYNOFgWppoA1Uv9Eq69M6MH5Kc1fJpfgVJ6KGS/5/t0HsmsmOAPU s8sVg9pDn8liWUWkDjq6q5KO1Jo2aggdLvedG1kfgc0y64iQkC/Hw== From: Collin Walling To: devel@lists.libvirt.org Subject: [PATCH v3 1/7] qemuMonitorJSONGetCPUModelExpansion: refactor parsing functions Date: Mon, 16 Dec 2024 18:03:52 -0500 Message-ID: <20241216230358.60940-2-walling@linux.ibm.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241216230358.60940-1-walling@linux.ibm.com> References: <20241216230358.60940-1-walling@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: ETa1j5nhKXowmrjmafWzVAXGsa8hGvTg X-Proofpoint-GUID: ETa1j5nhKXowmrjmafWzVAXGsa8hGvTg X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1051,Hydra:6.0.680,FMLib:17.12.62.30 definitions=2024-10-15_01,2024-10-11_01,2024-09-30_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 suspectscore=0 lowpriorityscore=0 adultscore=0 clxscore=1015 mlxlogscore=999 priorityscore=1501 malwarescore=0 impostorscore=0 mlxscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2411120000 definitions=main-2412160188 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: D2SC4NBM5D6OANTKYXKWLGTJERZ4AO7Q X-Message-ID-Hash: D2SC4NBM5D6OANTKYXKWLGTJERZ4AO7Q X-MailFrom: walling@linux.ibm.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: fiuczy@linux.ibm.com, jdenemar@redhat.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: 1734390326826116600 Content-Type: text/plain; charset="utf-8" Refactor the CPU Model parsing functions within qemuMonitorJSONGetCPUModelExpansion. The new functions, qemuMonitorJSONParseCPUModelExpansionData and qemuMonitorJSONParseCPUModelExpansion invoke the functions they replace and leave room for a subsequent patch to handle parsing the (optional) deprecated_props field resulting from the command. Signed-off-by: Collin Walling Reviewed-by: Boris Fiuczynski Reviewed-by: Jiri Denemark --- src/qemu/qemu_monitor_json.c | 46 ++++++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 1b4288b744..fa8c5b1aea 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -5100,6 +5100,37 @@ qemuMonitorJSONParseCPUModel(const char *cpu_name, } =20 =20 +static int +qemuMonitorJSONParseCPUModelExpansionData(virJSONValue *data, + bool fail_no_props, + virJSONValue **cpu_model, + virJSONValue **cpu_props, + const char **cpu_name) +{ + if (qemuMonitorJSONParseCPUModelData(data, "query-cpu-model-expansion", + fail_no_props, cpu_model, cpu_pro= ps, + cpu_name) < 0) + return -1; + + return 0; +} + + +static int +qemuMonitorJSONParseCPUModelExpansion(const char *cpu_name, + virJSONValue *cpu_props, + qemuMonitorCPUModelInfo **model_info) +{ + g_autoptr(qemuMonitorCPUModelInfo) expanded_model =3D NULL; + + if (qemuMonitorJSONParseCPUModel(cpu_name, cpu_props, &expanded_model)= < 0) + return -1; + + *model_info =3D g_steal_pointer(&expanded_model); + return 0; +} + + static int qemuMonitorJSONQueryCPUModelExpansionOne(qemuMonitor *mon, qemuMonitorCPUModelExpansionType = type, @@ -5170,9 +5201,9 @@ qemuMonitorJSONGetCPUModelExpansion(qemuMonitor *mon, if ((rc =3D qemuMonitorJSONQueryCPUModelExpansionOne(mon, type, &model= , &data)) <=3D 0) return rc; =20 - if (qemuMonitorJSONParseCPUModelData(data, "query-cpu-model-expansion", - fail_no_props, &cpu_model, &cpu_p= rops, - &cpu_name) < 0) + if (qemuMonitorJSONParseCPUModelExpansionData(data, fail_no_props, + &cpu_model, &cpu_props, + &cpu_name) < 0) return -1; =20 /* QEMU_MONITOR_CPU_MODEL_EXPANSION_STATIC_FULL requests "full" expans= ion @@ -5188,13 +5219,14 @@ qemuMonitorJSONGetCPUModelExpansion(qemuMonitor *mo= n, if ((rc =3D qemuMonitorJSONQueryCPUModelExpansionOne(mon, type, &f= ullModel, &fullData)) <=3D 0) return rc; =20 - if (qemuMonitorJSONParseCPUModelData(fullData, "query-cpu-model-ex= pansion", - fail_no_props, &cpu_model, &c= pu_props, - &cpu_name) < 0) + if (qemuMonitorJSONParseCPUModelExpansionData(fullData, fail_no_pr= ops, + &cpu_model, &cpu_pro= ps, + &cpu_name) < 0) return -1; } =20 - return qemuMonitorJSONParseCPUModel(cpu_name, cpu_props, model_info); + return qemuMonitorJSONParseCPUModelExpansion(cpu_name, cpu_props, + model_info); } =20 =20 --=20 2.47.1 From nobody Sat Feb 7 21:30:24 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; 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=reject dis=none) header.from=linux.ibm.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1734390430650781.790776260859; Mon, 16 Dec 2024 15:07:10 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id A4E011505; Mon, 16 Dec 2024 18:07:09 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 954331569; Mon, 16 Dec 2024 18:04:29 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id 64A9314B5; Mon, 16 Dec 2024 18:04:21 -0500 (EST) Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (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 9593A14AC for ; Mon, 16 Dec 2024 18:04:20 -0500 (EST) Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 4BGCr38K008928; Mon, 16 Dec 2024 23:04:19 GMT Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 43j98h5sxy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 16 Dec 2024 23:04:19 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 4BGLDTDp014340; Mon, 16 Dec 2024 23:04:18 GMT Received: from smtprelay07.dal12v.mail.ibm.com ([172.16.1.9]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 43hmqy081e-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 16 Dec 2024 23:04:18 +0000 Received: from smtpav04.wdc07v.mail.ibm.com (smtpav04.wdc07v.mail.ibm.com [10.39.53.231]) by smtprelay07.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 4BGN4GZq30474828 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Dec 2024 23:04:16 GMT Received: from smtpav04.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 847FE5808E; Mon, 16 Dec 2024 23:04:16 +0000 (GMT) Received: from smtpav04.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 155755808B; Mon, 16 Dec 2024 23:04:16 +0000 (GMT) Received: from li-d664314c-3171-11b2-a85c-fa8047ef35bd.ibm.com.com (unknown [9.67.33.76]) by smtpav04.wdc07v.mail.ibm.com (Postfix) with ESMTP; Mon, 16 Dec 2024 23:04:15 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2,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=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=h1l/3DLs0rY0A1ZR2 hIBzf7EDwdQJAQ/FAWjBcYV3DQ=; b=RMKJNy9K7xSW03HenNEs4LDjnXr+KDw0d l8RowQWQRSXs461UF8ZI4KfxjLRVLjPGIEYcdSSGjDO4gyN86ljZ4EhHXjXfwIzL F6Z/jOhRb6xTuVyXgdGzx6/0ucupAl/+Yj3ODkX/ySqwBSu+DWPRvFAKx4AIiexj LnaltnLVwDmLBrS9ezKDfIYeih0ao5Mf3bT9VGzC0QQsCuETtWYO5cdOIvT0ycJ1 phUgMYqtBTBj8KhrpsDTUAvo4GD0tNUwBJouXDFWRz6ZF1HdY3fgV20r16f0lCxo D1+pThQbupo7njUnN/ZuFNHhfHFkmy7ouDEvIF39KmclfYxBag8cA== From: Collin Walling To: devel@lists.libvirt.org Subject: [PATCH v3 2/7] qemu: parse deprecated-props from query-cpu-model-expansion response Date: Mon, 16 Dec 2024 18:03:53 -0500 Message-ID: <20241216230358.60940-3-walling@linux.ibm.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241216230358.60940-1-walling@linux.ibm.com> References: <20241216230358.60940-1-walling@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: sZ_WR2LfpYlpAexbpcsn76CMrekWYdVy X-Proofpoint-GUID: sZ_WR2LfpYlpAexbpcsn76CMrekWYdVy X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1051,Hydra:6.0.680,FMLib:17.12.62.30 definitions=2024-10-15_01,2024-10-11_01,2024-09-30_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 lowpriorityscore=0 malwarescore=0 spamscore=0 bulkscore=0 adultscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 suspectscore=0 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2411120000 definitions=main-2412160188 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: LYW5CLLVEDLMP6EG7EMIXOCEV6FKTVEN X-Message-ID-Hash: LYW5CLLVEDLMP6EG7EMIXOCEV6FKTVEN X-MailFrom: walling@linux.ibm.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: fiuczy@linux.ibm.com, jdenemar@redhat.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: 1734390431250116600 Content-Type: text/plain; charset="utf-8" query-cpu-model-expansion may report an array of deprecated properties. This array is optional, and may not be supported for a particular architecture or reported for a particular CPU model. If the output is present, then capture it and store in a qemuMonitorCPUModelInfo struct for later use. The deprecated features will be retained in qemuCaps->kvm->hostCPU.info and will be stored in the capabilities cache file under the element using the following format: At this time the data is only queried, parsed, and cached. The data will be utilized in a subsequent patch. Signed-off-by: Collin Walling Reviewed-by: Boris Fiuczynski Reviewed-by: Jiri Denemark --- src/qemu/qemu_capabilities.c | 31 +++++++++++++++++++ src/qemu/qemu_monitor.c | 7 +++++ src/qemu/qemu_monitor.h | 1 + src/qemu/qemu_monitor_json.c | 18 +++++++++++ .../qemucapabilitiesdata/caps_9.1.0_s390x.xml | 6 ++++ .../qemucapabilitiesdata/caps_9.2.0_s390x.xml | 6 ++++ 6 files changed, 69 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index dec3199fce..e7dacb5570 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -4019,6 +4019,7 @@ virQEMUCapsLoadHostCPUModelInfo(virQEMUCapsAccel *cap= s, 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; @@ -4111,6 +4112,24 @@ 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->deprecated_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->deprecated_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; + } + } + } + caps->hostCPU.info =3D g_steal_pointer(&hostCPU); return 0; } @@ -4843,6 +4862,18 @@ virQEMUCapsFormatHostCPUModelInfo(virQEMUCapsAccel *= caps, virBufferAddLit(buf, "/>\n"); } =20 + if (model->deprecated_props) { + virBufferAddLit(buf, "\n"); + virBufferAdjustIndent(buf, 2); + + for (i =3D 0; i < g_strv_length(model->deprecated_props); i++) + virBufferAsprintf(buf, "\n", + model->deprecated_props[i]); + + virBufferAdjustIndent(buf, -2); + virBufferAddLit(buf, "\n"); + } + virBufferAdjustIndent(buf, -2); virBufferAddLit(buf, "\n"); } diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index 73f37d26eb..8590a1a0a5 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -3306,6 +3306,7 @@ qemuMonitorCPUModelInfoFree(qemuMonitorCPUModelInfo *= model_info) g_free(model_info->props[i].value.string); } =20 + g_strfreev(model_info->deprecated_props); g_free(model_info->props); g_free(model_info->name); g_free(model_info); @@ -3350,6 +3351,12 @@ qemuMonitorCPUModelInfoCopy(const qemuMonitorCPUMode= lInfo *orig) } } =20 + if (orig->deprecated_props) { + copy->deprecated_props =3D g_new0(char *, + g_strv_length(orig->deprecated_pro= ps)); + copy->deprecated_props =3D g_strdupv(orig->deprecated_props); + } + return copy; } =20 diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index 89a59dfd27..d4d9b98ba7 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -1150,6 +1150,7 @@ struct _qemuMonitorCPUModelInfo { char *name; size_t nprops; qemuMonitorCPUProperty *props; + GStrv deprecated_props; bool migratability; }; =20 diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index fa8c5b1aea..6500e01d3f 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -5105,6 +5105,7 @@ qemuMonitorJSONParseCPUModelExpansionData(virJSONValu= e *data, bool fail_no_props, virJSONValue **cpu_model, virJSONValue **cpu_props, + virJSONValue **cpu_deprecated_pr= ops, const char **cpu_name) { if (qemuMonitorJSONParseCPUModelData(data, "query-cpu-model-expansion", @@ -5112,6 +5113,12 @@ qemuMonitorJSONParseCPUModelExpansionData(virJSONVal= ue *data, cpu_name) < 0) return -1; =20 + /* + * Unconditionally check for the deprecated-props array, as + * it is not a guarantee response even if QEMU supports it. + */ + *cpu_deprecated_props =3D virJSONValueObjectGetArray(data, "deprecated= -props"); + return 0; } =20 @@ -5119,6 +5126,7 @@ qemuMonitorJSONParseCPUModelExpansionData(virJSONValu= e *data, static int qemuMonitorJSONParseCPUModelExpansion(const char *cpu_name, virJSONValue *cpu_props, + virJSONValue *cpu_deprecated_props, qemuMonitorCPUModelInfo **model_info) { g_autoptr(qemuMonitorCPUModelInfo) expanded_model =3D NULL; @@ -5126,6 +5134,12 @@ qemuMonitorJSONParseCPUModelExpansion(const char *cp= u_name, if (qemuMonitorJSONParseCPUModel(cpu_name, cpu_props, &expanded_model)= < 0) return -1; =20 + if (cpu_deprecated_props && + virJSONValueArraySize(cpu_deprecated_props) && + (!(expanded_model->deprecated_props =3D virJSONValueArrayToStringL= ist(cpu_deprecated_props)))) { + return -1; + } + *model_info =3D g_steal_pointer(&expanded_model); return 0; } @@ -5190,6 +5204,7 @@ qemuMonitorJSONGetCPUModelExpansion(qemuMonitor *mon, g_autoptr(virJSONValue) fullData =3D NULL; virJSONValue *cpu_model; virJSONValue *cpu_props =3D NULL; + virJSONValue *cpu_deprecated_props =3D NULL; const char *cpu_name =3D ""; int rc; =20 @@ -5203,6 +5218,7 @@ qemuMonitorJSONGetCPUModelExpansion(qemuMonitor *mon, =20 if (qemuMonitorJSONParseCPUModelExpansionData(data, fail_no_props, &cpu_model, &cpu_props, + &cpu_deprecated_props, &cpu_name) < 0) return -1; =20 @@ -5221,11 +5237,13 @@ qemuMonitorJSONGetCPUModelExpansion(qemuMonitor *mo= n, =20 if (qemuMonitorJSONParseCPUModelExpansionData(fullData, fail_no_pr= ops, &cpu_model, &cpu_pro= ps, + &cpu_deprecated_prop= s, &cpu_name) < 0) return -1; } =20 return qemuMonitorJSONParseCPUModelExpansion(cpu_name, cpu_props, + cpu_deprecated_props, model_info); } =20 diff --git a/tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml b/tests/qemuca= pabilitiesdata/caps_9.1.0_s390x.xml index 50e9a60a1f..5e8db88e52 100644 --- a/tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml +++ b/tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml @@ -193,6 +193,12 @@ + + + + + + diff --git a/tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml b/tests/qemuca= pabilitiesdata/caps_9.2.0_s390x.xml index 6d4f6726fb..79a149d187 100644 --- a/tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml +++ b/tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml @@ -196,6 +196,12 @@ + + + + + + --=20 2.47.1 From nobody Sat Feb 7 21:30:24 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; 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=reject dis=none) header.from=linux.ibm.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1734390395082896.4642985873678; Mon, 16 Dec 2024 15:06:35 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id 055001549; Mon, 16 Dec 2024 18:06:34 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 066DA1574; Mon, 16 Dec 2024 18:04:28 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id 1D1A314AF; Mon, 16 Dec 2024 18:04:21 -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 DA7911398 for ; Mon, 16 Dec 2024 18:04:19 -0500 (EST) Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 4BGHvlq1027025; Mon, 16 Dec 2024 23:04:19 GMT Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 43jgd2by7g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 16 Dec 2024 23:04:19 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 4BGMEbO8024037; Mon, 16 Dec 2024 23:04:18 GMT Received: from smtprelay01.wdc07v.mail.ibm.com ([172.16.1.68]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 43hnuk81m2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 16 Dec 2024 23:04:18 +0000 Received: from smtpav04.wdc07v.mail.ibm.com (smtpav04.wdc07v.mail.ibm.com [10.39.53.231]) by smtprelay01.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 4BGN4Hxq52101520 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Dec 2024 23:04:17 GMT Received: from smtpav04.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4657E58086; Mon, 16 Dec 2024 23:04:17 +0000 (GMT) Received: from smtpav04.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id AB55C5808B; Mon, 16 Dec 2024 23:04:16 +0000 (GMT) Received: from li-d664314c-3171-11b2-a85c-fa8047ef35bd.ibm.com.com (unknown [9.67.33.76]) by smtpav04.wdc07v.mail.ibm.com (Postfix) with ESMTP; Mon, 16 Dec 2024 23:04:16 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2,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=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=rzeN/oNrpM6eAqsCD oK72E4PLAT/OyjtTD4ZFAFVObE=; b=Yc5BkSSUD75oLJ9Wbl07pnJCXX9ALBtY4 yGy7BIj/M6Iw1vQ5hE6WAWVukGaOdRxS4AlXp1zxKtxWbC/5fAc5g7UmWVyD2zYG TPPBd8YY5ncbX8iJMcL7gpv4P55fPCBKgtrYvp9AeGcX4zMMxyfEx0DyVyHEIKrH S+971sKpHC9pU8E5cWk/tBOdJnxc1bwxMY29xh7ybeoJHcV3vSeelht1SewB2I/I qYlkH/rgJUgWAUOQYwcpNJRtPSJRDlOOPACummhwEvcb14BsDyMQ2vZIKhpXYO5g EVDhue1egeHObMDiW0azctMxFf708g3J9hsj8neYPQ0wT9lXrcvAw== From: Collin Walling To: devel@lists.libvirt.org Subject: [PATCH v3 3/7] qemu_capabilities: query deprecated features for host-model Date: Mon, 16 Dec 2024 18:03:54 -0500 Message-ID: <20241216230358.60940-4-walling@linux.ibm.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241216230358.60940-1-walling@linux.ibm.com> References: <20241216230358.60940-1-walling@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: PohgKSDACRLb0KVhwEdaORLeMNgvFC5X X-Proofpoint-GUID: PohgKSDACRLb0KVhwEdaORLeMNgvFC5X X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1051,Hydra:6.0.680,FMLib:17.12.62.30 definitions=2024-10-15_01,2024-10-11_01,2024-09-30_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 suspectscore=0 lowpriorityscore=0 adultscore=0 clxscore=1015 mlxlogscore=999 priorityscore=1501 malwarescore=0 impostorscore=0 mlxscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2411120000 definitions=main-2412160188 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: SOPSZ67WXRVEWDPOWLNLE6EMHTLKUFJ6 X-Message-ID-Hash: SOPSZ67WXRVEWDPOWLNLE6EMHTLKUFJ6 X-MailFrom: walling@linux.ibm.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: fiuczy@linux.ibm.com, jdenemar@redhat.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: 1734390397153116600 Content-Type: text/plain; charset="utf-8" Add QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_DEPRECATED_PROPS for detecting if query-cpu-model-expansion can report deprecated CPU model properties. QEMU introduced this capability in 9.1 release. Add flag and deprecated features to the capabilities test data for QEMU 9.1 and 9.2 replies/XML since it can now be accounted for. When probing for the host CPU, perform a full CPU model expansion to retrieve the list of features deprecated across the entire architecture. The list and count are stored in the host's CPU model info within the QEMU capabilities. Other info resulting from this query (e.g. model name, etc) is ignored. The new capabilities flag is used to fence off the extra query for architectures/QEMU binaries that do not report deprecated CPU model features. Signed-off-by: Collin Walling Reviewed-by: Boris Fiuczynski Reviewed-by: Jiri Denemark --- src/qemu/qemu_capabilities.c | 38 ++ src/qemu/qemu_capabilities.h | 1 + .../caps_9.1.0_s390x.replies | 348 +++++++++++++++++- .../qemucapabilitiesdata/caps_9.1.0_s390x.xml | 7 + .../caps_9.2.0_s390x.replies | 348 +++++++++++++++++- .../qemucapabilitiesdata/caps_9.2.0_s390x.xml | 7 + 6 files changed, 745 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index e7dacb5570..04017ceda7 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -721,6 +721,7 @@ VIR_ENUM_IMPL(virQEMUCaps, "chardev-reconnect-miliseconds", /* QEMU_CAPS_CHARDEV_RECONN= ECT_MILISECONDS */ "virtio-ccw.loadparm", /* QEMU_CAPS_VIRTIO_CCW_DEVICE_LOADPA= RM */ "netdev-stream-reconnect-miliseconds", /* QEMU_CAPS_NETDEV_S= TREAM_RECONNECT_MILISECONDS */ + "query-cpu-model-expansion.deprecated-props", /* QEMU_CAPS_Q= UERY_CPU_MODEL_EXPANSION_DEPRECATED_PROPS */ ); =20 =20 @@ -1594,6 +1595,7 @@ static struct virQEMUCapsStringFlags virQEMUCapsQMPSc= hemaQueries[] =3D { { "screendump/arg-type/device", QEMU_CAPS_SCREENDUMP_DEVICE }, { "screendump/arg-type/format/^png", QEMU_CAPS_SCREENSHOT_FORMAT_PNG }, { "set-numa-node/arg-type/+hmat-lb", QEMU_CAPS_NUMA_HMAT }, + { "query-cpu-model-expansion/ret-type/deprecated-props", QEMU_CAPS_QUE= RY_CPU_MODEL_EXPANSION_DEPRECATED_PROPS }, }; =20 typedef struct _virQEMUCapsObjectTypeProps virQEMUCapsObjectTypeProps; @@ -3150,6 +3152,38 @@ virQEMUCapsProbeHypervCapabilities(virQEMUCaps *qemu= Caps, } =20 =20 +/** + * virQEMUCapsProbeFullDeprecatedProperties + * @mon: QEMU monitor + * @cpu: CPU definition to be expanded + * @props: the array to be filled with deprecated features + * + * Performs a full CPU model expansion to retrieve an array of deprecated + * properties. If the expansion succeeds, then data previously stored in + * @props is freed. + * + * Returns: -1 if the expansion failed; otherwise 0. + */ +static int +virQEMUCapsProbeFullDeprecatedProperties(qemuMonitor *mon, + virCPUDef *cpu, + GStrv *props) +{ + g_autoptr(qemuMonitorCPUModelInfo) propsInfo =3D NULL; + + if (qemuMonitorGetCPUModelExpansion(mon, QEMU_MONITOR_CPU_MODEL_EXPANS= ION_FULL, + cpu, true, false, false, &propsInf= o) < 0) + return -1; + + if (propsInfo && propsInfo->deprecated_props) { + g_free(*props); + *props =3D g_steal_pointer(&propsInfo->deprecated_props); + } + + return 0; +} + + static int virQEMUCapsProbeQMPHostCPU(virQEMUCaps *qemuCaps, virQEMUCapsAccel *accel, @@ -3231,6 +3265,10 @@ virQEMUCapsProbeQMPHostCPU(virQEMUCaps *qemuCaps, modelInfo->migratability =3D true; } =20 + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_DEPRE= CATED_PROPS) && + virQEMUCapsProbeFullDeprecatedProperties(mon, cpu, &modelInfo->dep= recated_props) < 0) + return -1; + if (virQEMUCapsTypeIsAccelerated(virtType) && (ARCH_IS_X86(qemuCaps->arch) || ARCH_IS_ARM(qemuCaps->arch))) { g_autoptr(qemuMonitorCPUModelInfo) fullQEMU =3D NULL; diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 48e4530c95..8347fd7fbb 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -700,6 +700,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for = syntax-check */ QEMU_CAPS_CHARDEV_RECONNECT_MILISECONDS, /* 'reconnect-ms' option for = chardevs supported */ QEMU_CAPS_VIRTIO_CCW_DEVICE_LOADPARM, /* loadparm available on CCW dev= ice for multi device boot */ QEMU_CAPS_NETDEV_STREAM_RECONNECT_MILISECONDS, /* 'reconnect-ms' optio= n for netdev stream supported */ + QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_DEPRECATED_PROPS, /* query-cpu-mod= el-expansion may report deprecated CPU properties */ =20 QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_9.1.0_s390x.replies b/tests/qe= mucapabilitiesdata/caps_9.1.0_s390x.replies index 2d4ab8ed75..0a523ba47e 100644 --- a/tests/qemucapabilitiesdata/caps_9.1.0_s390x.replies +++ b/tests/qemucapabilitiesdata/caps_9.1.0_s390x.replies @@ -32252,6 +32252,89 @@ "id": "libvirt-40" } =20 +{ + "execute": "query-cpu-model-expansion", + "arguments": { + "type": "full", + "model": { + "name": "host" + } + }, + "id": "libvirt-41" +} + +{ + "return": { + "deprecated-props": [ + "bpb", + "te", + "cte", + "csske" + ], + "model": { + "name": "gen16a-base", + "props": { + "nnpa": true, + "aen": true, + "cmmnt": true, + "vxpdeh": true, + "aefsi": true, + "diag318": true, + "csske": true, + "mepoch": true, + "msa9": true, + "msa8": true, + "msa7": true, + "msa6": true, + "msa5": true, + "msa4": true, + "msa3": true, + "msa2": true, + "msa1": true, + "sthyi": true, + "edat": true, + "ri": true, + "deflate": true, + "edat2": true, + "etoken": true, + "vx": true, + "ipter": true, + "pai": true, + "paie": true, + "mepochptff": true, + "ap": true, + "vxeh": true, + "vxpd": true, + "esop": true, + "msa9_pckmo": true, + "vxeh2": true, + "esort": true, + "appv": true, + "apqi": true, + "apft": true, + "els": true, + "iep": true, + "appvi": true, + "apqci": true, + "cte": true, + "ais": true, + "bpb": true, + "ctop": true, + "gs": true, + "ppa15": true, + "zpci": true, + "rdp": true, + "sea_esop2": true, + "beareh": true, + "te": true, + "cmm": true, + "vxpdeh2": true + } + } + }, + "id": "libvirt-41" +} + { "execute": "qmp_capabilities", "id": "libvirt-1" @@ -36262,10 +36345,271 @@ } =20 { - "execute": "query-machines", + "execute": "query-cpu-model-expansion", + "arguments": { + "type": "full", + "model": { + "name": "max" + } + }, + "id": "libvirt-4" +} + +{ + "return": { + "deprecated-props": [ + "bpb", + "te", + "cte", + "csske" + ], + "model": { + "name": "gen15a-base", + "props": { + "pfmfi": false, + "exrl": true, + "stfle45": true, + "kmctr-etdea-192": false, + "kmctr-etdea-128": false, + "nnpa": false, + "cmma": false, + "dateh2": false, + "gen13ptff": false, + "aen": true, + "kmo-etdea-192": false, + "kmf-etdea-192": false, + "kmc-etdea-192": false, + "kmac-tdea-192": false, + "kimd-sha-512": true, + "dateh": true, + "km-aes-256": false, + "km-aes-192": false, + "kmctr-aes-256": false, + "kma-gcm-eaes-192": false, + "kmo-tdea-192": false, + "kmf-tdea-192": false, + "kmctr-tdea-192": false, + "kmctr-tdea-128": false, + "km-etdea-192": false, + "kmc-tdea-192": false, + "cmmnt": false, + "iacc2": true, + "parseh": false, + "klmd-sha-512": true, + "kma-gcm-eaes-128": false, + "csst": true, + "pcc-xts-aes-256": false, + "pcc-xts-aes-128": false, + "pckmo-aes-128": false, + "idter": false, + "idtes": true, + "prno-trng-qrtcr": false, + "pcc-cmac-eaes-128": false, + "vxpdeh": false, + "aefsi": true, + "pckmo-etdea-192": false, + "pckmo-etdea-128": false, + "diag318": false, + "pcc-cmac-eaes-256": false, + "msa-base": true, + "pcc-cmac-etdea-192": false, + "hpma2": false, + "kmctr-eaes-256": false, + "csske": false, + "csst2": true, + "mepoch": false, + "msa9": false, + "msa6": false, + "msa1": false, + "kmctr-aes-192": false, + "pckmo-aes-256": false, + "sthyi": false, + "stckf": true, + "stfle": true, + "edat": false, + "etf3": true, + "etf2": true, + "hfpm": false, + "ri": false, + "pcc-xts-eaes-256": false, + "deflate": false, + "km-xts-eaes-256": false, + "km-xts-eaes-128": false, + "edat2": false, + "hfpue": false, + "kmo-aes-192": false, + "kmf-aes-192": false, + "km-eaes-192": false, + "kmc-aes-192": false, + "unpack": false, + "dfp": false, + "kmo-aes-128": false, + "kmf-aes-128": false, + "km-eaes-128": false, + "kmctr-dea": false, + "mvcos": true, + "etoken": false, + "pcc-cmac-tdea-192": false, + "km-dea": false, + "sprogp": true, + "sigpif": false, + "kmac-eaes-128": false, + "ldisphp": true, + "pckmo-aes-192": false, + "ipter": false, + "vx": true, + "pai": false, + "kimd-ghash": false, + "emon": false, + "kimd-sha-1": false, + "cei": false, + "cmpsceh": false, + "kmctr-eaes-192": false, + "kmctr-eaes-128": false, + "ginste": true, + "km-xts-aes-256": false, + "kmac-eaes-256": false, + "kmo-eaes-128": false, + "kmf-eaes-128": false, + "kmc-eaes-128": false, + "kmac-aes-128": false, + "paie": false, + "dfppc": false, + "dfpzc": false, + "dfphp": false, + "kmo-eaes-256": false, + "kmf-eaes-256": false, + "kmc-eaes-256": false, + "kmac-aes-256": false, + "kmac-etdea-192": false, + "kmac-etdea-128": false, + "kmo-dea": false, + "kmf-dea": false, + "km-edea": false, + "kmc-dea": false, + "stfle49": true, + "klmd-sha-1": false, + "mepochptff": false, + "opc": false, + "ap": false, + "asnlxr": false, + "gpereh": false, + "minste2": true, + "pcc-cmac-dea": false, + "vxpd": false, + "vxeh": true, + "esop": true, + "ectg": true, + "ib": false, + "km-tdea-192": false, + "km-tdea-128": false, + "msa9_pckmo": false, + "siif": false, + "kma-gcm-aes-256": false, + "kma-gcm-aes-192": false, + "kma-gcm-aes-128": false, + "pcc-cmac-aes-256": false, + "tsi": false, + "vxeh2": true, + "tpei": false, + "esort": false, + "esan3": true, + "fpe": true, + "ibs": false, + "pcc-xts-eaes-128": false, + "kmac-eaes-192": false, + "zarch": true, + "kmo-edea": false, + "kmf-edea": false, + "kmc-edea": false, + "kmac-dea": false, + "appv": false, + "apqi": false, + "apft": false, + "stfle53": true, + "ppno-sha-512-drng": false, + "pcc-cmac-tdea-128": false, + "kmo-aes-256": false, + "kmf-aes-256": false, + "km-eaes-256": false, + "kmc-aes-256": false, + "els": false, + "sief2": false, + "eimm": true, + "pcc-cmac-etdea-128": false, + "iep": true, + "irbm": false, + "km-xts-aes-128": false, + "srs": true, + "appvi": false, + "apqci": false, + "kmo-tdea-128": false, + "kmf-tdea-128": false, + "km-etdea-128": false, + "kmc-tdea-128": false, + "kss": false, + "cte": false, + "kmac-edea": false, + "prno-trng": true, + "kma-gcm-eaes-256": false, + "ais": true, + "fpseh": true, + "ltlbc": true, + "ldisp": true, + "kmo-etdea-128": false, + "kmf-etdea-128": false, + "kmc-etdea-128": false, + "kmac-tdea-128": false, + "pcc-cmac-edea": false, + "bpb": false, + "kmctr-edea": false, + "64bscao": false, + "ctop": false, + "kmo-eaes-192": false, + "kmf-eaes-192": false, + "kmc-eaes-192": false, + "kmac-aes-192": false, + "gs": false, + "sema": false, + "etf3eh": true, + "etf2eh": true, + "eec": false, + "pcc-cmac-eaes-192": false, + "ppa15": false, + "kmc-prng": false, + "zpci": true, + "rdp": false, + "nonqks": false, + "sea_esop2": true, + "minste3": true, + "beareh": false, + "pfpo": false, + "te": false, + "msa8-base": true, + "msa4-base": true, + "msa3-base": true, + "msa5-base": true, + "pcc-cmac-aes-192": false, + "cmm": false, + "tods": false, + "pcc-cmac-aes-128": false, + "plo": true, + "pckmo-edea": false, + "gsls": false, + "kmctr-aes-128": false, + "skey": false, + "vxpdeh2": false + } + } + }, "id": "libvirt-4" } =20 +{ + "execute": "query-machines", + "id": "libvirt-5" +} + { "return": [ { @@ -36568,5 +36912,5 @@ "default-ram-id": "s390.ram" } ], - "id": "libvirt-4" + "id": "libvirt-5" } diff --git a/tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml b/tests/qemuca= pabilitiesdata/caps_9.1.0_s390x.xml index 5e8db88e52..b3265dcc18 100644 --- a/tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml +++ b/tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml @@ -133,6 +133,7 @@ + 9001000 39100246 v9.1.0 @@ -356,6 +357,12 @@ + + + + + + diff --git a/tests/qemucapabilitiesdata/caps_9.2.0_s390x.replies b/tests/qe= mucapabilitiesdata/caps_9.2.0_s390x.replies index 91c9a049bf..9a58acaf08 100644 --- a/tests/qemucapabilitiesdata/caps_9.2.0_s390x.replies +++ b/tests/qemucapabilitiesdata/caps_9.2.0_s390x.replies @@ -32411,6 +32411,89 @@ "id": "libvirt-40" } =20 +{ + "execute": "query-cpu-model-expansion", + "arguments": { + "type": "full", + "model": { + "name": "host" + } + }, + "id": "libvirt-41" +} + +{ + "return": { + "deprecated-props": [ + "bpb", + "te", + "cte", + "csske" + ], + "model": { + "name": "gen16a-base", + "props": { + "nnpa": true, + "aen": true, + "cmmnt": true, + "vxpdeh": true, + "aefsi": true, + "diag318": true, + "csske": true, + "mepoch": true, + "msa9": true, + "msa8": true, + "msa7": true, + "msa6": true, + "msa5": true, + "msa4": true, + "msa3": true, + "msa2": true, + "msa1": true, + "sthyi": true, + "edat": true, + "ri": true, + "deflate": true, + "edat2": true, + "etoken": true, + "vx": true, + "ipter": true, + "pai": true, + "paie": true, + "mepochptff": true, + "ap": true, + "vxeh": true, + "vxpd": true, + "esop": true, + "msa9_pckmo": true, + "vxeh2": true, + "esort": true, + "appv": true, + "apqi": true, + "apft": true, + "els": true, + "iep": true, + "appvi": true, + "apqci": true, + "cte": true, + "ais": true, + "bpb": true, + "ctop": true, + "gs": true, + "ppa15": true, + "zpci": true, + "rdp": true, + "sea_esop2": true, + "beareh": true, + "te": true, + "cmm": true, + "vxpdeh2": true + } + } + }, + "id": "libvirt-41" +} + { "execute": "qmp_capabilities", "id": "libvirt-1" @@ -36421,10 +36504,271 @@ } =20 { - "execute": "query-machines", + "execute": "query-cpu-model-expansion", + "arguments": { + "type": "full", + "model": { + "name": "max" + } + }, + "id": "libvirt-4" +} + +{ + "return": { + "deprecated-props": [ + "bpb", + "te", + "cte", + "csske" + ], + "model": { + "name": "gen15a-base", + "props": { + "pfmfi": false, + "exrl": true, + "stfle45": true, + "kmctr-etdea-192": false, + "kmctr-etdea-128": false, + "nnpa": false, + "cmma": false, + "dateh2": false, + "gen13ptff": false, + "aen": true, + "kmo-etdea-192": false, + "kmf-etdea-192": false, + "kmc-etdea-192": false, + "kmac-tdea-192": false, + "kimd-sha-512": true, + "dateh": true, + "km-aes-256": false, + "km-aes-192": false, + "kmctr-aes-256": false, + "kma-gcm-eaes-192": false, + "kmo-tdea-192": false, + "kmf-tdea-192": false, + "kmctr-tdea-192": false, + "kmctr-tdea-128": false, + "km-etdea-192": false, + "kmc-tdea-192": false, + "cmmnt": false, + "iacc2": true, + "parseh": false, + "klmd-sha-512": true, + "kma-gcm-eaes-128": false, + "csst": true, + "pcc-xts-aes-256": false, + "pcc-xts-aes-128": false, + "pckmo-aes-128": false, + "idter": false, + "idtes": true, + "prno-trng-qrtcr": false, + "pcc-cmac-eaes-128": false, + "vxpdeh": false, + "aefsi": true, + "pckmo-etdea-192": false, + "pckmo-etdea-128": false, + "diag318": false, + "pcc-cmac-eaes-256": false, + "msa-base": true, + "pcc-cmac-etdea-192": false, + "hpma2": false, + "kmctr-eaes-256": false, + "csske": false, + "csst2": true, + "mepoch": false, + "msa9": false, + "msa6": false, + "msa1": false, + "kmctr-aes-192": false, + "pckmo-aes-256": false, + "sthyi": false, + "stckf": true, + "stfle": true, + "edat": false, + "etf3": true, + "etf2": true, + "hfpm": false, + "ri": false, + "pcc-xts-eaes-256": false, + "deflate": false, + "km-xts-eaes-256": false, + "km-xts-eaes-128": false, + "edat2": false, + "hfpue": false, + "kmo-aes-192": false, + "kmf-aes-192": false, + "km-eaes-192": false, + "kmc-aes-192": false, + "unpack": false, + "dfp": false, + "kmo-aes-128": false, + "kmf-aes-128": false, + "km-eaes-128": false, + "kmctr-dea": false, + "mvcos": true, + "etoken": false, + "pcc-cmac-tdea-192": false, + "km-dea": false, + "sprogp": true, + "sigpif": false, + "kmac-eaes-128": false, + "ldisphp": true, + "pckmo-aes-192": false, + "ipter": false, + "vx": true, + "pai": false, + "kimd-ghash": false, + "emon": false, + "kimd-sha-1": false, + "cei": false, + "cmpsceh": false, + "kmctr-eaes-192": false, + "kmctr-eaes-128": false, + "ginste": true, + "km-xts-aes-256": false, + "kmac-eaes-256": false, + "kmo-eaes-128": false, + "kmf-eaes-128": false, + "kmc-eaes-128": false, + "kmac-aes-128": false, + "paie": false, + "dfppc": false, + "dfpzc": false, + "dfphp": false, + "kmo-eaes-256": false, + "kmf-eaes-256": false, + "kmc-eaes-256": false, + "kmac-aes-256": false, + "kmac-etdea-192": false, + "kmac-etdea-128": false, + "kmo-dea": false, + "kmf-dea": false, + "km-edea": false, + "kmc-dea": false, + "stfle49": true, + "klmd-sha-1": false, + "mepochptff": false, + "opc": false, + "ap": false, + "asnlxr": false, + "gpereh": false, + "minste2": true, + "pcc-cmac-dea": false, + "vxpd": false, + "vxeh": true, + "esop": true, + "ectg": true, + "ib": false, + "km-tdea-192": false, + "km-tdea-128": false, + "msa9_pckmo": false, + "siif": false, + "kma-gcm-aes-256": false, + "kma-gcm-aes-192": false, + "kma-gcm-aes-128": false, + "pcc-cmac-aes-256": false, + "tsi": false, + "vxeh2": true, + "tpei": false, + "esort": false, + "esan3": true, + "fpe": true, + "ibs": false, + "pcc-xts-eaes-128": false, + "kmac-eaes-192": false, + "zarch": true, + "kmo-edea": false, + "kmf-edea": false, + "kmc-edea": false, + "kmac-dea": false, + "appv": false, + "apqi": false, + "apft": false, + "stfle53": true, + "ppno-sha-512-drng": false, + "pcc-cmac-tdea-128": false, + "kmo-aes-256": false, + "kmf-aes-256": false, + "km-eaes-256": false, + "kmc-aes-256": false, + "els": false, + "sief2": false, + "eimm": true, + "pcc-cmac-etdea-128": false, + "iep": true, + "irbm": false, + "km-xts-aes-128": false, + "srs": true, + "appvi": false, + "apqci": false, + "kmo-tdea-128": false, + "kmf-tdea-128": false, + "km-etdea-128": false, + "kmc-tdea-128": false, + "kss": false, + "cte": false, + "kmac-edea": false, + "prno-trng": true, + "kma-gcm-eaes-256": false, + "ais": true, + "fpseh": true, + "ltlbc": true, + "ldisp": true, + "kmo-etdea-128": false, + "kmf-etdea-128": false, + "kmc-etdea-128": false, + "kmac-tdea-128": false, + "pcc-cmac-edea": false, + "bpb": false, + "kmctr-edea": false, + "64bscao": false, + "ctop": false, + "kmo-eaes-192": false, + "kmf-eaes-192": false, + "kmc-eaes-192": false, + "kmac-aes-192": false, + "gs": false, + "sema": false, + "etf3eh": true, + "etf2eh": true, + "eec": false, + "pcc-cmac-eaes-192": false, + "ppa15": false, + "kmc-prng": false, + "zpci": true, + "rdp": false, + "nonqks": false, + "sea_esop2": true, + "minste3": true, + "beareh": false, + "pfpo": false, + "te": false, + "msa8-base": true, + "msa4-base": true, + "msa3-base": true, + "msa5-base": true, + "pcc-cmac-aes-192": false, + "cmm": false, + "tods": false, + "pcc-cmac-aes-128": false, + "plo": true, + "pckmo-edea": false, + "gsls": false, + "kmctr-aes-128": false, + "skey": false, + "vxpdeh2": false + } + } + }, "id": "libvirt-4" } =20 +{ + "execute": "query-machines", + "id": "libvirt-5" +} + { "return": [ { @@ -36737,5 +37081,5 @@ "default-ram-id": "s390.ram" } ], - "id": "libvirt-4" + "id": "libvirt-5" } diff --git a/tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml b/tests/qemuca= pabilitiesdata/caps_9.2.0_s390x.xml index 79a149d187..c3a9b62ec0 100644 --- a/tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml +++ b/tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml @@ -136,6 +136,7 @@ + 9001050 39100247 v9.1.0-1348-g11b8920ed2 @@ -360,6 +361,12 @@ + + + + + + --=20 2.47.1 From nobody Sat Feb 7 21:30:24 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; 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=reject dis=none) header.from=linux.ibm.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1734390481524933.380252885558; Mon, 16 Dec 2024 15:08:01 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id 926AA151B; Mon, 16 Dec 2024 18:08:00 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id AB78B1529; Mon, 16 Dec 2024 18:04:35 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id 3F5D114AA; Mon, 16 Dec 2024 18:04:22 -0500 (EST) Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (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 77C2614AC for ; Mon, 16 Dec 2024 18:04:21 -0500 (EST) Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 4BGEonV6012115; Mon, 16 Dec 2024 23:04:20 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 43jcpb54f5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 16 Dec 2024 23:04:20 +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 4BGKqY1g029312; Mon, 16 Dec 2024 23:04:19 GMT Received: from smtprelay01.wdc07v.mail.ibm.com ([172.16.1.68]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 43hmbsgakm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 16 Dec 2024 23:04:19 +0000 Received: from smtpav04.wdc07v.mail.ibm.com (smtpav04.wdc07v.mail.ibm.com [10.39.53.231]) by smtprelay01.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 4BGN4HvR52101524 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Dec 2024 23:04:18 GMT Received: from smtpav04.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E32A358089; Mon, 16 Dec 2024 23:04:17 +0000 (GMT) Received: from smtpav04.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6AE1D58088; Mon, 16 Dec 2024 23:04:17 +0000 (GMT) Received: from li-d664314c-3171-11b2-a85c-fa8047ef35bd.ibm.com.com (unknown [9.67.33.76]) by smtpav04.wdc07v.mail.ibm.com (Postfix) with ESMTP; Mon, 16 Dec 2024 23:04:17 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2,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=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=Idx/aWfc37cfKh1Y+ IuWZTxb0hgKJqGu3tUcBQ/sftw=; b=KlvenxOUH50j+GFqZBrY7EqeaPPEnUqZR empE3vik/BVo4GstAObdiHXl96i6XqF7Gwph1UY9TnFE7rWjmIqLpod2xsiclULc hy1MquISCJb+UlexW5yRP6yGmbeIbLWtn3X2EgFQT+eG4EPUNVKJQEg+iHC1VTc0 q/qQXWKSQb65PPeB740E2RwCcERHlUJ9UCV2s5JT2Jjj/6GTYCrE+jNc9iqKChjY sSno6ofloY+8osKP/IV3BMgsiMHOs95SOEI209J5Zgt6OoyZOK63XT0980x29tEq FziW/DzFh4KmGxRUxzloSkW1g0cngraiSHcDNDlx86yzTaPNmKvbA== From: Collin Walling To: devel@lists.libvirt.org Subject: [PATCH v3 4/7] libvirt-domain: introduce VIR_CONNECT_GET_DOMAIN_CAPABILITIES_DISABLE_DEPRECATED_FEATURES Date: Mon, 16 Dec 2024 18:03:55 -0500 Message-ID: <20241216230358.60940-5-walling@linux.ibm.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241216230358.60940-1-walling@linux.ibm.com> References: <20241216230358.60940-1-walling@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: 6b8eK7gYBnYDf6romnJDWT8-DZkX_5-b X-Proofpoint-GUID: 6b8eK7gYBnYDf6romnJDWT8-DZkX_5-b X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1051,Hydra:6.0.680,FMLib:17.12.62.30 definitions=2024-10-15_01,2024-10-11_01,2024-09-30_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 spamscore=0 mlxscore=0 adultscore=0 mlxlogscore=676 suspectscore=0 bulkscore=0 phishscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2411120000 definitions=main-2412160188 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: CPIOLWRVRR2KECT2MEKBUNQVZPXJTJ4C X-Message-ID-Hash: CPIOLWRVRR2KECT2MEKBUNQVZPXJTJ4C X-MailFrom: walling@linux.ibm.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: fiuczy@linux.ibm.com, jdenemar@redhat.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: 1734390483555116600 Content-Type: text/plain; charset="utf-8" Introduce domain flag used to filter deprecated features from the domain's CPU model. Signed-off-by: Collin Walling Reviewed-by: Jiri Denemark --- include/libvirt/libvirt-domain.h | 12 ++++++++++++ src/libvirt-domain.c | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-dom= ain.h index d4f1573954..2a4b81f4df 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -1491,6 +1491,18 @@ int virDomainMigrateGetMaxSpeed(virDomainPtr domain, int virDomainMigrateStartPostCopy(virDomainPtr domain, unsigned int flags); =20 +/** + * virConnectGetDomainCapabilitiesFlags: + * + * Domain capabilities flags. + * + * Since: 11.0.0 + */ +typedef enum { + /* Report host model with deprecated features disabled. (Since: 11.0.0= ) */ + VIR_CONNECT_GET_DOMAIN_CAPABILITIES_DISABLE_DEPRECATED_FEATURES =3D (1= << 0), +} virConnectGetDomainCapabilitiesFlags; + char * virConnectGetDomainCapabilities(virConnectPtr conn, const char *emulatorbin, const char *arch, diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index 7c6b93963c..e8e5379672 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -12166,7 +12166,7 @@ virDomainSetUserPassword(virDomainPtr dom, * @arch: domain architecture * @machine: machine type * @virttype: virtualization type - * @flags: extra flags; not used yet, so callers should always pass 0 + * @flags: extra flags; bitwise-OR of virConnectGetDomainCapabilitiesFlags * * Prior creating a domain (for instance via virDomainCreateXML * or virDomainDefineXML) it may be suitable to know what the --=20 2.47.1 From nobody Sat Feb 7 21:30:24 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; 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=reject dis=none) header.from=linux.ibm.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1734390461199592.2098909871476; Mon, 16 Dec 2024 15:07:41 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id 35BB61528; Mon, 16 Dec 2024 18:07:40 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id B9B871586; Mon, 16 Dec 2024 18:04:32 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id C998714B5; Mon, 16 Dec 2024 18:04:21 -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 4C91614AA for ; Mon, 16 Dec 2024 18:04:21 -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 4BGE6MjK011349; Mon, 16 Dec 2024 23:04:21 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 43jnp4jbab-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 16 Dec 2024 23:04:20 +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 4BGKFTfa029728; Mon, 16 Dec 2024 23:04:20 GMT Received: from smtprelay02.wdc07v.mail.ibm.com ([172.16.1.69]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 43hmbsgakp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 16 Dec 2024 23:04:20 +0000 Received: from smtpav04.wdc07v.mail.ibm.com (smtpav04.wdc07v.mail.ibm.com [10.39.53.231]) by smtprelay02.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 4BGN4ILM32244306 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Dec 2024 23:04:18 GMT Received: from smtpav04.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 85CC558088; Mon, 16 Dec 2024 23:04:18 +0000 (GMT) Received: from smtpav04.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 1475958086; Mon, 16 Dec 2024 23:04:18 +0000 (GMT) Received: from li-d664314c-3171-11b2-a85c-fa8047ef35bd.ibm.com.com (unknown [9.67.33.76]) by smtpav04.wdc07v.mail.ibm.com (Postfix) with ESMTP; Mon, 16 Dec 2024 23:04:17 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2,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=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=UaWBR3E94bC0kDXR3 sDklEsmCBTt0cR/Z7DmXyoMCEI=; b=BGdj9qtO3fXDhB48CNif2Hum7nTqVQxmC k84CL2udK7F78/7t4KID4AUvQaBBd/RgQI8mNWjha0s/xvoE74aW+OVd428xAlu4 fGLn15/WbvtlEKLGFHRvBqVa4Psm6mHWG9enbLROUOrfuhCARGcYGBTfVG5s6tKo uC8zMD2XmfpHp2HUx9nwr5uSuWn88SSAZ90N1oFryGp4vYXDTV5vm1ccfZKGHAbj 74cNHB6eKwM/z7QNkrrTC++RubTLj3MRoxPXdiffGm04Rxm33TywYnDizgwaxg+n ugnjRWVZKOhwOz3HBAUnch9OTO2PvZgixTPeJClrHENkJVc4U82sg== From: Collin Walling To: devel@lists.libvirt.org Subject: [PATCH v3 5/7] qemu_capabilities: filter deprecated features if requested Date: Mon, 16 Dec 2024 18:03:56 -0500 Message-ID: <20241216230358.60940-6-walling@linux.ibm.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241216230358.60940-1-walling@linux.ibm.com> References: <20241216230358.60940-1-walling@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: ldXDpOaCoqp8nsj-_l5QrX8nagL5yn_9 X-Proofpoint-ORIG-GUID: ldXDpOaCoqp8nsj-_l5QrX8nagL5yn_9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1051,Hydra:6.0.680,FMLib:17.12.62.30 definitions=2024-10-15_01,2024-10-11_01,2024-09-30_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 clxscore=1015 malwarescore=0 adultscore=0 bulkscore=0 mlxscore=0 spamscore=0 priorityscore=1501 phishscore=0 suspectscore=0 mlxlogscore=777 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2411120000 definitions=main-2412160188 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: EQN4OKMBI6U44ESV5TQXHL6T5KTYMPLI X-Message-ID-Hash: EQN4OKMBI6U44ESV5TQXHL6T5KTYMPLI X-MailFrom: walling@linux.ibm.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: fiuczy@linux.ibm.com, jdenemar@redhat.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: 1734390461558116600 Content-Type: text/plain; charset="utf-8" If flag VIR_CONNECT_GET_DOMAIN_CAPABILITIES_DISABLE_DEPRECATED_FEATURES is passed to qemuConnectGetDomainCapabilities, then the domain's CPU model features will be updated to set any deprecated features to the 'disabled' policy. Signed-off-by: Collin Walling Reviewed-by: Jiri Denemark --- src/qemu/qemu_capabilities.c | 20 ++++++++++++++++++++ src/qemu/qemu_capabilities.h | 3 +++ src/qemu/qemu_driver.c | 8 +++++++- 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 04017ceda7..eda3e6a4df 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3330,6 +3330,26 @@ virQEMUCapsGetCPUFeatures(virQEMUCaps *qemuCaps, } =20 =20 +void +virQEMUCapsUpdateCPUDeprecatedFeatures(virQEMUCaps *qemuCaps, + virDomainVirtType virtType, + virCPUDef *cpu) +{ + qemuMonitorCPUModelInfo *modelInfo; + size_t i; + + modelInfo =3D virQEMUCapsGetCPUModelInfo(qemuCaps, virtType); + + if (!modelInfo || !modelInfo->deprecated_props) + return; + + for (i =3D 0; i < g_strv_length(modelInfo->deprecated_props); i++) { + virCPUDefUpdateFeature(cpu, modelInfo->deprecated_props[i], + VIR_CPU_FEATURE_DISABLE); + } +} + + struct tpmTypeToCaps { int type; virQEMUCapsFlags caps; diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 8347fd7fbb..6bfe99fce4 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -764,6 +764,9 @@ int virQEMUCapsGetCPUFeatures(virQEMUCaps *qemuCaps, virDomainVirtType virtType, bool migratable, char ***features); +void virQEMUCapsUpdateCPUDeprecatedFeatures(virQEMUCaps *qemuCaps, + virDomainVirtType virtType, + virCPUDef *cpu); =20 virDomainVirtType virQEMUCapsGetVirtType(virQEMUCaps *qemuCaps); =20 diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index f1a633fdd3..672b42b44e 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -16530,7 +16530,8 @@ qemuConnectGetDomainCapabilities(virConnectPtr conn, virDomainVirtType virttype; g_autoptr(virDomainCaps) domCaps =3D NULL; =20 - virCheckFlags(0, NULL); + virCheckFlags(VIR_CONNECT_GET_DOMAIN_CAPABILITIES_DISABLE_DEPRECATED_F= EATURES, + NULL); =20 if (virConnectGetDomainCapabilitiesEnsureACL(conn) < 0) return NULL; @@ -16549,6 +16550,11 @@ qemuConnectGetDomainCapabilities(virConnectPtr con= n, arch, virttype))) return NULL; =20 + if (flags & VIR_CONNECT_GET_DOMAIN_CAPABILITIES_DISABLE_DEPRECATED_FEA= TURES) { + virQEMUCapsUpdateCPUDeprecatedFeatures(qemuCaps, virttype, + domCaps->cpu.hostModel); + } + return virDomainCapsFormat(domCaps); } =20 --=20 2.47.1 From nobody Sat Feb 7 21:30:24 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; 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=reject dis=none) header.from=linux.ibm.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1734390500931533.2633950116578; Mon, 16 Dec 2024 15:08:20 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id E515E158D; Mon, 16 Dec 2024 18:08:19 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id B79B11533; Mon, 16 Dec 2024 18:04:38 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id 4897414AA; Mon, 16 Dec 2024 18:04:22 -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 CE99D1398 for ; Mon, 16 Dec 2024 18:04:21 -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 4BGE6S8r011393; Mon, 16 Dec 2024 23:04:21 GMT Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 43jnp4jbac-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 16 Dec 2024 23:04:21 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 4BGJEPSR014383; Mon, 16 Dec 2024 23:04:20 GMT Received: from smtprelay03.wdc07v.mail.ibm.com ([172.16.1.70]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 43hq21fr04-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 16 Dec 2024 23:04:20 +0000 Received: from smtpav04.wdc07v.mail.ibm.com (smtpav04.wdc07v.mail.ibm.com [10.39.53.231]) by smtprelay03.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 4BGN4JL525232072 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Dec 2024 23:04:19 GMT Received: from smtpav04.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2F9C558086; Mon, 16 Dec 2024 23:04:19 +0000 (GMT) Received: from smtpav04.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id AB7565808B; Mon, 16 Dec 2024 23:04:18 +0000 (GMT) Received: from li-d664314c-3171-11b2-a85c-fa8047ef35bd.ibm.com.com (unknown [9.67.33.76]) by smtpav04.wdc07v.mail.ibm.com (Postfix) with ESMTP; Mon, 16 Dec 2024 23:04:18 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2,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=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=979MNqshFMUjCba4o GwQr1KOvv53katjs2xEY+MftFM=; b=pxgHgu1zWmGCIyw8QZV9RFk0gS5KpXfD1 XOHxzoFCNHbvMvJb1TWQBFD62w6j5m0a+1VmoUMgrEIm5E1dMa3nAt/3yWpi5QfK 8bWrCE0eFcHkFWUaWjCIQroeOk+63yl53gFLHohqRIjgCIiA4ROb6tmJRT9Zlnvg lptxNJjw9TjnGLvnhyPu3SBM1g76UmGz1+YW291QhaWfp9qq4vN7joMOdk4Noabp PlTY9zqTf8J9+WKVpC1fcSUfhR9lzTCp4sr5ZKZJvek5uOEKsO96Ob5tRQ7xApU+ nyjipoima5KP/vmxxP3utRWewXR39uFojkXZygcdpIup6uDWxDoig== From: Collin Walling To: devel@lists.libvirt.org Subject: [PATCH v3 6/7] virsh: add --disable-deprecated-features flag to domcapabilities Date: Mon, 16 Dec 2024 18:03:57 -0500 Message-ID: <20241216230358.60940-7-walling@linux.ibm.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241216230358.60940-1-walling@linux.ibm.com> References: <20241216230358.60940-1-walling@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: DZxJy2_e705ozN-djcRHgN9KRS_c3ixv X-Proofpoint-ORIG-GUID: DZxJy2_e705ozN-djcRHgN9KRS_c3ixv X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1051,Hydra:6.0.680,FMLib:17.12.62.30 definitions=2024-10-15_01,2024-10-11_01,2024-09-30_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 clxscore=1015 malwarescore=0 adultscore=0 bulkscore=0 mlxscore=0 spamscore=0 priorityscore=1501 phishscore=0 suspectscore=0 mlxlogscore=871 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2411120000 definitions=main-2412160188 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: DWMLITSGOSSCQ6O2Q6QDPAT7GLL6STOL X-Message-ID-Hash: DWMLITSGOSSCQ6O2Q6QDPAT7GLL6STOL X-MailFrom: walling@linux.ibm.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: fiuczy@linux.ibm.com, jdenemar@redhat.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: 1734390501831116600 Content-Type: text/plain; charset="utf-8" Add a new flag, --disable-deprecated-features, to the domcapabilities command. This will modify the output to show the 'host-model' CPU with features flagged as deprecated paired with the 'disable' policy. virsh domcapabilities --disable-deprecated-features Signed-off-by: Collin Walling Reviewed-by: Jiri Denemark --- docs/manpages/virsh.rst | 6 ++++++ tools/virsh-host.c | 9 ++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst index 2e525d3fac..e801037c04 100644 --- a/docs/manpages/virsh.rst +++ b/docs/manpages/virsh.rst @@ -568,6 +568,7 @@ domcapabilities =20 domcapabilities [virttype] [emulatorbin] [arch] [machine] [--xpath EXPRESSION] [--wrap] + [--disable-deprecated-features] =20 =20 Print an XML document describing the domain capabilities for the @@ -609,6 +610,11 @@ a standalone document, however, for ease of additional= processing, the **--wrap** argument will cause the matching node to be wrapped in a common root node. =20 +The **--disable-deprecated-features** argument will modify the contents +of host-model CPU XML, updating the features list with any features +flagged as deprecated for the CPU model by the hypervisor. These +features will be paired with the "disable" policy. + =20 pool-capabilities ----------------- diff --git a/tools/virsh-host.c b/tools/virsh-host.c index 2fe64e415f..f4e7324f42 100644 --- a/tools/virsh-host.c +++ b/tools/virsh-host.c @@ -114,6 +114,10 @@ static const vshCmdOptDef opts_domcapabilities[] =3D { .type =3D VSH_OT_BOOL, .help =3D N_("wrap xpath results in an common root element"), }, + {.name =3D "disable-deprecated-features", + .type =3D VSH_OT_BOOL, + .help =3D N_("report host CPU model with deprecated features disabled= "), + }, {.name =3D NULL} }; =20 @@ -126,10 +130,13 @@ cmdDomCapabilities(vshControl *ctl, const vshCmd *cmd) const char *arch =3D NULL; const char *machine =3D NULL; const char *xpath =3D NULL; - const unsigned int flags =3D 0; /* No flags so far */ + unsigned int flags =3D 0; bool wrap =3D vshCommandOptBool(cmd, "wrap"); virshControl *priv =3D ctl->privData; =20 + if (vshCommandOptBool(cmd, "disable-deprecated-features")) + flags |=3D VIR_CONNECT_GET_DOMAIN_CAPABILITIES_DISABLE_DEPRECATED_= FEATURES; + if (vshCommandOptString(ctl, cmd, "virttype", &virttype) < 0 || vshCommandOptString(ctl, cmd, "emulatorbin", &emulatorbin) < 0 || vshCommandOptString(ctl, cmd, "arch", &arch) < 0 || --=20 2.47.1 From nobody Sat Feb 7 21:30:24 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; 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=reject dis=none) header.from=linux.ibm.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1734390557705850.7269876699057; Mon, 16 Dec 2024 15:09:17 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id 1CE4E150C; Mon, 16 Dec 2024 18:09:02 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 51077154F; Mon, 16 Dec 2024 18:04:45 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id B40D21511; Mon, 16 Dec 2024 18:04:38 -0500 (EST) Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (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 A48F91533 for ; Mon, 16 Dec 2024 18:04:23 -0500 (EST) Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 4BGFJgVs011580; Mon, 16 Dec 2024 23:04:22 GMT Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 43jcpb54f6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 16 Dec 2024 23:04:22 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 4BGM3Wc9005523; Mon, 16 Dec 2024 23:04:21 GMT Received: from smtprelay04.wdc07v.mail.ibm.com ([172.16.1.71]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 43hnbn03wd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 16 Dec 2024 23:04:21 +0000 Received: from smtpav04.wdc07v.mail.ibm.com (smtpav04.wdc07v.mail.ibm.com [10.39.53.231]) by smtprelay04.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 4BGN4KNJ27197968 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Dec 2024 23:04:20 GMT Received: from smtpav04.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0564A58088; Mon, 16 Dec 2024 23:04:20 +0000 (GMT) Received: from smtpav04.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 56A9658086; Mon, 16 Dec 2024 23:04:19 +0000 (GMT) Received: from li-d664314c-3171-11b2-a85c-fa8047ef35bd.ibm.com.com (unknown [9.67.33.76]) by smtpav04.wdc07v.mail.ibm.com (Postfix) with ESMTP; Mon, 16 Dec 2024 23:04:19 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2,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=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=mG0jVHE2bTBWL+vzN RLX3CbR+14E5UeAr4W6w5/RaKs=; b=mPNKglkq/cu5H6EvkHqblzQXfTs9f/TBO AYPE7RxvHLYiZinReJo7DYi3i6PBy8/lGoloe6nX+YUCLS3RESQseN4WOlNJM7UV 5VebR+KWhLMYTKiIvcNiPn1736wM+IAjrsXA+A0ldCyWwhE12vsdCHHis7P6Z2j0 gT6S8f0G/u8u1kRQhC8I8wy6gHOLxO6bOPW1CEjNfsOdBT3iDQtKUU5AeMIgSHwr x/LRpWaIeWQEdcii5Y3hlqdv+Btx+i3CFH1YQiFryma0tVp61yoDJPjAShBTAj6u 0SZm/Wabyoel1+z0xODpPygd52Ny3BMTKuweb21AdfvWVFqP0c6qA== From: Collin Walling To: devel@lists.libvirt.org Subject: [PATCH v3 7/7] conf: add deprecated_features attribute Date: Mon, 16 Dec 2024 18:03:58 -0500 Message-ID: <20241216230358.60940-8-walling@linux.ibm.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241216230358.60940-1-walling@linux.ibm.com> References: <20241216230358.60940-1-walling@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: EaL6M1Pds0lST4a1D7Sxt9YIE7NieE36 X-Proofpoint-GUID: EaL6M1Pds0lST4a1D7Sxt9YIE7NieE36 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1051,Hydra:6.0.680,FMLib:17.12.62.30 definitions=2024-10-15_01,2024-10-11_01,2024-09-30_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 spamscore=0 mlxscore=0 adultscore=0 mlxlogscore=999 suspectscore=0 bulkscore=0 phishscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2411120000 definitions=main-2412160188 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: OK324WDXRFWGNNZ3DRN5WB5VKZ37PJPU X-Message-ID-Hash: OK324WDXRFWGNNZ3DRN5WB5VKZ37PJPU X-MailFrom: walling@linux.ibm.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: fiuczy@linux.ibm.com, jdenemar@redhat.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: 1734390559785116600 Content-Type: text/plain; charset="utf-8" Add a new a attribute, deprecated_features=3D'on|off' to the element. This is used to toggle features flagged as deprecated on the CPU model on or off. When this attribute is paired with 'on', deprecated features will not be filtered. When paired with 'off', any CPU features that are flagged as deprecated will be listed under the CPU model with the 'disable' policy. Example: The absence of this attribute is equivalent to the 'on' option. The deprecated features that will populate the domain XML are the same features that result in the virsh domcapabilities command with the --disable-deprecated-features argument present. It is recommended to define a domain XML with this attribute set to 'off' to ensure migration to machines that may outright drop these features in the future. Signed-off-by: Collin Walling Reviewed-by: Jiri Denemark --- src/conf/cpu_conf.c | 11 +++++++ src/conf/cpu_conf.h | 1 + src/conf/schemas/cputypes.rng | 5 +++ src/qemu/qemu_process.c | 11 +++++++ ...el-deprecated-features-off.s390x-8.2.0.err | 1 + ...el-deprecated-features-off.s390x-8.2.0.xml | 25 +++++++++++++++ ...-deprecated-features-off.s390x-latest.args | 32 +++++++++++++++++++ ...l-deprecated-features-off.s390x-latest.xml | 25 +++++++++++++++ .../cpu-model-deprecated-features-off.xml | 15 +++++++++ tests/qemuxmlconftest.c | 3 ++ 10 files changed, 129 insertions(+) create mode 100644 tests/qemuxmlconfdata/cpu-model-deprecated-features-off= .s390x-8.2.0.err create mode 100644 tests/qemuxmlconfdata/cpu-model-deprecated-features-off= .s390x-8.2.0.xml create mode 100644 tests/qemuxmlconfdata/cpu-model-deprecated-features-off= .s390x-latest.args create mode 100644 tests/qemuxmlconfdata/cpu-model-deprecated-features-off= .s390x-latest.xml create mode 100644 tests/qemuxmlconfdata/cpu-model-deprecated-features-off= .xml diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c index dcc164d165..31425783ba 100644 --- a/src/conf/cpu_conf.c +++ b/src/conf/cpu_conf.c @@ -238,6 +238,7 @@ virCPUDefCopyWithoutModel(const virCPUDef *cpu) copy->mode =3D cpu->mode; copy->match =3D cpu->match; copy->check =3D cpu->check; + copy->deprecated_feats =3D cpu->deprecated_feats; copy->fallback =3D cpu->fallback; copy->sockets =3D cpu->sockets; copy->dies =3D cpu->dies; @@ -450,6 +451,11 @@ virCPUDefParseXML(xmlXPathContextPtr ctxt, if (virXMLPropEnum(ctxt->node, "check", virCPUCheckTypeFromString, VIR_XML_PROP_NONE, &def->check) < 0) return -1; + + if (virXMLPropTristateSwitch(ctxt->node, "deprecated_features", + VIR_XML_PROP_NONE, + &def->deprecated_feats) < 0) + return -1; } =20 if (def->type =3D=3D VIR_CPU_TYPE_HOST) { @@ -748,6 +754,11 @@ virCPUDefFormatBufFull(virBuffer *buf, virBufferAsprintf(&attributeBuf, " migratable=3D'%s'", virTristateSwitchTypeToString(def->migratabl= e)); } + + if (def->deprecated_feats) { + virBufferAsprintf(&attributeBuf, " deprecated_features=3D'%s'", + virTristateSwitchTypeToString(def->deprecate= d_feats)); + } } =20 /* Format children */ diff --git a/src/conf/cpu_conf.h b/src/conf/cpu_conf.h index f71d942ce6..28e26303ef 100644 --- a/src/conf/cpu_conf.h +++ b/src/conf/cpu_conf.h @@ -161,6 +161,7 @@ struct _virCPUDef { virCPUMaxPhysAddrDef *addr; virHostCPUTscInfo *tsc; virTristateSwitch migratable; /* for host-passthrough mode */ + virTristateSwitch deprecated_feats; }; =20 virCPUDef *virCPUDefNew(void); diff --git a/src/conf/schemas/cputypes.rng b/src/conf/schemas/cputypes.rng index 3a8910e09f..8edf1d14e3 100644 --- a/src/conf/schemas/cputypes.rng +++ b/src/conf/schemas/cputypes.rng @@ -439,6 +439,11 @@ + + + + + diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index bee7a39e4e..5f2e278156 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -6399,6 +6399,17 @@ qemuProcessUpdateGuestCPU(virDomainDef *def, &def->os.arch) < 0) return -1; =20 + if (def->cpu->deprecated_feats && + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_DEPR= ECATED_PROPS)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("toggling deprecated features for CPU model is un= supported")); + return -1; + } + + if (def->cpu->deprecated_feats =3D=3D VIR_TRISTATE_SWITCH_OFF) { + virQEMUCapsUpdateCPUDeprecatedFeatures(qemuCaps, def->virtType, de= f->cpu); + } + return 0; } =20 diff --git a/tests/qemuxmlconfdata/cpu-model-deprecated-features-off.s390x-= 8.2.0.err b/tests/qemuxmlconfdata/cpu-model-deprecated-features-off.s390x-8= .2.0.err new file mode 100644 index 0000000000..936d1d5a46 --- /dev/null +++ b/tests/qemuxmlconfdata/cpu-model-deprecated-features-off.s390x-8.2.0.e= rr @@ -0,0 +1 @@ +unsupported configuration: toggling deprecated features for CPU model is u= nsupported diff --git a/tests/qemuxmlconfdata/cpu-model-deprecated-features-off.s390x-= 8.2.0.xml b/tests/qemuxmlconfdata/cpu-model-deprecated-features-off.s390x-8= .2.0.xml new file mode 100644 index 0000000000..e1f7ba3857 --- /dev/null +++ b/tests/qemuxmlconfdata/cpu-model-deprecated-features-off.s390x-8.2.0.x= ml @@ -0,0 +1,25 @@ + + guest + 22782664-6b93-46bf-9595-317220dd2d1c + 219100 + 219100 + 1 + + hvm + + + + + destroy + restart + destroy + + /usr/bin/qemu-system-s390x + +