From nobody Wed Aug 26 17:02:27 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1783415712; cv=pass; d=zohomail.com; s=zohoarc; b=Tjw1qS/mipAqSJolEnmWjm0B5+9FSNHSNvAfgJ70RFzORSgI/xw1y45y1X2/Cum3/CRn+0cDfQKUEKiNUn8PbB0aoISY1rT5UPP06Q7Yd85ZocPU1xeWBYMmnvf0Al/fd/p83Sz15A4BmnhVGpXDxhMTvEDnAyc02Z6Q9NPojpw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783415712; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=jizpJAvjKlo0dS3B0pVEWuJKSpR50QLWMJqUxi2Hjx4=; b=c8s4uxCxMEuTJ+4TLJGEB0J8ffOLtebyFKeq1OkUAFCUSD1f1ztx/0mXwnSO57G32ZLLUsSADPsALMZaZ8qTJFT/Ur4yAtLevDIwheRU3sJbnnrtfLDvU+hJ1d+mzGbsEqOUr60SOHccLPxHUtslKyj8vKEvl+gI97fFH/cNkYo= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1783415712402596.0569964690844; Tue, 7 Jul 2026 02:15:12 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 0D63C4199B; Tue, 7 Jul 2026 05:15:11 -0400 (EDT) Received: from [172.19.199.7] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id C265741E17; Tue, 7 Jul 2026 05:05:16 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id E689A3F951; Tue, 7 Jul 2026 05:04:02 -0400 (EDT) Received: from mx0a-002c1b01.pphosted.com (mx0a-002c1b01.pphosted.com [148.163.151.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 777E541DAB for ; Tue, 7 Jul 2026 05:01:23 -0400 (EDT) Received: from pps.filterd (m0127839.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6678Fjrr1838013 for ; Tue, 7 Jul 2026 02:01:22 -0700 Received: from co1pr03cu002.outbound.protection.outlook.com (mail-westus2azon11020078.outbound.protection.outlook.com [52.101.46.78]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4f718cdvdc-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT) for ; Tue, 07 Jul 2026 02:01:22 -0700 (PDT) Received: from DS0PR02MB10202.namprd02.prod.outlook.com (2603:10b6:8:1aa::10) by MN2PR02MB6622.namprd02.prod.outlook.com (2603:10b6:208:1df::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.14; Tue, 7 Jul 2026 09:01:20 +0000 Received: from DS0PR02MB10202.namprd02.prod.outlook.com ([fe80::6312:3f4:fe13:41d5]) by DS0PR02MB10202.namprd02.prod.outlook.com ([fe80::6312:3f4:fe13:41d5%4]) with mapi id 15.21.0181.008; Tue, 7 Jul 2026 09:01:20 +0000 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.9 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=jizpJAvjKlo0dS3B0pVEWuJKSpR50QLWMJqUxi2Hj x4=; b=YPfC3SURk0k59uyPCynskJb3DdHm1h5K5KUh0IIGQWmGUkmhct94esLLv GjNpJA20nmEXDWQmk0bxVDLc6IA4y4ykaCgwxSS1zhtplhnyoDicVtlCNjY0TCdb Bw7F9DKLyAHZnYG3LEhs9CcIYRKeWNv4yqTSJuY1TxeZiBfgcyx+uCkaBqGxgzxd B0HRSzogKV+bRP3R/GSAT+l2U14/Pd0275VA2EKfVo1+ir1BdlQhY7bHtXsgz9tl iwyQm6azvWWuLDpG85cLsaKyFG83fUhaCUeq8OIyvkeviS4Pnnn+QqgQzaidQlkX tCYJA0tD24mVHhlKQ8//czx4YjjGw== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uiKWSEW5YDAJOo7TjaQXK+f+3+nZbrEKAioO/hmz2Jn17kfvVJ9fUJqY3zjkkvMMP6+pBe56i60L4KKehIgLdJ5yiz84S7degFc/mlyoH1WROuvJarxSIRs739JVGLMs1exz32A3qUAxH5s7GVdlJ7CIJVQiFcFqUR/l99eVviTxsS5pUEgC72AG81E6CDDyzCYOUcDtuQhDsKahi10L61c5tDxDGp0cQ+IHDuMnmV+VuOiZ4/HK0I5PuafRebbCo8szk00F42C0juq/zyZ4fmLQ5efVVIJzNSUfj0O2M9ekuawRCKRdOrODwhuUqp7ss3T1Of78zZoBVunRbd5NrA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=jizpJAvjKlo0dS3B0pVEWuJKSpR50QLWMJqUxi2Hjx4=; b=BW4RwjVJOSW/4QREmS/ajRerX/4hV4fN/CwQApeuKRJOEm6P30P0Vqh/gOlVfy6pQ5ilO1ANc3RcdASa+f7ycklMwkAe/uLl6kg0iVFe88PaF0lB1kjURAgYqmlnLW/NKmn7LIasyuxzbEqm4UawPAPhudY/V9u+IN7dxhwo3k72Oj5EYTvgJMR4LXFG0l+ghMXqYxNFtcPog9tHkgdCb6xzPB0bdM+/zd2XR5kFQCAR5gdxXv6vT8lEPSr843Okq8RAWe7V8kUsg+I72dzbO0SOHsxwWZXWAZUBD660j7B6aaUFKy2VcvEwhhWzMl1rlunl7wdHuhiEIiAjqoXF3Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jizpJAvjKlo0dS3B0pVEWuJKSpR50QLWMJqUxi2Hjx4=; b=whMCe7OboX8uzHDjMJGtU1hg/j7mZyCNFt4dfyrFL++W3wQ6sb7y8ATtJkUVWa0tDAcX6ypgJpknXcTxKnag0STQvmMjAvhrFIAWLwX/OyrcujY0ieHuFKvyCPBobqUUVXP83yMHRg0w4pfB7QRmMvRTDYaj+d0QftLfMYX+Iksc3m5Fkk3/sOjAD3ZXfKWOAIdjW2HwTSN8723a+d9JBreKJoRl90pPMUVQ2kBrwOeHDmsPY0eYQXd6s1vTlkswSb05Su3R1l53OBm3+lJi9qRg7093ZaCS6c7XjAKPv+CaynCnWB+ChYnYFA2OIWceb3Jp053Fh64aVBXnQxNXLQ== From: sandesh.patel@nutanix.com To: devel@lists.libvirt.org Subject: [RFC PATCH v2 5/5] Support 'value' attribute on CPU features Date: Tue, 7 Jul 2026 08:24:00 +0000 Message-ID: <20260707083129.1138945-6-sandesh.patel@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260707083129.1138945-1-sandesh.patel@nutanix.com> References: <20260707083129.1138945-1-sandesh.patel@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: CY5PR13CA0030.namprd13.prod.outlook.com (2603:10b6:930::18) To DS0PR02MB10202.namprd02.prod.outlook.com (2603:10b6:8:1aa::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR02MB10202:EE_|MN2PR02MB6622:EE_ X-MS-Office365-Filtering-Correlation-Id: 82e9bf4d-b3f4-405d-2183-08dedc064fe6 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|23010399003|1800799024|366016|18002099003|22082099003|20052099010|6133799003|3023799007|56012099006; X-Microsoft-Antispam-Message-Info: 2nnIYvUjfs7Mm7ukQ/eKielHZB76i1ZphkVmnRx6jXHdvL/yKLD0hGausRF5H6r+2AZLWbpFk5Pbh3cRuUlMpNVZDAmReMyxCOLyT80rBWMoLTEOYU5toChV8bX3GkaFIfrfRS3lc01YmIyvB+99UjqfDMviq1f4cyLDQkeN+uc1UTeVYtT2mDPY7PqSFLTOBhtKeG0oisaLG10uBdTe4uvXC5dEmq1X7EuuPW15FacT0G/h7iQoZ2sPEUf2/0StzI6GnRYnEdobl1nO2uf3eEADvk1xjKiNY5A6N9Kp65/6fsva+avul07jHFsOwVc+abW/exU5U9dNFO5faKzKV4TVwHNxRHqOcImEPKnWVYHYpMHqGSUjg0k1DeWU5YH7P1l7C15Coa+P4iLaBYUAyFmLlOkZu0+i71tuV1zPaCGrwLOK6ruJmLZmFOVZANO1pJGf1CoU+VWrwZiJeuV9xxL6jlKMQutSfRxHAq6u19lYglPYlVg9CZ6Wbj22wGnCbpO2Y5UIWo2SXMAz9gYx7tczztgC755IF9FQn7aneXMWpwsGXAbRjkFvORqXAd0PDkYhcypbqtkyZ6wS+dQZ8N5jfEryZ/y7zCPNrOWceuwoDIY6oBQuy+MZVsUiRB5dRMi5YeD+MTL00BiyUAO9unC+rY5/E9Tw5mkDZFlE3po= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR02MB10202.namprd02.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(366016)(18002099003)(22082099003)(20052099010)(6133799003)(3023799007)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QrSY7ij8/UfvYAZlayMLsP1z5745j7/aQ5V+bZY0dGaYpqAA3jW96oUxvM5P?= =?us-ascii?Q?pPjkkzdiIIekjrgfVrHfS5jo09oG0iWeS1EMydwL+xnD7V3LtVJgQhFVLshO?= =?us-ascii?Q?PI5nambTIYxSPy/ExTW72dfif3nuTvv3qP4sNPDqUXJEa4FAs2q1K/rZ00PU?= =?us-ascii?Q?gQymFmpsprwI/4nXFdhL0y961ecZvjkRcxmcZAiubbJHPdbRSxk+eES7JZhf?= =?us-ascii?Q?rgqpMzWHCpKUYEYkO5lYC2tLwEUzKKsRkKOEvXdayTDCMXRU2YCodIbQBlCY?= =?us-ascii?Q?edpd4bKYOYxRc2en06UFo/SNUCScZsgqDC4+9gk2sJe6wC0ldeo2wf6xT/ZO?= =?us-ascii?Q?sqlAQjy9a2rILjlKSHoj5QVSQglNW0PIdUVc2UpnhWEU/rVwCTjU5jxQncUc?= =?us-ascii?Q?YrlKaegZV6j1n8pw0yAogZZOklPcgrxBDhEueVKblMPDPIOYMgzUurXXTb+J?= =?us-ascii?Q?mYiK4QdL/VDegd82zOtJ6V1rbUFCKxNBsdSb8DA8H2XM0C9EoOb9BJjGPcip?= =?us-ascii?Q?BC2suyJgnm3TZYWbgUj2LtCy6fkCCf6Ou8Xsvv+AMGl9OPPoG4FuG7pMph5b?= =?us-ascii?Q?focXQRgX0mZ6CosRQSZnaFKPOi7yr0Kkbfmu/QKkbtRw4zIN1QCGlBIw9dgQ?= =?us-ascii?Q?+GXeRNEAeZwtUtD8VDvyGQfEBywKqer1dEw9REoEY/zQm9rIF4pP0ta91AvR?= =?us-ascii?Q?kx3OrJZxs7pgglW2w9bXtnzw9ZrjUHy00ikO3FaX0aQ8yr4e1htCgn/Pbwuf?= =?us-ascii?Q?rDjIO1n4sciP7h8rSjS+0fXnxlUupeI4mOtFOTBvDA92Er8+56kiEx8esMng?= =?us-ascii?Q?BTFhP0vmfbUI2SnzFPoD7r2qAm88hAlq0mXiXHw5uiYsGzaM4djqh/qD/0FU?= =?us-ascii?Q?ib6NRXjvHlPio1Gewga+38lHsmtTdS7jsCkbJ1pMZMu09UiGnin+wer4lpA0?= =?us-ascii?Q?M4WlsC9hR3oPWcUlVMSunNPFYD6JKV5Qp9Cx0oSbb4phLt6nDIt0Pn4Yi3vA?= =?us-ascii?Q?7xSv0V64McsJ2oCCAG0NDsmOH54uKViB+pKi/wY3pW5qXka2oCJxGJLmsUDd?= =?us-ascii?Q?79h56iAGY+ONGl+F38lVIcWCk/XvaJw4dtreD6FOlJet1g0DRx4WLtfwdmnS?= =?us-ascii?Q?bOQtV1xec/DOJIE6Uoi4fViQFSoGOpYNOmWth89VTTA93PubSKP6gQ2+FECw?= =?us-ascii?Q?QT2ceLzidTkzdLXrWoGgGKfFmJt+tmFFMdU6YBqOnKfqXQj7sPRt8Jke4Zza?= =?us-ascii?Q?yN9zOqblNCEHCOMcyXZ4WIID/jAjhnI1Je60Yfv+D/Ug4hIn2yrSF9VKMK5I?= =?us-ascii?Q?wgMdkgkZ2ZOzWohWavZs3bCwAPMgZil8PaSUJqc/kkhF3bL0+dsJdXmNeW1S?= =?us-ascii?Q?Vc8qM+JaFltLhg5313yGkQgraebEhO62WrV9rzFiTTvsrnJKAIRw1HhsmjMA?= =?us-ascii?Q?Atk8vs+nCKLCHGkdalzmT/zPWKPLJbR/Puqa0LcNdX7QgfkZDb3rYZk05PP+?= =?us-ascii?Q?10KY8Uhc5HUj59M0MW5G8EDxQ/G5+ziUzlfKyrzH2jlcD58o4n3jGT0zMovV?= =?us-ascii?Q?mF/zOxvJt5/75OSBVk7pGvdXRu/iVbRY5iF+A11e9kzJbg+g3c9kY2joWrTI?= =?us-ascii?Q?YUifW7hoFHxLREYdWxx2AHCntJFhociPCooUCOae2uBOdyz2xTZIPap1eqcJ?= =?us-ascii?Q?6hGfERhDhOlOgZGJnpC9CS6alznkw6W6HXT3Ps1tEYCHTRH6ln1HUbwSw6Cm?= =?us-ascii?Q?COd+qRm807/SQVjx9OezIhkQBevgABM=3D?= X-Exchange-RoutingPolicyChecked: DyASf+s/8W6lB/B6MZk3u0gAwbAg3Uz09j+1NAk0kkHI2g03G+0zMU6bTAHFYQMdWEdjnmsmN21YZlVY8XS9Fl0YkCx8EZkqN8SPMhXiN+ySaMZB8cSl9wESG+p1QI8E6y4dm9Kc2H5tfOjZQ0yL+mnc/BHgf1lweSlf061Z8emKK2ApNcKlN4rLyetJStcxyFoHjqosJKsmU4p1V7RY0EZIx221ITdrEfLkPhQQ2sTfbG/D2+gSWVPNYBlXkJnR9OUhXZuglpjzqZ64cRTipM1+Od0ZTFxBdLWCu/+8u4advK0G+LcuN0CGjHU/wn6LdYRmJ5qyjCCkE9z1UiGCXg== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 82e9bf4d-b3f4-405d-2183-08dedc064fe6 X-MS-Exchange-CrossTenant-AuthSource: DS0PR02MB10202.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2026 09:01:20.5185 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: G/XVT2OtIOSuKoqZfSlyTx7i+VFh+XMLtYhrayR1vWowIBELhf+qgTMcrG6qqQK/SyZJLuslfeekePyKg55Zu4FQ7Fxf3Tfv46577wcmFqA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR02MB6622 X-Authority-Analysis: v=2.4 cv=ZbQt8MVA c=1 sm=1 tr=0 ts=6a4cc062 cx=c_pps a=x8fXg9NzY3hbHNzXWQS9+Q==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=RAioF0-LDSMA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=y4UcunY2MAxhM4LwGdWI:22 a=64Cc0HZtAAAA:8 a=txQCF6yvcDRsvA0MbSIA:9 X-Proofpoint-GUID: EhKzqhxaHo-y839A4OJ1DpZss1t8gYU8 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDA4NiBTYWx0ZWRfX+Yk8d5Y/BBUk OBvuFvZJ8IagDz9eORFJ53eZ6gegtmkqDh0zfUoAn2ff3JMfyqf+YcZ94KoWzdKLao/0I87S1/4 wCET6C3bdZhI7SzGnS6NiYXdk28rvmo335o+Xud6DLcLslg5kTcKUL9aBrfX+Bp6fpGF+IU1A94 8+fk7/hSfUpfr3xWk+xE0jnXfKdqr6JjiCa47pI29sytHf9mWQbMNyW04O3kNjwSm/AccLQMBj/ LdNfZ4uuhX/KMbxzDjzGF262DT+vJ1qRU3HRBWfhVXEzy3L8I2saO/ZDAr9so6txzzpL5kSejSQ GfN8Kpm3+A9IF3eaSfqLxfmAf0A6qCzL90uYbQdtfigmIJKGrTIX4c3p0VKofsjJ5KG3LRYAblz qNcs7K2taefJGUCfvBNSEfYDLFWb83lraY9v1zPMmjgmD6Q+GF7ydWq6iQhxQunQg09+QQFB/Zn 5sOi48/LGizacnqXV6g== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDA4NiBTYWx0ZWRfX9wtPv3lbSJ/b ZtRRQrs2TNTAjq8XmQfF2g8A3uc6r1Sr5Mg7lrOi+L4WrNsb5/WbBoMJD/9MrZPI92PN91V4sfs bi/SQ7ba7i7TTVcODoXSEOlh+VCOIoo= X-Proofpoint-ORIG-GUID: EhKzqhxaHo-y839A4OJ1DpZss1t8gYU8 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_02,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Message-ID-Hash: L6UIE57DM2SWR65JGKS5A6YZY2U26CDQ X-Message-ID-Hash: L6UIE57DM2SWR65JGKS5A6YZY2U26CDQ X-MailFrom: sandesh.patel@nutanix.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: shaju.abraham@nutanix.com, khushit.shah@nutanix.com, Sandesh Patel 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 @nutanix.com) X-ZM-MESSAGEID: 1783415713729158500 Content-Type: text/plain; charset="utf-8" From: Sandesh Patel ARM CPU features exposed by QEMU are not pure booleans: each property may take one of several QEMU-defined values (e.g. "1.0", "1.1_base", "off"). To let users request a specific value, extend the guest CPU XML element with an optional 'value' attribute: Signed-off-by: Sandesh Patel --- src/conf/cpu_conf.c | 21 ++- src/conf/cpu_conf.h | 1 + src/conf/schemas/cputypes.rng | 5 + src/cpu_map/arm_features.xml | 171 ++++++++++++++++++ src/qemu/qemu_command.c | 13 ++ ...res-values.aarch64-latest+armcpuprops.args | 34 ++++ ...ures-values.aarch64-latest+armcpuprops.xml | 46 +++++ .../aarch64-cpu-features-values.xml | 30 +++ tests/qemuxmlconftest.c | 2 + tests/testutilshostcpus.h | 74 ++++---- 10 files changed, 357 insertions(+), 40 deletions(-) create mode 100644 tests/qemuxmlconfdata/aarch64-cpu-features-values.aarch= 64-latest+armcpuprops.args create mode 100644 tests/qemuxmlconfdata/aarch64-cpu-features-values.aarch= 64-latest+armcpuprops.xml create mode 100644 tests/qemuxmlconfdata/aarch64-cpu-features-values.xml diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c index f5a2004ee6..bd23a1cf47 100644 --- a/src/conf/cpu_conf.c +++ b/src/conf/cpu_conf.c @@ -101,8 +101,10 @@ virCPUDefFreeFeatures(virCPUDef *def) { size_t i; =20 - for (i =3D 0; i < def->nfeatures; i++) + for (i =3D 0; i < def->nfeatures; i++) { VIR_FREE(def->features[i].name); + VIR_FREE(def->features[i].value); + } VIR_FREE(def->features); =20 def->nfeatures =3D def->nfeatures_max =3D 0; @@ -184,6 +186,7 @@ virCPUDefCopyModelFilter(virCPUDef *dst, } =20 dst->features[n].name =3D g_strdup(src->features[i].name); + dst->features[n].value =3D g_strdup(src->features[i].value); } } =20 @@ -652,6 +655,7 @@ virCPUDefParseXML(xmlXPathContextPtr ctxt, =20 def->features[i].name =3D g_steal_pointer(&name); def->features[i].policy =3D policy; + def->features[i].value =3D virXMLPropString(nodes[i], "value"); } =20 if ((ncacheNodes =3D virXPathNodeSet("./cache", ctxt, &cacheNodes)) > = 0) { @@ -894,12 +898,17 @@ virCPUDefFormatBuf(virBuffer *buf, feature->policy); return -1; } - virBufferAsprintf(buf, "\n= ", + virBufferAsprintf(buf, "name); } else { - virBufferAsprintf(buf, "\n", + virBufferAsprintf(buf, "name); } + + if (feature->value) + virBufferEscapeString(buf, " value=3D'%s'", feature->value); + + virBufferAddLit(buf, "/>\n"); } =20 return 0; @@ -1194,6 +1203,12 @@ virCPUDefIsEqual(virCPUDef *src, virCPUFeaturePolicyTypeToString(src->features[i].poli= cy)); return false; } + + if (STRNEQ_NULLABLE(src->features[i].value, dst->features[i].value= )) { + MISMATCH(_("Target CPU feature value %1$s does not match sourc= e %2$s"), + NULLSTR(dst->features[i].value), NULLSTR(src->feature= s[i].value)); + return false; + } } =20 if ((src->cache && !dst->cache) || diff --git a/src/conf/cpu_conf.h b/src/conf/cpu_conf.h index 0cac1a1489..c0bab0765f 100644 --- a/src/conf/cpu_conf.h +++ b/src/conf/cpu_conf.h @@ -96,6 +96,7 @@ typedef struct _virCPUFeatureDef virCPUFeatureDef; struct _virCPUFeatureDef { char *name; int policy; /* enum virCPUFeaturePolicy */ + char *value; /* optional property value; currently only used by= ARM CPU features */ }; =20 =20 diff --git a/src/conf/schemas/cputypes.rng b/src/conf/schemas/cputypes.rng index 8edf1d14e3..e50fb2c385 100644 --- a/src/conf/schemas/cputypes.rng +++ b/src/conf/schemas/cputypes.rng @@ -78,6 +78,11 @@ + + + + + diff --git a/src/cpu_map/arm_features.xml b/src/cpu_map/arm_features.xml index fc80a3b5bd..bfeaa244dd 100644 --- a/src/cpu_map/arm_features.xml +++ b/src/cpu_map/arm_features.xml @@ -22,4 +22,175 @@ =20 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index e726dc661c..77f925ee2b 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6516,6 +6516,19 @@ qemuBuildCpuModelArgStr(virQEMUDriver *driver, const char *featname =3D virQEMUCapsCPUFeatureToQEMU(def->os.arch, cpu->features[i].nam= e); =20 + /* If an explicit value is provided, policy must be 'force' or 're= quire'. */ + if (cpu->features[i].value) { + if (cpu->features[i].policy !=3D VIR_CPU_FEATURE_FORCE + && cpu->features[i].policy !=3D VIR_CPU_FEATURE_REQUIRE) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Feature %1$s with explicit values must h= ave policy 'force' or 'require'"), + cpu->features[i].name); + return -1; + } + virBufferAsprintf(buf, ",%s=3D%s", featname, cpu->features[i].= value); + continue; + } + switch ((virCPUFeaturePolicy) cpu->features[i].policy) { case VIR_CPU_FEATURE_FORCE: case VIR_CPU_FEATURE_REQUIRE: diff --git a/tests/qemuxmlconfdata/aarch64-cpu-features-values.aarch64-late= st+armcpuprops.args b/tests/qemuxmlconfdata/aarch64-cpu-features-values.aar= ch64-latest+armcpuprops.args new file mode 100644 index 0000000000..05efb141c7 --- /dev/null +++ b/tests/qemuxmlconfdata/aarch64-cpu-features-values.aarch64-latest+armc= puprops.args @@ -0,0 +1,34 @@ +LC_ALL=3DC \ +PATH=3D/bin \ +HOME=3D/var/lib/libvirt/qemu/domain--1-aarch64test \ +USER=3Dtest \ +LOGNAME=3Dtest \ +XDG_DATA_HOME=3D/var/lib/libvirt/qemu/domain--1-aarch64test/.local/share \ +XDG_CACHE_HOME=3D/var/lib/libvirt/qemu/domain--1-aarch64test/.cache \ +XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-aarch64test/.config \ +/usr/bin/qemu-system-aarch64 \ +-name guest=3Daarch64test,debug-threads=3Don \ +-S \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/va= r/lib/libvirt/qemu/domain--1-aarch64test/master-key.aes"}' \ +-machine virt,usb=3Doff,gic-version=3D3,dump-guest-core=3Doff,memory-backe= nd=3Dmach-virt.ram,acpi=3Doff \ +-accel kvm \ +-cpu host,feat_RAS=3D1.0,hw_prop_API=3Doff,hw_prop_WRPs=3D2 \ +-m size=3D1048576k \ +-object '{"qom-type":"memory-backend-ram","id":"mach-virt.ram","size":1073= 741824}' \ +-overcommit mem-lock=3Doff \ +-smp 1,sockets=3D1,cores=3D1,threads=3D1 \ +-uuid 496d7ea8-9739-544b-4ebd-ef08be936e8b \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=3Dcharmonitor,fd=3D@mon-fd@,server=3Don,wait=3Doff \ +-mon chardev=3Dcharmonitor,id=3Dmonitor,mode=3Dcontrol \ +-rtc base=3Dutc \ +-no-shutdown \ +-boot strict=3Don \ +-device '{"driver":"pcie-root-port","port":8,"chassis":1,"id":"pci.1","bus= ":"pcie.0","multifunction":true,"addr":"0x1"}' \ +-device '{"driver":"pcie-root-port","port":9,"chassis":2,"id":"pci.2","bus= ":"pcie.0","addr":"0x1.0x1"}' \ +-blockdev '{"driver":"file","filename":"/aarch64.raw","node-name":"libvirt= -1-storage","read-only":false}' \ +-device '{"driver":"virtio-blk-pci","bus":"pci.1","addr":"0x0","drive":"li= bvirt-1-storage","id":"virtio-disk0","bootindex":1}' \ +-audiodev '{"id":"audio1","driver":"none"}' \ +-msg timestamp=3Don diff --git a/tests/qemuxmlconfdata/aarch64-cpu-features-values.aarch64-late= st+armcpuprops.xml b/tests/qemuxmlconfdata/aarch64-cpu-features-values.aarc= h64-latest+armcpuprops.xml new file mode 100644 index 0000000000..55b24fb771 --- /dev/null +++ b/tests/qemuxmlconfdata/aarch64-cpu-features-values.aarch64-latest+armc= puprops.xml @@ -0,0 +1,46 @@ + + aarch64test + 496d7ea8-9739-544b-4ebd-ef08be936e8b + 1048576 + 1048576 + 1 + + hvm + + + + + + + + + + + + + + destroy + restart + restart + + /usr/bin/qemu-system-aarch64 + + + + +
+ + + + + +
+ + + + +
+ +