From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649087; cv=pass; d=zohomail.com; s=zohoarc; b=bg5qYK7ZRMFRrsiAHb5N28sAxfTWroA/r0Tm//xnLV76ZLEaKJWGmO54HUK7BbgYnUyZwPP8Izuu57lS2ahS1UkzIxqfTxgreFESkNPLr8Hv9QpVGFyLte0kLdP33Q5TfoY/LtsBiDRNXtrDit9fQCO5bu3AWZ6NMP91WcJVAOg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649087; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=MAJc1HSlhF42Nhair8GxtbMGy+jMY5MHL+2Mg0fExhE=; b=IvzEsD0NlcKIiGQbFgMs5P4WM52mQTL/CDVzpOGjDUkP+0fCmGKZCiSE50Tx27ZtVNuY7yJT6AYoWaFmfVaVEcMLgjPW+iikCqrkNoTdVGrmIGXsrv315pch+F1LzUkhqwee5Tof4i0q2+UuqiqB0SrEC1TuUW3Vvp/QIfLSYfg= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649087723826.5344831457817; Fri, 5 Jun 2026 01:44:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQAF-0006Tt-Uf; Fri, 05 Jun 2026 04:44:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQAD-0006Ri-CK; Fri, 05 Jun 2026 04:44:25 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQAB-0002dD-KB; Fri, 05 Jun 2026 04:44:25 -0400 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 6556OdLK854749; Fri, 5 Jun 2026 01:43:11 -0700 Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11021094.outbound.protection.outlook.com [40.107.208.94]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejupdmnv4-2 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:11 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by CO6PR02MB7812.namprd02.prod.outlook.com (2603:10b6:303:a7::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:09 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:09 +0000 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=MAJc1HSlhF42Nhair8GxtbMGy+jMY5MHL+2Mg0fEx hE=; b=AAAbjGtt3qc7gnfwVkuFVJMEdbOPoT+MX2u0jE5Jsm3ziOzgBIUDp4ZAJ YgAx2s92MCFK/TL31cxb/+d04C/cT9eENsH0356lfqtP6nZQAdBHu+wcqlav92Fv HRVVki8hlYyAxEbmTxLjePnGvNSjGNqtr0Ye5Y2o8zJ7TPuaJc0f95DOFKwzsr80 AWTzP6Uj21lNdAKMd14vJL0QU6dHPSZlzBqWvFcx0jbR17+O+tMxUZreTC+wpdwl ECR6iCgMCmju+4F/Z1bSr4BqE58fYWq5vPrOrasLXVNLeoRbZWpmUWFz/PteWbDf 27l7zdX4ZuJfiQQI3w9N7gT1aTo4A== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=j4y2OAFirDy1e7hgaGagU8H09bv3pwhoRq5qetdIxwTqOW+vSf//vbvoly8bBzERSADkGi7WTj7irv1Z6MfF5WWBqrPgSUBnN3pPZHEOl8Veh9ZSfZuqNJhW02HvRAvTQoh126BYi+jnkngbwOuOKOkNcImVe8kAB6vGHXU4dCqN/HSWEy0gw6pnnEkvhIFKW0WeRIxYpjTDK7r5qVcGcoV7S5VttQNwrHCne60iGXZgxxEusp6e1ld4PtL+JN2g9Dp+gKHRhu0+h1VMNG6Mesdjw5BrqUNkLFvKWKP/5cA9Mh9B1qpjp9OS84HKNjT6YhFF2r01p7W0H/iDcdhg8A== 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=MAJc1HSlhF42Nhair8GxtbMGy+jMY5MHL+2Mg0fExhE=; b=K2mWT/YTMK8Pj/b5CpdQBnaf25iFIhbPwolbReXRcsdLxzwe4uhuYZklDCEle7qYD48C9yRCJud2CXIoNqWVkhREhWKFa4IuHDa/py8ckwNhiu9WUsjLE+UA4OK7sSBJDLhZ2FtPc3dJgke0fyGj6a0LY3twVW2I/G59UFkhIWyLW0uhhfwkM5fqLIstBMTswdq5trW/ilVuJ4rH/hDFtu3sk/y1OmLA0LNRzTOpFHEvyObu3IKscEuWSOkWlPBxBsY3Jv1cdPf3aflbsfWwrxROhIxuQAKi+kgztCzqo9hr0R1ASx0Mdhd+zE1ktFABZmIQaAT/qpqiB1rJ5KkfRg== 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=MAJc1HSlhF42Nhair8GxtbMGy+jMY5MHL+2Mg0fExhE=; b=yhv+t21loZFZ4wbRV9z0vRpV/1+jtpr+Wn5DPdE8dD3gJCZB1cPR+GLjGMT3yA4/QjqtHr7FS2sO1fmk7lewqTCciZwH2ax2p7r8gzu84WnI2z9rVbsHQycpX9bvNOWX29AbIYiugqGfwHbZGfDWbw/Z1e+NtZ7AwKg0xa2mhttsliEnTkaBdmJx21+NBWMwrR7Fd4OwKAqptZBZ3cfRkSsewHsEkDNtxI2VMDCmR45BijJQJGySxnZ3MxKH8wS+TaedTtEC+rC16vPN1/x4WmZHzkVjw1hJnW9TE4QUt9uESjKTwFej/yC0c9Ur2en1q5/DW1A3uoXg8Mi8UGcGrg== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 01/29] target/arm: named_cpu_model: define containers for ID registers and fields Date: Fri, 5 Jun 2026 08:33:30 +0000 Message-ID: <20260605083358.1320563-2-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|CO6PR02MB7812:EE_ X-MS-Office365-Filtering-Correlation-Id: 7f7b3d35-7e5a-46a6-41fe-08dec2de7848 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|7416014|366016|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: BJMUozMqFutWhSdX6sLjdlUVkOMNX/94dlFAxxeKZClMTrD3yfAoCTdUKIGcBrUnoaKlToVlHmfML0//dCwY2ruCWB4T8Ka4uClZXlVNXxDTw7yM0BQY6EfP1mXfH12Au0i1zEQW30zfXS68FR6T1Rav24QwGNjFl1oGUfza3yq4xoBClp8jsInYf5OCTaxebybPCGZvRXhSE2BMpsuPfkBHAGzH6kX9d3mjETMdEF+ncvlv2Wo8F22LuP3NbeRz8OssIDfIFkmnVSCV5h5xRBOcoXHY/OlfR/xpFzpCt2nVXT5kT7jkDWX02Jx9mw0u7hHoVsvAnfwpcNXeOO6Koh2hNa01u/pOrzmXp/bbCYzW665rPQsged+zhytGqsLxyC785R3kWwT0k3mVhlvuh+OXZ0G5IeBo/3Qap35TlRe7Hjw4ecI/BBxezl5MUZLMnFTDMtd7RxaYwwdmN3i2MEy1S261gz5gB6sgKP+/83TbwHgM2ccD4CPK2kYA8pCSCXOWvLkF9lnQd0xQhaf+miaL3IRYtUbjdTTnrGZrrZJTltEP3v86cDcEVZu/JONF7K/+uff4Wu0khv7nvgsrX25FW7ZMxwo9JUsF1U+2ATlowOR5WVe5lwauwhPPKLeivAjZGTnpR+mfYcnzrFdXpxVNop2M99A5lUWM6NJiTkLc9F2p6qMqrnufvaKdNjTf X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(7416014)(366016)(56012099006)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?OYzi6E4cuy0Iiw1TcYCy0FhtDRWTvLsE+eIVO/mUQyc+O+lPbwQFMXSk2IbY?= =?us-ascii?Q?zg61b3UEscD+e0Y7+BLwF2+2M2SJ3u4AZdJCwWOb/dL0fGZzstNdztIp/1m1?= =?us-ascii?Q?DD1A5RKJ5fiLj2o5xCdApnkSC9K60rD5OaWnF62SQflBU3gkiAymBOVCmqwE?= =?us-ascii?Q?+ANq84wJUwSVs50uJJPdcejLVgsSyQVLLRCKpQDa72cVboFAVnNdSazYrJW8?= =?us-ascii?Q?wFeYo1122Q3AF6vRBIyiAvZYuP5eWRg9JR+Oo+7rpMwwUBW71blxgOMR3Puq?= =?us-ascii?Q?qrBGpc5UbQiM/+v9H46dp1fxpwvDAlZiXfdZmZ+s3+w/a6JwoAY3vqN5Axb4?= =?us-ascii?Q?OR0+rlU3zDZZlXtuti1Fuf4MbGyVps/G5YsKwCX6jzMIBRYYFnGhdSjAIVRn?= =?us-ascii?Q?zQL5Ni/RHxYLVH/8g0M5sQ6tlDrLWIbpnMav0hEaJsnTT+ZsrgMxtHqo568d?= =?us-ascii?Q?K3dhjHlS1s2kP2RFI6ZrYReUmPd3sZ6l0ARG5xxukaG0T6DskaKHAXe+GgZS?= =?us-ascii?Q?6rBWfrP9A2T65Kl1wTxG0Vr+rN2YUUCuXNxYVo8Co5NFXGary9tCXad+xQrb?= =?us-ascii?Q?bZfam7zrphIEqIKJHlFhkFWj5bH8VVx7HrAMd5IOw+KS/WuI0/NqUbTX9CfM?= =?us-ascii?Q?diVz1W+CE3vddJQLd+ox+1nbcA58JLGAeundCnYExTrIb1p6g4o73M7de4Zl?= =?us-ascii?Q?YfdFL3DvwGKfJDWC3jV4b7nZx2ypInKz+aZUfcBzUBxK7p5s9s1TgniPcqPK?= =?us-ascii?Q?I8cAlJBowxy6ubc02EkE9bygNj6Tc8569SFLhOLXPpST58ujdbPTseYCMwq1?= =?us-ascii?Q?wAXzf6IaXhvJ+Z7Kqm252O39cQftrn1Z3Ii0K0Cun/4RPZQR8Zx8ozVYwawP?= =?us-ascii?Q?dqfMnIVPbL4qtS7YEKSU8VBFwMSRhFVoqoNIDAhlVGqDE74KYXk8mP4IgZCo?= =?us-ascii?Q?0fd8gzYPrNH8jPAXLpqjXkBoPgsdK7bR2i2yxjehXq2WINHE+J1RpN5eNEpN?= =?us-ascii?Q?VNblbIuNHIYEzTc29+DF9q2u9CB1GPBa8SuG2EDUJRdY71Kp8OSY51ODcqS3?= =?us-ascii?Q?QwXMX/SHOmFWgflLQAP1517RQ/Ko+A/rg7DKCJ82ZsxodfPGTS0y4fQBDZPc?= =?us-ascii?Q?AlsZqZPz1z+97lawFuPTHIox1EtO4nJA1LuDp694C+ewEUMf4famDe5psa/6?= =?us-ascii?Q?I6R/+P76ct7W/u1bveN11idSHtsdwM/5AdffBpzwpF+9/qbbbhpab7VPrULD?= =?us-ascii?Q?jTWy3ANI2ZTl7zdO2njpqyd6ZjfUw54F//XlBZXJ9vGFklIgAyWKZDesi9Gr?= =?us-ascii?Q?On0BG+m7QWdS2veFvLDRkTIFathWRuL8x9qsqjr4FboNUw45PpgHJf2qkaKI?= =?us-ascii?Q?fpjss4v2n0mRk55IOL2NRYSvPgdyyvBMCMdseemac5dMHmmceAFsqmRniRbe?= =?us-ascii?Q?pq1ZfWXMfNWZxsD1PfzfvqOAIBXe5qTqRIT8SdNwaICSem9tXaqczNXAzGeO?= =?us-ascii?Q?0UN7faNvJErFCDvnq3cdjhMHzwGxkzMWVb4XBivIrhZ0FHRFqE7egQNlv8FH?= =?us-ascii?Q?j1tl+M8a5WAXJgsopbkDHAwxKDqZGmE9wHcmnKi9rvB7Z9arCleNGEFEjOsn?= =?us-ascii?Q?wEyrCrQO61agg7gdwjQJ13eagQAO443Wmk8PZsahJak2VAY+8GpqqTYNtpW1?= =?us-ascii?Q?L04RPMwqorX9nZpamA6T95CglMMSoOmio44VQ4JWlUTmtKZ9sMYObLZxKn3y?= =?us-ascii?Q?k8TzoaUPHNsRjvPGQGOJFdKo96E8Vw4=3D?= X-Exchange-RoutingPolicyChecked: Sn3le/tfr6hQQTLlTFFc/71GPHsCwVEJXJe1aH2mAOMWZs9nyjWfqvelAm6buOH+YnuCYjFBfuyL1LNgo9bw4WKcd/Emui22P+/QNZYV+ifK63XTzFFVI28PtMTlaoC4Qy8hilKlzaBEWUybvdCYeCf+26kYOYnhjzIh/0kw3nvijleqNTXIxq7Bu50HPBZbZkSptge7M0J/l3ZJaAIq3A/WtyB6czWjWf6Bv+2CTEFrPyzou66Amk9MkKJFNjt+47N8PnbYyxm4Hnz5XJaQa9Jnm89hRKGW3p3jom4lY15elVZGO2rItqZSMaaemM9p5oPqDwZmcr5IjRK2hB+MvQ== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7f7b3d35-7e5a-46a6-41fe-08dec2de7848 X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:09.1044 (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: aPwsKqxiP9s3Zkv8CFSNNwE6Ux1mp0WqmVk+cvjaXR7/e8piiO9kse5rxWbS28oEIhJQ+nJWvtd6KjeRibCH/luucWrGgP9q2LVtaUPwxdE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR02MB7812 X-Proofpoint-ORIG-GUID: _6_hlpEpDPoNa6GCBknyb2xoMdOgV3dT X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfX0uHzNhQ3kG+A aSFxdMctQ344R7Ut4EeiwZzI0FVDHuVaR9UlVW01TaCDgsPqYsxCm2/eO0Z6y/Ja8e578SlR9+T Lks58PgzgdSLMVnH2mPomirlqnsyLgxPV/xTyVA7IFfWQw+x+NrIIbymx5wU202WknXmVjyKtOo Il/rhpFTGhqRVFjxbCWhQ6Haf9AXY9PS0/5I7Whz4MMAPqUl9UWqh9XzoV4N+8k19sN99KD77Up gr/ghD4uPalRhlyBGtkK25clAOoAvfKbHfzmJENCdSQZc051zYipumnkdHXAvFLMLurGdLPn1hK KTwcX5GDdoRwPrUjtkMZ98NstcNuBMu2tZxxk2Vrgj3Zkpj11KeLLUbUy4qWYmWQL4hRsnYNCaR tNr/umibYb1n83+aGx8X+16RUzSjbIiDgm7ZpSg7IYnuqGrkXMKtJgqeSPab6ncNu4rRL5YPGJc 97yLFb0M4BdWzXaz+hg== X-Proofpoint-GUID: _6_hlpEpDPoNa6GCBknyb2xoMdOgV3dT X-Authority-Analysis: v=2.4 cv=dYmwG3Xe c=1 sm=1 tr=0 ts=6a228c1f cx=c_pps a=Dy1/g0x6RHl9kMZQX3cATQ==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=y4UcunY2MAxhM4LwGdWI:22 a=64Cc0HZtAAAA:8 a=-fu_RHnTTDa4Pe3X_OAA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.151.68; envelope-from=khushit.shah@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649088899154100 Content-Type: text/plain; charset="utf-8" From: Shaju Abraham Define data structures for mapping the ARM ID registers and ID register fields. Co-authored-by: Khushit Shah Signed-off-by: Shaju Abraham Signed-off-by: Khushit Shah --- target/arm/cpu-idregs.h | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 target/arm/cpu-idregs.h diff --git a/target/arm/cpu-idregs.h b/target/arm/cpu-idregs.h new file mode 100644 index 0000000000..514ec39106 --- /dev/null +++ b/target/arm/cpu-idregs.h @@ -0,0 +1,41 @@ +/* + * ARM ID register field table declarations + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef CPU_IDREGS_H +#define CPU_IDREGS_H + +typedef enum ArmIdRegSafeRule { + IDREG_SAFE_LOWER, + IDREG_SAFE_HIGHER, + IDREG_SAFE_HIGHER_OR_ZERO, + IDREG_SAFE_SIGNED_LOWER, + IDREG_SAFE_EXACT, + IDREG_SAFE_ANY, +} ArmIdRegSafeRule; + +typedef struct ArmIdRegArchVal { + uint64_t value; + const char *name; +} ArmIdRegArchVal; + +typedef struct ArmIdRegField { + const char *name; + uint32_t shift; + uint32_t length; + ArmIdRegSafeRule safe_rule; + uint64_t default_val; + ArmIdRegArchVal *arch_vals; + uint32_t arch_vals_count; +} ArmIdRegField; + +typedef struct ArmIdReg { + const char *name; + struct ArmIdRegField *fields; + uint32_t fields_count; +} ArmIdReg; + + +#endif /* CPU_IDREGS_H */ --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649269; cv=pass; d=zohomail.com; s=zohoarc; b=IReam0EK2wtKbylnHWymVMxJjorZK9eXWL7rcG2P/a4o1RYsGqDDYh8cbzIlrymbqyngvvoElvkrXzZOUrTSIHZDFOj0D1JX5kYYHzwbDuOpam7RRNzbT4J/G5qXlfSjsMgiGP01bwyc4Wz/0X71jsdKnkUDPOEMrM4w221gkf4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649269; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=H5bJDT+nebcDfOdYoFWupGId+gIYw6aN3cesSkcxcaI=; b=kFheW7KhH+KdckYx63tVcrqu/o6msMZVOsfawNVXSyIqWHyBgPeoIFpxK5J5rY87KkMWPJYuvaBSOfz36zWBvG51t6z97UHjl+XDXuFVMRJ0//JYmz2+YmjZUBofPX2QKr+uBQnCTa5iqx2ekIPx8gQVcRLwqlss800+AjJQb5U= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649269893859.2579299703009; Fri, 5 Jun 2026 01:47:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQ9n-00067J-Td; Fri, 05 Jun 2026 04:43:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9l-00064n-5o; Fri, 05 Jun 2026 04:43:57 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9e-0002Vo-AH; Fri, 05 Jun 2026 04:43:56 -0400 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 6556OdLL854749; Fri, 5 Jun 2026 01:43:12 -0700 Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11021094.outbound.protection.outlook.com [40.107.208.94]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejupdmnv4-3 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:11 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by CO6PR02MB7812.namprd02.prod.outlook.com (2603:10b6:303:a7::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:09 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:09 +0000 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=H5bJDT+nebcDfOdYoFWupGId+gIYw6aN3cesSkcxc aI=; b=wRpRN6/aIvelEesWLpNCF5LtsrG4v72WNN+tv3WM5R6J+5i7EkzqRXeVc 3kJcP5Gj+w5YaUQ6Jys8nyTd7CTlUKRucvcbJJT1vnObsMxpXS4/9y6YcF9KZUHt TKuAt/N0QpZWmlyMtvDIqCe4LeSDWqbnXg87LO6J8mbvHwjC250/zV1tZM9OaRlx d+m8eCLSTXKf4FNEiDCj/U3G3CN7lWS+9pmTn8evWcXEVGtVfrw/LEyWMNZW5+jc a9OBGtSQ0MQ5jk67AsiTuEdV7uZ13LJ4n4eeLohc19Pb2kmTlRuZrKToMpcebX7S OSljWhucPm3pxrEnpzBnuvJukESIA== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YkcIiODYSYS2OrwMgwZRmcaKzZGCJjx3VATUvAWXWrhMfx/uk9jrCweA5gzuRVaDjFK5oAjsUTRIcbtEHm9IjSKhzzh8Wi7/AshuVSS81R8pSwJ5dNUxYKcTKfDCYiNJPYvtcxolQt8wfBacdzTw6loULCwBMCio8ky4jvWqGaI0GFkj0I0Tpi9u48DGnts98N617rlpoGZNtekjOMJA8r2DA+7hZxKx31uXY/j7NQec4LA38AdVzZtVzzPGEYS887funwWETDwznnTfr/ed94nDVLIoe3EVvzSWQs7WRBTMeBg4dSOVmbVaJcJ37vtDCMO5/r84V/jLOGnd/jg2+Q== 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=H5bJDT+nebcDfOdYoFWupGId+gIYw6aN3cesSkcxcaI=; b=bOk2AFgl/Se8CgRddahjArQZgWTNjZTxDUZj0y3o6l89IvbckBgizJCX9UXD72RDJ1kJK6hZevEHafoYVP+TecRGCtyhrhvbXG9hdO6J9KMxFInha8vN3ED+hX4HFlaVyS+bw1wnGmH/0yx2eOxAGbZOEFkWITxfWYRi1nq0+4WjbKS6VFqpqmKcEbFKw5eo9s8GiLpTr/VTPoQm4uj2DruUwNfV6VVU9Aiox/JipHAIdZ0aKiZmY9vUjHp6v/e2io9p6lWgjrBViBZ8UOxoJEgbmfJGlOf6bGUBr2GyIAvP+vOxAe9uqYmLTRCNuS8QyywCtp2K208SzOskgjMioQ== 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=H5bJDT+nebcDfOdYoFWupGId+gIYw6aN3cesSkcxcaI=; b=E0jNjfsfbKX+1a0CsWt2LyzE3/PghMnd6eg316Iuc7UlsYAd31zE05CopnXbeyKirTnyzTZYiZLGRcQrhVqS/+LHCjCdcyCqwxDa/LI1Uo3EGBraZYQSZkGJA8BQRyiwTNUgZ1HpGF6QBIcydV/J3vW71ZUF0chHYmQQg2XjmbJ/QDSAdllHClP2RvgqefJHMA8PwxXWUippiGMCJDe2v3dLeAEmXryoNy/2iCvpaBi+sxE+gZKop9992oi2u7+wqjZS9j/dNbUG/gRM3tnPSoDoxsDpssAJISTevA1Qj/cTbcxJ5Mmx2cqXuKpYrBdLSLzoM4i53WZ04GftWeZtAA== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 02/29] target/arm: Add ID Register field descriptions in cpu-idregs.h.inc Date: Fri, 5 Jun 2026 08:33:31 +0000 Message-ID: <20260605083358.1320563-3-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|CO6PR02MB7812:EE_ X-MS-Office365-Filtering-Correlation-Id: 011db8ce-e9e7-4443-6df0-08dec2de787a x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|7416014|366016|6133799003|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: Uu1S+OSEQPr0fIaTHXDbRPVwgckrVnKNMzZXesUOLF2Fpv2y/nPtAe60SDnEyRg2ImvNF8omD0dX5rn0z8LsuXO1igpX7LhY4YSA11LkQ1ZYkjKMzu82wLziZg3gY5erJDXw4nmcfQla+AxglbiNCsITHZw/sKqDQMcKXpOd9AjLYv77XjOtbWbect29MHTG1dh0q3SLnKbBAiZtF1p2XUTD92baHOkxueMJ7tjvj4OTc5wKtQg5d501egWV0W4Bau0TWTyMJfWQWnWjELP/84fVzG8/zDXFZ9jvMBdnidLNIu2Fzarc3MbfZGbMfqZdtu5hTV8pH78n5ylSevc7/DS3yIzXWD9360b8tCDZUmeF3aJCj/tBa5GB1OQSC2flW+QVILa9Pr2oG2GBaPclQQc1nX5QfD5FHVi9UXwz36QJK1NtXPvA60Q4Bvtz9nMo5VcDOVg5v32Qv38sjK4OpB8TYZd3/CPHLHAQr06LEi/v9lXJMHB5BEI/yC4eZg4Aqfmg0L0d1MIUU5rmariMaZkCe7t/m27R0WKhQrWuc1/JZI6GeG5qQmt8F5thWm3J4vOgN0ygI5l374E1LkkE0SC/dHRQJLbNNOnZ/yOkErlzpjru3x5mJXNIHpvRbtaNYZrisSWkUbIM2ZsUPt8+WDH0JRYe6PJmrwX7fgk4Ehpvdq0Zf+snzavPW4A9cYoa X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(7416014)(366016)(6133799003)(56012099006)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?qL6tGPtAVJA+V333l18ZqdXwgez0exbo5D50Wqxu2Zm7jXh9MvtEhS2v5Csg?= =?us-ascii?Q?I0z1xW/9AJeLUfhSGsa5h+47mfOHCr4MWH7JMu1mb4hGhql2pumUSFkqJsrG?= =?us-ascii?Q?qe9TXQ3AVGs8PSzvK+ns8RLHbYMYDec/Oh5WV1CIo0BeJhl1G8MFoYO6H99N?= =?us-ascii?Q?vMRkdOkShxTWligNS2qpz120o0Raf8FrwWty3X2u7ClDB/1TSFdCpTBibbVW?= =?us-ascii?Q?m6C7jmmbuQh3BqAo+EksNawrge1SVfCy7OXabQE5zFbbkAQyeB0hIsiiLLFE?= =?us-ascii?Q?z4s2cJqHzS3r/fHdPIVPboIcBwgaMMQstpknl4Gmolgg/J0tp+OQD3FT9c2h?= =?us-ascii?Q?ZmHEbrNHroj4AwyT8i5PGGeYnuL9X7sOMlWP18RbRh+3w2VqMBgqDUbCQNSF?= =?us-ascii?Q?kNZC9MdRpehYj/bw4IPpT8+KIyZINPD10Ge29oURDNUAJrbYA/ezmURH6D0C?= =?us-ascii?Q?+pZ23pdaWB3nBIxoUXHWhl16Fzuc2EVzdEPpe+BIb3wvDtOcvxBN7cCbKd3b?= =?us-ascii?Q?gfJF9jriqP9VvRdAzQ72r28qkUfww4h3lvr9AR/ZZ8kTELme4/8qvuu25y6Z?= =?us-ascii?Q?UgjbY0PNcX42xVsJ83rZn/hwU1qkNcar4KVOUJ8FpLXOkxGkUCPTrsFBWWEB?= =?us-ascii?Q?yeUdhXkIlYnHucv9xaG8PBIJM0Sla7vXIUrUrGxihWEwTuDWzClUtYDRyjk9?= =?us-ascii?Q?/xmc99jnJAzM+NEyMKHY5l1gcN5RRT4Lkfc2Q8yHu4p6c2TyRD0EgUPfHUqe?= =?us-ascii?Q?U9EaQ0rCfevpe8iwuYaZtE9VF/3iOJ5BETnCUQ9Uc6CgQRELJQkJlT6hQuhA?= =?us-ascii?Q?TH133u+FK/M8Ryj3ynhgrd5oPYLBlb6NtSyvOCIwFtijC4GA1mSeGVXOOdk/?= =?us-ascii?Q?vD46mmMrNrnQ1GZDqeahZsdFJtGEZarxBc6PveY8LpW4stdXGy5PH3ch4tnu?= =?us-ascii?Q?WKXfR8s27Ng0GxSWa14kafjZlzk6xAo4D0VrgRsMrZ+dbggk7kQZL/tx4LXX?= =?us-ascii?Q?7LElt8Nk8wagk8g7Bd/L6KqrehaXzPsL/KVTEy2DHWmuRf8CzbGSPIHcQ/1Y?= =?us-ascii?Q?8JyR9Ybksnl2rsJEU+t00dO/Ek3aPsDxCqRXi8pkDVpXTyzgWkZKMFs3WnTa?= =?us-ascii?Q?xKnIjuppOmkTLe2UKtJHXEllj4lGtdQyhnWsOCZMBFhVxhZS51csZ8v89WoR?= =?us-ascii?Q?ussjUdJfYMtIO2Gfa4rttTwcJtPkQjZg84R5c8AgsqxoIym5zpcDGpiqn1bj?= =?us-ascii?Q?v4azDf6wru54fgA1/vtR9ZCp00g2NLgfqWiGGwqxmEF6lv+s0UlhV1laBL+W?= =?us-ascii?Q?FOQT5KBKsZaVaXDBcLu4eUe1o9IpKqWnFyxIiWm+6EvDKj+ZR5PA8dsc6ZmS?= =?us-ascii?Q?1AKFaZ1FDMXtmTvm5Ju0nyxCngKFFeir1Q/mMb4Le4vuZt7d5dZ+hm+P/UBJ?= =?us-ascii?Q?fLYLp+Shl3uHm40GXrgT3Dd4bXjOmNAorFZLozNoSiRXW5ubyCttR9J+78nj?= =?us-ascii?Q?r5G9op/TSWthHOuy5wHtseshgVKoeWfw52WNqv3Xw+kXWTTbkYCZaNUuGKAw?= =?us-ascii?Q?HPNApoaSL9U83Srr/jsfYlPH34cA69iRSMrivmIOxK+h6LrwlELnFtGmK8zW?= =?us-ascii?Q?XDrVy2y6fyJhzZRrM1hhMeHukTGs8AsmmbWfIiYomBA+tAHt/KP7wLd7rkjP?= =?us-ascii?Q?n9AOpOR3b+8tDaLtrUjMeC6KyaYtdXftbsalN0oiiBPlKMAV1arPKi8wLY1J?= =?us-ascii?Q?oF3sUpazqXjYAWYB5oYes3EKsAdzMp4=3D?= X-Exchange-RoutingPolicyChecked: Yxn6QP7DImcElKVWfhrDolbkT22+RbVF/nKA+cBZlQe7BK1Ry7FSWiQYSiVXU5I4FI9B38lfZhtHPiCuq2pWVh6vbU03PoX85/YM2DYKGn62op+tboWaklsGdGEUVw0DR/D9jMfV9yGd7c6Na7aKGhg63skcS3S1Twex5MbvA2rb0kHVfNfql4+dawqfbBLw0zEj0cygHhSZ6o5Z+Px0oT3KKDkn5MBCc2xh4D7S4bZkLc2LvORg2zIz4c3WGPcjWFxbY2+3GAekqgjSWt9+RZwFAnLNhUXQ3U4uwZ4ZkbHD0Alr3N47r99HPkrkl8EeeFIY3zI6kc7gQFJvGli/rw== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 011db8ce-e9e7-4443-6df0-08dec2de787a X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:09.4458 (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: t8jPo8klywOWUKn0KdaKiVcFe5VrwvgYhnrRgWtxTezbX1ZDHVRdQF18yUvvrzj2+PTjb3I/dk4NzPGjPACmR495FSyWzRJfXWFIdAbkBdk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR02MB7812 X-Proofpoint-ORIG-GUID: ySeD7uxfBi-zUlyx2ZTEvLMgfhESow_P X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfX/NUSqVkjmNzp QzOnKWhyDdoHaOjRf5YPBx0gSzK5AxX6YqK9Gy3dxGComg4B02NdagbxJ2RfSJLL9+by1CdPI43 fALN8Dy+N2v1JHANLOnqmXpxaphpWc5Dod7XhGK9+UByz6meNmEyTmOiOSu/ax2DPwMGL5dUgQ7 YVo0JATISVP9zxt1Gg//VQvPB9xD7VclJoPLiasBubPUi+bAarRAXxuRhS216NqDIb08PyGdwAg Bv4TLW74wDgYIUbk2mkW3gyZva7kpwxC3PQL7vWh4lk/OyF7kuPHrkTQxA9a5+5V3yr56Tff86b R2dSiVT7EB04/2s9vzhHPUeMVVkmGTvVxMzAHctlsYrLkOd6bFl06SqlpovabgnOsdGx6NX+lFj +XOjZvzm2ssYUHQEWvJzy/p4fz6Nyy4A90hkGRQTmnMP/yZ8yENpXUnxNQTX83/znitptitcapL UGGEcD30WV6rOrkFXig== X-Proofpoint-GUID: ySeD7uxfBi-zUlyx2ZTEvLMgfhESow_P X-Authority-Analysis: v=2.4 cv=dYmwG3Xe c=1 sm=1 tr=0 ts=6a228c1f cx=c_pps a=Dy1/g0x6RHl9kMZQX3cATQ==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=y4UcunY2MAxhM4LwGdWI:22 a=64Cc0HZtAAAA:8 a=HnAgCM1Y1_2AGIOPCMkA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.151.68; envelope-from=khushit.shah@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, UPPERCASE_50_75=0.008 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649271339154100 Content-Type: text/plain; charset="utf-8" From: Shaju Abraham Add a declarative description of every architecturally defined field in the Arm64 ID registers in cpu-idregs.h.inc file. This file will be included multiple times with different definitions to build: - per-field arch values, - per-register field descriptor arrays, - arm-idregs[] table etc. The architecturally defined values for each ID register field is extracted from 6.18 kernel's arch/arm64/tools/sysreg file. The safe-value tags and default values are derived from the kernel's ftr_bits array. Aarch32 ID registers are added with dummy field so they can be defaulted to 0 by later commits. X-macro structure: IDREG_START(REG) IDREG_FIELD_START(REG, FIELD, SHIFT, LENGTH, SAFE_RULE, DEFAULT_VAL) IDREG_FIELD_ARCH_VAL(VALUE, NAME) ... IDREG_FIELD_END(REG, FIELD) ... IDREG_END(REG) Co-authored-by: Khushit Shah Signed-off-by: Shaju Abraham Signed-off-by: Khushit Shah --- target/arm/cpu-idregs.h.inc | 1807 +++++++++++++++++++++++++++++++++++ 1 file changed, 1807 insertions(+) create mode 100644 target/arm/cpu-idregs.h.inc diff --git a/target/arm/cpu-idregs.h.inc b/target/arm/cpu-idregs.h.inc new file mode 100644 index 0000000000..7e2bbf256d --- /dev/null +++ b/target/arm/cpu-idregs.h.inc @@ -0,0 +1,1807 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +/* ID_AA64ISAR0_EL1 */ +IDREG_START(ID_AA64ISAR0_EL1) +IDREG_FIELD_START(ID_AA64ISAR0, RES0_0, 0, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64ISAR0, RES0_0) + +IDREG_FIELD_START(ID_AA64ISAR0, AES, 4, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "aes") +IDREG_FIELD_ARCH_VAL(0b0010, "pmull") +IDREG_FIELD_END(ID_AA64ISAR0, AES) + +IDREG_FIELD_START(ID_AA64ISAR0, SHA1, 8, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR0, SHA1) + +IDREG_FIELD_START(ID_AA64ISAR0, SHA2, 12, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "sha256") +IDREG_FIELD_ARCH_VAL(0b0010, "sha512") +IDREG_FIELD_END(ID_AA64ISAR0, SHA2) + +IDREG_FIELD_START(ID_AA64ISAR0, CRC32, 16, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR0, CRC32) + +IDREG_FIELD_START(ID_AA64ISAR0, ATOMIC, 20, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0010, "on") +IDREG_FIELD_ARCH_VAL(0b0011, "LSE128") +IDREG_FIELD_END(ID_AA64ISAR0, ATOMIC) + +IDREG_FIELD_START(ID_AA64ISAR0, RES0_24, 24, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64ISAR0, RES0_24) + +IDREG_FIELD_START(ID_AA64ISAR0, RDM, 28, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR0, RDM) + +IDREG_FIELD_START(ID_AA64ISAR0, SHA3, 32, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR0, SHA3) + +IDREG_FIELD_START(ID_AA64ISAR0, SM3, 36, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR0, SM3) + +IDREG_FIELD_START(ID_AA64ISAR0, SM4, 40, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR0, SM4) + +IDREG_FIELD_START(ID_AA64ISAR0, DP, 44, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR0, DP) + +IDREG_FIELD_START(ID_AA64ISAR0, FHM, 48, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR0, FHM) + +IDREG_FIELD_START(ID_AA64ISAR0, TS, 52, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "flagm") +IDREG_FIELD_ARCH_VAL(0b0010, "flagm2") +IDREG_FIELD_END(ID_AA64ISAR0, TS) + +IDREG_FIELD_START(ID_AA64ISAR0, TLB, 56, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "os") +IDREG_FIELD_ARCH_VAL(0b0010, "range") +IDREG_FIELD_END(ID_AA64ISAR0, TLB) + +IDREG_FIELD_START(ID_AA64ISAR0, RNDR, 60, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR0, RNDR) + +IDREG_END(ID_AA64ISAR0_EL1) + +/* ID_AA64ISAR1_EL1 */ +IDREG_START(ID_AA64ISAR1_EL1) +IDREG_FIELD_START(ID_AA64ISAR1, DPB, 0, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "dpb2") +IDREG_FIELD_END(ID_AA64ISAR1, DPB) + +IDREG_FIELD_START(ID_AA64ISAR1, APA, 4, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "pauth") +IDREG_FIELD_ARCH_VAL(0b0010, "epac") +IDREG_FIELD_ARCH_VAL(0b0011, "pauth2") +IDREG_FIELD_ARCH_VAL(0b0100, "fpac") +IDREG_FIELD_ARCH_VAL(0b0101, "fpaccombine") +IDREG_FIELD_ARCH_VAL(0b0110, "pauth_lr") +IDREG_FIELD_END(ID_AA64ISAR1, APA) + +IDREG_FIELD_START(ID_AA64ISAR1, API, 8, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "pauth") +IDREG_FIELD_ARCH_VAL(0b0010, "epac") +IDREG_FIELD_ARCH_VAL(0b0011, "pauth2") +IDREG_FIELD_ARCH_VAL(0b0100, "fpac") +IDREG_FIELD_ARCH_VAL(0b0101, "fpaccombine") +IDREG_FIELD_ARCH_VAL(0b0110, "pauth_lr") +IDREG_FIELD_END(ID_AA64ISAR1, API) + +IDREG_FIELD_START(ID_AA64ISAR1, JSCVT, 12, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR1, JSCVT) + +IDREG_FIELD_START(ID_AA64ISAR1, FCMA, 16, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR1, FCMA) + +IDREG_FIELD_START(ID_AA64ISAR1, LRCPC, 20, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "lrcpc2") +IDREG_FIELD_ARCH_VAL(0b0011, "lrcpc3") +IDREG_FIELD_END(ID_AA64ISAR1, LRCPC) + +IDREG_FIELD_START(ID_AA64ISAR1, GPA, 24, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR1, GPA) + +IDREG_FIELD_START(ID_AA64ISAR1, GPI, 28, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR1, GPI) + +IDREG_FIELD_START(ID_AA64ISAR1, FRINTTS, 32, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR1, FRINTTS) + +IDREG_FIELD_START(ID_AA64ISAR1, SB, 36, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR1, SB) + +IDREG_FIELD_START(ID_AA64ISAR1, SPECRES, 40, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "cosp_rctx") +IDREG_FIELD_END(ID_AA64ISAR1, SPECRES) + +IDREG_FIELD_START(ID_AA64ISAR1, BF16, 44, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "ebf16") +IDREG_FIELD_END(ID_AA64ISAR1, BF16) + +IDREG_FIELD_START(ID_AA64ISAR1, DGH, 48, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR1, DGH) + +IDREG_FIELD_START(ID_AA64ISAR1, I8MM, 52, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR1, I8MM) + +IDREG_FIELD_START(ID_AA64ISAR1, XS, 56, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR1, XS) + +IDREG_FIELD_START(ID_AA64ISAR1, LS64, 60, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "ls64") +IDREG_FIELD_ARCH_VAL(0b0010, "ls64_v") +IDREG_FIELD_ARCH_VAL(0b0011, "ls64_accdata") +IDREG_FIELD_ARCH_VAL(0b0100, "ls64wb") +IDREG_FIELD_END(ID_AA64ISAR1, LS64) + +IDREG_END(ID_AA64ISAR1_EL1) + +/* ID_AA64ISAR2_EL1 */ +IDREG_START(ID_AA64ISAR2_EL1) +IDREG_FIELD_START(ID_AA64ISAR2, WFXT, 0, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0010, "on") +IDREG_FIELD_END(ID_AA64ISAR2, WFXT) + +IDREG_FIELD_START(ID_AA64ISAR2, RPRES, 4, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR2, RPRES) + +IDREG_FIELD_START(ID_AA64ISAR2, GPA3, 8, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR2, GPA3) + +IDREG_FIELD_START(ID_AA64ISAR2, APA3, 12, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "pauth") +IDREG_FIELD_ARCH_VAL(0b0010, "epac") +IDREG_FIELD_ARCH_VAL(0b0011, "pauth2") +IDREG_FIELD_ARCH_VAL(0b0100, "fpac") +IDREG_FIELD_ARCH_VAL(0b0101, "fpaccombine") +IDREG_FIELD_ARCH_VAL(0b0110, "pauth_lr") +IDREG_FIELD_END(ID_AA64ISAR2, APA3) + +IDREG_FIELD_START(ID_AA64ISAR2, MOPS, 16, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR2, MOPS) + +IDREG_FIELD_START(ID_AA64ISAR2, BC, 20, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR2, BC) + +IDREG_FIELD_START(ID_AA64ISAR2, PAC_FRAC, 24, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR2, PAC_FRAC) + +IDREG_FIELD_START(ID_AA64ISAR2, CLRBHB, 28, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR2, CLRBHB) + +IDREG_FIELD_START(ID_AA64ISAR2, SYSREG_128, 32, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR2, SYSREG_128) + +IDREG_FIELD_START(ID_AA64ISAR2, SYSINSTR_128, 36, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR2, SYSINSTR_128) + +IDREG_FIELD_START(ID_AA64ISAR2, PRFMSLC, 40, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR2, PRFMSLC) + +IDREG_FIELD_START(ID_AA64ISAR2, PCDPHINT, 44, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR2, PCDPHINT) + +IDREG_FIELD_START(ID_AA64ISAR2, RPRFM, 48, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR2, RPRFM) + +IDREG_FIELD_START(ID_AA64ISAR2, CSSC, 52, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "cmpbr") +IDREG_FIELD_END(ID_AA64ISAR2, CSSC) + +IDREG_FIELD_START(ID_AA64ISAR2, LUT, 56, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR2, LUT) + +IDREG_FIELD_START(ID_AA64ISAR2, ATS1A, 60, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR2, ATS1A) + +IDREG_END(ID_AA64ISAR2_EL1) + +/* ID_AA64PFR0_EL1 */ +IDREG_START(ID_AA64PFR0_EL1) +IDREG_FIELD_START(ID_AA64PFR0, EL0, 0, 4, LOWER, 0b0001) +IDREG_FIELD_ARCH_VAL(0b0001, "aarch64") +IDREG_FIELD_ARCH_VAL(0b0010, "aarch32") +IDREG_FIELD_END(ID_AA64PFR0, EL0) + +IDREG_FIELD_START(ID_AA64PFR0, EL1, 4, 4, LOWER, 0b0001) +IDREG_FIELD_ARCH_VAL(0b0001, "aarch64") +IDREG_FIELD_ARCH_VAL(0b0010, "aarch32") +IDREG_FIELD_END(ID_AA64PFR0, EL1) + +IDREG_FIELD_START(ID_AA64PFR0, EL2, 8, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "aarch64") +IDREG_FIELD_ARCH_VAL(0b0010, "aarch32") +IDREG_FIELD_END(ID_AA64PFR0, EL2) + +IDREG_FIELD_START(ID_AA64PFR0, EL3, 12, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "aarch64") +IDREG_FIELD_ARCH_VAL(0b0010, "aarch32") +IDREG_FIELD_END(ID_AA64PFR0, EL3) + +IDREG_FIELD_START(ID_AA64PFR0, FP, 16, 4, SIGNED_LOWER, 0b1111) +IDREG_FIELD_ARCH_VAL(0b0000, "on") +IDREG_FIELD_ARCH_VAL(0b0001, "fp16") +IDREG_FIELD_ARCH_VAL(0b1111, "off") +IDREG_FIELD_END(ID_AA64PFR0, FP) + +IDREG_FIELD_START(ID_AA64PFR0, ADVSIMD, 20, 4, SIGNED_LOWER, 0b1111) +IDREG_FIELD_ARCH_VAL(0b0000, "on") +IDREG_FIELD_ARCH_VAL(0b0001, "fp16") +IDREG_FIELD_ARCH_VAL(0b1111, "off") +IDREG_FIELD_END(ID_AA64PFR0, ADVSIMD) + +IDREG_FIELD_START(ID_AA64PFR0, GIC, 24, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0011, "v4p1") +IDREG_FIELD_END(ID_AA64PFR0, GIC) + +IDREG_FIELD_START(ID_AA64PFR0, RAS, 28, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "v1p1") +IDREG_FIELD_ARCH_VAL(0b0011, "v2") +IDREG_FIELD_END(ID_AA64PFR0, RAS) + +IDREG_FIELD_START(ID_AA64PFR0, SVE, 32, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64PFR0, SVE) + +IDREG_FIELD_START(ID_AA64PFR0, SEL2, 36, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64PFR0, SEL2) + +IDREG_FIELD_START(ID_AA64PFR0, MPAM, 40, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "0") +IDREG_FIELD_ARCH_VAL(0b0001, "1") +IDREG_FIELD_END(ID_AA64PFR0, MPAM) + +IDREG_FIELD_START(ID_AA64PFR0, AMU, 44, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "v1p1") +IDREG_FIELD_END(ID_AA64PFR0, AMU) + +IDREG_FIELD_START(ID_AA64PFR0, DIT, 48, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64PFR0, DIT) + +IDREG_FIELD_START(ID_AA64PFR0, RME, 52, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64PFR0, RME) + +IDREG_FIELD_START(ID_AA64PFR0, CSV2, 56, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "csv2_2") +IDREG_FIELD_ARCH_VAL(0b0011, "csv2_3") +IDREG_FIELD_END(ID_AA64PFR0, CSV2) + +IDREG_FIELD_START(ID_AA64PFR0, CSV3, 60, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64PFR0, CSV3) + +IDREG_END(ID_AA64PFR0_EL1) + +/* ID_AA64PFR1_EL1 */ +IDREG_START(ID_AA64PFR1_EL1) +IDREG_FIELD_START(ID_AA64PFR1, BT, 0, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64PFR1, BT) + +IDREG_FIELD_START(ID_AA64PFR1, SSBS, 4, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "ssbs2") +IDREG_FIELD_END(ID_AA64PFR1, SSBS) + +IDREG_FIELD_START(ID_AA64PFR1, MTE, 8, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "mte2") +IDREG_FIELD_ARCH_VAL(0b0011, "mte3") +IDREG_FIELD_END(ID_AA64PFR1, MTE) + +IDREG_FIELD_START(ID_AA64PFR1, RAS_FRAC, 12, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "rasv1p1") +IDREG_FIELD_END(ID_AA64PFR1, RAS_FRAC) + +IDREG_FIELD_START(ID_AA64PFR1, MPAM_FRAC, 16, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "minor_0") +IDREG_FIELD_ARCH_VAL(0b0001, "minor_1") +IDREG_FIELD_END(ID_AA64PFR1, MPAM_FRAC) + +IDREG_FIELD_START(ID_AA64PFR1, RES0_20, 20, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64PFR1, RES0_20) + +IDREG_FIELD_START(ID_AA64PFR1, SME, 24, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "sme2") +IDREG_FIELD_END(ID_AA64PFR1, SME) + +IDREG_FIELD_START(ID_AA64PFR1, RNDR_TRAP, 28, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64PFR1, RNDR_TRAP) + +IDREG_FIELD_START(ID_AA64PFR1, CSV2_FRAC, 32, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "csv2_1p1") +IDREG_FIELD_ARCH_VAL(0b0010, "csv2_1p2") +IDREG_FIELD_END(ID_AA64PFR1, CSV2_FRAC) + +IDREG_FIELD_START(ID_AA64PFR1, NMI, 36, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64PFR1, NMI) + +IDREG_FIELD_START(ID_AA64PFR1, MTE_FRAC, 40, 4, SIGNED_LOWER, 0b1111) +IDREG_FIELD_ARCH_VAL(0b0000, "async") +IDREG_FIELD_ARCH_VAL(0b1111, "off") +IDREG_FIELD_END(ID_AA64PFR1, MTE_FRAC) + +IDREG_FIELD_START(ID_AA64PFR1, GCS, 44, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64PFR1, GCS) + +IDREG_FIELD_START(ID_AA64PFR1, THE, 48, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64PFR1, THE) + +IDREG_FIELD_START(ID_AA64PFR1, MTEX, 52, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "mte") +IDREG_FIELD_ARCH_VAL(0b0001, "mte4") +IDREG_FIELD_END(ID_AA64PFR1, MTEX) + +IDREG_FIELD_START(ID_AA64PFR1, DF2, 56, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64PFR1, DF2) + +IDREG_FIELD_START(ID_AA64PFR1, PFAR, 60, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64PFR1, PFAR) + +IDREG_END(ID_AA64PFR1_EL1) + +/* ID_AA64MMFR0_EL1 */ +IDREG_START(ID_AA64MMFR0_EL1) +IDREG_FIELD_START(ID_AA64MMFR0, PARANGE, 0, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "32") +IDREG_FIELD_ARCH_VAL(0b0001, "36") +IDREG_FIELD_ARCH_VAL(0b0010, "40") +IDREG_FIELD_ARCH_VAL(0b0011, "42") +IDREG_FIELD_ARCH_VAL(0b0100, "44") +IDREG_FIELD_ARCH_VAL(0b0101, "48") +IDREG_FIELD_ARCH_VAL(0b0110, "52") +IDREG_FIELD_ARCH_VAL(0b0111, "56") +IDREG_FIELD_END(ID_AA64MMFR0, PARANGE) + +IDREG_FIELD_START(ID_AA64MMFR0, ASIDBITS, 4, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "8") +IDREG_FIELD_ARCH_VAL(0b0010, "16") +IDREG_FIELD_END(ID_AA64MMFR0, ASIDBITS) + +IDREG_FIELD_START(ID_AA64MMFR0, BIGEND, 8, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR0, BIGEND) + +IDREG_FIELD_START(ID_AA64MMFR0, SNSMEM, 12, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR0, SNSMEM) + +IDREG_FIELD_START(ID_AA64MMFR0, BIGENDEL0, 16, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR0, BIGENDEL0) + +IDREG_FIELD_START(ID_AA64MMFR0, TGRAN16, 20, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "52_bit") +IDREG_FIELD_END(ID_AA64MMFR0, TGRAN16) + +IDREG_FIELD_START(ID_AA64MMFR0, TGRAN64, 24, 4, SIGNED_LOWER, 0b1111) +IDREG_FIELD_ARCH_VAL(0b0000, "on") +IDREG_FIELD_ARCH_VAL(0b1111, "off") +IDREG_FIELD_END(ID_AA64MMFR0, TGRAN64) + +IDREG_FIELD_START(ID_AA64MMFR0, TGRAN4, 28, 4, SIGNED_LOWER, 0b1111) +IDREG_FIELD_ARCH_VAL(0b0000, "on") +IDREG_FIELD_ARCH_VAL(0b0001, "52_bit") +IDREG_FIELD_ARCH_VAL(0b1111, "off") +IDREG_FIELD_END(ID_AA64MMFR0, TGRAN4) + +IDREG_FIELD_START(ID_AA64MMFR0, TGRAN16_2, 32, 4, EXACT, 0b0001) +IDREG_FIELD_ARCH_VAL(0b0000, "tgran16") +IDREG_FIELD_ARCH_VAL(0b0001, "off") +IDREG_FIELD_ARCH_VAL(0b0010, "on") +IDREG_FIELD_ARCH_VAL(0b0011, "52_bit") +IDREG_FIELD_END(ID_AA64MMFR0, TGRAN16_2) + +IDREG_FIELD_START(ID_AA64MMFR0, TGRAN64_2, 36, 4, EXACT, 0b0001) +IDREG_FIELD_ARCH_VAL(0b0000, "tgran64") +IDREG_FIELD_ARCH_VAL(0b0001, "off") +IDREG_FIELD_ARCH_VAL(0b0010, "on") +IDREG_FIELD_END(ID_AA64MMFR0, TGRAN64_2) + +IDREG_FIELD_START(ID_AA64MMFR0, TGRAN4_2, 40, 4, EXACT, 0b0001) +IDREG_FIELD_ARCH_VAL(0b0000, "tgran4") +IDREG_FIELD_ARCH_VAL(0b0001, "off") +IDREG_FIELD_ARCH_VAL(0b0010, "on") +IDREG_FIELD_ARCH_VAL(0b0011, "52_bit") +IDREG_FIELD_END(ID_AA64MMFR0, TGRAN4_2) + +IDREG_FIELD_START(ID_AA64MMFR0, EXS, 44, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR0, EXS) + +IDREG_FIELD_START(ID_AA64MMFR0, RES0_48, 48, 8, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64MMFR0, RES0_48) + +IDREG_FIELD_START(ID_AA64MMFR0, FGT, 56, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "fgt2") +IDREG_FIELD_END(ID_AA64MMFR0, FGT) + +IDREG_FIELD_START(ID_AA64MMFR0, ECV, 60, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "cntpoff") +IDREG_FIELD_END(ID_AA64MMFR0, ECV) + +IDREG_END(ID_AA64MMFR0_EL1) + +/* ID_AA64MMFR1_EL1 */ +IDREG_START(ID_AA64MMFR1_EL1) +IDREG_FIELD_START(ID_AA64MMFR1, HAFDBS, 0, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "af") +IDREG_FIELD_ARCH_VAL(0b0010, "dbm") +IDREG_FIELD_ARCH_VAL(0b0011, "haft") +IDREG_FIELD_ARCH_VAL(0b0100, "hdbss") +IDREG_FIELD_END(ID_AA64MMFR1, HAFDBS) + +IDREG_FIELD_START(ID_AA64MMFR1, VMIDBITS, 4, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "8") +IDREG_FIELD_ARCH_VAL(0b0010, "16") +IDREG_FIELD_END(ID_AA64MMFR1, VMIDBITS) + +IDREG_FIELD_START(ID_AA64MMFR1, VH, 8, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR1, VH) + +IDREG_FIELD_START(ID_AA64MMFR1, HPDS, 12, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "hpds2") +IDREG_FIELD_END(ID_AA64MMFR1, HPDS) + +IDREG_FIELD_START(ID_AA64MMFR1, LO, 16, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR1, LO) + +IDREG_FIELD_START(ID_AA64MMFR1, PAN, 20, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "pan2") +IDREG_FIELD_ARCH_VAL(0b0011, "pan3") +IDREG_FIELD_END(ID_AA64MMFR1, PAN) + +IDREG_FIELD_START(ID_AA64MMFR1, SPECSEI, 24, 4, HIGHER, 0b0001) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR1, SPECSEI) + +IDREG_FIELD_START(ID_AA64MMFR1, XNX, 28, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR1, XNX) + +IDREG_FIELD_START(ID_AA64MMFR1, TWED, 32, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR1, TWED) + +IDREG_FIELD_START(ID_AA64MMFR1, ETS, 36, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "ets2") +IDREG_FIELD_ARCH_VAL(0b0011, "ets3") +IDREG_FIELD_END(ID_AA64MMFR1, ETS) + +IDREG_FIELD_START(ID_AA64MMFR1, HCX, 40, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR1, HCX) + +IDREG_FIELD_START(ID_AA64MMFR1, AFP, 44, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR1, AFP) + +IDREG_FIELD_START(ID_AA64MMFR1, NTLBPA, 48, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR1, NTLBPA) + +IDREG_FIELD_START(ID_AA64MMFR1, TIDCP1, 52, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR1, TIDCP1) + +IDREG_FIELD_START(ID_AA64MMFR1, CMOW, 56, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR1, CMOW) + +IDREG_FIELD_START(ID_AA64MMFR1, ECBHB, 60, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR1, ECBHB) + +IDREG_END(ID_AA64MMFR1_EL1) + +/* ID_AA64MMFR2_EL1 */ +IDREG_START(ID_AA64MMFR2_EL1) +IDREG_FIELD_START(ID_AA64MMFR2, CNP, 0, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR2, CNP) + +IDREG_FIELD_START(ID_AA64MMFR2, UAO, 4, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR2, UAO) + +IDREG_FIELD_START(ID_AA64MMFR2, LSM, 8, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR2, LSM) + +IDREG_FIELD_START(ID_AA64MMFR2, IESB, 12, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR2, IESB) + +IDREG_FIELD_START(ID_AA64MMFR2, VARANGE, 16, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "48") +IDREG_FIELD_ARCH_VAL(0b0001, "52") +IDREG_FIELD_END(ID_AA64MMFR2, VARANGE) + +IDREG_FIELD_START(ID_AA64MMFR2, CCIDX, 20, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "32") +IDREG_FIELD_ARCH_VAL(0b0001, "64") +IDREG_FIELD_END(ID_AA64MMFR2, CCIDX) + +IDREG_FIELD_START(ID_AA64MMFR2, NV, 24, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "nv2") +IDREG_FIELD_END(ID_AA64MMFR2, NV) + +IDREG_FIELD_START(ID_AA64MMFR2, ST, 28, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "39") +IDREG_FIELD_ARCH_VAL(0b0001, "48_47") +IDREG_FIELD_END(ID_AA64MMFR2, ST) + +IDREG_FIELD_START(ID_AA64MMFR2, AT, 32, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR2, AT) + +IDREG_FIELD_START(ID_AA64MMFR2, IDS, 36, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "0x0") +IDREG_FIELD_ARCH_VAL(0b0001, "0x18") +IDREG_FIELD_END(ID_AA64MMFR2, IDS) + +IDREG_FIELD_START(ID_AA64MMFR2, FWB, 40, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR2, FWB) + +IDREG_FIELD_START(ID_AA64MMFR2, RES0_44, 44, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64MMFR2, RES0_44) + +IDREG_FIELD_START(ID_AA64MMFR2, TTL, 48, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR2, TTL) + +IDREG_FIELD_START(ID_AA64MMFR2, BBM, 52, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "0") +IDREG_FIELD_ARCH_VAL(0b0001, "1") +IDREG_FIELD_ARCH_VAL(0b0010, "2") +IDREG_FIELD_END(ID_AA64MMFR2, BBM) + +IDREG_FIELD_START(ID_AA64MMFR2, EVT, 56, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "ttlbxs") +IDREG_FIELD_END(ID_AA64MMFR2, EVT) + +IDREG_FIELD_START(ID_AA64MMFR2, E0PD, 60, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR2, E0PD) + +IDREG_END(ID_AA64MMFR2_EL1) + +/* ID_AA64MMFR3_EL1 */ +IDREG_START(ID_AA64MMFR3_EL1) +IDREG_FIELD_START(ID_AA64MMFR3, TCRX, 0, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR3, TCRX) + +IDREG_FIELD_START(ID_AA64MMFR3, SCTLRX, 4, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR3, SCTLRX) + +IDREG_FIELD_START(ID_AA64MMFR3, S1PIE, 8, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR3, S1PIE) + +IDREG_FIELD_START(ID_AA64MMFR3, S2PIE, 12, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR3, S2PIE) + +IDREG_FIELD_START(ID_AA64MMFR3, S1POE, 16, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR3, S1POE) + +IDREG_FIELD_START(ID_AA64MMFR3, S2POE, 20, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR3, S2POE) + +IDREG_FIELD_START(ID_AA64MMFR3, AIE, 24, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR3, AIE) + +IDREG_FIELD_START(ID_AA64MMFR3, MEC, 28, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR3, MEC) + +IDREG_FIELD_START(ID_AA64MMFR3, D128, 32, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR3, D128) + +IDREG_FIELD_START(ID_AA64MMFR3, D128_2, 36, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR3, D128_2) + +IDREG_FIELD_START(ID_AA64MMFR3, SNERR, 40, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "sync") +IDREG_FIELD_ARCH_VAL(0b0010, "ANERR") +IDREG_FIELD_ARCH_VAL(0b0011, "ANERR_IND") +IDREG_FIELD_END(ID_AA64MMFR3, SNERR) + +IDREG_FIELD_START(ID_AA64MMFR3, ANERR, 44, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "async") +IDREG_FIELD_ARCH_VAL(0b0010, "ANERR") +IDREG_FIELD_ARCH_VAL(0b0011, "ANERR_IND") +IDREG_FIELD_END(ID_AA64MMFR3, ANERR) + +IDREG_FIELD_START(ID_AA64MMFR3, RES0_48, 48, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64MMFR3, RES0_48) + +IDREG_FIELD_START(ID_AA64MMFR3, SDERR, 52, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "dev_sync") +IDREG_FIELD_ARCH_VAL(0b0010, "ADERR") +IDREG_FIELD_ARCH_VAL(0b0011, "ADERR_IND") +IDREG_FIELD_END(ID_AA64MMFR3, SDERR) + +IDREG_FIELD_START(ID_AA64MMFR3, ADERR, 56, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "dev_async") +IDREG_FIELD_ARCH_VAL(0b0010, "ADERR") +IDREG_FIELD_ARCH_VAL(0b0011, "ADERR_IND") +IDREG_FIELD_END(ID_AA64MMFR3, ADERR) + +IDREG_FIELD_START(ID_AA64MMFR3, SPEC_FPACC, 60, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR3, SPEC_FPACC) + +IDREG_END(ID_AA64MMFR3_EL1) + +/* ID_AA64DFR0_EL1 */ +IDREG_START(ID_AA64DFR0_EL1) +IDREG_FIELD_START(ID_AA64DFR0, DEBUGVER, 0, 4, LOWER, 0x6) +IDREG_FIELD_ARCH_VAL(0b0110, "on") +IDREG_FIELD_ARCH_VAL(0b0111, "vhe") +IDREG_FIELD_ARCH_VAL(0b1000, "v8p2") +IDREG_FIELD_ARCH_VAL(0b1001, "v8p4") +IDREG_FIELD_ARCH_VAL(0b1010, "v8p8") +IDREG_FIELD_ARCH_VAL(0b1011, "v8p9") +IDREG_FIELD_END(ID_AA64DFR0, DEBUGVER) + +IDREG_FIELD_START(ID_AA64DFR0, TRACEVER, 4, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64DFR0, TRACEVER) + +IDREG_FIELD_START(ID_AA64DFR0, PMUVER, 8, 4, SIGNED_LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0100, "v3p1") +IDREG_FIELD_ARCH_VAL(0b0101, "v3p4") +IDREG_FIELD_ARCH_VAL(0b0110, "v3p5") +IDREG_FIELD_ARCH_VAL(0b0111, "v3p7") +IDREG_FIELD_ARCH_VAL(0b1000, "v3p8") +IDREG_FIELD_ARCH_VAL(0b1001, "v3p9") +IDREG_FIELD_ARCH_VAL(0b1111, "imp_def") +IDREG_FIELD_END(ID_AA64DFR0, PMUVER) + +IDREG_FIELD_START(ID_AA64DFR0, BRPS, 12, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL_ANY +IDREG_FIELD_END(ID_AA64DFR0, BRPS) + +IDREG_FIELD_START(ID_AA64DFR0, PMSS, 16, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64DFR0, PMSS) + +IDREG_FIELD_START(ID_AA64DFR0, WRPS, 20, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL_ANY +IDREG_FIELD_END(ID_AA64DFR0, WRPS) + +IDREG_FIELD_START(ID_AA64DFR0, SEBEP, 24, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64DFR0, SEBEP) + +IDREG_FIELD_START(ID_AA64DFR0, CTX_CMPS, 28, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL_ANY +IDREG_FIELD_END(ID_AA64DFR0, CTX_CMPS) + +IDREG_FIELD_START(ID_AA64DFR0, PMSVER, 32, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "v1p1") +IDREG_FIELD_ARCH_VAL(0b0011, "v1p2") +IDREG_FIELD_ARCH_VAL(0b0100, "v1p3") +IDREG_FIELD_ARCH_VAL(0b0101, "v1p4") +IDREG_FIELD_ARCH_VAL(0b0110, "v1p5") +IDREG_FIELD_END(ID_AA64DFR0, PMSVER) + +IDREG_FIELD_START(ID_AA64DFR0, DOUBLELOCK, 36, 4, SIGNED_LOWER, 0b1111) +IDREG_FIELD_ARCH_VAL(0b0000, "on") +IDREG_FIELD_ARCH_VAL(0b1111, "off") +IDREG_FIELD_END(ID_AA64DFR0, DOUBLELOCK) + +IDREG_FIELD_START(ID_AA64DFR0, TRACEFILT, 40, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64DFR0, TRACEFILT) + +IDREG_FIELD_START(ID_AA64DFR0, TRACEBUFFER, 44, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "trbe_v1p1") +IDREG_FIELD_END(ID_AA64DFR0, TRACEBUFFER) + +IDREG_FIELD_START(ID_AA64DFR0, MTPMU, 48, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "ni_impdef") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b1111, "off") +IDREG_FIELD_END(ID_AA64DFR0, MTPMU) + +IDREG_FIELD_START(ID_AA64DFR0, BRBE, 52, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "brbe_v1p1") +IDREG_FIELD_END(ID_AA64DFR0, BRBE) + +IDREG_FIELD_START(ID_AA64DFR0, EXTTRCBUFF, 56, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64DFR0, EXTTRCBUFF) + +IDREG_FIELD_START(ID_AA64DFR0, HPMN0, 60, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "unpredictable") +IDREG_FIELD_ARCH_VAL(0b0001, "def") +IDREG_FIELD_END(ID_AA64DFR0, HPMN0) + +IDREG_END(ID_AA64DFR0_EL1) + +/* ID_AA64ZFR0_EL1 */ +IDREG_START(ID_AA64ZFR0_EL1) +IDREG_FIELD_START(ID_AA64ZFR0, SVEVER, 0, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "on") +IDREG_FIELD_ARCH_VAL(0b0001, "sve2") +IDREG_FIELD_ARCH_VAL(0b0010, "sve2p1") +IDREG_FIELD_ARCH_VAL(0b0011, "sve2p2") +IDREG_FIELD_END(ID_AA64ZFR0, SVEVER) + +IDREG_FIELD_START(ID_AA64ZFR0, AES, 4, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "pmull128") +IDREG_FIELD_ARCH_VAL(0b0011, "aes2") +IDREG_FIELD_END(ID_AA64ZFR0, AES) + +IDREG_FIELD_START(ID_AA64ZFR0, RES0_8, 8, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64ZFR0, RES0_8) + +IDREG_FIELD_START(ID_AA64ZFR0, ELTPERM, 12, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ZFR0, ELTPERM) + +IDREG_FIELD_START(ID_AA64ZFR0, BITPERM, 16, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ZFR0, BITPERM) + +IDREG_FIELD_START(ID_AA64ZFR0, BFLOAT16, 20, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "ebf16") +IDREG_FIELD_END(ID_AA64ZFR0, BFLOAT16) + +IDREG_FIELD_START(ID_AA64ZFR0, B16B16, 24, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "bfscale") +IDREG_FIELD_END(ID_AA64ZFR0, B16B16) + +IDREG_FIELD_START(ID_AA64ZFR0, RES0_28, 28, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64ZFR0, RES0_28) + +IDREG_FIELD_START(ID_AA64ZFR0, SHA3, 32, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ZFR0, SHA3) + +IDREG_FIELD_START(ID_AA64ZFR0, RES0_36, 36, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64ZFR0, RES0_36) + +IDREG_FIELD_START(ID_AA64ZFR0, SM4, 40, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ZFR0, SM4) + +IDREG_FIELD_START(ID_AA64ZFR0, I8MM, 44, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ZFR0, I8MM) + +IDREG_FIELD_START(ID_AA64ZFR0, F16MM, 48, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ZFR0, F16MM) + +IDREG_FIELD_START(ID_AA64ZFR0, F32MM, 52, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ZFR0, F32MM) + +IDREG_FIELD_START(ID_AA64ZFR0, F64MM, 56, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ZFR0, F64MM) + +IDREG_FIELD_START(ID_AA64ZFR0, RES0_60, 60, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64ZFR0, RES0_60) + +IDREG_END(ID_AA64ZFR0_EL1) + +/* ID_AA64SMFR0_EL1 */ +IDREG_START(ID_AA64SMFR0_EL1) +IDREG_FIELD_START(ID_AA64SMFR0, SMOP4, 0, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64SMFR0, SMOP4) + +IDREG_FIELD_START(ID_AA64SMFR0, RES0_1, 1, 15, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64SMFR0, RES0_1) + +IDREG_FIELD_START(ID_AA64SMFR0, STMOP, 16, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64SMFR0, STMOP) + +IDREG_FIELD_START(ID_AA64SMFR0, RES0_17, 17, 6, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64SMFR0, RES0_17) + +IDREG_FIELD_START(ID_AA64SMFR0, SFEXPA, 23, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64SMFR0, SFEXPA) + +IDREG_FIELD_START(ID_AA64SMFR0, AES, 24, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64SMFR0, AES) + +IDREG_FIELD_START(ID_AA64SMFR0, SBITPERM, 25, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64SMFR0, SBITPERM) + +IDREG_FIELD_START(ID_AA64SMFR0, RES0_26, 26, 2, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64SMFR0, RES0_26) + +IDREG_FIELD_START(ID_AA64SMFR0, SF8DP2, 28, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64SMFR0, SF8DP2) + +IDREG_FIELD_START(ID_AA64SMFR0, SF8DP4, 29, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64SMFR0, SF8DP4) + +IDREG_FIELD_START(ID_AA64SMFR0, SF8FMA, 30, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64SMFR0, SF8FMA) + +IDREG_FIELD_START(ID_AA64SMFR0, RES0_31, 31, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64SMFR0, RES0_31) + +IDREG_FIELD_START(ID_AA64SMFR0, F32F32, 32, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64SMFR0, F32F32) + +IDREG_FIELD_START(ID_AA64SMFR0, BI32I32, 33, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64SMFR0, BI32I32) + +IDREG_FIELD_START(ID_AA64SMFR0, B16F32, 34, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64SMFR0, B16F32) + +IDREG_FIELD_START(ID_AA64SMFR0, F16F32, 35, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64SMFR0, F16F32) + +IDREG_FIELD_START(ID_AA64SMFR0, I8I32, 36, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b1111, "on") +IDREG_FIELD_END(ID_AA64SMFR0, I8I32) + +IDREG_FIELD_START(ID_AA64SMFR0, F8F32, 40, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64SMFR0, F8F32) + +IDREG_FIELD_START(ID_AA64SMFR0, F8F16, 41, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64SMFR0, F8F16) + +IDREG_FIELD_START(ID_AA64SMFR0, F16F16, 42, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64SMFR0, F16F16) + +IDREG_FIELD_START(ID_AA64SMFR0, B16B16, 43, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64SMFR0, B16B16) + +IDREG_FIELD_START(ID_AA64SMFR0, I16I32, 44, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0101, "on") +IDREG_FIELD_END(ID_AA64SMFR0, I16I32) + +IDREG_FIELD_START(ID_AA64SMFR0, F64F64, 48, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64SMFR0, F64F64) + +IDREG_FIELD_START(ID_AA64SMFR0, RES0_49, 49, 3, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64SMFR0, RES0_49) + +IDREG_FIELD_START(ID_AA64SMFR0, I16I64, 52, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b1111, "on") +IDREG_FIELD_END(ID_AA64SMFR0, I16I64) + +IDREG_FIELD_START(ID_AA64SMFR0, SMEVER, 56, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "sme") +IDREG_FIELD_ARCH_VAL(0b0001, "sme2") +IDREG_FIELD_ARCH_VAL(0b0010, "sme2p1") +IDREG_FIELD_ARCH_VAL(0b0011, "sme2p2") +IDREG_FIELD_END(ID_AA64SMFR0, SMEVER) + +IDREG_FIELD_START(ID_AA64SMFR0, LUTV2, 60, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64SMFR0, LUTV2) + +IDREG_FIELD_START(ID_AA64SMFR0, RES0_61, 61, 2, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64SMFR0, RES0_61) + +IDREG_FIELD_START(ID_AA64SMFR0, FA64, 63, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64SMFR0, FA64) + +IDREG_END(ID_AA64SMFR0_EL1) + +/* CTR_EL0 */ +IDREG_START(CTR_EL0) +IDREG_FIELD_START(CTR_EL0, IMINLINE, 0, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL_ANY +IDREG_FIELD_END(CTR_EL0, IMINLINE) + +IDREG_FIELD_START(CTR_EL0, RES0_4, 4, 10, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(CTR_EL0, RES0_4) + +IDREG_FIELD_START(CTR_EL0, L1IP, 14, 2, EXACT, 0b10) +IDREG_FIELD_ARCH_VAL(0b00, "reserved_vpipt") +IDREG_FIELD_ARCH_VAL(0b01, "reserved_aivivt") +IDREG_FIELD_ARCH_VAL(0b10, "vipt") +IDREG_FIELD_ARCH_VAL(0b11, "pipt") +IDREG_FIELD_END(CTR_EL0, L1IP) + +IDREG_FIELD_START(CTR_EL0, DMINLINE, 16, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL_ANY +IDREG_FIELD_END(CTR_EL0, DMINLINE) + +IDREG_FIELD_START(CTR_EL0, ERG, 20, 4, HIGHER_OR_ZERO, 0) +IDREG_FIELD_ARCH_VAL_ANY +IDREG_FIELD_END(CTR_EL0, ERG) + +IDREG_FIELD_START(CTR_EL0, CWG, 24, 4, HIGHER_OR_ZERO, 0) +IDREG_FIELD_ARCH_VAL_ANY +IDREG_FIELD_END(CTR_EL0, CWG) + +IDREG_FIELD_START(CTR_EL0, IDC, 28, 1, LOWER, 0b1) +IDREG_FIELD_ARCH_VAL_ANY +IDREG_FIELD_END(CTR_EL0, IDC) + +IDREG_FIELD_START(CTR_EL0, DIC, 29, 1, LOWER, 0b1) +IDREG_FIELD_ARCH_VAL_ANY +IDREG_FIELD_END(CTR_EL0, DIC) + +IDREG_FIELD_START(CTR_EL0, RES0_30, 30, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(CTR_EL0, RES0_30) + +IDREG_FIELD_START(CTR_EL0, RES1_31, 31, 1, EXACT, 1) +IDREG_FIELD_ARCH_VAL(1, NULL) +IDREG_FIELD_END(CTR_EL0, RES1_31) + +IDREG_FIELD_START(CTR_EL0, TMINLINE, 32, 6, EXACT, 0) +IDREG_FIELD_ARCH_VAL_ANY +IDREG_FIELD_END(CTR_EL0, TMINLINE) + +IDREG_FIELD_START(CTR_EL0, RES0_38, 38, 26, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(CTR_EL0, RES0_38) + +IDREG_END(CTR_EL0) + +/* ID_AA64ISAR3_EL1 */ +IDREG_START(ID_AA64ISAR3_EL1) +IDREG_FIELD_START(ID_AA64ISAR3, CPA, 0, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "cpa2") +IDREG_FIELD_END(ID_AA64ISAR3, CPA) + +IDREG_FIELD_START(ID_AA64ISAR3, FAMINMAX, 4, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR3, FAMINMAX) + +IDREG_FIELD_START(ID_AA64ISAR3, TLBIW, 8, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR3, TLBIW) + +IDREG_FIELD_START(ID_AA64ISAR3, PACM, 12, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "trivial_imp") +IDREG_FIELD_ARCH_VAL(0b0010, "full_imp") +IDREG_FIELD_END(ID_AA64ISAR3, PACM) + +IDREG_FIELD_START(ID_AA64ISAR3, LSFE, 16, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR3, LSFE) + +IDREG_FIELD_START(ID_AA64ISAR3, OCCMO, 20, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR3, OCCMO) + +IDREG_FIELD_START(ID_AA64ISAR3, LSUI, 24, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR3, LSUI) + +IDREG_FIELD_START(ID_AA64ISAR3, FPRCVT, 28, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64ISAR3, FPRCVT) + +IDREG_FIELD_START(ID_AA64ISAR3, RES0_32, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64ISAR3, RES0_32) + +IDREG_END(ID_AA64ISAR3_EL1) + +/* ID_AA64PFR2_EL1 */ +IDREG_START(ID_AA64PFR2_EL1) +IDREG_FIELD_START(ID_AA64PFR2, MTEPERM, 0, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64PFR2, MTEPERM) + +IDREG_FIELD_START(ID_AA64PFR2, MTESTOREONLY, 4, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64PFR2, MTESTOREONLY) + +IDREG_FIELD_START(ID_AA64PFR2, MTEFAR, 8, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64PFR2, MTEFAR) + +IDREG_FIELD_START(ID_AA64PFR2, GCIE, 12, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64PFR2, GCIE) + +IDREG_FIELD_START(ID_AA64PFR2, UINJ, 16, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64PFR2, UINJ) + +IDREG_FIELD_START(ID_AA64PFR2, RES0_20, 20, 12, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64PFR2, RES0_20) + +IDREG_FIELD_START(ID_AA64PFR2, FPMR, 32, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64PFR2, FPMR) + +IDREG_FIELD_START(ID_AA64PFR2, RES0_36, 36, 28, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64PFR2, RES0_36) + +IDREG_END(ID_AA64PFR2_EL1) + +/* ID_AA64FPFR0_EL1 */ +IDREG_START(ID_AA64FPFR0_EL1) +IDREG_FIELD_START(ID_AA64FPFR0, F8E5M2, 0, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64FPFR0, F8E5M2) + +IDREG_FIELD_START(ID_AA64FPFR0, F8E4M3, 1, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64FPFR0, F8E4M3) + +IDREG_FIELD_START(ID_AA64FPFR0, RES0_2, 2, 24, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64FPFR0, RES0_2) + +IDREG_FIELD_START(ID_AA64FPFR0, F8MM4, 26, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64FPFR0, F8MM4) + +IDREG_FIELD_START(ID_AA64FPFR0, F8MM8, 27, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64FPFR0, F8MM8) + +IDREG_FIELD_START(ID_AA64FPFR0, F8DP2, 28, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64FPFR0, F8DP2) + +IDREG_FIELD_START(ID_AA64FPFR0, F8DP4, 29, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64FPFR0, F8DP4) + +IDREG_FIELD_START(ID_AA64FPFR0, F8FMA, 30, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64FPFR0, F8FMA) + +IDREG_FIELD_START(ID_AA64FPFR0, F8CVT, 31, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0, "off") +IDREG_FIELD_ARCH_VAL(0b1, "on") +IDREG_FIELD_END(ID_AA64FPFR0, F8CVT) + +IDREG_FIELD_START(ID_AA64FPFR0, RES0_32, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64FPFR0, RES0_32) + +IDREG_END(ID_AA64FPFR0_EL1) + + +/* ID_AA64MMFR4_EL1 */ +IDREG_START(ID_AA64MMFR4_EL1) +IDREG_FIELD_START(ID_AA64MMFR4, POPS, 0, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR4, POPS) + +IDREG_FIELD_START(ID_AA64MMFR4, EIESB, 4, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "toel3") +IDREG_FIELD_ARCH_VAL(0b0010, "toelx") +IDREG_FIELD_ARCH_VAL(0b1111, "any") +IDREG_FIELD_END(ID_AA64MMFR4, EIESB) + +IDREG_FIELD_START(ID_AA64MMFR4, ASID2, 8, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR4, ASID2) + +IDREG_FIELD_START(ID_AA64MMFR4, HACDBS, 12, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR4, HACDBS) + +IDREG_FIELD_START(ID_AA64MMFR4, FGWTE3, 16, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR4, FGWTE3) + +IDREG_FIELD_START(ID_AA64MMFR4, NV_FRAC, 20, 4, LOWER, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "nv_nv2") +IDREG_FIELD_ARCH_VAL(0b0001, "nv2_only") +IDREG_FIELD_ARCH_VAL(0b0010, "nv2p1") +IDREG_FIELD_END(ID_AA64MMFR4, NV_FRAC) + +IDREG_FIELD_START(ID_AA64MMFR4, E2H0, 24, 4, SIGNED_LOWER, 0b1111) +IDREG_FIELD_ARCH_VAL(0b0000, "on") +IDREG_FIELD_ARCH_VAL(0b1110, "ni_nv1") +IDREG_FIELD_ARCH_VAL(0b1111, "off") +IDREG_FIELD_END(ID_AA64MMFR4, E2H0) + +IDREG_FIELD_START(ID_AA64MMFR4, RMEGDI, 28, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR4, RMEGDI) + +IDREG_FIELD_START(ID_AA64MMFR4, RES0_32, 32, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64MMFR4, RES0_32) + +IDREG_FIELD_START(ID_AA64MMFR4, E3DSE, 36, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR4, E3DSE) + +IDREG_FIELD_START(ID_AA64MMFR4, RES0_40, 40, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64MMFR4, RES0_40) + +IDREG_FIELD_START(ID_AA64MMFR4, SRMASK, 44, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64MMFR4, SRMASK) + +IDREG_FIELD_START(ID_AA64MMFR4, RES0_48, 48, 16, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AA64MMFR4, RES0_48) + +IDREG_END(ID_AA64MMFR4_EL1) + +/* ID_AA64DFR1_EL1 */ +IDREG_START(ID_AA64DFR1_EL1) +IDREG_FIELD_START(ID_AA64DFR1, SYSPMUID, 0, 8, EXACT, 0) +IDREG_FIELD_ARCH_VAL_ANY +IDREG_FIELD_END(ID_AA64DFR1, SYSPMUID) + +IDREG_FIELD_START(ID_AA64DFR1, BRPS, 8, 8, EXACT, 0) +IDREG_FIELD_ARCH_VAL_ANY +IDREG_FIELD_END(ID_AA64DFR1, BRPS) + +IDREG_FIELD_START(ID_AA64DFR1, WRPS, 16, 8, EXACT, 0) +IDREG_FIELD_ARCH_VAL_ANY +IDREG_FIELD_END(ID_AA64DFR1, WRPS) + +IDREG_FIELD_START(ID_AA64DFR1, CTX_CMPS, 24, 8, EXACT, 0) +IDREG_FIELD_ARCH_VAL_ANY +IDREG_FIELD_END(ID_AA64DFR1, CTX_CMPS) + +IDREG_FIELD_START(ID_AA64DFR1, SPMU, 32, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_ARCH_VAL(0b0010, "imp_spmzr") +IDREG_FIELD_END(ID_AA64DFR1, SPMU) + +IDREG_FIELD_START(ID_AA64DFR1, PMICNTR, 36, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64DFR1, PMICNTR) + +IDREG_FIELD_START(ID_AA64DFR1, ABLE, 40, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64DFR1, ABLE) + +IDREG_FIELD_START(ID_AA64DFR1, ITE, 44, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64DFR1, ITE) + +IDREG_FIELD_START(ID_AA64DFR1, EBEP, 48, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "on") +IDREG_FIELD_END(ID_AA64DFR1, EBEP) + +IDREG_FIELD_START(ID_AA64DFR1, DPFZS, 52, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "ignr") +IDREG_FIELD_ARCH_VAL(0b0001, "frzn") +IDREG_FIELD_END(ID_AA64DFR1, DPFZS) + +IDREG_FIELD_START(ID_AA64DFR1, ABL_CMPS, 56, 8, EXACT, 0) +IDREG_FIELD_ARCH_VAL_ANY +IDREG_FIELD_END(ID_AA64DFR1, ABL_CMPS) + +IDREG_END(ID_AA64DFR1_EL1) + +/* MIDR_EL1 */ +IDREG_START(MIDR_EL1) +IDREG_FIELD_START(MIDR, REVISION, 0, 4, ANY, 0) +IDREG_FIELD_END(MIDR, REVISION) + +IDREG_FIELD_START(MIDR, PARTNUM, 4, 12, ANY, 0) +IDREG_FIELD_END(MIDR, PARTNUM) + +IDREG_FIELD_START(MIDR, ARCHITECTURE, 16, 4, ANY, 0) +IDREG_FIELD_END(MIDR, ARCHITECTURE) + +IDREG_FIELD_START(MIDR, VARIANT, 20, 4, ANY, 0) +IDREG_FIELD_END(MIDR, VARIANT) + +IDREG_FIELD_START(MIDR, IMPLEMENTER, 24, 8, ANY, 0) +IDREG_FIELD_END(MIDR, IMPLEMENTER) + +IDREG_FIELD_START(MIDR, RES0_32, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(MIDR, RES0_32) + +IDREG_END(MIDR_EL1) + +/* REVIDR_EL1 */ +IDREG_START(REVIDR_EL1) +IDREG_FIELD_START(REVIDR, VAL, 0, 64, ANY, 0) +IDREG_FIELD_END(REVIDR, VAL) + +IDREG_END(REVIDR_EL1) + +/* AIDR_EL1 */ +IDREG_START(AIDR_EL1) +IDREG_FIELD_START(AIDR, VAL, 0, 64, ANY, 0) +IDREG_FIELD_END(AIDR, VAL) + +IDREG_END(AIDR_EL1) + +/* DCZID_EL0 */ +IDREG_START(DCZID_EL0) +IDREG_FIELD_START(DCZID_EL0, BS, 0, 4, EXACT, 0) +IDREG_FIELD_ARCH_VAL_ANY +IDREG_FIELD_END(DCZID_EL0, BS) + +IDREG_FIELD_START(DCZID_EL0, DZP, 4, 1, EXACT, 0) +IDREG_FIELD_ARCH_VAL_ANY +IDREG_FIELD_END(DCZID_EL0, DZP) + +IDREG_FIELD_START(DCZID_EL0, RES0_5, 5, 59, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(DCZID_EL0, RES0_5) + +IDREG_END(DCZID_EL0) + + +/* ID_AA64AFR0_EL1 */ +IDREG_START(ID_AA64AFR0_EL1) +IDREG_FIELD_START(ID_AA64AFR0, VAL, 0, 64, EXACT, 0) +IDREG_FIELD_END(ID_AA64AFR0, VAL) + +IDREG_END(ID_AA64AFR0_EL1) + +/* ID_AA64AFR1_EL1 */ +IDREG_START(ID_AA64AFR1_EL1) +IDREG_FIELD_START(ID_AA64AFR1, VAL, 0, 64, EXACT, 0) +IDREG_FIELD_END(ID_AA64AFR1, VAL) + +IDREG_END(ID_AA64AFR1_EL1) + +/* AArch32 ID registers */ + +/* ID_PFR0_EL1 */ +IDREG_START(ID_PFR0_EL1) +IDREG_FIELD_START(ID_PFR0, VAL, 0, 32, ANY, 0) +IDREG_FIELD_END(ID_PFR0, VAL) + +IDREG_FIELD_START(ID_PFR0, RES0_HI, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_PFR0, RES0_HI) + +IDREG_END(ID_PFR0_EL1) + +/* ID_PFR1_EL1 */ +IDREG_START(ID_PFR1_EL1) +IDREG_FIELD_START(ID_PFR1, VAL_LO, 0, 28, ANY, 0) +IDREG_FIELD_END(ID_PFR1, VAL_LO) + +IDREG_FIELD_START(ID_PFR1, GIC, 28, 4, ANY, 0) +IDREG_FIELD_ARCH_VAL(0b0000, "off") +IDREG_FIELD_ARCH_VAL(0b0001, "gicv3") +IDREG_FIELD_ARCH_VAL(0b0011, "gicv4p1") +IDREG_FIELD_END(ID_PFR1, GIC) + +IDREG_FIELD_START(ID_PFR1, RES0_HI, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_PFR1, RES0_HI) + +IDREG_END(ID_PFR1_EL1) + +/* ID_DFR0_EL1 */ +IDREG_START(ID_DFR0_EL1) +IDREG_FIELD_START(ID_DFR0, COPDBG, 0, 4, ANY, 0) +IDREG_FIELD_END(ID_DFR0, COPDBG) + +IDREG_FIELD_START(ID_DFR0, VAL_LO, 4, 20, ANY, 0) +IDREG_FIELD_END(ID_DFR0, VAL_LO) + +IDREG_FIELD_START(ID_DFR0, PMU, 24, 4, ANY, 0) +IDREG_FIELD_END(ID_DFR0, PMU) + +IDREG_FIELD_START(ID_DFR0, VAL_HI, 28, 4, ANY, 0) +IDREG_FIELD_END(ID_DFR0, VAL_HI) + +IDREG_FIELD_START(ID_DFR0, RES0_HI, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_DFR0, RES0_HI) + +IDREG_END(ID_DFR0_EL1) + +/* ID_AFR0_EL1 */ +IDREG_START(ID_AFR0_EL1) +IDREG_FIELD_START(ID_AFR0, VAL, 0, 32, ANY, 0) +IDREG_FIELD_END(ID_AFR0, VAL) + +IDREG_FIELD_START(ID_AFR0, RES0_HI, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_AFR0, RES0_HI) + +IDREG_END(ID_AFR0_EL1) + +/* ID_MMFR0_EL1 */ +IDREG_START(ID_MMFR0_EL1) +IDREG_FIELD_START(ID_MMFR0, VAL, 0, 32, ANY, 0) +IDREG_FIELD_END(ID_MMFR0, VAL) + +IDREG_FIELD_START(ID_MMFR0, RES0_HI, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_MMFR0, RES0_HI) + +IDREG_END(ID_MMFR0_EL1) + +/* ID_MMFR1_EL1 */ +IDREG_START(ID_MMFR1_EL1) +IDREG_FIELD_START(ID_MMFR1, VAL, 0, 32, ANY, 0) +IDREG_FIELD_END(ID_MMFR1, VAL) + +IDREG_FIELD_START(ID_MMFR1, RES0_HI, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_MMFR1, RES0_HI) + +IDREG_END(ID_MMFR1_EL1) + +/* ID_MMFR2_EL1 */ +IDREG_START(ID_MMFR2_EL1) +IDREG_FIELD_START(ID_MMFR2, VAL, 0, 32, ANY, 0) +IDREG_FIELD_END(ID_MMFR2, VAL) + +IDREG_FIELD_START(ID_MMFR2, RES0_HI, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_MMFR2, RES0_HI) + +IDREG_END(ID_MMFR2_EL1) + +/* ID_MMFR3_EL1 */ +IDREG_START(ID_MMFR3_EL1) +IDREG_FIELD_START(ID_MMFR3, VAL, 0, 32, ANY, 0) +IDREG_FIELD_END(ID_MMFR3, VAL) + +IDREG_FIELD_START(ID_MMFR3, RES0_HI, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_MMFR3, RES0_HI) + +IDREG_END(ID_MMFR3_EL1) + +/* ID_MMFR4_EL1 */ +IDREG_START(ID_MMFR4_EL1) +IDREG_FIELD_START(ID_MMFR4, VAL, 0, 32, ANY, 0) +IDREG_FIELD_END(ID_MMFR4, VAL) + +IDREG_FIELD_START(ID_MMFR4, RES0_HI, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_MMFR4, RES0_HI) + +IDREG_END(ID_MMFR4_EL1) + +/* ID_MMFR5_EL1 */ +IDREG_START(ID_MMFR5_EL1) +IDREG_FIELD_START(ID_MMFR5, VAL, 0, 32, ANY, 0) +IDREG_FIELD_END(ID_MMFR5, VAL) + +IDREG_FIELD_START(ID_MMFR5, RES0_HI, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_MMFR5, RES0_HI) + +IDREG_END(ID_MMFR5_EL1) + +/* ID_ISAR0_EL1 */ +IDREG_START(ID_ISAR0_EL1) +IDREG_FIELD_START(ID_ISAR0, VAL, 0, 32, ANY, 0) +IDREG_FIELD_END(ID_ISAR0, VAL) + +IDREG_FIELD_START(ID_ISAR0, RES0_HI, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_ISAR0, RES0_HI) + +IDREG_END(ID_ISAR0_EL1) + +/* ID_ISAR1_EL1 */ +IDREG_START(ID_ISAR1_EL1) +IDREG_FIELD_START(ID_ISAR1, VAL, 0, 32, ANY, 0) +IDREG_FIELD_END(ID_ISAR1, VAL) + +IDREG_FIELD_START(ID_ISAR1, RES0_HI, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_ISAR1, RES0_HI) + +IDREG_END(ID_ISAR1_EL1) + +/* ID_ISAR2_EL1 */ +IDREG_START(ID_ISAR2_EL1) +IDREG_FIELD_START(ID_ISAR2, VAL, 0, 32, ANY, 0) +IDREG_FIELD_END(ID_ISAR2, VAL) + +IDREG_FIELD_START(ID_ISAR2, RES0_HI, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_ISAR2, RES0_HI) + +IDREG_END(ID_ISAR2_EL1) + +/* ID_ISAR3_EL1 */ +IDREG_START(ID_ISAR3_EL1) +IDREG_FIELD_START(ID_ISAR3, VAL, 0, 32, ANY, 0) +IDREG_FIELD_END(ID_ISAR3, VAL) + +IDREG_FIELD_START(ID_ISAR3, RES0_HI, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_ISAR3, RES0_HI) + +IDREG_END(ID_ISAR3_EL1) + +/* ID_ISAR4_EL1 */ +IDREG_START(ID_ISAR4_EL1) +IDREG_FIELD_START(ID_ISAR4, VAL, 0, 32, ANY, 0) +IDREG_FIELD_END(ID_ISAR4, VAL) + +IDREG_FIELD_START(ID_ISAR4, RES0_HI, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_ISAR4, RES0_HI) + +IDREG_END(ID_ISAR4_EL1) + +/* ID_ISAR5_EL1 */ +IDREG_START(ID_ISAR5_EL1) +IDREG_FIELD_START(ID_ISAR5, VAL, 0, 32, ANY, 0) +IDREG_FIELD_END(ID_ISAR5, VAL) + +IDREG_FIELD_START(ID_ISAR5, RES0_HI, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_ISAR5, RES0_HI) + +IDREG_END(ID_ISAR5_EL1) + +/* ID_ISAR6_EL1 */ +IDREG_START(ID_ISAR6_EL1) +IDREG_FIELD_START(ID_ISAR6, VAL, 0, 32, ANY, 0) +IDREG_FIELD_END(ID_ISAR6, VAL) + +IDREG_FIELD_START(ID_ISAR6, RES0_HI, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_ISAR6, RES0_HI) + +IDREG_END(ID_ISAR6_EL1) + +/* ID_PFR2_EL1 */ +IDREG_START(ID_PFR2_EL1) +IDREG_FIELD_START(ID_PFR2, VAL, 0, 32, ANY, 0) +IDREG_FIELD_END(ID_PFR2, VAL) + +IDREG_FIELD_START(ID_PFR2, RES0_HI, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_PFR2, RES0_HI) + +IDREG_END(ID_PFR2_EL1) + +/* ID_DFR1_EL1 */ +IDREG_START(ID_DFR1_EL1) +IDREG_FIELD_START(ID_DFR1, VAL, 0, 32, ANY, 0) +IDREG_FIELD_END(ID_DFR1, VAL) + +IDREG_FIELD_START(ID_DFR1, RES0_HI, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(ID_DFR1, RES0_HI) + +IDREG_END(ID_DFR1_EL1) + +/* MVFR0_EL1 */ +IDREG_START(MVFR0_EL1) +IDREG_FIELD_START(MVFR0, VAL, 0, 32, ANY, 0) +IDREG_FIELD_END(MVFR0, VAL) + +IDREG_FIELD_START(MVFR0, RES0_HI, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(MVFR0, RES0_HI) + +IDREG_END(MVFR0_EL1) + +/* MVFR1_EL1 */ +IDREG_START(MVFR1_EL1) +IDREG_FIELD_START(MVFR1, VAL, 0, 32, ANY, 0) +IDREG_FIELD_END(MVFR1, VAL) + +IDREG_FIELD_START(MVFR1, RES0_HI, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(MVFR1, RES0_HI) + +IDREG_END(MVFR1_EL1) + +/* MVFR2_EL1 */ +IDREG_START(MVFR2_EL1) +IDREG_FIELD_START(MVFR2, VAL, 0, 32, ANY, 0) +IDREG_FIELD_END(MVFR2, VAL) + +IDREG_FIELD_START(MVFR2, RES0_HI, 32, 32, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(MVFR2, RES0_HI) + +IDREG_END(MVFR2_EL1) --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649333; cv=pass; d=zohomail.com; s=zohoarc; b=bN6Ec5Wk29aRX4c5VKZXR4CCa025NBmq99Pn5PHuZzpTY4IW1wQ72SWKL34Jghkf4j6n2ZRv0SFRMP7e5xC4wVLzy9GIw16Vj/UEcX9xbdUkuHlfLbVPzbkt6KQhkguO3tuKKhFYpH8Cyr5UiI3wTAB/cSAKmAf3iue+OkoOHA0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649333; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=HRsZLtm1SD/FrQG94lxDHmhf+JkQNdncTSZ3m438YzY=; b=DfxFgqd5jPEG87J1n9r4kGf/YLyq3N6HASG9lujRGDgfIptyZ08MzmEko8CXLOkRKSUUzwJ+RCMViD026bM5yePUi2YRaSLQ+jHw8k2vrz6WisANFDlRJylb3srWFLfs8Zx3vHfSTWtPo/xbpbbkux2iSOebPJiT/u8dImMFBUk= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649333471942.7833403184302; Fri, 5 Jun 2026 01:48:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQEF-00070f-40; Fri, 05 Jun 2026 04:48:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQED-0006yc-EX; Fri, 05 Jun 2026 04:48:33 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQEB-0004Lf-OS; Fri, 05 Jun 2026 04:48:33 -0400 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 6556OdLM854749; Fri, 5 Jun 2026 01:43:12 -0700 Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11021094.outbound.protection.outlook.com [40.107.208.94]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejupdmnv4-4 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:12 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by CO6PR02MB7812.namprd02.prod.outlook.com (2603:10b6:303:a7::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:09 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:09 +0000 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=HRsZLtm1SD/FrQG94lxDHmhf+JkQNdncTSZ3m438Y zY=; b=VSUpfjwN2VazF8gTUuYVWV/yowcFWMvxe4mIee42iLR9e8GF+VGursqiM pYgz2Nn8jt5StikmYXvadY0oEiCnt3nlA0ylSkvh1NJe3dzG7rjvsT6u2AGY1fg3 RY9VuP1d9t+2My0uQz/5hrayDNfyVP3iiU7SNnQnArl6SLRR1R8/onpwYla6JEk8 Iqfw0oinwptAqTBcBMYhik7feduSdvK/rBXUoCbV7GAkmWPSn4wCFd7P6juxhNCt BjvQH74LQjS0QKxF/C5pDbxvnAFrrSAjK7yZs8VCkD5pw1FmrmZlkDeyDE+GRk/r PODZuI8Tj+guM/KYNKP35w0gU1O/Q== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VqeiXg12lg7BWAFCPSpuj9X924dK85b3k6yfCkg+eK04fI9cOzZ5XA4BN47NO0JVIUml7IO2uNFULD/wdptqgW1P6ABtF32oxFBdknCI+ahU/tNQPw99QtLo224/qaR5iA1xvMzQmOs0XmYtQOY/RRastK3OqARJ8JKMdGmpPZUpbz94EQjtFTAHb8WrgIRMJd7C1Z4kvjwNvScEi+RMAe+U7jXNuOX5UYhJb59IiHnaIdFe8jlf+FBGjRNEsEEwKkCce7DU3vlHOI0+7mNCsVAx+It4zPmhfmwd4Wpzf2UK7uyF1H4cVgi6uXX6JEyZLLoKVus7TpzzkxY/uiZhEQ== 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=HRsZLtm1SD/FrQG94lxDHmhf+JkQNdncTSZ3m438YzY=; b=cx2y5Uc1rC67JDOTDKeu2pR/uvj8ZWc5xnEveCiYJgh3cN/aJIhAArRN4LJArEPUlTbkSewzXbqI9k+BHXDgWzWndUvyKmbEQxlt7hhc7lM8sgZVe0eNSSvJE7I6QklzvE8/fpOadmaCEFe1ITt6ukP4IEeXgIXz8vipRXS8fdf4//DP9uvkHXg9HC+gAY8qNrs8jYPQoaKEasr2sG2E7DWxph9RC/i9R/rdbl1HJfxPOMKQpCWJJOzAPfV4tIWmW1nT76qg2Jg9pL0Jd9dPha7xa87Geqg1icEGNxJYr4aKJvk8z+64PMHdwAyxVJa2LQ4TBkfo2epg7Oxjyi9XmA== 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=HRsZLtm1SD/FrQG94lxDHmhf+JkQNdncTSZ3m438YzY=; b=yVVAe87BoWSNyHoBKqXpOp4+U5Uzmey4yCTH7JZRMqLJKBX2N88Hjd2gi0RtzFQJPyd/76EEQ/W3YQ27NHhtARI2U3mexchbdJsinhrOt2ye4VuHZbNUFqXrzvOqE76ixsurgr36UD0tTQHbwYsZAfZcukghL9V0ffykyLTlXIrvmJ5YEJNjNMiPCU2pQyuDzPe0fTuz103cKJgQWKfzMg9BJgnUsbW8LWPAiPL9vKCZAxyMGRxl6tbgAh8ODxIj2RSQLWdIrk3zgdvyxq++h9F2WN8eNMSkTKnpbVLJnCTtkU9SYCJJTsvfNM2/UFkzt13n2PrvaIZu7YaRGG2DLQ== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 03/29] target/arm: Add MIDR, REVIDR, AIDR and extra ID regs to cpu-sysregs Date: Fri, 5 Jun 2026 08:33:32 +0000 Message-ID: <20260605083358.1320563-4-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|CO6PR02MB7812:EE_ X-MS-Office365-Filtering-Correlation-Id: 75afd30d-dd96-4ca3-289d-08dec2de78af x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|7416014|366016|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: it9nBHSLc21Fm9dGMJ3MOJv7onWOfAU4pHOdBqCJM5b00PUF+6NSE5IfSZJ/LLNmN6fcbgXdIGuHYgyx9mIV8VE0g88Vdx4EEyVHLNMHz2eROMYO8NNY8RVAcF4OHDooOhyjjeeBp9t1nzBFYXG1roYWdI8TaV6OF33rpAfUHCQsOtY0E+Hjv1TwbqLt0GM5wh0OZViJazOhqmIKamGLUXG3LHsKmkjHOxu2BAajFIl6q16O9SOmOSFFjU6eW0yinb+WR/YtO9qplcc0PtACisZG3vPnLTrG0Gkf0Jt8V10G5CgcJtW5rkZqRVgkifY+VIpRYNA0kXxMLtN41ydFnAMPZnaRQOHtPIfxU4A/Uemz1pqyfPVZxlHA3PQYWi8d9L0siGcsYmKBciTAe8wZvnzn/iryvWtzyhDynmJ1I8XYl8zlar7zIIn0en1jGJscJHlY1s+urg/pr1TLG8oAnSpYR/VueCWcRORbEgMOjR1WL9PGS6b/ydB2ORuaelCF2gC7JNrx+DZhjp2yUv+OuThSik1NYEEnK7YhuMP7KYzRIyCSnMNKme+zviOrxRXwZNnaC9PoMRbavjW78PL859wMw7Uv0KcVlrR9qpJT+LOjDGfjT/DlDIzpnimMP0iUwsfXY8K3FgG+V1+d2Fyx/7JgbQFiY55OmCm5sC7aPdG4zcxAzmgb8pAIunGYdRBH X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(7416014)(366016)(56012099006)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?P097PL2R2kXuzzOM3Q4Hkm+I/uP7TbacNGwZSijO4aMISiZf+QsT2oBAqf1/?= =?us-ascii?Q?A+0rtoYdm08uQ8e3gVYQr6GaUcCZPRMPpuAtAZGTbSo0r/W4U7Wo/aV50zSL?= =?us-ascii?Q?LTf8rxTaoJIWeAeALvMtFlhYxil5S1FOMKTL39t9KZxOHRyRTxY3AWL+Xk0U?= =?us-ascii?Q?WRYMM2YodpH25HcI+y78Z+eXRgad+WjCB8elVFVxRNuS9n70C5AK1Aq7kOdJ?= =?us-ascii?Q?HHI++KqR46dHnzBgeOvaqFQk6WacrSqESSQ/hwxdQUrlQkeARTCyufbWP9AL?= =?us-ascii?Q?G265y4MJp0zt61Mgjufvm6wkqXISKtZmQ9ymB9ea3af2fZ3Whd5r+b+QxMGg?= =?us-ascii?Q?ceN2/1+svFRoJGFyUZ+uhxEgd82jWEufmJqVBhAz0RUPl2Pm6WiCxJK/nB8h?= =?us-ascii?Q?YD/wnjIlyn7bY/X3YUQY/k/9O5gOu50VHsZa1enc7IZNkeNmYsal84ePLJzD?= =?us-ascii?Q?Ql6d2mR23m36TeRavC08av/JJwEONW7gBGves3P67JfuCHoNPftzaAaS/eed?= =?us-ascii?Q?jp1ZD/eSmMhBSgCHYWY87kqzYLS8HvLawiAkYJ69HPNCrLlhHFUTQ7rP/UXQ?= =?us-ascii?Q?GAlKPTa+u5XCaWs3G1+esPu++dKnOcvpPc1d7/sVHST/qqd/FOlw1hqtX1HV?= =?us-ascii?Q?y/pHLodOidWpDLmYnGPWhHrmErfn/Dma/KVUJA4FlBksNfoMFsV55CQlaq2q?= =?us-ascii?Q?3/v1/iBjJDmNj2H6jkqxB96gwZQZF2E1fkQSWycjX/cQImdsQk0DKPPSdDJQ?= =?us-ascii?Q?TxH/0eNWrx4GikY3Y7Zu83VGe+YeyfOMCM1qlCq6ElHZ4/VVEQsq1Aoyalpi?= =?us-ascii?Q?6+CXiPSOxBPFFEkrkWWu5lIrmXWKS405O2C+5TeqEmqjHLUaPSns8zAWQnef?= =?us-ascii?Q?zS9qUWHb/BVTje9X/NVSZdVFqUcXjIAHEgTWqeOYRuWgIFfa9g1rKLhIAdZZ?= =?us-ascii?Q?YQh6Xct01BMK05kedBID50w19m34UXsu4XyzVev72pr2E43X9A0JmFSPEUjb?= =?us-ascii?Q?3+iQrj7/f99v/0EUmP0PO214JUDUE65U8xL0OSweavC+tm25f4sjLzJ3vXy7?= =?us-ascii?Q?o9jRdWxyax0xre7TkXgDHk1QjTkxldtP+fHFm9eKyysAZeg3r0ZD5Zg58Hr1?= =?us-ascii?Q?o2URwezBDh2vv1l9qBOvpJgeyGea5CWyFVzu/EGkWimCLatdSI7kNfzlTssO?= =?us-ascii?Q?VYWCj9m7WjEvxo8fytfMY5hmRoh/KZN+j2fdA33uVWx0gntBbnUh0tlTk1vQ?= =?us-ascii?Q?Ot3RsEPxPsy3BAbsIt9UR7XRc2fNtGrhpzkMTTsfQzViCBYfKQeKjeAZkkfj?= =?us-ascii?Q?e5IHUdXZeRU3hWWQWRxHMo4tmz28oKfWfA8HmaXJBStP1Cb6G1ttF9xFr07O?= =?us-ascii?Q?FSDb1WmYPgyRfMgm1A07AHt8aSTbbHrESk3D6BeVIf6CmqK/q2M/CG+0JqhI?= =?us-ascii?Q?sWkerRzImCUoQljibkucD+BO8xdTNmIfPvVvohjJlR1E7VtDwDdaJJUIFaQQ?= =?us-ascii?Q?9TYW9T7OS/GD62mivGBQh4GX/C6g5YijlS5W1tWa606is/aMrCkuK0XgpzQW?= =?us-ascii?Q?QdbucoeV4aogsDaxa/yQPHXrZttiz3958NIanuzgid5GnupKkzpFxsxZy6Eo?= =?us-ascii?Q?pBuJzZlbNhdVZQKE4MwjxoW4VFRX46DStBvPEcVzQ29S7iNtopao4RvArC7e?= =?us-ascii?Q?wKDBqtPOyTJGxJLWAicy+Cu6+gqIzel0Z08LdCVInNsN3raFTBsxAbkk6OBZ?= =?us-ascii?Q?A7mewXm6YQVyoiw/m7q4QbTJ1wFBT1w=3D?= X-Exchange-RoutingPolicyChecked: ec9a7xBTGnEqz+BDCYJmAqC2oKNgcMkluUCTGL/TvPa0zxthaCLeNL5Ft0CwqBV28+Q2d9Sq4eHDfBgN3EOm4kmXGqKDsMBBkNkOVbuP0myyeIJs8aqOF6t3vq2FN9mNJQ0NVZjMpJX2rPdCI/fBKWQbgrFVka98bw0lIDnLfgo7ruhdGvS/YWITOUPj3hTKRZPTN0LdB3+O/nhtPzWrJjrUDVMV2sYdbf5hH5sxjBTt1JWTAybRQ5Ju5lroUq68LrkK17QciB+4Nq4a9N00WDSX01X6O1UQqm9rjgCgVWcUPoe5ny3RJbPNaXUs1+UWoIFarsZAH5DzF87qJJ8iAg== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 75afd30d-dd96-4ca3-289d-08dec2de78af X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:09.7686 (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: hAmsB9TpfYO7vLVv3YC7ubrVA6iPiI4ebyd5htTSyWw7N0Z5882K+ZnL3SOMP5UTN4kVQNBB9+dFU7uH/OT0/5+u3mPXJOcLUoI4Q5rNjQ0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR02MB7812 X-Proofpoint-ORIG-GUID: 8smNUur44LHmL-xDh9kl6RChBgdgPP3w X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfXw0OZX3QxvEY9 R2wcyvvSF0LZEedv9IV+2n/pJirXA4caYzmSCgz4GtOdXytxVnr1Zn7E4xuKYgkZ8r2+OeRh0BX 1/2O2bpF8OPCvDdiG972HMfM0pzXApMPElQLXC1GZD7Fj77/Dd5YYy31a259PHFwNTl7eICxzAH L4nNxKx55vAnXr3gKMTe8qGekXu7fXm4F+sMklGvqWMmmAtR+EFrQVrl0OTYOZDUwga8QAP2VGY 5Ny0IaWVM8HNosYp+GTwpYCT114zytFM4oaVx8g5BjBrOxiPzHnUKrxRn/x+j47SXNgMhJFuLVq +xjCUlTeATDtuFAAfknA6FBHvbVezi+ybbmsJH5tWSZZ0s4c8PY0y/aiqgaIgq2GB/VlSiSBLLj OrWQ02zZtXr+Jg3vdwR2slHL5faBgIIcFMuHqxoxziYP8j04qe9r0Xky6cDC95WG/KgAfEH3hQ4 N+/Zvdh7oRsWzvEgXww== X-Proofpoint-GUID: 8smNUur44LHmL-xDh9kl6RChBgdgPP3w X-Authority-Analysis: v=2.4 cv=dYmwG3Xe c=1 sm=1 tr=0 ts=6a228c20 cx=c_pps a=Dy1/g0x6RHl9kMZQX3cATQ==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=y4UcunY2MAxhM4LwGdWI:22 a=64Cc0HZtAAAA:8 a=AygiQiBlhmlzjj3rpAAA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.151.68; envelope-from=khushit.shah@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649336242154100 Content-Type: text/plain; charset="utf-8" From: Shaju Abraham Add entries for sysregs MIDR_EL1, REVIDR_EL1, AIDR_EL1, ID_AA64FPFR0_EL1, and ID_AA64ISAR3_EL1 to cpu-sysregs.h.inc Co-authored-by: Khushit Shah Signed-off-by: Shaju Abraham Signed-off-by: Khushit Shah --- target/arm/cpu-sysregs.h.inc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/target/arm/cpu-sysregs.h.inc b/target/arm/cpu-sysregs.h.inc index 3d1ed40f04..82a83d9d5c 100644 --- a/target/arm/cpu-sysregs.h.inc +++ b/target/arm/cpu-sysregs.h.inc @@ -41,3 +41,8 @@ DEF(CLIDR_EL1, 3, 1, 0, 0, 1) DEF(ID_AA64ZFR0_EL1, 3, 0, 0, 4, 4) DEF(CTR_EL0, 3, 3, 0, 0, 1) DEF(DCZID_EL0, 3, 3, 0, 0, 7) +DEF(MIDR_EL1, 3, 0, 0, 0, 0) +DEF(REVIDR_EL1, 3, 0, 0, 0, 6) +DEF(AIDR_EL1, 3, 1, 0, 0, 7) +DEF(ID_AA64FPFR0_EL1, 3, 0, 0, 4, 7) +DEF(ID_AA64ISAR3_EL1, 3, 0, 0, 6, 3) --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649291; cv=pass; d=zohomail.com; s=zohoarc; b=mObXYxUm1+KSUvDrb8Rdr8kvbWLdT0BplXC7gMHoGryiYk5DnALFytz3PTW1qX2vmijXP9MaYg859wnhQOrXYjNKn3jD91cVzf31eClDw8lnk93SWqLY1izg85FVdm0E+c4HQzP6pHUmDzBRo7a5PD1BHdZwUuBBhatDv8RxKX8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649291; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0WKwP7Lpsh45tUG848o0K+h628ltweK55ISKFj05h2c=; b=Eox16Vf3Hg2f/ytNlh1rRRKt4OOLc1DXbFJoZUrEO4BYYf8ZDVhcWD9VsJTSwAVJ+i0BC+J6iKFxuX9C37c6Bl+uXD26p/FML9xgwgmmf9I+L759vDv1JiMEiXYhmfuuy6UIzI0kHDpyIwcWPIbXEGD7FQ0rr73NUFrE4Jf/hEI= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649291531621.2129403879437; Fri, 5 Jun 2026 01:48:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQ9u-0006E8-7h; Fri, 05 Jun 2026 04:44:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9r-0006Bf-MO; Fri, 05 Jun 2026 04:44:03 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9p-0002bO-An; Fri, 05 Jun 2026 04:44:03 -0400 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 6556OdLN854749; Fri, 5 Jun 2026 01:43:13 -0700 Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11021094.outbound.protection.outlook.com [40.107.208.94]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejupdmnv4-5 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:13 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by CO6PR02MB7812.namprd02.prod.outlook.com (2603:10b6:303:a7::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:10 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:10 +0000 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=0WKwP7Lpsh45tUG848o0K+h628ltweK55ISKFj05h 2c=; b=SQWbr2Ni7pNgGlhj744qvIw6cTBrAT+H60XnDfV2UkRXLypwTIu+norTO z30xAVpf9+GAmbpWxN4oru555UdErQZQTMuRdTctCplihXEALLT+3rvQ2Knnqvrw WbxXrAzcs7n1EW9UlAcEF/ZKapC6907Ku7w5X7G1aAWagwRBeKoSLkcmj9yWENFd EHx4dws9tAsUPpO6Da7/rmxlqou4w2MbfzZ/DBzcA2MuB5TNit6P2+UcHprMfO0d 1TlGcHO6+CQDlNi0NtVAcNHIRnY+FfOXLG3mpQQB5UefUBP3cdKG+g/m2rPEPk2l ZaCSyeEANIulAW8P8TeJP7Tcb2HFg== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=arM7CQ3Rtz7xXgzbJw4U648hfCdtnA2kc5E4DHACSkwhLu2KdYqmnaEGB7EE2gzdEcNIZipp7NLTDYoDC454mI/pcdelYLvMdHCzP4UtxxG9t0u1fr77vOnyNgZAv8tYh0v7whK9Lpa9cXfDb1OCG820NIVsv5MrpNozJ1F8XmW7oWmZuPfyZE/RMD5ZR+vziR1VCsFybDRtsKvJPIGugyiHxCrfGRH63ZTkZh01JfYq2pLM/sbl6iqEiGi7BejsDJkyY4HPih/hGOKYQHXwp95EwBbktHebDD1J+yd6lDQQWAEYH+H7/a/08gA6jZ5j7ZicSqwBdICEX52cZ0RD5g== 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=0WKwP7Lpsh45tUG848o0K+h628ltweK55ISKFj05h2c=; b=q6l/I31jwqVJEV7hc0uUnh6RzjdSlb3KMV14L8jU0Nexs+JWAMDzgwZaQ8+QnV7k26RX7FWPvFfLBJWmw3hH5Xo0llxSM+A2813XsLPBZqm7OOKCA3RHJznJtPVxN74C35bce9PAeDzLInAAd/zDCF3K8omVF4RPjlnnbpe8Hoc6hhR2fLQhBNgBNlaAshYs1ZW9qWIvzBT8DC4C0vdh01ELmq7KIsrLeOB1YldPyXP2JuWYu/nlaHHM2C0okMRnA6PvsU0zaMSk3PIQtcUVgMYQ4j0NKnLjZZbwzb4QUGo2enJfrk5eNoKAd/+dpDM2NDttF8JhLgb8gmSvj6eMYg== 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=0WKwP7Lpsh45tUG848o0K+h628ltweK55ISKFj05h2c=; b=YrVD/CMzRguKKQQA7+cr9OJMDZ8MhojGjtK5TLdDJy5jHbnsZxEsN89BrhFLE1fBoLJLqy62K9gJoAa4hWbOF49D570SS78HegohuH0v4JLdHTScUKQCDShet70JBzx18a/1fN8mCQ4VNEr/ljOo/jBjXCj92hvuWWMQ6dlaullcSwVE/L7ZKAjQYL3xYk2pgMBjYnPY6Mse9cUAP8lqyG3yKFH/R+wDvUdDkCSew3JNKeUCV/wVI2uJTpOk3Vm9q/4PDoG6CoTL0TpNBMdlPNhkT01VgpwTvr/sMdjrLFrK3AzkFKijyJIJ4W1lxLHVNuxSecXfJh3BhQ/Aa4KACQ== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 04/29] target/arm: Generate ARM64 ID registers and field tables Date: Fri, 5 Jun 2026 08:33:33 +0000 Message-ID: <20260605083358.1320563-5-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|CO6PR02MB7812:EE_ X-MS-Office365-Filtering-Correlation-Id: e53f063c-c18a-44f4-c3b7-08dec2de78db x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|7416014|366016|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: Sb40ML1+CTnACH2e7f4MRD5gJty02ZnTFrQa5NpDBPq1KX2DeyAMTelaYhvbaZFNrtLXj/nvb99MvgSsi3/cWYFDN5/BnCtEWpRN1L3obce2YzlQRnVx501L9BCHRtW/7OQcYm6T5PPCvbJrYeGyfZ/dwyTXJgaOhF2JgAbjJKeDZLO6E69sNiCakdK6AJlbFEbBcrnf0CtuIMGToInfqZNqvivsmFvIK8hIvMDd8OVfQJgEionrcUQAvyE0/nfqvyJlQmQ4ky+MB2WhXEyPe27Fa5R9exJUgJiZU3FkdMqYG8J/bt6oNXopjk82eErew+FTyDh+o2DNRvLptz6/pk02v1a/2rOV0/aEY+T7A2uhECWi1hOLMa5rzrbA/43ojNzVCyK+zxH6rB/z4iXzyDzi82/DPRQnRKPLQBpE3IfADfMg0Ojnbej1uOVImRZtPb5+OrWJW10G5W7qexFmuH10qNGNkjrAgKVyD6AnLePjJYnimncqE6Z7zJVXTVA7tfRepmTrQn32sI5yJyw9ku0Qfg1507euRSrqiZTDe3+lfrpYvCITPkAaN5Py8phsfzITDrSdSkd7mo3wqlIFv6KiZdPnI+7aTMDAILe/2Edgxk09R0rFtWV3IF9YIbs/vhVxWVEzYnPQScZb+G5DtD7nElFd5Q6MyTyOdGFGqRqC5EipR0mIwZsJfYRqJrZm X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(7416014)(366016)(56012099006)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?BcXhTCeuOAWwBN1+cm6KP1m4Zwb1z25sPVdD9qkHwyL4BW2DZDil8Rd0Xjp1?= =?us-ascii?Q?xKZlRMNzMDqaOkO5oU4Ql2rV4z0elru3vjWJt/bnF+biPIL+RnKVqK2t54S3?= =?us-ascii?Q?VLOeyQDVwFFgnEE6emVcJKh4HaYi3L0zbww7SxjRzVjGu63vsprm0r3lIa1j?= =?us-ascii?Q?WeZHUnUMEibN3C3NauTUrjEFwHJ540iTLK7TtId31XJHut+4n3dMkt2EJPKW?= =?us-ascii?Q?27IRl5PKfOSToY0D5Lk+LGZw+E7Wicd4y3gEDafJ7MJpOPpdQiK7AVM1Qw4G?= =?us-ascii?Q?WuP+ioVMqYNgCOLcOOpBBAlH4zt7jbuFva6PjAO9QfpOAfvPZS0IzoHWtX1F?= =?us-ascii?Q?Zap0EnkrWrzRaNIQh0QKRPcB/iI4qkqRLUycSNEipQBptSnHO+G+Sfi6RWgc?= =?us-ascii?Q?FH7Hj6VqS/hq2gX9tvv5QoS0y4PTMN1a51ny5FFsImx2h+qP2brTGwgmPRRZ?= =?us-ascii?Q?McZOtUXScZMya2e2cWgZ0Elrs4Njl+zCXWqi9OpJjL9HEHhZDXznbWMVLuzM?= =?us-ascii?Q?6NZl0V5gfELzEIhKagUAxuxbWHD/rF8Xjas5ra7NwMEyLfRF7T5U9FVMzvfC?= =?us-ascii?Q?pCNQZdcSw9hhYTfdx/tRa8dcHzKRjRfoqxM7ohfjba36BZzz0rDlvUSeLdmv?= =?us-ascii?Q?huYOJ1R4oGTurMaRwItbK3uld4nNXDF0tlhqQvrpIGpMEHqG01tUBvzsWPdH?= =?us-ascii?Q?Sc9S8JXnXHqidKBKi1EMa8+SfzBYT3Ub9Um80Wr271I1Hz33qTuAAFm6f8wW?= =?us-ascii?Q?F/kihqRklHqjK1mSHboe9uuLp9ZhMQLYcj4/7h3AGX9AkHVs/sKiYPG87La+?= =?us-ascii?Q?Ycghu9BVE+ogSBWtbgkaYWeDUImjC8XDb0u755YtONv3oo9ax42vjazS4e5n?= =?us-ascii?Q?9ElhTwCiQCya4qzd1Q0cefp+buOM+N5oG4v35dGJcYZbLq8xuS9ErhT6uAaX?= =?us-ascii?Q?IuONNqbMByjU7wj4g7IuaCV6uLPns4VzmWFuLaNmAyGwRt8Ggx93BlacRsn7?= =?us-ascii?Q?lgASGlvKXjtwVbOf60RAxArbhmowhjJpPETDwDRNpmmY+EKglVwFpcPtFhTS?= =?us-ascii?Q?wOGjTwsbi0tr5O+Z9qqhZdW/pHvwhCnq+bXpomG1i/d7WXai8zu8nJ5m84TB?= =?us-ascii?Q?3kgB2Jeg3ZqP1vRcNKm94unwIA9kHLUi2vKEDxxgjb6Yhd9s+8VH5uPmEzvN?= =?us-ascii?Q?Riz1Q2b9YJSCcYCTsSuoWWhJl7QwhCkTWaPZst6PgsQarcQcK0SjSPh5roIy?= =?us-ascii?Q?LRCtskdLtTlfwnIdPN5zmWMGV9dxMc+tIcskz/PlqD2ngLcpP8FjKmueGZeD?= =?us-ascii?Q?4IYDmmCzBjLQzX0YiYqaYLxPh96qvDTEPyuTsAg/WYSYiHaD/ASlPfDtlXwZ?= =?us-ascii?Q?frAI8WKZBeOrinfcr01KLeaH+HItyozXcNXvrdVThhmXD5DQumRXdiblHtFZ?= =?us-ascii?Q?F6mQbPC8qoc/sJ3lRAZITCYlav+X/l+BbFUpu09qlhMmyoCRW0x0nYKjyCqo?= =?us-ascii?Q?KG9CvCiAGByVWHWcfs1VWbdt5j6MbAWTr4gX/rrhOLwvfvG973HVA6omuX+0?= =?us-ascii?Q?QcZ1PAbXzI6qf6Vm6N5u2Ahk2zSFyqccfAXW0+EfoFj3L6lFfHOT7W2fY1NS?= =?us-ascii?Q?sVGgBiQ9eXI5kXgNLytITakkHmzID2o/1ZWS5LBBjjGaVzA/odDHvfckrwp/?= =?us-ascii?Q?ahk/5TCU2ZTDHhRfapmN6+InugnFEw1IdSvBSWAx/6p5Ipy6hE4ymlojUYuy?= =?us-ascii?Q?FetyhVjJKw2MBUTDBdODKT3UTfZp/Jg=3D?= X-Exchange-RoutingPolicyChecked: kWLxKH//hokm+vvfqa5QR7X+u7bswAhnKtlHHFbKcWmoNlwEPhpuNdkYcD6IkwI92C/skEboLWudsArfNfMxAdTqrYsOkeMeOiw+N9EkpwVfrZXqSvY0Oxp2fOIt+9IezymhljHxpCZPxy2uZjh/gLbM8Rx6eNqHH1F6nXQWma7ugA7+HGLETE73chwm9oIni42/xBYbF5O6BwKnuND9kb9HvsbGkpS1mAl8p1a0D7MnSlR1Kg2oB64jC84CylJoSkGZ2AedaAWD/yBnOxVYWDU9emRpNR2xkGXZPuCG8swCMVD/b5BcPV2GIMIIVT2AK6Vi7llwWmVEbWql3L5ssw== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: e53f063c-c18a-44f4-c3b7-08dec2de78db X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:10.0561 (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: XM92uLy4OAOqaC+WdHtTSZ79qMtQ1i6/Tt8RyqKljW+kULSDNhO6DIqwd3YuDF1QyM831PvpMmquYuBXk9M6fFp6SWhIMrK95FVnswmHkCQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR02MB7812 X-Proofpoint-ORIG-GUID: mFcvnf1PG37fCEU46EEarModPZBdFN6r X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfX/laKBTPex3J2 akyP0a3uEINsRKuRx155rMmHgFji1SskUcAuB3O2nvVg3AXuggD4DqG0P+fvq59Ted5NeVAacVj 30NDd+wotLtrEMPfY9vz/s8aUmA/RZHopi42L04Bist8XJKk4efozwoLbqufUkIm4WXGgOuw5jP euY4mASGexgCxcypoeIlI98YrKo+svD1TiSJSpmT225wkDraoNCoiLIibz3SgzE/dkRRuTP0IXL KHLjBHkVQnPMmm4vFuB0AfmLIAYS59pClLsu7AF5IXjJcAT3N9leFe9K3YlOu/ptI0pqdC7GEKX iaiFC/FUsHcwngujbiI/1QM8QXH1n/y3RMipGDkCL2rVrkcgtwI5ecJxD73PsF4/BtOmElpJeJ0 qeId13RLFrnqj1aZl+ziRhm4ShDLPvD1nCbKGjkUwQ0MkM33O5da6E1zifVJXsAEHVFaw9YfyoU B9HCC4b+Pjyg+0KTZ8A== X-Proofpoint-GUID: mFcvnf1PG37fCEU46EEarModPZBdFN6r X-Authority-Analysis: v=2.4 cv=dYmwG3Xe c=1 sm=1 tr=0 ts=6a228c21 cx=c_pps a=Dy1/g0x6RHl9kMZQX3cATQ==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=y4UcunY2MAxhM4LwGdWI:22 a=64Cc0HZtAAAA:8 a=hOrA-tRr8AhjEMyW9QMA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.151.68; envelope-from=khushit.shah@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649293769154100 Content-Type: text/plain; charset="utf-8" From: Shaju Abraham Include cpu-idregs.h.inc multiple times with different definitions for the X-macros. This will generate tables for all Arm64 ID registers and their fields and their architecturally defined values. These tables will be consumed by the property layer in future patches. Co-authored-by: Khushit Shah Signed-off-by: Shaju Abraham Signed-off-by: Khushit Shah --- target/arm/cpu-idregs.c | 125 ++++++++++++++++++++++++++++++++++++++++ target/arm/cpu-idregs.h | 38 +++++++++++- target/arm/meson.build | 3 +- 3 files changed, 164 insertions(+), 2 deletions(-) create mode 100644 target/arm/cpu-idregs.c diff --git a/target/arm/cpu-idregs.c b/target/arm/cpu-idregs.c new file mode 100644 index 0000000000..81661dfca5 --- /dev/null +++ b/target/arm/cpu-idregs.c @@ -0,0 +1,125 @@ +/* + * ARM ID register field table. + * + * Builds the per-id-register field descriptor arrays and the global + * arm_idregs[] table. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ +#include "qemu/osdep.h" +#include "cpu.h" +#include "cpu-idregs.h" +#include "cpu-sysregs.h" +/* + * Generate an array of architecturely defined values for each field + * in arch-value format + */ +#define IDREG_START(reg) +#define IDREG_END(reg) +#define IDREG_FIELD_START(reg, field, shift, length, safe, defval) \ + static const ArmIdRegArchVal reg##_##field##_arch_vals[] =3D { +#define IDREG_FIELD_ARCH_VAL(v, n) { (v), (n) }, +#define IDREG_FIELD_ARCH_VAL_ANY { 0xffffffffUL, NULL }, +#define IDREG_FIELD_END(reg, field) \ + }; +#include "cpu-idregs.h.inc" +#undef IDREG_START +#undef IDREG_END +#undef IDREG_FIELD_START +#undef IDREG_FIELD_ARCH_VAL +#undef IDREG_FIELD_ARCH_VAL_ANY +#undef IDREG_FIELD_END +/* generate an array of per-register ArmIdRegField[] descriptors */ +#define IDREG_FIELD_ARCH_VAL(v, n) +#define IDREG_FIELD_ARCH_VAL_ANY +#define IDREG_FIELD_END(reg, field) +#define IDREG_START(reg) \ + static ArmIdRegField reg##_fields[] =3D { + +#define IDREG_END(reg) \ + }; + +#define IDREG_FIELD_START(reg, field, _shift, _length, safe, defval) \ + { \ + .idx =3D ARM_FIELD_IDX(reg, field), \ + .name =3D #field, \ + .shift =3D (_shift), \ + .length =3D (_length), \ + .safe_rule =3D IDREG_SAFE_##safe, \ + .default_val =3D (defval), \ + .arch_vals =3D (ArmIdRegArchVal *)reg##_##field##_arch_vals, \ + .arch_vals_count =3D ARRAY_SIZE(reg##_##field##_arch_vals), \ + }, +#include "cpu-idregs.h.inc" +#undef IDREG_START +#undef IDREG_END +#undef IDREG_FIELD_START +#undef IDREG_FIELD_ARCH_VAL +#undef IDREG_FIELD_END + +/* generate an array of top level ID registers */ +#define IDREG_END(reg) +#define IDREG_FIELD_START(reg, field, shift, length, safe, defval) +#define IDREG_FIELD_ARCH_VAL(v, n) +#define IDREG_FIELD_ARCH_VAL_ANY +#define IDREG_FIELD_END(reg, field) + +#define IDREG_START(reg) \ + [reg##_IDX] =3D { \ + .name =3D #reg, \ + .fields =3D reg##_fields, \ + .fields_count =3D ARRAY_SIZE(reg##_fields), \ + }, + +ArmIdReg arm_idregs[NUM_ID_IDX] =3D { +#include "cpu-idregs.h.inc" +}; +#undef IDREG_START +#undef IDREG_END +#undef IDREG_FIELD_START +#undef IDREG_FIELD_ARCH_VAL +#undef IDREG_FIELD_END + + +/* Per-register field position enums (0..N-1 inside each register). */ +#define IDREG_START(reg) enum { +#define IDREG_END(reg) reg##_FIELD_POS__MAX }; +#define IDREG_FIELD_START(reg, field, shift, length, safe, defval) \ + reg##_FIELD_POS_##field, +#define IDREG_FIELD_ARCH_VAL(v, n) +#define IDREG_FIELD_ARCH_VAL_ANY +#define IDREG_FIELD_END(reg, field) + +#include "cpu-idregs.h.inc" + +#undef IDREG_FIELD_END +#undef IDREG_FIELD_ARCH_VAL_ANY +#undef IDREG_FIELD_ARCH_VAL +#undef IDREG_FIELD_START +#undef IDREG_END +#undef IDREG_START + +/* Flat ArmFieldIdx -> {reg, field slot, shift, length}. */ +#define IDREG_START(reg) +#define IDREG_END(reg) +#define IDREG_FIELD_START(reg, field, _shift, _length, safe, defval) \ + [ARM_FIELD_##reg##_##field] =3D { \ + .reg_idx =3D reg##_EL1_IDX, \ + .field_idx =3D reg##_FIELD_POS_##field, \ + .shift =3D (_shift), \ + .length =3D (_length), \ + }, +#define IDREG_FIELD_ARCH_VAL(v, n) +#define IDREG_FIELD_ARCH_VAL_ANY +#define IDREG_FIELD_END(reg, field) + +const ArmIdRegFieldLoc arm_field_locs[ARM_FIELD__MAX] =3D { +#include "cpu-idregs.h.inc" +}; + +#undef IDREG_FIELD_END +#undef IDREG_FIELD_ARCH_VAL_ANY +#undef IDREG_FIELD_ARCH_VAL +#undef IDREG_FIELD_START +#undef IDREG_END +#undef IDREG_START diff --git a/target/arm/cpu-idregs.h b/target/arm/cpu-idregs.h index 514ec39106..37a87e6d0b 100644 --- a/target/arm/cpu-idregs.h +++ b/target/arm/cpu-idregs.h @@ -16,12 +16,48 @@ typedef enum ArmIdRegSafeRule { IDREG_SAFE_ANY, } ArmIdRegSafeRule; =20 +#define DCZID_EL0_EL1_IDX DCZID_EL0_IDX +#define CTR_EL0_EL1_IDX CTR_EL0_IDX + +/* ArmFieldIdx: per-field enum generated from cpu-idregs.h.inc */ +#define IDREG_START(reg) +#define IDREG_END(reg) +#define IDREG_FIELD_START(reg, field, shift, length, safe, defval) \ + ARM_FIELD_##reg##_##field, +#define IDREG_FIELD_ARCH_VAL(v, n) +#define IDREG_FIELD_ARCH_VAL_ANY +#define IDREG_FIELD_END(reg, field) +typedef enum ArmFieldIdx { +#include "cpu-idregs.h.inc" + ARM_FIELD__MAX, +} ArmFieldIdx; +#undef IDREG_FIELD_END +#undef IDREG_FIELD_ARCH_VAL_ANY +#undef IDREG_FIELD_ARCH_VAL +#undef IDREG_FIELD_START +#undef IDREG_END +#undef IDREG_START + +typedef struct ArmIdRegFieldLoc { + ARMIDRegisterIdx reg_idx; + uint16_t field_idx; + uint8_t shift; + uint8_t length; +} ArmIdRegFieldLoc; +extern const ArmIdRegFieldLoc arm_field_locs[ARM_FIELD__MAX]; +#define ARM_FIELD_REG(idx) (arm_field_locs[(idx)].reg_idx) +#define ARM_FIELD_REG_FIELD(idx) (arm_field_locs[(idx)].field_idx) +#define ARM_FIELD_SHIFT(idx) (arm_field_locs[(idx)].shift) +#define ARM_FIELD_LENGTH(idx) (arm_field_locs[(idx)].length) +#define ARM_FIELD_IDX(reg, field) ARM_FIELD_##reg##_##field + typedef struct ArmIdRegArchVal { uint64_t value; const char *name; } ArmIdRegArchVal; =20 typedef struct ArmIdRegField { + ArmFieldIdx idx; const char *name; uint32_t shift; uint32_t length; @@ -37,5 +73,5 @@ typedef struct ArmIdReg { uint32_t fields_count; } ArmIdReg; =20 - +extern ArmIdReg arm_idregs[NUM_ID_IDX]; #endif /* CPU_IDREGS_H */ diff --git a/target/arm/meson.build b/target/arm/meson.build index 4723f9f170..be4361fbfd 100644 --- a/target/arm/meson.build +++ b/target/arm/meson.build @@ -10,7 +10,8 @@ arm_user_ss.add(files('gdbstub.c')) =20 arm_ss.add(when: 'TARGET_AARCH64', if_true: files( 'cpu64.c', - 'gdbstub64.c' + 'gdbstub64.c', + 'cpu-idregs.c', )) =20 arm_common_ss.add(files( --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649295; cv=pass; d=zohomail.com; s=zohoarc; b=KYPdmeAeWuQVKBFdnqYwOSr4jU6SbJWlf2jm7M9vJPBVYzpko9bVWKPInbdwW+tRimM+ePoIAPy0VPiM2f/274RgZ2dHo5nMY+h4/V7mIshYCnFNySPA5MUM2kLQN04JjFXn+v7wC2NpxlB5tOv4jLOyuz/9j1VfiDLjvBQZSHQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649295; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pG6UyugB21twHsoVH3Y4Yli8mJE61LevG+jBlrmzJw0=; b=W3z7oeYm3sgbxpT4yXnCca2bL/xqkdsCCE1Gn2V8mS1HzUB77eUYkjSNigQmy9kN8+wBRlHDgzq230cUGQ+MdfHT9DUjIz6dalsDq/46ZHScj7DtlY2CVqhRtT0aK5DDGAY4Cqf9nn6vTMWfwdRDpOfS8UWjr/JM0BorzACs0yM= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649295110621.5182988575001; Fri, 5 Jun 2026 01:48:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQ9g-00060W-2o; Fri, 05 Jun 2026 04:43:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9e-0005yu-5X; Fri, 05 Jun 2026 04:43:50 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9b-0002Tm-Ep; Fri, 05 Jun 2026 04:43:49 -0400 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 6556OdLO854749; Fri, 5 Jun 2026 01:43:13 -0700 Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11021094.outbound.protection.outlook.com [40.107.208.94]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejupdmnv4-6 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:13 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by CO6PR02MB7812.namprd02.prod.outlook.com (2603:10b6:303:a7::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:10 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:10 +0000 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=pG6UyugB21twHsoVH3Y4Yli8mJE61LevG+jBlrmzJ w0=; b=ThTfjkYK3QQglR2DHCmZLoKWynJQSMfCnvqk9xMbNSmzOQ8cS23VRZoG2 DZAHQ8B1eeTwjD0FUh0K8O73PuIeDrHYFIbzBjFfXJZbgbcylJZPGLWAw2Q2fDkB YNsYvljttIBh9ouEcPMWUMvDyoMBmpmysOP9eKJi/A4yBAkovxNLUTk5ECro44D+ FsIkC4BSBTR2/waEB1vid/QVqmTBovl+EoVQBFZ2qcTBCmsztGyXT6kv+M9Cob/L ZNO/Czn4jQV0bWbbIIUaEqOdK2+aFvtUvCS/3Y4iEbEKJ1TVVV4ImPYa9FRCkis7 wJ6Xg0YrFGIpoTZFKLma0yGVpg8GQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xhmBjPFZKeA+W8mp5IZ7PagbOBt4H4vnBWzvwtzbLS/TEVu1vCMKnbMvXT45NDay5YVekXOBa6b6IowvU4Y4/M8o7Y59cnsp78lJSG46XkhwFT/7hLBjltTSn5rupRB04Rc3xsZm+pnIO7zfga2JbbC9+6lUM64HAtWK4fuiUigi/fbT642tT9HoY3/+XuF1KplG8jYc4p2Tdy3jqXNEfrcrIRnBLcDrVYi2X2lqIC+vAhSq2U9yeMoG8tXicDtTrN+aOw8EZt9SW0G8XIIvw4nLjSny/aYlySw6lnMbgNIwMn5rlldw6VuYdw4KT02fndMwq+OX4cz37LvgoTq8bg== 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=pG6UyugB21twHsoVH3Y4Yli8mJE61LevG+jBlrmzJw0=; b=SsA8WzhEQZeWhON77+WQqFs4m585PspPTCDsZV1G8L85ypT3UCb2PHJd1cZml5Wu6pvS0Th95ko/VtxsUqDqyLTRWRlcpN9ERi0UTYVDXnfG2KpOKkOCw7ciqvjpcRNAF1f4rdiPRyRfJtZOZrxduWdA5A6JYwUdfZqlaTBuz8O/rkropmQ0CRZrPJfNSEpZn1wq0FIFq4eO0zrjn7zN4TiCf0ukAbo3CQfw9Qz6n3jlQkPx63cWa6ETz7xFk8cQRDRnymBzPlMWlMhLfIt5Ud8ZcxNY5XvCge20p8E+LUu1ZwuSjGZSDMB3tmhw3tPkCRiU4M6yUxNeSQ8vXrCOhw== 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=pG6UyugB21twHsoVH3Y4Yli8mJE61LevG+jBlrmzJw0=; b=wj7LJYXdMCD9hasYd4Qg7p+IiFSXneWfZWN+ozd6nJGSfSWPRFzx6P/Tn2hhTZD8jFbcan0gG3DDGPU8fmev7XE137B8tNGTd7vPeGWJYX1WTXqCbd0p6wGm7jlEUbHa2z9faP5xOtkyQbaHanEholTrKLVFLms9+Ey5vtTDj9nRCnNaT5S1pYIIHvW9+eXMehURW6sm7Hgi4m/o6pLvqBSQDWsKYxV+NxzPo3nSDTLucvpMMyblpj0kC+14yP6mQ3+qmBUdpg5ZeVVEJRrGh5vudk2edEalLr1rQlivq+xw7uHW0asZ3w9R7hHq8yUMxCkd22w8dPMOyoPZSO9oZg== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 05/29] target/arm: Replace FIELD() macros with IDREG_FIELD expansion Date: Fri, 5 Jun 2026 08:33:34 +0000 Message-ID: <20260605083358.1320563-6-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|CO6PR02MB7812:EE_ X-MS-Office365-Filtering-Correlation-Id: 69699bae-41fe-42cd-1ca3-08dec2de790c x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|7416014|366016|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: nKQ+Wt8p9nklauK2pUfLGyfkeF2g1H8EtpqCC6Psxji3jKyTqo4P8GCGhjCTbVQ0tdH6e6egXsNe61HMbBRSKJfed0YbunR7C25YdrZ9McpmWKpOgzyuQkemNOoQgXx+FxFXh/6TnF/htREQgOuW7Zl7Mm8d+TJx67q0O6EQMdJuuTQjLBtXpKdqOxVHWUNBGL7Ffo+GkXeM1apyOvTszLo5uLBOn1JZ5UFYhEAjdw9T3nu7ZSZqflw3T2Vj+DXdWJuW6p1OabZq9VyDaKRjH3sqKFSg8hHcwl30Fx6MzCc+ikVlP+HJRVUSMnRc5fjB/k8eSrctm8MkNoMJeo1pmpLzqpmULvDbxBveB22F7T9hlOZQk0piYozg4Z9+IAJNfGDqjYuh+pPnnMIkw2969R7L3FLaPZglnVdLroE1gCq9xsQeCYHMuSmoTyDY7m7UVd+F7+gAwKdCobluy3nhLyv/1TyaukZ9FSurpoDPzAOM86vC85p2F4y7jsnsfESwZTyhFa+mCJtU4iLd/BgrfwXxg6/WqeYw0Tw4eIae39UpXdDGGJpvxf8Pubj0qQprDAFn8rmTsC5tyOXK7CWhp7hsTplt4fh2bcosT8f8CREhi+U97f1sEAQivOAzixBx6Tba7oWa3iG1Z0XA31t4X/BND8HYInryyYkGTtoQnmSy7VKf5f2jTL7aROwQx6X4 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(7416014)(366016)(56012099006)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?H+ok/OTwyH8iMNIRFRiaAk3hlFmwKUfqgB7MfB6HsGRuQiTTW5tIfIHIhhRb?= =?us-ascii?Q?jXcOyI/0cF6YYaRNxnv0jFl+IVsrzDDb2KvJSSjduVlVo3pCQ0Zo0cbsg5y2?= =?us-ascii?Q?Lku0HtwoOcTSdgNM5CIvS8rPWdEcoj+RAls6mY+LdD/7SYvvyC8Zy2EIDEPk?= =?us-ascii?Q?Qj+Cpdnb1fVKyASQzqChKbX1OTIoDfTkDTj03ef5gXsT5PYSQjACvNYWt5ip?= =?us-ascii?Q?ccVLKM+6DC3W7ML9Y9OAsdODzGoNcPb1DXS6SRabLOLU3/0l5DX4G4LhlNn/?= =?us-ascii?Q?bxf+CKMumdQz5dRrFYZT4A22HNGG49ixSr7R8QY0hYBFgu3HPy/quLCO3U0b?= =?us-ascii?Q?32Ryc+V2X4jHxlroOPP5mTYkTERg5TLKSfjNbkfUPD8iNZmmLTGscEL+Z0Qw?= =?us-ascii?Q?9tYmmcXWq7gNoOhChjkVljiSphNmVwhqK0nqm/lP83Ik49gD8rV9COeGztI1?= =?us-ascii?Q?Agn31onV2S3rNHijjCWDibTvuQ54KTmfRHvFCGGC5dLwLopRbJsUFnyl19MA?= =?us-ascii?Q?zRQv56b3FFWR9yLMTpKH84n9JlLvw2aDxjrrqab/gCISbenynl60BYBZhT1i?= =?us-ascii?Q?fZdwwN7ukv57pquMFtntDj+/JuE0/gPjOJyY+3R6D7RFwbUshfO6lkAXq9jW?= =?us-ascii?Q?AzIsyAUIwgX2lnSIT5SfxG/pQU1Zc30J0nBPIhP8PvIat34jSot7OxTtv5Gx?= =?us-ascii?Q?4O+HzLZ+eDu13v2ExxCAulS1LyFDDuuIozMABOnl4Dhnjh92/HsBA+/cJRRw?= =?us-ascii?Q?04RTrjck/N6pKoq1+siIKpE9Vi2Y3nBS7s94uULJZh8XCiqsMQ5qV9sqPst5?= =?us-ascii?Q?52W7ipEMg6e4zo0q4CklqmAg8gkS3cV7FswDJLeqIXdUD8h5bQhJNrymFSM/?= =?us-ascii?Q?uJRjXLaQGz6RQxlTBZDrXjoMJWOw53z/4SKZm5ud9fEOlvB1MZupkjDxgKMi?= =?us-ascii?Q?DdV4Kztt8FvYaMqaJzT18mOsH+BwoNxxlG9f5mFxwc+vDmdl9adFqPtV4qOj?= =?us-ascii?Q?LakbgGytveAkw/THwDnA61LTXKxpNZg3or9CL5ryuMEAj5tlTkL4F7Lll5mp?= =?us-ascii?Q?ncfWG81eCZNi+SjPx/RQrTC+rV8Rl43ftE/jz07dKJejocKyWPO5r1HsOj37?= =?us-ascii?Q?7mXocUV2d9mK8BXReVrlQgm6TxQ7QRbpB/KIccsl7MI6AjNhELMT62DsgqoO?= =?us-ascii?Q?Fn8bJLfP5LUvoSlH2T76TVrV1XzWOCtSxH2a514huVNe9uU9xcFbDJiglc/j?= =?us-ascii?Q?Nvc0Avw7GHYUZEoQzNiXWSUodF3XTtvuyHSz9rETl47jDgF3hUAM+fxzHGIm?= =?us-ascii?Q?BE2kXUHleI0/Xd8SllR9ND8amst7eLWTv2icfjtYpWKWtuGzkCEGsQOGz5qh?= =?us-ascii?Q?D4/x89TE72ilv6ej7AWcOgDMmv/XJ9g+Q5vYkJWK2tOyc8+K/0pq60aMBT5O?= =?us-ascii?Q?/ml3xLUHqKKEyrNlFj/c2AlgsGN6zUR9OsBS1vRmlTvIWCDc65sZOZReVB/J?= =?us-ascii?Q?raomzhj71pkWABYIkZOYzi+7/ZP57PocKWsoL4k1GCUdoKurCyie/lt0rFMq?= =?us-ascii?Q?aBimgdPBkuHs0PyQd+p6AafKkKN99WAsZBfU4yDX9ve6ePj+KoGmzfYx8itB?= =?us-ascii?Q?8RSGz1G4IvFOg1nriXXqMH5UcsakdgE5b3QWM7QSMv+mSCMrcIQ8xCuS+Bmr?= =?us-ascii?Q?+UEBFOzsIqz5g2LFJjSBXOPrAEh3XHfi7VgdKPVzstEWudfa9B2zZaKLWHl6?= =?us-ascii?Q?FNF72KVPuMgGwWxxIFchMJWKsAKrCJc=3D?= X-Exchange-RoutingPolicyChecked: j0xfaCo8EIoOSQWvc5UgHIWgJRNTw4pnB/UnnXaz/bQY/27pdTIedtZIyppB+YgTIHMNymC7Y7FjFO9zCR3fcohO/arDuWH+kAbquFo6Gq28R5GJNoZUQRf1NLXsAvmtKJy6WqB6KGkwHR4iyL8wmX3vxE5EXdyyqPGRAyE263yIHGUASzlHag+lrRkcfbDZjd4SAa1RCKH1gcSwIcf2QjFf9s2bIposDziTlRaliKrgzwjeQwCqUQpSqY4F70U8jd/KqgPIl6242F6XkE0PqEqwkDlys5XFOzhMsltfQdFpHXBxp8ckHy5/1uKRXcXAYLHTq2k6YX5MTT/4CzywWw== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 69699bae-41fe-42cd-1ca3-08dec2de790c X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:10.4383 (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: U3Hnbj7gD6+XjW/RU6YLrJvVGSkgWZPNr63YW7RNvfyP+55pcNCEDTMDblHBqPMN/XkcgsfVPBfBfmV8/+3GIJn6nChQl7h2Zzd+x+VJWqQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR02MB7812 X-Proofpoint-ORIG-GUID: 3uM6f1P5knaG2pv6VleX74eaF-cwKN0i X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfX1TGt1KRC2JQM MXeC67kEZutbrZjBkiZnGhTDPGOuHzNBPIw2hqNomy7stptEMLvsB8S8bNkWFHcj6YXrX6mBd48 O4ADA3Cx1spt2UpP4qEPsniYpeLHjO8OJgVfGDlXZFNQ7kM/9GC10WBs6BWOeX2bu4T5b1wZNHq hgWGydiP+5R8TYNq1nPuOj5SsqGMJdbVnhPQ5RZVbT5UxvhfHtLopYvfiu6+N6tw6Eqg025QSSR GZXsj9gDN1f7yELbzSIGA+N2Qxu5+OXBfqSRih7Ps9wXP1vlzoq97kNog38ZNEcroEwBXdrQtn/ aBiDsJURLUm8kqeU3S0Cc88iETz7ndQ+ft+ppP/hemdTkSab2Xo065g3itryzn5JIsY3n0PpqYA Gr5YMaoobAWjQUH0CHQA/13pht/C3hPJRVXNszoVxS741GtMZ/hD3+N+Wu1M1TuonA3XlIo0k1b vTK+wJo2WhpHca8jIXA== X-Proofpoint-GUID: 3uM6f1P5knaG2pv6VleX74eaF-cwKN0i X-Authority-Analysis: v=2.4 cv=dYmwG3Xe c=1 sm=1 tr=0 ts=6a228c21 cx=c_pps a=Dy1/g0x6RHl9kMZQX3cATQ==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=y4UcunY2MAxhM4LwGdWI:22 a=64Cc0HZtAAAA:8 a=avvmcv_isQaNTVs95NMA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.151.68; envelope-from=khushit.shah@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, UPPERCASE_50_75=0.008 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649296548158500 Content-Type: text/plain; charset="utf-8" From: Shaju Abraham Replace the existing FIELD() macro with the newly introduced IDREG_FIELD() macro to remove duplication. All definitions for TCG remains the same. Co-authored-by: Khushit Shah Signed-off-by: Shaju Abraham Signed-off-by: Khushit Shah --- target/arm/cpu-features.h | 235 +++----------------------------------- 1 file changed, 19 insertions(+), 216 deletions(-) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 4e44245a8b..e162bdff9b 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -50,14 +50,6 @@ FIELD(CCSIDR_EL1, LINESIZE, 0, 3) FIELD(CCSIDR_EL1, ASSOCIATIVITY, 3, 10) FIELD(CCSIDR_EL1, NUMSETS, 13, 15) =20 -FIELD(CTR_EL0, IMINLINE, 0, 4) -FIELD(CTR_EL0, L1IP, 14, 2) -FIELD(CTR_EL0, DMINLINE, 16, 4) -FIELD(CTR_EL0, ERG, 20, 4) -FIELD(CTR_EL0, CWG, 24, 4) -FIELD(CTR_EL0, IDC, 28, 1) -FIELD(CTR_EL0, DIC, 29, 1) -FIELD(CTR_EL0, TMINLINE, 32, 6) =20 FIELD(MIDR_EL1, REVISION, 0, 4) FIELD(MIDR_EL1, PARTNUM, 4, 12) @@ -189,219 +181,30 @@ FIELD(ID_PFR1, VIRTUALIZATION, 12, 4) FIELD(ID_PFR1, GENTIMER, 16, 4) FIELD(ID_PFR1, SEC_FRAC, 20, 4) FIELD(ID_PFR1, VIRT_FRAC, 24, 4) -FIELD(ID_PFR1, GIC, 28, 4) =20 FIELD(ID_PFR2, CSV3, 0, 4) FIELD(ID_PFR2, SSBS, 4, 4) FIELD(ID_PFR2, RAS_FRAC, 8, 4) =20 -FIELD(ID_AA64ISAR0, AES, 4, 4) -FIELD(ID_AA64ISAR0, SHA1, 8, 4) -FIELD(ID_AA64ISAR0, SHA2, 12, 4) -FIELD(ID_AA64ISAR0, CRC32, 16, 4) -FIELD(ID_AA64ISAR0, ATOMIC, 20, 4) -FIELD(ID_AA64ISAR0, TME, 24, 4) -FIELD(ID_AA64ISAR0, RDM, 28, 4) -FIELD(ID_AA64ISAR0, SHA3, 32, 4) -FIELD(ID_AA64ISAR0, SM3, 36, 4) -FIELD(ID_AA64ISAR0, SM4, 40, 4) -FIELD(ID_AA64ISAR0, DP, 44, 4) -FIELD(ID_AA64ISAR0, FHM, 48, 4) -FIELD(ID_AA64ISAR0, TS, 52, 4) -FIELD(ID_AA64ISAR0, TLB, 56, 4) -FIELD(ID_AA64ISAR0, RNDR, 60, 4) - -FIELD(ID_AA64ISAR1, DPB, 0, 4) -FIELD(ID_AA64ISAR1, APA, 4, 4) -FIELD(ID_AA64ISAR1, API, 8, 4) -FIELD(ID_AA64ISAR1, JSCVT, 12, 4) -FIELD(ID_AA64ISAR1, FCMA, 16, 4) -FIELD(ID_AA64ISAR1, LRCPC, 20, 4) -FIELD(ID_AA64ISAR1, GPA, 24, 4) -FIELD(ID_AA64ISAR1, GPI, 28, 4) -FIELD(ID_AA64ISAR1, FRINTTS, 32, 4) -FIELD(ID_AA64ISAR1, SB, 36, 4) -FIELD(ID_AA64ISAR1, SPECRES, 40, 4) -FIELD(ID_AA64ISAR1, BF16, 44, 4) -FIELD(ID_AA64ISAR1, DGH, 48, 4) -FIELD(ID_AA64ISAR1, I8MM, 52, 4) -FIELD(ID_AA64ISAR1, XS, 56, 4) -FIELD(ID_AA64ISAR1, LS64, 60, 4) - -FIELD(ID_AA64ISAR2, WFXT, 0, 4) -FIELD(ID_AA64ISAR2, RPRES, 4, 4) -FIELD(ID_AA64ISAR2, GPA3, 8, 4) -FIELD(ID_AA64ISAR2, APA3, 12, 4) -FIELD(ID_AA64ISAR2, MOPS, 16, 4) -FIELD(ID_AA64ISAR2, BC, 20, 4) -FIELD(ID_AA64ISAR2, PAC_FRAC, 24, 4) -FIELD(ID_AA64ISAR2, CLRBHB, 28, 4) -FIELD(ID_AA64ISAR2, SYSREG_128, 32, 4) -FIELD(ID_AA64ISAR2, SYSINSTR_128, 36, 4) -FIELD(ID_AA64ISAR2, PRFMSLC, 40, 4) -FIELD(ID_AA64ISAR2, RPRFM, 48, 4) -FIELD(ID_AA64ISAR2, CSSC, 52, 4) -FIELD(ID_AA64ISAR2, LUT, 56, 4) -FIELD(ID_AA64ISAR2, ATS1A, 60, 4) - -FIELD(ID_AA64PFR0, EL0, 0, 4) -FIELD(ID_AA64PFR0, EL1, 4, 4) -FIELD(ID_AA64PFR0, EL2, 8, 4) -FIELD(ID_AA64PFR0, EL3, 12, 4) -FIELD(ID_AA64PFR0, FP, 16, 4) -FIELD(ID_AA64PFR0, ADVSIMD, 20, 4) -FIELD(ID_AA64PFR0, GIC, 24, 4) -FIELD(ID_AA64PFR0, RAS, 28, 4) -FIELD(ID_AA64PFR0, SVE, 32, 4) -FIELD(ID_AA64PFR0, SEL2, 36, 4) -FIELD(ID_AA64PFR0, MPAM, 40, 4) -FIELD(ID_AA64PFR0, AMU, 44, 4) -FIELD(ID_AA64PFR0, DIT, 48, 4) -FIELD(ID_AA64PFR0, RME, 52, 4) -FIELD(ID_AA64PFR0, CSV2, 56, 4) -FIELD(ID_AA64PFR0, CSV3, 60, 4) - -FIELD(ID_AA64PFR1, BT, 0, 4) -FIELD(ID_AA64PFR1, SSBS, 4, 4) -FIELD(ID_AA64PFR1, MTE, 8, 4) -FIELD(ID_AA64PFR1, RAS_FRAC, 12, 4) -FIELD(ID_AA64PFR1, MPAM_FRAC, 16, 4) -FIELD(ID_AA64PFR1, SME, 24, 4) -FIELD(ID_AA64PFR1, RNDR_TRAP, 28, 4) -FIELD(ID_AA64PFR1, CSV2_FRAC, 32, 4) -FIELD(ID_AA64PFR1, NMI, 36, 4) -FIELD(ID_AA64PFR1, MTE_FRAC, 40, 4) -FIELD(ID_AA64PFR1, GCS, 44, 4) -FIELD(ID_AA64PFR1, THE, 48, 4) -FIELD(ID_AA64PFR1, MTEX, 52, 4) -FIELD(ID_AA64PFR1, DF2, 56, 4) -FIELD(ID_AA64PFR1, PFAR, 60, 4) - -FIELD(ID_AA64PFR2, MTEPERM, 0, 4) -FIELD(ID_AA64PFR2, MTESTOREONLY, 4, 4) -FIELD(ID_AA64PFR2, MTEFAR, 8, 4) -FIELD(ID_AA64PFR2, GCIE, 12, 4) -FIELD(ID_AA64PFR2, FPMR, 32, 4) - -FIELD(ID_AA64MMFR0, PARANGE, 0, 4) -FIELD(ID_AA64MMFR0, ASIDBITS, 4, 4) -FIELD(ID_AA64MMFR0, BIGEND, 8, 4) -FIELD(ID_AA64MMFR0, SNSMEM, 12, 4) -FIELD(ID_AA64MMFR0, BIGENDEL0, 16, 4) -FIELD(ID_AA64MMFR0, TGRAN16, 20, 4) -FIELD(ID_AA64MMFR0, TGRAN64, 24, 4) -FIELD(ID_AA64MMFR0, TGRAN4, 28, 4) -FIELD(ID_AA64MMFR0, TGRAN16_2, 32, 4) -FIELD(ID_AA64MMFR0, TGRAN64_2, 36, 4) -FIELD(ID_AA64MMFR0, TGRAN4_2, 40, 4) -FIELD(ID_AA64MMFR0, EXS, 44, 4) -FIELD(ID_AA64MMFR0, FGT, 56, 4) -FIELD(ID_AA64MMFR0, ECV, 60, 4) - -FIELD(ID_AA64MMFR1, HAFDBS, 0, 4) -FIELD(ID_AA64MMFR1, VMIDBITS, 4, 4) -FIELD(ID_AA64MMFR1, VH, 8, 4) -FIELD(ID_AA64MMFR1, HPDS, 12, 4) -FIELD(ID_AA64MMFR1, LO, 16, 4) -FIELD(ID_AA64MMFR1, PAN, 20, 4) -FIELD(ID_AA64MMFR1, SPECSEI, 24, 4) -FIELD(ID_AA64MMFR1, XNX, 28, 4) -FIELD(ID_AA64MMFR1, TWED, 32, 4) -FIELD(ID_AA64MMFR1, ETS, 36, 4) -FIELD(ID_AA64MMFR1, HCX, 40, 4) -FIELD(ID_AA64MMFR1, AFP, 44, 4) -FIELD(ID_AA64MMFR1, NTLBPA, 48, 4) -FIELD(ID_AA64MMFR1, TIDCP1, 52, 4) -FIELD(ID_AA64MMFR1, CMOW, 56, 4) -FIELD(ID_AA64MMFR1, ECBHB, 60, 4) - -FIELD(ID_AA64MMFR2, CNP, 0, 4) -FIELD(ID_AA64MMFR2, UAO, 4, 4) -FIELD(ID_AA64MMFR2, LSM, 8, 4) -FIELD(ID_AA64MMFR2, IESB, 12, 4) -FIELD(ID_AA64MMFR2, VARANGE, 16, 4) -FIELD(ID_AA64MMFR2, CCIDX, 20, 4) -FIELD(ID_AA64MMFR2, NV, 24, 4) -FIELD(ID_AA64MMFR2, ST, 28, 4) -FIELD(ID_AA64MMFR2, AT, 32, 4) -FIELD(ID_AA64MMFR2, IDS, 36, 4) -FIELD(ID_AA64MMFR2, FWB, 40, 4) -FIELD(ID_AA64MMFR2, TTL, 48, 4) -FIELD(ID_AA64MMFR2, BBM, 52, 4) -FIELD(ID_AA64MMFR2, EVT, 56, 4) -FIELD(ID_AA64MMFR2, E0PD, 60, 4) - -FIELD(ID_AA64MMFR3, TCRX, 0, 4) -FIELD(ID_AA64MMFR3, SCTLRX, 4, 4) -FIELD(ID_AA64MMFR3, S1PIE, 8, 4) -FIELD(ID_AA64MMFR3, S2PIE, 12, 4) -FIELD(ID_AA64MMFR3, S1POE, 16, 4) -FIELD(ID_AA64MMFR3, S2POE, 20, 4) -FIELD(ID_AA64MMFR3, AIE, 24, 4) -FIELD(ID_AA64MMFR3, MEC, 28, 4) -FIELD(ID_AA64MMFR3, D128, 32, 4) -FIELD(ID_AA64MMFR3, D128_2, 36, 4) -FIELD(ID_AA64MMFR3, SNERR, 40, 4) -FIELD(ID_AA64MMFR3, ANERR, 44, 4) -FIELD(ID_AA64MMFR3, SDERR, 52, 4) -FIELD(ID_AA64MMFR3, ADERR, 56, 4) -FIELD(ID_AA64MMFR3, SPEC_FPACC, 60, 4) - -FIELD(ID_AA64MMFR4, POPS, 0, 4) -FIELD(ID_AA64MMFR4, EIESB, 4, 4) -FIELD(ID_AA64MMFR4, ASID2, 8, 4) -FIELD(ID_AA64MMFR4, HACDBS, 12, 4) -FIELD(ID_AA64MMFR4, FGWTE3, 16, 4) -FIELD(ID_AA64MMFR4, NV_FRAC, 20, 4) -FIELD(ID_AA64MMFR4, E2H0, 24, 4) -FIELD(ID_AA64MMFR4, RMEGDI, 28, 4) -FIELD(ID_AA64MMFR4, E3DSE, 36, 4) -FIELD(ID_AA64MMFR4, SRMASK, 44, 4) - -FIELD(ID_AA64DFR0, DEBUGVER, 0, 4) -FIELD(ID_AA64DFR0, TRACEVER, 4, 4) -FIELD(ID_AA64DFR0, PMUVER, 8, 4) -FIELD(ID_AA64DFR0, BRPS, 12, 4) -FIELD(ID_AA64DFR0, PMSS, 16, 4) -FIELD(ID_AA64DFR0, WRPS, 20, 4) -FIELD(ID_AA64DFR0, SEBEP, 24, 4) -FIELD(ID_AA64DFR0, CTX_CMPS, 28, 4) -FIELD(ID_AA64DFR0, PMSVER, 32, 4) -FIELD(ID_AA64DFR0, DOUBLELOCK, 36, 4) -FIELD(ID_AA64DFR0, TRACEFILT, 40, 4) -FIELD(ID_AA64DFR0, TRACEBUFFER, 44, 4) -FIELD(ID_AA64DFR0, MTPMU, 48, 4) -FIELD(ID_AA64DFR0, BRBE, 52, 4) -FIELD(ID_AA64DFR0, EXTTRCBUFF, 56, 4) -FIELD(ID_AA64DFR0, HPMN0, 60, 4) - -FIELD(ID_AA64ZFR0, SVEVER, 0, 4) -FIELD(ID_AA64ZFR0, AES, 4, 4) -FIELD(ID_AA64ZFR0, ELTPERM, 12, 4) -FIELD(ID_AA64ZFR0, BITPERM, 16, 4) -FIELD(ID_AA64ZFR0, BFLOAT16, 20, 4) -FIELD(ID_AA64ZFR0, B16B16, 24, 4) -FIELD(ID_AA64ZFR0, SHA3, 32, 4) -FIELD(ID_AA64ZFR0, SM4, 40, 4) -FIELD(ID_AA64ZFR0, I8MM, 44, 4) -FIELD(ID_AA64ZFR0, F16MM, 48, 4) -FIELD(ID_AA64ZFR0, F32MM, 52, 4) -FIELD(ID_AA64ZFR0, F64MM, 56, 4) - -FIELD(ID_AA64SMFR0, F32F32, 32, 1) -FIELD(ID_AA64SMFR0, BI32I32, 33, 1) -FIELD(ID_AA64SMFR0, B16F32, 34, 1) -FIELD(ID_AA64SMFR0, F16F32, 35, 1) -FIELD(ID_AA64SMFR0, I8I32, 36, 4) -FIELD(ID_AA64SMFR0, F16F16, 42, 1) -FIELD(ID_AA64SMFR0, B16B16, 43, 1) -FIELD(ID_AA64SMFR0, I16I32, 44, 4) -FIELD(ID_AA64SMFR0, F64F64, 48, 1) -FIELD(ID_AA64SMFR0, I16I64, 52, 4) -FIELD(ID_AA64SMFR0, SMEVER, 56, 4) -FIELD(ID_AA64SMFR0, FA64, 63, 1) - -FIELD(ID_DFR0, COPDBG, 0, 4) +/* + * Expand FIELD() declarations for every ID register field listed in + * cpu-idregs.h.inc . + */ +#define IDREG_START(reg) +#define IDREG_END(reg) +#define IDREG_FIELD_ARCH_VAL(v, n) +#define IDREG_FIELD_ARCH_VAL_ANY +#define IDREG_FIELD_END(reg, field) +#define IDREG_FIELD_START(reg, field, _shift, _length, safe, defval) \ + FIELD(reg, field, _shift, _length) +#include "cpu-idregs.h.inc" +#undef IDREG_FIELD_START +#undef IDREG_FIELD_END +#undef IDREG_FIELD_ARCH_VAL_ANY +#undef IDREG_FIELD_ARCH_VAL +#undef IDREG_END +#undef IDREG_START + FIELD(ID_DFR0, COPSDBG, 4, 4) FIELD(ID_DFR0, MMAPDBG, 8, 4) FIELD(ID_DFR0, COPTRC, 12, 4) --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649318; cv=pass; d=zohomail.com; s=zohoarc; b=mkCwY4b3nWWEzYlE4Bm8EHC2swiiAdbxrk7r+1k9i6JFJPm69mxreGqm0c4Pl++CPGi9Zu2dmyzEG5QcWxhUoFa5hFK1TS45nuRKomrgUZuq2wQj6cOyXkDOmNFNt3yjcs1WUS7V4At/wHULw6Ex4vVbOhdLcJD2Fqs/QX/tAkU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649318; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/mWPfOLfwLy5iDlj9xzb0krJb2BgsQpZjLxKCIuKWCI=; b=BHyN+tvn2dNc6UTrvXnlkEsFg2gsW7mAtpT7OavdZrJ4Rs9T/Tsiw4hHTSnq+elvMgg7KTbfNWfuimwDT7aaqQCQC0sVTm81iYT8+z2Db/Rm6D7r4zPs2KY1mxx0LDRQgNvOigvbCo+OoJ3uZtCkuwXS84BR9WHMkJq6H9A3QMA= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649318103969.3322616918443; Fri, 5 Jun 2026 01:48:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQAN-0006w3-5b; Fri, 05 Jun 2026 04:44:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQAK-0006hR-CR; Fri, 05 Jun 2026 04:44:32 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQAI-0002fW-GL; Fri, 05 Jun 2026 04:44:32 -0400 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 6556OdLQ854749; Fri, 5 Jun 2026 01:43:14 -0700 Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11021094.outbound.protection.outlook.com [40.107.208.94]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejupdmnv4-7 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:14 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by CO6PR02MB7812.namprd02.prod.outlook.com (2603:10b6:303:a7::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:11 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:10 +0000 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=/mWPfOLfwLy5iDlj9xzb0krJb2BgsQpZjLxKCIuKW CI=; b=2oSJiM0U+DUTh4n0dGS1Sa5fPaYmyXjbMALy9FV4JKTLENzuw2SBBHRGE Hs20NNROuoNpdEFRnsWVUBQQ2sxAiZpCVr3P6d7ZHPpC2TtdXmHIRZoIjIgZQCMw CrE/Rzf0SlVxv3CD5+naCoiTSmFtFHz6uWQHjdmcPmFdZpudoW78RNWXbz2BzeWU gezPTANQKU6UlBbzfkqmtMugJFzp3fJjdigQlt1HjyIdGlNu9sY9PUtrBRfociax EBT1xs5xAmIGDd0ZqfeXv4PhnA6gJAWRUoBcvq/NhMfJ8MCI72lA/hO4jC5u6xle 31c0v1ZBHZDsKhIcMeKM8cYBrjFxQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EKVtEzJDIMOq8yjeTZZEGVn1p5UBmaw9aP7qg46yCdi79n+VpKCzpKVmuzhusg08WWDFibMFuQTq0PQ2miL9TRF2q5VFB6d3+tSbG0sdvRqrg98fPiwJa53daaRYJUT9RhgiVH5vMLnL79aNcI8ACxv5N461oCQSvP+FGIlqXWOpVl0GUa37VtLMnjRMqXQmHuwnxHabpw9M80F2YD2mcALx+ulwD55AFmzPEMh2iBURR447hNZCUsTNNxkFgLxvpRNvbC0Fr6vWR6pgGcuVZnPdGAVwTIvAnTrDPmpzUizrw5aChoS6Z+6dIw7IBul0U0etJmdA795PYFHUkB3XUQ== 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=/mWPfOLfwLy5iDlj9xzb0krJb2BgsQpZjLxKCIuKWCI=; b=kcs9tmc22zpLMFNZY0A40gopMVkxErgPHcSwt4K4NCkn3cFtZKk0C3vwsDpcBxkvwF5dhcxjv6QG4m8FxB16Cjw7LDhv7fRrUEeXmF7yxoBRUTw0KVAh8DBseDgwFXH5gSHrVMrNgpuljIyeezXb/wqMYNPXyBkpeA3Z6tliQZTWjNy0DP4aDxUQZGxr80iI8QRfC7Orvw1t2tX7VesmrtkfvY4e+U+3W+oyBZm3+GOA69VmupRtcZzEhUVwKExLMxnMbum6XqRz8SMLJSg/ZI7RTJeOgT8eNgeXlkpw3GpUvqo8g33XkYfCDtEAHdSY/usIXv2Mj1NVnlBT/bL+sA== 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=/mWPfOLfwLy5iDlj9xzb0krJb2BgsQpZjLxKCIuKWCI=; b=KjSJjxgZ1qqzNIjgNtce5qEtO8J2fb9HvphvnL4m67AONlOOShELWYv+7v3Lxh5V+XDigQkw4ivG80E4bmqrCb+l6vEP6u/9fmlp6ByrAo0A95j4yFWKKs8LRneUcExhvPqwEKA6Ol1ihsSu5KLGPt3K+adIWyLIm2GfIpKmYm1sHJS30v+HMFjlcpy2j01Lva7aU4WKXlpZQFVh4/TR6BOxUePc39Hw/OrA6dcM9esetBREb1uQPohWXOc1KKURY6O4fnnSdX52chjceF6sKLB6krfFPU1pZHp8LEU9WUlLt4XzKBBnMy7T1kVPMKuVsKXR9SLgxEMQUg4iVjrYNw== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 06/29] target/arm: Introduce data-structures for the ARM property layer Date: Fri, 5 Jun 2026 08:33:35 +0000 Message-ID: <20260605083358.1320563-7-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|CO6PR02MB7812:EE_ X-MS-Office365-Filtering-Correlation-Id: bcdd2995-e8e4-4251-58f7-08dec2de794d x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|7416014|366016|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: WpTibokNS3HkE3CmFFbkZ81qezu07qGuVxo0LN2TJzEBLlAT312XIfxNr+W8q1pkpVzTFDw0pM49x9Jj5k766R+VJEaa1ZKlf4BorAm/h1LkVNFTLSQdS0vdmdUmIY9ig5gpmHWFntDTrfF9TqbqqWpgISBNp4evDvhQye3s6YPmcvNjcvCiIRDolFNLTKUgf9oGs0Sd3R9DU0rHvswz10WGmOz51J2O6b/ge4lOCbalCgty6GJgjiPOj7ih2Hs1OkPPm74HtuDpqBDa824JUx9cNNK81LZE+o4UNiPWSW1FPi7R6qdp0yh8of06OzBO7IzAuyFd4evTo1aoQ1vvVx8nWLIa6QKzOmvLmLixyU71+3vfQzB2Q8eEJrV1j6fNxi24hRkt3VpYe8V+ZhoHWLiT6qUKlqyddipwuY3NFj5fYnyw5SZOfa6KhvLCXimYWUxQ49nABciUZJ/oOZUh5uS8gJ/28txD8oqafkk7Pz18lp8DOUHnnsiLWl84zWSyzZxEAvHQ0yokJPtJFuunUWrjFPWaTvioCKKsLxOciM9M/AA9N3eYZJ00Cb9JgNFop4EaadZ3FtaqXnDmId7kb4K4mVo9apLgmzcUePsN9Po4uz202x8y6ztEEgaq8YHFj4b1M61c9vrfXJ++wdLahxVlcIfqyPUjmcnLUhPuy7e0QX/tGrAiA4GtgYpYsG5y X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(7416014)(366016)(56012099006)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?tRrMpVGblHeWOwNfI2gk8Hz64q9TDVvOTMxxIoI353vRcTxbsQ5PoHQsNvqS?= =?us-ascii?Q?ZSoQkPO/OV6Fn6qcGgxmjZ0TONG+8f2uliYkdnhbVe3/F9mqjlHuD5ejo101?= =?us-ascii?Q?k7uMY4NKOrsz9hvU+yTMGZGOMuCY5IX/3EuhpRWy8eBsxMh861IUG9j8Te8c?= =?us-ascii?Q?H82iMXW7cwXtPuX3k6XKRv9FU2GX0Tup+5EsuKnWCvc4WXGYI176MVVowymh?= =?us-ascii?Q?otBwNDDTXPnk2hMpce9gPr6THirWydj/dl8KU2/tnAJopFhHw6GQmQ40+nkl?= =?us-ascii?Q?k15VUeW7dGqIEyrH7JSgm3cZ5bEwGUr0+pRWHNFEsmPsZl4CIui2ZangahyI?= =?us-ascii?Q?uqL9kHAx2wOcJpawzc/ewUTh9tcqmNF3W8wC0ic4fC/BeXRMUXqBFCalOHP7?= =?us-ascii?Q?oDPwnnLeIxKQ7fShKxL+9IapGdEnd08wXxrNxBVIfgZOCfgr5m8rGIpxINUQ?= =?us-ascii?Q?ZKnftTr0VR5uirp76cHXfPRw7KU13UI5UL2oFgEafIm5bdA1lBp/uumQt48e?= =?us-ascii?Q?bHM0u5/KH97fse2LEqy7EhyF5qC8gqCaQdm72mstMCx0z/sILOFl4AOYxXqA?= =?us-ascii?Q?Lw5y+426KI5v9UxuKwOsErMVSz0cFuXrT5kuKiYndbbfYZZZYfKqk8j5e4u3?= =?us-ascii?Q?d8oLO1LNhG165e218U6IY0XS9Xcs/1Xa/nWKgfoGW9ge0eCutQQ4aKot+Ff/?= =?us-ascii?Q?bqbd9pypGrdT8wpadPbnVrrR9Pa90lw8MXPfhI6DInF/AFYIzeXGtTJYfQ5m?= =?us-ascii?Q?cfEaGHmZGQb0JZyRPd8RXFFLiwLgLrVIZMgANSZh4ZhH4uEpzegBDCuebMYw?= =?us-ascii?Q?KRGYBQQi1B7EkH/Rcy7QUnaExFjXB5ajc6R7WSja3JOVGX0mglekXKx8FEZQ?= =?us-ascii?Q?xfEYYwLTX6SlqJiYoOja2hyC8B7Ay8l1DtN5fABALctzC4m5vN8C7Up8wQ8o?= =?us-ascii?Q?LiR8Xg0Vka7lhRsOzYJ5CipkexUGnIuLweV6FaN0rwCRI9+L+ExkFStqGhq7?= =?us-ascii?Q?0jCeWyVYgwmLwjnQcpbsXNP51oRBKkqsKtc0+azbQCdH3+EEUU/mAxrfMaM4?= =?us-ascii?Q?IYFSADDCqgJcpH/RQd8ghXqpBBObxoe46AnXopfsqW+8CSdCBIoQToxXzdYX?= =?us-ascii?Q?SBuwxJHjyxrRSZ3wHgpyVPp5oesJRwK9w/Xj0pyIfmODj8Gfwqe+aaWaZl01?= =?us-ascii?Q?KsLWaZ0+Q0ibUMv/RY7cETysXr+xyqz3uvtu0exj8lUXCl2+clWkzKqjWxVT?= =?us-ascii?Q?frNILf9o+a1XLBlSKSaX5NFStcOJ9n9ZuIczXrru1M44NupXAaxIuzUVEuJS?= =?us-ascii?Q?pITBZz4rze/O3gts9PkKHIgR2Kv+WOpQ5uAoaHZc2jIM3lPbpnb5GeqD/+nj?= =?us-ascii?Q?aHsoDte9MIKkiL//T2JfVKQgQcin83sbhoIf6OWaZy97AkO5X2Fp8FX7ukO9?= =?us-ascii?Q?emLYzSFZfwykHM5R3aih5kqeQ2ob8P380N6wA8C91OmIjAwSpBmntg3byI1h?= =?us-ascii?Q?/HkMDuJukE65CUYeOQuoqpZIo1zO90m/Pmvz1CsBDBeAEm1wso7wUb3cIWiS?= =?us-ascii?Q?WvRth6pDJH0G2hbwvlgL1u2+EzYs5AsR9694ZFPOrtu/UT6JZ1uLlZRZjKNH?= =?us-ascii?Q?RBr7ipPpPa3a981yzgGwSWJoW7A2IBmsyYgWluqTTnhR6NZY17g1X9igVsKx?= =?us-ascii?Q?TRS9AfCSfphhyVKxOzs/EXTVnQYFwzVy6hPERUHptUJtIA2N8B/CKj7vQdVj?= =?us-ascii?Q?lPt/Ims5XTqtd0nBigptbh7zzTNGEgA=3D?= X-Exchange-RoutingPolicyChecked: cYfF53rZ/5lq7CHHU05OeVUz8GELY7coFs8LXUthE6vyYJ1mI2gGPBZzWW7zLIZRlvAn8yZMsNV/+Q7/aZStAFu64jA5dyf8e9gbwY5V4T7iaq4zLlnCeR8ZzmSrF1BziCQpyo1nDWKwsHpKRh6GPfWUdQ6SluxRrUp+4Wjr6MgcZJec86jb8SuRa9t4lRpRrUAupa5qkK8R9TRiC3kBTE+Y8m0QLjd0VhCgpb0nSm2PPEgbavTHYIFyW81yXDvZVNPWK1zmvjkAGsPlXkUK2TyYyz9ItYmLDcs4qcwWfj1Fgre3gb+yof6fU26XEvDEoxnl0JUpdL+MFnEzbThfGA== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: bcdd2995-e8e4-4251-58f7-08dec2de794d X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:10.8558 (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: 5gF/zQznTzxTrGAv/AJGl+U/Hd1Fhy8aHTmIWmUNmyCbuSni4+OQMT0kma6LE6781ROQZgFXQiyNOQfq9ESBXhIZOTHCtQwTCAb7bxhFd0k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR02MB7812 X-Proofpoint-ORIG-GUID: otTpHxoaAoa-gaLdUF5mwZnoLOLaI6cx X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfX84/CLKNILUcD gndEtHCMkE+R3dxEFGaN4WOM2ff41w2EtKOfAKc2wiT0VxNjWQ61AsPSBpTXZamE6nLzchjiUPx btkF5QJQB/wa/e0QYKaGP+pRIUU8EbC4QqZWDC79Gg8sCKQnKINMrK4NfY4IF68mnYCNemDC5iP sUf2NG+9sVyczknhAC3tSGmMmUK1Mt0NGncQBVk1MS+sJr5d6imCprEYQ7ipuSLSN+O9sPmF22d 1YlTm+shf5mOyK5gLXxGKdSb8sdFsJKSvEqA3WiXS7NdpUy/y96nkbIssMqP/w/51l+huMpafVV 4ognjl+KjlqFgw8/FOgB6F7vKXyVyg5USp3oheGi5Iiq2rOj8W+I0O6XcfJcjtFY3Rqyl+1ul6D ARQDdAsL8ZO+SiWay7zTsYPBMHyX2F50SizaDqmr+yzW7IarLrxALDnMDN7p0tvkaGbBlMjRgIn tjTKzQ7ccx/64/WbSgA== X-Proofpoint-GUID: otTpHxoaAoa-gaLdUF5mwZnoLOLaI6cx X-Authority-Analysis: v=2.4 cv=dYmwG3Xe c=1 sm=1 tr=0 ts=6a228c22 cx=c_pps a=Dy1/g0x6RHl9kMZQX3cATQ==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=y4UcunY2MAxhM4LwGdWI:22 a=64Cc0HZtAAAA:8 a=BgGpAQATSyp6DQixMf8A:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.151.68; envelope-from=khushit.shah@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649320140154100 Content-Type: text/plain; charset="utf-8" Introduce the data-structures required for the ARM property layer Initially support 4 types of properties: - STRING: 1:1 mapping to fields that have architecturally defined values. The value names are borrowed from kernel's sysreg. - NUMERIC: 1:1 mapping to fields that have implementation defined values like cache line size, debug counters etc... - BOOLEAN: 1:1 mapping to fields that are 1-bit wide. - FRACTIONAL: maps two fields, BASE and _FRAC, the valid values for the properties must be preset. (Example: MPAM, CSV2, NV, etc..) These data structure will be used by next patch to define ARM properties. Co-authored-by: Khushit Shah Signed-off-by: Shaju Abraham Signed-off-by: Khushit Shah --- target/arm/arm-cpu-props.h | 41 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 target/arm/arm-cpu-props.h diff --git a/target/arm/arm-cpu-props.h b/target/arm/arm-cpu-props.h new file mode 100644 index 0000000000..2c9bca9d97 --- /dev/null +++ b/target/arm/arm-cpu-props.h @@ -0,0 +1,41 @@ +/* + * ARM CPU feature properties. + * + * User-facing QOM properties that map to fields of the AArch64 ID + * registers described in cpu-idregs.inc.h. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef ARM_CPU_PROPS_H +#define ARM_CPU_PROPS_H + +#include "cpu-idregs.h" + +typedef enum ArmCpuPropType { + ARM_PROP_STRING, + ARM_PROP_BOOLEAN, + ARM_PROP_NUMERIC, + ARM_PROP_FRACTIONAL, +} ArmCpuPropType; + +typedef struct ArmFracVal { + const char *name; + uint64_t base_val; + uint64_t frac_val; +} ArmFracVal; + +typedef struct ArmCpuPropDesc { + const char *name; + ArmCpuPropType type; + union { + ArmFieldIdx field; + struct { + ArmFieldIdx base_field; + ArmFieldIdx frac_field; + const ArmFracVal *vals; + } frac; + } u; +} ArmCpuPropDesc; + +#endif --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649074; cv=pass; d=zohomail.com; s=zohoarc; b=MpJ2g/9V+3f+BnaPMPwW513KMTQvot3/IZsHJJxewpUjMXMBUgutMO3/kRGUGA7AdQIHpjphgQYyFaCp/kci/KvQRp0J79poohx+MJDbZ5+K8T1/O6blBgYDwpOF/5Ik+i43zBycKOb83alB1uU5Kc5rByflhTSADbwidb1ycnM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649074; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=asgc3Y2B/cvHyFb+lfCg+QcWfZN9NoXUjXT8zy3eFc0=; b=K4aA3NddzzxP6BW4EDppTXRVQnb4yd0Px+3i5iFe1/NEf09R0p8K9WrqYkx0UKbg7S2m7dPj+oXcHVV25viFHvK255RwjE6iU3STXANI1ItpgL26HhQ787yPgsWJkW++w3veE3FPlDDbWKmMCbjwwmpGsfQGn2wE6a40fLTK6us= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649074411482.9722619688722; Fri, 5 Jun 2026 01:44:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQ9m-00065w-4P; Fri, 05 Jun 2026 04:43:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9h-00061u-VQ; Fri, 05 Jun 2026 04:43:53 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9c-0002VR-Vx; Fri, 05 Jun 2026 04:43:53 -0400 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 6556OdLR854749; Fri, 5 Jun 2026 01:43:15 -0700 Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11021094.outbound.protection.outlook.com [40.107.208.94]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejupdmnv4-8 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:14 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by CO6PR02MB7812.namprd02.prod.outlook.com (2603:10b6:303:a7::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:11 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:11 +0000 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=asgc3Y2B/cvHyFb+lfCg+QcWfZN9NoXUjXT8zy3eF c0=; b=QBxtya3CRfIDeOl83GtLHJLKXWptay0yDJ6In0NQmXk74kZJs/u5a0NX9 kmtupcGnSX528Cumq2dJd0c7FQif2A2DbBMt1mKmr9h13P+a56PjvS/6QfJik8Ae wkmFrw9cMeRfeBWsKCMMwsa3FQKh97tgwkLO4QXdLjQF+WircIoh1fTDtDKuEG83 9/tYpt3+Y/Uw7ODxdFXomqTUJ2TegCv/2FUd0o9A7N06bA5czyovk8Ru3Y8GjLt5 5ZXl3a4I0+vgz5IZwBbInjhrSHF0laCKcMaIlDQT7zQTT1qgaTpMqzfdntfzdsOD TEeReGQam5DJvUAYArk/wXyd+/i7A== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=iUHAqaJliJtaK47NJb+TkG/s8iz11RhbejFKMsalH+ESQoqubfxr3q1leA5ppirPHr2LwZhSu5e4An2RY0NSbNadu6uX8dvS2VhuUqZEB1iztK4JhbjNbFVWfg2D0MelUkOdwkJox/UPXur262Atx3+7KrvCsPk852gh7roj9fLfgJcKs/hlafeCNYoFzfKTIv7cRXXWLS3L0mx2iz+o61r3FUpN+uIpWhq62FpVolKg3fpQjbVgOloi2mAV84Sjp0lX3aiCJ6Vdpk7LacJWjRWBWx8JRQ5f1qVIG3LEL+BDz7A7OhOkq0SwjgQScqQsGSXTgDNfFjyaxmVlE456fA== 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=asgc3Y2B/cvHyFb+lfCg+QcWfZN9NoXUjXT8zy3eFc0=; b=sFRpY3+2CMP46pLodKoyfHn6GWS0f2Y3JuayuAV3FUX7Mmyjecu3Lf/hbNmDSFQbD9hAK4aE2/0Ki9IEw+z3h/NN/owwuZ+/S6v4a03MA3uCG/ppKHx6piGZpXeSIKI/AheN4s/DLrzHMybeGfAqzjCQWvI9A/fQUU2WFZst6lP7g1T3oTdXWwYk651ixA7zfwisXSs7QtmuwPo24I2cYCw0XSmO6BbVdrv0gHCEFzlhgbXQdF7tYusRJn+2zB2SAcnih46CDbrmb40dYnAJp0Xpf/hq/Sh3XefPUDgaPNH2FKGC6A5lRkbOSddciXde6G3ashbuS7FUGsm5RA3MGw== 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=asgc3Y2B/cvHyFb+lfCg+QcWfZN9NoXUjXT8zy3eFc0=; b=K8YWYO7kny7EiAmmfTRCWM4g0mhKQ/99J0qrY29AFfqd82YITEyfUAtVi7paost9jiu4rqGagObQ9raRjS+hlnUNWRayJGUBNHwgjKU6PMAO8xJzfHIqetY37zo0xgAFWi4a7MjqeIspzRjeNC5TXPzJuikS17BsU23sQkLkNKNmXE2Y2T3XVK9CZwOLGmF1j0SPxhFanzCrWMUIA25V0pXcsbgrfJL+LDh7uI/axB3dWHGbTGBYadg8UCs+s8aylnPVw0/2a+7WQhqFoXKvHF0BxkFj1W161aR9bjBW2x58/f1TlKTK4J9prg0g7nLY8EoZ2QdPrZJYsRQYURui+Q== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 07/29] target/arm: Define ARM properties Date: Fri, 5 Jun 2026 08:33:36 +0000 Message-ID: <20260605083358.1320563-8-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|CO6PR02MB7812:EE_ X-MS-Office365-Filtering-Correlation-Id: e3db09a2-1bf1-42cc-7850-08dec2de799c x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|7416014|366016|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: YsVlZZ9oR/1f7zQiZGF0XDUJoW+lUMSZRv8o8jVMnhEqJiSfGaKb8qovez6+Mi0Rp78ytyHjFNq8K5yrdRR5DECWID6KeQc8jjuovV9aO68ouwlsS94TtuRpdmnbqJG5o5S8q0pdEYiQmObu3zIFdrvdTQXZAeZgLebSwp3myw9dB0tcYYIIVDdH3bnGMrkmwO4iH+eV00sLxGnHMyBlZjxV4+K+kjM26CBNHUZ2pVDh2xoYLCm0JwhRYskzqRSu0sldAP+OXrPiHhuLfs0PukPqY6yt2CbVnsoLyzemJKeAXorLtu0XevN+Sbik47vzbKDDwy1yWHLNRGNYgxBUJoDIP/rSZymF6RJy/u/OX2oCsas1yY9W/u4MsecNBeFLhNYdtMeIPq4QDPSKYqV5q/kdVVmgaAVMxDtR1VG9Kd0Bt/t3Wa39IUR10mz/jVTqJM9gLBCAUnzEVvMj29vOQVA1yUF8CnQ5K+j6uyiM3fEFqJPI3Ha9/2XYsfy3Rl8RVY72NpgXHFsKSWXDcRdmSNnf2X/ivrPJ3jYtDvLGvwEFqWnPNmjBvVr9nIyZwCq9MAZBrbX5lg8TjN3vAD+WkT5z8+Kk/BjYilHj1vgFT2rQCnkB3uu/L7FqqLYE5A/2alA2pYpsxi6WHdIUcfhvXyVdzgt0x0kcXJfkiTJYaSn8lEf9LVTMxXRnTCj/5mfm X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(7416014)(366016)(56012099006)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?i2mfPT17sGETjdBkMj3C/hXbYUsSukaLOgox+WlU3Naaqne6Uw9hlS3qK37X?= =?us-ascii?Q?7rMRa/pT6jCk9/svsSQedbZlMO8GrwZ8Occ/RtSJmzDFm9PbLrBt0wSivebS?= =?us-ascii?Q?OuKfhmH376oGbrqUNPsjnxtDmSS2bNKiYzVaKFmCTQWjPfqJHuG+tzvOXP7o?= =?us-ascii?Q?W3IE7XgiWQn4Uq3nIPkMFwQYlKHysfzMfFhUJXMeMy3z8PUs/fOMxWXftu7p?= =?us-ascii?Q?yFnG0DvUEcqRkn0CbhsQ512ZsSt9YQQECQfS870GdmvPJcEh0IgYGDaK74Yr?= =?us-ascii?Q?BG3dHqMqKOfIBwMxiSWWaSNwE82PqkyAyWzZPT/yGGRdLGnic/y4E8eGxTNu?= =?us-ascii?Q?hQvxeaAIRXlxnJwq/CFTyfQp56hAX8LouWDpdKVyMNZdQmxWlDFXoAlIoBfh?= =?us-ascii?Q?Dvi/zKX2Cj5T7L5ua4lq9Tv1ksHtJE1zoZ9+NdtCriaeH1QP736J3AgYhJpH?= =?us-ascii?Q?OxUAPMtArmOhocjx5FUeZ/ETK6NQQyfGwelsG+7+N8NRTamPEAADzVbDbnRU?= =?us-ascii?Q?9iwdlNxofMyimD0HcC+IWlUAO7NXQIae5p0htF6+OJCfyPG5p8r/8QIcblB1?= =?us-ascii?Q?JHbg+p8E7pSScRPAWiuGNIbJOg1Y07hX1hgx7JYnmlcgg0wf7OdNqn+XnMqc?= =?us-ascii?Q?6Ba2fZoxrNWcbin628mWtf59cxrScFi9/lDWNl086CnNNzgXhQYlndVZTv8b?= =?us-ascii?Q?o7EjUzbsuyekAF/1cwnQlUDWbqcQssV1AkZefqBqH15BT2YVdzChaRyWf99a?= =?us-ascii?Q?5yFmh8sngG5rozObM7RuZAhd+/mceGR6wOon/C4UmvT9ag7CI0dn8m7yM4Nu?= =?us-ascii?Q?/vbeVeMWiJQRPZxBIHaXA2d0aYwJX6+XYlyshx+vKQCi392LXkC8yTdtweBp?= =?us-ascii?Q?eKdiAfzbxjrAPf6jm9kalT8EW7TxV3LYdrg04tkazYxX9wA33oY4LaEgXtBa?= =?us-ascii?Q?KD5BjfDteB19iSAb0KIeE5ZkBoQB9j9x+9JQ5/o7Yji1YdA0KedOmWPOvYZ7?= =?us-ascii?Q?8lylpd1GsF8p7SOWNLU0eIWmKhWpS99QyJt8CSBrdielJMOzgfhtpWoKDTrJ?= =?us-ascii?Q?gyHVYOFxMDrEKSzoOcPuCEiHFc2Pv/3xgXmb/FleaGYOesZaSl15jNv/30cR?= =?us-ascii?Q?b6NaP1UhwIJeZuMQb5KA6KkZSZIPR2hx0/inaRnxhuAYwtu+s9j8XgdhWzjP?= =?us-ascii?Q?KYxz2pOkbgHvsIqyxns0nmhdDRsNzw9y+M+MI3jx0gsoaooUpGrNsmfWqjlU?= =?us-ascii?Q?AV1m1yAjtSZmvh5CSzM/exHq1KekZrEZ4LnQLde0c0LIOj68H3Ds9uaUsg19?= =?us-ascii?Q?4YHVGoPIh1Ee0Wuz1WFvbavCB7tIRIolYMDixUFC3ngEIiiSlgLjU8hf2Nco?= =?us-ascii?Q?XSvn8YtOJi/mmJ3i14DMRuJKtldmRR9gT4gjhtDfpTeKAkyCi0yTixVPWS40?= =?us-ascii?Q?8Sg3CW0fmMLN2b+ILt6npSfutHipxfNfN4WTn+8vqK3a/EQwD6L67JcLtoEO?= =?us-ascii?Q?WeSnuE5BdErwpSDT2ABOADfXZsYiKsWlyD07DB/pnGGdVjfLv8REGViIy+dY?= =?us-ascii?Q?fmL1WOXA/KI8WKuVrQ9fR4yUs4LJK+yJzt17VYiniXHx6Du/TuIgCEDsg7Yz?= =?us-ascii?Q?cxdf+iHJz+A/DsaKtZocRuXnNI82yiOLWtK58AqGN01c2EWDOylupNsddna4?= =?us-ascii?Q?RJQpcxh+8ZhtZ0QgXN3znjCDRWViqdm2s9MBSrRKYNSJ01NuxSpFIbIZmgXb?= =?us-ascii?Q?seRjQf3NGJEHwl1K7Tgs5+KzXF5qOKw=3D?= X-Exchange-RoutingPolicyChecked: QuG6nPIcv/HmEV91Lnoa4BWjSjHmd33yl0ddVEvuAvjTfd0m/EEvuGOf2cKSBiI0iM1Wi1DksmEWpN68uWu4+UUWCec4Wzr8MM8hriMKUHGjPILlgGuWocKUZWuaNEL8AZX9Exfvrq6JTRy/Ii2wADm69XNc73z4XdNfInbqY0P75e1tJs34m0a0a0DE/rJh/J3TiWGnXgsNuJCwK8bs7JF8xr5npwN8N4f17jmlQrq86VQJ67xsXbbA9MdxVsRXMnSJLh4Z8KsLYduoG823Eb3FlwOGk+AE3j6aSpagda7TqGaBtxR5FcjEQjRZ7QL1qEvk+d/NP0vjrSQjWJ+XkA== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: e3db09a2-1bf1-42cc-7850-08dec2de799c X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:11.3688 (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: cc6rO/+LZ/fxU2+K3WdtH7GT7xTAhnm9ApPUxjHPnFgeX/Cjt/+IW7PzftSqg46xnx9JcMExaSHyAFSlZCBi2ZM2Tj7bedYQDTFCz1BNrJE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR02MB7812 X-Proofpoint-ORIG-GUID: 98w9pmmdeR9L49oMbTEGLTGBAHo9I3Pb X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfX1XMU5efnHK28 WTGuAARBgmg7SrlvBElL90NB4TRivsONQASa1IMhB8NxMmQBH9zS/YskNt/HFsl902Z36904CXa y1Zjo3UNMGEvMvpau2fDgYkTm4hRQCzRnUsSt7auabkBEXpPROGBJVetMUrtpfZ8kzwnoiRPWdB qXWo/s6gee2yLGAEYdXDwS+CJdfWGVdanU7IHPUbsbPWODohdXPBpit62JCvhty0lujuDzflUl8 qEetWbevvskCqydYRX7D1gnHgLZTamK1xIhmR7EVCpEW+zEgurluSSWCiVzRvD5zos8Nb/2u0+s eNFg/SBeI4u8GtapnV/tW4MrMgBYIrKgUJWvF9EvFojTkveNsl4WNbDGnsl1NG0H6QKaf0qhmGd C2n//kjPlSGWOrh1vG++QoRtWgfeiCqn6Peo+4mJ+jPNChktMg4XHvgZ3ccyC0OU8XDub1lIxAC 6MLwbAnKy7NlaI+hRrw== X-Proofpoint-GUID: 98w9pmmdeR9L49oMbTEGLTGBAHo9I3Pb X-Authority-Analysis: v=2.4 cv=dYmwG3Xe c=1 sm=1 tr=0 ts=6a228c22 cx=c_pps a=Dy1/g0x6RHl9kMZQX3cATQ==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=y4UcunY2MAxhM4LwGdWI:22 a=64Cc0HZtAAAA:8 a=VJJ9atyF7iw2-Rhtw2oA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.151.68; envelope-from=khushit.shah@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, UPPERCASE_50_75=0.008 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649075742158500 Content-Type: text/plain; charset="utf-8" From: Shaju Abraham Add properties for most fields. Properties that map to fields that are not supported by the linux kernel (i.e. not in the ftr_bits array) are not included, as these fields are already zeroed out by the kernel and are not writable. Add new properties as kernel start supporting their respective fields. These properties will be added to CPU objects in future patches. Co-authored-by: Khushit Shah Signed-off-by: Shaju Abraham Signed-off-by: Khushit Shah --- target/arm/arm-cpu-props.c | 242 +++++++++++++++++++++++++++++++++++++ target/arm/meson.build | 1 + 2 files changed, 243 insertions(+) create mode 100644 target/arm/arm-cpu-props.c diff --git a/target/arm/arm-cpu-props.c b/target/arm/arm-cpu-props.c new file mode 100644 index 0000000000..1c5d4c5727 --- /dev/null +++ b/target/arm/arm-cpu-props.c @@ -0,0 +1,242 @@ +/* + * ARM CPU feature property definitions. + * + * Maps ID-register fields described in cpu-idregs.inc.h to user-facing + * QOM properties. + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "qapi/visitor.h" +#include "qom/object.h" +#include "cpu.h" +#include "arm-cpu-props.h" + + +#define ARM_SINGLE_FIELD_PROP(prop_name, _type, reg, fld) \ + { .name =3D (prop_name), .type =3D ARM_PROP_##_type, \ + .u.field =3D ARM_FIELD_IDX(reg, fld) } + +#define ARM_FRAC_PROP(prop_name, base_reg, base_fld, frac_reg, frac_fld, v= alid_vals) \ + { .name =3D (prop_name), .type =3D ARM_PROP_FRACTIONAL, = \ + .u.frac.base_field =3D ARM_FIELD_IDX(base_reg, base_fld), = \ + .u.frac.frac_field =3D ARM_FIELD_IDX(frac_reg, frac_fld), = \ + .u.frac.vals =3D valid_vals } + +const ArmFracVal csv2_frac_vals[] =3D { + { "0.0", 0, 0 }, + { "1.0", 1, 0 }, + { "1.1", 1, 1 }, + { "1.2", 1, 2 }, + { "2.0", 2, 0 }, + { "3.0", 3, 0 }, + { NULL } +}; + +const ArmFracVal mpam_frac_vals[] =3D { + { "0.0", 0, 0 }, + { "0.1", 0, 1 }, + { "1.0", 1, 0 }, + { "1.1", 1, 1 }, + { NULL } +}; + +const ArmFracVal ras_frac_vals[] =3D { + { "0.0", 0, 0 }, + { "1.0", 1, 0 }, + { "1.1", 1, 1 }, + { "1.1_base", 2, 0 }, + { "2.0", 3, 0 }, + { NULL } +}; + +const ArmFracVal nv_frac_vals[] =3D { + { "0.0", 0, 0 }, + { "nv2_only", 0, 1 }, /* KVM: MMFR2 always cleared */ + { "1.0", 1, 0 }, + { "2.0", 2, 0 }, + { "2.0_only", 2, 1 }, + { "2.1", 2, 2 }, + { NULL } +}; + +const ArmCpuPropDesc arm_cpu_props[] =3D { + ARM_SINGLE_FIELD_PROP("feat_AES", STRING, ID_AA64ISAR0, AES), + ARM_SINGLE_FIELD_PROP("feat_SHA1", STRING, ID_AA64ISAR0, SHA1), + ARM_SINGLE_FIELD_PROP("feat_SHA2", STRING, ID_AA64ISAR0, SHA2), + ARM_SINGLE_FIELD_PROP("feat_CRC32", STRING, ID_AA64ISAR0, CRC32), + ARM_SINGLE_FIELD_PROP("feat_ATOMIC", STRING, ID_AA64ISAR0, ATOMIC), + ARM_SINGLE_FIELD_PROP("feat_RDM", STRING, ID_AA64ISAR0, RDM), + ARM_SINGLE_FIELD_PROP("feat_SHA3", STRING, ID_AA64ISAR0, SHA3), + ARM_SINGLE_FIELD_PROP("feat_SM3", STRING, ID_AA64ISAR0, SM3), + ARM_SINGLE_FIELD_PROP("feat_SM4", STRING, ID_AA64ISAR0, SM4), + ARM_SINGLE_FIELD_PROP("feat_DP", STRING, ID_AA64ISAR0, DP), + ARM_SINGLE_FIELD_PROP("feat_FHM", STRING, ID_AA64ISAR0, FHM), + ARM_SINGLE_FIELD_PROP("feat_TS", STRING, ID_AA64ISAR0, TS), + ARM_SINGLE_FIELD_PROP("feat_TLB", STRING, ID_AA64ISAR0, TLB), + ARM_SINGLE_FIELD_PROP("feat_RNDR", STRING, ID_AA64ISAR0, RNDR), + + ARM_SINGLE_FIELD_PROP("feat_DPB", STRING, ID_AA64ISAR1, DPB), + ARM_SINGLE_FIELD_PROP("hw_prop_APA", STRING, ID_AA64ISAR1, APA), + ARM_SINGLE_FIELD_PROP("hw_prop_API", STRING, ID_AA64ISAR1, API), + ARM_SINGLE_FIELD_PROP("feat_JSCVT", STRING, ID_AA64ISAR1, JSCVT), + ARM_SINGLE_FIELD_PROP("feat_FCMA", STRING, ID_AA64ISAR1, FCMA), + ARM_SINGLE_FIELD_PROP("feat_LRCPC", STRING, ID_AA64ISAR1, LRCPC), + ARM_SINGLE_FIELD_PROP("hw_prop_GPA", STRING, ID_AA64ISAR1, GPA), + ARM_SINGLE_FIELD_PROP("hw_prop_GPI", STRING, ID_AA64ISAR1, GPI), + ARM_SINGLE_FIELD_PROP("feat_FRINTTS", STRING, ID_AA64ISAR1, FRINTTS), + ARM_SINGLE_FIELD_PROP("feat_SB", STRING, ID_AA64ISAR1, SB), + ARM_SINGLE_FIELD_PROP("feat_SPECRES", STRING, ID_AA64ISAR1, SPECRES), + ARM_SINGLE_FIELD_PROP("feat_BF16", STRING, ID_AA64ISAR1, BF16), + ARM_SINGLE_FIELD_PROP("feat_DGH", STRING, ID_AA64ISAR1, DGH), + ARM_SINGLE_FIELD_PROP("feat_I8MM", STRING, ID_AA64ISAR1, I8MM), + ARM_SINGLE_FIELD_PROP("feat_XS", STRING, ID_AA64ISAR1, XS), + ARM_SINGLE_FIELD_PROP("feat_LS64", STRING, ID_AA64ISAR1, LS64), + + ARM_SINGLE_FIELD_PROP("feat_WFXT", STRING, ID_AA64ISAR2, WFXT), + ARM_SINGLE_FIELD_PROP("feat_RPRES", STRING, ID_AA64ISAR2, RPRES), + ARM_SINGLE_FIELD_PROP("hw_prop_GPA3", STRING, ID_AA64ISAR2, GPA3), + ARM_SINGLE_FIELD_PROP("hw_prop_APA3", STRING, ID_AA64ISAR2, APA3), + ARM_SINGLE_FIELD_PROP("feat_MOPS", STRING, ID_AA64ISAR2, MOPS), + ARM_SINGLE_FIELD_PROP("feat_BC", STRING, ID_AA64ISAR2, BC), + ARM_SINGLE_FIELD_PROP("feat_CLRBHB", STRING, ID_AA64ISAR2, CLRBHB), + ARM_SINGLE_FIELD_PROP("feat_RPRFM", STRING, ID_AA64ISAR2, RPRFM), + ARM_SINGLE_FIELD_PROP("feat_CSSC", STRING, ID_AA64ISAR2, CSSC), + ARM_SINGLE_FIELD_PROP("feat_LUT", STRING, ID_AA64ISAR2, LUT), + + ARM_SINGLE_FIELD_PROP("feat_FAMINMAX", STRING, ID_AA64ISAR3, FAMINMAX), + ARM_SINGLE_FIELD_PROP("feat_LSFE", STRING, ID_AA64ISAR3, LSFE), + ARM_SINGLE_FIELD_PROP("feat_FPRCVT", STRING, ID_AA64ISAR3, FPRCVT), + + ARM_SINGLE_FIELD_PROP("el0_mode", STRING, ID_AA64PFR0, EL0), + ARM_SINGLE_FIELD_PROP("el1_mode", STRING, ID_AA64PFR0, EL1), + ARM_SINGLE_FIELD_PROP("el2_mode", STRING, ID_AA64PFR0, EL2), + ARM_SINGLE_FIELD_PROP("el3_mode", STRING, ID_AA64PFR0, EL3), + ARM_SINGLE_FIELD_PROP("feat_FP", STRING, ID_AA64PFR0, FP), + ARM_SINGLE_FIELD_PROP("feat_AdvSIMD", STRING, ID_AA64PFR0, ADVSIMD), + ARM_SINGLE_FIELD_PROP("feat_SVE", STRING, ID_AA64PFR0, SVE), + ARM_SINGLE_FIELD_PROP("feat_SEL2", STRING, ID_AA64PFR0, SEL2), + ARM_SINGLE_FIELD_PROP("feat_AMU", STRING, ID_AA64PFR0, AMU), + ARM_SINGLE_FIELD_PROP("feat_DIT", STRING, ID_AA64PFR0, DIT), + ARM_SINGLE_FIELD_PROP("feat_CSV3", STRING, ID_AA64PFR0, CSV3), + + ARM_SINGLE_FIELD_PROP("feat_BT", STRING, ID_AA64PFR1, BT), + ARM_SINGLE_FIELD_PROP("feat_SSBS", STRING, ID_AA64PFR1, SSBS), + ARM_SINGLE_FIELD_PROP("feat_MTE", STRING, ID_AA64PFR1, MTE), + ARM_SINGLE_FIELD_PROP("feat_NMI", STRING, ID_AA64PFR1, NMI), + ARM_SINGLE_FIELD_PROP("feat_MTE_FRAC", STRING, ID_AA64PFR1, MTE_FRAC), + ARM_SINGLE_FIELD_PROP("feat_GCS", STRING, ID_AA64PFR1, GCS), + ARM_SINGLE_FIELD_PROP("feat_DF2", STRING, ID_AA64PFR1, DF2), + + ARM_SINGLE_FIELD_PROP("feat_MTESTOREONLY", STRING, ID_AA64PFR2, MTESTO= REONLY), + ARM_SINGLE_FIELD_PROP("feat_MTEFAR", STRING, ID_AA64PFR2, MTEFAR), + ARM_SINGLE_FIELD_PROP("feat_FPMR", STRING, ID_AA64PFR2, FPMR), + + ARM_SINGLE_FIELD_PROP("hw_prop_PARANGE", STRING, ID_AA64MMFR0, PARANGE= ), + ARM_SINGLE_FIELD_PROP("hw_prop_ASIDBITS", STRING, ID_AA64MMFR0, ASIDBI= TS), + ARM_SINGLE_FIELD_PROP("feat_BIGEND", STRING, ID_AA64MMFR0, BIGEND), + ARM_SINGLE_FIELD_PROP("feat_SNSMEM", STRING, ID_AA64MMFR0, SNSMEM), + ARM_SINGLE_FIELD_PROP("feat_BIGENDEL0", STRING, ID_AA64MMFR0, BIGENDEL= 0), + ARM_SINGLE_FIELD_PROP("hw_prop_TGRAN16", STRING, ID_AA64MMFR0, TGRAN16= ), + ARM_SINGLE_FIELD_PROP("hw_prop_TGRAN64", STRING, ID_AA64MMFR0, TGRAN64= ), + ARM_SINGLE_FIELD_PROP("hw_prop_TGRAN4", STRING, ID_AA64MMFR0, TGRAN4), + ARM_SINGLE_FIELD_PROP("hw_prop_TGRAN16_2", STRING, ID_AA64MMFR0, TGRAN= 16_2), + ARM_SINGLE_FIELD_PROP("hw_prop_TGRAN64_2", STRING, ID_AA64MMFR0, TGRAN= 64_2), + ARM_SINGLE_FIELD_PROP("hw_prop_TGRAN4_2", STRING, ID_AA64MMFR0, TGRAN4= _2), + ARM_SINGLE_FIELD_PROP("feat_EXS", STRING, ID_AA64MMFR0, EXS), + ARM_SINGLE_FIELD_PROP("feat_FGT", STRING, ID_AA64MMFR0, FGT), + ARM_SINGLE_FIELD_PROP("feat_ECV", STRING, ID_AA64MMFR0, ECV), + + ARM_SINGLE_FIELD_PROP("feat_HAFDBS", STRING, ID_AA64MMFR1, HAFDBS), + ARM_SINGLE_FIELD_PROP("hw_prop_VMIDBITS", STRING, ID_AA64MMFR1, VMIDBI= TS), + ARM_SINGLE_FIELD_PROP("feat_VH", STRING, ID_AA64MMFR1, VH), + ARM_SINGLE_FIELD_PROP("feat_HPDS", STRING, ID_AA64MMFR1, HPDS), + ARM_SINGLE_FIELD_PROP("feat_LO", STRING, ID_AA64MMFR1, LO), + ARM_SINGLE_FIELD_PROP("feat_PAN", STRING, ID_AA64MMFR1, PAN), + ARM_SINGLE_FIELD_PROP("feat_SpecSEI", STRING, ID_AA64MMFR1, SPECSEI), + ARM_SINGLE_FIELD_PROP("feat_XNX", STRING, ID_AA64MMFR1, XNX), + ARM_SINGLE_FIELD_PROP("feat_TWED", STRING, ID_AA64MMFR1, TWED), + ARM_SINGLE_FIELD_PROP("feat_ETS", STRING, ID_AA64MMFR1, ETS), + ARM_SINGLE_FIELD_PROP("feat_HCX", STRING, ID_AA64MMFR1, HCX), + ARM_SINGLE_FIELD_PROP("feat_AFP", STRING, ID_AA64MMFR1, AFP), + ARM_SINGLE_FIELD_PROP("feat_TIDCP1", STRING, ID_AA64MMFR1, TIDCP1), + ARM_SINGLE_FIELD_PROP("feat_ECBHB", STRING, ID_AA64MMFR1, ECBHB), + + ARM_SINGLE_FIELD_PROP("feat_CNP", STRING, ID_AA64MMFR2, CNP), + ARM_SINGLE_FIELD_PROP("feat_UAO", STRING, ID_AA64MMFR2, UAO), + ARM_SINGLE_FIELD_PROP("feat_LSM", STRING, ID_AA64MMFR2, LSM), + ARM_SINGLE_FIELD_PROP("feat_IESB", STRING, ID_AA64MMFR2, IESB), + ARM_SINGLE_FIELD_PROP("hw_prop_VARANGE", STRING, ID_AA64MMFR2, VARANGE= ), + ARM_SINGLE_FIELD_PROP("hw_prop_CCIDX", STRING, ID_AA64MMFR2, CCIDX), + ARM_SINGLE_FIELD_PROP("hw_prop_ST", STRING, ID_AA64MMFR2, ST), + ARM_SINGLE_FIELD_PROP("feat_AT", STRING, ID_AA64MMFR2, AT), + ARM_SINGLE_FIELD_PROP("hw_prop_IDS", STRING, ID_AA64MMFR2, IDS), + ARM_SINGLE_FIELD_PROP("hw_prop_FWB", STRING, ID_AA64MMFR2, FWB), + ARM_SINGLE_FIELD_PROP("feat_TTL", STRING, ID_AA64MMFR2, TTL), + ARM_SINGLE_FIELD_PROP("feat_BBM", STRING, ID_AA64MMFR2, BBM), + ARM_SINGLE_FIELD_PROP("feat_EVT", STRING, ID_AA64MMFR2, EVT), + ARM_SINGLE_FIELD_PROP("feat_E0PD", STRING, ID_AA64MMFR2, E0PD), + + ARM_SINGLE_FIELD_PROP("feat_TCRX", STRING, ID_AA64MMFR3, TCRX), + ARM_SINGLE_FIELD_PROP("feat_SCTLRX", STRING, ID_AA64MMFR3, SCTLRX), + ARM_SINGLE_FIELD_PROP("feat_S1PIE", STRING, ID_AA64MMFR3, S1PIE), + ARM_SINGLE_FIELD_PROP("feat_S1POE", STRING, ID_AA64MMFR3, S1POE), + + ARM_SINGLE_FIELD_PROP("feat_E2H0", STRING, ID_AA64MMFR4, E2H0), + + ARM_SINGLE_FIELD_PROP("feat_DBG", STRING, ID_AA64DFR0, DEBUGVER), + ARM_SINGLE_FIELD_PROP("feat_PMU", STRING, ID_AA64DFR0, PMUVER), + ARM_SINGLE_FIELD_PROP("hw_prop_BRPS", NUMERIC, ID_AA64DFR0, BRPS), + ARM_SINGLE_FIELD_PROP("hw_prop_WRPs", NUMERIC, ID_AA64DFR0, WRPS), + ARM_SINGLE_FIELD_PROP("hw_prop_CTX_CMPs", NUMERIC, ID_AA64DFR0, CTX_CM= PS), + ARM_SINGLE_FIELD_PROP("hw_prop_PMSVer", STRING, ID_AA64DFR0, PMSVER), + ARM_SINGLE_FIELD_PROP("feat_DoubleLock", STRING, ID_AA64DFR0, DOUBLELO= CK), + + ARM_SINGLE_FIELD_PROP("hw_prop_SVEVer", STRING, ID_AA64ZFR0, SVEVER), + ARM_SINGLE_FIELD_PROP("feat_SVE_AES", STRING, ID_AA64ZFR0, AES), + ARM_SINGLE_FIELD_PROP("feat_SVE_ELTPERM", STRING, ID_AA64ZFR0, ELTPERM= ), + ARM_SINGLE_FIELD_PROP("feat_SVE_BITPERM", STRING, ID_AA64ZFR0, BITPERM= ), + ARM_SINGLE_FIELD_PROP("feat_SVE_BFLOAT16", STRING, ID_AA64ZFR0, BFLOAT= 16), + ARM_SINGLE_FIELD_PROP("feat_SVE_B16B16", STRING, ID_AA64ZFR0, B16B16), + ARM_SINGLE_FIELD_PROP("feat_SVE_SHA3", STRING, ID_AA64ZFR0, SHA3), + ARM_SINGLE_FIELD_PROP("feat_SVE_SM4", STRING, ID_AA64ZFR0, SM4), + ARM_SINGLE_FIELD_PROP("feat_SVE_I8MM", STRING, ID_AA64ZFR0, I8MM), + ARM_SINGLE_FIELD_PROP("feat_SVE_F16MM", STRING, ID_AA64ZFR0, F16MM), + ARM_SINGLE_FIELD_PROP("feat_SVE_F32MM", STRING, ID_AA64ZFR0, F32MM), + ARM_SINGLE_FIELD_PROP("feat_SVE_F64MM", STRING, ID_AA64ZFR0, F64MM), + + ARM_SINGLE_FIELD_PROP("feat_F8E5M2", BOOLEAN, ID_AA64FPFR0, F8E5M2), + ARM_SINGLE_FIELD_PROP("feat_F8E4M3", BOOLEAN, ID_AA64FPFR0, F8E4M3), + ARM_SINGLE_FIELD_PROP("feat_F8MM4", BOOLEAN, ID_AA64FPFR0, F8MM4), + ARM_SINGLE_FIELD_PROP("feat_F8MM8", BOOLEAN, ID_AA64FPFR0, F8MM8), + ARM_SINGLE_FIELD_PROP("feat_F8DP2", BOOLEAN, ID_AA64FPFR0, F8DP2), + ARM_SINGLE_FIELD_PROP("feat_F8DP4", BOOLEAN, ID_AA64FPFR0, F8DP4), + ARM_SINGLE_FIELD_PROP("feat_F8FMA", BOOLEAN, ID_AA64FPFR0, F8FMA), + ARM_SINGLE_FIELD_PROP("feat_F8CVT", BOOLEAN, ID_AA64FPFR0, F8CVT), + + ARM_SINGLE_FIELD_PROP("hw_prop_IMInline", NUMERIC, CTR_EL0, IMINLINE), + ARM_SINGLE_FIELD_PROP("hw_prop_L1IP", STRING, CTR_EL0, L1IP), + ARM_SINGLE_FIELD_PROP("hw_prop_DMInline", NUMERIC, CTR_EL0, DMINLINE), + ARM_SINGLE_FIELD_PROP("hw_prop_ERG", NUMERIC, CTR_EL0, ERG), + ARM_SINGLE_FIELD_PROP("hw_prop_CWG", NUMERIC, CTR_EL0, CWG), + ARM_SINGLE_FIELD_PROP("hw_prop_IDC", BOOLEAN, CTR_EL0, IDC), + ARM_SINGLE_FIELD_PROP("hw_prop_DIC", BOOLEAN, CTR_EL0, DIC), + ARM_SINGLE_FIELD_PROP("hw_prop_BS", NUMERIC, DCZID_EL0, BS), + ARM_SINGLE_FIELD_PROP("hw_prop_DZP", BOOLEAN, DCZID_EL0, DZP), + + ARM_SINGLE_FIELD_PROP("cpu_revision", NUMERIC, MIDR, REVISION), + ARM_SINGLE_FIELD_PROP("cpu_partnum", NUMERIC, MIDR, PARTNUM), + ARM_SINGLE_FIELD_PROP("cpu_architecture", NUMERIC, MIDR, ARCHITECTURE), + ARM_SINGLE_FIELD_PROP("cpu_variant", NUMERIC, MIDR, VARIANT), + ARM_SINGLE_FIELD_PROP("cpu_implementer", NUMERIC, MIDR, IMPLEMENTER), + ARM_SINGLE_FIELD_PROP("cpu_revidr", NUMERIC, REVIDR, VAL), + ARM_SINGLE_FIELD_PROP("cpu_aidr", NUMERIC, AIDR, VAL), + + /* Fractional properties */ + ARM_FRAC_PROP("feat_CSV2", ID_AA64PFR0, CSV2, ID_AA64PFR1, CSV2_FRAC, = csv2_frac_vals), + ARM_FRAC_PROP("feat_MPAM", ID_AA64PFR0, MPAM, ID_AA64PFR1, MPAM_FRAC, = mpam_frac_vals), + ARM_FRAC_PROP("feat_RAS", ID_AA64PFR0, RAS, ID_AA64PFR1, RAS_FRAC, ras= _frac_vals), + ARM_FRAC_PROP("feat_NV", ID_AA64MMFR2, NV, ID_AA64MMFR4, NV_FRAC, nv_f= rac_vals), + { .name =3D NULL } +}; diff --git a/target/arm/meson.build b/target/arm/meson.build index be4361fbfd..ae1c55c802 100644 --- a/target/arm/meson.build +++ b/target/arm/meson.build @@ -12,6 +12,7 @@ arm_ss.add(when: 'TARGET_AARCH64', if_true: files( 'cpu64.c', 'gdbstub64.c', 'cpu-idregs.c', + 'arm-cpu-props.c' )) =20 arm_common_ss.add(files( --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649136; cv=pass; d=zohomail.com; s=zohoarc; b=QIeQa8sCtCZOZKt8dwD5SkzxkQ/L5JjzHYyFTT03i8B+KOfxk6hSU5WAiXRM3Y4UCfPEo9+rVkBCPXHUPLsTT5P1QE5ZCj151N+FiuAdx73s+0235nonV/3SsbRp6D1JCz0TG6xeu2EXuwouHxQXMIUE6f1tM9Xkh0t+5LHKMec= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649136; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZfW5OtIbsHhs+Su8dwgQ67EQ8B25FsGHHk49+l9J4Rc=; b=FnoMeMf4i1GBC2KnEOjQpxdz9yfNK+a0EngoJdLQX7HV+yN24xhMyvu0vGIlaBR5SNmpF5Tdo1DgW4Mmj7Ib5D5YISCbfERzeOxS8OdeyXC611TmS17DwLzLUHjglYkrAJJRAUmTA3I3kBY/hNye2V6CKToP66orBh3sY3GunbE= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649136462795.930631121637; Fri, 5 Jun 2026 01:45:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQ9j-000635-ER; Fri, 05 Jun 2026 04:43:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9g-00060t-HY; Fri, 05 Jun 2026 04:43:52 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9b-0002Tg-J3; Fri, 05 Jun 2026 04:43:52 -0400 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 6556OdLS854749; Fri, 5 Jun 2026 01:43:15 -0700 Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11021094.outbound.protection.outlook.com [40.107.208.94]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejupdmnv4-9 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:15 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by CO6PR02MB7812.namprd02.prod.outlook.com (2603:10b6:303:a7::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:12 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:12 +0000 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=ZfW5OtIbsHhs+Su8dwgQ67EQ8B25FsGHHk49+l9J4 Rc=; b=VfpD4ljIRuG1wmFheFctcuzTuUXuPJ4EY1EmT0/zrK09XyOWfu8gUaWgc uB9gnp/B8apc113EPaiJBA7GfAsqGe6rgZRCXMQuSiDM87fezMhL9V0ea2jtzJ52 8dvMtDi8FRRgw1pPleU1YpcT0nldtXjVfBXODaF4v95sAETmInvgCpAGlEUeMiiv HDzf0ymm56+35u/g6IeuPV0PT8D9nhqZ24ieIW2WfL7YEPmjXEGWpsgJVku4zpUA 9S+f3r9yy34LyWy99LWdzmBH7D+58xgOW9pgetlWn7WrZHgg6uve6mT560mnUhKD vxXSuyUVZTXF7yFfi2y+dMC5X9lZg== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=endqdnWHiPnIx+kdHqdX0FaJPH2Tqj4M88gUlOADYcEdkD4QcKn+mcQBKEoNb3Wq8Wjic9LPoAJR1xrCeHrgwslnQZ4ywrTet0fwNgY4yq+d0rgApbU17xIAHFeadc/aood0GVkSGeaDrLfw2Z4l+JGVvkZ5THx9Xd1EcNlm20oE8oqmD1KAv4oIF+I30bMF8qWjCCv++zlSzs2SW9p4NoxLqKYRlZXuGPIVnRGpJXfu0Q5DEBHzUg3xb8YmeevjlVA6/oCveSk1LGGc96GwRtBYVj3WmMLQ3UwVWOxELsIDvC7IFEW26HMfwFYJL9dmuGqAryf8heoABbbNGIwVbQ== 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=ZfW5OtIbsHhs+Su8dwgQ67EQ8B25FsGHHk49+l9J4Rc=; b=wJYKni5d9hFlw8OBSLcdHwGoNAhBcze9eE5zBa3SQUaxPsLEevmUHDZuVlru3Xmh9unObdhktmw8I1e1eK1bncurMzGakeBfj/xhAh6ddXf9UPioep8CysU6UF81iV0dJSqTMJyZKvo20tBAGbjKjhvT9WXmAhHWK9xkqd09RcDyBM64x+2+gR0MhLc1QAZtostEBSCC9y5qH64+IxXOnv9gYjlsX22PjtnTS4WGbMbHi9mkt1dKZGmjfyslnzc9CG39bhZwQuH+4shgEXZgSHUffyEfTFkBqsWmsb8V7wQDKDErrcxvhwFNIF2u2QimImq72yMZPx4UgKEQ2EEZjw== 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=ZfW5OtIbsHhs+Su8dwgQ67EQ8B25FsGHHk49+l9J4Rc=; b=C3swA+vgESeiaDrUDxr4n6hJEZelaufR/hDg+Cgr4B5CIF+EP3rdWgguWooc1pmoL1RLX/T0YnTxslY5oZl4aHpUMQP6VuFZ4kkbPaX2cqHBhl+iZoO8hdTZo4tXGjM+pngT8fku9bUi7hXIJJE2vsIpTaamQeUuAWYSEifUG5b95aSu81fLwy8cpig4OpRrA5V1rUs4PWzCeQWjD6O8jYg1O4pm8eJtpw48Wh5XZTobZ+asu6dyx1ZNsFjCf88Gg9e83gvtISSkpeYwSGg1oWeR0P/+8zpTFAEsjOEb7+frYsXBtQxIu0vbAhp9DmpZAj9Ys9CXidkCeMB0qaDVVw== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 08/29] target/arm: Add ID register field helper functions Date: Fri, 5 Jun 2026 08:33:37 +0000 Message-ID: <20260605083358.1320563-9-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|CO6PR02MB7812:EE_ X-MS-Office365-Filtering-Correlation-Id: 03241429-5bd6-49b6-7972-08dec2de79d3 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|7416014|366016|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: DTtXRlODqd6FaUvczzWtgrighbnKDdXzYoEos9Mrwo2w1vpkOob2HA/og1MqFM33tyyOKOzqvfhZIYb1+qbFx53ceiczAX7rSuwJixqVi63zwyi6l6JNFstBmdrlEQicnb9ddaLdx/4Rrs7VXE0Uf2y4KX+puqj6E8JVWDgy5FibBKGn6g3LfemxnBMNsxkUImY/DQNf0fu4CmbRMpBPc0zdreKtphgheCcr1gbEJw19oRYRhasiI0rBhbYMcLMN3RNzO73k9GdOFqnbW+Daj1exIq8HkLCK5Kq+zJ0KCuT7S/oy0y2gggiVCYtfHpSL1VO9BbNsjoxyOonH/e0CH0M5zN4+XjR2v5uNCqOXT3N96i9L5mI2CtCNEpVcH3E+kKWzGIWwkejsG5xdpfc7taX/ORU4u3+EvUE1FFQ0Fh9a8SB153w2dTPultIFGCc8mvxJCxQdYl5sUz4h2resbgJzHzi/BU+0zAd1hNlRlY432vu5YjZsi+8KyMx7I+CRC6jyk0guoO9t9/RO2cv3B7c1HQODbi46392ekFhGaL7QrS8GaB/D4GIORV5Y0DU+Pf5KTxA1moON2sZ6Y4EGpNjRwNyR9gxEknlklPED3MvURwfmgGcQfdmJvaV2orJRbg/jQf0LhhiUd9x1KYDeGutpL1aODlF4Nmc1j1t7Y64eyqjW2WnziQu9Vrk0UXtp X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(7416014)(366016)(56012099006)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?S/YwS9XeX3EZxdkzlc2dMQEBQAY6IfjFOSLZTUh2TggXTMFpGDfymvufEcEv?= =?us-ascii?Q?BhXxDl1KMuEbdPz5nYEX7RpI9EBjh1wdq9zNS7Rw56IrfZ3rgCzJHAm5+3BC?= =?us-ascii?Q?Qo+8ZmjM+zo8FAlmENUAvfGEeJSTBO0JsYEPTqK72BREDNUntX1ekbiKS6Y3?= =?us-ascii?Q?NPVn3Wf4G23DIJxYO/mEGvfKDPyrTN5jckNGgLk61mg+oaealVxuugiIIadr?= =?us-ascii?Q?wnB1q87VqrZdOp1gRBUi6cHmPgRtfwSEVr56lQEzGeq1oUBdVBeTL7U5aFFZ?= =?us-ascii?Q?bUOsUDXaNp9sCnM/qndgSSbPKpj2ICJaVgzj/2o0vFzD0rz8T7Y5AQ6crZNX?= =?us-ascii?Q?6laMmIo3aRGPOnjyHpBiXacuI1jEqUNDkZvRqJJXN18PEfH5SzWORRms05bg?= =?us-ascii?Q?HYHPhtOdBHWQwDe5LmQuriFdXHQfJC4iz1JU6MGpAPHPaxd76M8EgZ13SIr8?= =?us-ascii?Q?tud1c5Y7kYHvhodcboyZXi7gwdlRUJpftED0AlfPM7weGHgiOpDLNJRV+ocW?= =?us-ascii?Q?TgNHJ9ei9ftpPrwSXJp0oAtngKX7ebJypJYDqBS+xSspDGdYwHj9E0cCy9Ny?= =?us-ascii?Q?smgTh3NaRQaI9tbkFjXwsWk2IhsOGX0oGBM4pYwO8exx3pVUcNmWtpcqvG32?= =?us-ascii?Q?63iNPnI47q5kWr35cjzPTcEBGYA/8u9xXzgtDZO2B52RYrFS+BK1ii5H5gVY?= =?us-ascii?Q?r6/oNZGG2bl9L86o6w+Kq+OpW+o+eNW+mFrr8/Wdl1MlpO/yImLsbOrFPWaZ?= =?us-ascii?Q?QlMDe5nIqnLBdWnd+QFUThahRHC4T2U/ubBk3PyPTYyQWhCdAATLrty4zYTH?= =?us-ascii?Q?LAaFHiny+hjcnP3MbZEF83gzGI+NdXluLmCBzE7X4aihP6UT8rEakCAfUoOn?= =?us-ascii?Q?GBblX9nLSmMd60MTHHA+uegIZT+QbxfXMvrDtuoLCzFd+nn645E8YqOfzoGF?= =?us-ascii?Q?pp85lU8eoCcjvYh1+ZpFfUHPdw/V5sKbdP9IJSsbCByaD5CO1THMKu9foVeU?= =?us-ascii?Q?0gCryCH95D3S6hrWZTk5eMyoeOdirv/8PuBHfJTI40Nb0bNdVSvgtXQpJA4N?= =?us-ascii?Q?6jSWkM4Uu5q3IzxTs2aJXo+L74uoICrCd+X+Bm+I87Ebg1iGLGEAV6l1F0mo?= =?us-ascii?Q?lxlxh0uHBXmMc0Lp6ByQWHa3rmV+d3TPtliCg2OBC9/U74ZpAgvaZwiyu+BK?= =?us-ascii?Q?78PHvw9Swosdqs0f0zbFZRt1fQ+JB3jlgggbbPGguG+q2jsQMQ5J1YuPhcWH?= =?us-ascii?Q?0oFXNQeANx8Uvkj5wOCitbXSecIHPck0Fl87DwH6ExrnFpBlX4CLggjU8lnL?= =?us-ascii?Q?tOtt5ei8AdyMEcZOT/hnDCC2pOmTcm7SN+cl3tppvnd4BTH4vc4XVgdDOtQr?= =?us-ascii?Q?jUJC5x+QIi14oVdcozNDJa+pzE+m36hfe5PZL3ehGZ3rZZPpiJPUCsZi25W+?= =?us-ascii?Q?dJ8mv/Ng4390SbsOMs1AWoQpH095yhqDqZf+ynn1H8JtJaTmYswQAf0kC3vy?= =?us-ascii?Q?O1ufgVv7fvGtrtH+Qim5RmDalHvb0OBhwyPe5D5AHdoX/ZTUhGjOMqVTeatu?= =?us-ascii?Q?G2CMg/dfVW02Y4katMWoOkKjYYfCE26fGRNCJWstKDJUkv5QXaFKEkZGZCOK?= =?us-ascii?Q?XHxOj/05+kX/ofE4sLHKqP+B4POX32YWSrpfkU5uJHyfacOY6CdfiE21Eoxo?= =?us-ascii?Q?Gu5yDBLqoFEF+GpasfyzTTIHkK8S4/1Pp0HQ95M6lp2YsqH6QxseF4Yp+JXt?= =?us-ascii?Q?Y7ydydlL7/I7CYvKcYcQdLP66gi34PU=3D?= X-Exchange-RoutingPolicyChecked: mCpK5IIZ9N589GIzVSU7mBJG60+U9ljIYnLzewcmYqkMjuEOoXJYCAqNvW7MqnY6Z6rm4FkfWqbVLb/fd8gKza6RcbME4gHB6BulrvGU1kZN7UEPFSbrbdybKya+XyWQCjszBEPbNpHpI7T0pLqTVkLLJYRhmyIzYSqLwEd4fk/q5VeCx5B7jsBs76nMT4w63K3qyt2YuFvH0jYnV1QFmAdLQf3wAdjTSskK/a5BKtc+ycDcto4dr8O3NoNxw2/376v4ZQsNbMXbizMw4F78c3fvvPHrSUsS8lItX+7hygo48+oz7rOeZNIq3FCriAwpCy8QCkbWs34ATfMCyWYSnQ== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 03241429-5bd6-49b6-7972-08dec2de79d3 X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:11.7329 (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: iIXrB/DhGmy2kX38BHpKEhdOzNZmA6B4GO6Ws7xhp4ydhScYH8NuD3tQvRABk8mO21Aai3DKK5sZbSONIsnSsU7dfa3CryYXzhDI/gMw8TI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR02MB7812 X-Proofpoint-ORIG-GUID: f-2BgiJD5gIUB6bTTnkB223mJKuHc9rv X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfX4ExxihbRBNk5 MucfXku/4Nvkq9QGfKfO5E81yPYLjVAeju6wEfNXXBYyEmHFpIjZmnOnXZR2XFIAPovj2ZK2xxO t0YKxD8M8DHhFezRypmRwRS9qegEpJGnOGCkOMii7E+mtzpP3P4NxChYai32wkk/TkMZkd9BhyN sgZwuBxgm3BK11Nh1XPK0pDPvwgBIclRwLgHvbfzb+/ce7JvYobckslOs8W5wFB5arlLhcjHRuL 5iUOrr17Z98kcuHyrrA5GzXwkdwaUZCl4TKYbNdeJSMLslcyUc/S5+UyIYeEnhf/D1mFUU5IF8O WTcwNqf6qGG3HAxw4hphyP/z7rUTEnLMzO1qmifpJGkvzbGuCuTgeys1kqWa0XtGb2FZyOnYfzV dFyddq7vWRnIw/8n7wOXPQHO7w5iQ70j4flgmX38FQHMu83RQrpdNJB/cYK3i0GL0oyQx/+4+L9 164+/Y76p5AOyUFdNmA== X-Proofpoint-GUID: f-2BgiJD5gIUB6bTTnkB223mJKuHc9rv X-Authority-Analysis: v=2.4 cv=dYmwG3Xe c=1 sm=1 tr=0 ts=6a228c23 cx=c_pps a=Dy1/g0x6RHl9kMZQX3cATQ==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=y4UcunY2MAxhM4LwGdWI:22 a=64Cc0HZtAAAA:8 a=slIbVy7XD4hZSBV9b_MA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.151.68; envelope-from=khushit.shah@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649139348154100 Content-Type: text/plain; charset="utf-8" From: Shaju Abraham Add helpers in cpu-idregs.c for working with individual ID registers and fields. This includes: - read/write specific field. - look up architectural value name for a given field value and vice versa. - reset a field or ID register to it's default value. Co-authored-by: Khushit Shah Signed-off-by: Shaju Abraham Signed-off-by: Khushit Shah --- target/arm/arm-cpu-props.c | 246 +++++++++++++++++++++++++++++++++++++ target/arm/arm-cpu-props.h | 8 ++ target/arm/cpu-idregs.c | 119 ++++++++++++++++++ target/arm/cpu-idregs.h | 11 ++ target/arm/cpu64.c | 2 +- 5 files changed, 385 insertions(+), 1 deletion(-) diff --git a/target/arm/arm-cpu-props.c b/target/arm/arm-cpu-props.c index 1c5d4c5727..d5900c0e23 100644 --- a/target/arm/arm-cpu-props.c +++ b/target/arm/arm-cpu-props.c @@ -18,12 +18,26 @@ { .name =3D (prop_name), .type =3D ARM_PROP_##_type, \ .u.field =3D ARM_FIELD_IDX(reg, fld) } =20 +#define ARM_SINGLE_FIELD_PROP_GS(prop_name, _type, reg, fld, _get, _set) \ + { .name =3D (prop_name), .type =3D ARM_PROP_##_type, \ + .u.field =3D ARM_FIELD_IDX(reg, fld), \ + .get =3D _get, \ + .set =3D _set } + #define ARM_FRAC_PROP(prop_name, base_reg, base_fld, frac_reg, frac_fld, v= alid_vals) \ { .name =3D (prop_name), .type =3D ARM_PROP_FRACTIONAL, = \ .u.frac.base_field =3D ARM_FIELD_IDX(base_reg, base_fld), = \ .u.frac.frac_field =3D ARM_FIELD_IDX(frac_reg, frac_fld), = \ .u.frac.vals =3D valid_vals } =20 +#define ARM_FRAC_PROP_GS(prop_name, b_reg, b_fld, f_reg, f_fld, valid_vals= , _get, _set) \ + { .name =3D (prop_name), .type =3D ARM_PROP_FRACTIONAL, = \ + .u.frac.base_field =3D ARM_FIELD_IDX(b_reg, b_fld), = \ + .u.frac.frac_field =3D ARM_FIELD_IDX(f_reg, f_fld), = \ + .u.frac.vals =3D valid_vals, = \ + .get =3D _get, = \ + .set =3D _set } + const ArmFracVal csv2_frac_vals[] =3D { { "0.0", 0, 0 }, { "1.0", 1, 0 }, @@ -240,3 +254,235 @@ const ArmCpuPropDesc arm_cpu_props[] =3D { ARM_FRAC_PROP("feat_NV", ID_AA64MMFR2, NV, ID_AA64MMFR4, NV_FRAC, nv_f= rac_vals), { .name =3D NULL } }; + +static const ArmCpuPropDesc *arm_find_prop(const char *name) +{ + const ArmCpuPropDesc *p; + for (p =3D arm_cpu_props; p->name; p++) { + if (g_str_equal(p->name, name)) { + return p; + } + } + return NULL; +} + +static void arm_single_field_get(ARMCPU *cpu, const ArmCpuPropDesc *p, + Visitor *v, const char *name, Error **err= p) +{ + uint64_t value; + char *s; + bool b; + + arm_idreg_field_read(&cpu->isar, p->u.field, &value); + + switch (p->type) { + case ARM_PROP_STRING: { + s =3D g_strdup(arm_arch_val_name(p->u.field, value)); + + if (!s) { + error_setg(errp, "Property '%s': unknown value %" PRIu64, + name, value); + return; + } + visit_type_str(v, name, &s, errp); + g_free(s); + break; + } + case ARM_PROP_BOOLEAN: { + b =3D value !=3D 0; + visit_type_bool(v, name, &b, errp); + break; + } + case ARM_PROP_NUMERIC: + visit_type_uint64(v, name, &value, errp); + break; + default: + g_assert_not_reached(); + } +} + +static void arm_fractional_get(ARMCPU *cpu, const ArmCpuPropDesc *p, + Visitor *v, const char *name, Error **errp) +{ + uint64_t base_val, frac_val; + const ArmFracVal *val; + char *s; + + arm_idreg_field_read(&cpu->isar, p->u.frac.base_field, &base_val); + arm_idreg_field_read(&cpu->isar, p->u.frac.frac_field, &frac_val); + + for (val =3D p->u.frac.vals; val->name; val++) { + if (val->base_val =3D=3D base_val && val->frac_val =3D=3D frac_val= ) { + s =3D g_strdup(val->name); + visit_type_str(v, name, &s, errp); + g_free(s); + return; + } + } + + error_setg(errp, + "Property '%s': unknown fractional value %" PRIu64 + ".%" PRIu64, name, base_val, frac_val); +} + +static void arm_cpu_prop_get(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + ARMCPU *cpu =3D ARM_CPU(obj); + const ArmCpuPropDesc *p =3D arm_find_prop(name); + + if (!p) { + error_setg(errp, "Property %s not found", name); + return; + } + + if (p->get) { + p->get(cpu, v, name, errp); + return; + } + + switch (p->type) { + case ARM_PROP_STRING: + case ARM_PROP_BOOLEAN: + case ARM_PROP_NUMERIC: + arm_single_field_get(cpu, p, v, name, errp); + break; + case ARM_PROP_FRACTIONAL: + arm_fractional_get(cpu, p, v, name, errp); + break; + } +} + +static void arm_single_field_set(ARMCPU *cpu, const ArmCpuPropDesc *p, + Visitor *v, const char *name, Error **err= p) +{ + uint64_t value; + char *str =3D NULL; + bool b; + + switch (p->type) { + case ARM_PROP_STRING: { + + if (!visit_type_str(v, name, &str, errp)) { + return; + } + if (!arm_arch_val_from_name(p->u.field, str, &value)) { + error_setg(errp, "Property '%s': invalid value '%s'", name, st= r); + g_free(str); + return; + } + g_free(str); + break; + } + case ARM_PROP_BOOLEAN: { + + if (!visit_type_bool(v, name, &b, errp)) { + return; + } + value =3D b ? 1 : 0; + break; + } + case ARM_PROP_NUMERIC: + if (!visit_type_uint64(v, name, &value, errp)) { + return; + } + break; + default: + g_assert_not_reached(); + } + + if (!arm_idreg_field_write(cpu, p->u.field, value, errp)) { + error_prepend(errp, "Property '%s': ", name); + } +} + +static void arm_fractional_set(ARMCPU *cpu, const ArmCpuPropDesc *p, + Visitor *v, const char *name, Error **errp) +{ + char *str =3D NULL; + const ArmFracVal *val; + + if (!visit_type_str(v, name, &str, errp)) { + return; + } + + for (val =3D p->u.frac.vals; val->name; val++) { + if (g_str_equal(val->name, str)) { + if (!arm_idreg_field_write(cpu, p->u.frac.base_field, + val->base_val, errp)) { + error_prepend(errp, "Property '%s': ", name); + g_free(str); + return; + } + if (!arm_idreg_field_write(cpu, p->u.frac.frac_field, + val->frac_val, errp)) { + error_prepend(errp, "Property '%s': ", name); + } + g_free(str); + return; + } + } + + error_setg(errp, "Property '%s': invalid fractional value '%s'", + name, str); + g_free(str); +} + +static void arm_cpu_prop_set(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + ARMCPU *cpu =3D ARM_CPU(obj); + const ArmCpuPropDesc *p =3D arm_find_prop(name); + + if (!p) { + error_setg(errp, "Property %s not found", name); + return; + } + + if (p->set) { + p->set(cpu, v, name, errp); + return; + } + + switch (p->type) { + case ARM_PROP_STRING: + case ARM_PROP_BOOLEAN: + case ARM_PROP_NUMERIC: + arm_single_field_set(cpu, p, v, name, errp); + break; + case ARM_PROP_FRACTIONAL: + arm_fractional_set(cpu, p, v, name, errp); + break; + } +} + +void arm_add_cpu_props(Object *obj) +{ + const char *type; + const ArmCpuPropDesc *p; + + for (p =3D arm_cpu_props; p->name; p++) { + switch (p->type) { + case ARM_PROP_STRING: + case ARM_PROP_FRACTIONAL: + type =3D "string"; + break; + case ARM_PROP_BOOLEAN: + type =3D "bool"; + break; + case ARM_PROP_NUMERIC: + type =3D "number"; + break; + default: + g_assert_not_reached(); + } + object_property_add(obj, p->name, type, + arm_cpu_prop_get, arm_cpu_prop_set, + NULL, NULL); + } +} + +const ArmCpuPropDesc *get_arm_cpu_props(void) +{ + return arm_cpu_props; +} diff --git a/target/arm/arm-cpu-props.h b/target/arm/arm-cpu-props.h index 2c9bca9d97..9ba3f4c100 100644 --- a/target/arm/arm-cpu-props.h +++ b/target/arm/arm-cpu-props.h @@ -11,6 +11,8 @@ #define ARM_CPU_PROPS_H =20 #include "cpu-idregs.h" +#include "cpu.h" +#include "qemu/typedefs.h" =20 typedef enum ArmCpuPropType { ARM_PROP_STRING, @@ -36,6 +38,12 @@ typedef struct ArmCpuPropDesc { const ArmFracVal *vals; } frac; } u; + + void (*get)(ARMCPU *cpu, Visitor *v, const char *name, Error **errp); + void (*set)(ARMCPU *cpu, Visitor *v, const char *name, Error **errp); } ArmCpuPropDesc; +void arm_add_cpu_props(Object *obj); + +const ArmCpuPropDesc *get_arm_cpu_props(void); =20 #endif diff --git a/target/arm/cpu-idregs.c b/target/arm/cpu-idregs.c index 81661dfca5..ee6165622a 100644 --- a/target/arm/cpu-idregs.c +++ b/target/arm/cpu-idregs.c @@ -10,6 +10,9 @@ #include "cpu.h" #include "cpu-idregs.h" #include "cpu-sysregs.h" +#include "qemu/error-report.h" +#include "qapi/error.h" + /* * Generate an array of architecturely defined values for each field * in arch-value format @@ -123,3 +126,119 @@ const ArmIdRegFieldLoc arm_field_locs[ARM_FIELD__MAX]= =3D { #undef IDREG_FIELD_START #undef IDREG_END #undef IDREG_START + +void arm_idreg_field_read(const ARMISARegisters *isar, ArmFieldIdx field, + uint64_t *value) +{ + ARMIDRegisterIdx reg_idx =3D ARM_FIELD_REG(field); + uint64_t reg_value =3D isar->idregs[reg_idx]; + uint32_t shift =3D ARM_FIELD_SHIFT(field); + uint32_t length =3D ARM_FIELD_LENGTH(field); + + *value =3D extract64(reg_value, shift, length); +} + +bool arm_idreg_field_write(ARMCPU *cpu, ArmFieldIdx field, uint64_t value, + Error **errp) +{ + ARMIDRegisterIdx reg_idx =3D ARM_FIELD_REG(field); + uint64_t reg_value =3D cpu->isar.idregs[reg_idx]; + uint32_t shift =3D ARM_FIELD_SHIFT(field); + uint32_t length =3D ARM_FIELD_LENGTH(field); + ArmIdReg *reg; + ArmIdRegField *fdesc; + + if (length < 64 && value > ((1ULL << length) - 1)) { + reg =3D &arm_idregs[reg_idx]; + fdesc =3D ®->fields[ARM_FIELD_REG_FIELD(field)]; + + error_setg(errp, "value %" PRIu64 " is too large for field %s.%s", + value, reg->name, fdesc->name); + return false; + } + + cpu->isar.idregs[reg_idx] =3D deposit64(reg_value, shift, + length, value); + return true; +} + +static const ArmIdRegField *arm_get_field_desc(ArmFieldIdx field) +{ + ARMIDRegisterIdx reg_idx =3D ARM_FIELD_REG(field); + uint16_t field_idx =3D ARM_FIELD_REG_FIELD(field); + return &arm_idregs[reg_idx].fields[field_idx]; +} + +const char *arm_arch_val_name(ArmFieldIdx field, uint64_t val) +{ + uint32_t i; + const ArmIdRegField *f =3D arm_get_field_desc(field); + + for (i =3D 0; i < f->arch_vals_count; i++) { + if (f->arch_vals[i].value =3D=3D val && f->arch_vals[i].name) { + return f->arch_vals[i].name; + } + } + return NULL; +} + +bool arm_arch_val_from_name(ArmFieldIdx field, const char *name, + uint64_t *val) +{ + uint32_t i; + ArmIdRegArchVal *av; + const ArmIdRegField *f =3D arm_get_field_desc(field); + + for (i =3D 0; i < f->arch_vals_count; i++) { + av =3D &f->arch_vals[i]; + + if (av->name && g_ascii_strcasecmp(av->name, name) =3D=3D 0) { + *val =3D av->value; + return true; + } + } + return false; +} + +bool arm_field_is_idreg_any(ArmFieldIdx field) +{ + const ArmIdRegField *f =3D arm_get_field_desc(field); + + return f->arch_vals_count =3D=3D 1 && + f->arch_vals[0].value =3D=3D 0xffffffffUL && + f->arch_vals[0].name =3D=3D NULL; +} + +void arm_idreg_field_reset_to_default(ARMCPU *cpu, ArmFieldIdx field) +{ + const ArmIdRegField *f =3D arm_get_field_desc(field); + ARMIDRegisterIdx reg_idx =3D ARM_FIELD_REG(field); + + cpu->isar.idregs[reg_idx] =3D deposit64(cpu->isar.idregs[reg_idx], + f->shift, f->length, + f->default_val); +} + +void arm_idregs_reset_to_defaults(ARMCPU *cpu) +{ + int i; + uint32_t j; + ArmIdReg *reg; + + for (i =3D 0; i < NUM_ID_IDX; i++) { + reg =3D &arm_idregs[i]; + + if (!reg->name) { + warn_report("target/arm: no field table for ID register slot" + " %d; cpu->isar.idregs[%d] left at 0x%016" + PRIx64, i, + i, cpu->isar.idregs[i]); + continue; + } + + cpu->isar.idregs[i] =3D 0; + for (j =3D 0; j < reg->fields_count; j++) { + arm_idreg_field_reset_to_default(cpu, reg->fields[j].idx); + } + } +} diff --git a/target/arm/cpu-idregs.h b/target/arm/cpu-idregs.h index 37a87e6d0b..01d1b8f797 100644 --- a/target/arm/cpu-idregs.h +++ b/target/arm/cpu-idregs.h @@ -74,4 +74,15 @@ typedef struct ArmIdReg { } ArmIdReg; =20 extern ArmIdReg arm_idregs[NUM_ID_IDX]; + +void arm_idreg_field_read(const ARMISARegisters *isar, ArmFieldIdx field, + uint64_t *value); +bool arm_idreg_field_write(ARMCPU *cpu, ArmFieldIdx field, + uint64_t value, Error **errp); +const char *arm_arch_val_name(ArmFieldIdx field, uint64_t val); +bool arm_arch_val_from_name(ArmFieldIdx field, const char *name, + uint64_t *val); +bool arm_field_is_idreg_any(ArmFieldIdx field); +void arm_idreg_field_reset_to_default(ARMCPU *cpu, ArmFieldIdx field); +void arm_idregs_reset_to_defaults(ARMCPU *cpu); #endif /* CPU_IDREGS_H */ diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c index a93ad2da5a..7fb3791643 100644 --- a/target/arm/cpu64.c +++ b/target/arm/cpu64.c @@ -37,7 +37,7 @@ #include "hw/core/qdev-properties.h" #include "internals.h" #include "cpu-features.h" - +#include "arm-cpu-props.h" /* convert between _IDX and SYS_ */ #define DEF(NAME, OP0, OP1, CRN, CRM, OP2) \ [NAME##_IDX] =3D SYS_##NAME, --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649357; cv=pass; d=zohomail.com; s=zohoarc; b=fJjw/ajSgFm5wODwnvpnA54Af2ZZuVgC4COtSCd6Kd1PxryJ9633L56FazIULtdsPfpXoc5gN0s4jU6Lgd6T7SWt183z/Oqc63k0Amm3OxSadhjnmnZAqZbsAn5U0Lqob8En55FFdTHCAQBfZ247U/9OOyzKXJIMqvkYRkJp6z8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649357; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xyp+G612mXjc7SgoFfos4/CCwaiPaA6mgEJO8/rgfm0=; b=Y+rfSoT0jyrX185G27V44IZta/z9Asl38/f9qdOSiOsG/+PDNZjGBM5JFPRoSwOX632JVpYlSupB5uo9Xenvy3Cr+Kun0TkYo++SgqPxl/J/gFHWBfx0YqLAzSTRJoMmcT1Yxw9bpReFdKzTEcEufpYrzbOyNaz8P6Ogu3lZrIE= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649357716747.7783274281139; Fri, 5 Jun 2026 01:49:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQ9f-0005zR-5T; Fri, 05 Jun 2026 04:43:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9b-0005wP-Cj; Fri, 05 Jun 2026 04:43:47 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9Z-0002Rz-4N; Fri, 05 Jun 2026 04:43:46 -0400 Received: from pps.filterd (m0127838.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6556Ocu1889016; Fri, 5 Jun 2026 01:43:19 -0700 Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11021117.outbound.protection.outlook.com [40.107.208.117]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4ej5a2fxwg-3 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:19 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by CO6PR02MB7812.namprd02.prod.outlook.com (2603:10b6:303:a7::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:12 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:12 +0000 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=xyp+G612mXjc7SgoFfos4/CCwaiPaA6mgEJO8/rgf m0=; b=BJcTURj2cR2bTVS99Fv7bJtMzOCO0Hh1TN+HvDNJ4Ykz0x5RImWA1GWLB agnVxYkeBjfI/nj0tJnuFpFNIeKQd4dnaifFt+Lyo83g2UY1zewZPVodATFeOqdi UvY/oF1IP33EWFtLKXdLSAFeitEMi2Pb07y32RnSvu72Lf33DZzvBn7PY19CRvwl G2yCtPJ0+QHE+T9IONqsveuBykEglDx+JXutX1pjV+oWpRPvRPtwFAOgbrUPG0jJ iV6/QFWXEx/VqotMbrf1/LtBQD5cU0WXfE54QugncvRBmtvYK3+LFpP2bpKFezaO sl58WFDo+D5zXpQgHKwB2fjeHehMg== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yh2/IoXrYzpqMTfVyF+EYMIbsba0rotL0ZnoYMtKVgMG5e1JgzsgPw6CH0bdJSW1m6oAwJN+cHp7flIk5oyArAIOFEXKkybtoVVUMw+B1bEjMI7+kppV184UmmNjjr31xH1EpJfTaDuOy8hfaojLJDifkxOeByBl2tVDl1Gw2truytlG6ShCpXUAT+rY++bAoDL3bPUqIKZfrwUX/h9sqcVdV+N5AAeS/TOcay9qYIvASv0zu+Z6A1PzHr20tZVMEWZvJyZRNoMr2LuG/rwghR87p6SAjBiuMpkkQDUM2opCUDlRbyuPZxB1v0+L6ksVytiRm2RiwDSf+eOGqvzmCw== 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=xyp+G612mXjc7SgoFfos4/CCwaiPaA6mgEJO8/rgfm0=; b=x41WeZ67Q76e0i5ID7vnOgwwwUSEoW2T6FO9EP7HlONmM9CQ/3+680mge/Llu1e1ZKYo/zQaWo+80WVPlYMO/qqJlSftDM/mqTa69heURvqZo+n9avZpeefHJvuksIYz2tfaQBdHNpqKO1Tv5qBNchbXACx+y1rEPOQEXOKBytxROljRWm4CeWXZ+VRbt5ZSHyzyt7YNPA7Z37nHwTO16beYsO6JZ74MO1cVecgAlZCyn9EPGb6YAdKT+vk7Zs44RkwnjDIdzI2iP+u3tEnOcG2ocQobB3V8uyJTGASnGojEpdnAG2o5yzLj/7HlGG6mHa50FxKSKwb9S6Pubn8rYQ== 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=xyp+G612mXjc7SgoFfos4/CCwaiPaA6mgEJO8/rgfm0=; b=Pmw+9eyyC/JYaWrbiXrwHyPBI5j2XzzLL9Xl2cbjZI5AU2bbyzcK/xDAYB5yegFB80Ax/vKFOuq5mfl93Zt+t6ibcN6GubCNTe69729CWdfvV653EzR7gA6GnitQFvgIJtdpMvGLiknS6zdqPpqJgM1/eRTydEcp0Nb5rDCU2sHahMhUU7bojQjiYFh3TnrKA7vTBcxiFpCWwrFVX3KRuGpgqxwP6NVXyX1W7ioT3PA0GpJLbk9dyCEKnp4bgXaMYzM+Qez+Iq7W1QhFrsrDd0FOaLrTVngNIStcpALVfhnHWZ4G+odvPU26Mk2expxrwN7SxeQG5KUisUarwAxWXw== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 09/29] target/arm: Add all ARM64 properties to host model Date: Fri, 5 Jun 2026 08:33:38 +0000 Message-ID: <20260605083358.1320563-10-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|CO6PR02MB7812:EE_ X-MS-Office365-Filtering-Correlation-Id: 325ec81c-e129-4814-c64d-08dec2de7a0f x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|7416014|366016|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: mwUiCxwI9RG4wbmi5zgCpauwtcr9KIoFzGwkD3wpPzW7RxpnCnxleG+U0TSRFZ82yCEmXQ5tlY9NZN9NvdDf0OpEypZjlCIqqIZMIR75lvPzdDoMYIclqM+UfJrkVsgh506ehBz0N3aKO89YNu8EexRoRmxeOlKJLpOwjkWcL8e7/7qB5Tei1iKhm5i+8XvxhdTiBcfNI1NES7k+iWiOnstg9rxKaCNqbgocoACim8n/HASe3054kH0Q526xHVASQAFrdA14U6oomNdQW1N6WB9yPjNiCOjqZIm/5QYCF6+E5wFcyabr3YW4fLsDhSKLiWNtl/Kn/z6bEAlV3n1eTRsfT7PEKMV+EdALQKANZ+DaSv39beAzfJSFoB4L/os7REc/UYmt7b4U7PQpoCO2DDFfAqx8Wvzlnc9JeI4URl/cSpvZoQoB2NUlYftBkkur6H4ZqIt1h4bU7kvRW+COCe9gS2xPCq8kTpg9locwARGBpM7Ow0d10sYy87QyXVF6r7fy3wyWIWe8aJ0nId3edKNPePVmabX9LBNd6TqZmIk6kyCz7Er7gsFdZqxAFZ7QBwKRDZmzt8L+WJUvG/vbRXZ/gu8mEAkkGFw+Tyddv456q7QTVhjArt9Dgi0WKhLdRhA3zAOVVz6WHDloUBkFOvKh1e/TtUD9LPhaItL00syX/LuuimM0sEx/ghmeQbTi X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(7416014)(366016)(56012099006)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?VTWDn/edCJ+gtX2egUMyzMKHjaEgh0oMu4iwYuEaeyIaw+7h0BUW9FjxrmrG?= =?us-ascii?Q?9Yqrjx5F6JhUXvaSDbyXCNg3QTgWHJp1GeaS6IMl9eKim4pFJp29f/EeL9MT?= =?us-ascii?Q?GYLn5xq/4hBtGb9ZlRtuZCKQd7iNSjm8KeZV4R8gYq+pou0X5z4QrduArzg5?= =?us-ascii?Q?5aKbGA25trFLZ90ClsBTSVZZnZvjemtDdThORfgu81JldJM2n6hodkRJlop5?= =?us-ascii?Q?6teubd8XnVzIBroplvDtbyx73btM2290YJfRGl0UqGl6KoDFShgFz5CRfwkK?= =?us-ascii?Q?NunArURGgOTj/pHHo8AJfKUDNz3+nXsTuy/7AA0QsZmaxBA+fM7jZ3Hu+0xB?= =?us-ascii?Q?rRbQ7gK9oypMFvmwCdt+xusiT6oI37r7+djkAWCVOUKoRiS8r6hykilYlgOo?= =?us-ascii?Q?BaOAVfaRI3DQ9yLGJthRhIrtRdDiTpY86s8Fw05jye77zYCAnmOBzzxRikFP?= =?us-ascii?Q?4Y2jkuZi72K8IH/A11yuZuwuv9Oz6OCnWa3nnteWM7hyfDyAR33jZNzcXCqZ?= =?us-ascii?Q?N83wXkxtur8HT3Vh4GMl65jKxjeHGfckROAHJx7IJFnQ26oADjrpfMa6EAjv?= =?us-ascii?Q?+m/EOr3V1pUNgx+NGk1S0JyV0TWfAZ86zICfcQINgw+Rc6vlrZPbwrbK3ig8?= =?us-ascii?Q?q5OywHgoqL3NrkK+M1+uaByPPmD3IOXLbwNssASR/779oa9h1HIUo5opfTQP?= =?us-ascii?Q?bJSFBqCAfi6bR9mbQMxMc9l0egBEO37/M1uUdepCEEz7K2rwiVFekZVlhVMa?= =?us-ascii?Q?E3zLNzBWgP1hXZvP7E5ugJJhTBX6kVpK7UF1ltDMNzpG4ekz4s20jk/k7Q3f?= =?us-ascii?Q?ag7ka0E65BGhBH52EJHUj14+RzyQiB4U1wRaFdZdMXOvL2M7UqO7j+GETZtj?= =?us-ascii?Q?FTl1hzRlmUJBARijn/SUKKNkgXrq3dPm5nQJkFcIzzdpY+P5D+bKnWvMRTKp?= =?us-ascii?Q?Ks19l7keu/ORdkbVWM2OTjf36ueU8V23JG2GUNyLtQrZ2aJTUbyQdxAL4HRH?= =?us-ascii?Q?yDlafuALWY7+O9CmetwCDsNaTahkh2TSxTxKnQ/kNmTzZHQC9bdWKe4sxLyY?= =?us-ascii?Q?3Vk96Q82XLvWrhvbU8Uh4ssImj29/t1i+NwZdlPbbF/WhQCCx1wtZdYasGym?= =?us-ascii?Q?58Y+qwsjYZ8Pc4Do9PCOLKgwsmVpeCHZ7TEmzBEZifqBYNBfXkbEFo41hgTU?= =?us-ascii?Q?fWYf4MPwjTNa74JT9dyyXr+L6NSFsMPEE2sh5UW4rMZyp9RzM+bNykcbh4/w?= =?us-ascii?Q?OKcM8GwiWFHCeFFAtCgjwbrhmoiFftxWxfPndMYk2EbRoAONorlkQEwano+k?= =?us-ascii?Q?maRI1fG+9IyAlmmFhVPqJoW58+TysyphqBdqAbNkjTL0g0XjF9b34t+nawhT?= =?us-ascii?Q?g4lxMeAaLSFAnZ++oOPcoWNlyq2nEeLiDdnkpik94I+CXghrdJlNNJfh+imp?= =?us-ascii?Q?951sRV6t7UE65UVe2xdL03/J5VvHWBd9jEedeYDw//Qh+09HC5dqPP3nWWuH?= =?us-ascii?Q?Ez4ujg4ym+HymAcOw5PVTcpSKF2PsJibz0Cyq1MWDxjv/ySCdX7L+NdTFaHd?= =?us-ascii?Q?9tIdlMVW3RgkOeYQUdxxVML6VZ9NMhX6X1vnnLtm9fdg9DVDth2XwA2Rkese?= =?us-ascii?Q?vPliGFjkIsBUrIjYxlXHG/wxZcaD8pmilR/GKMeAWJCEiDi8GRd857Vt0tP6?= =?us-ascii?Q?M27BxDroi12+of5ul71aVKYRJsFVFdoXfkVG0vCZfML2vxaRk6Zvys7Z/wt2?= =?us-ascii?Q?FbyARFP0sLv+GaojUZPL7lo9tVttotw=3D?= X-Exchange-RoutingPolicyChecked: rlkTwoju5onUPlQToQLWFQknMnnEDhj23UagS8/qNZU/+kj6NhnkD8f/uiC4xneghnw7+wy/ScTbEmplyr1g4xzWzXti8pGYmr1CP++j5hEvWwthI/gRAoR2W2Ich011SEQlVAXA493v19QkSCF/H70XivwM8HSqhO+Txiwb6jXcNfIMkvFLYBHr8xMAXZPf3wfULU5X8OM54c8GcwsN2ZC5aPo96Z92c4vCpbKmez+SKD6MMvItrt3soTaFadxKfyo/aJYtggInSDbBzRXg/C4hWI5om1igGxvMQ0MP9/QMA0IEiniZ7WdTiYKbWlujCJIu8JeDhENvAq59E3mllQ== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 325ec81c-e129-4814-c64d-08dec2de7a0f X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:12.1062 (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: dNPMvsTMerzaLy/M68FZvNpVRErs3p7qlvnR1DYcp+7ZFAOGTV+f3SqLbP8KTRz5VxVWDYgskS0Ju2I33FjErCoWrTt0QRECymTjhmhACBQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR02MB7812 X-Authority-Analysis: v=2.4 cv=Mq5iLWae c=1 sm=1 tr=0 ts=6a228c27 cx=c_pps a=fJIB0T+C2yAfE4P2TQxPqg==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=1L6crL_YRTbalZ11mEUO:22 a=64Cc0HZtAAAA:8 a=JslzhcA6x4sdzHi93S0A:9 X-Proofpoint-ORIG-GUID: ve3TnaxrUIkuPMndQ4NmHs0BMzz8TcdC X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MiBTYWx0ZWRfX9eKUYpXcezmo HZuHuXc5d+iFlSxYyaFY5A7gz9U1Dct3ymHtmxbsbF2fyqv/crlXCeqOSBSG8aegwnqvwGdD/JU 0emVC6eA7PBjQazm4MnenUx3OMGRwmz1AY9NLKf+hBRVY1qUMtQZv9VTZkJ8QjUGph1IsBpgWa3 hbsLuIN8Ul0an5slLIh7fvrPwkstpuMVXEsl2N4mOggbgY9tHEZAEJ+uMRJL3je9HlFkCTUa+9P rG21N+DepTEVfBxMerym1fXS/t/dSEKmOshxU80vlvx90LSbmxJr1xJg6xvAfEU3wXMJA8fa3kg OPKX0DhOOa/swjctsHjmrB98R9eHGVjCu2zAzC0gXnG3Q7ASoV/OeEWBkdVfirqAF/XH3feAMn2 Kxx6fmxkwAbtg8aJGJvK+IoFJOM0krvJ1FxP6sOIeJtR8A7AMDu+2n01h8fRwM+Su2F4ZrBeGse D58I3JBM4u2lj/JD3OA== X-Proofpoint-GUID: ve3TnaxrUIkuPMndQ4NmHs0BMzz8TcdC X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.151.68; envelope-from=khushit.shah@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649358636158500 Content-Type: text/plain; charset="utf-8" All all properties defined in arm_cpu_props to the host model under CONFIG_KVM. Properties are processed in the order they appear in cmdline: for example, saying -cpu host,sve=3Doff,feat_SVE=3Don is same as saying -cpu host,sve=3Doff,sve=3Don. There is an exception for pauth, as it is backed by cpu->prop_pauth, doing -cpu host,pauth=3Don,hw_prop_APA/API/APA3=3D0 will lead to an error. And just doing hw_prop_APA/API/APA3/GPA/GPI=3D will not turn on pauth. Signed-off-by: Khushit Shah --- target/arm/cpu64.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c index 7fb3791643..0300f8677f 100644 --- a/target/arm/cpu64.c +++ b/target/arm/cpu64.c @@ -863,6 +863,7 @@ static void aarch64_host_initfn(Object *obj) kvm_arm_set_cpreg_mig_tolerances(cpu); kvm_arm_set_cpu_features_from_host(cpu); aarch64_add_sve_properties(obj); + arm_add_cpu_props(obj); #elif defined(CONFIG_HVF) hvf_arm_set_cpu_features_from_host(cpu); #elif defined(CONFIG_WHPX) --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649123; cv=pass; d=zohomail.com; s=zohoarc; b=KKdyVqAkf1leSIZpffayen3GkMK6sukPQ2/vNGjeiTBqVUW940QRgWQf/MIMJ0H/hFMe7KibiEiS1aAglf/gaWCTsmYlMz77EALdi0uJQoljN/qtbyQsEXxAudncSR/QbuNmGysbFSWE8xKu4hvL3KR498OsMMY48ZNttVoAPWM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649123; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=3XV4NJhUaCN3lq/M/9yTF1zQguCEScBbIL6DSfEj4r4=; b=M/C+WeaYAeHuifzdJFv5Kq/OP4ivmbwCzB6ho0JDqi462esyrC4pwUX2z8JU2Pc3OltlmUveJ6vca1mKXV7q9YRaSe1qzg3STcLQeXMQV4OqnpAOyaeYFM9DhiNWIhYpf0D54L9yNFHdk1GDUxlBAB4YD9+N9In35fwlhBvNNWY= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649123033736.6899201772518; Fri, 5 Jun 2026 01:45:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQAP-00072l-0g; Fri, 05 Jun 2026 04:44:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQAM-0006r1-25; Fri, 05 Jun 2026 04:44:34 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQAJ-0002ts-9g; Fri, 05 Jun 2026 04:44:33 -0400 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 6556OdLT854749; Fri, 5 Jun 2026 01:43:16 -0700 Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11021094.outbound.protection.outlook.com [40.107.208.94]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejupdmnv4-10 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:16 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by CO6PR02MB7812.namprd02.prod.outlook.com (2603:10b6:303:a7::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:12 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:12 +0000 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=3XV4NJhUaCN3lq/M/9yTF1zQguCEScBbIL6DSfEj4 r4=; b=vA0L2G4mdF2T6UFpoMMWB24+x71XXQv+vBpWhgWOqIJgY8CW71QlD1g9c YtUfVcK3PEqgKNR1/lDcoXqyhJYaRJHPUMTXC9UGttoF0toUzdhj5LPdv+951s7U T6LPm6ZsCscQttDPM/UWKeWIzgwnM0m03m43dvWgQyMr3S4r8syvLaPlSmrBizbB EZ373tBWMWVEanZtqUhrCyk1fRzAihAaEFX32tma+dFfeZLPglh4v7/+eWbKOHSB KlAZ+7rbsXa5rgL2LiAA1hUPM1svyxxPAnKsbMvkP6xmB3V8Lk8Oq+4EORE7+RSj nTfgNHXBvX06vjTpC1dHlYEguL86Q== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PszZPpUD9QFlGdi540OohHpeT7HEu5aB2eQc6A+xrZXoN5jT2GbIHTZyWxoe/CVlzaxzB0q3WmPBj/AgZWQloFOBJeEBp1UXRCgNP4pxvR0jmak7GYK6gwlUsyfGhywImlkNe+lCYbPx9JH9NJumEnFxuT5/o1NUYtdH0D43JXs5yikSLPu4xdCzuYfqxGVMY2Cl3RPrf2ikdG4PbxsV2SCuCq06TvHFppBKTEo8Reg08kkSH2nHyjE50SDXHEPs/trnNtnZvmxweCgx0i/eIGk9LCDT3bEqeH+QlGpjRDDSIh3nNxIWws2xyg7OnzTS/2eAAYuMdDbjVxqRO6tJkQ== 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=3XV4NJhUaCN3lq/M/9yTF1zQguCEScBbIL6DSfEj4r4=; b=quVjOptrGNMiC45hqahUGdvJo33o9051ydo0rpvSxSlY9ztyjxjWedub40CS3tMiIeGGePzXb6YSb4wDNhHNcVYYV4lRSICm4nH+5STXhslVlreacMnwk0Q0tzFHVzb85nWv7cB2LdL1Lpr16Ng3KIrAwdlAS4FbA60G76k+exxbbB5EX6Eb3endofqHuQii6Uh5d4vieIS/vessyESczqEWCx00wlYtDvZ51dM67LbJ/w9P+TbGdi+T58C35qHk+mhxf6O7LX8TIaJXghBkI2Juq5PnPrUhF1T8BMd/AOmT7bxjznepfajYPS50BggqO/mhfr9ems8xoKraD1zoVw== 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=3XV4NJhUaCN3lq/M/9yTF1zQguCEScBbIL6DSfEj4r4=; b=d62z9RPnr8jxqVMFZHz50LcaVeTrCKVbDPjM4O71SQ8zMZ6in0wjDQIgOB/uCBISbKbt2KPa3Usy6UUpQrIUTsggg9+SJ/zr5bQen8aKPw2GUlgQlKpWY2YUTDd6fVB8/b2+Dl823h/mZQaACTctxWfQ+zeJwi4EIZ0CxSo0e2DXtIUq2whjXbhzf6ZrjsyFz1YTY41DW5TM64l29pdi5mpYQj+jm1x/dqMiFKFQd1oWJKrtyBXEkmqGyknUPcsef90vh6NqG0R5JDhycZI+DBSp/65iA4Gk0E5COxXdcIqwj2NOo7B4zIq/vEE7atXL0dMbLSsHAVW55DCEmxAiFw== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 10/29] target/arm: Add named cpu model infra + graviton3 named model Date: Fri, 5 Jun 2026 08:33:39 +0000 Message-ID: <20260605083358.1320563-11-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|CO6PR02MB7812:EE_ X-MS-Office365-Filtering-Correlation-Id: cf7e11df-5fa7-4e56-e901-08dec2de7a51 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|7416014|366016|3023799007|6133799003|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: ZWprTfINRbOROLYCHi6yEOEC8rMqlI+Xe+6vQ48iPTJbfu97CPaWkaArRkLf/q9Vtvia/8bPw8ASe1m3XHpzL+EFPIndAZHAPndEqmaz5XEhA6kjuV9zvWBO9hUNeeZP37b5CPzMgV0VEVsbmb4yAQtR1CdpNXWKyjV5f2EcT5OpcpohXC8/prh3FDqPm8s7zf+12zkmMc5Rmm7i/yERNV+W/o4pkseOOeTqG6XHGszBk8B9L18bqaubhowrZuk8PcHuS5KyLzjMpi3d6UOoGnGT3RZ2q8t9gJmVnU/uERLg8MCAiN0D00DaGj8LPZ9TAx2tZForMI25W2QGf8KLf7hQbHyU0BNjhDwxRhELR/F2Ll5r36HHG4Fv4ZD3vaWBeeufGPL3IFwYnNZHupw3ONlXH0gjfGNEQouDpahjtFDXnCeBYYymwbrcoYi/uR2dquM4XEAMtPQfY6N/bfddNai4+jN2f0TzihSlDMNfLP9neyRTjXpEhYfiTF7YbdY/0MwY+6tZP13HcF8wz+I+YHoMQ8p5IwSXaptxaFfwR1zbmL2XPhl/TdmIEEGJLA57R/RX3gfi6rlrjnZN11ZWXda9/a5130seH8nlPo2U8xjRfYpD8jd86+O+otkdnUQwm2qufJOkP9oZJoCvQ1YggttgUYfiRExTt+WygFaxltVMEaFrl7tqKFhH7Z35Ix3u X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(7416014)(366016)(3023799007)(6133799003)(56012099006)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2WbwkxGYnYI9Vlz4Dm2pNMLmKRo+hd+VNi/lqp/wNzQmcccbmGO6BeFBCHvn?= =?us-ascii?Q?eJkv40L2qkkc4zFVjRJT6ybc3yXn7diXV/yWkxFs/a5P3tPbNF6WlaGE6ZA4?= =?us-ascii?Q?iTiMr4CP95mlZyAXvZqkOf6z7kVh/kWk4DsL1AK/Sb1AxesOdf6GJn7gL1LP?= =?us-ascii?Q?6ssLZLOkYvqHVuQTQZcBlkUCrUXmw5Ibdqv/eu/32pBQvLFsK/5mV6noWxY5?= =?us-ascii?Q?FkqupzYRqC9itx3SIRaWpHGMKQsx0ygpkNydOCXYdPTQyywx3TwkfkdQUx32?= =?us-ascii?Q?lJlJag3R9qpprhLnlxle7zqqs31WT44hXmkhYIYcHiLqm9vRXMBKBJSQQmcF?= =?us-ascii?Q?S/5/JIdYBtZzAzo1l5sHQw/vXBEFcULH6hUvuY8kl3iaBLZf0pqc4v9JiKQR?= =?us-ascii?Q?P/rygD+sWbHvdWm3JugvpiFCMnvL4xf0A90DrzuSdwVCD4zmdgXg9jcsqI9H?= =?us-ascii?Q?1+rGthz1swvv0ZeNnrFJJxS5/5oPd1e6HJibOPq3C6iZVJ6ECpQ6kbZ3q65t?= =?us-ascii?Q?g4cKS6XFjeJJlf0fTEDcjk+2Tl7PYpXLZPJhn5KfVfoLLb2zwbX4W/cP8dYR?= =?us-ascii?Q?ku4D+iV64HkxjYZeahZmgNRE+AcWdN6M7LwlhhCKb/toB5xgmc8EFbadiA1U?= =?us-ascii?Q?w1N1uTsWq8oGiDECKkpHqCIGgkjRGw8+l9GnkxYjM8hrWjnPEEwLgf00tiKF?= =?us-ascii?Q?8pzBUPsYMLa/uNniXj4JfruvwX57Co2LtfkXrPUTl0J6308dzpz2gf3gaPnx?= =?us-ascii?Q?wtNinZhGhamvCPwp0uz0SPeHsuWoeU6Ja+NI+m1gnfudZiF96WOyVRJETSZa?= =?us-ascii?Q?vX+B5zq+aAC97Aj0jypsAJw47sxPTXPl82asHxrd6Ny0WJ0Z+nesrNl5snHq?= =?us-ascii?Q?8tiSoCjALZVEDktuDwim95bMVfNo5I0caY+9yPEiqNPO3D1tkl5UwSA/BQU5?= =?us-ascii?Q?xC8XJ3it/IVqWs5fo3EO9hL1Jaq1hcZlQkasdb/dsVJGgDHr3SKNsvU9CpMz?= =?us-ascii?Q?lEKzLX+aFBXM3bakuGoNfZl0/iom4wr9S5rQs54m0xNqued1zbSh4EMiuMSl?= =?us-ascii?Q?cMduX6VsNCAA3C5r9xb3JAzoymQzDoXM1gE8+YSEEtW9CPqjCWbTZKFPdEWB?= =?us-ascii?Q?atoKvmft0dPZQfGBGAK1bIAjFE7/v/Xke/L+Ds8Y/Z6DDk0O5sODB2z1z4RE?= =?us-ascii?Q?XuqSwctjvsSTGQkIljTuE5A91xbPXueqa8mPNDy/ic0Y9Y2Jq8KAsoGtYziG?= =?us-ascii?Q?RcdfGvyoaPGFGFbuVVCnCamLpFqR4ExkVQIcj5SyHgWE4B+eLzlHPebgmErG?= =?us-ascii?Q?KcYAGbWRsEHb5xC9MRCK86GFCsqWS/riKA3j9wUN4ZGJWmXCJYbM8ku5sETX?= =?us-ascii?Q?XWMASwiRqP/ifhesFqiqeH5xLlhRo7wEYaiS4X7PYnSwGzfT2dd+l0FkoGnS?= =?us-ascii?Q?FySCgFEIo/jcjN+EQ+6dXi0QHm9ovbNQDbq5KtVQ2e0mHDq+SjH0vhx/ikzR?= =?us-ascii?Q?VYhbceYyl5sjBiZGLpLiCgpyFp3Ot09k+W/CocFrmNQdMrL/t4uuOPrO5CGc?= =?us-ascii?Q?5FWaY7bjD9HMyNbtR+W7fR/3otspd5Czl1hdUX2UcX1v9O09ZcFxg8U71fTQ?= =?us-ascii?Q?MiFjdZqmLwQ7B0OBSsivSwDcAFhjW8NEb3y9kKYR6gVj4g4RiWBvLRGjiKKK?= =?us-ascii?Q?WqxEXbxFE4kUWQUExGvPOPHMD6byipmDI+EDL9WRASDuItxTzPUcYiDVyXMH?= =?us-ascii?Q?hlFmEJqU3LS+yQQCYcGCjF4mIWZi/vg=3D?= X-Exchange-RoutingPolicyChecked: fJqEtZsT7CErYiRH2dwjRC+m4VJeWCTHgP9b5qeKBaqX5Mwrfwz06QHcVp++kGpWEpAHnCuuekXZJ1cbIxdAMtyhQdoGHfBDtyq2CPJD4I+63LaVg/u/24H+FWB2/VfkdufNHSZgJug5BsLmI+5CtEDTidmS+dkqTl+EFi0CRZNljogILPeqacxHAOMi+akEuayX8j55Yl42HyPqJFs5RXdAfH/T1lp6bP5NnuHBtu2QHGiIV28Ps31+vJeAnEAZRRRz7WlYXGFrOzwym5t+gVuOaSZSwtDyVDI7oO/Az18GztEe0V2vh0FxvoIES1xO5LKqQ03l13/gt0+9DZuU3g== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: cf7e11df-5fa7-4e56-e901-08dec2de7a51 X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:12.5266 (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: S4ddGzPp42R/QwODi5DKQz+7yfg/VQgnsC8v6HJrNLnMY4B7Uc2hDUyw7/EGm845mO3V4vmcn0qeEniCSzhlWVIrXD4jFAA2EvBn3ZHhoxU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR02MB7812 X-Proofpoint-ORIG-GUID: -bxBD4Ex7GsTLDOWudcunRvA47acnKIb X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfXxZ1i+CWxchu1 9hIREnb8sMAmU56qek+AFwKIbcHsdagdhxB0ehrMOUxfdwVFuQLDjH/Cb4ATFAMAvY4BazbDz5H GhoBcQUsYEdvAnF9JGnDpCb1cdeKKwS/PXDV/qtTnqCvTETTOwyhtkcGxR3AlwabnAsVkz/Gr3q mbAyC1ZZWLSl3HSOGa9i02yWoSjfiL99/0qvmSM4oZVhhCy9aaJRnT2WcX1+fy5TM5klzm8lM26 Wr+7MY8CkyfmI6B0JF8102NYkNuVPGKY9+hkd2HN40nWrp+ZaGrZBDm4V6eduN3cTSIOsLOnwdk X53U6yxdxuTE/dVLAYZoURbuzCiuCpdNb6HZg9LUqS5iuDK+f04MUQ1jKuw+BTL5ar1ImOppCt7 DFDN/npHWlqYcL4fVHQ6Gy3R3VVNOQz8jRk/t7OQVTqOTP4qd6z8Im8ncjAxlpe51VH3VlmjJh+ 76VBrX/eqRhNGJ9LgUw== X-Proofpoint-GUID: -bxBD4Ex7GsTLDOWudcunRvA47acnKIb X-Authority-Analysis: v=2.4 cv=dYmwG3Xe c=1 sm=1 tr=0 ts=6a228c24 cx=c_pps a=Dy1/g0x6RHl9kMZQX3cATQ==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=y4UcunY2MAxhM4LwGdWI:22 a=64Cc0HZtAAAA:8 a=dlkhEnONpvMUmQseL1gA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.151.68; envelope-from=khushit.shah@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649123772158500 Content-Type: text/plain; charset="utf-8" From: Shaju Abraham Introduce a small named-CPU-model layer on top of the field-backed property infrastructure. Each model is a flat table of (name, value) overrides and a parent pointer. At instance-init, the parent chain is walked root-first and every level's properties are applied via QOM, so a child entry overrides its ancestors for the same name. For example, the graviton3-v1 named model hierarchy is: kvm-base-v1 KVM-imposed quirks (chain root) arm-v8_4-a-v1 ARMv8.4-A architectural mandate neoverse-v1-v1 Neoverse V1 graviton3-v1 AWS Graviton3 arm-v8_4-a-v1: Only features mandated by the ARM ARM. neoverse-v1-v1: Reference manual derived feature values for the reference core. Values differ from TRM values based on what was exposed to the guest with -cpu host. graviton3-v1: SoC integration choices (crypto pin, cache hints, PAuth alg). The model values are figured out from ID register dump visible to QEMU with -cpu host on Graviton3 machine. Model realization: 1. arm_idregs_reset_to_defaults: Reset cpu->isar.idregs[] to the default values. 2. Add all properties to the CPU Object 3. arm_realize_model_chain: Walk the parent chain from root first and apply all the properties. Realized model ID reg values will be written back to KVM in future patch. Co-authored-by: Khushit Shah Signed-off-by: Shaju Abraham Signed-off-by: Khushit Shah --- hw/arm/virt.c | 5 + target/arm/arm-cpu-models.c | 300 ++++++++++++++++++++++++++++++++++++ target/arm/arm-cpu-models.h | 35 +++++ target/arm/meson.build | 7 +- 4 files changed, 345 insertions(+), 2 deletions(-) create mode 100644 target/arm/arm-cpu-models.c create mode 100644 target/arm/arm-cpu-models.h diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 10b1954382..b8695b9286 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -4069,6 +4069,11 @@ static GPtrArray *virt_get_valid_cpu_types(const Mac= hineState *ms) g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("host"))); } } + if (kvm_enabled() && target_aarch64()) { + g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("arm-v8_4-a-v1"))); + g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("neoverse-v1-v1"))= ); + g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("graviton3-v1"))); + } g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("max"))); =20 return vct; diff --git a/target/arm/arm-cpu-models.c b/target/arm/arm-cpu-models.c new file mode 100644 index 0000000000..61d45619ba --- /dev/null +++ b/target/arm/arm-cpu-models.c @@ -0,0 +1,300 @@ +/* + * ARM named CPU model definitions. + * + * Each model is defined as an array of MODEL_PROP macro, listing only + * the properties that DIFFER from the parent model. + * + * At realisation the parent chain is walked root-first and + * every level's props are applied via QOM, so the leaf's values + * naturally override its ancestors. + * + * Hierarchy: + * + * kvm-base-v1 KVM-imposed quirks (chain root) + * arm-v8_4-a-v1 ARMv8.4-A architectural mandate + * neoverse-v1-v1 Neoverse V1 (TRM 102649) + * graviton3-v1 AWS Graviton3 + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "qemu/error-report.h" +#include "system/kvm.h" +#include "cpu.h" +#include "internals.h" +#include "kvm_arm.h" +#include "arm-cpu-models.h" +#include "arm-cpu-props.h" +#include "cpu-idregs.h" + +#define MODEL_PROP_FIELD_STR str +#define MODEL_PROP_FIELD_BOOL b +#define MODEL_PROP_FIELD_NUM num + +#define MODEL_PROP(_name, _type, _value) \ + { .name =3D (_name), .type =3D ARM_MODEL_PROP_##_type, \ + .u.MODEL_PROP_FIELD_##_type =3D (_value) } + +#define MODEL_PROP_END { .name =3D NULL } + +static const ArmModelPropValue kvm_base_v1_props[] =3D { + MODEL_PROP("el0_mode", STR, "aarch64"), + MODEL_PROP("el1_mode", STR, "aarch64"), + MODEL_PROP("el2_mode", STR, "off"), + MODEL_PROP("el3_mode", STR, "off"), + MODEL_PROP("feat_AMU", STR, "off"), + MODEL_PROP("feat_MPAM", STR, "0.0"), + MODEL_PROP("feat_NV", STR, "0.0"), + MODEL_PROP("feat_MTE_FRAC", STR, "async"), + MODEL_PROP("hw_prop_CCIDX", STR, "32"), + + MODEL_PROP_END, +}; + +static const ArmModelPropValue armv8_4_a_v1_props[] =3D { + MODEL_PROP("feat_CRC32", STR, "on"), + MODEL_PROP("feat_ATOMIC", STR, "on"), + MODEL_PROP("feat_HPDS", STR, "on"), + MODEL_PROP("feat_LO", STR, "on"), + + MODEL_PROP("feat_DPB", STR, "on"), + MODEL_PROP("feat_RAS", STR, "1.0"), + MODEL_PROP("feat_PAN", STR, "pan2"), + MODEL_PROP("feat_UAO", STR, "on"), + MODEL_PROP("feat_CNP", STR, "on"), + MODEL_PROP("feat_IESB", STR, "on"), + + MODEL_PROP("feat_DIT", STR, "on"), + MODEL_PROP("feat_DBG", STR, "v8p4"), + MODEL_PROP("feat_PMU", STR, "v3p4"), + MODEL_PROP("feat_TS", STR, "flagm"), + MODEL_PROP("feat_LRCPC", STR, "lrcpc2"), + MODEL_PROP("feat_AT", STR, "on"), + MODEL_PROP("hw_prop_IDS", STR, "0x18"), + + MODEL_PROP_END, +}; + +static const ArmModelPropValue neoverse_v1_v1_props[] =3D { + MODEL_PROP("cpu_implementer", NUM, 0x41), + MODEL_PROP("cpu_variant", NUM, 0x1), + MODEL_PROP("cpu_architecture", NUM, 0xF), + MODEL_PROP("cpu_partnum", NUM, 0xD40), + MODEL_PROP("cpu_revision", NUM, 0x1), + + MODEL_PROP("hw_prop_BRPS", NUM, 0x5), + MODEL_PROP("hw_prop_WRPs", NUM, 0x3), + MODEL_PROP("hw_prop_CTX_CMPs", NUM, 0x1), + MODEL_PROP("feat_DoubleLock", STR, "off"), + + MODEL_PROP("feat_RDM", STR, "on"), + MODEL_PROP("feat_DP", STR, "on"), + MODEL_PROP("feat_FHM", STR, "on"), + + MODEL_PROP("feat_DPB", STR, "dpb2"), + MODEL_PROP("feat_JSCVT", STR, "on"), + MODEL_PROP("feat_FCMA", STR, "on"), + MODEL_PROP("feat_BF16", STR, "on"), + MODEL_PROP("feat_DGH", STR, "on"), + MODEL_PROP("feat_I8MM", STR, "on"), + + MODEL_PROP("feat_FP", STR, "fp16"), + MODEL_PROP("feat_AdvSIMD", STR, "fp16"), + MODEL_PROP("feat_RAS", STR, "1.1_base"), + MODEL_PROP("feat_CSV2", STR, "1.0"), + MODEL_PROP("feat_CSV3", STR, "on"), + + MODEL_PROP("feat_SSBS", STR, "ssbs2"), + + MODEL_PROP("hw_prop_PARANGE", STR, "48"), + MODEL_PROP("hw_prop_ASIDBITS", STR, "16"), + MODEL_PROP("feat_BIGEND", STR, "on"), + MODEL_PROP("feat_SNSMEM", STR, "on"), + MODEL_PROP("hw_prop_TGRAN4", STR, "on"), + MODEL_PROP("hw_prop_TGRAN16", STR, "on"), + MODEL_PROP("hw_prop_TGRAN64", STR, "on"), + MODEL_PROP("hw_prop_TGRAN4_2", STR, "tgran4"), + MODEL_PROP("hw_prop_TGRAN16_2", STR, "tgran16"), + MODEL_PROP("hw_prop_TGRAN64_2", STR, "tgran64"), + + MODEL_PROP("feat_HAFDBS", STR, "dbm"), + MODEL_PROP("hw_prop_VMIDBITS", STR, "16"), + MODEL_PROP("feat_VH", STR, "on"), + MODEL_PROP("feat_HPDS", STR, "hpds2"), + MODEL_PROP("feat_XNX", STR, "on"), + MODEL_PROP("feat_SpecSEI", STR, "off"), + + MODEL_PROP("hw_prop_FWB", STR, "on"), + MODEL_PROP("feat_BBM", STR, "2"), + MODEL_PROP("feat_EVT", STR, "ttlbxs"), + + MODEL_PROP("feat_E2H0", STR, "on"), + + MODEL_PROP("hw_prop_IMInline", NUM, 4), + MODEL_PROP("hw_prop_L1IP", STR, "pipt"), + MODEL_PROP("hw_prop_DMInline", NUM, 4), + MODEL_PROP("hw_prop_ERG", NUM, 4), + MODEL_PROP("hw_prop_CWG", NUM, 4), + + MODEL_PROP("hw_prop_BS", NUM, 0x4), + + MODEL_PROP_END, +}; + +static const ArmModelPropValue graviton3_v1_props[] =3D { + MODEL_PROP("feat_AES", STR, "pmull"), + MODEL_PROP("feat_SHA1", STR, "on"), + MODEL_PROP("feat_SHA2", STR, "sha512"), + MODEL_PROP("feat_SHA3", STR, "on"), + MODEL_PROP("feat_SM3", STR, "on"), + MODEL_PROP("feat_SM4", STR, "on"), + MODEL_PROP("feat_RNDR", STR, "on"), + + MODEL_PROP("hw_prop_IDC", BOOL, true), + MODEL_PROP("hw_prop_DIC", BOOL, true), + + MODEL_PROP("cpu_revidr", NUM, 1), + + MODEL_PROP_END, +}; + +static const ArmNamedCpuModel arm_cpu_models[] =3D { + { + .name =3D "kvm-base-v1", + .parent =3D NULL, + .props =3D kvm_base_v1_props, + }, + { + .name =3D "arm-v8_4-a-v1", + .parent =3D "kvm-base-v1", + .props =3D armv8_4_a_v1_props, + }, + { + .name =3D "neoverse-v1-v1", + .parent =3D "arm-v8_4-a-v1", + .props =3D neoverse_v1_v1_props, + }, + { + .name =3D "graviton3-v1", + .parent =3D "neoverse-v1-v1", + .props =3D graviton3_v1_props, + }, +}; + +static ARMCPUInfo arm_named_cpu_infos[ARRAY_SIZE(arm_cpu_models)]; +static const ArmNamedCpuModel *arm_find_model(const char *name) +{ + size_t i; + for (i =3D 0; i < ARRAY_SIZE(arm_cpu_models); i++) { + if (g_str_equal(arm_cpu_models[i].name, name)) { + return &arm_cpu_models[i]; + } + } + return NULL; +} + +static void arm_apply_model_props(Object *obj, const ArmModelPropValue *pr= ops, + Error **errp) +{ + const ArmModelPropValue *pv; + ERRP_GUARD(); + + for (pv =3D props; pv->name; pv++) { + switch (pv->type) { + case ARM_MODEL_PROP_STR: + object_property_set_str(obj, pv->name, pv->u.str, errp); + break; + case ARM_MODEL_PROP_BOOL: + object_property_set_bool(obj, pv->name, pv->u.b, errp); + break; + case ARM_MODEL_PROP_NUM: + object_property_set_uint(obj, pv->name, pv->u.num, errp); + break; + default: + g_assert_not_reached(); + } + if (*errp) { + error_prepend(errp, "property '%s': ", pv->name); + return; + } + } +} + +static void arm_realize_model_chain(Object *obj, const ArmNamedCpuModel *m= odel, + Error **errp) +{ + const ArmNamedCpuModel *cur, *parent; + const ArmNamedCpuModel *chain[ARRAY_SIZE(arm_cpu_models)]; + size_t depth =3D 0; + for (cur =3D model; cur; ) { + if (depth >=3D ARRAY_SIZE(chain)) { + error_setg(errp, "model '%s': parent chain too deep " + "(possible cycle)", model->name); + return; + } + chain[depth++] =3D cur; + + if (!cur->parent) { + break; + } + parent =3D arm_find_model(cur->parent); + if (!parent) { + error_setg(errp, "model '%s': unknown parent '%s'", + cur->name, cur->parent); + return; + } + cur =3D parent; + } + + while (depth--) { + arm_apply_model_props(obj, chain[depth]->props, errp); + if (*errp) { + return; + } + } +} + +static void arm_named_cpu_initfn(Object *obj) +{ + ARMCPU *cpu =3D ARM_CPU(obj); + ARMCPUClass *acc =3D ARM_CPU_GET_CLASS(obj); + const ArmNamedCpuModel *model =3D arm_find_model(acc->info->name); + if (!model) { + error_report("'%s' CPU model entry not found)", + acc->info->name); + return; + } + + if (!kvm_enabled()) { + error_report("'%s' CPU model requires KVM (-accel kvm)", + acc->info->name); + return; + } + + kvm_arm_set_cpu_features_from_host(cpu); + if (!arm_feature(&cpu->env, ARM_FEATURE_AARCH64)) { + return; + } + + arm_idregs_reset_to_defaults(cpu); + + aarch64_add_sve_properties(obj); + aarch64_add_pauth_properties(obj); + arm_add_cpu_props(obj); + + arm_realize_model_chain(obj, model, &error_abort); +} + +void arm_register_named_cpu_models(void) +{ + size_t i; + for (i =3D 0; i < ARRAY_SIZE(arm_cpu_models); i++) { + arm_named_cpu_infos[i].name =3D arm_cpu_models[i].name; + arm_named_cpu_infos[i].initfn =3D arm_named_cpu_initfn; + arm_cpu_register(&arm_named_cpu_infos[i]); + } +} + +type_init(arm_register_named_cpu_models) diff --git a/target/arm/arm-cpu-models.h b/target/arm/arm-cpu-models.h new file mode 100644 index 0000000000..297926e167 --- /dev/null +++ b/target/arm/arm-cpu-models.h @@ -0,0 +1,35 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * ARM named CPU model definitions - public API. + */ +#ifndef ARM_CPU_MODELS_H +#define ARM_CPU_MODELS_H + +#include "qapi/error.h" +#include "qom/object.h" + +typedef enum ArmModelPropType { + ARM_MODEL_PROP_STR, + ARM_MODEL_PROP_BOOL, + ARM_MODEL_PROP_NUM, +} ArmModelPropType; + +typedef struct ArmModelPropValue { + const char *name; + ArmModelPropType type; + union { + bool b; + uint64_t num; + const char *str; + } u; +} ArmModelPropValue; + +typedef struct ArmNamedCpuModel { + const char *name; + const char *parent; + const ArmModelPropValue *props; +} ArmNamedCpuModel; + +void arm_register_named_cpu_models(void); + +#endif /* ARM_CPU_MODELS_H */ diff --git a/target/arm/meson.build b/target/arm/meson.build index ae1c55c802..a7638f8778 100644 --- a/target/arm/meson.build +++ b/target/arm/meson.build @@ -12,7 +12,8 @@ arm_ss.add(when: 'TARGET_AARCH64', if_true: files( 'cpu64.c', 'gdbstub64.c', 'cpu-idregs.c', - 'arm-cpu-props.c' + 'arm-cpu-props.c', + 'arm-cpu-models.c', )) =20 arm_common_ss.add(files( @@ -22,7 +23,9 @@ arm_common_ss.add(files( arm_common_system_ss.add(files( 'arm-qmp-cmds.c', )) -arm_system_ss.add(when: 'CONFIG_KVM', if_true: files('hyp_gdbstub.c', 'kvm= .c')) +arm_system_ss.add(when: 'CONFIG_KVM', + if_true: files('hyp_gdbstub.c', + 'kvm.c')) arm_system_ss.add(when: 'CONFIG_HVF', if_true: files('hyp_gdbstub.c')) =20 arm_user_ss.add(files('cpu.c')) --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649136; cv=pass; d=zohomail.com; s=zohoarc; b=LByBQ48v9V18eepaIj1EdqAdbZzxYQGyu/izdLDo+POOm7U/pyUEOgsxRM5nsdYGb8OYY8WjZQVYsO8lQRMglhLmpc+HHUhYbQZAFeHA/eoRHxC9pUual9nrr+LAhvzmfGf45YsPgMQAtXLDwBX3+ekywxMF7A0f6J6q95vihjc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649136; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XxWZDcbV2/n9deluDF/vXPbQh56+g294QkACTaKVS2g=; b=gB73G9wL6gBqCfYCYLhT1WknK72iTLOsyh12EPbg4yNM7qPdCTc3wuNKcOKLECnKarY9nOleM7ooF3oqWhmAOgy/u48WdPWDNmbE3AkLRzEzBZDszONxybW56xsCMK4N4/E8HeS57A2DqCycgSwkjO6Lr82SHcIJE4cIc2fOyYw= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649136761718.1001425483504; Fri, 5 Jun 2026 01:45:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQ9v-0006Ek-0G; Fri, 05 Jun 2026 04:44:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9s-0006CI-61; Fri, 05 Jun 2026 04:44:04 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9q-0002cC-0i; Fri, 05 Jun 2026 04:44:03 -0400 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 6556OdLU854749; Fri, 5 Jun 2026 01:43:17 -0700 Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11021094.outbound.protection.outlook.com [40.107.208.94]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejupdmnv4-11 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:16 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by CO6PR02MB7812.namprd02.prod.outlook.com (2603:10b6:303:a7::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:13 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:13 +0000 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=XxWZDcbV2/n9deluDF/vXPbQh56+g294QkACTaKVS 2g=; b=TAJDgy5C4yoJmYaK0Z1Wa1NbEjHWZ1jv/PhYOqJLd3BuylqE2SvDs9F/4 y2IuGkOSmrmg+QxjZSuhPXk9gtqaSryYzQHjQu9x1wO+ELdrSx/LK+F8Tx9nIk1z kyxcKLXuXWt5r0zNqRNsOgcG/ETSffaTuo0ZJuu/oglciSDz65/w7ubB8tSFoL8Z ptkFOgRd8C47BXcvwnvWNWb/Hd2XTZBpP9X0YRzKJBeUZZkPXD7I+X9pEkgC2yF7 o885dAjoImynje+jC2mZm410OETNMmzoVFRUY7QonS8o8SqyupMrnNqFnwzeUORY /RiACnn+mgkK6MRA+J9K1ZcQkU3wg== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Bjy5gA+DKzmmSJO91IeBEDF/bOOFDA8CFbJqbDmMKP5cVIcWFxaiNfkfkrA8eYS7BM//WUTEB5xvFTfn91UxcKrPyivnDs3flNU/jc49yECI+yBEX7HLCFTk/B9BSFcZgylGDLmTwnduMh1ecHAtl0GUQxbmAM1FF8kDn/oZGjuWdqFZS4W154ujhkmG0fjR7xv3v8KVMJh/ZY3GWnKl8TnZlkEeWh/MwNNzj90ON2ek61NmwLhlPLP+hlVruCK4/R2HjDLgIoiWnjzLegDUyLVgYk5wkE+PhA53Gmp0Hxy8fvXNhWu4SJAlgcd+Y//nhDWav/ckJJdIFwUkbzHy/w== 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=XxWZDcbV2/n9deluDF/vXPbQh56+g294QkACTaKVS2g=; b=UOFR0J2huP5n4HZRg8vhzy58LD5Osjn8gpcRabwBq41bNjJwihzboT2yR+bKEpNkRqoCRRriIeYRzi7A3SpQ1ZvRPybm56oxvFl78y0sLEg/n8NBuK7afd4fL11onKpzbbrViJ0u9moTC7pA4/yVpk1GwhM+JjIsavmHGfIGpZcw7Lfv0ZbXAo5UCg4fX8ednF13dSVo1AnEiGgv0YiLYeFmCUJnF/nuOBsYYg0+TD7yD8C5Om5sHkYooFBEvOsFBx5P/N1gVnTafcIV9WhWSEC7TAm1q7V+G8dYGXqv6trrkYOIW+M3q93lukLuh6aD5Mp+BzprKVYcNvXEU+B/Xw== 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=XxWZDcbV2/n9deluDF/vXPbQh56+g294QkACTaKVS2g=; b=Bpuc6QZX4LivIH8c5a875hN5ZYFZ/kLVmdTdvTrx5d6WkVsYbleEA6bQJY75976VH65GKHk5AJL9dvZtHLVmgUwbKrirVx4m7zPqPvdtf9/NmV87GQlPtsJPQz5FVTGw9Bs5B1lAqjJWKFgizjr5eTzkR8YSTMYDEhPO4p9ONA5dy+souPmLd2HxVxEMwmqBFwq68lAUJRUX74HZKZqbGC3Ab/3NZoINUIqZadm7zjecxJXYOxB2MrYDGca/c3Ct8vxxDZEmBXTvcAYUpm5tsApkg/nRD1V4bztMoIIDdWzg+bcchxsVPkNm6EFJv6zBYOLHxvfGxuu8+lMXeK/kvw== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 11/29] target/arm: Add Nvidia Grace named model Date: Fri, 5 Jun 2026 08:33:40 +0000 Message-ID: <20260605083358.1320563-12-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|CO6PR02MB7812:EE_ X-MS-Office365-Filtering-Correlation-Id: 91203486-b91c-42c1-c03b-08dec2de7a87 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|7416014|366016|6133799003|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: URmWVTFeSFq8BU58UYJDwM+JzY7m1bI/4dGlsXSPyLnxvmdl3Ex05uhw9D07zQ/F3Up1196IoZuwYrqnb21Yne7Jgnd7ZsbszRoWpjhoPkyGddkF5E+cvDQpSnF1skTQ3YAsNAlzRtZZMmxPrsFFOkZN8VDXYvIUJEHfIyxfuv1VxTkGNouAfMWxNmEx4gnpOOrK7XC7sqvL9RF5Xx4ifQXeDt9M4JWcB68pnI/yxZF82tvODMLXm6hRmZb12eWuGZwX5dC4E/Cko3tBG5bzvV/tRFfZEhyfD3ZTIKoUUls0Qk7WllUxJ0Y5PMqA43SjNpUyWqbLbgQV2ETBPbbA2uW+8kH1JZ4qTpoCR/83TYWRLc5XmMn2x5emYrklJ6kWBNZvOGkFlwxTjUDm5o1iDyDgRhkkhRiS/ansakUR7Ic3xlzUay7X38euVGvSS81ZTSgTVleop+g4VJCfGlupurv7G94rpYjtk8IWTa6tDGA00S/fehNt3VYANw0u4EZqQ2nng4mB7dQo2vYRzBEBfq/LcxwZy7MPad+nsiuNtZDJGo2WZJKlkvnaXd3TmIz3bTLm7cveSedSOM9LLCa9iAA0WnO3kvikDToAa7i8/jTYVM5uGoSsC8cqavMrBub4A9pLDMdNBN7m7yqNOL9ZZAvZppJkniTtyMa96VP2JD+lrQJx+u2B4Kvwjo3BQJBx X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(7416014)(366016)(6133799003)(56012099006)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?3AfAhLzsECQep7iw0IGfHDd1vG9OCDpcIrtV2hxCtvF0y099njtMOdYz/K1c?= =?us-ascii?Q?eZr0UA3Fx4Kc41IvG9zgai5AA8IhWeW+5iOmEGE5JUMDA4lh12piU3uC0K7X?= =?us-ascii?Q?4mv6dZ1tZve03AEFM9Ia8Fkk34hqFFCt/ImVeumP+JU3NaLx5n0ISIBqXn8o?= =?us-ascii?Q?fTAe8MGNtoPDrqP/oKStq1vDF57qQlTSk2fVmSLFxDpQopuUNfMpLQOVXQCj?= =?us-ascii?Q?Ecb9ioS9mydpZFYdGsdXLAMT8ry1cJx0qa+J3bqoqvN2/KuZ9JxvbDpEUC0y?= =?us-ascii?Q?2MiQhUoBlG0mcj5kFUrw2EmWe++uTcdjvtOclq+HoGwEO3NjldCPPPJWPkcr?= =?us-ascii?Q?v/A3cNXh5ULAaOaLsKlU1Y8Xqg2zQYozlwXiIFjvfvmUMgaGRitRHPYX18G2?= =?us-ascii?Q?3kKOdTPawAab99jJo1YeTZZialESz7F2XCMJnvOrvyKtpcfvk3YOoepJaJNS?= =?us-ascii?Q?o6PlfAZXzhf0r+uoLIDs9aaAp6UP7cSjr5qeCvHKCsOoMG69jAMoBHjHPSWT?= =?us-ascii?Q?Vbqrc94Ld3YoHq8lmCfOwC9oBrCkbV1SK8EF2aO2sj5de7Masr2aYkMdztf+?= =?us-ascii?Q?gJHvgq5WqiV8YfyGgkbC6hNMPjpKJukj2wOtw1gQrduWIsKTzREufqln+jE2?= =?us-ascii?Q?2nJJYSAiVkABkBTxQ1gR9wlRUoE/4x0DQy+nKr0M7nujk3SPGXGAIXeUWQ04?= =?us-ascii?Q?BE2mSMR5WBW64XiU4lshVm15wBC/ksaaZNCpXUIccXp2WEE2tpLXFj6hcI1M?= =?us-ascii?Q?cMP9oGKj0r1HKIPTAzTqnXOHT24zsx4WPyWyY1GmGnjvE2Eh/1Rl1ZkmdTzT?= =?us-ascii?Q?bKBvqVu9RGLSUEtxc0H+TVNfMGadPLZCLRxORofznAMbwLshO8lK5QI5+6om?= =?us-ascii?Q?CLYzfGRaX8Ny6TuXJZwpD6gp1qMvB+OB1Z/mKpJELrSzxzZWD5dWLX3L8Xq6?= =?us-ascii?Q?a1eeGdsag0jClRMJgWY0YyjJdO5vrQkweF6PoRYvDGh04TR+lxCplkanXUdE?= =?us-ascii?Q?/UTp9gnQmZCN2xqt6K7+9jXXKaFqSWs7BwGHxOSRLgNaXlELxRuChL4xoi+7?= =?us-ascii?Q?jUuZXyxDKeIaUd92IVb6ZD1mCumpfmYWXmvuZjTM7VFZ6amZyWaP+6Eb9wPu?= =?us-ascii?Q?FLuxMM3KXARup5C2Nz7KhWsYwVm8D2C2WHKdYCFHU3d/KSIG71/D2Bg3I0QW?= =?us-ascii?Q?z13v0v15igOgGkEqw5Lm/KjrntPiNcWqueGsTd5onjMhSWsP/uF8ANU1NiXU?= =?us-ascii?Q?qLfvm8v9EaOjGhBTXOifgD698pGOv5I4lp12lXieAsOkExApycrGqPh2vHhY?= =?us-ascii?Q?h4nc7ewi18GBQJNS05x+L8Sj+ES7cx9T4zpkzsaRNjSYY19Bl6CRdC+jqaE+?= =?us-ascii?Q?MoguuB0OMhTJ8O7p2gzoaT+V4mojcjRPdvitU+HbMFy0/2pmWBYC4OZrj7hR?= =?us-ascii?Q?rp8R8oZpjjXMYmlLl4DljbVXxxTxnUbtr7gUUtCfm6xBrMfjETRdMh3YWs0j?= =?us-ascii?Q?wXNKsboPgm5ACag6SV8sohWieeVls+UMTE2wstzonvxbUmmCqvTbYiKAVlql?= =?us-ascii?Q?bFiekTN4guzI1PoRAg9JMPh9oe1BF0nhU6GYS08ttwv1L+65W1McgvqDtWGZ?= =?us-ascii?Q?3BMTfsn2TDsGd4J0uLSCmc7s1tZdc4UBH2C2owYIqNZsy01H6zH+o9KUDJzP?= =?us-ascii?Q?UQPFRj2nQ5ijpQw1VNwTDWep5y39TKuKLqk+hMzoXZZuVkIukNtYDGhj2QAR?= =?us-ascii?Q?M3Nl61ZwLHhknPXXxnZPD6zZWKcO4L8=3D?= X-Exchange-RoutingPolicyChecked: a9DN1hEaWIyMgWnh/bIeDojYXMkbS06+jLczrrLZTNa835K/ARZfJ/AL4krHP18c6AkApN7cnFAYiBWB/4uScctCvnSZZH3eWzQN2n8ZEQG6L3A9fT9TIcIM9ihMhhbxPEQZkKupTZWfqSeUB0KXWJYjCmEptM+NkqijJDT31Q5xWdFnBswSb0mSloMUlxCYQbI0Y/v9T2xyEL1sUC04Q+gwttmfE45lyROoJG83uRze2vsWXG3KSnIXrZu2ucBcKnxZ9yh3Xpbu8GDTjhWMkGYIFdedzkfrRjPrv8lmx9seGSZSDFlNRZPZvjb5BV2a3yorKkfO7qPgh+sQTtePYA== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 91203486-b91c-42c1-c03b-08dec2de7a87 X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:12.8764 (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: lr7ZsgyEyf/YJLMM6P0I7RGLS1Gng1q0arcgwEY7LdlA8kyZu9d8BbFUt6vIIt76ytTnzuBDcgOCvEA0g6p4TUnCgABMauIij9ePFLctHdE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR02MB7812 X-Proofpoint-ORIG-GUID: 0J-_GDmHD5c84JkWmZBjZfj4vKW6YvjS X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfX+RZeY/NflEAh /CvTLiH1ujqhehzGK/3LmEudvMUNFccGGizrRueV7tfqsViTe3YxyaoFxojI324naZJFNG1tKgF jbUZtrxB54oSx5pl8Hs3zXaXVYwyj4bspUUFxyRBVg7J9ZsGAjrdk5xKk2WDpw3wyErL68IjcTx WQRPHdNQZA4WlzdbQFZrvp7++U/lLd3GIXxjPOA0DC9+s9Y4r1NDHQvhSJkzKuVgsAYA0r5gOES lVHfqnCHWS/gdCJyDfhIDOCpIkWPEv71Z/ym1dFHWlltHnls4NeJkP/MmQKoC62YNE9yfnIVexF luOKv30X/aKEhrWUBkZIbS2m76yQmo8duNcBdeQQ539FeosxGDUmwqWKSkRZhYvRAVYs7xlPF+L SiN9XXT2Kkk4Qvc+tC7VenfjlHW3940KmOxAUMD2m1k5SXPHacioyxu3zht82xclR7+qnU7guH8 fW3FAO1ZHzf3c8cgU+Q== X-Proofpoint-GUID: 0J-_GDmHD5c84JkWmZBjZfj4vKW6YvjS X-Authority-Analysis: v=2.4 cv=dYmwG3Xe c=1 sm=1 tr=0 ts=6a228c24 cx=c_pps a=Dy1/g0x6RHl9kMZQX3cATQ==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=y4UcunY2MAxhM4LwGdWI:22 a=64Cc0HZtAAAA:8 a=iv8FjvXuBy_B0R5LKVcA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.151.68; envelope-from=khushit.shah@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649137948158500 Content-Type: text/plain; charset="utf-8" Add Nvidia Grace named model alongside its hierarchy (neoverse-v2, armv9-a) Field values were derived from the ID register view that KVM exposes to QEMU with -cpu host on an Nvidia Grace system. Signed-off-by: Khushit Shah --- hw/arm/virt.c | 3 + target/arm/arm-cpu-models.c | 132 +++++++++++++++++++++++++++++++++++- 2 files changed, 134 insertions(+), 1 deletion(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index b8695b9286..117033115d 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -4073,6 +4073,9 @@ static GPtrArray *virt_get_valid_cpu_types(const Mach= ineState *ms) g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("arm-v8_4-a-v1"))); g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("neoverse-v1-v1"))= ); g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("graviton3-v1"))); + g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("arm-v9_0-a-v1"))); + g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("neoverse-v2-v1"))= ); + g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("grace-v1"))); } g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("max"))); =20 diff --git a/target/arm/arm-cpu-models.c b/target/arm/arm-cpu-models.c index 61d45619ba..230768019c 100644 --- a/target/arm/arm-cpu-models.c +++ b/target/arm/arm-cpu-models.c @@ -14,7 +14,9 @@ * arm-v8_4-a-v1 ARMv8.4-A architectural mandate * neoverse-v1-v1 Neoverse V1 (TRM 102649) * graviton3-v1 AWS Graviton3 - * + * arm-v9_0-a-v1 ARMv9.0-A architectural deltas + * neoverse-v2-v1 Neoverse V2 (TRM 102375) + * grace-v1 NVIDIA Grace * SPDX-License-Identifier: GPL-2.0-or-later */ =20 @@ -160,6 +162,119 @@ static const ArmModelPropValue graviton3_v1_props[] = =3D { MODEL_PROP_END, }; =20 +static const ArmModelPropValue armv9_0_a_v1_props[] =3D { + MODEL_PROP("feat_BT", STR, "on"), + MODEL_PROP("feat_CSV2", STR, "1.0"), + MODEL_PROP("feat_CSV3", STR, "on"), + MODEL_PROP("feat_DPB", STR, "dpb2"), + MODEL_PROP("feat_E0PD", STR, "on"), + MODEL_PROP("feat_SB", STR, "on"), + MODEL_PROP("feat_SPECRES", STR, "on"), + MODEL_PROP("feat_SSBS", STR, "ssbs2"), + + MODEL_PROP("feat_DoubleLock", STR, "off"), + MODEL_PROP("feat_FP", STR, "on"), + MODEL_PROP("feat_AdvSIMD", STR, "on"), + MODEL_PROP("feat_TS", STR, "flagm2"), + MODEL_PROP("feat_FRINTTS", STR, "on"), + MODEL_PROP("feat_RDM", STR, "on"), + MODEL_PROP("feat_DP", STR, "on"), + MODEL_PROP("feat_FHM", STR, "on"), + MODEL_PROP("feat_FCMA", STR, "on"), + MODEL_PROP("feat_JSCVT", STR, "on"), + + MODEL_PROP("feat_SVE", STR, "on"), + MODEL_PROP("feat_SEL2", STR, "on"), + MODEL_PROP("feat_VH", STR, "on"), + MODEL_PROP("feat_XNX", STR, "on"), + + MODEL_PROP_END, +}; + + +static const ArmModelPropValue neoverse_v2_v1_props[] =3D { + MODEL_PROP("cpu_implementer", NUM, 0x41), + MODEL_PROP("cpu_variant", NUM, 0x0), + MODEL_PROP("cpu_architecture", NUM, 0xF), + MODEL_PROP("cpu_partnum", NUM, 0xD4F), + MODEL_PROP("cpu_revision", NUM, 0x2), + + MODEL_PROP("hw_prop_BRPS", NUM, 0x5), + MODEL_PROP("hw_prop_WRPs", NUM, 0x3), + MODEL_PROP("hw_prop_CTX_CMPs", NUM, 0x1), + MODEL_PROP("feat_PMU", STR, "v3p5"), + + MODEL_PROP("feat_TLB", STR, "range"), + + MODEL_PROP("feat_BF16", STR, "on"), + MODEL_PROP("feat_DGH", STR, "on"), + MODEL_PROP("feat_I8MM", STR, "on"), + + MODEL_PROP("feat_FP", STR, "fp16"), + MODEL_PROP("feat_AdvSIMD", STR, "fp16"), + MODEL_PROP("feat_RAS", STR, "1.1_base"), + + /* + * V2 silicon may report CSV2=3D2 (FEAT_CSV2_2) per TRM page 392, but + * KVM clamps the guest-visible limit to 1. + */ + MODEL_PROP("feat_CSV2", STR, "1.0"), + + MODEL_PROP("hw_prop_PARANGE", STR, "48"), + MODEL_PROP("hw_prop_ASIDBITS", STR, "16"), + MODEL_PROP("feat_BIGEND", STR, "on"), + MODEL_PROP("feat_SNSMEM", STR, "on"), + MODEL_PROP("hw_prop_TGRAN16", STR, "on"), + MODEL_PROP("hw_prop_TGRAN64", STR, "on"), + MODEL_PROP("hw_prop_TGRAN4", STR, "on"), + MODEL_PROP("hw_prop_TGRAN16_2", STR, "on"), + MODEL_PROP("hw_prop_TGRAN64_2", STR, "on"), + MODEL_PROP("hw_prop_TGRAN4_2", STR, "on"), + + MODEL_PROP("feat_HAFDBS", STR, "dbm"), + MODEL_PROP("hw_prop_VMIDBITS", STR, "16"), + MODEL_PROP("feat_HPDS", STR, "hpds2"), + MODEL_PROP("feat_PAN", STR, "pan3"), + MODEL_PROP("feat_ECBHB", STR, "off"), + MODEL_PROP("feat_SpecSEI", STR, "off"), + + MODEL_PROP("hw_prop_FWB", STR, "on"), + MODEL_PROP("hw_prop_ST", STR, "48_47"), + MODEL_PROP("feat_TTL", STR, "on"), + MODEL_PROP("feat_BBM", STR, "2"), + MODEL_PROP("feat_EVT", STR, "ttlbxs"), + MODEL_PROP("feat_E2H0", STR, "on"), + + MODEL_PROP("hw_prop_IMInline", NUM, 4), + MODEL_PROP("hw_prop_L1IP", STR, "pipt"), + MODEL_PROP("hw_prop_DMInline", NUM, 4), + MODEL_PROP("hw_prop_ERG", NUM, 4), + MODEL_PROP("hw_prop_CWG", NUM, 4), + + MODEL_PROP("hw_prop_BS", NUM, 0x4), + + MODEL_PROP_END, +}; + + +static const ArmModelPropValue grace_v1_props[] =3D { + MODEL_PROP("cpu_revision", NUM, 0x0), + + MODEL_PROP("feat_AES", STR, "pmull"), + MODEL_PROP("feat_SHA1", STR, "on"), + MODEL_PROP("feat_SHA2", STR, "sha512"), + MODEL_PROP("feat_SHA3", STR, "on"), + MODEL_PROP("feat_SM3", STR, "on"), + MODEL_PROP("feat_SM4", STR, "on"), + + MODEL_PROP("hw_prop_IDC", BOOL, true), + MODEL_PROP("hw_prop_DIC", BOOL, true), + + MODEL_PROP("cpu_revidr", NUM, 1), + + MODEL_PROP_END, +}; + static const ArmNamedCpuModel arm_cpu_models[] =3D { { .name =3D "kvm-base-v1", @@ -181,6 +296,21 @@ static const ArmNamedCpuModel arm_cpu_models[] =3D { .parent =3D "neoverse-v1-v1", .props =3D graviton3_v1_props, }, + { + .name =3D "arm-v9_0-a-v1", + .parent =3D "arm-v8_4-a-v1", + .props =3D armv9_0_a_v1_props, + }, + { + .name =3D "neoverse-v2-v1", + .parent =3D "arm-v9_0-a-v1", + .props =3D neoverse_v2_v1_props, + }, + { + .name =3D "grace-v1", + .parent =3D "neoverse-v2-v1", + .props =3D grace_v1_props, + }, }; =20 static ARMCPUInfo arm_named_cpu_infos[ARRAY_SIZE(arm_cpu_models)]; --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649087; cv=pass; d=zohomail.com; s=zohoarc; b=FxGlrwL8dQEira38b3fzYB1Y0t//Ngv/b62HQCBaGr9O6K5a4iFc7l+mWbLX2TIjYtT9IhYrEativ8fnHJNnwVpNziicutoEjv2nmhi8nXK3E0CI3YrXmFrh726bzhbcAnl87x3IgTLFYUhcxfCwOHuidaNca5CMLJTeQQ2xk0c= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649087; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1PIlUSyRyQbnqMIaxmvn+wIaL5DWKu+at5o6+pZktFA=; b=k2J02iprfmWJIvc55ZdcEjYsvpS9DUOn74OI8jMsV2Ai1yP6ggxyDHZL34KPmhoeMh1TSOGEtF8QHJ8AnxMxBXJWoSr2YetpPXPqW+VqYB2PQQFZCp1fjlDami5LUg5UCfb8m/x3nuDHa955/yecnY/il3i+V62rlc/DKF0Mzqs= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649087008916.0637978340889; Fri, 5 Jun 2026 01:44:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQ9i-00062O-Jy; Fri, 05 Jun 2026 04:43:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9e-0005yp-0J; Fri, 05 Jun 2026 04:43:50 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9b-0002Tp-GP; Fri, 05 Jun 2026 04:43:49 -0400 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 6556OdLV854749; Fri, 5 Jun 2026 01:43:18 -0700 Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11021094.outbound.protection.outlook.com [40.107.208.94]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejupdmnv4-12 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:17 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by CO6PR02MB7812.namprd02.prod.outlook.com (2603:10b6:303:a7::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:13 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:13 +0000 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=1PIlUSyRyQbnqMIaxmvn+wIaL5DWKu+at5o6+pZkt FA=; b=mATnUc11DzIjRhV3a8siZFKG/p79ZoNjQAG+fTK7S3I/+OFPbnNMnodxQ uA6FQuUjdaBfwA/haxAGApFXR1kRdNHq8mQUxhgJgefUvgqjSmXratttgAyRFUXC IUJXiq6ne4ZHZHxX3T0i8ND+l6NnCBJCUmpgdBkqZdYnl11G1r5sQetqcmgncn8R MeQDFC9WerkdCGC71eLQsds8P61jZCAm9pKeeDnweWfjKvdsZEuANdfsiBnyFHpa t1e8lDSaZlzyZ5ynUhJ9+ZpSLL0IauSl8tTCPzoRGsd4iE0RyBWlm+Th8ylwoY/L L5REN7jTdLJs25WNEsFNhxdJ3c0sQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hnL7LfVIuLwz3GFGcZItVRyIOLv8nedshm31oa7mkbX+r9j5l6lkMiC6yu7/3bDS0mYUyNTCE8Qmi0J9KZfNlIAM0soGrKp06D5esujnpBXgl/Phnv0hSDMWEGr51u/BH8dJamNKbnEEuLO0aB6q9YUkGNAe+D8AF4dywwXAY5nXgZl/SFcRBmFD/bMovq2vfsdRGeeGx458WLuEOx1NtKK0vu0LxTC0Nel1780n7lfQmOZ6GQvCyckZ0qGeFmjyCrctRJyNc19sncWD3v+yuXL7nN9/LYWRy3GDSgBHXtYT3EZOsnPap3lHmhczr2R+ErS/vl1n8YZBSQpsD7/tHA== 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=1PIlUSyRyQbnqMIaxmvn+wIaL5DWKu+at5o6+pZktFA=; b=AxImPM2ntOIo55XztkiyP2x9eFf2iMvqW6joqI0Fr71jubMm2M6O3xounqD84nynS07FK0erv0BshPAn0hfYy5zvNriNBiwEY1K2sctH0QMFHID/Cq7PLMO4MYxQ3KXrzHJzwmMKQa3puk0n7AM4UN9UPklWIrp6u3AXr3rd3nfs1BrSUV1BuzfhOlGAwECyslwhUUUSii4/b02pQZDSux3AC/PWJmSzLIR9vBz5JsPHube2nHpk9mSQlwqRBnq8EkP2TmHNQXjUASvrKee/d3XDUjuE3f85Uo4imoPCop5zp9aXQxLkMw1bMVXJqj4h2MMq2q8IWeS6rX1lEZo4vA== 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=1PIlUSyRyQbnqMIaxmvn+wIaL5DWKu+at5o6+pZktFA=; b=WZURjruBc+AtW/SHYDFLMhq3mWAceVtOmkKaLYekC3NAAhZI9Z84rncWJ9liAUFL6eK39VHLf/hrVMbwK8ULAhNC1F2ehupRMGuCkvqm9XAFuDCRlP6fIgcBzM9LN55kRyjxJz2HjjxvqHnbRxOP7wL+C8xY3hvZS39uQNKGmQRJ/rOAfam1/arB6wTvoCKGM4H1UQmyBAqNzF4vr6wUPq8s4mTl1bP43xJ9nQ8VuD3P3dC1UQMVmseILCa1i4JXSk5nDtgr+rLXdbVgn83CWp60YXwC3QGgZW5I0WbCwkMdlUF2d85ITS4kqhZfgQv2DUE/a9FG/cHkXWXHEhg99w== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 12/29] target/arm/kvm: Writeback modified ID registers to KVM Date: Fri, 5 Jun 2026 08:33:41 +0000 Message-ID: <20260605083358.1320563-13-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|CO6PR02MB7812:EE_ X-MS-Office365-Filtering-Correlation-Id: f7529985-e1ba-49b6-894a-08dec2de7abd x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|7416014|366016|3023799007|6133799003|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: /KY0Bn5hohR+GB84xpabSBIWE6MAy0D8NYygBNakSHu+xiR0qklAEYlEEe5iIbjpqTrPMiKg8YgC3INHFFoSANBgEo7vM+93iy/98Uhu0wVQvw/YUSj0GpnfZxYiou16d8FZ4sEl/0kjj9i75U+r25nQHpv5CWAUO1yRuDwrzgVHqj28o2QmrU9Huk1cj2i0m6KFJr2TD6PTt1L3+9XqQSCGXCcud+vQVqFOsIyzkDA04N++leMIb8EMHIJzMLMpfH/IQEOWDKgyRZR4dGCiR+zVfAw4AzIG7m7WwoBmQE9Pz1f7I9Kqy1TTx+4qmVzkwTNgb8TK6EDtBDtLtANbo24nx4nOGx+spaOpAMk8bNrnulxN94dDUL5GXadbJhUBI3Nth/WUvJdwrawuOsRlabLRBZRjSlZprPC4G/m1bQm+q6hK+w5lqJbx43XDF5B1xrSKritSYOSqm11MyrcpzqMEZcUOksAOouYOIYY3nQ9j3wLKBLCi+mgcnTWAIXFozQWquDHQsafTq2Vwfk3A9w6oTrpKwHURW9Sh94/3xu/jdNfU/DFip3kCZUDpWLnKiHKtsEMz5KdonM4M/Dk/0E6wLLgysPE4hKMyFn38b4bYLBXeZEHie73qidZJZmmdHWZhe07ovTxLabL9pcdqjpGSGiQGWGSia2Gz6hFfycx32xEHMO92G69CDQ7nU4cY X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(7416014)(366016)(3023799007)(6133799003)(56012099006)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Oi6lRsAk8kKyk/Sb1z4OrM7nd73+Ew7RjqhXiByJaODWPHaQ/ZYo0ssZ3tz5?= =?us-ascii?Q?zsxJ2JD0RNjByO8s7bFzNzVoCi38QzKaSteOpKfMdP+6zhV6HDDij8gsqAvq?= =?us-ascii?Q?Z7p6a1f95qu19+YOYt9aR9zYRI7mpJI8RGmrJXxO7TzH9gIWv/KUad8kwlxL?= =?us-ascii?Q?d54MXJR+F9Th6in416OTslMOrY4OFyf1p9UOzvBXpuaeukY0Uw76NrIRCmj4?= =?us-ascii?Q?UPiYKnldfZD+C6yAtFz9XTK7gVkGPz9Q4puvCCImyRHZdfMzKAJXlqS6J1cV?= =?us-ascii?Q?kiFJ7o2qLtuNf5OReSKRsaNGr+DmG+fmkZ2hYjUYGdvgB0+RE5kFLIt5QRWo?= =?us-ascii?Q?wC4oCUKRhbE8qZ1h4vxLbKz+qrPtLjrbckfVzHxqPJtfujxtgmzUcEOvHTz9?= =?us-ascii?Q?uRFitRwWviCHe//pl6ayE70NxEOeFuCsDWL7Xujk9HeYXgrf9JmpitRuchXk?= =?us-ascii?Q?aOrkXr+wDvPMKZaUz0fNrtp5hF90bsWHq49+hPK+/n1T7pd1Yvqs/iC4gp2X?= =?us-ascii?Q?pzjjB6pf+NRp7j2sq/Lbuw0pCtTxkgRsiL3i/Cxyh5K0gWf4Syg4qeCcamH9?= =?us-ascii?Q?iu9/fOs11W8bgiNnredUW86I4lUZZ4NJtooX6ulFYHOGUNgHJI65NT+oRbF+?= =?us-ascii?Q?2Av1pCY7mqvIZTKCyOyPBu26w5KJzNkHx7xvCPQZZNEGTCa91zul3udPlTLo?= =?us-ascii?Q?H0BS5SI9BsK9yn9TbOGOI8OCWI9/o8BZAVQUPbT2Y9HSKsHKlNeKpkLIyNJl?= =?us-ascii?Q?s4pCyxu1aj6QVncpRNZkRxNj7Fb0f+jk9UbIeG0x80KC5fN/hcvGtgvnnYe3?= =?us-ascii?Q?fnOGdDMCJgiPVXVtc1YAHvb4vTcNz7UReSdQXbu3IlW9sVTi4/sx6XdQm8zQ?= =?us-ascii?Q?PBKSD8LRAGoDQM9XAUKlkxcNTfEfgZjTS3QIfLvWixezSYBH7fvRK3ykMrx7?= =?us-ascii?Q?3YwDWlOUFBfUgqQDazVqdrg3J3LJWM3hi6NtnW9BSuOmOezHPgQTQqC3vzoy?= =?us-ascii?Q?uLZ13+t0KwcznNytkSdKC3mmiFeWUd71CjYtHfDqfn4Cn4yMzCy6siGbU+G+?= =?us-ascii?Q?EFxKPl43EzZmLMwBFt325jd9OAg5GKgFfJU/2eXGGhEXDc7h8tnCQCu9pXUs?= =?us-ascii?Q?0uYo07QFQoB/2nltYneGbm2UaAm19ZJlUOFrSmo1idf0oGhpeNm8FqsqxDs3?= =?us-ascii?Q?QzWXRXLA08SkAhXuybrYP/xNLrMFKTliclFXhUil151xWiJSsyJZvR8tRxLS?= =?us-ascii?Q?DUBvIW9RcKfLt2TZt8bFMUYMnZZJlPAWbgCPta1pkmgKjrEfy0u3Bb+2R7ra?= =?us-ascii?Q?PEbtLWIbuVi9EYWNlJTSyHatoDzUxUQEVpsopy5IEBEB+6DnQIGfSojB/Z6R?= =?us-ascii?Q?Ra6VD7i9kCh4oDkMWo7cGLTZR1/fY5EE8rD7oSSo8WDuuS1KB09EVCiBgFS9?= =?us-ascii?Q?6ACHuGYOu1sPISm4WN7ZBJ5zXtxRk+f/+p4O0i3avGq9AQtFk4uVzNbB/JRL?= =?us-ascii?Q?ksR80QPfuMrjxvXJEIMXGcoPkhNc1bMfn7UiLpGiqNCphE7v82gC40uOKi9E?= =?us-ascii?Q?nT8w17NuS7Z/dBUZfXnLOmmR6Fv7KkIwVRQ7TlPNMBBkijjeW0j+behGp6dl?= =?us-ascii?Q?eZcqoV0ooGA91YCRB+BHB26xWPHEzDXj1sj6jjkTAJLqOHmTnylmkY3leuf3?= =?us-ascii?Q?XTrdpEqSzJWFOEdRCwOETYhDXda9MPyp8y+ZkhwEE70ShsNk6k3MBH0JJ2qq?= =?us-ascii?Q?rgnPBrgQUlVb3LCiHrWeMvLDmolGouU=3D?= X-Exchange-RoutingPolicyChecked: AZDNZMS//6BG3ylUpRhczKjU71u4Kgb2KR30RD1Y8aYQ9eBJ4JowflJZk53gTQNB4LD9xbPm/l2Zh5kWChkGHGExMnnccdmyl604dNDtjh536JCWZLJOJaBb+PqLDJd1V4klyCcI/xTJMs22x8+j9HFt7OiW9uuqKOy0vbUt0PmbQozWhWJP3T4HxC/rk56FZWtpUmF2uLchMXT0nHTQIEWQTvTmJE9XhLxbrc5bCLyVKpVvgH1MlQkQc8j4jQLth0vkdVQM1M7lK3MFbwvp5zUy9kt0S4qIia/DNlmFVwnl2hJjaYqETya+Fg58bWXK2uGGrjrgR35UOXuZcUHMew== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: f7529985-e1ba-49b6-894a-08dec2de7abd X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:13.2466 (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: +8YUlpt7rXMS8JjiYqCdE8xuPe4gdzpHT4Fwev6f2ed6asxv+xpLzvv2LnOfEEBNTv0m2NPUYBukzPV6CPoQYi/Itg9aCh+MAHNQHrMwOKM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR02MB7812 X-Proofpoint-ORIG-GUID: eokLnURUXjhavsveopOjz59dKiCPjHCk X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfXzH02XDBOmqKK qMnUMsR7uDPHoBJtx/6TrTdw7iO0Gr5UfMoXJnRW4Wv+eJwxr081mjGRcb3SPHQMbcaEz35x8r2 gfmEimgU6JhDPA40CnO0csbOwD1gk9gMWAQ1vIrx7AvjIMMPlNn6Gspn8aBfNddvSYmblOEdoa1 u/fIJwqPp1/ss8C82f84Az2UG9TOnHam2Kr36HyMouMU/S9oc8U++MV1fXvn4asHBz8silMsHNl jX0DrfXIzQOVbaIAkDRnKkvQzmsKk2bprYop8VEOVYpORDR4NSPmF/4zYmQPDGAhCXPS6C60Nbf z8I23P/WwpnGyyorOfOegLdnivC1T+WGB76jXyb3i9WyNnjJQLLL8Itt/8SgVpDWZWCnhzRuKqI zL5gPk20VIxYChkSp9ZCeo8hOEBBHnsGBA+t9K1nT9VoiuPP9c1hp90DirQyeOPabxEaUG5pLGC Tc+NnvVFUv9kgYtY44A== X-Proofpoint-GUID: eokLnURUXjhavsveopOjz59dKiCPjHCk X-Authority-Analysis: v=2.4 cv=dYmwG3Xe c=1 sm=1 tr=0 ts=6a228c25 cx=c_pps a=Dy1/g0x6RHl9kMZQX3cATQ==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=y4UcunY2MAxhM4LwGdWI:22 a=64Cc0HZtAAAA:8 a=4gZVCyc41vjegMDvRH0A:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.151.68; envelope-from=khushit.shah@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649088564154100 Content-Type: text/plain; charset="utf-8" From: Shaju Abraham After named CPU model is realized or host model is customized, writeback the resulting cpu->isar.idregs[] back to KVM. Warns if any non-writable bits differ. For this: - Fetch and maintain writable mask per ID register during scratch vCPU creation. - Try to read all ID registers values, so we don't writeback any stale value to KVM for -cpu host. Co-authored-by: Khushit Shah Signed-off-by: Shaju Abraham Signed-off-by: Khushit Shah --- target/arm/cpu-idregs.c | 1 + target/arm/cpu-idregs.h | 1 + target/arm/kvm.c | 160 +++++++++++++++++++++++++++++++++++++++- target/arm/trace-events | 1 + 4 files changed, 162 insertions(+), 1 deletion(-) diff --git a/target/arm/cpu-idregs.c b/target/arm/cpu-idregs.c index ee6165622a..591ca54e39 100644 --- a/target/arm/cpu-idregs.c +++ b/target/arm/cpu-idregs.c @@ -72,6 +72,7 @@ .name =3D #reg, \ .fields =3D reg##_fields, \ .fields_count =3D ARRAY_SIZE(reg##_fields), \ + .writable_mask =3D 0, \ }, =20 ArmIdReg arm_idregs[NUM_ID_IDX] =3D { diff --git a/target/arm/cpu-idregs.h b/target/arm/cpu-idregs.h index 01d1b8f797..1389005099 100644 --- a/target/arm/cpu-idregs.h +++ b/target/arm/cpu-idregs.h @@ -71,6 +71,7 @@ typedef struct ArmIdReg { const char *name; struct ArmIdRegField *fields; uint32_t fields_count; + uint64_t writable_mask; } ArmIdReg; =20 extern ArmIdReg arm_idregs[NUM_ID_IDX]; diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 7d194ea112..dc64cfbeb6 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -28,6 +28,7 @@ #include "kvm_arm.h" #include "cpu.h" #include "cpu-sysregs.h" +#include "cpu-idregs.h" #include "trace.h" #include "internals.h" #include "hw/pci/pci.h" @@ -66,6 +67,12 @@ typedef struct ARMHostCPUFeatures { =20 static ARMHostCPUFeatures arm_host_cpu_features; =20 +#define DEF(NAME, OP0, OP1, CRN, CRM, OP2) [NAME##_IDX] =3D #NAME, +const char * const sysreg_names[NUM_ID_IDX] =3D { +#include "cpu-sysregs.h.inc" +}; +#undef DEF + /** * kvm_arm_vcpu_init: * @cpu: ARMCPU @@ -244,6 +251,63 @@ static int get_host_cpu_reg(int fd, ARMHostCPUFeatures= *ahcf, return ret; } =20 +static int get_host_cpu_idregs_all(int fd, ARMHostCPUFeatures *ahcf) +{ + int err =3D 0, i; + for (i =3D 0; i < NUM_ID_IDX; i++) { + /* Skip registers whose plumbing is not yet added. */ + if (!arm_idregs[i].name) { + continue; + } + + err |=3D get_host_cpu_reg(fd, ahcf, i); + } + return err; +} + +static int idregs_idx_to_kvm_idx(ARMIDRegisterIdx idx) +{ + ARMSysRegs sysreg =3D id_register_sysreg[idx]; + + return KVM_ARM_FEATURE_ID_RANGE_IDX( + (sysreg >> CP_REG_ARM64_SYSREG_OP0_SHIFT) & 0x3, + (sysreg >> CP_REG_ARM64_SYSREG_OP1_SHIFT) & 0x7, + (sysreg >> CP_REG_ARM64_SYSREG_CRN_SHIFT) & 0xf, + (sysreg >> CP_REG_ARM64_SYSREG_CRM_SHIFT) & 0xf, + (sysreg >> CP_REG_ARM64_SYSREG_OP2_SHIFT) & 0x7); +} + +static int get_writable_id_regs(int vmfd) +{ + int cap, ret, i; + uint64_t regs[KVM_ARM_FEATURE_ID_RANGE_SIZE] =3D { 0 }; + struct reg_mask_range range =3D { + .addr =3D (uint64_t)(uintptr_t)regs, + .range =3D KVM_ARM_FEATURE_ID_RANGE, + }; + + cap =3D ioctl(vmfd, KVM_CHECK_EXTENSION, + KVM_CAP_ARM_SUPPORTED_REG_MASK_RANGES); + if (cap <=3D 0 || !(cap & (1 << KVM_ARM_FEATURE_ID_RANGE))) { + return -ENOSYS; + } + + ret =3D ioctl(vmfd, KVM_ARM_GET_REG_WRITABLE_MASKS, &range); + if (ret) { + return -errno; + } + + for (i =3D 0; i < NUM_ID_IDX; i++) { + int kidx =3D idregs_idx_to_kvm_idx(i); + + if (kidx < 0 || kidx >=3D KVM_ARM_FEATURE_ID_RANGE_SIZE) { + continue; + } + arm_idregs[i].writable_mask =3D regs[kidx]; + } + return 0; +} + static uint32_t kvm_arm_sve_get_vls(int fd) { uint64_t vls[KVM_ARM64_SVE_VLS_WORDS]; @@ -455,6 +519,22 @@ static void kvm_arm_get_host_cpu_features(ARMHostCPUFe= atures *ahcf) arm_host_cpu_features.sve_vq_supported =3D kvm_arm_sve_get_vls= (fd); } } + /* + * Try to read all the ID registers. KVM does not yet support it + * for all registers, hence ignore the errors. + */ + get_host_cpu_idregs_all(fd, ahcf); + + { + int wret =3D get_writable_id_regs(fdarray[1]); + if (wret) { + warn_report("KVM_ARM_GET_REG_WRITABLE_MASKS" + "%s: %s", + wret =3D=3D -ENOSYS ? " unsupported" + : " failed", + strerror(-wret)); + } + } =20 kvm_arm_destroy_scratch_host_vcpu(fdarray); =20 @@ -1080,6 +1160,71 @@ void kvm_arm_cpu_pre_save(ARMCPU *cpu) } } =20 +/* same as kvm_arm_get_cpreg_ptr() but can return NULL. */ +static uint64_t *kvm_arm_find_cpreg_ptr(ARMCPU *cpu, uint64_t regidx) +{ + uint64_t *res; + + res =3D bsearch(®idx, cpu->cpreg_indexes, cpu->cpreg_array_len, + sizeof(uint64_t), compare_u64); + if (!res) { + return NULL; + } + return &cpu->cpreg_values[res - cpu->cpreg_indexes]; +} + +static void kvm_arm_writeback_idregs(ARMCPU *cpu) +{ + for (int i =3D 0; i < NUM_ID_IDX; i++) { + uint64_t kvm_reg =3D idregs_sysreg_to_kvm_reg(id_register_sysreg[i= ]); + uint64_t *cpreg =3D kvm_arm_find_cpreg_ptr(cpu, kvm_reg); + const char *name =3D arm_idregs[i].name; + uint64_t writable_mask, previous, desired, diff; + + if (!cpreg) { + warn_report("KVM does not expose ID register slot %d " + "(kvm_reg=3D0x%" PRIx64 "), %s; skipping writeback= ", + i, kvm_reg, sysreg_names[i]); + continue; + } + + if (!name) { + /* No field table, don't push back. */ + warn_report("ID register slot %d " + "(kvm_reg=3D0x%" PRIx64 "), %s: " + "no field table in cpu-idregs.inc.h", + i, kvm_reg, sysreg_names[i]); + continue; + } + + writable_mask =3D arm_idregs[i].writable_mask; + previous =3D *cpreg; + desired =3D cpu->isar.idregs[i]; + diff =3D previous ^ desired; + + if (!diff) { + continue; + } + + if (diff & ~writable_mask) { + warn_report("%s: non-writable bits differ: " + "kvm=3D0x%016" PRIx64 + " desired=3D0x%016" PRIx64 + " diff=3D0x%016" PRIx64 + " writable=3D0x%016" PRIx64, + name, previous, desired, + diff & ~writable_mask, + writable_mask); + } + + if (diff & writable_mask) { + *cpreg =3D (previous & ~writable_mask) | + (desired & writable_mask); + trace_kvm_arm_writeback_idreg(name, previous, *cpreg); + } + } +} + bool kvm_arm_cpu_post_load(ARMCPU *cpu) { if (!write_list_to_kvmstate(cpu, KVM_PUT_FULL_STATE)) { @@ -1116,6 +1261,10 @@ void kvm_arm_reset_vcpu(ARMCPU *cpu) fprintf(stderr, "write_kvmstate_to_list failed\n"); abort(); } + + /* Re-apply named-model ID register overrides after KVM_ARM_VCPU_INIT.= */ + kvm_arm_writeback_idregs(cpu); + /* * Sync the reset values also into the CPUState. This is necessary * because the next thing we do will be a kvm_arch_put_registers() @@ -2051,7 +2200,16 @@ int kvm_arch_init_vcpu(CPUState *cs) } cpu->mp_affinity =3D mpidr & ARM64_AFFINITY_MASK; =20 - return kvm_arm_init_cpreg_list(cpu); + ret =3D kvm_arm_init_cpreg_list(cpu); + if (ret) { + return ret; + } + + /* Apply named-model ID register overrides on top of KVM's defaults. */ + kvm_arm_writeback_idregs(cpu); + write_list_to_kvmstate(cpu, KVM_PUT_FULL_STATE); + + return 0; } =20 int kvm_arch_destroy_vcpu(CPUState *cs) diff --git a/target/arm/trace-events b/target/arm/trace-events index 8502fb3265..975236b24f 100644 --- a/target/arm/trace-events +++ b/target/arm/trace-events @@ -13,6 +13,7 @@ arm_gt_update_irq(int timer, int irqstate) "gt_update_irq= : timer %d irqstate %d" =20 # kvm.c kvm_arm_fixup_msi_route(uint64_t iova, uint64_t gpa) "MSI iova =3D 0x%"PRI= x64" is translated into 0x%"PRIx64 +kvm_arm_writeback_idreg(const char *name, uint64_t previous, uint64_t desi= red) "%s overwrite 0x%"PRIx64" with 0x%"PRIx64 =20 # cpu.c arm_cpu_reset(uint64_t mp_aff) "cpu %" PRIu64 --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649306; cv=pass; d=zohomail.com; s=zohoarc; b=EhswFOMET3hsJUw4mTvV7sER5CV0K85i/ajJCkYi0fUCIk+OAz16cLTzsVm4x+ACu0Z3zKswtU5o7Nwqkqdl6D40nJVIfLPUSjetClZuTLJr1AD+IJf7W74y8nQMRR5E+SmS0xDSMo/5U7fG8tPDn0Bqgv3DlwiCD/q0zFTz+Hs= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649306; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OHSlXuT0J85xziwfgk6v9QonCha77xwYWCSG3uqBghk=; b=TKwKB6Mw7hfNZIBuW7xp2wItdEXioMZgO4XVDSlY1oXKT1GQZEK1lZ+hnPowenjnTfsyGNbx+vc7aE3qHLrecnz5WuJputrSLSEf1pCsd45krWpQ6Eej+DH154rUL++pvcnD2XbQIyUahJ91lg9nCrjTveKnIbLvz6H0U+71IbM= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178064930684898.59828079091085; Fri, 5 Jun 2026 01:48:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQ9q-00069p-94; Fri, 05 Jun 2026 04:44:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9n-00066j-7j; Fri, 05 Jun 2026 04:43:59 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9l-0002Zz-JA; Fri, 05 Jun 2026 04:43:58 -0400 Received: from pps.filterd (m0127838.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6556Octx889016; Fri, 5 Jun 2026 01:43:18 -0700 Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11021117.outbound.protection.outlook.com [40.107.208.117]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4ej5a2fxwg-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:17 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by CO6PR02MB7812.namprd02.prod.outlook.com (2603:10b6:303:a7::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:13 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:13 +0000 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=OHSlXuT0J85xziwfgk6v9QonCha77xwYWCSG3uqBg hk=; b=2wpKpK4mAPjSxkFjJr5RHmuMUGYG6CTeoQUBJsJv8JQHkJ8cvoPoy5EFC PkpBYr2fNB2xwrOReiUds2bnkCO1ihzfwuQpWfCwj7wVv56+YTlvD1hiUOXvLruC lPJo/qkn5r8m+N4zuJBiY/rDEkiXjCtPsi+r3VWRjriSkAj40TXjKcaY1t5bsIPp r3cBVRKFUYJZWK+rqJ2tSG4l+mukxIWcdYPdYeZ8fkGnbZHT7T+2lF/UJE1M+mqP iw4uyef9gfyhWy8Ep1zPG3ABS7zZUz/EmbmSO9TRs+4ZVLLz15pzKnGG6YgJzSUh dPzWSURcTj/bHRVPlp+GrSL2nYV7w== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XKQOgLvk0dmdrvUBebRL8H5m5TNm3LNPpR05H464o70rMSn1sDhK51q7oApLlwaxDXQgrlOq+X1Fp1IwsUYayqRU6nWt57fAHjlbIMrAPDS0oBYK7VODAnOPQSFFr0zYhLK8kDCQSP+KqiJ90Kf+eEOutzJpvC0PWu2WVTlyw9xzj31KUR5mMDhe3RrLHTTbOSQchYjo9KqqUNO6w0bIL/BEex2kW7PsuTKgFJXutT4fNLpg0nE+k+ikIubOmR7uK2Q9sVBIv5kC+5MIjF0JwoZqDHU1uphahsJRTc+pKOeUuwTUF+xQYzpeEad0FTFn9gW1OMRE/tDgfuQC8NK1mg== 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=OHSlXuT0J85xziwfgk6v9QonCha77xwYWCSG3uqBghk=; b=aLXGL8aFa9xSXTNcW+fM3k7FRgO1DVNPUAlD4TG/HFUC5zQRB8Kt/qkJzI7nVMiy1OxZUSIsKmRoj+Kp4VBwWu1m9Nh+losLxcmkDzSnBhb7so66HRsw1GALR/T7vxIjpfeD74wjrMx1+bPbqXtXZJ0a0wxaRxG6j9Tp0MABV/J4ZUNWLTj67bg4+J7JFeMzdDfcTfT2qR9gNlfeXZC8qaRu5du0gMWsXV3RRmnMjesEh2Eki6RFk6781ky6+MhGtsUo1DsLN6CC4FiprD9f40vWMaHdWPvyU6YPh+6Wa2JNxqLlmFhdHVsbWixl+LH2ACHx2fu/nO/yg+fv+BCC4Q== 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=OHSlXuT0J85xziwfgk6v9QonCha77xwYWCSG3uqBghk=; b=lWQ9GoMeCrw7cJzs28uraycqQtdMuyFsKq09XDk9bsWxfs3rb38K/Doej1rd8BAj1iQZRrh4Gh2ffwL0G0MSmogJX4FQw9BmbswYsJse5rLRV/4klphd61JMX5hIK1Tv3ROqMtBeU/BN6xiElaF0yCl+WLMIEifFj7Nom5CFuE9vxRFXW0lXQmFhgb+oL3VJe8eHH2E66oRRMV0X+2C1fbLs4nhVnaKgeeSs9w4KX/fbLTj55fyPv53oZQZZinpd5TslZPHySmTlpMo2ycoCZAuuqkGq8rsPbYVu+DBEU91fEWDyk6ImrjBPzYZd3ClM2AwYGKrgbhARpnKyMksCvg== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 13/29] target/arm/kvm: enable writable implementation ID registers Date: Fri, 5 Jun 2026 08:33:42 +0000 Message-ID: <20260605083358.1320563-14-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|CO6PR02MB7812:EE_ X-MS-Office365-Filtering-Correlation-Id: ec9e6292-3fa1-49eb-0da8-08dec2de7afd x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|7416014|366016|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: qxmniajN4a139DJBUGk6almnoF6sbOUZC2ZnMpeJ4oKKJ//xDGi4+kbRu4cb98h2n7YXh2s61yI4xn9HqXJPbP4BCof0kkv7LhqXmIGYfmvT/qvax5GhorksQAt03qKdOZeZwnFF4mFoyHzrtKIz6HVCeAlG2GciWOrUqtSDWrzLKT9EaQDHLraaJlCOgvhn2KNVonEwR4z1TCYjV7klJElLBWE6GgUlXftLRc5zSwtJSH33KSzCvdAGpdIKCJ19JDPMsDfw84XTRMQAUWd43cl5kX24F/0D3lHj/O5kQUPaLLAaBnSalaWJB44voP3d5KO8GFWzJ0g6/gec8RifGUUF+R2SmsYxCDFocmQFfp7jt3BIo+rYb9xapc4TvogQp7P+CyiqXjtOVW1JicMicgj4qu+SqBy4cqtclE+Pr9OrAKPadm9qIbNLetxdKYcRjsbfv0+6CZY+FQrb5ESANe4IqTfm+VjH1HX+4dWFTWUi4HWCX9jyZlkpfapnLeRlcFX4hS+uclxT/fs2n0zw2l1vBmSm9gwntpG9YWaPRSeduAuUOII3XADHD9YhE4Gy85daSVveRVY5CvciQZOBgKrWDHHIsroc3gjSA5MZch2LQjOwclUmiRqMZ2lFrLzBKnKHOx3bBpbZnU9W0PNGJfftGLEtpFMu62bVPYFJZcSqAHHptKi4psgI+JTYfH+m X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(7416014)(366016)(56012099006)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?mRaH5emnbq5wzVbxq6JvYlEzUnvPfRAI4ov9K6ZASng7LIprATLcpDJCZxze?= =?us-ascii?Q?BknfOHPZkAw0oRGFrqACkhxsLR2QXydt4bmQzLkCPQpTvBCk9Pb6UyGrdqU3?= =?us-ascii?Q?PI1jzH9q+5ifrLREb9O3y/qbLTyeRiQD/6SyUILC/NY8LakthrIX9JwvSE3A?= =?us-ascii?Q?eXnErO5TdVHueyp+RTScYZfV3qe57AkO7biRG7yNOl5ntKVVOTnY+4s2ckTx?= =?us-ascii?Q?G0XHH+HnPJAxYkMMmoIuBfh3jzF+qDntUiFN4Rgoj+7JGlQBz6u3BAo6wE1q?= =?us-ascii?Q?+gE8dGARIwwa3m4oUOx7PEgFfLthC+QWbLdDerUa81bH4MTS5ccpzQmmthHb?= =?us-ascii?Q?pR1+p0fHTW9rcrbouKGlB9PV9Lp0qO0lfGQxgFTTILFH3MYYlpIUYJ0Of/R8?= =?us-ascii?Q?YwDNMKxvx1YeSM/cvAgVvxdOpO1LFIoKN+sozUuZljF6yAVPqVPvE5b22WYq?= =?us-ascii?Q?iPEwLrnF4OX7BJ4z2CH+/7/Q81x8VP/Ej46dCD5TYI+Wn2kzycM3HwUsPhUH?= =?us-ascii?Q?c3eXKZ9ub1runez8bntSO+YlWuHUUbTutLDXHoR0fqIs9bOe0u1Nd5+j6YU4?= =?us-ascii?Q?6u2CPsvFD0fIl8Lh3yF6DWlC3DgY8fX1CxnBWzu5HFBgzCl5HEAuHLO52L/s?= =?us-ascii?Q?++lM4JysyFw4hx1E3irXnTq2hOTwePMUAszJPZwMdF0+p0wAs+22MgPL/Qv3?= =?us-ascii?Q?VXd2PwBixafrjLbya3CaoZ6nWaHN9mAmo6i+Mkz3lVDgdAtwuEBsPRz2sItn?= =?us-ascii?Q?VLSUq1NihuEgHd4DO4meKWxGHKfqoW5k7JE0VwMaQgdDPdFhk8jj5+mbBUTp?= =?us-ascii?Q?aEnPnd1yW6PISVapNMecxkNhKzxKwWCx2SIWwYTonmCpdPca+RXV6GqS9g5L?= =?us-ascii?Q?WEj0W4HeW21VJdu2EMa9Khm4k8pgphKFyDqdcZ3stCqe5R9JM98/8Y7yqLXz?= =?us-ascii?Q?dMih1NUlTBzzWR5jwiVLpsuvxdBK20coCAJRBS0ZJQcQGbI0CypDf0P1T8T5?= =?us-ascii?Q?d+CCqhI7HPzG0xX9YQn8L4Iiz+3AakSNq8OwHEQu+GyluMAb4PRhSGSjaPcb?= =?us-ascii?Q?EmHzT0UVJqve2Z9xwwBMOpgoXu4PSjue/asf4+bRBLXQz2NSjHbLgV4FVCAz?= =?us-ascii?Q?5P6h5uvU6DviyjE+FIfTNa7mCx3qN2IkPCimNDQtPRE21i+DL2hTjCTmDJCB?= =?us-ascii?Q?m4zktaCYB3etiVSMVWFb/JlhxcDjY+6Ug/HvZn5SJVFZZnX6/hJnmM9/cbLh?= =?us-ascii?Q?UNa494A8IrgtbXOY2r4bHo5PgokjM54Xd1+qlt0dGArFj2/3q8U476pNxsr+?= =?us-ascii?Q?A9SV7dSkvFOqGdHhQVnN5AhvZSQ5CI0Ti0uiTRzlqir9rANtc0OjZBdJ4mZm?= =?us-ascii?Q?gRkQ44HFKwNM/p05cnuKxShZ3+xqTbSKn48lJNezLXZuUzozjGdLrsBqE+yz?= =?us-ascii?Q?nXeZqZdwFwys+KF4DH6yNAz1EUDVIfz/lDDR/ezRW/bHOXsYCBpnQc8nSkOA?= =?us-ascii?Q?yuxKBaao6pgAlUAvnWRrWKr1QIXEpJutN63avfY8Ob91cfvmL3HSwz+DUK8Y?= =?us-ascii?Q?Qtfnb9Sht0P+d8ueKLQsECLEnY9KXtKuinP/2SxZ5peN+CwIT6qi641RBsnT?= =?us-ascii?Q?7fUgCzkPS5znVLUr4p4NJ03k2VFnhAIVO643/D8o1ERfplgqkx72g3TV1j6l?= =?us-ascii?Q?hR4MyX30Gqe3fHP13AnfEAkaJLeSTvU8wMQYh3mFt1GYE+6qDZwW6YPzn7fY?= =?us-ascii?Q?LZML5dWuu/V+l56MeDlYffO40ReGjhE=3D?= X-Exchange-RoutingPolicyChecked: mYUhRuEeROMih5L56t7367bjaKGQH4lFCNlLXuNNxN5b6PAVMtvR7JSLtyiRa/4kDTXUiIUdgT5RYFEFyyz/kO/ueMVkuQ7/i3Ss62srbqoXvCdtlrzAoyRpN/AXKQVM4BYuNq8tegsQ0nx0lF6PVQN0VSaDSDPLDYb6a0WNY3w7e9J9yvUJf/4RbPoSm0VVwLSrmS+HvgK9xVNdVuxnCDQ0sJ2sVh1hLp5Ytq53z9SB8ST2JZyHwHlKz+C87DeJIYvBBZWwY0YkrhzEirxcg8FGCAq+gfimRixG7MtOD8B1IA95h5S2V0b5V+k215kwjQA23YXqjz8uLuAq2Psc+w== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: ec9e6292-3fa1-49eb-0da8-08dec2de7afd X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:13.6348 (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: jfOpyuQcnNk827lICJu377JGBuE7sovboGBN9auVjAYZzPxZQfbcVpFHG0yKVDiEQku9F/GxriGPdL1TfpLR2EZ+CeKjrLNUFqsQHHQY+GU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR02MB7812 X-Authority-Analysis: v=2.4 cv=Mq5iLWae c=1 sm=1 tr=0 ts=6a228c25 cx=c_pps a=fJIB0T+C2yAfE4P2TQxPqg==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=1L6crL_YRTbalZ11mEUO:22 a=64Cc0HZtAAAA:8 a=zu2ZhKAq3Qwx2YJsANoA:9 X-Proofpoint-ORIG-GUID: 07U1btTtkJALe566k6qGssO3BULSRreV X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MiBTYWx0ZWRfXx+InM55EAQ7T Wsgi2NOuajJmikkLIBuQs2QirZl/UR1FIKKtchzx1ZMypXPxYwW+jH3FQ52RO/k9kR510XvT9FB WrkiZ6A8jxg5zyHJ4mBEZNLqujdP3dAfbNpOaLEa5Z8ntwY5wmuORYMpDcDbtxyvTOSk6Oe1YEZ +EH1tIGphG8/jvZ5OVvzA7XtKMgk1UKqkrns9pj5O5JV+139vE8wFiKF3NNStWlqb4jUrBm+Pzk LbcVJPjarVs0YfkLrrBbW/m39CyxmRP2Jc6jV5S0b4f4UzQ+dNg4/Fm79NwvDHRKQE6g+xJCt1p MhRudCiMzEvXPlZ8TsfAuOtVg1clXBc0VBXR1Cj98YjufGebPLUlBZBBLrRY4W1Cc3Nx7WPpVKI zx7Nn0cXadpuUhGE/Gc61Ka8k43TU2BDec4+C0xB/NM7k5DLuLRLBh+QAE/Vy3UQZFV5PYjKgnN WoNHfaY3V+Viavp64Ew== X-Proofpoint-GUID: 07U1btTtkJALe566k6qGssO3BULSRreV X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.151.68; envelope-from=khushit.shah@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649308455158500 Content-Type: text/plain; charset="utf-8" Enable KVM_CAP_ARM_WRITABLE_IMP_ID_REGS if the host kernel supports it. This allows QEMU to write implementation-defined ID registers (MIDR, REVIDR) so that named CPU models can present the correct values to the guest instead of inheriting the host's identity. Signed-off-by: Khushit Shah --- target/arm/kvm.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/target/arm/kvm.c b/target/arm/kvm.c index dc64cfbeb6..288b5ebe85 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -711,6 +711,13 @@ int kvm_arch_init(MachineState *ms, KVMState *s) } } =20 + if (kvm_check_extension(s, KVM_CAP_ARM_WRITABLE_IMP_ID_REGS)) { + if (kvm_vm_enable_cap(s, KVM_CAP_ARM_WRITABLE_IMP_ID_REGS, 0)) { + error_report("Failed to enable " + "KVM_CAP_ARM_WRITABLE_IMP_ID_REGS cap"); + } + } + if (s->kvm_eager_split_size) { uint32_t sizes; =20 --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649255; cv=pass; d=zohomail.com; s=zohoarc; b=TluYWbxxoSgkTMXJAx6qYVBudEMfyn96N59yilw4NrNurb41PTzaU8bMrJ2rZft2TSyNfKSOr0aTxTbaIWUZTw4judkf6Rgz1bFYp9UO4fxYOdJwam4ELvYj3Adu02DiTFl9jSyuI19od1tC5/iARc9/uV3hjaA92amDJItgn5I= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649255; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VahbJXWZ8CXjXBIPZl6mk9rlOme758HEDHSR+8Xgm1g=; b=f7080GYRdXeQ3OdTgOsGS4issnvieMQgf8wbKux1T9OGlCsVTcfWiVkyxkRZ/OK5cTvs1/20/0WsHz5imhg1UnZzsq4rfyOms6p1YM3oM6NTLnsFJzc2eHjBFWoFTg/POlaSCgIttxS90sCXtX2vOYU15QxaiTFY3gAYcvxMcu0= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649255393906.5998886184328; Fri, 5 Jun 2026 01:47:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQ9d-0005y2-7x; Fri, 05 Jun 2026 04:43:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9b-0005wU-Jj; Fri, 05 Jun 2026 04:43:47 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9Z-0002S6-4e; Fri, 05 Jun 2026 04:43:47 -0400 Received: from pps.filterd (m0127838.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6556Ocu0889016; Fri, 5 Jun 2026 01:43:18 -0700 Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11021117.outbound.protection.outlook.com [40.107.208.117]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4ej5a2fxwg-2 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:18 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by CO6PR02MB7812.namprd02.prod.outlook.com (2603:10b6:303:a7::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:14 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:14 +0000 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=VahbJXWZ8CXjXBIPZl6mk9rlOme758HEDHSR+8Xgm 1g=; b=21sONRrnZXo8Mbz/Kb595tF46Fw7OcXXDG0DkFL5tHyw2QGKgfJDCBPqG d3C2U+FAmTBeeUIonNH6xztTlwDNKX939CHcNdKj1RAf79X0aPvVXpUD474gvaqp 3WPQhcu28xOiU3hB8zAQPo0SFxXejCbWdAy0lbVnOItxxzBoIOwep6Z5pEZ+hzmF YjsUXh55VmhR7iCZ06Dg0qpsYl4sA0tJxIhxIu5IgPOn5XEqoX+4rHlHlGjai4bW l5aybVF1ekcK/4J+IeOuozBRbZcUnU4uOHbT5/G6mvt9585nDcu68XDYmXRhdyax gVPTIdoOHHLbyt3vAaWC8KCG1lSzw== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=o0UYRYPCFpV36bU1sj1Hiogr5dH8ETCT0Opc98c5pjbnmxAHIesDBOqQtIHu+0Gl8NkOxz5ClyWIRhu/qskTyGxRsvjkhHN+h1cqf7MRJ/v2zMLSjqqHd1mXOZkQHak1uaOy9+TDnjQ0Nnp/Oblc5Q+OuZGxKxlNyhufH1aTb0Oj+jjIjq6lDrbpj5KVNXaNGsiOFbfFEe7oJyScfK2IsCqeU1gHgVdJh6a01N3J4miEcqfJ3rZh7RWGaQIHz399PkudZYSm/cSobt+BzTtEK6FYUrUU9CIL+vnU09Ros769oGfRfRPUI7BnmFIUIr41HWaGLkx0EB0BesNZjH1TnQ== 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=VahbJXWZ8CXjXBIPZl6mk9rlOme758HEDHSR+8Xgm1g=; b=s+qze8J52S/NQ3uQHRAwJ0X5exhPmhsdaX9vegDgtwzGiEUnDqW50Qg/AETBbLiQV4VDY6sogavb2oLoMMaxEmIpTpBNLTlNewpYxGVUMCg4i1ctQVOe7UcYF0DyotPebDaSytK7tRxz3/SjVR1a03wmb76j1fa5smwese2SDd8/MrtBcdljNw+0Ytvg5/QxFxvdNP4/tHScm1+eWxSnMB4nO/QM1Q06kRAoh86xw8gVX9Z81w5cQbrxat2PSaZlBrlJ8f97YsTDYMm2OYpvjo5AEH6djnN2P7jVm+f+QGYL4hgf6eI4Z/l9l9L+EUG56N1I/0j/qu7l+KXsuEUtFQ== 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=VahbJXWZ8CXjXBIPZl6mk9rlOme758HEDHSR+8Xgm1g=; b=s0uUhpZH4Osha4jQifQQIsmA206bpB00VkcIZeAaxJIqK0a6Jq8yQZtoUTzpMmwDlKlPx69BnGQfp15uzihvEpjlSwr7fT6CyXSMzZnSM2YnYx3FbdLfPqQ+XdRDI0Stb0q0m7Dq0J593B9e6gohTMD9x0mAtV18Snq19DCXTcL93mSfjtao0OpnBdYWn+kB9oaU4TSWugXUM1RvSkQZHD8DaOgk5plzmVsHdKqIgDa/vhz0vXDY2kNsdZ0vibMQqg+65lhau5sxcfbW4yAQPPGh+loJ0fPxe+qQ8NaNoADIRz0xbmVoKh/hc2ALkTKKat+bvcn7qbGH14AR8UFYRg== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 14/29] target/arm: Validate cpu->isar.idregs[] before writeback Date: Fri, 5 Jun 2026 08:33:43 +0000 Message-ID: <20260605083358.1320563-15-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|CO6PR02MB7812:EE_ X-MS-Office365-Filtering-Correlation-Id: 58968b10-12dd-4ee5-a713-08dec2de7b39 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|7416014|366016|3023799007|6133799003|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: lS/RfY0CIngegiy3f2ySdJB+RYGwyZud3laA0puyNuxoXCpRafQ39zfmjQuwvYGDg6uoqqIryTUdxyZrIBtPPnqqJ2tqJ5n3yoetjVsMtSz+DjeYyEVDLf1oThFfvqmL7H/nk/B+ZnU8zGydeWn5phV3NBP/Ko18DRWwEpB/H3XTSr0hWcj/bCgC0VKDRXIpFepcgYcv1GeJO7W5HCo4c0A8V2PhbFvBL80SF58Bx9dn0KH8fU/582+fvVyU/cwwD/W/nGbv8PbvI7hCTeBVyU7QjLO8KW/sOrdKKrdjith+GENaqDGNN+dgUXr9n6cfm/+BWV7BZsZO3x1u8TCYC7SCfpWbCb2VModCDIYXqG1jHOKGCBy1IUEwc/pJx+zyb89abpUwCuKX86MRNlcrFIRRmL5LFmbChcIZHPjQuzoXvx6FPnL4DTrzUwguZ9SXMrXRL5fMZDnK1gWJifzGDDC+0TgWE8ftUFKXWybp8v5ZXEEEKc2jo4FgTcEkmngCaVl+hSG8TFfDJMTnk+IsyEWh3tZBKCQ+vzw5vCoyEQiPfgCie+LIrrWsRloyt3kfCQ+8aOenDqjTCdufNjiy7wgw48ZTf0o1N4yT8uiVDoj+POR8Cp/EdLQmY+6g78UoSaf0MTkLd3oA8Va92WvtviAOUbAwN3hNkNHveIvqe2kO+On1OK+2f7b3YgBtqDLv X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(7416014)(366016)(3023799007)(6133799003)(56012099006)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ionL5eugrSNTMMQxkCU+Wzd0F8RMdH/ok2WyVIj4IjD5dES2z9vK45zkqmpF?= =?us-ascii?Q?VkIqhXcbXXlI3Uk5AHnQSImKiO3/8GCc2Ux4xw8uaWTXOtoSTOx1gFkdazlX?= =?us-ascii?Q?m+CV2JsAWcZ3YsFhqYoNVRm7rIqI+/EzWmkH+wV5zoLsVXmv6vs8MjBi5qnY?= =?us-ascii?Q?kpuoqhXiM9fxuwldyforq2L+ooMInX3oK6yZPl5+d72tgYRpgpw8ePJy8A3z?= =?us-ascii?Q?1Fm+RUpkcCOT9H7WWKzohC5DRJnLSWSm4gDE+JihLNH3XG95T/6/D9slGwbc?= =?us-ascii?Q?FO5DV13c4ls+QGsu00LXUusuKFogrZ+XlK4vFykQttv3RrJn8scDGoeJdYVV?= =?us-ascii?Q?1Fzqf4L6iRxmJvtssNtiNg4xImHSg4dNlVEcQ5vycU3mj2xcbUvz8Oa69Cdz?= =?us-ascii?Q?hDhP4wsWqI58YHTr3KHQ8vNawGDinJ6FwHfC2t9qvgHZCyUubz2KYXokWojM?= =?us-ascii?Q?G+8EtrC1HLeZEyEjHe53MsZLsPF5QC0tFM5u8fD0etstzBok8CxQNenR9umw?= =?us-ascii?Q?ni77WeQzhRtrenIuYNiDf9++p/zyVf9cTQjVx8N84cz/mqhXJHt6g7DJ0ljk?= =?us-ascii?Q?xRyS6PEAFlAURClYjEz5GTd1gaVeU0nJJFBW33o7byEPmhL0mOjR2YUG5FHI?= =?us-ascii?Q?P+ILNJbsVBGUfglCmBo/QUicIF6ZxAaQj80rrdXywt/RQj96R2FXKVg3poQb?= =?us-ascii?Q?JwhMVI9IHyP43KEpZhO9gIW7bwCqvPNuvBBcUmOUmoex+JG5s6zw2Pq+/Mzz?= =?us-ascii?Q?N5KJanuBKUT+MbTXqaB+gfRe+s/40eZnFl8vGI08wz9y4RYPJ0Mp0LOpS0o9?= =?us-ascii?Q?OHHJvbxm0PfDCQ8F3UwR7RQ6xRI1VXREVkbmIvyZdO+iWYhigVTj6wVjPwvv?= =?us-ascii?Q?nDb08NctjHngV/l62CZx16M259JaFMW6HDMT1wUl9B79n1x6h+YKWwNtpAXR?= =?us-ascii?Q?JnO+M/ynTT1KbHO7DzH8/FXF7518DYYfMv28vbsMchg3NNvzJpmIresuRcWe?= =?us-ascii?Q?ji2AA1o+fw4n6IFCY/zLGdZpDqxUywqdaEFghpg9iw+lFz+vD7ERKd1+gcrG?= =?us-ascii?Q?BD+Nb7rVEYcXeIiI3hU5G8cnGJcu1rBtbuIhvYA4hAy7Uq7B5SBKftvl7MzK?= =?us-ascii?Q?CF1HBSMawindDGL9HX6doYNC8Z7yIFixPlIGssqnw1869vL20ORQenidmWip?= =?us-ascii?Q?6T0U6nXyFNZCB894kOtd1GM8yjCI/AZMlNKW5zpgIh+D24Q+upSTNgPT3M3A?= =?us-ascii?Q?8LBvi/k9Y8tCCbKAi7xu/C+Q69P3djGMtm3UdrDfdiLKK0hTFuG9oGKbf/4v?= =?us-ascii?Q?K23VS+gb6DB8pjIKVHcII/jycAP1EcQcvFM6/3T0cY+eku4RtoyI8oYnRkgS?= =?us-ascii?Q?CrUJhwV+QBW1ODGA93lpSkilRPDf41qPY4h9anqB/orycUPWnpvNabRgyv7P?= =?us-ascii?Q?mWjFVGvtfR4UtEK6GUsWDeXgEkgxffixx+FRnwnxG1SgiIEw0xpbFCrzArJs?= =?us-ascii?Q?totx8szEpwVyxysgL2h9zkhVXSfoiblNtVXZve9pZnEAe8o9ygl3yEsdluhP?= =?us-ascii?Q?lJg8chHT7F/llhwQNB0KSfMZB0AQ6QbMFoX2IzFD48VuRp1Sir0zmOy0YPWn?= =?us-ascii?Q?FpilG/e/0pU5GHiI4zZHPHK3/VnTL1hVfzraMxIbxYU4FhzNlIkP2bbzHEoP?= =?us-ascii?Q?HWXXWkZ3hAKrc47X/XCOizXz19iWU9pk5ybkvMJAQ7/sVVjp3XWX1ICubiTX?= =?us-ascii?Q?EPXrmDdxmtkbVVS/Hn3zfp5B3z9z9ks=3D?= X-Exchange-RoutingPolicyChecked: Iyh/q/wF8fO3PCItbtqbtE41DAqFhB3nLGgg2OEZUha4B3Lmo3vtuIkebZCm+qiyvkuKvOqkzGb/KGhOxCeczJYfqVlQiyumIpF+JQ4t1Wi/oJqRE47CiLukc2VZygHel9Ghf/ufy3DR/tx5+2HmDto56CC1w8o28DpbsqxIrJp0kwLw+agPfZRmtgesvyZ3zue3j5LJk/gWjrvs9/EbphVPPqVsT9YU0EtzNXRrSsE5iVpiu6J3RRe6gGErAJlAsD6E6NHzGsbaRl6QvQMBzAw0JKefOGtN1LIBvbRbf19yz0YUcw4+Cv2jIFDo7PP7aK/j0DKlcoV8jUK/EVah6w== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 58968b10-12dd-4ee5-a713-08dec2de7b39 X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:14.1118 (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: gDwt39Mf7mKrhOju/Z0AXW1Igo6PCLeyLE2xe8iFIHjynZ2OUr9CnP7k/j6SrkkNDh5C7b70DiREFTs0fGRmVdu1nTgb0kMC54dYJJMx0aw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR02MB7812 X-Authority-Analysis: v=2.4 cv=Mq5iLWae c=1 sm=1 tr=0 ts=6a228c26 cx=c_pps a=fJIB0T+C2yAfE4P2TQxPqg==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=1L6crL_YRTbalZ11mEUO:22 a=64Cc0HZtAAAA:8 a=nl4PRgY3Bpby1YJ86_MA:9 X-Proofpoint-ORIG-GUID: fNrw5skSjmCxnj_hAk9FcbQT8Kkr0pP_ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MiBTYWx0ZWRfX8ZZJyD7trAeW jWGrrz09Ylgrvu0M8GWoshRoYDQGWV1W++pjxkHrFKuYPN5D9DEPPB9Zt7L6Iniw0vJ8lS3WQNn V4DA5p+E121i/9CoFWIb+bUIL2rga3x0gxJLzi5z/apyw+UfwtTlB968P9KtVVGoCyyJ8F1df/1 Dh0+dYmlpPrdMpZRO0sXXSFCCKhF6kbGodF4p+ahrT5WOGqwuPeD0GxM0J4jCI9MIhAd5PnKSPU j4RVrxt1SCIKj/CgnTIqnURuIF8rSFCbO3GhvoiLfsSk5Hz8AMGUkC4vc7Ow4bTaM/MAUiF6IxG yffzTXKDYD4WcSPiLsowGYhG6upqi+Z43BdKjO7aWJ0+hOysgnDi9rnlsAXUdQJQs1D5mKcs1v8 M54DyCCZglHPwBxEFbj5HGJ9IUXhY9TmmdYhkQjUgUv/NgnDT/gKuisPeYfFf8ChGTrDZSnvAMu 6vB3lQUkJckU6HkLpvg== X-Proofpoint-GUID: fNrw5skSjmCxnj_hAk9FcbQT8Kkr0pP_ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.151.68; envelope-from=khushit.shah@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649256351158500 Content-Type: text/plain; charset="utf-8" Before writing cpu->isar.idregs[] back to KVM, validate that every field satisfies its declared safe-rule against the host isar->idregs[] view. This catches values that would be unsafe to expose on the current host (e.g. claiming a higher feature level than the host actually supports). Introduce arm_idregs_validate_safe_rule(), which iterates over every field defined in cpu-idregs.h.inc and checks the model value against the host value accoiding to the field's ArmIdRegSafeRule. If the requested value is invalid, error out, while also mentioning the related property. Signed-off-by: Khushit Shah --- target/arm/arm-cpu-props.c | 14 +++++++++ target/arm/arm-cpu-props.h | 1 + target/arm/cpu-idregs.c | 64 ++++++++++++++++++++++++++++++++++++++ target/arm/cpu-idregs.h | 10 ++++++ target/arm/kvm.c | 7 +++++ 5 files changed, 96 insertions(+) diff --git a/target/arm/arm-cpu-props.c b/target/arm/arm-cpu-props.c index d5900c0e23..3a02079ff2 100644 --- a/target/arm/arm-cpu-props.c +++ b/target/arm/arm-cpu-props.c @@ -486,3 +486,17 @@ const ArmCpuPropDesc *get_arm_cpu_props(void) { return arm_cpu_props; } + +const ArmCpuPropDesc *arm_prop_for_field(ArmFieldIdx field) +{ + for (const ArmCpuPropDesc *p =3D arm_cpu_props; p->name; p++) { + if (p->type !=3D ARM_PROP_FRACTIONAL && p->u.field =3D=3D field) { + return p; + } else if (p->type =3D=3D ARM_PROP_FRACTIONAL && + (p->u.frac.base_field =3D=3D field + || p->u.frac.frac_field =3D=3D field)) { + return p; + } + } + return NULL; +} diff --git a/target/arm/arm-cpu-props.h b/target/arm/arm-cpu-props.h index 9ba3f4c100..36ca39d1a7 100644 --- a/target/arm/arm-cpu-props.h +++ b/target/arm/arm-cpu-props.h @@ -45,5 +45,6 @@ typedef struct ArmCpuPropDesc { void arm_add_cpu_props(Object *obj); =20 const ArmCpuPropDesc *get_arm_cpu_props(void); +const ArmCpuPropDesc *arm_prop_for_field(ArmFieldIdx field); =20 #endif diff --git a/target/arm/cpu-idregs.c b/target/arm/cpu-idregs.c index 591ca54e39..84e1d8d9f1 100644 --- a/target/arm/cpu-idregs.c +++ b/target/arm/cpu-idregs.c @@ -12,6 +12,7 @@ #include "cpu-sysregs.h" #include "qemu/error-report.h" #include "qapi/error.h" +#include "arm-cpu-props.h" =20 /* * Generate an array of architecturely defined values for each field @@ -243,3 +244,66 @@ void arm_idregs_reset_to_defaults(ARMCPU *cpu) } } } + +bool arm_field_check_val_safe(ArmFieldIdx field, uint64_t val, + const ARMISARegisters *host_isar) +{ + const ArmIdRegField *f =3D arm_get_field_desc(field); + uint64_t host_val; + + arm_idreg_field_read(host_isar, f->idx, &host_val); + switch (f->safe_rule) { + case IDREG_SAFE_LOWER: + return val <=3D host_val; + case IDREG_SAFE_HIGHER: + return val >=3D host_val; + case IDREG_SAFE_HIGHER_OR_ZERO: + return val >=3D host_val || val =3D=3D 0; + case IDREG_SAFE_SIGNED_LOWER: + return sextract64(val, 0, f->length) <=3D + sextract64(host_val, 0, f->length); + case IDREG_SAFE_EXACT: + return val =3D=3D host_val || val =3D=3D f->default_val; + case IDREG_SAFE_ANY: + return true; + default: + return false; + } + return false; +} + +bool arm_idregs_validate_safe_rule(ARMCPU *cpu, + const ARMISARegisters *host_isar, + Error **errp) +{ + const ArmIdRegField *err_field =3D NULL; + + for (int i =3D 0; i < NUM_ID_IDX; i++) { + const ArmIdReg *reg =3D &arm_idregs[i]; + if (!reg->name) { + continue; + } + + for (uint32_t j =3D 0; j < reg->fields_count; j++) { + uint64_t val; + const ArmIdRegField *f =3D ®->fields[j]; + arm_idreg_field_read(&cpu->isar, f->idx, &val); + if (!arm_field_check_val_safe(f->idx, val, host_isar)) { + err_field =3D f; + error_setg(errp, "value %" PRIu64 " is not safe for field" + " %s.%s", val, reg->name, f->name); + goto ret; + } + } + } +ret: + if (err_field) { + const ArmCpuPropDesc *prop =3D arm_prop_for_field(err_field->idx); + if (prop) { + error_prepend(errp, "Property %s: ", prop->name); + } + return false; + } + + return true; +} diff --git a/target/arm/cpu-idregs.h b/target/arm/cpu-idregs.h index 1389005099..c2ee82597e 100644 --- a/target/arm/cpu-idregs.h +++ b/target/arm/cpu-idregs.h @@ -86,4 +86,14 @@ bool arm_arch_val_from_name(ArmFieldIdx field, const cha= r *name, bool arm_field_is_idreg_any(ArmFieldIdx field); void arm_idreg_field_reset_to_default(ARMCPU *cpu, ArmFieldIdx field); void arm_idregs_reset_to_defaults(ARMCPU *cpu); + +/* + * Validate the ID registers values against safe values tags with host vals + */ +bool arm_idregs_validate_safe_rule(ARMCPU *cpu, + const ARMISARegisters *host_isar, + Error **errp); +bool arm_field_check_val_safe(ArmFieldIdx field, uint64_t val, + const ARMISARegisters *host_isar); + #endif /* CPU_IDREGS_H */ diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 288b5ebe85..46d5532061 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -2118,6 +2118,7 @@ int kvm_arch_init_vcpu(CPUState *cs) ARMCPU *cpu =3D ARM_CPU(cs); CPUARMState *env =3D &cpu->env; uint64_t psciver; + Error *err =3D NULL; =20 if (cpu->kvm_target =3D=3D QEMU_KVM_ARM_TARGET_NONE) { error_report("KVM is not supported for this guest CPU type"); @@ -2212,6 +2213,12 @@ int kvm_arch_init_vcpu(CPUState *cs) return ret; } =20 + /* validate the cpu->isar.idregs[] against the host's isar.idregs[]*/ + if (!arm_idregs_validate_safe_rule(cpu, &arm_host_cpu_features.isar, &= err)) { + error_report_err(err); + return -EINVAL; + } + /* Apply named-model ID register overrides on top of KVM's defaults. */ kvm_arm_writeback_idregs(cpu); write_list_to_kvmstate(cpu, KVM_PUT_FULL_STATE); --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649351; cv=pass; d=zohomail.com; s=zohoarc; b=Ygc/w10Ew3BjYrodlLCcmJhXsnZGIS5AoEcDnYYa8YS7Kdj8nIqkmJf6Tc3xqHnIXYrlcd7oncFvSoniw7qoefsfBKVZGRDKsRhwLK7kY0TvZkyS8++fD5KtDTucBP1xF8SWeiZlidZGG9k8hBfsxsRKLTMESsQwGj6TIMJrwOo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649351; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=oC29DSXxja7+3YRMlCXqMeAH0MWszWIkfiQcbJrtY5I=; b=Ro4szMTvw7ptDKsPfUiiycfSzbbaN+u1dazK+0uOOPKqYPcLwbzGsychl2YwfJZIyKdK4ZoGDi3yxbD81A39FfEqRTvseUSIradrsLSe0QQHwoJGI/MgflTb+t06C7sbds2jAVv/FpSgkcts2ooNbETvUn4pcc0AGiK8Vglr+6M= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17806493510787.5130590039500476; Fri, 5 Jun 2026 01:49:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQEF-00071D-LF; Fri, 05 Jun 2026 04:48:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQED-0006zC-OT; Fri, 05 Jun 2026 04:48:33 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQEC-0004M9-3M; Fri, 05 Jun 2026 04:48:33 -0400 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 6556OdLW854749; Fri, 5 Jun 2026 01:43:18 -0700 Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11021094.outbound.protection.outlook.com [40.107.208.94]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejupdmnv4-13 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:18 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by CO6PR02MB7812.namprd02.prod.outlook.com (2603:10b6:303:a7::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:14 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:14 +0000 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=oC29DSXxja7+3YRMlCXqMeAH0MWszWIkfiQcbJrtY 5I=; b=YxUxYS6zZMkeAz5X1B93bkSBbGtcNdbRBwAlmZKR8jcKsJq0boMPZ+7/f hG1SmraMy2eyj1mbY/lFXKlepaMq9cAWQF71T0DbYNDrueSvbG0MHlgtqwsohVJ4 G0OghwpI0J9szxZlZrSxadjULdU2V3Np4yLQS1lRrUcCej2NtQ9CmwHADnQ0koYK vhnuAlO5DHkIl1KKpS4jWlsntBQTnQ34rdv/L6mNNsXTisO60Umw2t2AauomWOqC YKSg+Twce3ynYGQy3gtQV6utkVB5yPydqU0m2wA/42wvo+JbLb6fXZfQZxdPNCKI rELh/oIuNPQQ5mHGrZ+8cMh1t/TFw== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kdI825SyvkMvezLhqfVxgF84fkQ9qP5Sy/j3BVZHSUSohdPNekyh4IhUSuErxYEz9a2426kpCRlirHJ2F8ITKMZFpjFY4pTsy3zqp3O07aLgvFkgvUitWzmFrzzhAc/fUFaioWXYZ1JI5qNr4Dyf7t8t7mDL/M1M5Ci7DcyoQDx7FVkhwE343Zvzm1Zmw1dT/YNo43X7Il381Riu9el8bg/4tvhhG7r/H9yTEkFkB1OPNLcCcx7VtQ+YjVPfILQ0N21gfFMVJm+wrxv/MzkJC7U9p1dtuqIswEWMztA5/3LEB5jbH5NRcA9SFukdJrgYpaHLftVnF4l+s+kC/9yRLg== 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=oC29DSXxja7+3YRMlCXqMeAH0MWszWIkfiQcbJrtY5I=; b=f49tp9j5bKEbrxo7FJftVhDZ/9XWRygEPTHs551Ovi0tUotOLFW+999PIw0jRz8PW5Zdej4SOt9qnSCdZkcDQBjhnX//MufJHqch2YcyrQshhRYGZjMg1ct4NdQ+sY0O6kFsPlVpU5eBe56srRwfJ9ZjlR0MphXqLuTfedwpPwHFuCRIGuSyox009eU2RquD6/wizHXVjk4ZuNnT7WLX7ghPwtgCK6vslouhQzQ2DLe1IiVQ1ZXibdu8s+S842wA+DhG7Tnx3eLsSDpB3+Q9V1yk9Y3xPmYNEa2CWI/A/A52Q1cvwXGAlCKHu3s5hwA/UQCk/QtcR3KvADpbjiXm5A== 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=oC29DSXxja7+3YRMlCXqMeAH0MWszWIkfiQcbJrtY5I=; b=yjsH7/c84Ut/rpxG1SlPtz/ALpah/uB4xNgQKXUnnorKsMKj/FeVkzP+bd8HikAJiskYXQz/BHAaaXOquxVf3WQO9CkMjj43IxQxchoyqg1qzoMOce6TGtfSdK3+RT2z9DZfTQi5WwC4H837/PyBnXyQ0KG3sHt0FQbZ0JNbWLVrUp3pYltXsFLWwoBksNK1ZonrMgs56WEEjWK5jbvkBQ9RDv4KNgXg9f+kDd9bUtU9nH/xo+BECOiBrnOCN1i/cklFyL2mYiAz8Bm4GyUrwigQb2fuIl/5tFeyuM6bdd8BVYCPjhBjCZDH8mMYQpcdlU+Sz1lN+37V7odszEWfhg== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 15/29] target/arm/kvm: handle DCZID_EL0 specially Date: Fri, 5 Jun 2026 08:33:44 +0000 Message-ID: <20260605083358.1320563-16-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|CO6PR02MB7812:EE_ X-MS-Office365-Filtering-Correlation-Id: 2529dc18-9e6d-4aa0-29c3-08dec2de7b79 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|7416014|366016|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: z8S1y7DlpvKTMmJ5X1pWSVYXzTo8q0cAEqnDz7zI7hWH/d7HUBuwUXrB+yptrnAM8YfdZP38i/ZKx6utTdTJDXAjEg0/FIM+eE25j5qn1jS4MDYYhEVHlQJNMpswy75PAfHTVnDHFzMOM5u5hv+NlBZvl/CodasUcdCZt7n5/A6LExZM11eWAcQUOitjcHZhL+GE41DI9EmVXj8gOwE38PDlajFXAOcIqATtUvfklvRSzCtN259ra6Fk8kA3YGivGeXxVF9c26p6pZpwEfMSHrcl1Ygb4ew0xzYf65QzRKn9BdxK9awWi0Hi5+PFoARV/CoY8UAALCFrL1EGsHsbS1WjV/oq3rtBAKfGAcmZnOJubsKOosZtG7Hhv9DxlDUh0Kt8IworPc7gCA8b5+F3zc06Cg8IFZSbmap9qxtQtK8A8nzp7LQ8KvSA4h40A5FeipQ0ikpvt6Tsugq8BpD0If1+tFsJ99tEhHn5DUHmtbTPo4mLi0GDPvQK/oEa2R/xxy7ipQjxMDLT/XFARlh0UnIzDLjFLXZtAQajxylMbvZJhfPyVUOS13/Qv4ZB73job8gb2nF4iSe3INEh5NRXl2byY5/FjhHwcONrSeok1o7BnXdxra5qIXMzOzfjZsZF+FJhbAk/WLBXx+nnEVRviJODaAzs1F79ta0mI1GHmwvoZNP/Ouqga7GXOlCXKOF3 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(7416014)(366016)(56012099006)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?jnqtGQOKNtvQ8oK4J1tdTiihI5UOfT8f0LMRmhfvkMo7n/irow5IEd4n+uW7?= =?us-ascii?Q?sCY8KNw5b1S/Tv94J8aC7zcL+UGFtGgjKmYuyfes2dJOMOFEm3u7S1sYNbwl?= =?us-ascii?Q?wL6TZV/AQDf8Px+mH9rq5laRq5bd/W9UwTcoCifUgMHcFWXmln3ALfinBj1Q?= =?us-ascii?Q?tLxhhYnAIwTXt+P3gIX8lGiGiJG2uokH9cR7maUV27N5YjroeZjbNM5E/k/3?= =?us-ascii?Q?yp61OD9FP2i16DRjPn2ahtr3A63/8vMJo5pSPIkv/Ocys2RkdKv5gASSTOhz?= =?us-ascii?Q?mqGL9tzl5eadeG3h9FZZ0Q38iEQAv++UTVh85gD+H1z/IbL1Pw/ynL2pW9os?= =?us-ascii?Q?nm3dQmgjJMh7j1nWnrTuZM+oS8AFoltkkSu/jaqoh/mawA6iHmx7xVAz8xDz?= =?us-ascii?Q?oHBAA9QkkglcKDkBD9U/fD694in6Gof/JQQrqYVNfy2SUGtmiVCZerNpEy/H?= =?us-ascii?Q?tN+xirSik+ixXnQUWvdgrJqvWo1hl1oK/dijDCuGbkxqf29d8ZgZSO8gSwAy?= =?us-ascii?Q?9SOzq8VWC0cYYTPj2G/sREUd+KqUvPPeG6/z1oF+GlfodLBcQO/W4+CsRdOi?= =?us-ascii?Q?quunsVsWw+J/hMKLp02ACMEWTwCL2jnX5O6tJpx19IxREtLik6V1a8OvVo1r?= =?us-ascii?Q?rauemuHfY0aF7daq1wW3MvSX2wnGe3DtfAuTVLbHZ3YI32ZgdL/atGyrTnM9?= =?us-ascii?Q?QgDUN+2OAJR/tvH6tb4LSK1+zqHWAHApZPQhfIoUYdWTuTA7uaDUh764ONEx?= =?us-ascii?Q?nxSYW70oCckSBj/I/iiebTlSnULYGMPuu9V6D3DjdO55VneTsRXJClos7br1?= =?us-ascii?Q?kUpSdJJErUqY8AcoPpUrNc3FQecMt0Rzo3BqdkZYQgfZ2Xxo2bPmLA8Sz5yz?= =?us-ascii?Q?f8SVz9Qmwu1AGNQKPRRrzwbESYNfWWAeHMGe3wf5RrKAzZUpmh4XH2fTbDcl?= =?us-ascii?Q?offwc6w5CnDUuv3NGuo57iiW2GvPuM5U7wRJBr/NL/L14llbQt5X3hSn/GQ0?= =?us-ascii?Q?H+cpmFkWh9jlB7oSjdVWHOJZa8WBDFiqU3UwX2rq+490A5WD6lqsN7hKqt4Y?= =?us-ascii?Q?wHdOM1qKkinZh643qTo8yssUN9NC0V+4IFmoSdcHENWGrVblAZ0v9ctLaq0t?= =?us-ascii?Q?RAgVfPI0ZxJoAJtPfd0VvyFm3wF2hOEXs/uuogRh5HtV8ibm+DGqVRX6C2P2?= =?us-ascii?Q?XOiP7ZxRjq3pkyeJpfIbuUTsFNpCKFpNTS86yEecN6M9Fno1xIjJMaSacN6N?= =?us-ascii?Q?5wZ54zglrUVQ8pFX29yJoyRFohlpaRs1oxPZ1Z8LaogLZihy/i0s0iVjYxgW?= =?us-ascii?Q?LNtk+4ltRWuJgnh9eKmDg/Ob56mK8KZjekh7EoXXq/LL5tinoZBiXXIVK/+r?= =?us-ascii?Q?3pI72Te8h4qmpnn3oE656LITPlNBG0Ci3plrjUhu0iY7GQF44vwzbaL/+V6C?= =?us-ascii?Q?H2b6Bq01lQkdcSRXziaR9oLM0wSCvegnDolgRsbvZWWL+MaxxjWFQVILAzn5?= =?us-ascii?Q?EHFEXutrak4mM+0pwGj3mujaY+JiHpuuD88sR88I6/OuAoxJswYrphygmh9I?= =?us-ascii?Q?tKjbWlqNymypu+khObipytDI56Azgkc+uRYs4IH3WxYsQuJTDo+vTgVpAKPi?= =?us-ascii?Q?yL3wj5I7Ti5/8kjaPCoJUOxlN+KRaUSUB5ew19gawprSW3w5fuijj/tFC1k+?= =?us-ascii?Q?8JXfID2m2o2x6SF1d/3dwZcOB3/XqRfYO7aQqH6zH8Uxf8DiLOHKJVppjT1r?= =?us-ascii?Q?3MQYHxSAZ1QmenfMJjPp3gVREYr5Zzo=3D?= X-Exchange-RoutingPolicyChecked: J22SrjKZwszNeghgC0cmeykMko0bIMXDV/kfAK2mXFVVHtisNuBdRcY881YOMqH8m7bHXNIfkx+/BvgOhRPM/H71AgsZCs2D3b4pM9qmD4M+kK6qcHQRHyZG12J+RetQOz/UKbXCMP2iKFIydArUpsdGPyFkxb1qXYsCr/2iGGxBmMiZ/Lj3ragYG1GN+tYqLYGGyUp54onCYyLvKV45KOxNxOtRAr1UxLOeSAMIAxqtW/zfCbfs1D/C63XT6aLKIBMRzG/3GOLruc7HJbupPCD/am57N7AQrclnqX9T7IKdvbTMqhALBLCbbjAbvH9yKLXVtur+kAtcdPjNRGNFkQ== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2529dc18-9e6d-4aa0-29c3-08dec2de7b79 X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:14.4906 (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: OCvbvHFac2KpjRICs84UeFrdDObql+DezhegCnU9wx2PDqmJ8tS1kiPxqnE9WlVWMMm8sNNGUZN8+B1zwJ2yZkLahozPZzTZ94cg7WaP1Qo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR02MB7812 X-Proofpoint-ORIG-GUID: tpKRwOaUesNjFYYoXCN0CY9H4lXrLe0E X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfX4Ih8jsf4r/kn wl3PueC4JUKOOzdJpICn4b87BmbuiSY77wHZ0Y9kHi4UXv8pQ5GY6AtvETSMlXXHf8CBTZDFPTe phOBbLJR8YX69w06STsIlK3SqfbxhIZCBr/DLdtBsmD56PHjer+lfnMqsKM8+LVBFfzH75h0xiR FQmP9YG2bojf4rmQ1n4XdS1JKGDHd/E9QF3yyy1kAHoQr+evkfj3j83fz4/UbW0lnxPOD9yRJGJ AmLihYkwFvQ3UwOslKz8GI9uPyICXR6GSitsngJQj55iB2kTa0xjruUsDXE03ZCOdx/XJ8RgwhW j6FRmjDU5wlYhBkwNoqIga7VHIR8VSSkwe216jO7AV6WL2WYiNcREwRv29v5fimdLxk0RLJoiVh DZsMWZ7YgRFL5fTI7YCmlr5gpXO5Lk/21IFizqy6xbEfEyQdkVjCC/83pn4hmAhR8eumTiUCDtM U7eBqkNNu6g7UOtdn2g== X-Proofpoint-GUID: tpKRwOaUesNjFYYoXCN0CY9H4lXrLe0E X-Authority-Analysis: v=2.4 cv=dYmwG3Xe c=1 sm=1 tr=0 ts=6a228c26 cx=c_pps a=Dy1/g0x6RHl9kMZQX3cATQ==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=y4UcunY2MAxhM4LwGdWI:22 a=64Cc0HZtAAAA:8 a=3X8xa_ANkg3eZRcqrlcA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.151.68; envelope-from=khushit.shah@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649352653158502 Content-Type: text/plain; charset="utf-8" DCZID_EL0 is not trapped by KVM and guest reads raw host values. Read the host value directly and populate it in ahcf->isar.idreg. Signed-off-by: Khushit Shah --- target/arm/kvm.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 46d5532061..a12fa7571f 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -245,6 +245,18 @@ static int get_host_cpu_reg(int fd, ARMHostCPUFeatures= *ahcf, uint64_t *reg; int ret; =20 + /* + * DCZID_EL0 is not in KVM's sys_reg_descs[], so + * KVM_GET_ONE_REG will fail. Read it directly from + * hardware since KVM doesn't trap guest reads of it. + */ + if (index =3D=3D DCZID_EL0_IDX) { + uint64_t val; + asm volatile("mrs %0, DCZID_EL0" : "=3Dr" (val)); + ahcf->isar.idregs[index] =3D val; + return 0; + } + reg =3D &ahcf->isar.idregs[index]; ret =3D read_sys_reg64(fd, reg, idregs_sysreg_to_kvm_reg(id_register_sysreg[index= ])); --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649141; cv=pass; d=zohomail.com; s=zohoarc; b=jJ+UjmZdz5qTUcCyG9t8wTd9swjtz35WcbNCL1WSjhxAnqqFox1zhlkYKG9opjo+BoW2q8cunBHe3WJpkhCHLoQSNpaSJg2vCdkGySYqik/KJ1MVZ3Ogr9n/PtmBGEcWpSskP/x7qE7nmMxyhScmkn4etgL5ckcRJ6Loki7O0Gk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649141; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=knB5ioh0741/ZqakZdt2sAM9KyDHIeG+aG0OEvEXT1U=; b=RvkOxIZBGQGYNpnANuQuqZKMx1n7uaSzYeA7yjs6of4HpO1B0er+is9ZXE5xK0N/IO3owaoWURNZYjeKrUig0aLkF/UdzrcN34rGSjgwKtLhTluAYVxeP6/fp+wT/b2DS+eIGHI8HSIzoY/iHguYJ7HjfGfmxHZfsddORak+s1Y= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649141683259.3358896467854; Fri, 5 Jun 2026 01:45:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQ9i-00062E-B9; Fri, 05 Jun 2026 04:43:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9f-00060A-NG; Fri, 05 Jun 2026 04:43:51 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9b-0002Tk-Hf; Fri, 05 Jun 2026 04:43:51 -0400 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 6556OdLZ854749; Fri, 5 Jun 2026 01:43:19 -0700 Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11021094.outbound.protection.outlook.com [40.107.208.94]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejupdmnv4-14 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:19 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by CO6PR02MB7812.namprd02.prod.outlook.com (2603:10b6:303:a7::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:15 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:14 +0000 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=knB5ioh0741/ZqakZdt2sAM9KyDHIeG+aG0OEvEXT 1U=; b=U/uNIc2/J2XavXrk/aFBvj0LctYpARFh9vcpG3b5n8QjkplRkfQ8Xbeg+ au2+kx4+q5JImNGpnz8ikzk8cALf2F6gC7IOeVwRFNG+HTxEEwOMHO0ygAeQjgK7 pnbD+5qUvtT2zwjj1O/9ULzRcvxYPtiZPrqpe6+qfjJaMB/U/tL7bp/jlPrBNjmD oAhfGm2WHqVGIG/Qjbt+F9nrv5jK+WV9or0zthGhLZih+Hjn2uX3T8Ez5UP8WsL+ eUL/TIstHqg+uUKmlr6/zh+l2E3vsVTz8G0o0+YcqtfWza3wCTCSjo1l8bQZf/tV f8i+C58vGbmvqY/lcqfr/L4rfVTUA== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Q87QuqCFaSUuYp6WU82tpCK80PbHdrX9ve5136mkd0K9W+9f2RpU08WO6ltlBf5s/PcMf7032AYAxV6LLABhXB6xfjJfZIZfDpxh2iCSevi16OSDSUjI9/9BGoXszlWafZ19xRpDhOE7teqGNgmtqyV7hLADVhHbAD8c/73LulFiHZoBFvXvc8T1knRMgbaLxJKiZ+HS0BzcW4nqH8wIUu1UkOcUvZJcww2NFD2RCGolrX/BH/epEV0nn7orxvMo8pa9CZ6e3Mz8F6QXo0qpahCXGRNBsPj8CczbL8uS5IZBY9CWUJcrYTlesFekKINVdIWO0BV0qftB1UQvazNuNw== 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=knB5ioh0741/ZqakZdt2sAM9KyDHIeG+aG0OEvEXT1U=; b=jehF+8uyxSLkrLOyxZ5Avn1gCszgigg58cvCmOtmkA5llz9805dmF2831cMSmAA4Vseu1UV4TsreFV/nyTcHjRzLQS2VurBK+zKqQQ88SzcX6cFuROj7IHnMBDegtn5dtJ9FgKYvgWQyPnDnVDko1kGR8QGdtfMOdgy9Fz0HuvX+yQT3rsAr2cImQTDM7zybmAWPHQ459kfkp14DbyvFSrIPSIDeQsHqw8gU+eoB/fFjG8EEfo/SA3APjOMLYQ/jLdtnruuIQnaQ92nVHQVuHQvG0pzhM4R7Shf9PYcvkE+PTEpUXhBydr+S4naiyMC7rGVb8zVyz1UN+xX7Objjew== 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=knB5ioh0741/ZqakZdt2sAM9KyDHIeG+aG0OEvEXT1U=; b=KxRjaoAKBIcFfzGXTCnExr4Aajk6ZsUd6ZFZY0DilbhEmHrA0oBPpK8D3fM2ulYToKJEMc7R/ILjPkcvFrKyorc/vMtdRVsdMre0L46s5zob1c980fRuIDPh+rzJXAQpWvHN0C/52oQPK0+U6GbI43eQSQSLAOLtX9Hf4ESFrGB9AnariyjV4Br0wPUqjTpaQPlghh6JxHvUeKcAWH5HT6drbZ00CU4zi2/GqcDOVCu9vs2eJ7TvU0p2MNlLl1ByP7lAzmZiw2lmBzVNhRaPKOHHxKrxxypG7PsD/Rq78QKUJDCv04vWCneD8NcsSGDFGj5d0dOhgEfIwu/1jSjXGw== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 16/29] target/arm: skip GIC, COPDBG and PMU fields during KVM writeback Date: Fri, 5 Jun 2026 08:33:45 +0000 Message-ID: <20260605083358.1320563-17-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|CO6PR02MB7812:EE_ X-MS-Office365-Filtering-Correlation-Id: 0efac1fe-06cd-4f2d-36d1-08dec2de7bbe x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|7416014|366016|6133799003|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: UiL4CyUKWUYQpok/UgnIVl+GLvZZJ8vs2TRjqh4LbotFTg1J5SdlYT7etzzSEILHxOrdAeBh4yY56p2JEttgG6E9bGLd+zU59ePjkQtWY1QoKtdIfkU37mTqLLlA5ebb3Rt4enZZvp+XynrDA6ekILWaOFR/s23NBW083VuQlKQeLQjDUMwmSrTstKSymNDfe9D12EJL/ezMmEX7DZgQpo3D6QJ1J5fns6Ym782wxA/oZvrfrwNxhX4hJtWfZOSA+adNhTaELy/zrWjdz9GouGTCWUDew50nAbP7VWuhOeRahEIefXJTusTiZaH5FLj7qdgtMu7TbDjO5h8NvBgeN+BJtQm0miCF6wnP7lJK+7yx+wn2i9jHBdXyr8t8rkXg7ZX2UX4/ctj1vzVxXIrQO1WDM6baGjlZI7NpDj8pbwzKVErfIufAHVKqONMRm5PS3QpMawqBObnyPDyukLXP4DYRN9/u3gpUqQ0F27sc2dP7Or1mIaI/yvgVNEor0vBsYLxJPO/1GiG4KyyhQEPFpx1dh16NvvEXYtcRfPyfWAyTbExB1DifNdyIMUVA4DraSMC9evg5jWobrmR2rEbtyHHCde0Ab+g9/zmXspdu+eToOningX+07I7S8Iez+a1lnoKOQsTsJQVlQI6Nvw2sp9EA/0JwS6wBWTTaYBztXpPvVNX7iOxbFZe60S6ww7eZ X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(7416014)(366016)(6133799003)(56012099006)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ezeWO2W0MLN+EeLRMcfF539h9PgltYkpibar4bweuyzEoYCJKtEbWfuLjJq8?= =?us-ascii?Q?yp+HJixIReN8CwahnYuZrpbVbfWDHW9su7wzF+g8NbsuKIM5bmt4iTfBAUqp?= =?us-ascii?Q?U7rQMGTT72ZqFToyfc1bMcNZ27b3u1S8TwZeEIvpLD8a/mYgVQu9m65wVrHj?= =?us-ascii?Q?Km9DwvRj50w1PutXJ+LcWzO3KC+5nrZrGsqIA9HUY+95PWMlroD2aLZhFaok?= =?us-ascii?Q?g+nzeWy2UD3YeFUkcebhC+t4SzLDvnd3jHf0kaNiQ+GhGhhgh/bmlaJ2Q7aT?= =?us-ascii?Q?1LbJYlO59HEEbe6GVi2JqhuQ9ytdmb6lQg0LfBCSSe5kJo6orQDyQdSv1ZE0?= =?us-ascii?Q?Jjo6R6t6IzalE0LMvhECbOS2SWrSh9+xvyQ33X2GtnyuF3rQ5f4IPF/ToS7F?= =?us-ascii?Q?oe6hPCBSFhVnK5ZS9fBuUIm8O2Jnmp2xdxh2Tc2Qt6WtYJ4qkFRCEvckIhsQ?= =?us-ascii?Q?iU9u843vBBt0ny1RZCBvMOnojg9HJVFBeXkB8Omqlqyzz10sBVCkXTmQvHsl?= =?us-ascii?Q?rJJ0/1laznCHFQnrefFBT2FWEcPt+5AlWgQdbXNfuRHAI1GhByc3VJ9h8CNu?= =?us-ascii?Q?u/XHYz/CBalVMAXgyU346SKhTnP1v9AZnFWKu/QeAq9j89g0hzSMq1lecotX?= =?us-ascii?Q?XK9QVCeo8UKtPonU3vcXlpGXqfhRiKbrnOAc9kvsD48NMtN1snnsAy7r3vWH?= =?us-ascii?Q?izsIe1VMDBXYReOJqddxZC/Q3XanTRk6H0c132/tXw147NPua3cBbW61jw1r?= =?us-ascii?Q?PfYHuwHxjpDKulZzXy8Iqy3GQIUjdv3OEpvUodXbmF7unSuhvLU2ibEOeRA6?= =?us-ascii?Q?boLnhqafLauMOiWlIV4nBUTBjQ5hQ/i5p9WlAc/4nvzWzqXksKlVA8nTLaWI?= =?us-ascii?Q?szJ+u/v5H1dYbFPywH7wPp84/2qbe7Sz63wsy8f3YX66ZIRYoRs/tnu1SDpO?= =?us-ascii?Q?oWVZwD7pX5vOYyavmjLi+4PqoOuC3wo2332lMdYMtaehC3EATpV3FGEztixY?= =?us-ascii?Q?dE9vJ6IWf+UVQ+K0U62kB4Pix0HCw4SWEhotZWZ37O0y/T14ZkKPaP+F6l1Q?= =?us-ascii?Q?nErFehpCSze3Psf7nGTLC+/tPYC21DRwZN19HV51pq8pY/bLMsWmPhpFar9o?= =?us-ascii?Q?SawnP4xF1xB1pKctu+Uugb9x2Z1LaLO9hFt5EyKIMKYrQkAYLdosL9RzV5qk?= =?us-ascii?Q?P0XG9w8xjQMP2DMKxvcr4yxK5n+HlRFEOjwXxC/kKathHJI5Gg4Thaum89hF?= =?us-ascii?Q?evEszravWREfezKwGzs3ndCj/yZbn43wz3+UIWOXm0PDUOey0XdZKRY1CwPv?= =?us-ascii?Q?kwHs4bAU0PZnyzH06cWLEP7G2mmMjVPnMKvfbAtca2E+Hwekhw+in2JYMjjf?= =?us-ascii?Q?uQfCIgB37Rzbi5GxVI8MKryIJmA4VPwrEpaLYTZfzhvn1h5MmxFHrcQ9lTI0?= =?us-ascii?Q?6LAtRdtVbtZE/U5036rpeHfeEnr4LY9IlFJarroDvN5WGOcLcnc1DQPjlQle?= =?us-ascii?Q?qEGVP2U5LjU9L819r9I7QfmOHCNWAVTlOGBSu72wtbxwL9kyzItwIQ3WES0D?= =?us-ascii?Q?bfGQlxRbQAERkH5f7RAN+9KD26DMAcXVLgeOdnHh89GtEW0mZPuWlnizxNgP?= =?us-ascii?Q?4CZJaaGuS+Wl4qnwDUQy03Y88jdPgzR6Mv6dmH2jPpGcozrJpsZTlyUbi42w?= =?us-ascii?Q?xxbm0bqHevUQkHg53tmePZN1+S9kanr21wFvUVN6zgJCg8uikWe5AcS0BJHA?= =?us-ascii?Q?pFPuJAR3NeAMOo0h1iN0REDl/K1rYtQ=3D?= X-Exchange-RoutingPolicyChecked: qJTk4xBsw6FXcoaJlS46ipb1gDlg0fG4xg/VX0+n8GtVlreZbrmHC9o8a5s+ZPcSXR0M+A+qfS80UlYXEKuzRiO+IOSirwMIYghDDqRBAej//lmTckG4xdn3zgzAmLA8/0GP8SEI40SFty3IEd22dgQCwNMxOr2GU8g1S0enpfBAsninxH3u00wxMzPK7yHyEoA12x3mHrxDMn00cp8MKKc2vOeJqHfvb5EScUA5f2g+kvPRjTe9x+dUdy6r9SjU6FOz2aGZV7o8+vgd5GFcXuiWIHbC4dOq5L3pt98xoFg6GoAOeEK0HDJmwZKTt7e0sCuWvuNud8xlj2BcEy7AFw== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0efac1fe-06cd-4f2d-36d1-08dec2de7bbe X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:14.9331 (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: xptr/U2UgTV8NU+QHRNW7UkFJKi044dLtBE4EuEqyN2SH65OtHX7uSzDuQnXq7ubFb1nhcf1zCg4fcTL+05BHGe0AJnTVgLJ17G4H7edilM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR02MB7812 X-Proofpoint-ORIG-GUID: iCCNvYGxN2pVvz0Jzwi0r_J5C5rAdaqE X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfX98sk2mtkJgOB VZAohQkadrHUupNJPzZ8mSRnWPjdyRYcDYB2Gp0KfUH2pHlb6+DKkFV15V1M/0bO9qmsRRqytbj e8tRauMplkPDiQMtA5nifSlL6Z4qrlgJ/D/fj7Kmt5eaUNjgvltTgV6luc5M/fqYp7A0xBztB4c k+iy1Luow7W2YdfH09PK8mfT3dymvuOCO7C9EU1KTZsv32QtSVql3L4ZrmdXbsFWGpGrrJdiYje uc/Cp9O2nxLXrVoGy+CpSDYzf/81md2GFhyhxbMZwi6COjHEdECNMMmQ1rNGvQCS5jvoUed4Fdv dq+3UtjQpVoZJoxJGkElM2FTQlHcJ3+D7/YiMrWrb10iUc6kaWpROZTodxSuyAMnwnhIDYi/iei GTNJW+kqiLQRZDS0+IDwWi2lApzUiKfGase+lVEgUDkyheHP3hSUVYJnx95d2zJu5QYjmOUtwk1 h05Xz/lmYD2rTrlLHiQ== X-Proofpoint-GUID: iCCNvYGxN2pVvz0Jzwi0r_J5C5rAdaqE X-Authority-Analysis: v=2.4 cv=dYmwG3Xe c=1 sm=1 tr=0 ts=6a228c27 cx=c_pps a=Dy1/g0x6RHl9kMZQX3cATQ==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=y4UcunY2MAxhM4LwGdWI:22 a=64Cc0HZtAAAA:8 a=X31tx7l4y37eYe5q7xUA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.151.68; envelope-from=khushit.shah@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649142031158500 Content-Type: text/plain; charset="utf-8" A few ID register fields must be skipped both during writeback to KVM and during safe-rule validation: - ID_AA64PFR0.GIC and ID_PFR1.GIC are owned by KVM's vGIC device: when QEMU creates KVM_DEV_TYPE_ARM_VGIC_V3, the kernel sets GIC=3DIMP in the VM's ID registers. named CPU model should not tamper with this field. Hence, skip this fields during writeback and during validation. - Skip ID_DFR0.PMU when the field is not writable on the host, since KVM populates it even for AArch64-only guests but does not expose it as writable. - ID_AA64DFR0_EL1.DebugVer (COPDBG) is always skipped because KVM refuses writes of 0. Without this, realizing a model that does not support AArch32 guests on a host that does support them fails. Signed-off-by: Khushit Shah --- target/arm/cpu-idregs.c | 47 +++++++++++++++++++++++++++++++++++++++++ target/arm/cpu-idregs.h | 8 +++++++ target/arm/kvm.c | 23 ++++++++++++++++++++ 3 files changed, 78 insertions(+) diff --git a/target/arm/cpu-idregs.c b/target/arm/cpu-idregs.c index 84e1d8d9f1..91bb899571 100644 --- a/target/arm/cpu-idregs.c +++ b/target/arm/cpu-idregs.c @@ -307,3 +307,50 @@ ret: =20 return true; } + +bool arm_field_is_writable(ArmFieldIdx field) +{ + uint64_t field_mask =3D arm_get_field_mask(field); + + return (arm_idregs[ARM_FIELD_REG(field)].writable_mask & field_mask) + =3D=3D field_mask; +} + +bool arm_field_skip_writeback_always(ArmFieldIdx field) +{ + /* + * GIC is handled gic-version property, and the values are fabricated + * by KVM when the device is created. Skip writeback always. + * + * KVM does not allow writing 0 to COPDBG, this leads to an error + * when trying to boot model on hosts that supports Aarch32. + * So, skip writeback always for COPDBG for now. + */ + return field =3D=3D ARM_FIELD_ID_AA64PFR0_GIC + || field =3D=3D ARM_FIELD_ID_PFR1_GIC + || field =3D=3D ARM_FIELD_ID_DFR0_COPDBG; +} + +bool arm_field_skip_writeback_if_not_writable(ArmFieldIdx field) +{ + /* + * Even for an AArch64 guest, KVM writes ARM_FIELD_ID_DFR0_PMU. + * Furthermore, they are not exposed as writable fields on fully + * AArch64 hosts. So, we skip writing them back to KVM if the field + * is not writable on host. + */ + return field =3D=3D ARM_FIELD_ID_DFR0_PMU; +} + +uint64_t arm_get_field_mask(ArmFieldIdx field) +{ + uint64_t field_mask; + + if (ARM_FIELD_LENGTH(field) =3D=3D 64) { + field_mask =3D UINT64_MAX; + } else { + field_mask =3D ((1ULL << ARM_FIELD_LENGTH(field)) - 1) + << ARM_FIELD_SHIFT(field); + } + return field_mask; +} diff --git a/target/arm/cpu-idregs.h b/target/arm/cpu-idregs.h index c2ee82597e..51cc5ec341 100644 --- a/target/arm/cpu-idregs.h +++ b/target/arm/cpu-idregs.h @@ -96,4 +96,12 @@ bool arm_idregs_validate_safe_rule(ARMCPU *cpu, bool arm_field_check_val_safe(ArmFieldIdx field, uint64_t val, const ARMISARegisters *host_isar); =20 +bool arm_field_is_writable(ArmFieldIdx field); + +bool arm_field_skip_writeback_always(ArmFieldIdx field); + +bool arm_field_skip_writeback_if_not_writable(ArmFieldIdx field); + +uint64_t arm_get_field_mask(ArmFieldIdx field); + #endif /* CPU_IDREGS_H */ diff --git a/target/arm/kvm.c b/target/arm/kvm.c index a12fa7571f..cf6087d337 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -1225,6 +1225,29 @@ static void kvm_arm_writeback_idregs(ARMCPU *cpu) continue; } =20 + /* + * Skips fields not to be written back. + */ + for (int j =3D 0; j < arm_idregs[i].fields_count; j++) { + ArmFieldIdx field =3D arm_idregs[i].fields[j].idx; + + if (arm_field_skip_writeback_always(field)) { + diff &=3D ~arm_get_field_mask(field); + writable_mask &=3D ~arm_get_field_mask(field); + continue; + } + + if (arm_field_is_writable(field)) { + continue; + } + + if (arm_field_skip_writeback_if_not_writable(field)) { + diff &=3D ~arm_get_field_mask(field); + writable_mask &=3D ~arm_get_field_mask(field); + continue; + } + } + if (diff & ~writable_mask) { warn_report("%s: non-writable bits differ: " "kvm=3D0x%016" PRIx64 --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649088; cv=pass; d=zohomail.com; s=zohoarc; b=J5Pk07J1vg+rkwf5c2WUX7+IPW+ysL/vPyHoa+dztCLvLpzID+j9PhZgdpSkWvAetYTeSMF+p4GSY8/NjRUU1btfxEg7lECMs4xBtWPAYvLUe6SDnxHbTpvFo6A6+uQQz3CCZyMvCrcCpZzCPAUlYM7QnOGCig/1uB0HmaMhvQ8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649088; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=IDJdjnOhS2BXWdfHG0C8C4reDPyRPFg0F1ED9NproM8=; b=f45PxNpGRXRmT2sYaM3lXdLS+aYnfK2AbYRCpJK66CYaDyCoZ6aRI/XCu5kjqJ0FOLhmtfS6wES8ACMIYmixpfYzcIh/GGiLzgo9gcghpu/W69aEwckV3caZAEBkmj7nwvYgL7+IH74T5FCgVoSjkVZnagaUWT5rBwRoHy5Y6U4= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649088563462.107022241329; Fri, 5 Jun 2026 01:44:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQ9h-00061o-UZ; Fri, 05 Jun 2026 04:43:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9g-00060n-BT; Fri, 05 Jun 2026 04:43:52 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9c-0002U7-49; Fri, 05 Jun 2026 04:43:52 -0400 Received: from pps.filterd (m0127838.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6556Ocu2889016; Fri, 5 Jun 2026 01:43:20 -0700 Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11021117.outbound.protection.outlook.com [40.107.208.117]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4ej5a2fxwg-4 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:19 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by CO6PR02MB7812.namprd02.prod.outlook.com (2603:10b6:303:a7::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:15 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:15 +0000 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=IDJdjnOhS2BXWdfHG0C8C4reDPyRPFg0F1ED9Npro M8=; b=jTKO1s7x5wMLgmLkrNMdUxBQ7zv+PlrYW9X6rJO3vbSEn9fqixvwImj90 +NY4P6P26Vw56TV17atTC7uG3UHEmKuAygTHxxg8ITslUppf2yJPMz1GXajsiPdz p7o548O3SbGFTR31D8sHorvY+/tsI2j/7d5CMUkVG1z4Irmdp/wYSYtq1+VDmdMK +OpkDRXLeTXAT2pispCD5cxJFVYCxaRQs/nmUNkFea35u7D7Netm2493UToaHeqX Moxo36hPdkJRGeAB9ERJpI5Q7MLMnvp/k0HdNJkU8NNaXQ9pdGQ99sUr+yzSGr+3 Cvd6Tqn17mLXjWxwyUZSmpz4oBv2w== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uMZtwHWU4Kn6ZlAHoy7VKkXFhvAxW+alO5cBwft5O1dYIbCjx+rESMwsxhS/eryY5gH/yGbbTZUxRrR0xuoEynQx+QyJm5zHCiFIqrXrVUwMDbzy9O+ubhs076GeYb9DlccDXncpYoDfv8Dpq8qJdK4gCW24nNHclhAhaX2iwA7wSpjI11+j3HtgfReJoPAlIJCL5pRqD4JK9MOYFJ2lrfkZITLR6VNTBTIa/RlTkYFylrjeU081eI/7GwMyZH85mNAmcExl0/9DGN4vM99ETX6+cAskBwk21dK8DclxLgZfidK2EywcpdPL38Iq3pWw9SWebV0eYz6GqPbbLdqmsg== 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=IDJdjnOhS2BXWdfHG0C8C4reDPyRPFg0F1ED9NproM8=; b=QtGplJyOHX3BkzSe1VbNhedfyh0PR4hDyVOjj4r2PBz5nBi9I4M/uUEkSAuUrBv9y3C7vn6S0l2k3jxu+Yh1VSCVdDKibMHpR+9P1tsLraQjvmo0bzahozWcFB9PtaZVSajs62kIcF3O+IO880fb5MilxrW5tJYkISzJY0S60RUH7U5Rx5xXG8upcGGSbzThId+nCZnGrvg5NFYOq5nSOvUt0fo3U37tka/VTLfrXLRDyAUqt3tABT12kKrGnUnAc9BuUUw/QcA+/7iUSxt75teOpTOtpMF5CC+NDhg/ZR8C+mIfo8KULsfCiCCaHKigrLKko/dcFPO+qiI5RYZNHQ== 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=IDJdjnOhS2BXWdfHG0C8C4reDPyRPFg0F1ED9NproM8=; b=Cr36SwB02/+lTtLntrxyixe6w8Rag99p51U3hclF0PvD2w9peXfh7yBfHYryagFYXig6rgS4guVvCbv2K2y7YvNbLmPOLLBYXIMdP/Uy8TlHTymOdHwGv7FRtWp2X+voNg1KaSmmyDa1mJevQl8m59rWebEDCKmeos8UezS7JgWGMue2bV7FZmhGaF8zWSnL0j+cUEkZvuxNrVVOycAPOJ2rvEiX8FoBTsuPjxkXHv5T9fF2/b3s6MfPl59tYcW4YQwN3qKFrsHFpF7GoI9mXE1KTmGa6nu65bBa0gj6AYmT1I93onX9+Kqqefc1yeGGCmaRDJwH8aZB+FriH5C5Dg== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 17/29] target/arm: Add composite property type to model definitions Date: Fri, 5 Jun 2026 08:33:46 +0000 Message-ID: <20260605083358.1320563-18-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|CO6PR02MB7812:EE_ X-MS-Office365-Filtering-Correlation-Id: a55163c9-add0-4e33-f9ad-08dec2de7bfb x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|7416014|366016|6133799003|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: beSgKuIgzGDIEnIulLkplo8898Dd3kTu2WEauSk4IDnPoeDRQDePSPJCcksTdroDdSmW5oNX6pVYiIieczqy22oRAqx211402GvCozO4Omz3X0yIYxfqIXsHdXCEHZx4a2Z7iLxOGndU5VJV5j0hdYFPrfEPwWMDVQ9VjZ7BgyxapvKkItQXDJ5IET0iW7jrk+AJzZqvttnR4B9qb3Nvi9HdiOaT8ZZze0J5h6zCWqOjzDzJZjl+VRO8qQQwUQ740LeAacVDAaD5tsui91IiEiI+24xs+6g3QlbuWeNWB3HCUaROUUUQ9yYQWSWdKJ8AxI9kx9KoDIYqjVePNadF3Js4D3Wfne8b392QcdffYJsbYXAyZ3SeYEZeZZF212REqce9gRvTm6g1vWeUqH57WHUxK7x2pw/0XLUBbo8UgGYnPcKhdNjVdwj7RhX8CVxKHpKuxGmeG7YPMsn6NoHPqQkWhu0z/cevL8txUUlSNUiQQyO0hJSm7Te+/UW1TbjYZIQrZIBcFt3ZVfqXzc8cWCpJ2iWoxpNPJXnGAxzfbxQlyA47jmY9tYHCSt0qspI397tssZSto3DqmaD/HMdqnsV9Q5bUTXxvp49Cs4E72BPwFPMraP9jAa4qhOUMklhXPdlkn54BFm4mLurv2KmJXcadF3nlQ2UKlW52orJbVM99ioaOS5IPYG3il8jzTppS X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(7416014)(366016)(6133799003)(56012099006)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?kl1qO/r/QSgwuOCSk1DykAcsaiVqNLVk/d0sy5/0UyzYgmzmZ0pJh+aT5njP?= =?us-ascii?Q?BhLwMRzNfcLdKdwesyIpp5kbJDZqzbxw+r+v5/jBhlKeKvIj8jkPSSqHwmvt?= =?us-ascii?Q?QBfGdaTdJIRWTDSQOFavMVnkL9+XBlv6NZkZrd//GX9uf4xvzOtzA9e49w5b?= =?us-ascii?Q?0tvxiPhBMbZmhJ2GcnkoV2d4bpNONErGYyC6ymmXGZYZlIRSXY6LPjqrJ/dY?= =?us-ascii?Q?ehr/zYrMd0UxN20i0tbiwHyu9s35P1nkFXsEnKGzxKTo9uEF0jbK0fdQYgJ8?= =?us-ascii?Q?4y8hG5DtfOsQM3b5CYOflkETBhBMSyL5zS8RZWRKEYNTGCdy1FMDp7VT2lxA?= =?us-ascii?Q?KmMIYf06USlSJ0qOM/C+d3d0/XV6+XX6Yv4/79ow3qjtXD2DK/05CTb7cIIT?= =?us-ascii?Q?mwklzlTQmmFLItRF/ZvepegoJCulCbQijIAi7QntSOyi3i02ZuSczPJdK6zW?= =?us-ascii?Q?MuFXsyWL9SgIeZeuZkGMWaS9sm7Ocv2Z/UAVBfrl6+3svUesF4kFGeBfm0I5?= =?us-ascii?Q?tZ84ch8aFVqP8NC/e5AqGKrn+6D7wm6ne3eKJIdw1gI76EeOh74I4ZliXJQm?= =?us-ascii?Q?Ud2mIApyIAKp56jdc5eGte1+iUf4qIPbQ9z4j9X/lIa5kK/xXQKE/b3qbHfN?= =?us-ascii?Q?x90fXm+RTxTntsFGYwxUYXgZBon2RSFjGt2d9vDdOARbBFpjNwgG9xhQc8JU?= =?us-ascii?Q?7/Q3QQ1+cHt+YzVFWq8AnPCzc8+zEIYXpGI4+uKSFbzweGvcNUU62RQ2nAnz?= =?us-ascii?Q?lzmjzRrBiN0FJk9ebPYeyEjdDqfcKdnvNGtPblPSE6rvEE99r7PQ//H2Pn5A?= =?us-ascii?Q?ccHiv7Ubi9D8Y/MJR49fQDfnmN3OiGywvkr4FmiBXsWtjFmzxoI/ZKZgCk1s?= =?us-ascii?Q?8lT+GsgfEl1axvfZhcyrs2qRzpi8eGQtxJ8RJoU3YPFV5W2awFky1XN034gv?= =?us-ascii?Q?HlISHZdritm+s/W8Y6hz9C8yyhWUxF8kdlGJOsjYZPECI5n5u/3tm0khjqLl?= =?us-ascii?Q?CGuUDc45QG4HQr/86uSJV4Hc9f/pQTnmoCXPCR1BxnvNkClY2sufOrkHJlBs?= =?us-ascii?Q?XYIIJFXNc5ZuG+0ZmtD0BObguFz5lkcWSZKTafwTRI8rRmknVWbdeHICH79n?= =?us-ascii?Q?xQ9Sk1Be21Idkbl2MKlanPOeb/cClpYx84DzcKh4lcqpKrEliSNdiWSU6tuZ?= =?us-ascii?Q?va7ufhGA+07InsLVTSqj8w59sAqnFMu87qxxTfswGxbKYL7HcWN90SidJ1Bk?= =?us-ascii?Q?dLTzAya1wNExc11nRv7NkWJ63zP0pK1JXRB8BBL8v9/IfeEegsxexH+2ioIz?= =?us-ascii?Q?s8scPsJLnq0FHvs3Y6kcYgkgYxKJbOvY7tDY6DNtrMtICoFMuGOw8QnH45Rc?= =?us-ascii?Q?gtvXboRgglVlhaNegM/hjGSYI+sbqqtAT215f3NT373/A9Se7KzMuKnfCSSM?= =?us-ascii?Q?+ARwEPvFRJjBGiBgtIh5s8v75aStEPAXeE/a/2GE9UR3M1CU1Yv5prTDYR6C?= =?us-ascii?Q?lcvLapojTHBnBGRYIDQQEuNuxzXHXMInPn868dV1JlBKvLlKtkV0X6/+JiOH?= =?us-ascii?Q?BKqJptQdIcEI7JJJ+H0bHHYnNmPcH6aAcy/3X6Hj17GLYD55pAF5JoidFCHv?= =?us-ascii?Q?u9P2uhOA7BelkFcyU+MbmqW8SujK7g18GX4sifFJTqwTyqiP8m/aCicOkH6r?= =?us-ascii?Q?S8w8l2n6E5vQGeFEMQeCH2VbDWRfdUIrEGZjm48UgtzJFrHD2ADig0Ystciz?= =?us-ascii?Q?L34/k3oJckymb7La8VQcaSglfE4OVFE=3D?= X-Exchange-RoutingPolicyChecked: VLN5STmY565mEigGasNejXCaV2bFsFMKs/ozaUbbt46YC8sWC3M46yVXodVXC9Iy6EEM12B/rHGwZiruEu9ecXVrcWE3hfZIVOcR4c0iBPCdH4lBv8LsGzqvAOZE/Uuz4S+zN3DOkjzf32YpJ1QcLpto+i6dlQtn6FxQ8sEGympy6/HC38mpdscuAdD8SpKSDklF96IJ+O5CtZNwD7Mj4PKJro99Nfq1RQak5MIlU9z9ubRMuqmpH9m48Y7gjKky8UE989ytHdhxKZG8VQK5xUXNuy7NrIdjdVjpkjJLW7dMl9BKqStjL+W44z30poDZSEXmX+IS5dISaPyHdVQGgg== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: a55163c9-add0-4e33-f9ad-08dec2de7bfb X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:15.3188 (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: UBOiGeE011ruXjTxhOUk+GPcga14NDBtuFp1DA9zYKymIs6mLyjFV+jLnMs1SZ5Z3l1Cfr6+J6B1HQ45WZiqXHQaTlZLSn7+Jpl3JTKBZhs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR02MB7812 X-Authority-Analysis: v=2.4 cv=Mq5iLWae c=1 sm=1 tr=0 ts=6a228c27 cx=c_pps a=fJIB0T+C2yAfE4P2TQxPqg==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=1L6crL_YRTbalZ11mEUO:22 a=64Cc0HZtAAAA:8 a=lRQu-zcQqA8t1JtojLkA:9 X-Proofpoint-ORIG-GUID: 71d3dX-hnXzId42pvqrIXUnrnf9rlFqt X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MiBTYWx0ZWRfX36QUaI+gTYA5 Rrupk5GOYJKLD789/nF6QeMcTkgf43XH+WiSEOl3e8qTaQS/qeIrq3WLVXCpzVIIysMTxz2UVml ATZ6/G+xUQIheLLveH/BLnmX3AjaSxuCESOwBdxiQIQMch7MFoKOnt3LWdsfN7FAqU5MrguDIT2 rlzVw2XvcSRbzqVfPuE4msg0IVPOCO80vbamQXUwzDcD1/M2CxvMwZc+8iZUsyc87tgrZULwqUC mWVX/Okhzq1FkoNhtLeFiVHPAucrAtMhGL+8H4MS85fEiLy8HQMTPALF1zQKG3w5UzHsVfKD5ED 4o6dtVs34MpLsck+4rSaapLG4CtJJsweDqh+crnpsxR63AFTJtKcpUmanOoAgWVwbNs5oqKli6I 2WYCJyq8EBK0u8Vb2dF6fssY1D5pNFoaXuAy7uVVmygI1NjLzBCo1QNdkFgO8ar1eetSYNotlOO yzT/JhpKA7m5gW0aA7g== X-Proofpoint-GUID: 71d3dX-hnXzId42pvqrIXUnrnf9rlFqt X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.151.68; envelope-from=khushit.shah@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649090468154100 Content-Type: text/plain; charset="utf-8" Introduce ARM_MODEL_PROP_COMP, a composite type model property. It will act as an master "on"/"off" switch for a list of sub-properties. For example (pauth=3Don, appropiately set APA/GPA/...) based on the named model. A composite entry in the named model will have a default value either "on" or "off" and a list of sub properties. Which will be applied on the cpu model when the composite is turned on. Add find_model_prop_in_chain() to walk the parent model hierarchy and resolve a property entry (child-first). Expose arm_cpu_get_composite_ subprop() so the property layer (in a later commit) can retrieve a composite's sub-prop values given a CPU. Refactor arm_apply_model_props() into public arm_apply_model_prop(). Hierarchical inheritance for composite properties sub-props is not added to avoid complexities. Signed-off-by: Khushit Shah --- target/arm/arm-cpu-models.c | 81 +++++++++++++++---- target/arm/arm-cpu-models.h | 12 +++ target/arm/arm-cpu-props.c | 150 +++++++++++++++++++++++++++++++++++- target/arm/arm-cpu-props.h | 7 +- 4 files changed, 233 insertions(+), 17 deletions(-) diff --git a/target/arm/arm-cpu-models.c b/target/arm/arm-cpu-models.c index 230768019c..4b19049205 100644 --- a/target/arm/arm-cpu-models.c +++ b/target/arm/arm-cpu-models.c @@ -39,6 +39,11 @@ { .name =3D (_name), .type =3D ARM_MODEL_PROP_##_type, \ .u.MODEL_PROP_FIELD_##_type =3D (_value) } =20 +#define MODEL_PROP_COMP(_name, _b, _sub_props) \ + { .name =3D (_name), .type =3D ARM_MODEL_PROP_COMP, \ + .u.comp.b =3D (_b), \ + .u.comp.sub_props =3D (_sub_props) } + #define MODEL_PROP_END { .name =3D NULL } =20 static const ArmModelPropValue kvm_base_v1_props[] =3D { @@ -314,7 +319,7 @@ static const ArmNamedCpuModel arm_cpu_models[] =3D { }; =20 static ARMCPUInfo arm_named_cpu_infos[ARRAY_SIZE(arm_cpu_models)]; -static const ArmNamedCpuModel *arm_find_model(const char *name) +const ArmNamedCpuModel *arm_find_model(const char *name) { size_t i; for (i =3D 0; i < ARRAY_SIZE(arm_cpu_models); i++) { @@ -325,6 +330,64 @@ static const ArmNamedCpuModel *arm_find_model(const ch= ar *name) return NULL; } =20 +static const ArmModelPropValue *find_model_prop_in_chain(const char *model= _name, + const char *prop_= name) +{ + const ArmNamedCpuModel *model =3D arm_find_model(model_name); + if (!model) { + return NULL; + } + + for (const ArmModelPropValue *prop =3D model->props; prop->name; prop+= +) { + if (g_str_equal(prop->name, prop_name)) { + return prop; + } + } + + if (model->parent) { + return find_model_prop_in_chain(model->parent, prop_name); + } + return NULL; +} + +const ArmModelPropValue *arm_cpu_get_composite_subprop(ARMCPU *cpu, + const char *comp) +{ + const char *model_name =3D ARM_CPU_GET_CLASS(cpu)->info->name; + + const ArmModelPropValue *model_prop =3D find_model_prop_in_chain(model= _name, comp); + if (!model_prop || model_prop->type !=3D ARM_MODEL_PROP_COMP) { + return NULL; + } + + return model_prop->u.comp.sub_props; +} + +void arm_apply_model_prop(Object *obj, const ArmModelPropValue *prop, Erro= r **errp) +{ + ERRP_GUARD(); + switch (prop->type) { + case ARM_MODEL_PROP_STR: + object_property_set_str(obj, prop->name, prop->u.str, errp); + break; + case ARM_MODEL_PROP_BOOL: + object_property_set_bool(obj, prop->name, prop->u.b, errp); + break; + case ARM_MODEL_PROP_NUM: + object_property_set_uint(obj, prop->name, prop->u.num, errp); + break; + case ARM_MODEL_PROP_COMP: + object_property_set_bool(obj, prop->name, prop->u.comp.b, errp); + break; + default: + g_assert_not_reached(); + } + if (*errp) { + error_prepend(errp, "property '%s': ", prop->name); + return; + } +} + static void arm_apply_model_props(Object *obj, const ArmModelPropValue *pr= ops, Error **errp) { @@ -332,21 +395,8 @@ static void arm_apply_model_props(Object *obj, const A= rmModelPropValue *props, ERRP_GUARD(); =20 for (pv =3D props; pv->name; pv++) { - switch (pv->type) { - case ARM_MODEL_PROP_STR: - object_property_set_str(obj, pv->name, pv->u.str, errp); - break; - case ARM_MODEL_PROP_BOOL: - object_property_set_bool(obj, pv->name, pv->u.b, errp); - break; - case ARM_MODEL_PROP_NUM: - object_property_set_uint(obj, pv->name, pv->u.num, errp); - break; - default: - g_assert_not_reached(); - } + arm_apply_model_prop(obj, pv, errp); if (*errp) { - error_prepend(errp, "property '%s': ", pv->name); return; } } @@ -413,6 +463,7 @@ static void arm_named_cpu_initfn(Object *obj) aarch64_add_sve_properties(obj); aarch64_add_pauth_properties(obj); arm_add_cpu_props(obj); + arm_add_composite_props(obj); =20 arm_realize_model_chain(obj, model, &error_abort); } diff --git a/target/arm/arm-cpu-models.h b/target/arm/arm-cpu-models.h index 297926e167..3d4d805da8 100644 --- a/target/arm/arm-cpu-models.h +++ b/target/arm/arm-cpu-models.h @@ -7,11 +7,14 @@ =20 #include "qapi/error.h" #include "qom/object.h" +#include "cpu.h" +#include "qemu/typedefs.h" =20 typedef enum ArmModelPropType { ARM_MODEL_PROP_STR, ARM_MODEL_PROP_BOOL, ARM_MODEL_PROP_NUM, + ARM_MODEL_PROP_COMP, } ArmModelPropType; =20 typedef struct ArmModelPropValue { @@ -21,6 +24,10 @@ typedef struct ArmModelPropValue { bool b; uint64_t num; const char *str; + struct { + bool b; + const struct ArmModelPropValue *sub_props; + } comp; } u; } ArmModelPropValue; =20 @@ -32,4 +39,9 @@ typedef struct ArmNamedCpuModel { =20 void arm_register_named_cpu_models(void); =20 +const ArmNamedCpuModel *arm_find_model(const char *name); +const ArmModelPropValue *arm_cpu_get_composite_subprop(ARMCPU *cpu, const = char *comp); + +void arm_apply_model_prop(Object *obj, const ArmModelPropValue *prop, Erro= r **errp); + #endif /* ARM_CPU_MODELS_H */ diff --git a/target/arm/arm-cpu-props.c b/target/arm/arm-cpu-props.c index 3a02079ff2..5e876aa768 100644 --- a/target/arm/arm-cpu-props.c +++ b/target/arm/arm-cpu-props.c @@ -9,10 +9,12 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qapi/visitor.h" +#include "qemu/typedefs.h" #include "qom/object.h" #include "cpu.h" #include "arm-cpu-props.h" - +#include "cpu-idregs.h" +#include "arm-cpu-models.h" =20 #define ARM_SINGLE_FIELD_PROP(prop_name, _type, reg, fld) \ { .name =3D (prop_name), .type =3D ARM_PROP_##_type, \ @@ -38,6 +40,17 @@ .get =3D _get, = \ .set =3D _set } =20 +#define ARM_COMPOSITE_PROP(prop_name, sub_props, _get) \ + { .name =3D (prop_name), .type =3D ARM_PROP_COMPOSITE, = \ + .u.comp_sub_props =3D sub_props, = \ + .get =3D _get } + +#define ARM_COMPOSITE_PROP_GS(prop_name, sub_props, _get, _set) \ + { .name =3D (prop_name), .type =3D ARM_PROP_COMPOSITE, = \ + .u.comp_sub_props =3D sub_props, = \ + .get =3D _get, = \ + .set =3D _set } + const ArmFracVal csv2_frac_vals[] =3D { { "0.0", 0, 0 }, { "1.0", 1, 0 }, @@ -255,6 +268,10 @@ const ArmCpuPropDesc arm_cpu_props[] =3D { { .name =3D NULL } }; =20 +const ArmCpuPropDesc arm_composite_props[] =3D { + { .name =3D NULL } +}; + static const ArmCpuPropDesc *arm_find_prop(const char *name) { const ArmCpuPropDesc *p; @@ -263,6 +280,12 @@ static const ArmCpuPropDesc *arm_find_prop(const char = *name) return p; } } + + for (p =3D arm_composite_props; p->name; p++) { + if (g_str_equal(p->name, name)) { + return p; + } + } return NULL; } =20 @@ -350,6 +373,9 @@ static void arm_cpu_prop_get(Object *obj, Visitor *v, c= onst char *name, case ARM_PROP_FRACTIONAL: arm_fractional_get(cpu, p, v, name, errp); break; + case ARM_PROP_COMPOSITE: + /* Composite features must have a custom getter */ + g_assert_not_reached(); } } =20 @@ -428,6 +454,104 @@ static void arm_fractional_set(ARMCPU *cpu, const Arm= CpuPropDesc *p, g_free(str); } =20 +static void arm_prop_set_default(ARMCPU *cpu, const char *name, Error **er= rp) +{ + const ArmCpuPropDesc *p =3D arm_find_prop(name); + + if (!p) { + /* Sub-property can be a already present cpu property like sve* */ + if (object_property_find(OBJECT(cpu), name)) { + object_property_set_bool(OBJECT(cpu), name, false, errp); + return; + } + + error_setg(errp, "Property '%s': unknown sub-property", name); + return; + } + + switch (p->type) { + case ARM_PROP_STRING: + case ARM_PROP_BOOLEAN: + case ARM_PROP_NUMERIC: + arm_idreg_field_reset_to_default(cpu, p->u.field); + break; + case ARM_PROP_FRACTIONAL: + arm_idreg_field_reset_to_default(cpu, p->u.frac.base_field); + arm_idreg_field_reset_to_default(cpu, p->u.frac.frac_field); + break; + case ARM_PROP_COMPOSITE: + object_property_set_bool(OBJECT(cpu), p->name, false, errp); + break; + default: + g_assert_not_reached(); + } +} + +static const ArmModelPropValue * +arm_model_prop_find_by_name(const ArmModelPropValue *props, const char *na= me) +{ + const ArmModelPropValue *pv; + for (pv =3D props; pv->name; pv++) { + if (g_str_equal(pv->name, name)) { + return pv; + } + } + return NULL; +} + +static void arm_composite_set(ARMCPU *cpu, const ArmCpuPropDesc *p, + Visitor *v, const char *name, Error **errp) +{ + bool val; + const ArmModelPropValue *model_sub_props; + const char **sub_props; + ERRP_GUARD(); + + model_sub_props =3D arm_cpu_get_composite_subprop(cpu, name); + if (!model_sub_props) { + error_setg(errp, "Property '%s': unknown composite feature", name); + return; + } + + sub_props =3D p->u.comp_sub_props; + if (!visit_type_bool(v, name, &val, errp)) { + return; + } + + if (val) { + for (const char **sub_prop =3D sub_props; *sub_prop; sub_prop++) { + const ArmCpuPropDesc *sub_prop_desc =3D arm_find_prop(*sub_pro= p); + const ArmModelPropValue *model_sub_prop =3D + arm_model_prop_find_by_name(model_sub_props, *sub_prop= ); + if (!model_sub_prop) { + continue; + } + if (sub_prop_desc) { + assert(sub_prop_desc->type !=3D ARM_PROP_COMPOSITE); + } + + arm_apply_model_prop(OBJECT(cpu), model_sub_prop, errp); + + if (*errp) { + return; + } + } + } else { + /* Disable all sub-properties */ + for (const char **sub_prop =3D sub_props; *sub_prop; sub_prop++) { + const ArmCpuPropDesc *sub_prop_desc =3D arm_find_prop(*sub_pro= p); + if (sub_prop_desc) { + assert(sub_prop_desc->type !=3D ARM_PROP_COMPOSITE); + } + arm_prop_set_default(cpu, *sub_prop, errp); + + if (*errp) { + return; + } + } + } +} + static void arm_cpu_prop_set(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { @@ -453,6 +577,9 @@ static void arm_cpu_prop_set(Object *obj, Visitor *v, c= onst char *name, case ARM_PROP_FRACTIONAL: arm_fractional_set(cpu, p, v, name, errp); break; + case ARM_PROP_COMPOSITE: + arm_composite_set(cpu, p, v, name, errp); + break; } } =20 @@ -487,6 +614,27 @@ const ArmCpuPropDesc *get_arm_cpu_props(void) return arm_cpu_props; } =20 +void arm_add_composite_props(Object *obj) +{ + const ArmCpuPropDesc *p; + for (p =3D arm_composite_props; p->name; p++) { + assert(p->type =3D=3D ARM_PROP_COMPOSITE); + + /* Replace the QEMU bare props if present. */ + if (object_property_find(obj, p->name)) { + object_property_del(obj, p->name); + } + + object_property_add(obj, p->name, "bool", + arm_cpu_prop_get, arm_cpu_prop_set, NULL, NULL= ); + } +} + +const ArmCpuPropDesc *get_arm_composite_props(void) +{ + return arm_composite_props; +} + const ArmCpuPropDesc *arm_prop_for_field(ArmFieldIdx field) { for (const ArmCpuPropDesc *p =3D arm_cpu_props; p->name; p++) { diff --git a/target/arm/arm-cpu-props.h b/target/arm/arm-cpu-props.h index 36ca39d1a7..392a0391d6 100644 --- a/target/arm/arm-cpu-props.h +++ b/target/arm/arm-cpu-props.h @@ -19,6 +19,7 @@ typedef enum ArmCpuPropType { ARM_PROP_BOOLEAN, ARM_PROP_NUMERIC, ARM_PROP_FRACTIONAL, + ARM_PROP_COMPOSITE } ArmCpuPropType; =20 typedef struct ArmFracVal { @@ -37,14 +38,18 @@ typedef struct ArmCpuPropDesc { ArmFieldIdx frac_field; const ArmFracVal *vals; } frac; + const char **comp_sub_props; } u; =20 void (*get)(ARMCPU *cpu, Visitor *v, const char *name, Error **errp); void (*set)(ARMCPU *cpu, Visitor *v, const char *name, Error **errp); } ArmCpuPropDesc; -void arm_add_cpu_props(Object *obj); =20 const ArmCpuPropDesc *get_arm_cpu_props(void); +const ArmCpuPropDesc *get_arm_composite_props(void); + +void arm_add_cpu_props(Object *obj); +void arm_add_composite_props(Object *obj); const ArmCpuPropDesc *arm_prop_for_field(ArmFieldIdx field); =20 #endif --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649127; cv=pass; d=zohomail.com; s=zohoarc; b=NyfMSkIE2QV9D8Z5M+MKxUI3YuV6VhfIt4CzmU8YLGQRFF327YR+mdp2CNK10gCUmzhneGav4/xznHSNHiBVDFsaCcvQKzFfjZnOxDWKxDnzq+wFwSOdFVXW+ROMdLVLQ3jZhHtm3Y5FSobAE2Dqag41fticbRwYLHQ6OqkAoso= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649127; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=nzvLLCFDcgiv5SzzronNXSYBhL5YYjPD/IO/IYgF6F0=; b=RAtTBDY/iqV6pQF2Cs2hXHcFBUyRcN/hQL9dlPB6ES7Jj37xl0RYLhysRSsBJtcy7Ea1SMwegpXg+oyFA7AqjABHZU0qZ5OCVa8PObaiBCznpcqg/fPZgbxzPV6LowHEECCEBfTLwybw+rNr9/MlHihBWKpfy6CMb60tOWPXmro= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649127639731.785294644334; Fri, 5 Jun 2026 01:45:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQ9j-00062l-7x; Fri, 05 Jun 2026 04:43:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9h-00061f-Md; Fri, 05 Jun 2026 04:43:53 -0400 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9e-0002Vt-Fj; Fri, 05 Jun 2026 04:43:53 -0400 Received: from pps.filterd (m0127844.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6556MRUD1185382; Fri, 5 Jun 2026 01:43:19 -0700 Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11020134.outbound.protection.outlook.com [52.101.201.134]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejuupcm1f-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:19 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by MN6PR02MB10630.namprd02.prod.outlook.com (2603:10b6:208:4f4::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:16 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:15 +0000 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=nzvLLCFDcgiv5SzzronNXSYBhL5YYjPD/IO/IYgF6 F0=; b=WOP9lA6GNDcjGUwP+Vq3Gf38nLB432rO8jebU3Tc+dIOyxtMFVhcs4RtK hwXu45UQ7E8hqTLPz4TNoyJRLcGQbgwu25aziTwTJ0uQj+oxx9hZ4QGQP6klm9m3 BaFG45Tgz+/RtlcYtzA5oV4siwo1SMAQndFcSVafwqEHgbuP5h8iQGOEogquBlsp r2wRF2ulWue2EU11eLTesofuaDJ0tcHyfWeM/0aNf8QyKZ1by0JihCnIyfhumEbs GQQ66c700TjLDWsVCb1E4qr0iCBz6lev280q3bRhR0w0xiGjizIhvrt2EtzS0aT9 JIqEXEQkLQ2Z7qaid6Pk9pQvG9thQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NHuuAx3d/lztW6jEzQ6zX64y2mwlVmkc1McyTzT+rUq7CoyozngMBgUArGz5KlaedUHjlDHGMME1MfRe9wbhnUO6ZLnpixFCqlBwnWhY3epeQmV4xDqUgIjKCXNUwQsSYLIBBtf01ROuP4E9capA5Z5ilFP9r8kMLSKj6+Q3D/Vt02fbretYXb/TYxkp35HpNQTHd4/vtkZPOZ5xcBqFNHBVdaKna7z8mDp2U2mYFnmKKDoQLtmiEa+rMgbAEkheriRQ8TVYysEILwREHDqRWtyBnUact/h2wPxV+z6KIWbo7ZFU5I+IvdL7eTNeia7lZ45iTHTPAl5xpyT8PGZSZg== 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=nzvLLCFDcgiv5SzzronNXSYBhL5YYjPD/IO/IYgF6F0=; b=PgsZGuEtj1YBhH5Po857rvfL7A8mYmIz2hyfCKb1pv1nWA09MZWhdYzC5mdvCEP8kDWIvPoHDnAM1AK6gyk9OW2b7vOIGLsHJXkaNVLI2THSL9KWYEmdDCMMl9EkRCVkQFBh2TKc8uOhfydhao1IO3TqoapzLZI95kdTKeGR/zh3sApXlNmRIzKX3+e4rwtnBFntx5oDmtQckLU2EgblOKQdnrcEdNTdE3vdZojhIwdHSrcWi+noA8pOcSCQJACdBQWaCckQaY8BDHtbzRkQWaTpAKrUTrPIB/VfFsiGSKzsVp4qBZ3OsGWSGi+BQXnHiuSVmftPJ4P2nFvNChQ+KA== 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=nzvLLCFDcgiv5SzzronNXSYBhL5YYjPD/IO/IYgF6F0=; b=DLRswDWfwK/ZGD74pusYiboQCSFY90lNvd942IcGsOARMqhx1ze8qmWfC2IDcG2sKU6AtrZ8l3lithBf7UXpOstVdS4aU9iHkp4OxcaS6jrRdOvjgqhoFGR+o18kG4R/sug7/wyDRx74d0rlJNVJItz26PwvJwFKq91ZaSKseHmDU7RKcAB0XpcIRKyeKSX9u3ND9hAUS7AqaQvM+APX5krt9P6duw2WSd946sQ+/OxM+vvs6QgHI0QreTku5lURHYeD87PfYb3uMRChddDRBtNsXqVXuBUSHBA8dxAt7a6H1EI0OCpr4wIAaRKt6r/irkLGhUOkSyEwKKPhNVynxA== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 18/29] target/arm: define pauth composite property Date: Fri, 5 Jun 2026 08:33:47 +0000 Message-ID: <20260605083358.1320563-19-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|MN6PR02MB10630:EE_ X-MS-Office365-Filtering-Correlation-Id: 35b45724-27ee-49f7-f5a4-08dec2de7c37 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|7416014|1800799024|376014|3023799007|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: EnLJaLx0bG8kTWIvZmm5T7i/7Bs/e1lnZ+4FEt1Bz8alIaDfa6tGnan/kkJVD9uPiG/49lAUsMRZwo19w26qVCrzRU9GW9EYLMZFo4/CofCKIq4gVX93TkisJeNIVp6KQING2XX+w7likmhzmlGwvH6RKT07p4sUVrCFVWiS8q38YdnHr8ewqN1jhKKSwB9wn0dDP0tgmg9TZbmGsbxGaZKMClZ/hxS/V+TxUs552ioMobQBaV6nurfTgS+crBs8uUqo+XoO08zv/NxrkQflEbOYoEDC+tIfW5fBEWdu9pGg9mXJ2jecbKK60Y8urYN1sdyal7DI7hJCvgRgMrAXiS/TuwoR4pz5BnT6Gtn96Zn/HHxu9OY8ClffqilhNsWZIZpCPPY3pTsmer/nGLHtpb8l+iPYSRVMRTMT2bFLo0yi480PnPlkhER9HzdmqSnUDI2CDgZAmMsjQlvmR3ycAluD8Dr477NYxU0tAzqaGcB7DHq/GzpAJWLbLYCwG4IIzbgFCrX8I3D140mfL5JrzVP69pXbI5gQVbI5VTykK84sW0y2CCf4RjSEkmWSDYZSyypzdON2cOXHjxVXJ63MTp6uA+HKX0FHGsyjFhWoFqgicFjVUTamWz5RSU93JE1k/xsQ5VgYBI9LUOmcTQxDgpPqmglOLeYWl0fc2KHThGBApDfycyruEBOpmGmVP9Lk X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(7416014)(1800799024)(376014)(3023799007)(56012099006)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?EbVfn/nwQrikm1E+ptHfufqsF7Oe0UUwO9Xv7fPGsrtk5rpXhFJO8ugRIwFL?= =?us-ascii?Q?wcSFdGKCumjkIpfoPbFib3Quze+MgPtpzIU6CXMhAMD/nxykh4IzmtNjI/lk?= =?us-ascii?Q?Bs6G6DwTQ0YtL/oWa7JQG2px4JZCyJIEWOuU33bWuIIYxhPnaPHnWhzBf3/b?= =?us-ascii?Q?teM5qx7jV/Qate06eYjo1QA8EEL92EzmjoCCNHLEbZZdeTh9IPdJV5nWyYDR?= =?us-ascii?Q?fPpxB4ot5dpY3u5aBYe2pVo7nx7ADP9iqxGukZXVJeZTXtu2Uk5yRuIKE85d?= =?us-ascii?Q?dugP/QILoKnWXp+g8vfZcJfE8X94LbgOLmlG17qxU9qgO8pnOQSuduQq7+O/?= =?us-ascii?Q?JqVDFF7eSn0jtY0J6YN4TbiWzNBoBLUieLWEQtbEGkOKdd/6gNxGrexSonIj?= =?us-ascii?Q?yfZl05SMVgQcOCG7upkLoNT7pSt9e28lXQ7JUtL7+f+wqWfNJOkWT0s67dnu?= =?us-ascii?Q?vghl6jc/O1611/5+AUBp816RRn1B/wMmRShYzhcBtiqF4Fl94XMo9ULwN0tQ?= =?us-ascii?Q?quBSn1v/DJqjvVxU8ngW7A5UqjhU+pbLNkY3sKtAHbBz3ZPyq7M1+b+ap9WK?= =?us-ascii?Q?rnRcJscDjZJ2f6Igc8CSg0Qt0vIgWClci07H0/m8f3F83glSlNQjQM9wCLKJ?= =?us-ascii?Q?kARflFwgLMTsCVAK8w2LKdqzi5L1NEwULOTP2cvShPVLQ0MbByd7FbCB9UeJ?= =?us-ascii?Q?yHq8isr0scBEVx5NL79H5ie+s58/XgePiF6zXPRIC5TraJMY1DomRdMtVW8b?= =?us-ascii?Q?eZd1bvmD+u1k3UOb9VRfFbxgowmJ/z1PUi1zMRqPMuBhk4ENnT362mgcMfA1?= =?us-ascii?Q?jw7jnzRSnYIGpJnKQ1pVnEZRYyG0XSuN5wfQs8l0nfX2FoCwDxOd/uoJP1RB?= =?us-ascii?Q?aRnHNgfQKnIzdOqK+GE+/DYlYeWyaW7BDROkNY5zZfxp9yI16JR5pB7lncze?= =?us-ascii?Q?bv7bNiHi4SEYw0VC0oHXHWA20UJz9H/47FximgnWiyC1+dc0dlmikrT+P66l?= =?us-ascii?Q?K9GEjaK9l2G3Pss95vVTuW2W3xGreCALhdIq1JIrNqC5c3Lt6Y92oNcQU01e?= =?us-ascii?Q?CVi/WOfQ0ByrcQTCW77UZ8eQsJwiuhheMPCMOLFNxLyxStykA8/238vyXCfL?= =?us-ascii?Q?UcR8k3S0BLaR9fQ6KNG6Aqk739N2X1snULyKgNgubfU/tExtmp2Op4iCsaS/?= =?us-ascii?Q?LgwdCHPXKFIhxuYpw8jAdKMEa4Z58im323e1rtqDBnPRmA0PFWoo1rhE05YN?= =?us-ascii?Q?E7JP8sFRa/aGcTlZeePFDMTCYjw44yNjQuol/74tEIIaXpK/jYpRcvcKqhG/?= =?us-ascii?Q?YrmggmXHbogLsXf13M/lceOhdXBmu4jVk+uZxd40gCLdm8TtF9ytJOSG435T?= =?us-ascii?Q?QQCFmOF5lBjJ3FDVC0rbsh7zwW94DfvYqWZDz43n9eQA7UZxUivijNkCbEFx?= =?us-ascii?Q?kxBQ3pDN8myTxX+i2sWHTbeZsyc9kPjBZ+BAxadmhZwNyiki/BkJC07intOd?= =?us-ascii?Q?HhxMJoQKc5HqTT8w9BrQYX1liG/YjSMJ4tKWEhCW4wpI8EJ4edV94PwxtKUy?= =?us-ascii?Q?DkTw/0MkQ9HN8LrB9gzCgIurd2YKNwJYq5n+dkWHkQ14eZxpOyIgPc6EtJ1y?= =?us-ascii?Q?UdOGHBHEFgCaU75arN4yKApzN/HbmQuObEA5437VTJiSnQu9eYHUcZHBThQ4?= =?us-ascii?Q?ZLhCg96qyc1Q/TFh9asZCzRd3/5P7pFSR8nd7mw0lctrO8/FoSkEMuOl5aH0?= =?us-ascii?Q?V45zpzWMOP1tWSgehAElGZkjpHRwtE8=3D?= X-Exchange-RoutingPolicyChecked: pUlu8qLqM8NdJUZMdV3YGoDkavzfGGUjKRXNttlx5LZpzd9szs8C8ere2Szqny5HJ+lX8dBKf/KVHNkGybraU3+PG9ifN2DQ1lL9bqwMcxZyHfdlmeDeE7CKAXP7VaikI0XtUUqJY/JmMncYzseuETl2wg2PM7bT1tmGCRYaqA1yexMqvkx6QGuM5RkTziXzkqPKhtZRKAzwaqK8J+7Q2Q612wYbVmsK3HCRm/Zx8356VSRz9SrOMfvnFSkTEdUm6TVUJlxnOKkFuJxD2qdzhvmAo7wGzFz+UFs57UKiymkLO1/qIIUvOqGrjW9xkDbDRP6OzNaSrcUgrhBPxfDDtQ== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 35b45724-27ee-49f7-f5a4-08dec2de7c37 X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:15.7194 (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: xSLIKHZh0NgxIGGU5ys8Exocfjt5Yk+83KQaL4DpXkvUy1GbX3zW4To4UfOPpbsB8I05ipwzIETQfgjKrlBHqHvOCMJEM/mjtRedRLy7U+E= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR02MB10630 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfXx+4W5l/1wHMC omaPEQRe816vd0Jl2zMwR6hR9pKLZULd3GJOqakHvPhqcqX3cwM2bM5A2aON5iv1Ay1uTI3du1Z uMLL96mf+SiCOX80KWi0s15/JN1Li1sIV+okR7YaNjvfAgBTZd3lnPIgZ6brqE83Q57L7kePe5x FpF3YKsNiw86koUqeeeY3L4Yg4O2qxybeO7iaLHQMwHpuYuQBCU8VFglpqhAuPjf3JVOhTJDP/Y VwXox4k5x6QuIyOcgoRz4RS5aqYszaLeyecgdbhlGYdcYxeHRpkQHtA2ww2kR6FZgpNdzccFtNQ 9uIMxj3qRKDVzkY6CBx0qwp4ez2omr1KGaxK3h+blkPHAeL2GOVmpITEiHYlVBKleGNjTtDSf3o PtAfcXYiW1BWDqPMhFtLgPELUVE0bgfZvK0Fk7Wk/ABPgp5PEr+Esjaeiaixh9pd6LWPzk8YCwj 9ULYHq7Ze0eDUJjeO3Q== X-Proofpoint-ORIG-GUID: BMAJwub-L38XYRdeZSefpvC0YZRHgpgn X-Authority-Analysis: v=2.4 cv=V6FNF+ni c=1 sm=1 tr=0 ts=6a228c27 cx=c_pps a=h3Jk+6XEKCuoUZR+ZnWw9Q==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=0LlEyIVc8U2lsR7dKhuH:22 a=64Cc0HZtAAAA:8 a=84awLtjXEynXEqeMRz0A:9 X-Proofpoint-GUID: BMAJwub-L38XYRdeZSefpvC0YZRHgpgn X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.155.12; envelope-from=khushit.shah@nutanix.com; helo=mx0b-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649129923158500 Content-Type: text/plain; charset="utf-8" Define pauth composite property for named cpu model. Define a custom getter which checks whether any PAuth algo is present. The sub property list covers all six PAuth fields. Add appropriate pauth composite model values for neoverse-v1-v1 and neoverse-v2-v1. In arm_cpu_pauth_finalize(), return early if cpu is an instance of named cpu model, as the authoritative ID regs fields values are provided by the model in that case. Signed-off-by: Khushit Shah --- target/arm/arm-cpu-models.c | 14 +++++++ target/arm/arm-cpu-props.c | 76 +++++++++++++++++++++++++++++++++---- target/arm/arm-cpu-props.h | 2 + target/arm/cpu64.c | 16 ++++++++ 4 files changed, 101 insertions(+), 7 deletions(-) diff --git a/target/arm/arm-cpu-models.c b/target/arm/arm-cpu-models.c index 4b19049205..1fe20b7d6e 100644 --- a/target/arm/arm-cpu-models.c +++ b/target/arm/arm-cpu-models.c @@ -84,6 +84,12 @@ static const ArmModelPropValue armv8_4_a_v1_props[] =3D { MODEL_PROP_END, }; =20 +static const ArmModelPropValue neoverse_v1_v1_pauth_props[] =3D { + MODEL_PROP("hw_prop_APA", STR, "pauth2"), + MODEL_PROP("hw_prop_GPA", STR, "on"), + MODEL_PROP_END, +}; + static const ArmModelPropValue neoverse_v1_v1_props[] =3D { MODEL_PROP("cpu_implementer", NUM, 0x41), MODEL_PROP("cpu_variant", NUM, 0x1), @@ -146,6 +152,7 @@ static const ArmModelPropValue neoverse_v1_v1_props[] = =3D { MODEL_PROP("hw_prop_CWG", NUM, 4), =20 MODEL_PROP("hw_prop_BS", NUM, 0x4), + MODEL_PROP_COMP("pauth", true, neoverse_v1_v1_pauth_props), =20 MODEL_PROP_END, }; @@ -197,6 +204,12 @@ static const ArmModelPropValue armv9_0_a_v1_props[] = =3D { }; =20 =20 +static const ArmModelPropValue neoverse_v2_v1_pauth_props[] =3D { + MODEL_PROP("hw_prop_APA", STR, "fpaccombine"), + MODEL_PROP("hw_prop_GPA", STR, "on"), + MODEL_PROP_END, +}; + static const ArmModelPropValue neoverse_v2_v1_props[] =3D { MODEL_PROP("cpu_implementer", NUM, 0x41), MODEL_PROP("cpu_variant", NUM, 0x0), @@ -257,6 +270,7 @@ static const ArmModelPropValue neoverse_v2_v1_props[] = =3D { MODEL_PROP("hw_prop_CWG", NUM, 4), =20 MODEL_PROP("hw_prop_BS", NUM, 0x4), + MODEL_PROP_COMP("pauth", true, neoverse_v2_v1_pauth_props), =20 MODEL_PROP_END, }; diff --git a/target/arm/arm-cpu-props.c b/target/arm/arm-cpu-props.c index 5e876aa768..11f45523a0 100644 --- a/target/arm/arm-cpu-props.c +++ b/target/arm/arm-cpu-props.c @@ -51,6 +51,30 @@ .get =3D _get, = \ .set =3D _set } =20 +static void arm_composite_set_internal(ARMCPU *cpu, + const ArmCpuPropDesc *p, + bool val, + const char *name, + Error **errp); + +static void pauth_set(ARMCPU *cpu, Visitor *v, const char *name, Error **e= rrp) +{ + bool val; + ERRP_GUARD(); + + if (!visit_type_bool(v, name, &val, errp)) { + return; + } + + arm_composite_set_internal(cpu, arm_find_prop(name), val, name, errp); + if (*errp) { + error_prepend(errp, "Property '%s': ", name); + return; + } + + cpu->prop_pauth =3D val; +} + const ArmFracVal csv2_frac_vals[] =3D { { "0.0", 0, 0 }, { "1.0", 1, 0 }, @@ -268,11 +292,32 @@ const ArmCpuPropDesc arm_cpu_props[] =3D { { .name =3D NULL } }; =20 +static const char *pauth_sub_props[] =3D { + "hw_prop_APA", "hw_prop_API", "hw_prop_APA3", + "hw_prop_GPA", "hw_prop_GPI", "hw_prop_GPA3", + NULL +}; + +static void pauth_get(ARMCPU *cpu, Visitor *v, const char *name, Error **e= rrp) +{ + uint64_t apa, api, apa3; + bool pauth =3D false; + + arm_idreg_field_read(&cpu->isar, ARM_FIELD_IDX(ID_AA64ISAR1, APA), &a= pa); + arm_idreg_field_read(&cpu->isar, ARM_FIELD_IDX(ID_AA64ISAR1, API), &a= pi); + arm_idreg_field_read(&cpu->isar, ARM_FIELD_IDX(ID_AA64ISAR2, APA3), &a= pa3); + + pauth =3D apa !=3D 0 || api !=3D 0 || apa3 !=3D 0; + + visit_type_bool(v, name, &pauth, errp); +} + const ArmCpuPropDesc arm_composite_props[] =3D { + ARM_COMPOSITE_PROP_GS("pauth", pauth_sub_props, pauth_get, pauth_set), { .name =3D NULL } }; =20 -static const ArmCpuPropDesc *arm_find_prop(const char *name) +const ArmCpuPropDesc *arm_find_prop(const char *name) { const ArmCpuPropDesc *p; for (p =3D arm_cpu_props; p->name; p++) { @@ -499,10 +544,12 @@ arm_model_prop_find_by_name(const ArmModelPropValue *= props, const char *name) return NULL; } =20 -static void arm_composite_set(ARMCPU *cpu, const ArmCpuPropDesc *p, - Visitor *v, const char *name, Error **errp) +static void arm_composite_set_internal(ARMCPU *cpu, + const ArmCpuPropDesc *p, + bool val, + const char *name, + Error **errp) { - bool val; const ArmModelPropValue *model_sub_props; const char **sub_props; ERRP_GUARD(); @@ -514,9 +561,6 @@ static void arm_composite_set(ARMCPU *cpu, const ArmCpu= PropDesc *p, } =20 sub_props =3D p->u.comp_sub_props; - if (!visit_type_bool(v, name, &val, errp)) { - return; - } =20 if (val) { for (const char **sub_prop =3D sub_props; *sub_prop; sub_prop++) { @@ -552,6 +596,24 @@ static void arm_composite_set(ARMCPU *cpu, const ArmCp= uPropDesc *p, } } =20 +static void arm_composite_set(ARMCPU *cpu, const ArmCpuPropDesc *p, + Visitor *v, const char *name, Error **errp) +{ + bool val; + ERRP_GUARD(); + + if (!visit_type_bool(v, name, &val, errp)) { + return; + } + + arm_composite_set_internal(cpu, p, val, name, errp); + + if (*errp) { + error_prepend(errp, "Property '%s': ", name); + return; + } +} + static void arm_cpu_prop_set(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { diff --git a/target/arm/arm-cpu-props.h b/target/arm/arm-cpu-props.h index 392a0391d6..a108dee1a4 100644 --- a/target/arm/arm-cpu-props.h +++ b/target/arm/arm-cpu-props.h @@ -48,6 +48,8 @@ typedef struct ArmCpuPropDesc { const ArmCpuPropDesc *get_arm_cpu_props(void); const ArmCpuPropDesc *get_arm_composite_props(void); =20 +const ArmCpuPropDesc *arm_find_prop(const char *name); + void arm_add_cpu_props(Object *obj); void arm_add_composite_props(Object *obj); const ArmCpuPropDesc *arm_prop_for_field(ArmFieldIdx field); diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c index 0300f8677f..d326b3220a 100644 --- a/target/arm/cpu64.c +++ b/target/arm/cpu64.c @@ -38,6 +38,8 @@ #include "internals.h" #include "cpu-features.h" #include "arm-cpu-props.h" +#include "arm-cpu-models.h" + /* convert between _IDX and SYS_ */ #define DEF(NAME, OP0, OP1, CRN, CRM, OP2) \ [NAME##_IDX] =3D SYS_##NAME, @@ -554,6 +556,20 @@ void arm_cpu_pauth_finalize(ARMCPU *cpu, Error **errp) ARMISARegisters *isar =3D &cpu->isar; uint64_t isar1, isar2; =20 + /* + * For named CPU models, the model props (and the composite "pauth" + * setter) write the authoritative APA/API/APA3/GPA/GPI/GPA3 + * directly into cpu->isar. Lets not override them. + */ + { + ARMCPUClass *acc =3D ARM_CPU_GET_CLASS(cpu); + if (acc->info + && arm_find_model(acc->info->name)) { + return; + } + } + + /* * These properties enable or disable Pauth as a whole, or change * the pauth algorithm, but do not change the set of features that --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649387; cv=pass; d=zohomail.com; s=zohoarc; b=HX9vytCd+QXY/nhd8t9JajSASyY6mXFcoLfCZU27lubkEKgEdNs5iulHuSGBafyKW2lXJXpAzwyTa2DCAqlv+82QDQjR2AMrRBINuNvavyyvi0j/nPLt+8bDfwNbTI903HFB4CXUSIn2oYrPdVXRewtrP26ax/Fw/mc2CEYQsH0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649387; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=PXbDP9klCpM4kzndgvzvRlHdyJcudZplryw8ikfqIZs=; b=R54+eK96P6gkDP+iHUBJKhOiVVnGZXdE/ucLod70FkpNOMfjqXkGhJA5j5ptlseVr2fu0LB15HlLvVISqW/bjVHwK2Pl8OsZ41Q6UiEP8JoMmc1Dj938tYe8tawDV64NKI6dN9s+x7dBkZ8gumXM68qbOb77c8HzxNRWJevpcN8= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649387422925.4494804727848; Fri, 5 Jun 2026 01:49:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQA1-0006IR-CL; Fri, 05 Jun 2026 04:44:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9z-0006HB-6I; Fri, 05 Jun 2026 04:44:11 -0400 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9x-0002eC-B5; Fri, 05 Jun 2026 04:44:10 -0400 Received: from pps.filterd (m0127844.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6556MRUF1185382; Fri, 5 Jun 2026 01:43:21 -0700 Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11020134.outbound.protection.outlook.com [52.101.201.134]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejuupcm1f-2 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:20 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by MN6PR02MB10630.namprd02.prod.outlook.com (2603:10b6:208:4f4::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:16 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:16 +0000 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=PXbDP9klCpM4kzndgvzvRlHdyJcudZplryw8ikfqI Zs=; b=tFMTxal4pqa7jmx5eUmR/XDmLX8oXolL9noezMWDDCT5skie2LaCqR3A5 FQtk5FiaAAuZTJhbqjaW2qYhC2mY1TPUUO9KFQkmPs1DUhMBZn6tfhdd6mfPIPB+ DwpyssyedeXT2h2LuO47wJlYzKy/9ueZXWn2Aw8jay67jPh9NzVZVcDyjeM4mMqS hgTKJitrMxf5q6Ea/DXK2ULchREGm1zfz9ViPi/6iMDvReN86RA1D6Kv4OJiCaoe +ov9AkC2/Y50is0Jh05w3khAcxouwWunn03qtHyahownjmKtocsIkjAVcNFID83G shUIDD9fMuRjgfaArBcpxB8C8087Q== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eSJ8KF9SZGZMFrLDGZfNP4sG78VwFsgjwbn/0xE+4VcivQvPFBPVF/A7e2t8GG2VFsep3RiO7PVGRMIuGr4DXup2pXjNqkBWfbX4/4nJj5nwsa+fQAE0hmiM55lFcdUfYMQgXWI37PiTu8AUyUjD3NIfyD0z6xYMDWPBFbU7zxDJpGz5ToCA19vzlnoxoq0IWyPFNeXa1cYBnvbVZaFQ1hRdnM7btgdxh4Vq08btXJWaJMESYviXC13vkVxGHl8UugEtrsTj7FHXuaWobqOEV8y3bNEau74LC+HG0wM0+xxFei2HKOHfWsG2GQ0sS44e12CdXT39dYaJwtCR9SzN1g== 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=PXbDP9klCpM4kzndgvzvRlHdyJcudZplryw8ikfqIZs=; b=b++q8nu4Icu6PsX8XZGpb9tr656OXqEz8XlAV4oyxUD2OFnygk+Y+h8Mkj8JuKUpbo61zLvRHZkAyw2QNulogvIgacaM6ALlx5KwGDQbqWGPnhbY+b08fej7wo4JK4iD7lha1paGhjtG0Y8yr6QF6PwbrpI+7HhxaM3gg8qA7sZJkv1bX6SLaG3TsJHyWmrLW58Pbxh41MIqom2Bf+bQjxhjBXbrdck8JNcjbIl4ZsHZsDRG20kMkc2BU0pq8i7GHR/euESzyM7sv5QVJAa6gKZzqkVOcRc4vx6vxZVGc2OPJP7BzDazmv3vz96Q52j90MMKccZLhIL2xC2wdTEPag== 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=PXbDP9klCpM4kzndgvzvRlHdyJcudZplryw8ikfqIZs=; b=qCRbdt9LXmKMZ3VGnOxDTy5mk/0QSHhCbP6c5HImgA8P/EwQAK17ukONzrjiymnD2OQVYFokt7ytSbu9pnVRLNcoafAbakAVwKPIWiXCsOmIZdjwzNaHuQoXpDaI2vGhecQiSVy906hspNXe9SbzYsFfALCaTV+b8+GnlSWRxBpe6zWJ+00MNXdEGULWsoz2+oUL3VKU8NUf5w9+1hR4FX85DMPIpXeHzHhLSO9VSwzt93gkYUtkibX2W1AkCV4pV4OffdvLRn+buWq9tm9nr7d1BaZzdcMBG0d98P/VSVExXyBi8mVdqMEw4Hiq2DF2+WDRJ3PmHh5MIUQqs8HDiA== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 19/29] target/arm: define sve composite property Date: Fri, 5 Jun 2026 08:33:48 +0000 Message-ID: <20260605083358.1320563-20-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|MN6PR02MB10630:EE_ X-MS-Office365-Filtering-Correlation-Id: 92ea7c37-ec83-418d-0172-08dec2de7c78 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|7416014|1800799024|376014|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: gQ6HeEhrBZDA0X0i4kylApmWDSs1wmL1/D/9QMK4Wztx6z4F4wn9jTd20lPYQwca/UMdYWCAee+Y5+B88u3WHJmfC4iU0sQ5ghLJWTa1KWchEG25L6zLuoJZjx3D9dhgPQ1dctjzCWJaY+U2TRD0qKs654GZ9iLtSjltKdUWgh6kfmIogohivGnoRSfCibwbZI+X7S9VT/hASVhM1/vbD5lKsKxliSHvXuS0T+KEpvNXVB5SLtxLUv8zHtw4FehgiNeGqJS24dMkO1plTEK6kFoDwKEviiKHdr2vn3JN9UG2A0S56RjfxNhdhSJVIpE4AmiZLkVlZ2Xs1yDXY4gcg0jzSb7RHgDXIEwZFFywNSnJCVnbjqLhyMi2+21s1gqP0I6t9oZFyXELmMFSDNbF/XMnuf8+lonuBZItFi0XVjJQHkXWGlr+3JhuFSyRTh+DTd4Bj98aiyVtVBRBVDq9pDxvDz7b4sSnpyTdYLhVPDy2P/OCF2rbcgFd+EV6rzmWThncXxMlBrikQ/d1ChjqSyXNkXZJaxvkHwchr3WybNZvCC1Z1kH4WLi7acHyDtg2CsP/SjtLgd0Nw2NxhPFkHe1MOcEF/r/RY1NGJPhi8LBGxkt4WoZeW1HhBV79G8FymWuK1qlaE0hooc9ALSvV1360hvieSOOrN6Z7Y6Rn3DzChOdGpEXDpYt1g/W4Mjnb X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(7416014)(1800799024)(376014)(56012099006)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?qEL4bJKko+1LDABB3qv3giJzzB6qmvHS1YLjlueBKRx63o1XDeDJ9dhTgce0?= =?us-ascii?Q?LvMpN3c0aEELPh/U/lYjQv0oit7OnEVGrXPqj3hpMTU97Fbpu3VPqt/ndNGm?= =?us-ascii?Q?joyAO9thCeLz5mCB2+/o4knnxHsOnFTQDFpaPgmwC2Ilde7k3aslQhDKop3x?= =?us-ascii?Q?jo1y+TGQa+3ONBcZWxSPamys6+BjzC/5+2Ji4n2KbUZGTivfdGkXPspN0g5N?= =?us-ascii?Q?kCURlAYQcNd82nCiTqiE8JiGUWFUNlq6Jah2qjQ24mx/Bs8n/STgqLaTaKPi?= =?us-ascii?Q?ta1Xim2i72a17Xd8BrLyv+Cz+YXG0RXmAYivZz9C/nAfejpq8RO6TlD24bQw?= =?us-ascii?Q?L+P3iZfYxLeSxcfHEMxFwQKqoPBqjHzRVbR+vhmfCK3a4qsZlXzPLToUbakV?= =?us-ascii?Q?YStG3Vou6yfzxgZi+vs2jpg7Fb1GbNMxxPpXxssWoYq67RXUkLnLIKDirOmp?= =?us-ascii?Q?Q0YQB1CTM0eMPynrole85ZwSLtdx9ksYehBiGUh1ZSq4+541c9DUY5tEsGQp?= =?us-ascii?Q?Ts4zb8dWYAJvawPiNmXrABVF9OEDKEW1oGFTSBSm6ujYYMqeOjfKJkgVwE3n?= =?us-ascii?Q?WT+uFwsq4BR2N0dA7bUT1LpamAHQlTP4GqjJGq/G9mrr9C5qSm5OhRQVfn2M?= =?us-ascii?Q?MSpqR/58uuEMDcwWVwcVoQ/Aa+uo1ceRwYvcrwpenTVe4si5eZleIrhKP0et?= =?us-ascii?Q?l4nuO4nRY9LnYrKcNS6uv92QHju/H6i4WHNrds4g1pymrvoVOi43pz2Bupv9?= =?us-ascii?Q?r7lO+cCytExKdPkudPd5BJvtx4FBE5N54tQr+D6BEVlv7N/PRG6FWJ6db2la?= =?us-ascii?Q?elE/atG+GbP0Uc/DowCDhfvdplN2hYl65a+v1I982IzPO3GcL4J0ELp6Wg3q?= =?us-ascii?Q?lEImjft/uOjbCdubII9fUnXBuZOcqcOiqs4I1v0du/yumu/+jPdz1d3duy5Q?= =?us-ascii?Q?0lmkETNYfzUULwIuiKHT15nJTkD0K5bB5H7Oxio8afXPsRux9ry4YNjz4DXz?= =?us-ascii?Q?7H6fXWzRvBheGEZY4FqDSMHPlHca706VuYBpxgYvZdwXvGYY15wvug6s20k7?= =?us-ascii?Q?NYZlQBn98666LoC9MtkykpGyhlqYE7gx7KWqBjrsPh5l253bsn9AZEtNeCpW?= =?us-ascii?Q?9nQ1vUSQRbojW7QkFT0xcRavLmpgfy1q6vlB5qOHPEXnHUvtQrnr03egPTNr?= =?us-ascii?Q?Mqp6SvswYWpNBeNrBf9suJ7ejavdv/4Mk5cn6hkET7mNB7/n3jEHuV93lefb?= =?us-ascii?Q?8xkiSM8eAexc/qj8ee+2TCmmE3+ejzGQV/fPRaogdsO64x+thBpcPkl79FqD?= =?us-ascii?Q?4ZGoYSB/Ut5AEDszAmF6yQ/7tXvoo4afmZRV8yjueB8RXPYPUTD1qOvS+qVw?= =?us-ascii?Q?PN9qlouL/eCo0zpeN70lYVhTOJYnhKTel4vR4T0Odv0dgPmswMKh1xj+dcv7?= =?us-ascii?Q?HFWpa2emZXvqhbx1e01Z3o/+YE2dOc6+1O5PJhPMc2on75PRlaQmn8vIvfkp?= =?us-ascii?Q?6InNqfxZ5osimXIGxcZqILpgGHnZpTkbr/NMi1hCnk0vCHBSg2r8eaqm5n1p?= =?us-ascii?Q?eHKa5wDyJY+QDnwpC0AKGeiHegSqzNyTnaFH38tLUwN8ZR36g4LYiOywtiW0?= =?us-ascii?Q?VRi+Rb5xUEyrketI4Nmo1FvjlRhBGT2+YKT5yEdwew2zYTRKK5MyVzgQdQge?= =?us-ascii?Q?Rbw/wrvY4zgV/5qCAYpNrQWakCRoWr9BmjONEJRnAfPmQ1Mja1Vp0ot0zk4J?= =?us-ascii?Q?1TzRADigdtpUisoDnTgb+bvb87d+F5U=3D?= X-Exchange-RoutingPolicyChecked: jSZvH0JP7vSJTniseZKpoM4A+yJpynX3lzUMWxy8P4oSEU48x+x4aMHGEP0oe70vPssx0UnH1vNybRNsF52VGjNUXHslbBVnLyATxOJO4APmP8n2BilgEksZ1DT7F1WMfJCeIQaqq/4lp/RCS8ifvIhz2Ijqjydn0yAzVk+LDnmPNemLG5gn+R+OCjRVH0cVeQwNMiaEi5ZeyhzP6S2A1MPBTzheR+tzr8wBRscqODpT+/ObbHpyrWQZXwevtyNZLOpX1WelY+wb7jamtRg6VQTHshcw/lxDp0AM4T+1qa/cEqeyB/i7Q4MHn+R/T/LfkUd1YD/1Qt3YpD4Rb82joQ== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 92ea7c37-ec83-418d-0172-08dec2de7c78 X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:16.1400 (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: RY77zSEbTl/+JZKgL0cpXOIyGjUWlK0NQhSqsnUdb/qBSlo+4Tvv1TpXJyfx7eySZGCee1vD4mCM+VCuDmv8HKcw2jAqeJkkPA7S6p1Ae9M= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR02MB10630 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfX0oaexxK7XJNZ yfOSqdTGblWEyFi2AYNBrSt/WSaCRJedkPOWK18QeDjGEi7rofBwQ2sQuaSIFlY+MVNgu1Qz6W3 M0/tPr6gBuIQmmdL7iuP3+XjaSV4KmmUoEwmQImqa+1IsEajga2wxcrlKcIkuXJF19g1pqJJtCM AAh1pQoRLeuzTBlQFi5Wd3rtOF79d4LJgbuOnB6GhZWEoJdYcu2ovXDodt3ugqPs7pvRREtQf6l F6PEZrIi1jgA9DJH9Lz1KJYLa+jLSKNQkrxv3Li7cqyVW4s7cQePpYXi8tmV4d6bTRmPPLogeRV qEmcrYi0wRE+sh+McU8q9ck9HRUqmDPXiU6HewiFZsEhU8S1rUw7rRpRTqSgPMZ6mHHTTKANEKH XvxpxsYRJoh9k/w8N6TUdc6+RVpgLh02yrAer9+eleixyWmwHgdgcPRAB0yCgOXU62eu6fm9mrG 58dRueNXqEWiZWCvTdw== X-Proofpoint-ORIG-GUID: OTI67p7ho0Dq2NSHe2R-JdP5MV4fEEGY X-Authority-Analysis: v=2.4 cv=V6FNF+ni c=1 sm=1 tr=0 ts=6a228c28 cx=c_pps a=h3Jk+6XEKCuoUZR+ZnWw9Q==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=0LlEyIVc8U2lsR7dKhuH:22 a=64Cc0HZtAAAA:8 a=wDSBecT5HbJQFDkPd9kA:9 X-Proofpoint-GUID: OTI67p7ho0Dq2NSHe2R-JdP5MV4fEEGY X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.155.12; envelope-from=khushit.shah@nutanix.com; helo=mx0b-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649388841158500 Content-Type: text/plain; charset="utf-8" Define sve composite property for named cpu model. The sub-property list contains: feat_SVE, hw_prop_SVEVer, feat_SVE_AES, feat_SVE_ELTPERM, feat_SVE_BITPERM, feat_SVE_BFLOAT16, feat_SVE_B16B16, feat_SVE_SHA3, feat_SVE_SM4, feat_SVE_I8MM, feat_SVE_F16MM, feat_SVE_F32MM, feat_SVE_F64MM and sve* QEMU vector-length toggles. Also add appropiate sve composite model values for neoverse-v1-v1, neoverse-v2-v1 and grace-v1. In cpu64.c mandate a SVE vector length if named cpu model enables SVE. Signed-off-by: Khushit Shah --- target/arm/arm-cpu-models.c | 35 +++++++++++++++++++++++++++++++++++ target/arm/arm-cpu-props.c | 25 +++++++++++++++++++++++++ target/arm/cpu64.c | 14 +++++++++++++- 3 files changed, 73 insertions(+), 1 deletion(-) diff --git a/target/arm/arm-cpu-models.c b/target/arm/arm-cpu-models.c index 1fe20b7d6e..8a725a0c26 100644 --- a/target/arm/arm-cpu-models.c +++ b/target/arm/arm-cpu-models.c @@ -90,6 +90,14 @@ static const ArmModelPropValue neoverse_v1_v1_pauth_prop= s[] =3D { MODEL_PROP_END, }; =20 +static const ArmModelPropValue neoverse_v1_v1_sve_props[] =3D { + MODEL_PROP("feat_SVE", STR, "on"), + MODEL_PROP("feat_SVE_BFLOAT16", STR, "on"), + MODEL_PROP("feat_SVE_I8MM", STR, "on"), + MODEL_PROP("sve128", BOOL, true), + MODEL_PROP_END, +}; + static const ArmModelPropValue neoverse_v1_v1_props[] =3D { MODEL_PROP("cpu_implementer", NUM, 0x41), MODEL_PROP("cpu_variant", NUM, 0x1), @@ -153,6 +161,7 @@ static const ArmModelPropValue neoverse_v1_v1_props[] = =3D { =20 MODEL_PROP("hw_prop_BS", NUM, 0x4), MODEL_PROP_COMP("pauth", true, neoverse_v1_v1_pauth_props), + MODEL_PROP_COMP("sve", true, neoverse_v1_v1_sve_props), =20 MODEL_PROP_END, }; @@ -210,6 +219,16 @@ static const ArmModelPropValue neoverse_v2_v1_pauth_pr= ops[] =3D { MODEL_PROP_END, }; =20 +static const ArmModelPropValue neoverse_v2_v1_sve_props[] =3D { + MODEL_PROP("feat_SVE", STR, "on"), + MODEL_PROP("hw_prop_SVEVer", STR, "sve2"), + MODEL_PROP("feat_SVE_BFLOAT16", STR, "on"), + MODEL_PROP("feat_SVE_BITPERM", STR, "on"), + MODEL_PROP("feat_SVE_I8MM", STR, "on"), + MODEL_PROP("sve128", BOOL, true), + MODEL_PROP_END, +}; + static const ArmModelPropValue neoverse_v2_v1_props[] =3D { MODEL_PROP("cpu_implementer", NUM, 0x41), MODEL_PROP("cpu_variant", NUM, 0x0), @@ -271,10 +290,25 @@ static const ArmModelPropValue neoverse_v2_v1_props[]= =3D { =20 MODEL_PROP("hw_prop_BS", NUM, 0x4), MODEL_PROP_COMP("pauth", true, neoverse_v2_v1_pauth_props), + MODEL_PROP_COMP("sve", true, neoverse_v2_v1_sve_props), =20 MODEL_PROP_END, }; =20 +static const ArmModelPropValue grace_v1_sve_props[] =3D { + MODEL_PROP("feat_SVE", STR, "on"), + MODEL_PROP("hw_prop_SVEVer", STR, "sve2"), + MODEL_PROP("feat_SVE_BFLOAT16", STR, "on"), + MODEL_PROP("feat_SVE_BITPERM", STR, "on"), + MODEL_PROP("feat_SVE_I8MM", STR, "on"), + MODEL_PROP("sve128", BOOL, true), + + /* Grace SVE crypto adds */ + MODEL_PROP("feat_SVE_AES", STR, "pmull128"), + MODEL_PROP("feat_SVE_SHA3", STR, "on"), + MODEL_PROP("feat_SVE_SM4", STR, "on"), + MODEL_PROP_END, +}; =20 static const ArmModelPropValue grace_v1_props[] =3D { MODEL_PROP("cpu_revision", NUM, 0x0), @@ -290,6 +324,7 @@ static const ArmModelPropValue grace_v1_props[] =3D { MODEL_PROP("hw_prop_DIC", BOOL, true), =20 MODEL_PROP("cpu_revidr", NUM, 1), + MODEL_PROP_COMP("sve", true, grace_v1_sve_props), =20 MODEL_PROP_END, }; diff --git a/target/arm/arm-cpu-props.c b/target/arm/arm-cpu-props.c index 11f45523a0..94672040c5 100644 --- a/target/arm/arm-cpu-props.c +++ b/target/arm/arm-cpu-props.c @@ -298,6 +298,20 @@ static const char *pauth_sub_props[] =3D { NULL }; =20 +static const char *sve_sub_props[] =3D { + "feat_SVE", "hw_prop_SVEVer", "feat_SVE_AES", + "feat_SVE_ELTPERM", "feat_SVE_BITPERM", + "feat_SVE_BFLOAT16", "feat_SVE_B16B16", + "feat_SVE_SHA3", "feat_SVE_SM4", "feat_SVE_I8MM", + "feat_SVE_F16MM", "feat_SVE_F32MM", "feat_SVE_F64MM", + /* QEMU vector-length toggles */ + "sve128", "sve256", "sve384", "sve512", + "sve640", "sve768", "sve896", "sve1024", + "sve1152", "sve1280", "sve1408", "sve1536", + "sve1664", "sve1792", "sve1920", "sve2048", + NULL +}; + static void pauth_get(ARMCPU *cpu, Visitor *v, const char *name, Error **e= rrp) { uint64_t apa, api, apa3; @@ -312,8 +326,19 @@ static void pauth_get(ARMCPU *cpu, Visitor *v, const c= har *name, Error **errp) visit_type_bool(v, name, &pauth, errp); } =20 +static void sve_get(ARMCPU *cpu, Visitor *v, const char *name, Error **err= p) +{ + uint64_t sve; + bool sve_enabled =3D false; + + arm_idreg_field_read(&cpu->isar, ARM_FIELD_IDX(ID_AA64PFR0, SVE), &sve= ); + sve_enabled =3D sve !=3D 0; + visit_type_bool(v, name, &sve_enabled, errp); +} + const ArmCpuPropDesc arm_composite_props[] =3D { ARM_COMPOSITE_PROP_GS("pauth", pauth_sub_props, pauth_get, pauth_set), + ARM_COMPOSITE_PROP("sve", sve_sub_props, sve_get), { .name =3D NULL } }; =20 diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c index d326b3220a..2fa5b4d9da 100644 --- a/target/arm/cpu64.c +++ b/target/arm/cpu64.c @@ -134,6 +134,19 @@ void arm_cpu_sve_finalize(ARMCPU *cpu, Error **errp) return; } =20 + /* + * If SVE is enabled but no vector lengths are specified, we must = not + * default to the host's supported lengths for named CPU models, as + * this breaks live migration. + */ + { + ARMCPUClass *acc =3D ARM_CPU_GET_CLASS(cpu); + if (acc->info && arm_find_model(acc->info->name)) { + error_setg(errp, "Named CPU models with SVE must set vecto= r lengths"); + return; + } + } + if (kvm_enabled()) { /* Disabling a supported length disables all larger lengths. */ tmp =3D vq_init & vq_supported; @@ -569,7 +582,6 @@ void arm_cpu_pauth_finalize(ARMCPU *cpu, Error **errp) } } =20 - /* * These properties enable or disable Pauth as a whole, or change * the pauth algorithm, but do not change the set of features that --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649333; cv=pass; d=zohomail.com; s=zohoarc; b=blsQqW2tq58KZzVodVmzKjxlQUfKcaHWUMBEG6MKMSeptikFjd1brL0GJnejJOFnDcSHjmnfUD0XxmQxj852b+3lv8zwNFTcU/wwey0hppA/EolZamnbVkVs+dm1yjARpQkoDYeQdO2rYDb231h7w2wPM4DBNdJ2KK2VhRRY1Ac= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649333; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=HBTuVLeW1X997hLBAnESt8sTrEr+TXwqbBOtJlAd3rU=; b=ONW2kdO3zyzSrdT4qfXeS2C/imluM5EIBJQ7V4+NaX79htAMRLTaGaWYqV/u2guAoLegXC/1ddYE49yW4IP6HxnCJHIniJTQCaTXL1KoHlbjnaoBgd+ouAq0B0pyLQy2FwjwOgxkMUapTXl3VGBa7Puopv38G9iFxh3AECPMhPE= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649333024354.8020562267649; Fri, 5 Jun 2026 01:48:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQ9j-00063G-SP; Fri, 05 Jun 2026 04:43:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9i-00061w-0m; Fri, 05 Jun 2026 04:43:54 -0400 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9e-0002Vu-HB; Fri, 05 Jun 2026 04:43:53 -0400 Received: from pps.filterd (m0127844.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6556MRUH1185382; Fri, 5 Jun 2026 01:43:21 -0700 Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11020134.outbound.protection.outlook.com [52.101.201.134]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejuupcm1f-3 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:21 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by MN6PR02MB10630.namprd02.prod.outlook.com (2603:10b6:208:4f4::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:17 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:17 +0000 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=HBTuVLeW1X997hLBAnESt8sTrEr+TXwqbBOtJlAd3 rU=; b=sw11JG8b6Sg1O0qqlVX5lzR1nWryI/Pl+kkH/ZcTuikR4lX93rJ5ckeNM JxFwr2xsXe0oYu3G+NewBXZVS8G7tWRtzsIksNvd6gkZnRqfzlcgURxB5ByLU2Us NZZ4oVWNgEN0koB9qWKWPkOVB6PeoySJnUbbLqJW3Xz1DlSrX8s1Zh0zA3eSgzYX oefc32VgR8hha+vOcyyj2/bjYw4Gvw3NzLlGaoLLwiLZCVFgUc2oWyXSVSIS2Xom Ydzjn8+QaBpgiHFuCrEhrgjpUW9tjpD/DFmB8WUHO8ZnntNQAkGWBPr9BRtKNgzg DCuWzq+X6YrE9IQyQCogENwePcPxg== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yzA8zjqfIbx6DVUE2wDkPtuMZ1aN81ZF/e4rDwVjUVNKj1gk8GOjtVxt6Rv8xcEn3+dgOJaYfJGGtiU9PIb8H39n+ysEtPIf97uEFRb5HE7qGmLKf8M9oQQPCGV7Ce+ZfdD8EyGOA+pF1v+Ko632g/64WU8qFP6XBRsez8UfHBqJFFwg2m2EfKiNfYvaXIkpc+vaTOoUiJwYKXAtfGBWNXo3qsoXg76G7wB6Z6KropE4BMbnbpIMhc5iSMw+eURcGO/ngg8UmkHqKz8qa7Vh58K9oyOcEtFd67kaDlnQj+VUi/pc4rl+JXdK5KZijqdH+4y85uUF6BYQ8PX78psRQQ== 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=HBTuVLeW1X997hLBAnESt8sTrEr+TXwqbBOtJlAd3rU=; b=SEUwNHSlGkVm2e7+CSry4uyYYHspwSgwQWj+03kxjk9ewlNBWrsQDDdw7uoLnFuGGfmOu2pErRGCEINt48yfgal3amSuL0SOzJLKDYBaUVqaCZckRYJ5epwTijovS8pL5AK/124SmuFS8dvgSWfwMkhBDJqNr6nTPXSH2ZrsUwxarthXu27itjORg6/GghIQiFE5odobE0Oz0m/iM2GMlcxO7Ir1TYx+BBCpMS/suAaBlbi/A2rVLxvpYL9TM2t0pMsS+cgy+6TlkCWM3CHaaCRurQbDyA/1ZlMI8/pdKDcclLdy294nt/n6Xl7Jj7FLmUnctspJvj4Cu5ROwb8EeQ== 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=HBTuVLeW1X997hLBAnESt8sTrEr+TXwqbBOtJlAd3rU=; b=BYG0FK/IoUb5sitNHfZuDnNBRn2eVmHYHwXG75DzQNQKyJ8bBFM3flKojiDpqEBYrecQ5jnzj4u03uZmyEhIXUv99XMVb9IV7Rf1AXJYxY8Dh3lNqycMEPYOR/8T3T91vgvireqfAPTdeLYThENb+3gZICUevKWhe9S58oCAHBZEoKuEtkkKQAVDPQMQRvqzaTAHzeRy8Ez3h6G5WldDj0CDRuaHQKQlrSeuW0dRZUzX1iftsBjMPXru2nKImzx4LoY4q7KijBsyn+PgTHyi8bgsMWWbcIeXOaWpOHojPegH6NqUT7v9q7aqUsBLX4bJcn1DfQEEGZhTikOdxRlLnw== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 20/29] target/arm: Introduce stub files required for qmp support Date: Fri, 5 Jun 2026 08:33:49 +0000 Message-ID: <20260605083358.1320563-21-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|MN6PR02MB10630:EE_ X-MS-Office365-Filtering-Correlation-Id: 08a472a4-bcc1-424a-6ee1-08dec2de7caa x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|7416014|1800799024|376014|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: WQi90WIidDNdqWIaZtJ1FUdyvQBHQKHwR566yH6dHqguJGDEpGCaEWDsdzgsE5v4U7oNFV+uqA0LEtmHTEnNzMI33CSrt6ghcsksIdkN6p7wLYl39Ogfp51kznGkdzW0FNiV1ykEPhIxhXIUsmfyPDyb4/NnGrhqNcEB6krXqwKTPrnzmco5Jq2U2A1RlBXatINvvqdE3BcBNQMJLN1Sgpnka3Qyyqt4FcxnEKxuNni41uNmQfIqdmY4MQZrN0pK07trQiXuK3BDBgop8KC2QHhqBvwBCI374/Gpt8wSPoYkd8zMgoET0mv7333fjeo3cBYo4SVFdoQVfFdAlQPlB5OIMUq28ey6JZ9InwAbvikQgblrqLqSeEwoH0jpKrD8NeEU/kUfWa/wQdpx4OM0y2zzNRV6esRiofLddWPGe1QEIrxOGc5D73A3j+1OTy1f9yqHtc4F3eF5JHOpfLKDPfDy+a91C3XCLbX485fEPyCcREOY+75B15ZWBVFLLCkiKc5gDvuOOoy0yTky9Fzlq8aPpUiV8ddLbUezteSPeSjnyVCBs+Zq8N6ZsZmoCxDpqUphN1sE+nyqRa00b5rB2IX4IYFC4u28l8Ng0S016he/CSmv/XnwsJcGx9XOjehHdL+yclyk1v6Nt94TdHovnoRJcmj0UrUtg0KESU0p/i9oAwODWwTxdhyv4tFN1OCg X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(7416014)(1800799024)(376014)(56012099006)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?sQyks88w+Ys3ZDJCqWFB9miBjXQDOE4jSrwDAwncwXeN+1kyBNcs12KYCKyg?= =?us-ascii?Q?b6ek08MKCXt/Zph1HN5tqbVsnuRNM0MW7mGAPhy6jPP1ebm7vJB9qnDn8qra?= =?us-ascii?Q?AhMI7dca56/hJp+CXWKj3MZ/LZb2SIdoHRLlQnKmbDL3rWbT4v5jIMa9fW7y?= =?us-ascii?Q?lzhCgZsJLa9GxiX0vr1WLpFrYhZymzztJHocDsw6o8WGuhdPo0vqDH8JkpmM?= =?us-ascii?Q?qpIB6PviMd7mvzwb7E4iCp7DXyln9c7tu+vAjqZlZQSj62z5uMLVeqVY5sC5?= =?us-ascii?Q?SKGu8jxboA4XlQjKRkMxQow/+V65INOliuHNaHKt3Mc1Fw7j0oTppNHifHHR?= =?us-ascii?Q?Aw1uhnCYLYVDjaPbvrPGm6v15vSmv+2MfmkcOwfofY5KUAhuzVYfV+f9NIgZ?= =?us-ascii?Q?WYLSADl4Zox3tuYOdWOSR+CENxv/bt5j85WDlJiVE5X83MpySa1Koj37jWbK?= =?us-ascii?Q?1YgqGs32tM0kPsm2jLhk2X3lg10q0Yu691a037rjvBM/F3H6vGqF/ZCGq8rf?= =?us-ascii?Q?fUneXds/aip9++Edemm4KSfozXDe6S2UsDccMHIcZCmao3uQL12mpcMVzqeH?= =?us-ascii?Q?H/EfNjS01ETWjqJ0Fsvewu2U3oy6nFnDzvjir1Vcq+0gtEIY958Rb/6OdCch?= =?us-ascii?Q?Ae5y0cvOJ8+WbSi12az+CyvWQZccB1hOf6XdGPuDWc/rWmIGWkQ9QCaCtUE6?= =?us-ascii?Q?c38ks6oIzpPuei8CVGTfJNXVyXDgNxGdC+qCxjU0vjIwvezeR4VQ6BrfLfSK?= =?us-ascii?Q?NBw/wWMHRmqEO0xyU47guF/m5qbhdjd85R+fswkBCRkZOVxp++wK8qN+dDU/?= =?us-ascii?Q?ZEeyoTvI4EAg46SqF2WtPPkW7KFShnIbyaeGIoCQRf4VV1T39S/EEdLMdHO8?= =?us-ascii?Q?8agUq9PPtt+GCnX+NOGvJw8seefoaUNGdBsG/799jgQV4qlPdwmpiq6PUgKl?= =?us-ascii?Q?aIT2HWHlv4Eyc5z6EgOUY3Ec27FH1mQuQRMFH7BaazYHwnJL/ZG+7LSiaH0w?= =?us-ascii?Q?ufNVedKhqoBmqIxdSSCDavL3ZFz/fsqPI3rxNZS7IpBUSHE3j/QMW9lL4L8K?= =?us-ascii?Q?axOPNXN9DSL1+TkocFxrB8F6n+e2OyA4FjF+XL+4hzva9DAx+E7p5em41f4e?= =?us-ascii?Q?ch5VSxJXwaHAThlWkIcPY1Qm6jQLCv5aTZL+F2K0bwyqkAqk8zTe5UghNs3W?= =?us-ascii?Q?/cNn0EVAkXVI908AL8dGzjvklLe7BC0M6f9fjxfqxDsh09cOKbn9SRKPjp8a?= =?us-ascii?Q?aUE12nuxej6VbMRJvSZ2bJT684g/tcbI3sgeS+PLuGMWXhm8q4sc9dNNk899?= =?us-ascii?Q?14IRI5PQtAl5ka4yB++dkpjFVMna1MxLJHh9lYpQ1G6jJhuRGYfxovpQVCPZ?= =?us-ascii?Q?/WX7rr/6AHHcQcaFYTOrpoClbji7SH1JkuHu+pdUzFvcorHZRRKDBoU7hlCQ?= =?us-ascii?Q?VjyW8e1iZfi9869JSMJnheXkXwDtUEtiSEgo0NlVbO3u0SilZlTgGGmNfFVf?= =?us-ascii?Q?VdoaTCD4nCU656SbLxlVY6KzXPApEGSLrpE/66eOvj5MzmAA80f3w/nLK0qH?= =?us-ascii?Q?HGWhD8Wei5EG9lWYMy4ub8cl79e48JcJwGvJivTnU5cDK0QSKfa3WRoxVU4g?= =?us-ascii?Q?k2yfKQj0Pcsu6AjMRnMyaF6YVSxP6Zg0iN8pq5F8xClieQEICtVb0cAQmN+q?= =?us-ascii?Q?Behqm8g+pqtlmoS9BeKfA7xC2Fa7wlU/qHshIm9q5148/UtBkm+vKxdSW3ga?= =?us-ascii?Q?S21DJMIAkVEnCTdQ9YYN6AAZE91OOcg=3D?= X-Exchange-RoutingPolicyChecked: JTqWI+kySbfDEuLl5vatEXUL6EYHpEfl3NekBsN1s6by6gvS7LS4F7EgQZ7OaAHamaaSyB3qecJrr1LecUxKG5OZ8C60F6MkiT5kKoS0ZDWCjU6ztvNZtlDwu6ceazQ9t8CuCEquwBHa3oPcbo6KaSL6IjhJ1bYWMNXJxnqPGV/UpRs6l0CaSrJP3oNa2fHbaab2nBiaHqCqmwsbe3lm3tZnSCrn8gFLBhWNJ9LepgDBTE4rvdXqf+OvXvXwp4lztrOevEDAyF/MiozPtgWdY8sVBAAZ1xEuHMYwpygXobuAohqfzol3CwKujRrnN+CIo8jGi5MH9hq8sQC9Q3RR2A== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 08a472a4-bcc1-424a-6ee1-08dec2de7caa X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:16.4257 (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: /1oZw94UFaM02TUak6+HjuidsNi/wyllE8MX0e36uhUzzDEQ9PnV9tHtt4EfQ1scxkPv0Wy041eTBlT9EMuDtYsfGx+xDN50WJFvvQrJ5u0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR02MB10630 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfXyuydJM0Xof1G dzLjQaHiRVNC0EAu1X5GsiCOY4hmU/AGXZyfeSCyh0aHBHwMN6EfZQPxwB96ZRUGPbqBtFjyq5U B29IispG2Gsn06m51+5ijTEA0sExN6XxfLOnNTY9MCCwaU8LUoDDb2SNtsNx9ITY+ACRecfwtcX 4zzCB2CT+LmyWOiT+UK3+1qhKhAF8Ux/YPi2v0uj2hygSCzVw+XkSfbUQL1BZZ/MHIctrVEo0Ff QzGzmMgI9EeTja+u2Bh0GM0csi5kG2CUR9yOBx5+7S7KleFF/kQuaw1AHqrZXyvbHAcEefusfk7 dhw7hWYjk/Y9GA34odjVcfmO1PGMwjNLlgT7Gl1xt24n9ylVPe3CirY0SgoP+AZcZj85euhLjc1 3b0XtU/wee3K2l/Wbz22/idhF74vFrlcx/zICK0iu+8VQaUHIP8GvT7XyciVYnKJlDgmNGL9ZmQ mvGulucVDg2Ac5pmZ7A== X-Proofpoint-ORIG-GUID: QGhJ-W2E3A8zvEwiHj_qkg_6DcYJxQxQ X-Authority-Analysis: v=2.4 cv=V6FNF+ni c=1 sm=1 tr=0 ts=6a228c29 cx=c_pps a=h3Jk+6XEKCuoUZR+ZnWw9Q==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=0LlEyIVc8U2lsR7dKhuH:22 a=64Cc0HZtAAAA:8 a=GiayiNAqsrDiKACkrzoA:9 X-Proofpoint-GUID: QGhJ-W2E3A8zvEwiHj_qkg_6DcYJxQxQ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.155.12; envelope-from=khushit.shah@nutanix.com; helo=mx0b-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649334563158500 Content-Type: text/plain; charset="utf-8" Add arm-cpu-props-stub.c and arm-cpu-models-stub.c, which will be required to add qmp support. Signed-off-by: Khushit Shah --- target/arm/arm-cpu-models-stub.c | 13 +++++++++++++ target/arm/arm-cpu-props-stub.c | 23 +++++++++++++++++++++++ target/arm/meson.build | 2 +- 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 target/arm/arm-cpu-models-stub.c create mode 100644 target/arm/arm-cpu-props-stub.c diff --git a/target/arm/arm-cpu-models-stub.c b/target/arm/arm-cpu-models-s= tub.c new file mode 100644 index 0000000000..0481f0f946 --- /dev/null +++ b/target/arm/arm-cpu-models-stub.c @@ -0,0 +1,13 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * ARM named CPU model definitions - stub implementation. + */ +#include "qemu/osdep.h" +#include "cpu.h" +#include "arm-cpu-models.h" + + +const ArmNamedCpuModel *arm_find_model(const char *name) +{ + return NULL; +} diff --git a/target/arm/arm-cpu-props-stub.c b/target/arm/arm-cpu-props-stu= b.c new file mode 100644 index 0000000000..abac29ae50 --- /dev/null +++ b/target/arm/arm-cpu-props-stub.c @@ -0,0 +1,23 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * ARM CPU feature properties - stub implementation. + */ +#include "qemu/osdep.h" +#include "cpu.h" +#include "arm-cpu-props.h" + +const ArmCpuPropDesc *arm_find_prop(const char *name) +{ + return NULL; +} + +static const ArmCpuPropDesc empty_props[] =3D { {.name =3D NULL} }; +const ArmCpuPropDesc *get_arm_cpu_props(void) +{ + return empty_props; +} + +const ArmCpuPropDesc *get_arm_composite_props(void) +{ + return empty_props; +} diff --git a/target/arm/meson.build b/target/arm/meson.build index a7638f8778..63d038f285 100644 --- a/target/arm/meson.build +++ b/target/arm/meson.build @@ -14,7 +14,7 @@ arm_ss.add(when: 'TARGET_AARCH64', if_true: files( 'cpu-idregs.c', 'arm-cpu-props.c', 'arm-cpu-models.c', -)) +), if_false: files('arm-cpu-props-stub.c', 'arm-cpu-models-stub.c')) =20 arm_common_ss.add(files( 'mmuidx.c', --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649082; cv=pass; d=zohomail.com; s=zohoarc; b=XoRgihxk+d5UPu8PcZgouKin1+L0s0P65xLvagCXGPFL7qXlWu5YkZbJ+gw/qPUVUM+9y58eeTHDRlGVQNtV4dERuYFRCr6bDU7fVA1stKFw9dbX5DceaLB1hdqul8O0su8LZgiqGXRETXNlnqJK34foK1KbfJPCwWlPPtYbsyU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649082; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=oo2GEMShnWTRX8Fs9ie7JPPSQYd6SMWqx6ps+iN4HGY=; b=T+l7JcigRZ0svvAN+cT5PbGlKZJPc4XuhLRLKVKoV8dSH1BxQoUX3Nwce5oakctJKSjS2i4xDtTf7Yva5Gp8uQ7RyYoUb1lNCci8eeFAEd9AiWKK/NN+LVdaW2Zu5Uq5UuTHhu9HiQnIuAq/e5Zkgz97Gp238334sGzUuto0kBc= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649082076266.0050834954285; Fri, 5 Jun 2026 01:44:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQ9p-00068k-BK; Fri, 05 Jun 2026 04:44:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9i-00062U-Of; Fri, 05 Jun 2026 04:43:54 -0400 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9e-0002Vw-Ho; Fri, 05 Jun 2026 04:43:54 -0400 Received: from pps.filterd (m0127844.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6556MRUI1185382; Fri, 5 Jun 2026 01:43:22 -0700 Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11020134.outbound.protection.outlook.com [52.101.201.134]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejuupcm1f-4 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:22 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by MN6PR02MB10630.namprd02.prod.outlook.com (2603:10b6:208:4f4::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:17 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:17 +0000 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=oo2GEMShnWTRX8Fs9ie7JPPSQYd6SMWqx6ps+iN4H GY=; b=xV8TK8Tld5PjzeYclON0bZZWXLffE0y4eNlMbTWKuC/b8TA7WlmXRdqCf vsOXikx5DCMnWCoclKS7uhfxN35Pri1tWLCuO4KxkUoYmz/ZkVXfnC02pRMXQYUR Xf0QNcWQxjBWsH1pcpfXyf7ik7UFzCkUG/xeFUxJ63vxatYQuy4l9KWt+G5BssTB nNeEyqZGWTrcK9SWNNdORpdRZiBnz72fYL7vDc63/WUZyLv1QkoMzLczfARnlXF+ fhWZTM9ftb7TpvnDLbr4kmd6IbjQybkyb+8AZCeKlvg/z5PVv25DZm5KQHQg3Xot SDjh4oygB4qDRWicsh6iGW7SOIVOA== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ePK/nAxlabg8qYd7oYDZkNywjpKBskCd/wRuKO1w/KNs03Ws6IhuPmAWyN+qtGKv6OgCuBdeeFsoC3fviHAitWdHm1is3Vly56G7Z10u4ZPMYHUFwZ34AjTd/dcDtli2m3g4O0JF68bxFw4b2kgoihyUXgqD4lmfkcBGcWcHGuNBMOMKh/8SpEOGbGhaPT+IQLP2/i4sVOEilNviJkyIyZBsRQRU7Vv6/KDJ5f5QpD72qpqsHGTsQpjW+BDRsqlIMQxoHC1mgbBRnUI9Yt57JwcuTJe0711dy0s2unc39M/GjXpiq3IoYZEAA4ZTzjiB7xrDQ6lv8cZBRdCXOV6pcw== 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=oo2GEMShnWTRX8Fs9ie7JPPSQYd6SMWqx6ps+iN4HGY=; b=iNMrxDx0oiDjS+4EhTT0mw2p8PlsVOopU9zqKRKLIjezS2MJeb15Imuhek1xyJb+dfDlupQOWyF2GOZ724UFhEaBRc77jsKJYhQRYFBk+pT9FYh7gS2Cm9DVKzRanU4oEnIbUC+m4rP2qGsv+uyUk0QVZff9i7Gh9oQEZmewbaLVcrHuUprc/wM9Yw1VDtfFKWB7DtC5DiIweMc3nCHcCT1TZAIYQdYD4jMjHqSFuAY4SV8IyMfY4SrpCoW90hw2rCUuD2cCKAeCZRDQtMHQCSostmug14h51LgPojosSWRyaHONqrNIF3I6akg2wp68qOReNHcPQXUGYV6MhlTx/g== 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=oo2GEMShnWTRX8Fs9ie7JPPSQYd6SMWqx6ps+iN4HGY=; b=U3n7ENejA8VoAHo/ZFeLFxJmYBoINsfA9K41XydScQrqqcIlv9s0KwvTuEy8JNJtmVrDo8g7hgCySqZ3/pRu5zqlo09HgNgYa/8Y0ZcaH+yY1R/cUap0tKFouLAiOFKs16csaM8jEdjLLvqqVSVOXs0wzbZ+sU0pRzc7/Uz9T6LCLQyeYs4coM4qJNHEOifqIjWwzMy/HnT3HnF2z1L4Q1ajbxTAYZCEC7DuQGbAaNALF0fnPW3lj8VjfiVAVcQtKG9TAst0yMFpv3HFOS9LGFhcCVxJPc+owI9E4uptyanN1wuz3P0Oz6K0wVVSJbrNYyIotN9BXbz8xYDJEd0fVw== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 21/29] target/arm/qmp: add named models and properties to cpu-model-expansion Date: Fri, 5 Jun 2026 08:33:50 +0000 Message-ID: <20260605083358.1320563-22-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|MN6PR02MB10630:EE_ X-MS-Office365-Filtering-Correlation-Id: e01b2a0e-5a56-466f-151a-08dec2de7cde x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|7416014|1800799024|376014|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: bSVF629H6QyyCr8XlnnGCle6tarxWHfjZgTwubrhv61fcz/q6zOkNW1+sRkE01Y9ak+YIIoF4K9z8URbkpZM9GXcSQmRGXDxgefJocLie2Mod4Btcq5KA9AU9IKlm1AWlczYtt+6k7nhNGg/+LXlsxctr9gM1P5vZLhK425g4oEaml+DSfQioyIOcUwOIbQ95YElLQGUqpg7ghBy5EA7DsRcEtowoY2D2YrMv5uDAVpHI6dytywcql2Aog7/jOZW9nM5hJvYPByDhX0ICZPGM7fvbmTcmDMkFi2Ck0APjDauz0//zTlnE6wVRhmbjml0GYGmJ9Eu5VBlq4hssozmF37bXJysEXcyoB6s9UaoMHImuC5OUBaWWY9Npb5cKTU41ygx1Jy65hQEHM1tZsz7Ge9frodGCAnYF6KqD64a5SZ7Mth7s0yqcUo85ZoLSv9x44dLNMbRUc5WgIQO6NpSGzAHYlMpxf4lUABxg68+KefBlFkm+ssRJlnwN1hTFy5vYgsTF7Nc5Uqofvx6jOayxB5lpJGpC6fc6siuhLKE+7B60mmt3e9LEbH+73mLkDaAEpRRXzPnVvQyDMxG4uPcGtvz0wKJIACmvm2P2Vj7p8UW/uYNFH0K0FsV0H+xzinXVwl/0JALw0sYxek/hAFiFYRL9plUV43QUt1i+zDFQlClpQA9eo78n9hVqsbtrWV7 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(7416014)(1800799024)(376014)(56012099006)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?LG1hpX0bwRTTt4Wp7/VBdkGFypErWwDQorj1qN7buVLzcBuVS/ybaPEOARVo?= =?us-ascii?Q?QogE0s0quBfOO3BWDYHgE/yYN0ujA4vecUFwBjdrlF3ZIrJTwu44lrt2CPxF?= =?us-ascii?Q?4MY9Vaj4QxLf1NCNqAujnG5HleGzhWC5yIEOEJIHSGqEDMN4V8ixPKIS+vaN?= =?us-ascii?Q?V86zwc7RZPNPnpu3pXQ9wTjk1aI4gY7e4NbFExQihgUra2z33tLYBKKxfQWS?= =?us-ascii?Q?gETVyuxGfinlseW9H0J9ZFrrtfi5dneYpZqjx6LmKxOPfQNLYmorUywIGtU1?= =?us-ascii?Q?lFQ1KvBjfqJ8JIhsC4DdPCTD/zXoRia+SnALd1eM8oKDLzvlM28RjZnZmlz1?= =?us-ascii?Q?5rqzZCxdAonbR3E3SGF5e2ThVha5vAL5OBT/g82AzhRlPsJL+eUmy6GKwzdL?= =?us-ascii?Q?AyPVuDNOPO6E1eZdEGU1zTZSwB+QmYTQkGPrhQvKw/uaZJezwf7vAEnKAfFY?= =?us-ascii?Q?pW3BuTlLhDVZkuhuwkZsNgo/xHw6I/zP/LVbGnHhaP3hNjXHR9X6yxU53c2S?= =?us-ascii?Q?wgyOcV5a4kV0BqimsknyfVxrZtW6lH6NwAvYD274x/sYbVTrOTqyAsUNIqVr?= =?us-ascii?Q?nK9UqBoGWt3CAA/S9fXKzouJxUDtggNu9boSIsCMhUInxkT6U3F1nYO2NDPQ?= =?us-ascii?Q?aXwnr1wDjGgEJbiYehNvDHkJK3wOnYIOjUe/Y6zs3/vgRPek9paNSeH3M7HP?= =?us-ascii?Q?NI2RcP5fGVELI5gvCfUIk68nDQNFOE6TvQ8lKstCCHcHOmaMvJwpCnBaMcLQ?= =?us-ascii?Q?IKkWNEATsNGkdx4hopbSASvZZbL1FzZWODV4G4XLV4IVwvI6tEoZJ/qoRl9/?= =?us-ascii?Q?DFxTUBtMOLoacc7LhFirJxAx+P7ATRnlEcAKgGwyJSNHXGREoCzhlGLCrXp2?= =?us-ascii?Q?5XuTWhPdwx5r9ibDD+p+kmzsmFUbNcDgUZzAFtuBL+PBoFBLwZZBoYJIKYNw?= =?us-ascii?Q?hFFagxGvp4CpMk/vBFQvLXpoqxpfMG40Wll9r5YfDZckcoE7ibdaILBDMrjo?= =?us-ascii?Q?a+TzW4R9X2dPlrYdi5w3ONC6kPk4GpzW+aJFgGAkXy6w/tUPzhgzjhpwnSK0?= =?us-ascii?Q?NZeP+7Qfo5w3Wb4AbKCah7jCBCUqoJzNfOw/K5XPMZ2N5ibghI0ZfaWHwz+x?= =?us-ascii?Q?6Pu2z2muGx1Zxf0W4zILGZX0f61pZrSNkWFb2kURHT7VfxDfzgBeZj7cw7M5?= =?us-ascii?Q?fEMi8c/WgmsNJg+bJx0+2LvzCK3+R08/FXI7q2p2lCFh2mxx9Z8OWTzAxojF?= =?us-ascii?Q?d1TVzcqhe7piyizCKfabnwZLozzePSpEngJmF6fkLcrHil4+OTPxCaF/WkpQ?= =?us-ascii?Q?h8CQqJPuusM8e6qYyedZQo0/FvZwYC8CNxah+PnUuD2/dj4XCf463p2Icgmp?= =?us-ascii?Q?d0HSOXBn64vH9qu3kG6ZwFCjnqnIyvmEIUSL0Mg3pt6/SfFMa6TRk5ZaHGg+?= =?us-ascii?Q?MAWNOx82vh2EgmI6s/3W91j+0ReeeQwwGGoZFj8JUpmF4MFSwWUIuCdq1TPU?= =?us-ascii?Q?Afxcj9EYkNCKxor6NGqq1Zkz7LxKmm3nMrz0Ix7SeUA/a3QMuMDpETUU08lU?= =?us-ascii?Q?mXDA0rGRyp2jDZu3cV+2h1iNYs3SsC+mQtn8fJ9Xp9T7e2JrnXRZMyvgFjSc?= =?us-ascii?Q?fOx4S61/jJDwtD63vTEi8KDeuhU8JqBs2pv/aTrT30dFVVDusfSt19jZlV7g?= =?us-ascii?Q?PR/CpsIYkGknM8rhVubFeR/1y1ESNbI6pWZtj0On6uvaVJ8HEo2rYKyzIGqY?= =?us-ascii?Q?/PLdZB3yrr7jYu2xb4MHdW817WYq8ss=3D?= X-Exchange-RoutingPolicyChecked: RLZyQfypVudPdJroo3yDNZJqTwyBZUAhpbofuYWuTmmB8LmbHFBbzwdWSB1DfoK7Rqph4vucpJ1KONyQN0kADE8fQSk7Sevx//8PIm13n3BE4iP4Uq/LMA1YV+l1xPNvlxtwOu+qvP/tMKZXIjpJBdqcmYeOQaVxawI6tRo6yt9zhpCR42YFiYckrKSgLmNT8xqOkkX4rCb7oUZMTenM6w/A8rsAb4887M0hN0gbpNjwLJXKuwJKcH57R0EoYHTG/KtLAeoeyOWqUoRbdp3ePQVeTm4hqQxFT0iF895L2GL1xv2LKSJE1gTufXZQAAoQK+Gd5kjlIa7m1yFLULDN+g== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: e01b2a0e-5a56-466f-151a-08dec2de7cde X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:16.7829 (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: UQw5qw9czgE6P9JIhfklrPo/omBzAjqDVeJnJ+i01VqQfzLN1iT1AgEHoO2+/3s2SQJ1ewr79EURf2TnbKpvxQiYGi1AJ5gSPMKLBCp+hAU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR02MB10630 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfXyNC9uY4lMMt1 IVWBVSAFUm2l+vvV+TpdZFKESPb6oDlvo9UEh9ln8q89ipDF0zQi5ofcPffboH/J5VAHn2NhX/J DXb39zJVMByWrfDNRUfdJdRLmzM4LnDhbhPiVNVJGcY65spYU0A3+lcRe1PaSOAd9zD2ugyz0Wk kZ76i9Xy8pwRdUHEet9iuG42jFwThpbEjjm5G8/MuWq0PpTLXdliGklAxg2kyLgUDW+e7h3viER cS2rOUUafpJW9tx9/y4OR3qTtuip68pjY3BVq7aOdbcTOuGTFfGpRAGWqQ3ZDxnx8r9wsCeHzNO 28PWSWkHK95kSr4JNrLBLers/wNFPWB9F6iOPvUvA3qXmP9t3XNIOJvnOpcoOj4xuzB5PLOd1bB ipJoRJi6eVwQWsnLHLMyqLR1GSYI3XjoB43g34XoHgmQNV2JmDemceKnySyLGJwSvCZ2RZYzj8a LF3XAEw6cMzfVXQI8Xg== X-Proofpoint-ORIG-GUID: oQlxP60YWOffHUUoZn_F2LtJrzRU-PAl X-Authority-Analysis: v=2.4 cv=V6FNF+ni c=1 sm=1 tr=0 ts=6a228c2a cx=c_pps a=h3Jk+6XEKCuoUZR+ZnWw9Q==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=0LlEyIVc8U2lsR7dKhuH:22 a=64Cc0HZtAAAA:8 a=MBHIvbmV4fGAtTtWFm0A:9 X-Proofpoint-GUID: oQlxP60YWOffHUUoZn_F2LtJrzRU-PAl X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.155.12; envelope-from=khushit.shah@nutanix.com; helo=mx0b-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649084763154100 Content-Type: text/plain; charset="utf-8" Update qmp_query_cpu_model_expansion() to include and process the new arm_cpu_props and composite properties under KVM. Also, allow expansion of the new named CPU models themselves. Process named model properties separately from standard advertised features to avoid double processing of properties like sve/pauth. Signed-off-by: Khushit Shah --- target/arm/arm-qmp-cmds.c | 71 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) diff --git a/target/arm/arm-qmp-cmds.c b/target/arm/arm-qmp-cmds.c index 83ec95c290..7cb74b4b8d 100644 --- a/target/arm/arm-qmp-cmds.c +++ b/target/arm/arm-qmp-cmds.c @@ -32,6 +32,8 @@ #include "qobject/qdict.h" #include "qom/qom-qobject.h" #include "cpu.h" +#include "arm-cpu-props.h" +#include "arm-cpu-models.h" =20 static GICCapability *gic_cap_new(int version) { @@ -89,6 +91,7 @@ CpuModelExpansionInfo *qmp_query_cpu_model_expansion(CpuM= odelExpansionType type, ObjectClass *oc; Object *obj; const char *name; + bool named_model =3D (arm_find_model(model->name) !=3D NULL); int i; =20 if (type !=3D CPU_MODEL_EXPANSION_TYPE_FULL) { @@ -101,6 +104,11 @@ CpuModelExpansionInfo *qmp_query_cpu_model_expansion(C= puModelExpansionType type, return NULL; } =20 + if (!kvm_enabled() && named_model) { + error_setg(errp, "The CPU type '%s' requires KVM", model->name); + return NULL; + } + oc =3D cpu_class_by_name(TYPE_ARM_CPU, model->name); if (!oc) { error_setg(errp, "The CPU type '%s' is not a recognized ARM CPU ty= pe", @@ -114,6 +122,8 @@ CpuModelExpansionInfo *qmp_query_cpu_model_expansion(Cp= uModelExpansionType type, if (!strcmp(model->name, "host") || !strcmp(model->name, "max")) { /* These are kvmarm's recommended cpu types */ supported =3D true; + } else if (named_model) { + supported =3D true; } else if (current_machine->cpu_type) { const char *cpu_type =3D current_machine->cpu_type; int len =3D strlen(cpu_type) - strlen(ARM_CPU_TYPE_SUFFIX); @@ -148,12 +158,38 @@ CpuModelExpansionInfo *qmp_query_cpu_model_expansion(= CpuModelExpansionType type, i =3D 0; while ((name =3D cpu_model_advertised_features[i++]) !=3D NULL) { if (qdict_get(qdict_in, name)) { + if (named_model && arm_find_prop(name)) { + /* + * For named model prop; the processing is done later. + * for -cpu host this does not double process as the + * arm_cpu_props are distinct from + * cpu_model_advertised_features. + */ + continue; + } if (!object_property_set(obj, name, visitor, &err)) { break; } } } =20 + if (kvm_enabled()) { + /* Set properties in order of model->props definition */ + const QDictEntry *entry; + for (entry =3D qdict_first(qdict_in); + entry; entry =3D qdict_next(qdict_in, entry)) { + const char *nm =3D qdict_entry_key(entry); + + if (!arm_find_prop(nm)) { + continue; + } + + if (!object_property_set(obj, nm, visitor, &err)) { + break; + } + } + } + if (!err) { visit_check_struct(visitor, &err); } @@ -180,7 +216,7 @@ CpuModelExpansionInfo *qmp_query_cpu_model_expansion(Cp= uModelExpansionType type, i =3D 0; while ((name =3D cpu_model_advertised_features[i++]) !=3D NULL) { ObjectProperty *prop =3D object_property_find(obj, name); - if (prop) { + if (prop && !(named_model && arm_find_prop(name))) { QObject *value; =20 assert(prop->get); @@ -190,6 +226,39 @@ CpuModelExpansionInfo *qmp_query_cpu_model_expansion(C= puModelExpansionType type, } } =20 + if (kvm_enabled()) { + const ArmCpuPropDesc *props =3D get_arm_cpu_props(); + for (i =3D 0; props[i].name; i++) { + ObjectProperty *prop =3D object_property_find(obj, props[i].na= me); + + if (prop) { + QObject *value; + + assert(prop->get); + value =3D object_property_get_qobject(obj, props[i].name, + &error_abort); + qdict_put_obj(qdict_out, props[i].name, value); + } + } + + if (named_model) { + + const ArmCpuPropDesc *composite_props =3D get_arm_composite_pr= ops(); + for (i =3D 0; composite_props[i].name; i++) { + ObjectProperty *prop =3D object_property_find(obj, composi= te_props[i].name); + + if (prop) { + QObject *value; + + assert(prop->get); + value =3D object_property_get_qobject(obj, composite_p= rops[i].name, + &error_abort); + qdict_put_obj(qdict_out, composite_props[i].name, valu= e); + } + } + } + } + if (!qdict_size(qdict_out)) { qobject_unref(qdict_out); } else { --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649190; cv=pass; d=zohomail.com; s=zohoarc; b=HtTmsBf9dKY+qrr87yNSiNyML+cUbJQPHdF1x3zyIG9B4WWqx6+dXH/uLeqwZReaDM/voF47kVhUYBpKDKikOFinq8R6YXhZpyjhKPGp6OnpMCp+5rfH5NQFWV2fnHu72WUPLSed3NGZ/70rHlEWq1U2rGjtVlZAauwsfqaLzps= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649190; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qpu/vUW5/4oKbS+N83wUCZeagPINvNsKs3mGdcVvkX8=; b=Ok0CCW4zqs+cdamwZA7F9jJp8VXxdIGN471/EqRMD1kYK43OAZO9XeB5knQkksm6BeNGmsz2OErQYgDcgcJho6w1DEorCS8iorFzYWRDCEir5oAcrcICEE6DPiWL1U0iy36MPojEjyNcGsS6TuRt5naoAjso/SI9+3TNbqXskE8= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649190560742.1580366460789; Fri, 5 Jun 2026 01:46:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQ9o-00068c-Pf; Fri, 05 Jun 2026 04:44:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9m-00066C-DT; Fri, 05 Jun 2026 04:43:58 -0400 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9j-0002Zd-T0; Fri, 05 Jun 2026 04:43:58 -0400 Received: from pps.filterd (m0127844.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6556MRUJ1185382; Fri, 5 Jun 2026 01:43:23 -0700 Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11020134.outbound.protection.outlook.com [52.101.201.134]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejuupcm1f-5 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:23 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by MN6PR02MB10630.namprd02.prod.outlook.com (2603:10b6:208:4f4::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:18 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:18 +0000 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=qpu/vUW5/4oKbS+N83wUCZeagPINvNsKs3mGdcVvk X8=; b=q2V4zHRvPStju8Jn272tgJF7BVvp/qzj0QcEHN6dL36gvSEddxnum5PBp eTFp4ekJD7S+pc8/+nGs3YxFaUHnMg+jlsB/RqihLy5PH6/gpi1JamK3c8hmIf69 BkriNiJ1cdMaS+UfrDWGTj/ovO/8wVDIoyIgaIUEeEYU4Hum0PRPSM2Pqc9v6uLK BqFxArUCbpl+g97r27JuHDJx3uVjXShaC4ITcrE4W0hjot2o/gr8k6oJADaVFT2p 9qB5LNnQxh4y+4Mfph2bZkagTTdxPvgvHdj8vNomPBpPlTK4+DIRkN3bIhwPSISj Mn5SfJCOtFXX8VlAc/W1/KF9XSV3Q== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HIdUC/Ca6VtHBpobV5ne7kqZ9mgU+qIjoMK1+6uCUWNxkfM/+ueaecONbBqLHM5ydh4CUgLJgWBaw3l4KPZ/fipA/NvIZUnlWv7DS6m0voh5q9dQGG/3t5tG95Sv8K3qO4LnIunIT1zkB78Au7N3jS1oAQxtUXct4DjnpObe4+8UOt1PNMiCX8aT/gRbbzo6AitAXM4aMcA/Oc367D5rhZK2AJba3/0c15/7BsOgmsbX6yvsdkfAVObopCYHQJ8pjoxOhkQ3i03ijA2gJULhY0veax+5OLW/UMxgSlycR1z3JT0bOuY/vkcr5LVNkZbjft2JkwKq1pesv9XOJbGsig== 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=qpu/vUW5/4oKbS+N83wUCZeagPINvNsKs3mGdcVvkX8=; b=kelHyYF7lhEUX8bjNcHLzeK9KOiWA0EoEvD1ucjIx54Sw5svZ/jJmwO7p/OprJuPYLb1B6lR1ANKuedQnmYZvisAJcvCYum+Vb0q3pf0+8CcW9+8d5zRJjpW27T7iLQnbErRSLXZOWqsi8r+jvG1RkwYgyXIrWeKeUYAAE5POFNCjPaX05cbKam3MYcxkmN9PQyASmyiP69pe4w1WT0u9DrkaWMCItQIEcDiLoMWixA9o0HjlEaSr+qFQbaB9bGBP+mHIf+Xui2E7Kh+SROb4EerZwNQ0TvUokcVLK+H6PBMLJ0iSgDi1uWjVsnS/rs+o8QtQwFjxxh1ilvwjJN9dg== 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=qpu/vUW5/4oKbS+N83wUCZeagPINvNsKs3mGdcVvkX8=; b=goAwPlRfx70SIFmc6kWsHZfq6QSGA1QNthbsJxNoOsT8WsSQm43iGFYcQjmKPE0l0iStU6bS0OBsDPBNnnoX2MkYAd6x0UyDk7xGcRM6ZpjfzQ4un0N+aqDlt7OSjlzjqyrlqmTM3ezglSI7+N+x1Ek+ADSF0p2NpsJHs2a7xsdfp2BbQ04I4YuwEP7szB7VQjkBTEg8cuI80axQFbg6OfEWuEFzasXHT5Pkto4Rgfy7oxLFocG6yoGO4MFb6MetiVuEauBrlrDVjBWDx1Tz2aIKuURzISZN5Fcu3B2/JaPNHLtITeFY5pOb/44qhAJU2ALHOX5mrBDNAJwRRAKxzQ== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 22/29] target/arm/kvm: introduce kvm_arm_get_host_isar helper Date: Fri, 5 Jun 2026 08:33:51 +0000 Message-ID: <20260605083358.1320563-23-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|MN6PR02MB10630:EE_ X-MS-Office365-Filtering-Correlation-Id: bbb77708-2cc1-41b2-46f7-08dec2de7d1c x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|7416014|1800799024|376014|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: DCD7o9r4ybfNxonHwJMVfXBULXpPrncOhjSARibbslu8DbadRmh/n4GNLSm/re676w95xa2MUBTLiLQkifmmzYTPcr1xug04CgE1ssIN40TgmMR9Q2EvMk9zCt3seZui1rDAG0LPLwtyFiIfsWYf9l6aFvHZd3QrdVm9AyNo+Rw5Yz0rLSaVUAR+YLO5lnz0uTieMY1uGuXeXt+jRO2WQC0dSBG0kHV3/c00OlIRaFnzdSjRnkJ5xf2jXgRbCbGaRnQ+eBDXdmx2mM+7MYznRTrIM8Blz7JTFip1maA+7XQkMnrW5AjCIYHMq+f+nVmDDAwVuf1Z+A+HMWTEMtjWNplW5UsJmWvP1fwPCZ2LcSpPMf6ZWrPLEhw1HB9sR0A1wYAczKj2FP+p8z+/LEG7oFel1daxdYTiUuvfxfiRoJkJmyPwka99m1j5/qa3A3NJdzP3cKmjKTbkpzyMZJv5xIoTu6urXKSUaqvZoqGLrP87N9btXITHQHgiSt1xWObCU6UrcLf175Ce7OCeb4gtWTYwEiCzV0Duydii6IOQjvKqaDJGSutQrPnRb6COzSVCrrl2CIDt8cNJXJswpisbBDU8NmVf32BJ1EAaU6Z67OZyy3YiWuZlTE4qrDtSmM0hSaMQKqEz6RzZ/EIKp7AFIqzripIqXwufWYd9jbn+Sz/M8UbCGOUEOaWsxb3ckal3 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(7416014)(1800799024)(376014)(56012099006)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?WevtszweUWG0HMzF3bmQRjTYvrBqQ7xNaMH17hbuZWucBS+3fZ8m7ayDNmtI?= =?us-ascii?Q?J+Ui9aEltnUesFNMMAId19F4YS5pDDfPnROJ0aOgWG6uIOJ0h+DVrQj04h41?= =?us-ascii?Q?U363wJH5B1WL+Lzv8NT52cgQXm19DoLXgoen7uC8zEdPXB2DHXTJ/z3t2VRI?= =?us-ascii?Q?zZDGJollYBGQwkoD1Xu8x9DV36JxwGpNBtPnY6knXy/JEN+hTPqrkgYHMBjy?= =?us-ascii?Q?MSyuBVJ5jwNhd8cL80M8ymdyKpsuE5SN3b06srbD+FuhDG5Hmu7vadfSnrPb?= =?us-ascii?Q?maMVv+iEkTnq1jfzid120nSkJBBBVNeOIwxI8YQnJ0V9jdHigouAKeoRhoUu?= =?us-ascii?Q?su9PUUTNI9qJQEEMGTquAxHyyCb8gPXCz/wZ4iP3mHZJknIDtEmwi2T5uCyv?= =?us-ascii?Q?RJUfrTNcB/vlxYd8Tio0gRSABcCAjhO7wgueOe5uhbykEGjMKpP88c/+hCbI?= =?us-ascii?Q?tjs1hnOEqgyyWop1b1QxrEh95tQQGb+7006FHz/TXBsp0PXRwPgPbpUjh97i?= =?us-ascii?Q?KJVP09gQf0mYdEgH+X0kfRctqc2ZLnSEcw6Rcxyuxw6KKFQ3EbXAIILzzOPZ?= =?us-ascii?Q?rUWmHG2/e6Rlt0eXW5jnwjBQX8EvziIU0TR23a8H1nhl+YCp9560jlM0bzIX?= =?us-ascii?Q?DsaqfUndAoj1M55KiAWE8vYlcMDsISk37NbHD8boM+0NDYE4T7u2EyDCrpLW?= =?us-ascii?Q?sFBwDse/hTLhd4zLqrGZHYU4ElA3eNB3jPci1RAa666qoSSs8aC9adJe/vBd?= =?us-ascii?Q?/99BIZxMelBUaq3pxm6upySlzznZ4kP/ymV2pj/cR+6NNbXOeMmpEBfNo6Sn?= =?us-ascii?Q?mLtHyQxHDU9TVB1zqKEKnNwHJL2CjddV0+OeGiVc7LMc2iD9YbARoh9qWPOV?= =?us-ascii?Q?UpW7hKQdn9V8F+AC7eSRUwOKQKHvSIDGzjPpmMzN/j+ZXO1495n5uz3oRfSo?= =?us-ascii?Q?zrnfthXrSuH1Yp2mbmmZdS9spUvI3chHq0SU1kriygMXV4EPtjXJD+q/1nQt?= =?us-ascii?Q?dzS5cGedWP7QH+VikQR6ILi++3BsADRfes/sXLGdN1ufjMpdeIEfS9PkuBhy?= =?us-ascii?Q?/rBUa6iuDqujIC/fef0K+ydMkgZWEyYBcbKluNdrO12Zz7Ofwj8tPyEBKN96?= =?us-ascii?Q?MCgmLYa5vu5NU7KZVtaumSduH7wBrK4ZOe5E0OXzopdgthupRqBAyGG64dRN?= =?us-ascii?Q?6S0VyQd4uRdeTZI/3WqVypZlbfpLfhg4LcYmRowz49rCNE/LNVQl936/q+3s?= =?us-ascii?Q?+/5b8KG07MPNKA9gbL7Mt4dSaAJbysHYdO7CCMHbcHK0cddWT1fVvi/vAKp5?= =?us-ascii?Q?32JrTqURdTBfmSpuo7XgibsbmqsvQA1vBmRh23KC1EAweSxcPw4Wiy2JI+1Z?= =?us-ascii?Q?hQ8oCSUwdyZylOKPzZzqOTb9ouQEzXgMpg9YaqD8MHxF/KgLad3qy1MpK077?= =?us-ascii?Q?C1MQaSbRneFG0KyFhHTHN+adRVx87hR8rbZRV6ndxQ+uO7nY9Cwbeoe39OxL?= =?us-ascii?Q?iJ+oBRfJZwDwb+6Tg4LKKf6ONn2sXD2tlR6LiqHPyTBGh+/FMz11jS4wP+Ww?= =?us-ascii?Q?T/cbcNdzZ/VudAS1Y2wKUtLaPHsWJzjZieIqh5klW1TCO+bii75sZKlB1grP?= =?us-ascii?Q?rl3a9UGJ6dkVnsUmZw9WF1MMpmxaAS3IUCDOx/NyLuNrqEJHzgS4347rjd8D?= =?us-ascii?Q?ERNeXK0lzCp7DeM9VixbrVYyZpXrNV0mNAXsosMegm9D3bCN8T/UYR7qETWe?= =?us-ascii?Q?uWE2xsHMkOqavgrrrtmj64rVOb835Yo=3D?= X-Exchange-RoutingPolicyChecked: huSbS/rPk8bbsXEwS1wP0S0gYCqPHwqbfV87BrJAI8vPZ23iWNJJduj26zJvjc5vQ6TQvkR9gKGl1wo+ByCEGiIlMHiwpQfMKSvJpEFmO8nJ8GvhDS2jM6xYym6UarsMWGNcQLxUKTpQJ5g440V3hkz7KNlNSxJnMPLWTWxWGJgdEV/j3/cYvQAm/X3qpvOUBgf/Lg7LDSTdu2V5owuJMBer/7goXagL/A6AtOE7m/1Tv2kBfRWEr00PTFRwiKiXT+CGut+qjAvki9QDPywqhkSCSs5JBxBp0hUhnfBwxMSgii5WmcHrRLetikEPTmay4fOWRREQuw3F2Nq5Q/8POg== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: bbb77708-2cc1-41b2-46f7-08dec2de7d1c X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:17.2316 (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: nn4GPQQQJNBMhqmjRgkKzqPw8RO0sMtookCwHuzadw3BE7cX2ExkkPzEvfVhODAcdJhsazaztZNKk4e3CbaiKYFGSKCL++CB1qEWOenfuJQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR02MB10630 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfX198V/7XFeZvn N3Qew29w9ZoMXsNuCIoTjzgi6a0bGIcM0Ktr8g6cB70BBI/XxCldfRiTzRasq//Jj3H1s1BAZnJ GPUwPSwDFXt6yQ9UEkdkE2ixojF/SZd8dHyyJjoAHuOuXxDwuJa/tjw9LhGefSGGUHrj/gbahyP CL+7e6tyvf79DlI9WVwg7WQGhKBwx3ggisV4l7j8MlVNExzqaYCRlUhBchkTYBPKZnYnsqGg46C r+QNl5acU9N5ogNKHthv+EGUS0jxlsMdHgsJm+JTll4NmSFF7MbzD2JY4Vvrm17Evv2GEMev9C0 qqdW3OO2B43BRcZvU9h/B64gqzlXQ4LAqr/aVQXx2ZM81amRTS+hCV6yqefwAApjfU9HV4WR2Xy dW34NDeMKW8yVTInbev6KTqp1MysoXfPKx2XtWr8iSquBqoVNrjb/qp27TYSyOzmEx0JZ3AnvJm xMGu/cegLcdObSxsOAQ== X-Proofpoint-ORIG-GUID: 5fvd1mFnOsv1ISoZ7jG2_o-99vo2pce6 X-Authority-Analysis: v=2.4 cv=V6FNF+ni c=1 sm=1 tr=0 ts=6a228c2b cx=c_pps a=h3Jk+6XEKCuoUZR+ZnWw9Q==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=0LlEyIVc8U2lsR7dKhuH:22 a=64Cc0HZtAAAA:8 a=vS_ObyiCXZHXlSlc3J4A:9 X-Proofpoint-GUID: 5fvd1mFnOsv1ISoZ7jG2_o-99vo2pce6 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.155.12; envelope-from=khushit.shah@nutanix.com; helo=mx0b-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649192063154100 Content-Type: text/plain; charset="utf-8" Introduce kvm_arm_get_host_isar() to provide scratch vCPU probed host isar. Will be used in future commits. Signed-off-by: Khushit Shah --- target/arm/kvm-stub.c | 5 +++++ target/arm/kvm.c | 5 +++++ target/arm/kvm_arm.h | 4 ++++ 3 files changed, 14 insertions(+) diff --git a/target/arm/kvm-stub.c b/target/arm/kvm-stub.c index 88cbe8d85c..dd683beaaf 100644 --- a/target/arm/kvm-stub.c +++ b/target/arm/kvm-stub.c @@ -119,3 +119,8 @@ char *kvm_print_register_name(uint64_t regidx) { g_assert_not_reached(); } + +const ARMISARegisters *kvm_arm_get_host_isar(void) +{ + return NULL; +} diff --git a/target/arm/kvm.c b/target/arm/kvm.c index cf6087d337..b4544f3514 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -597,6 +597,11 @@ void kvm_arm_set_cpu_features_from_host(ARMCPU *cpu) env->features =3D arm_host_cpu_features.features; } =20 +const ARMISARegisters *kvm_arm_get_host_isar(void) +{ + return &arm_host_cpu_features.isar; +} + static bool kvm_no_adjvtime_get(Object *obj, Error **errp) { return !ARM_CPU(obj)->kvm_adjvtime; diff --git a/target/arm/kvm_arm.h b/target/arm/kvm_arm.h index e7c40fb003..750dbe1ef4 100644 --- a/target/arm/kvm_arm.h +++ b/target/arm/kvm_arm.h @@ -15,6 +15,8 @@ #include "system/kvm.h" #include "target/arm/cpu-qom.h" =20 +typedef struct ARMISARegisters ARMISARegisters; + #define KVM_ARM_VGIC_V2 (1 << 0) #define KVM_ARM_VGIC_V3 (1 << 1) =20 @@ -229,6 +231,8 @@ void kvm_arm_enable_mte(Object *cpuobj, Error **errp); =20 void arm_cpu_kvm_set_irq(void *arm_cpu, int irq, int level); =20 +const ARMISARegisters *kvm_arm_get_host_isar(void); + void arm_gic_cap_kvm_probe(GICCapability *v2, GICCapability *v3); =20 /* --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649129; cv=pass; d=zohomail.com; s=zohoarc; b=hHt1LartMODoct8L9QvWKj+uMNZtAiXNTUKtkAqQD9UB2kZ5OJpUl/yxyF6+gUiXDSE+zKla5g3gLfCPYujA8xFMl8HVI0CMwPuiWicfwpQD2d7cTarxSU89Mv9+Rm9+hr4Z0QTwh27k7G1yF9f9eHq9+mjuYVwi/NkkfcoNv3g= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649129; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Bl1gX69df4ZB/iIlHCv3xsE1nTKhb51JIqHcxjzMK4E=; b=Ty43DJPMpKqrDCO6RB1lNtwV+Ny1vDeUP7KIriOUMGt7DhD8S1UX7LSeyXSM28ooC4WPSmQYNubtepvv3g2xP/hYrwMBHw+fT8C3PYWjZWTuEnnbqQJ7CXDIevwGMSRm48G4lgWs+BahD4NxtC+7olM/BTfnfgaS2VpRRt/RBi8= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649129555801.0241796920551; Fri, 5 Jun 2026 01:45:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQ9x-0006Fo-1K; Fri, 05 Jun 2026 04:44:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9v-0006Em-4P; Fri, 05 Jun 2026 04:44:07 -0400 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9s-0002dQ-ND; Fri, 05 Jun 2026 04:44:06 -0400 Received: from pps.filterd (m0127844.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6556MRUK1185382; Fri, 5 Jun 2026 01:43:24 -0700 Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11020134.outbound.protection.outlook.com [52.101.201.134]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejuupcm1f-6 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:23 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by MN6PR02MB10630.namprd02.prod.outlook.com (2603:10b6:208:4f4::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:18 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:18 +0000 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=Bl1gX69df4ZB/iIlHCv3xsE1nTKhb51JIqHcxjzMK 4E=; b=kuJM1r7VS5t6Kh/3yLvXmxdgKHyraqX/0Lhuglnp2NDl66iLKPjwGQMXN dQnp4yX3DKtEeL5hpsdRGLuXWI56P86gnklekMQoYHaXy1qAKJD2MgwVegkRatO9 FQJ7/Lk1WaUSHKjCxqLyVmkRO5M8K56iTLMpcFRBSTVvytvvrxqWh13aZp69Ds6M YYVoHd05cykHmvg8a50f/xM5s9KdH4i/GhzkV5RKrgP3xeC80s15qwTB+bl7EUG3 wEVSFPHd0CBtXGwKEKlYz8bvC67ULA3/iCj42AbCiaRF0XRO4cGm2S+uxmIjHoOd 2FIKfSri7cz8+CDcajUa+HVAyYrLQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PVb7ss1MPaS7HnVpZeTjnP5bzNQQrhe8Nmxkc4No6oCLD0HoaHWtcfeAgFrpcCbwuI4E/MGZ7wTKnh6TPaG7p9TaN4MKnn9vUm1KvJedkoX4JUPTmD5yrrai8eaiOmLte/NYl8Yiax5W6EhqUIsWNyPyj8SHnGRkgcPPZhXj+Z1FcB8wydMKJzirfUcnpoOrApxPRzjW67W0PoFF3zl2FZj0dilDAf0tZX3EIRP5zf2qAxlhoXG6xLnrAp2rqoes8H/9RBKy10N6P+ZhdE3W5DR7z+zUN0sI+kw6FAVHOanCtoKYGrPMO28NxpxEH9MH/x4lb5GMIJL98BrjMak6LA== 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=Bl1gX69df4ZB/iIlHCv3xsE1nTKhb51JIqHcxjzMK4E=; b=c5eEumGscoZNV2M7BLJdnQ29fSQPxVP4vH6E+iTdhFZ839smSLwnN5ypiTcMNQRsdn5SNSucSyEgJkMEI6tefPM1gB/udxQFgoDnO0ASdyvy/fFbtyDT2a8OVqJheF3La45OMbqfpRI41PIew31e2xfUqVgEqzQrcpvvbgKa+M6vJEKE6Qz7FdXq0CQ3k2q8bMVUGgfmu6/7zkR/Lb6hKwB3VciHlv6GXc0vnECHH/MJptiY/AU1De5FuLUGxMTKuuBFNr95N5a+TGet74NiJ8tgmc5WNjtP635t5my1XPWlceb46yrajd6ooEmxmqmEnktFB5kx6m7ngzIFZA9H7w== 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=Bl1gX69df4ZB/iIlHCv3xsE1nTKhb51JIqHcxjzMK4E=; b=MojjiTyOQWo6nLGfUp71fk+MMJ8w27hWQWkQaHgCWVI4/nYNlOZzrkAt9tlHelwOvb0E7NUjNShZpejbZUvgDV8L4+GPrrqB7j130W+0EmtdWL1ncQmL0I2PBCPmIhnvDkpq6GW1f8835fNj87MDCOgT0rQg6iiuneRUqkv0xw0/vNwFYjcH5UFx21H3sYMKBImczP5nk85JCEdQ5aQWzUOV0oCm69Ks7gmHVOEErvvDgV75e8swe5hau6gpolFTQzdP8jysio26p4LQC5UPmrOnJSDcGdUeeej/JawdQF6GheQboYcNYz8ANXHGzUqI2XXXLC3ostOm9SDLxMzEpA== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 23/29] target/arm/qmp: add query-arm-cpu-props-info Date: Fri, 5 Jun 2026 08:33:52 +0000 Message-ID: <20260605083358.1320563-24-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|MN6PR02MB10630:EE_ X-MS-Office365-Filtering-Correlation-Id: 7c717583-2664-4a92-768f-08dec2de7d5d x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|7416014|1800799024|376014|6133799003|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: osGfaB6YuP/iwapxPYanswy1oObvybG9Bfh/hvXmi9y8DtoCmaA3im18EmhnCJm5tQb4r5OIx4YSKNfHJy9Kw3pwxk5RgOLKfDsNv0Y4qxS2HtlITH0yekUQTdwL4IOUUHD0ex3Sra9Axq03UC6mqUJSFLpIR7rbqbEwIwbT4fxfvafvqf0lE+VGGz4bcse0KMHTUmFQMqMtpdHcL9+0RzKyeydYe3LQ4k+yq1V9sHVMv9WvKBk+i6f/SeQhqrNm+wRMTw+Q8GKlBVoJMDz8Yoycf2zp/JUij9gpPN7eaAK8iq9A7Kw6N2qnJBdbgz8CLLpqapLtofNJM6w3RT9Aaet43dSfktLZcPouXKSKzN8mK68Q72LLDTBmaA1mSv5+KG51r/mXdSosununZKIpnk7iLYetD14hjYTZ2EuFqBrnxGkD2vY3O+xyUGod6MfVXQ0x/h1ks2bXQMxR9NtfENnFFuYSA4fw5SG2xfmcCqrWzX2F/8iZVYggAsnjq44loXETiSJ1urRR/Co8HomazJZ0/e/yyI9FHeBhjfiqDD6YwgSKtANbLKXZ/L4V4vnRfeHyrj3cO5XI044qblYY/R69tNRKy+179OXqjpw6oLJEiAph0LFMV/BHNeEcYsRJhjr2WR4lH6MDYCPBRiPpFt8odLMk9GJIP7sfmF3OOwiaVcIgoqWJ7AdmNBzuQ8Tc X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(7416014)(1800799024)(376014)(6133799003)(56012099006)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Ab4oorDy2BXD1swKLERIleYQShYhJNUuxXmDK7I+LrUEtJfQpldYEU1Gou3f?= =?us-ascii?Q?fNpwGA1GViZEvX8mvkM8JjzYN5M7p118g0u2eBR9uuUsI4OIf3JMS/O/c5JH?= =?us-ascii?Q?dg8jxvxw5l+2AxdDlZT9mpj6vOZWpsZ0NBRnV7jZC0mS45yhTRDwndxDAaNH?= =?us-ascii?Q?pQ/Fa54TH2PJa7AeYkymiOlmX2vPA8V+DmW4GuYpskbaRdjLS3gSnrFaCVzS?= =?us-ascii?Q?HWrEIaFUsZhyrb7UdUaHD8TUGkTH/7dYoxbXqGlMSPIH2K4eWByeEcr1qw/A?= =?us-ascii?Q?AR/tVCAggVXMHb1yqufJgVkBZG8FfrV05cWW5PUZQZxo0bEaNAy/bTzcX82t?= =?us-ascii?Q?Tt2/d7lCWmccFEAXm9dz3liEEhYsEsRsfuR4LkfpVDkF+ncDDfAmu7b1ktvH?= =?us-ascii?Q?tupFdkY3S39dGDg8wDqjv4sIgxvboxV+GcwK6NEPqKk2ZhZYFbOfGLcngVQZ?= =?us-ascii?Q?WghUfY2RV1OUo0UgEVHO3hfJ0vOrbqJegDERzKZKaU4u4PJEgKMdt/lCHr5z?= =?us-ascii?Q?mSASZXCynW42vJpS0kwBMHxUiunOGfdcJ2m49absOkndebUPfmS9kC0IN3bn?= =?us-ascii?Q?9QSwamtkEWkj5PHqSX3muZ0MPcEV5YDgK2ImgrH2PFg0V8oTvFI4sI6hGub2?= =?us-ascii?Q?IPCzmv1S9/lO1igglUpmoEd3utWyLyleydi42AX433GIx1hyYY2GFrrqFCug?= =?us-ascii?Q?U8yzEQQjLtNdIVXXJmv5HXD7/QdoM0Al6n4dz5ua2wIPLXSCu93181neP/XR?= =?us-ascii?Q?LQq+lLHyj7J3bE7ZmkbbUHyB08pn+9t7cEMtrEgTWd26NAIHDqGKHBf1g1yc?= =?us-ascii?Q?OTjqu8fyy4O+Egvl68fsttJeqM+J9OxlZDifGEaKfJPG0sM8kzfPz82xHeHP?= =?us-ascii?Q?xedQ3X06R3+90E7daSrMQ9NqLu85M61Bwkj3yJfWqr9erEto2xceJnmSmW8k?= =?us-ascii?Q?H08XQ17TF0SiiuwW5WHeUQjWxsrisZwexmJWm+1qbLUOdJTyIqy5THnXY6uC?= =?us-ascii?Q?UAVg3d01H++vhPY78vHZgGydEdXRUnFY7KU8+4FLg9XxMHE2mGEJVM3hka6V?= =?us-ascii?Q?FR0BAr31s4Oh2nleloZRiB3pMGhoaakhg25z1j8kWfW31AWFLlbLaxo7prSR?= =?us-ascii?Q?AAve6ONgtWQ3Cz+PsfIAKHL60Re20MKV64pNzHC2SZJzwl/YxObhwRFZiW9C?= =?us-ascii?Q?BU3qLuQ4hcPunrSXgU0hc+Rt3BjNoRMCqY9I4Ny/MWPRVNAUs60uTv5rfbPu?= =?us-ascii?Q?ECs0M5lnZ7Jac93e+SKQn975bDOa66eTnJ+8OrYb8AE/ynNJL2E9sKPbj3Kx?= =?us-ascii?Q?M2oiDcQ4a9lJM32bFjV/6it/gj+jEC0A2SFS8eZ6apjLPIF7EMAHAnTXHWCH?= =?us-ascii?Q?7EHFe6URSKSQdTpQi6dXthBtjCTjy6rcXzD0cEnvYh8lzx7AJ/2lBPDmakG1?= =?us-ascii?Q?3v8tzW50jKX7mntYpCYWd2EIJe8oDjYhkdSatmrOehxKsqjZkCuI79u9v1Lk?= =?us-ascii?Q?GX3aX7JNLh4JJ+KDLH5NTaUK86V4/4txfwCWtV0H+zlEMbNwhN1RUixI7nhg?= =?us-ascii?Q?ybrn4Dx92nIW1F50eieTn7z1J6ebCCXZiH+m2OkF58icEI7l8dwAeLPSbC2E?= =?us-ascii?Q?/HBiDyta7njbVarkgxknfdNJkrFaWzW+KaVmWW45uTa99QXQ9X/6f0XCZS2+?= =?us-ascii?Q?0gvE+ol+nk3Lo6ps2N2GmpukcetCqQ77KMihtGsk2OKcbeWNbkiiHxSb7EFS?= =?us-ascii?Q?o9aYiMqjz2DpG2jbAAoEo/sA/bsS6RE=3D?= X-Exchange-RoutingPolicyChecked: SGFYd15724APWsjKDDe5gtlIURPWEs8PdqQKGE8vAJ+vYcpxhWAg5/HAHH/0Tr5S/RepkZsXxmujXKgU6HAuyxqNBMR3QUs9jSZGY1FhdPw28S1u+jXJtkR3qR+nv9/IiTIPkHuNa8SlSjDN9ITkbEdxFuutOj73i2cFh3+Os1tUe/vf6HNBwcVzX8XLmMqTOe665/el2apZI1r5WdjW5FAhOc4pYiYHQS1hwROt4Pe6ObUYOimwnj/HV+symQWVW1UYCfoQE25FwRvDeNTf7Rg6O94+WTQKkFv00E5h/WYiJ4gJp2iASdXJrzyS/MqCaTfj7hEMQDUgcz2RDFMn0A== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7c717583-2664-4a92-768f-08dec2de7d5d X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:17.6352 (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: 37GXTi229smBuqPzoy8O1eds8F90Za2lCaRXLqnDarTO8ZfVM3Hsazeo6zTYvWuizxxGG145szBbr096DxLtd4X51yFzjsz0gV+t/qhesPA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR02MB10630 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfXxLdCvC6hmHlu Hu+FfpyvKuKFfYj+roJUEhKddEOeZGV76Q2gGYESqrIriU/k8z6cmJpnYV434ijQQVUXjRYD9bU SVxA5lqBjJBNLfFO2QaAgfo+wfujQqZm6hCira+WlOzMepBCrrZnhNZcwBrrERlg+MCoAt/5skM bAVFJYeeDKmKQHl4OtNSJywdX3CQbTos4raD/vF3OKUHOOOZC8RNdmdtFq1HV37tLWSXymclp0A NCcD50XyFl6LxXuRM8dN+FqUCDSBWsV3pIEmkG4u+DnX1v5AVPCOI7jzjsQcVa2Nhv3keoZ9Fb1 lzQkfvu9gpJHlguze/nXoS5ZsPFrarw1LBGMSXQvp3UsmUBZnLxYQ76Zj6akkIii4yBw8z0WmWR h6IGShrdirQ9hmr3oqrVKWJZXysGIp2I3b9XxOSrGNkocH+3HQHkMGVkK55SpckLvchurveEdo4 izWLbZ2iqaCQl2geflQ== X-Proofpoint-ORIG-GUID: kdxogiOAZptr4RxW0CDiYBK4TXFoOd-A X-Authority-Analysis: v=2.4 cv=V6FNF+ni c=1 sm=1 tr=0 ts=6a228c2b cx=c_pps a=h3Jk+6XEKCuoUZR+ZnWw9Q==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=0LlEyIVc8U2lsR7dKhuH:22 a=64Cc0HZtAAAA:8 a=lSHdJiwaTbx1X4x_e9YA:9 X-Proofpoint-GUID: kdxogiOAZptr4RxW0CDiYBK4TXFoOd-A X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.155.12; envelope-from=khushit.shah@nutanix.com; helo=mx0b-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649129968158500 Content-Type: text/plain; charset="utf-8" Introduce 'query-arm-cpu-props-info' QMP command. This command returns information about ARM CPU model properties, including their name, type, supported values on the given host, and composite parent if any. This provides management layer necessary information to determine migration compatibility off a VM on different host. Signed-off-by: Khushit Shah --- qapi/misc-arm.json | 41 ++++++++++++++++ stubs/qmp-arm-gic.c | 6 +++ target/arm/arm-cpu-props-stub.c | 13 +++++ target/arm/arm-cpu-props.c | 85 +++++++++++++++++++++++++++++++++ target/arm/arm-cpu-props.h | 5 ++ target/arm/arm-qmp-cmds.c | 44 +++++++++++++++++ target/arm/cpu-idregs.c | 71 +++++++++++++++++++++++++++ target/arm/cpu-idregs.h | 8 ++++ 8 files changed, 273 insertions(+) diff --git a/qapi/misc-arm.json b/qapi/misc-arm.json index 4dc66d00e5..1a3fb140c4 100644 --- a/qapi/misc-arm.json +++ b/qapi/misc-arm.json @@ -46,6 +46,47 @@ ## { 'command': 'query-gic-capabilities', 'returns': ['GICCapability'] } =20 +## +# @CpuPropInfo: +# +# Information about a specific ARM CPU model property. +# +# @name: the name of the property +# +# @type: the type of the property, any of ('string', 'boolean', +# 'number'). +# +# @supported-values: the set of values the host hardware supports +# for the property, a list of strings. +# +# @composite: name of the encapsulating composite property if any. +# +# Since: 11.1 +## +{ 'struct': 'CpuPropInfo', + 'data': { 'name': 'str', + 'type': 'str', + 'supported-values': 'any', + '*composite': 'str' } } + +## +# @query-arm-cpu-props-info: +# +# Returns information about most of ARM CPU named model properties. +# This does not include composite properties or properties already +# defined by QEMU like (sveNNNN, pmu, etc), This only returns all +# the newly defined properties like ('feat_*', 'hw_prop_*', etc). +# +# With this upper management layers can find out what property values +# are supported on the given host. +# +# Requires KVM to be enabled. +# +# Since: 11.1 +## +{ 'command': 'query-arm-cpu-props-info', + 'returns': ['CpuPropInfo'] } + ## # @SsidSizeMode: # diff --git a/stubs/qmp-arm-gic.c b/stubs/qmp-arm-gic.c index b3429243ef..1691401bf0 100644 --- a/stubs/qmp-arm-gic.c +++ b/stubs/qmp-arm-gic.c @@ -10,3 +10,9 @@ GICCapabilityList *qmp_query_gic_capabilities(Error **err= p) error_setg(errp, "GIC hardware is not available on this target"); return NULL; } + +CpuPropInfoList *qmp_query_arm_cpu_props_info(Error **errp) +{ + error_setg(errp, "ARM CPU properties are not available on this target"= ); + return NULL; +} diff --git a/target/arm/arm-cpu-props-stub.c b/target/arm/arm-cpu-props-stu= b.c index abac29ae50..1d0a3f676c 100644 --- a/target/arm/arm-cpu-props-stub.c +++ b/target/arm/arm-cpu-props-stub.c @@ -11,6 +11,19 @@ const ArmCpuPropDesc *arm_find_prop(const char *name) return NULL; } =20 +void arm_prop_append_supported_values(const ArmCpuPropDesc *prop, + const ARMISARegisters *host_isar, + QList *out) +{ + return; + +} + +const ArmCpuPropDesc *arm_prop_get_composite_of(const ArmCpuPropDesc *prop) +{ + return NULL; +} + static const ArmCpuPropDesc empty_props[] =3D { {.name =3D NULL} }; const ArmCpuPropDesc *get_arm_cpu_props(void) { diff --git a/target/arm/arm-cpu-props.c b/target/arm/arm-cpu-props.c index 94672040c5..dab7786622 100644 --- a/target/arm/arm-cpu-props.c +++ b/target/arm/arm-cpu-props.c @@ -15,6 +15,8 @@ #include "arm-cpu-props.h" #include "cpu-idregs.h" #include "arm-cpu-models.h" +#include "qobject/qlist.h" + =20 #define ARM_SINGLE_FIELD_PROP(prop_name, _type, reg, fld) \ { .name =3D (prop_name), .type =3D ARM_PROP_##_type, \ @@ -735,3 +737,86 @@ const ArmCpuPropDesc *arm_prop_for_field(ArmFieldIdx f= ield) } return NULL; } + +static void append_str_to_qlist(const char *name, uint64_t value, void *op= aque) +{ + QList *list =3D opaque; + qlist_append_str(list, name); +} + +void arm_prop_append_supported_values(const ArmCpuPropDesc *prop, + const ARMISARegisters *host_isar, + QList *out) +{ + switch (prop->type) { + case ARM_PROP_STRING: + arm_field_foreach_supported_arch_val(prop->u.field, host_isar, + append_str_to_qlist, out); + break; + + case ARM_PROP_BOOLEAN: { + uint64_t host_val; + arm_idreg_field_read(host_isar, prop->u.field, &host_val); + + if (!arm_field_is_writable(prop->u.field)) { + qlist_append_str(out, host_val ? "on" : "off"); + } else { + if (arm_field_check_val_safe(prop->u.field, 0, host_isar)) { + qlist_append_str(out, "off"); + } + if (arm_field_check_val_safe(prop->u.field, 1, host_isar)) { + qlist_append_str(out, "on"); + } + } + break; + } + + case ARM_PROP_NUMERIC: { + g_autofree char *range =3D + arm_field_supported_numeric_range(prop->u.field, host_isar); + qlist_append_str(out, range); + break; + } + + case ARM_PROP_FRACTIONAL: { + const ArmFracVal *fv; + uint64_t host_base_val; + uint64_t host_frac_val; + + arm_idreg_field_read(host_isar, prop->u.frac.base_field, + &host_base_val); + arm_idreg_field_read(host_isar, prop->u.frac.frac_field, + &host_frac_val); + + for (fv =3D prop->u.frac.vals; fv->name; fv++) { + if (arm_field_check_val_safe(prop->u.frac.base_field, + fv->base_val, host_isar) && + arm_field_check_val_safe(prop->u.frac.frac_field, + fv->frac_val, host_isar) && + (arm_field_is_writable(prop->u.frac.base_field) || + fv->base_val =3D=3D host_base_val) && + (arm_field_is_writable(prop->u.frac.frac_field) || + fv->frac_val =3D=3D host_frac_val)) { + qlist_append_str(out, fv->name); + } + } + break; + } + + default: + g_assert_not_reached(); + } +} + +const ArmCpuPropDesc *arm_prop_get_composite_of(const ArmCpuPropDesc *prop) +{ + for (const ArmCpuPropDesc *p =3D arm_composite_props; p->name; p++) { + for (const char **sub_prop =3D p->u.comp_sub_props; *sub_prop; sub= _prop++) { + if (g_str_equal(*sub_prop, prop->name)) { + return p; + } + } + } + + return NULL; +} diff --git a/target/arm/arm-cpu-props.h b/target/arm/arm-cpu-props.h index a108dee1a4..264a8a71de 100644 --- a/target/arm/arm-cpu-props.h +++ b/target/arm/arm-cpu-props.h @@ -13,6 +13,7 @@ #include "cpu-idregs.h" #include "cpu.h" #include "qemu/typedefs.h" +#include "qobject/qlist.h" =20 typedef enum ArmCpuPropType { ARM_PROP_STRING, @@ -50,8 +51,12 @@ const ArmCpuPropDesc *get_arm_composite_props(void); =20 const ArmCpuPropDesc *arm_find_prop(const char *name); =20 +const ArmCpuPropDesc *arm_prop_get_composite_of(const ArmCpuPropDesc *prop= ); void arm_add_cpu_props(Object *obj); void arm_add_composite_props(Object *obj); const ArmCpuPropDesc *arm_prop_for_field(ArmFieldIdx field); +void arm_prop_append_supported_values(const ArmCpuPropDesc *prop, + const ARMISARegisters *host_isar, + QList *out); =20 #endif diff --git a/target/arm/arm-qmp-cmds.c b/target/arm/arm-qmp-cmds.c index 7cb74b4b8d..9bdf85885f 100644 --- a/target/arm/arm-qmp-cmds.c +++ b/target/arm/arm-qmp-cmds.c @@ -34,6 +34,7 @@ #include "cpu.h" #include "arm-cpu-props.h" #include "arm-cpu-models.h" +#include "qobject/qlist.h" =20 static GICCapability *gic_cap_new(int version) { @@ -63,6 +64,49 @@ GICCapabilityList *qmp_query_gic_capabilities(Error **er= rp) return head; } =20 +CpuPropInfoList *qmp_query_arm_cpu_props_info(Error **errp) +{ + CpuPropInfoList *info =3D NULL; + CpuPropInfo *prop_info; + QList *sv; + int i; + const ArmCpuPropDesc *props =3D get_arm_cpu_props(); + + if (!kvm_enabled()) { + error_setg(errp, "query-arm-cpu-props-info requires KVM"); + return NULL; + } + + for (i =3D 0; props[i].name; i++) { + const ArmCpuPropDesc *pdesc =3D &props[i]; + const ArmCpuPropDesc *composite_of =3D arm_prop_get_composite_of(p= desc); + + prop_info =3D g_new0(CpuPropInfo, 1); + prop_info->name =3D g_strdup(pdesc->name); + prop_info->type =3D g_strdup(pdesc->type =3D=3D ARM_PROP_STRING ? = "string" : + pdesc->type =3D=3D ARM_PROP_BOOLEAN ? "= boolean" : + pdesc->type =3D=3D ARM_PROP_NUMERIC ? "= number" : + pdesc->type =3D=3D ARM_PROP_FRACTIONAL = ? "string" : + "unknown"); + + sv =3D qlist_new(); + arm_prop_append_supported_values(pdesc, + kvm_arm_get_host_isar(), + sv); + + prop_info->supported_values =3D QOBJECT(sv); + prop_info->composite =3D NULL; + + if (composite_of) { + prop_info->composite =3D g_strdup(composite_of->name); + } + + QAPI_LIST_PREPEND(info, prop_info); + } + + return info; +} + QEMU_BUILD_BUG_ON(ARM_MAX_VQ > 16); =20 /* diff --git a/target/arm/cpu-idregs.c b/target/arm/cpu-idregs.c index 91bb899571..7671925869 100644 --- a/target/arm/cpu-idregs.c +++ b/target/arm/cpu-idregs.c @@ -354,3 +354,74 @@ uint64_t arm_get_field_mask(ArmFieldIdx field) } return field_mask; } + +void arm_field_foreach_supported_arch_val(ArmFieldIdx field, + const ARMISARegisters *host_isar, + ArmFieldValVisitor fn, void *opa= que) +{ + const ArmIdRegField *f =3D arm_get_field_desc(field); + uint64_t host_val; + + assert(!arm_field_is_idreg_any(field)); + + arm_idreg_field_read(host_isar, field, &host_val); + + if (!arm_field_is_writable(field)) { + const char *name =3D arm_arch_val_name(field, host_val); + if (name) { + fn(name, host_val, opaque); + } + return; + } + + for (uint32_t i =3D 0; i < f->arch_vals_count; i++) { + if (f->arch_vals[i].name && + arm_field_check_val_safe(f->idx, f->arch_vals[i].value, host_i= sar)) { + fn(f->arch_vals[i].name, f->arch_vals[i].value, opaque); + } + } +} + +char *arm_field_supported_numeric_range(ArmFieldIdx field, + const ARMISARegisters *host_isar) +{ + const ArmIdRegField *f =3D arm_get_field_desc(field); + uint64_t host_val; + uint64_t max; + + if (f->length =3D=3D 64) { + max =3D UINT64_MAX; + } else { + max =3D (1ULL << f->length) - 1; + } + + arm_idreg_field_read(host_isar, field, &host_val); + + if (!arm_field_is_writable(field)) { + return g_strdup_printf("%" PRIu64, host_val); + } + + switch (f->safe_rule) { + case IDREG_SAFE_LOWER: + return g_strdup_printf("0-%" PRIu64, host_val); + case IDREG_SAFE_HIGHER: + return g_strdup_printf("%" PRIu64 "-%" PRIu64, host_val, max); + case IDREG_SAFE_HIGHER_OR_ZERO: + if (host_val <=3D 1) { + return g_strdup_printf("0-%" PRIu64, max); + } + return g_strdup_printf("0,%" PRIu64 "-%" PRIu64, host_val, max); + case IDREG_SAFE_SIGNED_LOWER: + g_assert_not_reached(); + case IDREG_SAFE_EXACT: + if (f->default_val !=3D host_val) { + return g_strdup_printf("%" PRIu64 ",%" PRIu64, + f->default_val, host_val); + } + return g_strdup_printf("%" PRIu64, host_val); + case IDREG_SAFE_ANY: + return g_strdup_printf("0-%" PRIu64, max); + default: + return g_strdup_printf("%" PRIu64, host_val); + } +} diff --git a/target/arm/cpu-idregs.h b/target/arm/cpu-idregs.h index 51cc5ec341..171e03eece 100644 --- a/target/arm/cpu-idregs.h +++ b/target/arm/cpu-idregs.h @@ -104,4 +104,12 @@ bool arm_field_skip_writeback_if_not_writable(ArmField= Idx field); =20 uint64_t arm_get_field_mask(ArmFieldIdx field); =20 +typedef void (*ArmFieldValVisitor)(const char *name, uint64_t value, + void *opaque); +void arm_field_foreach_supported_arch_val(ArmFieldIdx field, + const ARMISARegisters *host_isar, + ArmFieldValVisitor fn, void *opaque); +char *arm_field_supported_numeric_range(ArmFieldIdx field, + const ARMISARegisters *host_isar); + #endif /* CPU_IDREGS_H */ --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649333; cv=pass; d=zohomail.com; s=zohoarc; b=jo1FouIKY1SiBgFxtcJybvXryl3sYphog60BqhTQpIOSKKFVBiF4jJ8D7525/IUVYUvml5P9N8zFUixZ7mxPhMj/qmIZTPwXNaJ/oVVU4Wsow4ZAtM9/HT1gHBQuq5G2S3FsGSbFOLc4NlscWMG2cKXzVfjjO2u5yArL910rJ+Y= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649333; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=PUqWccgJjHOkAJlU13gERauIcCZye81QjWxvyuKzdiw=; b=gLlefab4yTtkvokb/HyGEodikoYIXwSLktvTo3LDvonEXgbtS/sHKDij5XvEHpIyWGPTfFyIRcQPEqnNa2m/hPP1gdUG+knqav5T0kmHUwApc/pv5BPLFXSbo64edNhF5b0PQ5g3b62TfxxLckeaAjTGj/TxwTBkuM4flIPk6TI= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649333230477.6625144605192; Fri, 5 Jun 2026 01:48:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQ9m-00066G-I1; Fri, 05 Jun 2026 04:43:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9h-00061T-5B; Fri, 05 Jun 2026 04:43:53 -0400 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9e-0002Vv-Cg; Fri, 05 Jun 2026 04:43:52 -0400 Received: from pps.filterd (m0127844.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6556MRUL1185382; Fri, 5 Jun 2026 01:43:24 -0700 Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11020134.outbound.protection.outlook.com [52.101.201.134]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejuupcm1f-7 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:24 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by MN6PR02MB10630.namprd02.prod.outlook.com (2603:10b6:208:4f4::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:20 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:19 +0000 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=PUqWccgJjHOkAJlU13gERauIcCZye81QjWxvyuKzd iw=; b=LMep5Upd/bsE8FAGRZetgUgwDORSbNtimi0S+oBaGQ3Wvg6ICSpD7LeH7 3mxH22pwuWm8pRUGz/Oyn2eFUTP80G3PZfnLAiKn+2qVifbfL5T3a39O3rNp4tFz 1djcKKXQJKp/OoN4CMv+kwTmdZNR+gXsa/TrETI9iB2LsND52D++MY4B7pAVWn3Q BFYGVKbkOz5WSdzVY9EMpp+f2605yF8B04mhIs1V9Pbc6AK+Vj58g0LA9p+PRge+ h0ZtYcOnwqJfv/SuDy0jR5xnCGAg4nurteuY+qjCZnP3vRUJpSRsDYNduWmEsm7S sQHh0GqdDPmrtTCaSrArOr5i3Ec4Q== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dd4r8iBjN6MO/EQ3/BNdUVOE6fxw4dwWFrVqku+w0NXre0kGEcB4yugB7o2aNXJRLrIuM6NxiopmDnmOq2KQJJT9UVb0oEPD1A6tcB5twENqks/bN7VKKLe3t1+I/j8Ws1J2abhAT1rLXsP7oxQ02dsahwlUCSGLlTUHyX53GNYXAVZ6f9JiJJlAEKi/Hxah20Uz+bvonBYM4lC28vLRiEpQD5QCaJtk865xlYtX5hD9+uWZeeCiowgrDYLbYGiPReSVlhaPNrMz0zeHbg6rhyfzd+yR6PLxJ75gM74/bBVIjrtdXBw4pRBaG3krQhXMMS0sN/nQpgsYdvuQkV9CWg== 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=PUqWccgJjHOkAJlU13gERauIcCZye81QjWxvyuKzdiw=; b=XZxp6dZo3VTjXsTRjmi3ZIx7ejQZu7W63Hz6UnpWhkovYgmF0IW9iFx0u7gM7w2WkkdQYm6yzJDINd4t1Ep+yLjA+m2nvTfSssCow0Ymzvkp2F4vwhNXTxwzJh9t3NUHLcmuywQIw6ewmffioB2w6GokSbo9Fv7ck/3Su2bB8GY7UHptozQ3zOWVb2+WGtQvJQ4RyF66an4jMG7bR0paFUOS6cJHAmfb4G0l0akAfbTl+37MNxpVD7zHaNrfkshA3mLg5inqbT9+io56TT6y2Lt9F57N020vFPieQ0G120oj3SBqru5LeF+pyS9hR+8tnfw9tq64Xj9P8IeLExlfOQ== 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=PUqWccgJjHOkAJlU13gERauIcCZye81QjWxvyuKzdiw=; b=GMVQjf9I92yks4PAxTEZYePCgaus1toZvNXkQp1nSVXopq7hgTGoj5bBSnYjlHvb3IMiedmZyNOWhN5eLp+jRp+q9kbN68O66YSD+d5OiIwXCW8nbMknGcImST7Wx2129CGFLlTAm10V8jtUZcY3BAUDTXSA4LgDsxE9VTmiljTbGWxCRkcF8SMz6iBT6SY2i326SPcJvdBqG8O3JWZusXzI2wz8TEIN8IqyadXyk4SrmfJQUR/jAY9N9XP2iVjgflwEippOKzJbWHvJ7+Ajv9XCG8KACUGl3DK95HxRJV5V4uKvQou2+y+oFrot0D/ZIJO56bdZVzCVnuStVgK7xg== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 24/29] target/arm: Report "off" for ID fields gated by vCPU init flags Date: Fri, 5 Jun 2026 08:33:53 +0000 Message-ID: <20260605083358.1320563-25-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|MN6PR02MB10630:EE_ X-MS-Office365-Filtering-Correlation-Id: 4cd33c0c-0cb3-4b9d-f301-08dec2de7d9f x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|7416014|1800799024|376014|6133799003|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: WPb5YBLwiETCMGiMAgeKOTcg+HIPEAD8+uzuSKhZJtC6Mo2EmUeqS3FOLfW6EzTckjMjbUbbo2QcQktwDVomUVKXBuK35a2Ze8i/92pgGlOTK5bmlw+OJB6BNhFyXJ+deOB1j+VVsboTKBxahavxEJRVYQTV7a+RIBdE9Tfvhj0uuynIGBlH58+n51XuxHv+AB7bSIZiYCWRfDywaCPVQRWzjJoAxdXv4b0bg/GVwHkd2SDm5e0nzLggc9o0hjuPbzm07vHqVsb2TaB5Q0ZCiytJcVfM3jWXUn/bpdrRWZlYfjovxHm0iH4P1m2ZxsaBFCie2Q+MYA7/3Hrbdc3c5gAA5WHFyFx32s56hZQ4xUO8SeWGLzyCJWTEN/I/C6Z91o4Lp7DYoJZP7Onpu4wL2AkHH0Po+L/JQWPmtZDRAzTV88kA/1a8JvrJ3GIzIE7dNWn4R+UmhD1iQVtqoW+UJyPNf/X4E0ILVdPWZATIoRDK/ZX2ZaZ+jjOdDVPQ6I3JZsL4Gs4nTEEVvKNcoHhqEaiSNJ//Z6iscJf4BM8DyPlIPnfwbVg693byQTk9j5cnM9ZnbYpPEj1aMBMsoeC/jQYVrt9vBhuSfZDr4RsvKB9F25YT9wNWkOjgRLTzVn/8q2/RaSFQT0jPECNpL0J0PShT/3m5rjIYM3al3436nvhRY1ZPtRVK/efitx8bR5It X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(7416014)(1800799024)(376014)(6133799003)(56012099006)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?xGRwTfNRgm+olJy8VtKiZmb7Zo32WPfGpA46sv8akg5+8HblMhPYcCBh42x3?= =?us-ascii?Q?jezx26yVdb445BI721nXy5NT+VxIznlt+3i7caRKNv1JsPJLWd+icKLCzwNP?= =?us-ascii?Q?n0T3kn5rgskL7aY4hXfCjac6W04Lf9c1EWz41464SHYgOC4Bre7xN0gezorB?= =?us-ascii?Q?Rxc6b1+S8iPNJwmoByzDelSluYhlmHNUpxesjD0DmCizr+qUjM9xiPh113K9?= =?us-ascii?Q?7aK6Q3pislLCNB6gKxu5FYthrJWYGtd9LEMmz50k4xZb0NGlC/BxT4fFzGHG?= =?us-ascii?Q?5tP0AYo8rK1FzGouLiVHqL/D2hJ3ri/l33mZNRQwziIze6YQjDSpTAf5o28r?= =?us-ascii?Q?JaD5kzE0RLeUytdy2OI81GFyeHHCe3pRNhTWU13R2US/jzj25tEVnLBJHGoL?= =?us-ascii?Q?1Jd42e2bIygEZLACKTBTl7TmTY6NrEkNq9G0JvUkN9akhwqfvPpN5O/4wqe9?= =?us-ascii?Q?h7hm6zOOBf4c8szYPO30T8863iYvWP49NvMus25OGFogMFVbkA2mGDmn0iut?= =?us-ascii?Q?VaNijDP0wSnyc4O/NPbMTteO1EoqNH6InKrpk8x6AMNq46IXNprF8QXdasd8?= =?us-ascii?Q?/oKQxhRBALE4GDq806mpwRaQyVVT1DyVzw409/SCT6ROwZ7KEXTuEeKECQYc?= =?us-ascii?Q?S47SEq/VePEwWO63WFAJcvG4XEMXX99itwdUGoG3x0bfi+7/ihiOMPkANWDQ?= =?us-ascii?Q?52SAO9lW//7ctP65WobHVCqLsn2eguivNCvfxKowFtKUmah/yg40Oi6oBj8E?= =?us-ascii?Q?IgcynzwDRmgtzD6/0MocbUmc+yXOEPOb5uCWhJ97GJkuDIaHOhdTy/W2Pe7U?= =?us-ascii?Q?vgJ0b1obPVEBqXcHY+NdhDtefVJq0BLuFiQPk+GiMO2Oh/3/nsDchaACaQxS?= =?us-ascii?Q?CqFk2QpeOJqfGIT6QNi4hid5z8lMJV3C8BCWdm/zVTb/bB+YT38UihF4pZkp?= =?us-ascii?Q?C+H5BBxGhUPljQRCCvomYQcqv1e/AJYGRVkZjblV5GqlvrVTtaft6IqMhoa0?= =?us-ascii?Q?x6NsAa7GObhoW1Va3HoqXviJL13gzPJGpAE51nISnS2q1zO2xQ15/q0/wI3x?= =?us-ascii?Q?GJAjfr6yLxVeREmRWzAZhnT7U4/HWau4BSTbTviwQUPdMvAUn0Z7cM76LIVf?= =?us-ascii?Q?HluH1hk4LV44VQoBW+xP82dqeZex9d/6ItJStgy8zAm4ZmNUy193RMxTY6F3?= =?us-ascii?Q?Tor0FwyvRdtkWF+3r0+1BQW+zXY3vCoLCh5uNIRDyRjhfIDUtm+HYQHpp5l9?= =?us-ascii?Q?EmLbaQuGy0ljSkCeqDpBcFORJzV5liLJFN0u5bWCRqI69EhkUd5DU4j0L+7f?= =?us-ascii?Q?7oIyg89pvFgMsP2Jnq+scSvhffOI5q8vJ2O6HcO2659NAB64Vti0hMoVL9GP?= =?us-ascii?Q?jCmF+iSNySux7wgwJIxNZOpi/6sJKG4ot6jwrDi5dltHt+/bZNDE50kyuuhH?= =?us-ascii?Q?A6Sb2kRUTjh3OiqFF/rpmUb332AVt7QZ8ZEel8y/xaDHnAXYNxaNi0v0O4Hb?= =?us-ascii?Q?VsuX9LDdQl7dNuq2X7CYPkUvL4rMAMIEV+Kdr1iJD5aU9/HiozQkUGy3xKhM?= =?us-ascii?Q?TfBo9yl0wQNo2Nl/t+FK7z55jVs9cP3naj5wbBpeApVi0jtoMHA8CuoICnpI?= =?us-ascii?Q?r0W9ffmxpW7Ef8qTB+//74675CDTgxN3bjGxAyp3eZ6Eotp+9TU9VdgHO3Op?= =?us-ascii?Q?n6bv2QSgy5XHi/GQN6sLpQSCAp7IblEOgSW/YD5LJil8843CycrFFO6q+N5D?= =?us-ascii?Q?BxxwYYKBAPDIn9n4Y5Yg2OJX3EmmkTY=3D?= X-Exchange-RoutingPolicyChecked: rPlNTUnz8SOrCw0QvNra/fy2A1+AXWf8Zd67z5BHsHhDKJsfnHOsCjz6BzcFuhB3vrZPtXMvvMmSTwxut3msN9usDl0nCOAIV0ISzyilwxlhSLdM7fGo1v8SwQelnCLqxvG7EAnpNUNp/QAg3n5RoscdpKX4ypg/yJTMGIjiNHZ4tby6ap2cwXzSusfZEwMUbWWn2Fnnl5rwJD0Yku2PywmGxqMfB2unHdEWMb4XuNQjhvOkO+78TX9xHIJ/uYR6N3IZEZSOtwYRdQJ33lYZsynPE/HeXkNuNzQ7+g2y38iMmUGlSYyaQI1lVLfmMAAAwUOFBSyhn5emCQItAfSe7g== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4cd33c0c-0cb3-4b9d-f301-08dec2de7d9f X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:18.0515 (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: covAenvJfodqEWzyLuy/43jOs9kuSWM8YapV9L9xSPsLgAIKTCJibfxjW4m4gCHLvbK3rBin5k1prlUIDZI3CrmP2x3nm3ACLTrs9heN5dA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR02MB10630 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfX8e1XrbdF/waS Isdxr+sNfVl6XHyI33g63QtOtkHuXRZT5F3Uuv4aVvKYtcJzpUeD4fP2588aiLFHiaI5vhNlHt1 rqLd8vJQRTyUQ6ZDCb24Lc58tmgRwB9UvWqWoF+EE8oA5pILpJRYyEr3XbWFkiY5+uRCqwiqa/r 3SQthDvRoeJxJvNlvsy2Lq2es8ApejnwkocSBC9tjIW2b5VIHJva4zEitdxtv7sEw+RKLjaNVvr 0kscpoxbtFgi3iqN2FiMxeiBWVBe0pviwg1X0HBbNHYROQIWcoWl46wET0BsvPeBPOZju2fXquR cPRp9HX8RfFvrx2LSDDL0VkLE7oSX2Z+eo4RvuwMRSGVo2QrfWHGn+KvuZ+IAF1DIecbpS/eemZ h9CDY1DUqIU1IboDPd6Ni9KdYQD2iuFjhTaWytObXqy3EQXlsbcoVjQU4JO22oGpycNpwal2J3i KuMLAY/NhkTv9l7y8xA== X-Proofpoint-ORIG-GUID: vseeslpaDd-hqF2QLFcVzu6HFwlvy3HK X-Authority-Analysis: v=2.4 cv=V6FNF+ni c=1 sm=1 tr=0 ts=6a228c2c cx=c_pps a=h3Jk+6XEKCuoUZR+ZnWw9Q==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=0LlEyIVc8U2lsR7dKhuH:22 a=64Cc0HZtAAAA:8 a=gcVIAeWjapZ606p5YZcA:9 X-Proofpoint-GUID: vseeslpaDd-hqF2QLFcVzu6HFwlvy3HK X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.155.12; envelope-from=khushit.shah@nutanix.com; helo=mx0b-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649334646158500 Content-Type: text/plain; charset="utf-8" When QEMU queries supported CPU properties via KVM, it uses a scratch vCPU initialized with all host-supported features (like SVE and PAuth). KVM exposes the corresponding ID register fields (e.g., ID_AA64ISAR1_EL1.APA) as read-only, the supported values only shows the enabled host value (e.g., "fpaccombine") and omits "off". This will lead into falsely flagging a model as blocked as the features can be masked by not passing those flags. This commit introduces arm_field_supports_off_via_vcpu_flags() at the ID regs level to identify such fields. For these fields, even if KVM reports them as non-writable, we explicitly append "off" to the list of supported values if the host value is non-zero. Signed-off-by: Khushit Shah --- target/arm/cpu-idregs.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/target/arm/cpu-idregs.c b/target/arm/cpu-idregs.c index 7671925869..1ec1a38866 100644 --- a/target/arm/cpu-idregs.c +++ b/target/arm/cpu-idregs.c @@ -355,6 +355,29 @@ uint64_t arm_get_field_mask(ArmFieldIdx field) return field_mask; } =20 +/* + * Some fields which may not be writable but can be disabled or set + * to host by not passing appropiate vCPU init flags. + * These is needed because supported values are derived from scract-vCPU. + * Actual vCPU and scratch vCPU might have different init flags. + */ +static bool arm_field_supports_off_via_vcpu_flags(ArmFieldIdx field) +{ + /* sve and pauth can be disabled by not passing appropiate vCPU init f= lags */ + switch (field) { + case ARM_FIELD_ID_AA64PFR0_SVE: + case ARM_FIELD_ID_AA64ISAR1_APA: + case ARM_FIELD_ID_AA64ISAR1_API: + case ARM_FIELD_ID_AA64ISAR2_APA3: + case ARM_FIELD_ID_AA64ISAR1_GPA: + case ARM_FIELD_ID_AA64ISAR2_GPA3: + case ARM_FIELD_ID_AA64ISAR1_GPI: + return true; + default: + return false; + } +} + void arm_field_foreach_supported_arch_val(ArmFieldIdx field, const ARMISARegisters *host_isar, ArmFieldValVisitor fn, void *opa= que) @@ -371,6 +394,16 @@ void arm_field_foreach_supported_arch_val(ArmFieldIdx = field, if (name) { fn(name, host_val, opaque); } + + /* not writable, but can be disabled. */ + if (arm_field_supports_off_via_vcpu_flags(field) && host_val !=3D = 0) { + uint64_t off_val =3D 0; + const char *off_name =3D arm_arch_val_name(field, off_val); + if (off_name) { + fn(off_name, off_val, opaque); + } + } + return; } =20 --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649337; cv=pass; d=zohomail.com; s=zohoarc; b=Ja1JuZClU/cq0f34fSvNG5woFWGQD0XmQ1yZhoYmajl/sHet8EWQHdPffvmXLf6PPVL/GYsmtUA3FJ4dX6QDNrz8drhczjigoKp30HbQx5Dci9z5slJt+M2ovv0ltb3oj55c6yOJnxVBX4uYrp+m6ng7nfuBKh0xUV7k0xyy/Io= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649337; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=FEYqNoMy0ZVdBCmKsMqF/W+KRXqxdxVrRHRtgRCqSUA=; b=On7W7Cy7TmwE/aD/n4N4+r15CHS+Sw9Q8eb5tJNtFvrZODH6CTCvvG8Gx+AN4p6E780YG0rihWbLZ1ZwUd0VhpCLUHaQFVVyRxaQqHILi9vnCe4obch9VzOHnH24FWIHRTLcReHvSyhMdiEwlasfUmlEG6zC/kRqAMiHlCWqi6I= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178064933738031.434412377569174; Fri, 5 Jun 2026 01:48:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQ9n-00066g-5o; Fri, 05 Jun 2026 04:43:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9k-00063X-BI; Fri, 05 Jun 2026 04:43:56 -0400 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9g-0002YD-W1; Fri, 05 Jun 2026 04:43:56 -0400 Received: from pps.filterd (m0127844.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6556MRUM1185382; Fri, 5 Jun 2026 01:43:25 -0700 Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11020134.outbound.protection.outlook.com [52.101.201.134]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejuupcm1f-8 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:25 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by MN6PR02MB10630.namprd02.prod.outlook.com (2603:10b6:208:4f4::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:21 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:20 +0000 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=FEYqNoMy0ZVdBCmKsMqF/W+KRXqxdxVrRHRtgRCqS UA=; b=Jo8MG/MRvMgHqsdrXbqKUtndBeIohGYQ7sTrF62DynqtuFHxgFMwp+X/x IPOrVChWMp046Fjb/oQOWtG7aKFHzisqcLxUmAQXMjmen1241tXrCxSVANsqIrdO Q1KcK/tZaB+VLOUv/Z0u98HLIeZhUbLmBY9bquSyGeFOGt+O7NahwMt7vPMZkKFC xSWsKY23E25wn5hkm9Yl8UfZYKFyHNVb0BcqF5xSW0Y81V4AllSpqeXpRSguyct9 Ggw+Lw/N+wbtxx2DbqpBBlk+1fQkWNaZiYweoWqaMMT2ZDJ2o/XVe9gi16AZQVVm BQfxutMWEZGv9nizqBxn3lnz432LQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ROFT92bzZgEvpkZ7AMk9Nid+Vo4MnEYz71m5/EOfFxXqKJEOjsmx7CklV8vtUgwiQGI1BOPzGQsU1kVpbxgcqjBJxkXjHKToPfTt/Y7LHyOcmb6PmFvStEDkRaOB0Q7wuNaHkoKwSm3YCZnRnSsqw71d0RbQbm+CwzOvZI+PPBHNQwvut7RtVUXLLd638kGnEWHoCi9uZUMaw4RkexMluaZhCw+RU0jM/j55stE4HJUgdlZkcSRFn/slzO6ZjIWlYwr3XHwvXj9NIeHUEAWxIEITgKCFfjcZ+CofufxtsDKQTfM/HUOiy5EaEW2+nJ1iqDDyGO+KvfGPioi3ig5BZg== 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=FEYqNoMy0ZVdBCmKsMqF/W+KRXqxdxVrRHRtgRCqSUA=; b=NIoqAaUkWqFMiyHBo7ThILJ5p+6KVYvVp1NS80+9/sTnqcqkVfkKiuFhKWy+C27d+Qtuj2q9FZK/Mdtp0OcZTcuoTQ4R7qBXek7HLwn03XXLI6fBFWwmxLADfqcjowKCx5wHanS27wzaKhDSBNYYFyNMrW8rm7TypXyFDZ+DAL+SX/GBTpiGCqmisdNs7ruWKPRFyweUhVjRDeQYQ8t+h8gnmbvOICB8bTV5kvA4YsuWtMIpPWOsvMNoubX7F0AcjM/iH9l00R2Y2OwhSPXcH7GxJYv254xxxkL/a4cnDkQ5kFw2qSa3VQaWvtYrAN+96xdT7iCof/EHejFKOnxpMw== 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=FEYqNoMy0ZVdBCmKsMqF/W+KRXqxdxVrRHRtgRCqSUA=; b=qAUtc3Rec6AgfvWZqVT4f/gm2VZDdaZX+vEEFMHdMA24Qw1G6KSLOQ8pvJAfIveRZWwOgV0l5avngn2pJhTHvWDb/JBKC0DPfsy7G0esbJs0JyGo5TQoJcvIwONalFw8l0zvUBoQAWkbMFFAihBsqWwtxYCI+OKkF6YZsJF9aKBHLUqVWCOaE1sS+uJYYnETyufdxW5s9uVJLhNrKaaV8fcKtSpk+FnoWSfOlG4DejgPsyBJCOa9kC9X1jpXLnMbChlvI/RGvHzWP9v8oM5evhaHtZfM1RbqHKQR5aRnIRq0pkXM5FqCzrCF/fBhTxhSkXdH8oGIzTOt+V4JILKHPw== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 25/29] target/arm/qmp: hook blockers in query-cpu-definitions Date: Fri, 5 Jun 2026 08:33:54 +0000 Message-ID: <20260605083358.1320563-26-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|MN6PR02MB10630:EE_ X-MS-Office365-Filtering-Correlation-Id: fca6e6c1-6f3b-4b4e-c14c-08dec2de7dcf x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|7416014|1800799024|376014|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: Zs/9rwAE/jBMd2CT0QG8ArFJLjmfBAhj8ZsmQJPqNQgTLXXc9+/s2baAPJnJrQ9osiAibCCDqTyI9oI4qM95w981G+yYc9S4B0UiIWSGpd67+t3piHXiDK+KW7njjvcbfSE908okQz0ez4Nb3vke499p1YbJ6OywklPG0hf0/V8otSAM4i/pHusy2i8hNPrt+W0K6Z5CGp6a3y4EnyLt3+HV5E/s4YWgCiNfXJ2fM7iE/WD5zmXRStkML+/xblI+BJCETgdRfsdut2AVAR19MpzXJwvVy5UbVnq9qbXv5yKfxqhbRQtg7izyWUYaDiktCUXJGcIUwXky6qW7DbTniPGahwV7MoWYdn4qjVnP9zKqVHTXzh7lmoSB7GrRnIjwUCpPcX/ryurhprQ+omuqplu5U2iRks315mriiAaMVuaj92oSrMZj89Dc+Un16zgx/oUaxaaPYoVY2Yvi5vhc1nd7Y1Wugp8uSZYVcfNFsNMepIim8n6qcYEG2tUeGgFD5NjY2PN72M1sWFEtgR2BrRxs18ri4HgHTALDFBeQ31OOm3H8UgKdjVH+HqrPW3xSw/OC3KuacjxnobBxt70e9sy+Gu29sz5JJVAA5IYXGGqX9tsbmRZRQ80HXl4JywhTYUc0KRWRuLzYVLnG135k4mWsArDRKkbP8XUcZqd6nofOtgajEi20lX0VribGnPPh X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(7416014)(1800799024)(376014)(56012099006)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?7+qTh1onR38dtt0B/HmJpEIfl6j7d/iVaeJDBa+f7I/NH0jaYxxTsISPPl0R?= =?us-ascii?Q?+GTRmXix7IsBUned26ranN8C8kvYwZFOkBAVR1ig/O+Wtu4+ANEAkgnQUjhw?= =?us-ascii?Q?bmu4ktKJm1Qv3+qRwxccXBCXB2gBuoPo8tOa12z1mYQ4loGEaQXdL6ZeZyy6?= =?us-ascii?Q?xLeeIHSAbxreBqUbcC8jmO9TNSokD4cAQ0QHzlSdxi8X2PMLPqACQkD50lae?= =?us-ascii?Q?4/4aEbibZtsR3oQDAPjaMmodU8ocoCp7+tRNzbpvmDz7FO/oxMtkjpZo4Mfc?= =?us-ascii?Q?ottw8oRAqc9VDJV0K5aLCsCgg+Jm7gCWAXtNjL9aOtpzLHSJ1iRRKFPyHVy8?= =?us-ascii?Q?NslP9wWBwX8nI6k7ndluaIiXSDwPhhpKfOl7F2CdIzchjaNSbumOs8WTfMzw?= =?us-ascii?Q?/ZeyTAZJHt/syB0Mlr4i846hqH+2m9omN4D8yI9nbguw254AsDIvEHiBMv2Y?= =?us-ascii?Q?HrVaNcfL1xotmgmP2VTEAmLLwT7J+ZPS2CYp6SIFwTF2n6WGTc1dHxg/N4mH?= =?us-ascii?Q?q9gek+vZuQk9rx7VJm5Zx0ggf5LQztj90rasWEd8L3APPkrkrHSEDn1KCa1g?= =?us-ascii?Q?H9uiyUsJlx4RxPUxsl0bEusFMDgPt3n/zLmk9rDHhBr+5Nb1p3rN2NQe6GbQ?= =?us-ascii?Q?F2SnBaCyZ6Qh51up6H2rmaWD72c35bzv2MnAFVNhWG5ncUYFGvHY7cYVS7V1?= =?us-ascii?Q?syaRTjNsL7aC3THQYomKI6AL4m709zoxc4uJ865dCG5Ndhbx86w2DrSWOUR2?= =?us-ascii?Q?ecW5PVjtUXm9C3KVoAHrJtpvjjiKnkXV9JBpY6lxczqd5YhhFcRsf3kMykjO?= =?us-ascii?Q?Iu0ZyVinyI5EbunHEHqbCiM0oYyDwOuY7ZAXbPO9ncNExIVRRy2UnFHplPun?= =?us-ascii?Q?MLjfAq0rH7NxE9MzYo+b7sV6zwRC6Lbz/K47CBzwtjs48R4UAzcRBHpemdi/?= =?us-ascii?Q?Z+56smqPMXxTaV1bLu/xSeaGyDw1apdP5dg69HSTXtbg+QcEMJNP+rJbk2Wm?= =?us-ascii?Q?50CrnlYmT2jAxURORDcgV0IvOsCC4CFqqv/QHmPPWuVK70f1aubL3/rLSaZb?= =?us-ascii?Q?v0lpO2bLJoPYQsWTc4KXHCOmaWa+zMggSNDJdwoS76sOJaGGua3RvQMT40eV?= =?us-ascii?Q?RvCg4qzoxZZzkWB+1uDdpRTJ7hG89B9z0Euzq1NUsHCrMnPwEUxIVSi8cNRk?= =?us-ascii?Q?d/TulI45pUS4SY+78D8mfkvJfxZY+PqmlElo3qhMgCxXsT/tbFH08ziSXOsR?= =?us-ascii?Q?tNZAsWOLpFnoCHvYJ9BA89jL8iFrE41VeHR/J35z30Y196gQtJP6mxxTxUPL?= =?us-ascii?Q?4nJRiktQBkahLYhT1B7EbvzHjlleW12LIVsSaH7XePhoijfFIrRD+KLTD5fK?= =?us-ascii?Q?QBWozLyeSe1dgIkA78Ljf7WCpkHeYjdbu3embER553xnJQ2qxHklx2ySJRgo?= =?us-ascii?Q?YUjwKodmamfPR8cZ7MG62cE0kyJXBlW3MPSVSsF+k/3iiIZGZ4YIX08XBnuw?= =?us-ascii?Q?8Hew71JcRC/Mu+TUBuK/NS7KsLX1KHtJxYgH1YRv/HzX3ORB0KRHvpb1NbpK?= =?us-ascii?Q?8+fqwiW10rhWi8kQgzv/4F2lCubKFdOuRR9vZEroyIFCneUFMUlmXrQvooQM?= =?us-ascii?Q?5cbooNF70zy3Wbo4NvRsfUqjYUL5KOVFStlFXrQWOewfJIdM6UP0bl70wWA5?= =?us-ascii?Q?pcxKWlf8gacI8LexqG/dosveXHGWze/oFCxjQUhpKQR6iJTDmAyMQIJT+7WD?= =?us-ascii?Q?fweTMxWPBZ6nyQ/JiQmWSWzGQXu/hVk=3D?= X-Exchange-RoutingPolicyChecked: TngyVCeURyTcP7ZCzApixlMJAnPhqZGBd3TTZLDfp8ybrqCEpaU33rQCy/Jdcrvo7Fmhw55whWa32A+hWA3ONwWg2mhq0Q0DhJpWhIpl9kZLevk50Ko/iVRgngeYddE+kYiMawZTZVjVB/OXrbPn6rBBBNYXk9unJdflplqOKfz5zyaMZqpOGeBmbNGw7jHeLL9W/UWjCY820IMOfia9v4CKUDcFu2C7Z6eIlA9W4FcFqUp0tKLcrsTNXoWgUWq4sCMgz19J3p1sIp5Vtsy3z1PDhTPNexfmgZ3F+Fa45WV0EMwpwmwhQFFaWxu9ooC3UlW+xF4D/c2hdYYXWBZikA== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: fca6e6c1-6f3b-4b4e-c14c-08dec2de7dcf X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:18.3580 (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: 23u6NSNnHaXBKXElSj2PvxN2hFHdxJMsEQjwoQu6cVwynRXzn7syYYOeveTIDwsNhvcTEEEz2h0+y08UzY7u6Z/6XlTZxyy5JpV0zVbz+yQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR02MB10630 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfX6Knzagf4xiI6 p9am5ZCD92siu7OQgeuqXnM41aqA+o477I84gWKSlBhAMPdyeLkLhKQIJYqBDeZPwro0GQM+CnZ 0g9wD87frNqWTtX37iTQCgbhmHUFBVYHit4uFRBcO1VCzqPrMedSvx6I+GjpZYTQCktHBqOhgZx NiUfDE3KwurzAoqOQmd3zcGw8sWHvCIU27cwZTPrFX3P8F8n9IBQKVddiF0gKfrxBMx7Cp2rZG5 KT2vSOSYc6lnzNwp2j/BUuPJGjr9rTd2rYuVTb0ysO8MXHWLJVe0J0NbF3jZq25zvFy+hz5tpW0 ryDJPv38jpuoDg45k/ESOQvB5AHMqCt8C9wAdkxLt8Yas2s7LAQXySVxAARhiEUifXaJSWp1frn 5eTsLfupmGJWvd/4vDCHS4kS1s5FUdZP1sj2hw5vip2ALk9fNR5dzd+4+zUCg2xDdvK7yDwTCpU SrLWlDbpSQXRHM7rA6w== X-Proofpoint-ORIG-GUID: q8Cbvoq9gLG9GSawnhxLIlOdCbtK3YQW X-Authority-Analysis: v=2.4 cv=V6FNF+ni c=1 sm=1 tr=0 ts=6a228c2d cx=c_pps a=h3Jk+6XEKCuoUZR+ZnWw9Q==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=0LlEyIVc8U2lsR7dKhuH:22 a=64Cc0HZtAAAA:8 a=AeifMptQDfo4Ryfwx0QA:9 X-Proofpoint-GUID: q8Cbvoq9gLG9GSawnhxLIlOdCbtK3YQW X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.155.12; envelope-from=khushit.shah@nutanix.com; helo=mx0b-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649340408154100 Content-Type: text/plain; charset="utf-8" Now, report blocker for named cpu models in query-cpu-definitions. Heavy handling is done by validating the realized ID registers values against the host values. sveNNNN needs special handling as those are not stored in any ID registers. Introduces arm_cpu_class_check_missing_features() and arm_idregs_get_blocker() to achieve this. Signed-off-by: Khushit Shah --- target/arm/arm-cpu-models-stub.c | 5 ++++ target/arm/arm-cpu-models.c | 34 ++++++++++++++++++++++ target/arm/arm-cpu-models.h | 2 ++ target/arm/arm-qmp-cmds.c | 12 ++++++++ target/arm/cpu-idregs.c | 48 ++++++++++++++++++++++++++++++++ target/arm/cpu-idregs.h | 3 ++ 6 files changed, 104 insertions(+) diff --git a/target/arm/arm-cpu-models-stub.c b/target/arm/arm-cpu-models-s= tub.c index 0481f0f946..dadd3b7647 100644 --- a/target/arm/arm-cpu-models-stub.c +++ b/target/arm/arm-cpu-models-stub.c @@ -11,3 +11,8 @@ const ArmNamedCpuModel *arm_find_model(const char *name) { return NULL; } + +void arm_cpu_class_check_missing_features(ARMCPUClass *acc, strList **bloc= kers) +{ + return; +} diff --git a/target/arm/arm-cpu-models.c b/target/arm/arm-cpu-models.c index 8a725a0c26..3eafa0efc5 100644 --- a/target/arm/arm-cpu-models.c +++ b/target/arm/arm-cpu-models.c @@ -517,6 +517,40 @@ static void arm_named_cpu_initfn(Object *obj) arm_realize_model_chain(obj, model, &error_abort); } =20 +void arm_cpu_class_check_missing_features(ARMCPUClass *acc, strList **bloc= kers) +{ + Error *err =3D NULL; + Object *obj =3D object_new_with_class(OBJECT_CLASS(acc)); + ARMCPU *cpu =3D ARM_CPU(obj); + + if (!kvm_enabled() || !arm_find_model(acc->info->name)) { + goto out; + } + + if (cpu_isar_feature(aa64_sve, cpu)) { + arm_cpu_sve_finalize(cpu, &err); + if (err) { + error_free(err); + uint32_t host_vq_map =3D cpu->sve_vq.supported; + uint32_t model_vq_map =3D cpu->sve_vq.map; + + if ((model_vq_map & host_vq_map) !=3D model_vq_map) { + for (int vq =3D 1; vq <=3D ARM_MAX_VQ; vq++) { + uint32_t vq_bit =3D (1 << (vq - 1)); + if ((model_vq_map & vq_bit) && !(host_vq_map & vq_bit)= ) { + QAPI_LIST_PREPEND(*blockers, + g_strdup_printf("sve%d", vq * 128)); + } + } + } + } + } + + arm_idregs_get_blockers(cpu, kvm_arm_get_host_isar(), blockers); +out: + object_unref(obj); +} + void arm_register_named_cpu_models(void) { size_t i; diff --git a/target/arm/arm-cpu-models.h b/target/arm/arm-cpu-models.h index 3d4d805da8..2c2038722e 100644 --- a/target/arm/arm-cpu-models.h +++ b/target/arm/arm-cpu-models.h @@ -42,6 +42,8 @@ void arm_register_named_cpu_models(void); const ArmNamedCpuModel *arm_find_model(const char *name); const ArmModelPropValue *arm_cpu_get_composite_subprop(ARMCPU *cpu, const = char *comp); =20 +void arm_cpu_class_check_missing_features(ARMCPUClass *acc, strList **bloc= kers); + void arm_apply_model_prop(Object *obj, const ArmModelPropValue *prop, Erro= r **errp); =20 #endif /* ARM_CPU_MODELS_H */ diff --git a/target/arm/arm-qmp-cmds.c b/target/arm/arm-qmp-cmds.c index 9bdf85885f..9b7eea7fea 100644 --- a/target/arm/arm-qmp-cmds.c +++ b/target/arm/arm-qmp-cmds.c @@ -326,6 +326,18 @@ static void arm_cpu_add_definition(gpointer data, gpoi= nter user_data) info->name =3D cpu_model_from_type(typename); info->q_typename =3D g_strdup(typename); =20 + /* calcualte blockers */ + if (kvm_enabled() + && !g_str_equal(info->name, "host") + && !g_str_equal(info->name, "max") + && arm_find_model(info->name) !=3D NULL) { + arm_cpu_class_check_missing_features(ARM_CPU_CLASS(oc), + &info->unavailable_features); + if (info->unavailable_features) { + info->has_unavailable_features =3D true; + } + } + QAPI_LIST_PREPEND(*cpu_list, info); } =20 diff --git a/target/arm/cpu-idregs.c b/target/arm/cpu-idregs.c index 1ec1a38866..3e69edf9cc 100644 --- a/target/arm/cpu-idregs.c +++ b/target/arm/cpu-idregs.c @@ -458,3 +458,51 @@ char *arm_field_supported_numeric_range(ArmFieldIdx fi= eld, return g_strdup_printf("%" PRIu64, host_val); } } + +void arm_idregs_get_blockers(ARMCPU *cpu, + const ARMISARegisters *host_isar, + strList **blockers) +{ + for (int i =3D 0; i < NUM_ID_IDX; i++) { + const ArmIdReg *reg =3D &arm_idregs[i]; + if (!reg->name) { + continue; + } + + for (uint32_t j =3D 0; j < reg->fields_count; j++) { + const ArmIdRegField *f =3D ®->fields[j]; + uint64_t model_val, host_val; + + arm_idreg_field_read(&cpu->isar, f->idx, &model_val); + arm_idreg_field_read(host_isar, f->idx, &host_val); + + if (!arm_field_is_writable(f->idx) + && !arm_field_skip_writeback_always(f->idx) + && !arm_field_skip_writeback_if_not_writable(f->idx) + && model_val !=3D host_val + && !(arm_field_supports_off_via_vcpu_flags(f->idx) + && model_val =3D=3D 0)) { + const ArmCpuPropDesc *prop =3D arm_prop_for_field(f->idx); + if (prop) { + QAPI_LIST_PREPEND(*blockers, g_strdup(prop->name)); + } else { + QAPI_LIST_PREPEND(*blockers, + g_strdup_printf("idreg_%s_%s", reg->name, f->name)= ); + } + continue; + } + + if (arm_field_is_writable(f->idx) + && !arm_field_check_val_safe(f->idx, model_val, host_isar) + && !arm_field_skip_writeback_always(f->idx)) { + const ArmCpuPropDesc *prop =3D arm_prop_for_field(f->idx); + if (prop) { + QAPI_LIST_PREPEND(*blockers, g_strdup(prop->name)); + } else { + QAPI_LIST_PREPEND(*blockers, + g_strdup_printf("idreg_%s_%s", reg->name, f->name)= ); + } + } + } + } +} diff --git a/target/arm/cpu-idregs.h b/target/arm/cpu-idregs.h index 171e03eece..c4f039f690 100644 --- a/target/arm/cpu-idregs.h +++ b/target/arm/cpu-idregs.h @@ -111,5 +111,8 @@ void arm_field_foreach_supported_arch_val(ArmFieldIdx f= ield, ArmFieldValVisitor fn, void *opaque); char *arm_field_supported_numeric_range(ArmFieldIdx field, const ARMISARegisters *host_isar); +void arm_idregs_get_blockers(ARMCPU *cpu, + const ARMISARegisters *host_isar, + strList **blockers); =20 #endif /* CPU_IDREGS_H */ --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649393; cv=pass; d=zohomail.com; s=zohoarc; b=NnyI3ycLdVTr8QvsF/GcEOoUYGoOD7hxLTJdGEKoO3HuyrOQpwIE8eYXL/IwlM/eBGsFNo9p3ljls4nw7GMO0w4isubDVimcMVlvnXPBvpoQsoNBBNhwiFwexHXCej7+k71fwc8bkQqpo8bWDCBbJP11bZmSiZqNbehFgvH5Oj0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649393; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=gNR/6epo3PyDlZabmc6pINGdg7KibeOvbDv9pbwnM7Q=; b=Ef2tr+OERgBLGN24zNUUEfLRPZGPBDb9J01kriRG3XeLYj0PE6Kt+ScpBUAo7qYf2W2Md5bFQhfkvMrNSYbkEIQc/x/cqXCAB/boCXB4262H9a8U9CiAhib+98ORW/AGbEQE0HRlMfzPuCnH6j4gRibHx2gydMVX6+lHHYxneUU= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649393839491.26882927704605; Fri, 5 Jun 2026 01:49:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQ9p-00068x-N1; Fri, 05 Jun 2026 04:44:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9l-00064l-3Q; Fri, 05 Jun 2026 04:43:57 -0400 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9f-0002Wc-3d; Fri, 05 Jun 2026 04:43:56 -0400 Received: from pps.filterd (m0127844.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6556MRUO1185382; Fri, 5 Jun 2026 01:43:27 -0700 Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11020134.outbound.protection.outlook.com [52.101.201.134]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejuupcm1f-9 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:27 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by MN6PR02MB10630.namprd02.prod.outlook.com (2603:10b6:208:4f4::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:21 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:21 +0000 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=gNR/6epo3PyDlZabmc6pINGdg7KibeOvbDv9pbwnM 7Q=; b=USw6iNR7L+3rnnlWajMEocmt1CVl4htdoFCnA3o5+pgacAf8aWFesiMon DwBjXGiUruG7iLC7Y8BkmHJDmTOmni8/o8DpQAum/oFEiVlWuVX4zSQ3C24FxSzS L9rWr8alBw70yN1x8nC1jfY8g/dqdmy4I+o+AVk9GZATjK4osLeSUhSs0D3Wxa8w rp9C+6RwMJWogJJszGpqCe6YLyyl3HdlCtT74Qf45gfWkSjPJqhl0PoJOt7w6VDU e40bwZ3RdeDlGOpjNAmUuiadoJoKcsLf96zYulbQPgxjr0buNKjdgzDQE3o+OqtL j7Zjsoy0M8hCqlQfcI7/mxASvvrUg== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QAlVeF+BefUcYZrW3GV7l3Ey4+eJLBp8IRwcu5iRrEOh7sQDHOoc8quWPPEAG+LgEFL1KH9Uen/JEM86kP9VQx5rV0dalQFdHgbQ/IvyCpJOs4AeHMQWW+ac+Us1wU1ekRNiIOXzy3/wbq0Vtx8kXrpI49AECRqhM/wVT77fWoyrOmFsxqB+7n2EPInOO/tzqPCvLuKUZnP8RkEbbb1vSzTqvwJ/20gVOoB3Q5NEsi2G9LyI4tUtMCzg1AVpzOMYjyHY4FiE2KuKY+d6xs3LlB6Fc83sYsfthYRMLUzywXHDivmycOa8BuLgQotWDvggU3b7eP99ruM+inNKiJdI5A== 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=gNR/6epo3PyDlZabmc6pINGdg7KibeOvbDv9pbwnM7Q=; b=YJalts+hx4RNntYL2+R9jF18IzkKEGusVZbgdBhYH4vGjhwNjVtnSC2LEJVM++69WPvIvzej2G1/OFSktIyMUp81/exWwpQEgBMCutGqqt3vGbRjkvQm1L9s9RkXZi2dohBr6Cfe0n15v2k/8lwWtuZ7B5czDNOSnOQ7AnGmvn1DLRTox0wOMDmmeX8OghfpxnaXnbRi5N30BBEeq4B0gTWA95LxwYWPhskSKmItD1JcDiawlk/uu196va+C6Ga0VnGnbWNSK6wCd55KUGG2S+9P/NZgJyeKP9AmXlzk43SRxlXHYu0K8n5F7LdpIz0v9USIQ5wyKfufAtd6OSjMaA== 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=gNR/6epo3PyDlZabmc6pINGdg7KibeOvbDv9pbwnM7Q=; b=YzlM3ZOnShViQITiUzrX3TQ+ogMYDRTwjOwHoBe5HGyBefAlzHQa9/0myHFSuhDHSPTJmQbiaw3bZ/ikYC95529NSGFrMAPMn0LBC/2cMAJB6i/q7J9h97AVb7gdjXVil1ImGrwne8lNLdJE2SokQdSuQlp91shXk+uzryou1NEI1EeSZ9AU3FDCea8mTRDfOvVDdbUjGKAvCW9cFpASa7wuLjopIXRGPz4Dv+fmYLb7MsRK4mLsvzIGXxXXi+UgVo9A2ikU5a5XjntvLikDctC10a95m/yhSx4erZ9NfENHlHIlxV318nUJcUiRdTEp6pyoX5GPT4wD+nMflENtjQ== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 26/29] target/arm: Support exposing cache information for named cpu models Date: Fri, 5 Jun 2026 08:33:55 +0000 Message-ID: <20260605083358.1320563-27-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|MN6PR02MB10630:EE_ X-MS-Office365-Filtering-Correlation-Id: 262301b9-aff5-4720-0708-08dec2de7e0c x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|7416014|1800799024|376014|6133799003|3023799007|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: JCRlAWMBgOYlVVovFfp1GdeKa5tzOIAvyWaZXxlhViH//CK0myEMBhv74GnSK8SZrN9QdLXwqJ92D8TtxqH+cIrL+Fz5XaB22YPJf4ghTbM5fh4U5/I5bbNIGO+ixLQmct/L76iW8wv7y9f53ERt9efpDGnESEMpkfHj5zpoIRfWN5ZDmamoaW07En6VqZOJDCNSaw6nzqMhBN5zNo7SbpDr7D/hXZAm/Y1wpeq/N/i3adqSI/7Gs4lNGBepn9ZXr9vbyZpkRbYQDZYd80HgZCW7CZs1HQLAIKPXHLmPYmpdXd0dhKFDNkmV6F9pBIwMy2AX313SFexjPXaUAcaZBIiwUsu5dv6JgE+XjCAUjZuhU/a17/itb38f4MhW06R6BSiu1A8Ljc8rqTsBckFqiZDLYSb3//N5DNUKRhllIOZREwPaenqBtOUoBhaiFGsOHAlNGMzxbGRvR8YUccB5TTnkN1xMueKwi8UhrJ2pQFFIgXMJy8wWqoYMBMrz/N/RbI2szgJd6WGMflwVnTjo8EdDmJQGlJxsVpJ8pw51Q6fRlKDhhKC6jHN4q9TWWHYBYn/i6Nrv+ISIucGkmqBl8ko9Unl2JhMVByvzrIl1b3im+UEC05uxKHbukFbSm68EeCgxWSsGMpcIQ6Ukn7ifTLKDOv3PhaurgRRHLcMpg/zNJfxuCj09RYJXlbqfNOw1 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(7416014)(1800799024)(376014)(6133799003)(3023799007)(56012099006)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?uTg0WLCMYaiePFec7to0b+5vJ/D5P7JN5Knh9or1Y820hGlzYEMoIS5GSiAt?= =?us-ascii?Q?t1YFxOPQB0KZ4BolNhQ8YWNmUEOMGgodYu2p/RZARst8G/Fuvn8unz9IWGoT?= =?us-ascii?Q?yYdRWudz9fiYlP9EtaZBTkjq2SkjREPchWXIkdkbUjS0KIBaiGq7Wz5Uk47A?= =?us-ascii?Q?J2MnCzr13x1w9dkhNuC8JvNaIcQKH+G9cCivR/fdDt5A4OEGbCAo8qlM5k1m?= =?us-ascii?Q?4EuDNFxBu6lEy+nVoItL+kHSaj5lkCZoLRALdOZ/eF9dIMuFXHQzveCJiBYM?= =?us-ascii?Q?XE88Xy6R/v7QMnWO9V0TiJuDm9xtQjIO+Fe1sKEAekUwK83lOyRnn6iGxu2U?= =?us-ascii?Q?X2hiChuChOXaNMVi4dlvvJtbTDYMq4IIf4VNF4a6TqPfSChAPnEWCYfgHV99?= =?us-ascii?Q?bYRuqht56suxekXsqXK+ADnxRqb3rXMREnPw0P6UloafQEVIZ1rh6Q5VMeV9?= =?us-ascii?Q?UyF6/CZvR7MBoFf6m5JNbi+8cgZiZbkHoHzJhO/aK7SuVAgLbh+ftlaf3AMO?= =?us-ascii?Q?dGRJstW8WcrHJ8CReyoKhfHQ2aOb/ffy6UmXKmKBrN7ZzuvbZO7xBWG/lL1o?= =?us-ascii?Q?+EFB0V43KSnNaNwxAT6dRwPIzC6ZKXTRjx9tsXD7fJwHcEJyTnwzDreMYp7H?= =?us-ascii?Q?9kdBmpOs7HltHokLgGK/fYEUNG/oR/ubtl4DyQgAcE4u73gyhLdT6CUD/Kdt?= =?us-ascii?Q?MU/7W/FIarwDL+YEtIfC+rlVnBn7/htxsJHxMw/CAVFY5D8M6BelQutZCRMM?= =?us-ascii?Q?dZkvlC8vyoHrxW52v/Na4S1WX6nu//eZA8ZhjwRIyYkHvwhNZtg22HLpjBBq?= =?us-ascii?Q?rQPCkIyEklXUvXpE7kJCzHfS6kr9WIBBMHscGYZDCgpEvkry31w3AukN9vC1?= =?us-ascii?Q?iWOVnxmHlRF0Exy5dPiyRAXSLBwgBml/C1pxciyeuVFxEte8cvRU/YMTkLcl?= =?us-ascii?Q?UGF885BJ8nK28/JfcTxhfWqJTdwus+VJ28qxyeKAsub+xqLC2Oi+O0p1oe7n?= =?us-ascii?Q?cQ0UQIOIx/jTV9JTGKXUGagkXtSgzcFm3NVFvLcb2jrBnuMfUxAjOCCIF9mQ?= =?us-ascii?Q?/uNZilV/P/CcTB15gT010UE/ArcRq+pdORCxELTOE+QQt/lSfhDYeJw5a0eF?= =?us-ascii?Q?w3intNR13l4vRLFr9EliOqqx8WBBACqrMFh500z5BZFK8IGqTzxg0TJaoY87?= =?us-ascii?Q?dwvio8GDYLMbmQ8VRtlP/J9D29SRW7uyA72I6w8cx6x9zI9NuooUIefGj69G?= =?us-ascii?Q?81VZ51MjuVXN1yqnBpHpi1K7x/Rus1RWldmSRbG/qwMXb7HuxG2E2nk4STdp?= =?us-ascii?Q?+8N0MLQYuCmaRN41h+rBsNyGR6dxQbBhj5Ozha0sP2LuaSJQUDcF1aESrzeV?= =?us-ascii?Q?+kRTeZ7rPFOpHdHRj9VQqkgv/OILLa8S7PcUfHLKxXEadhykBzbmnurlHckg?= =?us-ascii?Q?u73KWMW7Yw1SikTzW4hzHNgbZs+2a1tz/aKqM3CP/tOpStWM8wzSjOdMQ7P6?= =?us-ascii?Q?DU5kx8movBmx2Zr5k7qYfbb5tCo0QtMSNfX+BaqAsWGXJhQflDFr+r+7lRE2?= =?us-ascii?Q?LvXQo/y2JJWOlwUyo1J4OU06apmU6GUFQAWmvbgbqTSVdiVgp/u2lW4QT9sz?= =?us-ascii?Q?y5FRGRRInMiwM8cw3t9mKeISA1pO3GnUsUl8ywQJO6nn7tm0bwXI02trBjGc?= =?us-ascii?Q?kVLlqc/uC3DoMeujc+6SefGSaA1aLdIvmQfhgmr5wgmiy3oGwdoOtt5l1RPl?= =?us-ascii?Q?K67oBNuazaEbDCnH0+3Lqj8YBUeeDHA=3D?= X-Exchange-RoutingPolicyChecked: gO7lZQXWhtFfaDg4RYbgXyS/8ro/u72BjCrDHMw0ZlDE9Cyq3vnzDfdZ9dAT8RRwS74I0P+RlVsDNKUybUgtDV3+r9e8oQWGhDbpb70I+HiaGTAo8tXN7vgD/g6QQsNKqBE/VEIHSv3hzbym6bPl5iu86x08u0cA0CeMakuJk6UMCvIow8V0P/S0hzpDSiF6PVLVXM96Ecs7SGPcsT519e94hEHkWMWGg2SKhnncyrXj7bD1XbW3ZfnbAxClx0xxJFcC2c0RQGw2PfZmYn8hWrf3mvZzNYwfOoIrui3aXH07b1mdDywmewY/ZrXTDydfK31qBWWPsSsJT+OPaHaaRg== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 262301b9-aff5-4720-0708-08dec2de7e0c X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:18.7712 (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: Zb0yozI31z9lX1bjocAdpMGgpIeESQNUu/7adBs4Uomc2Nd5c8TriZm3k9wcKUNP9zu6EoZ2BcUOoYHEC8UeZqOenxVn4Sk8xisuMpSV2Ls= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR02MB10630 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfX4rf+LbykJs50 +QJr19AcPbwOpKHgHsutv/8IJAtPD3U3zORiwOhDW8JnhruVMgQjFCFQQJvSRByxsgeQY+Nu3WS du4mbgL5H/SzZn6fE8yzS/hxMBqVAvdCCxAxhWYCgaacsCIXKNlJ6ash1Y09DKMSzoTHzWqzTg0 nWmbSiXlT2LfsrFaAE4gCH+OWUsEclHpmbYN1D2cfY6nPweDCCZhDFoje6TFd3IAmsCMc5s67ur ChtzmBCZpJqi32aQpFcPHV2R8/zQ5glosUd/DSQUGx1JpSOe/LMqDnLPhLB1FXN5L4DeGZGzuXV Vwm/BRFCah0YDhUIt5GI1VAFysHys5tUesuUwIY2R4B0dLRRiIzgOMCnjljI8iztXVUdd/hqJ3A 1VzkRl5RbCUJCbQUmVLdPRnPuu6VkS6u2sxYyl4f0OvCQclcGNlSaE2B4O96CQHNSEx8u+LE/+L trr9ajGs1vfrzS+aSCA== X-Proofpoint-ORIG-GUID: p0OgSxxZW5nX78PS_CA2-Mih0ezEQt7h X-Authority-Analysis: v=2.4 cv=V6FNF+ni c=1 sm=1 tr=0 ts=6a228c2f cx=c_pps a=h3Jk+6XEKCuoUZR+ZnWw9Q==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=0LlEyIVc8U2lsR7dKhuH:22 a=64Cc0HZtAAAA:8 a=wgdFg7zr4kieyXFYgvoA:9 X-Proofpoint-GUID: p0OgSxxZW5nX78PS_CA2-Mih0ezEQt7h X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.155.12; envelope-from=khushit.shah@nutanix.com; helo=mx0b-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649394851158500 Content-Type: text/plain; charset="utf-8" Introduce "expose-cache" with newly introduced cache sub-props like the per level (type, sets, linesize, associativity) and cache attributes (louis, loc, louu, icb_type, ttypen). Back "expose-cache" by ARMCPU::cache_exposed. Add kvm_arm_writeback_ccsidr(), which writesback demux ccsidr values into cpregs. Which is then written back to KVM. Additionally, the same cache topology is exposed to the guest through PPTT/DT cache nodes in virt.c, gated by the expose-cache boolean. To support this on infra side: - Introduce a new prop type ARM_PROP_CUSTOM which mandates custom getter/setter and reset for a prop. Required for properties backed by CCSIDR bank - Add CLIDR_EL1 to cpu-idregs.h.inc. As it is not a part of kernel's sysreg file, safe-rules are populated with ANY. - Remove FIELD() entries for CLIDR_EL1. Signed-off-by: Khushit Shah --- hw/arm/virt.c | 20 ++- target/arm/arm-cpu-props.c | 272 +++++++++++++++++++++++++++++++++++- target/arm/arm-cpu-props.h | 5 +- target/arm/arm-qmp-cmds.c | 1 + target/arm/cpu-features.h | 11 -- target/arm/cpu-idregs.h | 1 + target/arm/cpu-idregs.h.inc | 91 ++++++++++++ target/arm/cpu.h | 3 + target/arm/kvm.c | 54 +++++++ 9 files changed, 440 insertions(+), 18 deletions(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 117033115d..eeb7a6faff 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -337,6 +337,16 @@ unsigned int virt_get_caches(const VirtMachineState *v= ms, CPUCoreCaches *caches) ARMISARegisters *isar =3D &armcpu->isar; uint32_t clidr =3D GET_IDREG(isar, CLIDR); =20 + /* + * under KVM only expose caches when cache_exposed is true. + * Without cache_exposed, default view of KVM is in CLIDR_EL1: + * 1 line, 1 set, 1 way level 1 unified cache. skip setting up + * caches in this case. + */ + if (kvm_enabled() && !armcpu->cache_exposed) { + return 0; + } + for (int cache_level =3D 1; cache_level <=3D CLIDR_CTYPE_MAX_CACHE_LEV= EL; cache_level++) { uint8_t ctype =3D @@ -654,9 +664,9 @@ static void fdt_add_cpu_nodes(VirtMachineState *vms) bool cache_created =3D false; bool cache_at_topo_level; =20 - num_cache =3D virt_get_caches(vms, caches); + num_cache =3D virt_get_caches(vms, caches); /* 0 if caches are not exp= osed */ =20 - if (mc->smp_props.has_caches && + if (num_cache > 0 && mc->smp_props.has_caches && partial_cache_description(ms, num_cache)) { error_setg(&error_fatal, "Missing cache description"); return; @@ -758,7 +768,7 @@ static void fdt_add_cpu_nodes(VirtMachineState *vms) /* This assumes socket as the highest topological level. */ socket_offset =3D 0; cluster_offset =3D 0; - cache_at_topo_level =3D + cache_at_topo_level =3D (num_cache > 0) && machine_find_lowest_level_cache_at_topo_level(ms, &bottom_node, CPU_TOPOLOGY_LEVEL_SOCKET); @@ -793,7 +803,7 @@ static void fdt_add_cpu_nodes(VirtMachineState *vms) bottom_cluster =3D top_cluster; cluster_offset =3D socket_offset; core_offset =3D 0; - cache_at_topo_level =3D + cache_at_topo_level =3D (num_cache > 0) && machine_find_lowest_level_cache_at_topo_level(ms, &bottom_cluster, CPU_TOPOLOGY_LEVEL_CLUSTER); @@ -828,7 +838,7 @@ static void fdt_add_cpu_nodes(VirtMachineState *vms) if (core_id !=3D last_core) { bottom_core =3D top_core; core_offset =3D cluster_offset; - cache_at_topo_level =3D + cache_at_topo_level =3D (num_cache > 0) && machine_find_lowest_level_cache_at_topo_level(ms, &bottom_core, CPU_TOPOLOGY_LEVEL_CORE); diff --git a/target/arm/arm-cpu-props.c b/target/arm/arm-cpu-props.c index dab7786622..44f21de1c5 100644 --- a/target/arm/arm-cpu-props.c +++ b/target/arm/arm-cpu-props.c @@ -12,6 +12,7 @@ #include "qemu/typedefs.h" #include "qom/object.h" #include "cpu.h" +#include "cpu-features.h" #include "arm-cpu-props.h" #include "cpu-idregs.h" #include "arm-cpu-models.h" @@ -53,6 +54,13 @@ .get =3D _get, = \ .set =3D _set } =20 +#define ARM_CUSTOM_PROP(prop_name, _custom_type, _get, _set, _reset) \ + { .name =3D (prop_name), .type =3D ARM_PROP_CUSTOM, = \ + .u.custom_type =3D (_custom_type), = \ + .get =3D _get, = \ + .set =3D _set, = \ + .reset =3D _reset } + static void arm_composite_set_internal(ARMCPU *cpu, const ArmCpuPropDesc *p, bool val, @@ -77,6 +85,139 @@ static void pauth_set(ARMCPU *cpu, Visitor *v, const ch= ar *name, Error **errp) cpu->prop_pauth =3D val; } =20 +/* + * Bank index in cpu->ccsidr[]: (level - 1) * 2 | InD. + */ +#define CACHE_BANK(level, is_icache) (((level) - 1) * 2 | !!(is_icache)) + +/* + * CCSIDR_EL1 field accessors. The legacy and CCIDX encodings live at + * different bit positions; KVM forces legacy encodings, so use that. + */ +static void ccsidr_sets_get(ARMCPU *cpu, int level, bool is_icache, + Visitor *v, const char *name, Error **errp) +{ + uint64_t r =3D cpu->ccsidr[CACHE_BANK(level, is_icache)]; + uint64_t val =3D FIELD_EX64(r, CCSIDR_EL1, NUMSETS) + 1; + + if (val =3D=3D 1) { + val =3D 0; + } + + visit_type_uint64(v, name, &val, errp); +} + +static void ccsidr_sets_set(ARMCPU *cpu, int level, bool is_icache, + Visitor *v, const char *name, Error **errp) +{ + uint64_t val; + uint64_t *r; + + if (!visit_type_uint64(v, name, &val, errp)) { + return; + } + r =3D &cpu->ccsidr[CACHE_BANK(level, is_icache)]; + + assert(val > 0); + + *r =3D FIELD_DP64(*r, CCSIDR_EL1, NUMSETS, val - 1); +} + +static void ccsidr_associativity_get(ARMCPU *cpu, int level, bool is_icach= e, + Visitor *v, const char *name, + Error **errp) +{ + uint64_t r =3D cpu->ccsidr[CACHE_BANK(level, is_icache)]; + uint64_t val =3D FIELD_EX64(r, CCSIDR_EL1, ASSOCIATIVITY) + 1; + + visit_type_uint64(v, name, &val, errp); +} + +static void ccsidr_associativity_set(ARMCPU *cpu, int level, bool is_icach= e, + Visitor *v, const char *name, + Error **errp) +{ + uint64_t val; + uint64_t *r; + + if (!visit_type_uint64(v, name, &val, errp)) { + return; + } + r =3D &cpu->ccsidr[CACHE_BANK(level, is_icache)]; + + assert(val > 0); + + *r =3D FIELD_DP64(*r, CCSIDR_EL1, ASSOCIATIVITY, val - 1); +} + +static void ccsidr_linesize_get(ARMCPU *cpu, int level, bool is_icache, + Visitor *v, const char *name, Error **errp) +{ + uint64_t r =3D cpu->ccsidr[CACHE_BANK(level, is_icache)]; + uint64_t enc =3D FIELD_EX64(r, CCSIDR_EL1, LINESIZE); + uint64_t val =3D 1ULL << (enc + 4); + visit_type_uint64(v, name, &val, errp); +} + +static void ccsidr_linesize_set(ARMCPU *cpu, int level, bool is_icache, + Visitor *v, const char *name, Error **errp) +{ + uint64_t val; + uint64_t enc; + uint64_t *r; + + if (!visit_type_uint64(v, name, &val, errp)) { + return; + } + /* Linesize is encoded as log2(bytes) - 4. */ + enc =3D ctz64(val) - 4; + r =3D &cpu->ccsidr[CACHE_BANK(level, is_icache)]; + *r =3D FIELD_DP64(*r, CCSIDR_EL1, LINESIZE, enc); +} + +static void ccsidr_sets_reset(ARMCPU *cpu, int level, bool is_icache) +{ + uint64_t *r =3D &cpu->ccsidr[CACHE_BANK(level, is_icache)]; + *r =3D FIELD_DP64(*r, CCSIDR_EL1, NUMSETS, 0); +} + +static void ccsidr_associativity_reset(ARMCPU *cpu, int level, bool is_ica= che) +{ + uint64_t *r =3D &cpu->ccsidr[CACHE_BANK(level, is_icache)]; + *r =3D FIELD_DP64(*r, CCSIDR_EL1, ASSOCIATIVITY, 0); +} + +static void ccsidr_linesize_reset(ARMCPU *cpu, int level, bool is_icache) +{ + uint64_t *r =3D &cpu->ccsidr[CACHE_BANK(level, is_icache)]; + *r =3D FIELD_DP64(*r, CCSIDR_EL1, LINESIZE, 0); +} + +/* + * Generate the per-prop ccsidr_*_{get,set,reset}. + */ +#define CACHE_PROP_FNS(NAME, LVL, IC, FIELD) = \ + static void cache_##NAME##_##FIELD##_get(ARMCPU *cpu, Visitor *v, = \ + const char *name, Error **err= p)\ + { ccsidr_##FIELD##_get(cpu, (LVL), (IC), v, name, errp); } = \ + static void cache_##NAME##_##FIELD##_set(ARMCPU *cpu, Visitor *v, = \ + const char *name, Error **err= p)\ + { ccsidr_##FIELD##_set(cpu, (LVL), (IC), v, name, errp); } = \ + static void cache_##NAME##_##FIELD##_reset(ARMCPU *cpu, = \ + const char *name, = \ + Error **errp) = \ + { ccsidr_##FIELD##_reset(cpu, (LVL), (IC)); } + +#define CACHE_PROP_FNS_ALL(NAME, LVL, IC) \ + CACHE_PROP_FNS(NAME, LVL, IC, sets) \ + CACHE_PROP_FNS(NAME, LVL, IC, associativity) \ + CACHE_PROP_FNS(NAME, LVL, IC, linesize) + +CACHE_PROP_FNS_ALL(lvl1_dcache, 1, false) +CACHE_PROP_FNS_ALL(lvl1_icache, 1, true) +CACHE_PROP_FNS_ALL(lvl2, 2, false) +CACHE_PROP_FNS_ALL(lvl3, 3, false) + const ArmFracVal csv2_frac_vals[] =3D { { "0.0", 0, 0 }, { "1.0", 1, 0 }, @@ -286,6 +427,66 @@ const ArmCpuPropDesc arm_cpu_props[] =3D { ARM_SINGLE_FIELD_PROP("cpu_revidr", NUMERIC, REVIDR, VAL), ARM_SINGLE_FIELD_PROP("cpu_aidr", NUMERIC, AIDR, VAL), =20 + ARM_SINGLE_FIELD_PROP("cache_lvl1_type", STRING, CLIDR_EL1, CTYPE1), + ARM_SINGLE_FIELD_PROP("cache_lvl2_type", STRING, CLIDR_EL1, CTYPE2), + ARM_SINGLE_FIELD_PROP("cache_lvl3_type", STRING, CLIDR_EL1, CTYPE3), + ARM_SINGLE_FIELD_PROP("cache_louis", NUMERIC, CLIDR_EL1, LOUIS), + ARM_SINGLE_FIELD_PROP("cache_loc", NUMERIC, CLIDR_EL1, LOC), + ARM_SINGLE_FIELD_PROP("cache_louu", NUMERIC, CLIDR_EL1, LOUU), + ARM_SINGLE_FIELD_PROP("cache_icb_type", STRING, CLIDR_EL1, ICB), + ARM_SINGLE_FIELD_PROP("cache_ttypen", NUMERIC, CLIDR_EL1, TTYPEN), + + ARM_CUSTOM_PROP("cache_lvl1_icache_sets", "number", + cache_lvl1_icache_sets_get, + cache_lvl1_icache_sets_set, + cache_lvl1_icache_sets_reset), + ARM_CUSTOM_PROP("cache_lvl1_dcache_sets", "number", + cache_lvl1_dcache_sets_get, + cache_lvl1_dcache_sets_set, + cache_lvl1_dcache_sets_reset), + ARM_CUSTOM_PROP("cache_lvl2_sets", "number", + cache_lvl2_sets_get, + cache_lvl2_sets_set, + cache_lvl2_sets_reset), + ARM_CUSTOM_PROP("cache_lvl3_sets", "number", + cache_lvl3_sets_get, + cache_lvl3_sets_set, + cache_lvl3_sets_reset), + + ARM_CUSTOM_PROP("cache_lvl1_icache_associativity", "number", + cache_lvl1_icache_associativity_get, + cache_lvl1_icache_associativity_set, + cache_lvl1_icache_associativity_reset), + ARM_CUSTOM_PROP("cache_lvl1_dcache_associativity", "number", + cache_lvl1_dcache_associativity_get, + cache_lvl1_dcache_associativity_set, + cache_lvl1_dcache_associativity_reset), + ARM_CUSTOM_PROP("cache_lvl2_associativity", "number", + cache_lvl2_associativity_get, + cache_lvl2_associativity_set, + cache_lvl2_associativity_reset), + ARM_CUSTOM_PROP("cache_lvl3_associativity", "number", + cache_lvl3_associativity_get, + cache_lvl3_associativity_set, + cache_lvl3_associativity_reset), + + ARM_CUSTOM_PROP("cache_lvl1_icache_linesize", "number", + cache_lvl1_icache_linesize_get, + cache_lvl1_icache_linesize_set, + cache_lvl1_icache_linesize_reset), + ARM_CUSTOM_PROP("cache_lvl1_dcache_linesize", "number", + cache_lvl1_dcache_linesize_get, + cache_lvl1_dcache_linesize_set, + cache_lvl1_dcache_linesize_reset), + ARM_CUSTOM_PROP("cache_lvl2_linesize", "number", + cache_lvl2_linesize_get, + cache_lvl2_linesize_set, + cache_lvl2_linesize_reset), + ARM_CUSTOM_PROP("cache_lvl3_linesize", "number", + cache_lvl3_linesize_get, + cache_lvl3_linesize_set, + cache_lvl3_linesize_reset), + /* Fractional properties */ ARM_FRAC_PROP("feat_CSV2", ID_AA64PFR0, CSV2, ID_AA64PFR1, CSV2_FRAC, = csv2_frac_vals), ARM_FRAC_PROP("feat_MPAM", ID_AA64PFR0, MPAM, ID_AA64PFR1, MPAM_FRAC, = mpam_frac_vals), @@ -314,6 +515,21 @@ static const char *sve_sub_props[] =3D { NULL }; =20 +static const char *expose_cache_sub_props[] =3D { + "cache_lvl1_icache_sets", "cache_lvl1_dcache_sets", + "cache_lvl1_icache_associativity", "cache_lvl1_dcache_associativity", + "cache_lvl1_icache_linesize", "cache_lvl1_dcache_linesize", + "cache_lvl1_type", + "cache_lvl2_sets", "cache_lvl2_associativity", + "cache_lvl2_linesize", "cache_lvl2_type", + "cache_lvl3_sets", "cache_lvl3_associativity", + "cache_lvl3_linesize", "cache_lvl3_type", + + "cache_icb_type", "cache_ttypen", + "cache_louis", "cache_loc", "cache_louu", + NULL +}; + static void pauth_get(ARMCPU *cpu, Visitor *v, const char *name, Error **e= rrp) { uint64_t apa, api, apa3; @@ -338,9 +554,35 @@ static void sve_get(ARMCPU *cpu, Visitor *v, const cha= r *name, Error **errp) visit_type_bool(v, name, &sve_enabled, errp); } =20 +static void expose_cache_get(ARMCPU *cpu, Visitor *v, const char *name, Er= ror **errp) +{ + visit_type_bool(v, name, &cpu->cache_exposed, errp); +} + +static void expose_cache_set(ARMCPU *cpu, Visitor *v, const char *name, + Error **errp) +{ + bool val; + + ERRP_GUARD(); + + if (!visit_type_bool(v, name, &val, errp)) { + return; + } + + arm_composite_set_internal(cpu, arm_find_prop(name), val, name, errp); + if (*errp) { + error_prepend(errp, "Property '%s': ", name); + } + + cpu->cache_exposed =3D val; +} + const ArmCpuPropDesc arm_composite_props[] =3D { ARM_COMPOSITE_PROP_GS("pauth", pauth_sub_props, pauth_get, pauth_set), ARM_COMPOSITE_PROP("sve", sve_sub_props, sve_get), + ARM_COMPOSITE_PROP_GS("expose-cache", expose_cache_sub_props, + expose_cache_get, expose_cache_set), { .name =3D NULL } }; =20 @@ -448,6 +690,11 @@ static void arm_cpu_prop_get(Object *obj, Visitor *v, = const char *name, case ARM_PROP_COMPOSITE: /* Composite features must have a custom getter */ g_assert_not_reached(); + break; + case ARM_PROP_CUSTOM: + /* Custom getter should be passed. */ + g_assert_not_reached(); + break; } } =20 @@ -541,6 +788,11 @@ static void arm_prop_set_default(ARMCPU *cpu, const ch= ar *name, Error **errp) return; } =20 + if (p->reset) { + p->reset(cpu, name, errp); + return; + } + switch (p->type) { case ARM_PROP_STRING: case ARM_PROP_BOOLEAN: @@ -554,6 +806,10 @@ static void arm_prop_set_default(ARMCPU *cpu, const ch= ar *name, Error **errp) case ARM_PROP_COMPOSITE: object_property_set_bool(OBJECT(cpu), p->name, false, errp); break; + case ARM_PROP_CUSTOM: + /* Custom default resetter should be implemetend. */ + g_assert_not_reached(); + break; default: g_assert_not_reached(); } @@ -669,6 +925,10 @@ static void arm_cpu_prop_set(Object *obj, Visitor *v, = const char *name, case ARM_PROP_COMPOSITE: arm_composite_set(cpu, p, v, name, errp); break; + case ARM_PROP_CUSTOM: + /* Custom setter should be passed. */ + g_assert_not_reached(); + break; } } =20 @@ -689,6 +949,9 @@ void arm_add_cpu_props(Object *obj) case ARM_PROP_NUMERIC: type =3D "number"; break; + case ARM_PROP_CUSTOM: + type =3D p->u.custom_type; + break; default: g_assert_not_reached(); } @@ -802,7 +1065,14 @@ void arm_prop_append_supported_values(const ArmCpuPro= pDesc *prop, } break; } - + case ARM_PROP_COMPOSITE: { + /* not supported for composites */ + break; + } + case ARM_PROP_CUSTOM: { + /* not supported for custom props */ + break; + } default: g_assert_not_reached(); } diff --git a/target/arm/arm-cpu-props.h b/target/arm/arm-cpu-props.h index 264a8a71de..55333de858 100644 --- a/target/arm/arm-cpu-props.h +++ b/target/arm/arm-cpu-props.h @@ -20,7 +20,8 @@ typedef enum ArmCpuPropType { ARM_PROP_BOOLEAN, ARM_PROP_NUMERIC, ARM_PROP_FRACTIONAL, - ARM_PROP_COMPOSITE + ARM_PROP_COMPOSITE, + ARM_PROP_CUSTOM } ArmCpuPropType; =20 typedef struct ArmFracVal { @@ -40,10 +41,12 @@ typedef struct ArmCpuPropDesc { const ArmFracVal *vals; } frac; const char **comp_sub_props; + const char *custom_type; } u; =20 void (*get)(ARMCPU *cpu, Visitor *v, const char *name, Error **errp); void (*set)(ARMCPU *cpu, Visitor *v, const char *name, Error **errp); + void (*reset)(ARMCPU *cpu, const char *name, Error **errp); } ArmCpuPropDesc; =20 const ArmCpuPropDesc *get_arm_cpu_props(void); diff --git a/target/arm/arm-qmp-cmds.c b/target/arm/arm-qmp-cmds.c index 9b7eea7fea..e13dfeb357 100644 --- a/target/arm/arm-qmp-cmds.c +++ b/target/arm/arm-qmp-cmds.c @@ -87,6 +87,7 @@ CpuPropInfoList *qmp_query_arm_cpu_props_info(Error **err= p) pdesc->type =3D=3D ARM_PROP_BOOLEAN ? "= boolean" : pdesc->type =3D=3D ARM_PROP_NUMERIC ? "= number" : pdesc->type =3D=3D ARM_PROP_FRACTIONAL = ? "string" : + pdesc->type =3D=3D ARM_PROP_CUSTOM ? pd= esc->u.custom_type : "unknown"); =20 sv =3D qlist_new(); diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index e162bdff9b..c3aec21f5c 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -28,17 +28,6 @@ /* * System register ID fields. */ -FIELD(CLIDR_EL1, CTYPE1, 0, 3) -FIELD(CLIDR_EL1, CTYPE2, 3, 3) -FIELD(CLIDR_EL1, CTYPE3, 6, 3) -FIELD(CLIDR_EL1, CTYPE4, 9, 3) -FIELD(CLIDR_EL1, CTYPE5, 12, 3) -FIELD(CLIDR_EL1, CTYPE6, 15, 3) -FIELD(CLIDR_EL1, CTYPE7, 18, 3) -FIELD(CLIDR_EL1, LOUIS, 21, 3) -FIELD(CLIDR_EL1, LOC, 24, 3) -FIELD(CLIDR_EL1, LOUU, 27, 3) -FIELD(CLIDR_EL1, ICB, 30, 3) =20 /* When FEAT_CCIDX is implemented */ FIELD(CCSIDR_EL1, CCIDX_LINESIZE, 0, 3) diff --git a/target/arm/cpu-idregs.h b/target/arm/cpu-idregs.h index c4f039f690..c1c334291a 100644 --- a/target/arm/cpu-idregs.h +++ b/target/arm/cpu-idregs.h @@ -18,6 +18,7 @@ typedef enum ArmIdRegSafeRule { =20 #define DCZID_EL0_EL1_IDX DCZID_EL0_IDX #define CTR_EL0_EL1_IDX CTR_EL0_IDX +#define CLIDR_EL1_EL1_IDX CLIDR_EL1_IDX =20 /* ArmFieldIdx: per-field enum generated from cpu-idregs.h.inc */ #define IDREG_START(reg) diff --git a/target/arm/cpu-idregs.h.inc b/target/arm/cpu-idregs.h.inc index 7e2bbf256d..05bf7fe96a 100644 --- a/target/arm/cpu-idregs.h.inc +++ b/target/arm/cpu-idregs.h.inc @@ -1547,6 +1547,97 @@ IDREG_FIELD_END(ID_AA64AFR1, VAL) =20 IDREG_END(ID_AA64AFR1_EL1) =20 +/* CLIDR_EL1 */ +IDREG_START(CLIDR_EL1) +IDREG_FIELD_START(CLIDR_EL1, CTYPE1, 0, 3, ANY, 0) +IDREG_FIELD_ARCH_VAL(0b000, "no-cache") +IDREG_FIELD_ARCH_VAL(0b001, "i-cache-only") +IDREG_FIELD_ARCH_VAL(0b010, "d-cache-only") +IDREG_FIELD_ARCH_VAL(0b011, "separate-i-d-cache") +IDREG_FIELD_ARCH_VAL(0b100, "unified-cache") +IDREG_FIELD_END(CLIDR_EL1, CTYPE1) + +IDREG_FIELD_START(CLIDR_EL1, CTYPE2, 3, 3, ANY, 0) +IDREG_FIELD_ARCH_VAL(0b000, "no-cache") +IDREG_FIELD_ARCH_VAL(0b001, "i-cache-only") +IDREG_FIELD_ARCH_VAL(0b010, "d-cache-only") +IDREG_FIELD_ARCH_VAL(0b011, "separate-i-d-cache") +IDREG_FIELD_ARCH_VAL(0b100, "unified-cache") +IDREG_FIELD_END(CLIDR_EL1, CTYPE2) + +IDREG_FIELD_START(CLIDR_EL1, CTYPE3, 6, 3, ANY, 0) +IDREG_FIELD_ARCH_VAL(0b000, "no-cache") +IDREG_FIELD_ARCH_VAL(0b001, "i-cache-only") +IDREG_FIELD_ARCH_VAL(0b010, "d-cache-only") +IDREG_FIELD_ARCH_VAL(0b011, "separate-i-d-cache") +IDREG_FIELD_ARCH_VAL(0b100, "unified-cache") +IDREG_FIELD_END(CLIDR_EL1, CTYPE3) + +IDREG_FIELD_START(CLIDR_EL1, CTYPE4, 9, 3, ANY, 0) +IDREG_FIELD_ARCH_VAL(0b000, "no-cache") +IDREG_FIELD_ARCH_VAL(0b001, "i-cache-only") +IDREG_FIELD_ARCH_VAL(0b010, "d-cache-only") +IDREG_FIELD_ARCH_VAL(0b011, "separate-i-d-cache") +IDREG_FIELD_ARCH_VAL(0b100, "unified-cache") +IDREG_FIELD_END(CLIDR_EL1, CTYPE4) + +IDREG_FIELD_START(CLIDR_EL1, CTYPE5, 12, 3, ANY, 0) +IDREG_FIELD_ARCH_VAL(0b000, "no-cache") +IDREG_FIELD_ARCH_VAL(0b001, "i-cache-only") +IDREG_FIELD_ARCH_VAL(0b010, "d-cache-only") +IDREG_FIELD_ARCH_VAL(0b011, "separate-i-d-cache") +IDREG_FIELD_ARCH_VAL(0b100, "unified-cache") +IDREG_FIELD_END(CLIDR_EL1, CTYPE5) + +IDREG_FIELD_START(CLIDR_EL1, CTYPE6, 15, 3, ANY, 0) +IDREG_FIELD_ARCH_VAL(0b000, "no-cache") +IDREG_FIELD_ARCH_VAL(0b001, "i-cache-only") +IDREG_FIELD_ARCH_VAL(0b010, "d-cache-only") +IDREG_FIELD_ARCH_VAL(0b011, "separate-i-d-cache") +IDREG_FIELD_ARCH_VAL(0b100, "unified-cache") +IDREG_FIELD_END(CLIDR_EL1, CTYPE6) + +IDREG_FIELD_START(CLIDR_EL1, CTYPE7, 18, 3, ANY, 0) +IDREG_FIELD_ARCH_VAL(0b000, "no-cache") +IDREG_FIELD_ARCH_VAL(0b001, "i-cache-only") +IDREG_FIELD_ARCH_VAL(0b010, "d-cache-only") +IDREG_FIELD_ARCH_VAL(0b011, "separate-i-d-cache") +IDREG_FIELD_ARCH_VAL(0b100, "unified-cache") +IDREG_FIELD_END(CLIDR_EL1, CTYPE7) + +IDREG_FIELD_START(CLIDR_EL1, LOUIS, 21, 3, ANY, 0) +IDREG_FIELD_ARCH_VAL_ANY +IDREG_FIELD_END(CLIDR_EL1, LOUIS) + +IDREG_FIELD_START(CLIDR_EL1, LOC, 24, 3, ANY, 0) +IDREG_FIELD_ARCH_VAL_ANY +IDREG_FIELD_END(CLIDR_EL1, LOC) + +IDREG_FIELD_START(CLIDR_EL1, LOUU, 27, 3, ANY, 0) +IDREG_FIELD_ARCH_VAL_ANY +IDREG_FIELD_END(CLIDR_EL1, LOUU) + +IDREG_FIELD_START(CLIDR_EL1, ICB, 30, 3, ANY, 0) +IDREG_FIELD_ARCH_VAL(0b000, "unknown") +IDREG_FIELD_ARCH_VAL(0b001, "l1") +IDREG_FIELD_ARCH_VAL(0b010, "l2") +IDREG_FIELD_ARCH_VAL(0b011, "l3") +IDREG_FIELD_ARCH_VAL(0b100, "l4") +IDREG_FIELD_ARCH_VAL(0b101, "l5") +IDREG_FIELD_ARCH_VAL(0b110, "l6") +IDREG_FIELD_ARCH_VAL(0b111, "l7") +IDREG_FIELD_END(CLIDR_EL1, ICB) + +IDREG_FIELD_START(CLIDR_EL1, TTYPEN, 33, 14, ANY, 0) +IDREG_FIELD_ARCH_VAL_ANY +IDREG_FIELD_END(CLIDR_EL1, TTYPEN) + +IDREG_FIELD_START(CLIDR_EL1, RES0_47, 47, 17, EXACT, 0) +IDREG_FIELD_ARCH_VAL(0, NULL) +IDREG_FIELD_END(CLIDR_EL1, RES0_47) + +IDREG_END(CLIDR_EL1) + /* AArch32 ID registers */ =20 /* ID_PFR0_EL1 */ diff --git a/target/arm/cpu.h b/target/arm/cpu.h index a0a1d7fbe3..5dab74412f 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -1189,6 +1189,9 @@ struct ArchCPU { =20 /* Generic timer counter frequency, in Hz */ uint64_t gt_cntfrq_hz; + + /* QOM property to indicate if the cache is exposed */ + bool cache_exposed; }; =20 typedef struct ARMCPUInfo { diff --git a/target/arm/kvm.c b/target/arm/kvm.c index b4544f3514..984c7fd256 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -1197,6 +1197,48 @@ static uint64_t *kvm_arm_find_cpreg_ptr(ARMCPU *cpu,= uint64_t regidx) return &cpu->cpreg_values[res - cpu->cpreg_indexes]; } =20 +#define CSSELR_MAX 14 + +/* + * Push the model-configured CCSIDR_EL1 values stored in cpu->ccsidr[] into + * the cpreg list, so the subsequent write_list_to_kvmstate() pass actually + * issues KVM_SET_ONE_REG for the matching KVM_REG_ARM_DEMUX_ID_CCSIDR + * registers. + */ +static void kvm_arm_writeback_ccsidr(ARMCPU *cpu) +{ + if (!cpu->cache_exposed) { + return; + } + + QEMU_BUILD_BUG_ON(ARRAY_SIZE(cpu->ccsidr) < CSSELR_MAX); + + for (uint32_t csselr =3D 0; csselr < CSSELR_MAX; csselr++) { + uint64_t regidx =3D KVM_REG_ARM64 + | KVM_REG_SIZE_U32 + | KVM_REG_ARM_DEMUX + | KVM_REG_ARM_DEMUX_ID_CCSIDR + | csselr; + uint64_t *cpreg =3D kvm_arm_find_cpreg_ptr(cpu, regidx); + + if (cpu->ccsidr[csselr] =3D=3D 0) { + continue; + } + + if (!cpreg) { + /* This kernel doesn't expose this CSSELR slot; skip. */ + error_report("KVM does not expose CSSELR slot %d", csselr); + continue; + } + + /* + * cpu->ccsidr[] is u64. The DEMUX ABI only takes the low 32 bits, + * matching the legacy CCSIDR encoding, which KVM enforces. + */ + *cpreg =3D (uint32_t)cpu->ccsidr[csselr]; + } +} + static void kvm_arm_writeback_idregs(ARMCPU *cpu) { for (int i =3D 0; i < NUM_ID_IDX; i++) { @@ -1205,6 +1247,14 @@ static void kvm_arm_writeback_idregs(ARMCPU *cpu) const char *name =3D arm_idregs[i].name; uint64_t writable_mask, previous, desired, diff; =20 + if (i =3D=3D CLIDR_EL1_IDX && !cpu->cache_exposed) { + /* + * CLIDR is not exposed to KVM when cache_exposed is false. + * Continue with the whatever view KVM provides. + */ + continue; + } + if (!cpreg) { warn_report("KVM does not expose ID register slot %d " "(kvm_reg=3D0x%" PRIx64 "), %s; skipping writeback= ", @@ -1270,6 +1320,10 @@ static void kvm_arm_writeback_idregs(ARMCPU *cpu) trace_kvm_arm_writeback_idreg(name, previous, *cpreg); } } + + if (cpu->cache_exposed) { + kvm_arm_writeback_ccsidr(cpu); + } } =20 bool kvm_arm_cpu_post_load(ARMCPU *cpu) --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649364; cv=pass; d=zohomail.com; s=zohoarc; b=ML1HHK/nJGeOanRtjRbqmaj36KwUfK6iiDoqW372U/lS/MpZbBKhxietjN2nbK4gVVn3yBYWUiB3sjJPLDs7GtC5lTvvBf7yTDiA7EN+RP6y++WrLzFgM3QQSENyPIMP7Gx1xTKe9mnhE+ytvYjRWnPXmF+Ao6lnhHAplqZyOW0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649364; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=4eN5nXJoTKGpnFp/ezkq0RZhikSERKquIwk9Lr4+ER0=; b=k2R6Ry4bPpGJUVd1x2tmGg6tHWzHXUGrYTYaizno99rOoDV01AcGDK1sqqTrKpQMB336cXViv8WX48t4ICAYsoTY3Kn9IPr3o7CFfboemAt4hdw8xJY3mkoK08N08YuV8wYzghpktlLvTQq6rS/0Shq+m+y62+dR838gKR+UssM= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649364522914.7990851407031; Fri, 5 Jun 2026 01:49:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQ9p-00068h-3x; Fri, 05 Jun 2026 04:44:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9j-00062m-5y; Fri, 05 Jun 2026 04:43:55 -0400 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9e-0002Vx-J5; Fri, 05 Jun 2026 04:43:54 -0400 Received: from pps.filterd (m0127844.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6556MRUR1185382; Fri, 5 Jun 2026 01:43:30 -0700 Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11020134.outbound.protection.outlook.com [52.101.201.134]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejuupcm1f-10 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:29 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by MN6PR02MB10630.namprd02.prod.outlook.com (2603:10b6:208:4f4::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:21 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:21 +0000 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=4eN5nXJoTKGpnFp/ezkq0RZhikSERKquIwk9Lr4+E R0=; b=G3l4wnk2IgdxW/4c0ujMVZlFOojUIe7jE2wHM1csQfymhaWGgd2563iOz hTKSYbiD5hOtdZo/XYcT+g5WXiMNZHBHfBA2bc3B2M78XrCYJ7RpglhkRQoklsS2 9SVeWJ5ePUUGaFB+4Kkacnth7tCjLu7ZvZ2spl+uxCuVQxOs7J/4e0NbKwtRHYtt T/1taA/pWXjSg/VQn6PucETZaTarqygtK4onTnaw1xeUpPKSLNcldBxNH70fre9Z I0UEykQtd8vPB3YMxiPIfyCnixFrn1RL8JGVr5et+KkOzUpFwRK1lIv6fkZKwR06 szkq57PdnXQFiYMXSdVtrP4kQbnNw== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SHyuO6xGHhV8tdQ3245MiS90Un6vOqIUf3JBOrikNc6gm+XWnt79OBJkUR5jxN9OaFA3xibGMnVzBjfP5RJyiF3pnop8qcEiw+a9TrqhN88ECtlV5eH2veR/MX2mea+6GFRqecO3CfsPtLX7Ld8bZr5hcuk8THHxmQYjhXr3z5RNEWGyZnU1n7aLGBgz6rPNMJjhaZffGKjUm2Ax1ZLnzoI7zctIIW/sTaY6GeqMhe5FV/cHImdA89KNvqOEsfu+bVcLp41fTFPRqDgHFjEaRB5BvwHJepMujQQYxm9m0dM4qC3Av1tIXXyjdfJkpx5KncHcH/6X9IW11n/BXR8GwQ== 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=4eN5nXJoTKGpnFp/ezkq0RZhikSERKquIwk9Lr4+ER0=; b=Odc35ha9ZL93CtyLD3tuzazjBynQv5X2ZXkyVTjEb31saj7md3fWsIqBfWHLv24y7Ad4IHIkbcUq4TVWeegVhS8uGoo+A6arCL8PS9+XO2zIZcoXOyGL8sUJ4SpAzRxOchX+KpobZ1GRI9PJ4d5mkTb8BmqTemjO4XXcxuuO16JpPKM74FlQUHtdbGTuTPL0WSTM0WgQKItHZaKB1GcX28zWr88Gz7Z3C7vt17buGeH70hMgBta8MnFFiYoxBEQcrMSIyJkaacsR/cM2V5pGsFMmfpAzHx0PcJjebNnqwwLqv2Y2vN+M9HYb4Nq3H0WsjcqcUsNWb90enBmNEA9ueQ== 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=4eN5nXJoTKGpnFp/ezkq0RZhikSERKquIwk9Lr4+ER0=; b=mgQZyIkrocghAMOZfYfMoTqa//KC9gDZBQf9UgldvCADsUMbzpZjFb9RWf95tsey03uAmD2jx7AhGgh1QVZLJHiEd2ERlAvjPODiqQebKao1Dk99Td3XV1134LtpcvjkAcSNa8Ch8fcr3ZKG7hG6l8lvjBGT2/+f1mszDqddbfENCFUl2dDwSMRsYl7zlCvoi+/60yJPKC6yUn//sSBvBFZaCxHo604CWXEYhXb/ueZ9XCiRNTDDpXlrS8MK6Yq1ZnNp05Ukb9RYyrMDfZEEA0XhuxHjaRTHT+USuyTpcYCXsQXX4UGsIDeyxZLy3zXwuzfYlwRCDYNg5zPtGdYswg== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 27/29] target/arm: Provide default cache hierarchy Date: Fri, 5 Jun 2026 08:33:56 +0000 Message-ID: <20260605083358.1320563-28-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|MN6PR02MB10630:EE_ X-MS-Office365-Filtering-Correlation-Id: 25ad1e72-d514-4129-ac07-08dec2de7e42 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|7416014|1800799024|376014|6133799003|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: LHh10VEL5jOeWTis7LMwekloftiJEC4w1d1rPxb1g89kqqvxuzZdRpmE5BKjn/P3i+UwVOdX3uhYGGzCFedSU5Ii5Yx36kvmbqnl345Sn+r5UWu3akSQtWfHl/PFH2UtmIBIzUTX5gQNsD0VI3moEDuUSFaIoK01NvBQs8a+67lOnTSz5AGOBBlQ2vm+XyfffafFxct2zGzeuCWAcwYZcPh8HCP+r7E9wXEvvp5FDgpXyM9VURtEawygJfnWt6+nsWSgXs+vWC0fIEQDZ66XOm5gofWbb3W9qbpDDIw8KIMlXeciDlGilcXDPqhL7iqjrLoUX5FX17UXKEBL9DN6ps2SPDw4vScwRhNBpA4aPOhJWrGLvxI9/+tf1GzxOqIyeisRm+St6/z5+f+dWRfxoO+wxeXPUD/xzQrejvb41X7PcFD3OyXEZd1KUgd7Iz5oi46v5OiHBAwOivjcOYqQtUaLI1myx0/gY/K09CaYq5nmpuItdmtyDdnEIb9pUIrgfNm4GqymjE95h0IgQ5bKQqi07EHQ64AJ+Ua8Jv2x+HmC7sZZTc47PB5bKEqWkfhIXomQxaK/tTu+smLGc5DRw3xX2frNmmwD9YH8p9FkPm1iE//nYaRuWKUuuOIBFcgl6Y4dzHE5zeoCA8vsWqBh/9aL7VnASUZJfZdQ3ZyAADM2TV3BeDZ+UvoJhHoY7VEC X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(7416014)(1800799024)(376014)(6133799003)(56012099006)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ngJEe4EWuBIyY4/tzBnOFWIjRArYNzlxrMxsn5BPOdxT7hpewvwwCf6mFj/n?= =?us-ascii?Q?ePu8VZBLMh3gsLTutBSZdvvWYDcY4wyZVWv6yErLnepSYbMYhvwZ4YJGDcUX?= =?us-ascii?Q?+0p8cTKZ501XakZ0ZeHaPooeP1vFuvvt7aTv+iM/nA3HsmwiMQgFANIa27nb?= =?us-ascii?Q?6Wc9yCtac4qGv8mBwZjoax4E/sP40gYCaDAUeXw0B72U7EQBgIeg5OiFoVMj?= =?us-ascii?Q?TQWcWbuR0o2dcS3dA6qiEm0T/uQDWeeanFtun6wxxpviUJUIYD6Z78xIVw5X?= =?us-ascii?Q?F95PvUjWsdcd0+TYuBCiQvCIYRmDCqkH9jlAYqThG6LkmMdfF26Z3Y1mjfzr?= =?us-ascii?Q?hHSrwX5R9ttNzcORUztWgmPzrBr/vkQBCUeCQ9iLLS0x2FvtIiTEPSxuOZjk?= =?us-ascii?Q?a/rY5yPYLFi5wW9EG7/virifIwlNJp2xcQOF7+7YJ3bMPLnzc7/FS9xTZfMD?= =?us-ascii?Q?VKCbY6marYQs1i5k6JorFIFIxLoD0M63PNqVZV3JOOMUFOWRpgJyLuABnp+r?= =?us-ascii?Q?d9VFfr/s35iWVwNfOpzjkr7yG3d20kVLtFks6UP0oNFFyH7UnLHwx/oYC9By?= =?us-ascii?Q?1lKdTrUwbgirIvaw1wptJgTsq08xVaeiwYK5ecDK8+OHEa1EsraYeUVdUZ73?= =?us-ascii?Q?U4ShjBPb4UKCbcCBF9iAEKD4gUhNyPSHEiwlXpc+qQSb1o1mlQlKNFyA17Jy?= =?us-ascii?Q?0dS5Y7Gylzw5v0gj1WztZh9Qy6p/JxEHT9ww52ggwVjDQIKxYNb7BmuQEPVt?= =?us-ascii?Q?Z88Zswn9vNSh2NfYUxvbOT0SR44z7OFNdU/LuswRVKgxuEE1rjT5tV7tIImf?= =?us-ascii?Q?msgPhhqKTUBXq9dfRIp90moPMUhg6Sf7aC6D4A0x2M/Z2SxU5U147pKPz16O?= =?us-ascii?Q?/BwGmRDow9q9cKmROo+bX8GALFzwruHSbM5Y7PJkWOsOXgaV9Cd/SkM9NBHh?= =?us-ascii?Q?3CC+WF9TxcfgP97E8B4fHRGLiCTaJMWEHMyqWHThe17y4S4LVAGPlecj3Tw8?= =?us-ascii?Q?l/enOGSO6LBCKCzBuXQpuh2YaqU5Cdg17VZeCoFbR7/0iCaEfVj1MmUQENtt?= =?us-ascii?Q?WRfajCN1mDBCrOv8JU8E/0MmTty/ijvclEl3TGWudwBgpo277Ws/IAuQTrXV?= =?us-ascii?Q?0IZ7ikoEq34dN1RwG3kYUNcl9mq5VoJMXdMxVmGR97UbNVgkQFQZZkVCGRoO?= =?us-ascii?Q?fbEqap/hv0igLw9YmIxWUiSlS6jz9PtZ+qFlYUe/WCQ7MTdairy+eI7jTwLX?= =?us-ascii?Q?aLlJfSfZYvnAQ4bpvrwbSFVmGpIcQz07hI8Ny46TlLmFUo1e1pADazaX6oJw?= =?us-ascii?Q?S+PhKYaHPMyjEBZv2YQjxUw65lyZ0YPQ/sYspuF5N3ltgHdR4fC+o0fSFi27?= =?us-ascii?Q?eYJxf+8EpzGBXbCfNTW3c5jxJxL3/5nYJEgusmxa7kdAxBYiwXfkclG0YgFv?= =?us-ascii?Q?0Jy4kG2r2bQ2Jte2e5tr0y5hcIDbaj9MjKGy9xYzpsKIxelEZpJA03MC+jEi?= =?us-ascii?Q?4GXk71vojmz7awMY9Df9kdxnwbw37CZJtoV5fbqyZ+v1PosglldAGBv0Kfe4?= =?us-ascii?Q?Q76ez/dJxcs3qDG/gpOvNYrGrYCet9ewmomqs4oDhAiui8a8BVMpNGP2kvOO?= =?us-ascii?Q?ozSKrHsE/N93Wq8I1qOtgxIL0PmCB6e9D+O2U8zmqiQgPFb19MMj/m7/nYze?= =?us-ascii?Q?KoLzJdhkTginftnKdEO5HgbS0TZotKfMYibgsUhb89drzP+4tHwrZ45oogGX?= =?us-ascii?Q?8UFqLELuk3I50C/Wn3L1lluk1X4sLts=3D?= X-Exchange-RoutingPolicyChecked: OMw6XZuAQ9tTrYm47LMbWg6lMgD8QtQLl6106KaKwV42oRQBoEUodY6xjWfCpJutJ3VXwWZVqBEKKJwJI5fTuWMh9Q2K5c40Y4TGVAw+3USE01szf75jeAxdhE5JIA9YVF3H+6AMU/ZVfqjYKv8tOLo8Oe1eK95H7VefTBdtj0x79rkgTgIMDlbO/PF34eFvpGYYXlD5mt7X4XJcd5Up9UIbQ2y3Tes2iBYqjEb7lmpjx1txseDfQC19XRvf0ioswlCZxBsXuootnPN9ZsuZ69ZN1RU0elMVHvu6eDnNjfP5YW3NQzXM3CrFbpikIW0s8hqQmh+Hb2QEoOo4f5ohNw== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 25ad1e72-d514-4129-ac07-08dec2de7e42 X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:19.1266 (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: XjIM+u0phHx7K+ySGCbaCGgWmzp5bKt9KrwpWI2kTHL9I1LM/HVCwMPjHMaSJDurkmmcJNX7HIguNtWFkXXBpfcoBB4ASutj0BKRmPk7iNo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR02MB10630 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfXwySXTrA9VcgA 3zkqmUKnGzm3Y3buIE6+DXSo5rgJrE8Huh5A4Xb0FPAw3OUwOTxFC94PonaYPEPAkqxwnPFKzK3 ILoQCQmgYLPdulaSn9ueUQACUPzWW7wDuZObJY56mbDFHa3zVG69crsoqMX6mHJTKYRAIsgiH9O LimJ/pMVv8SuQLRsu6gDKRGR3oB7UN7Sr3MDArvmLyqPVI0E9U66/Ru4dmZkV8BXgnaYXesfyUT fXTH/5S3RA9tfZPsWQFUs2jTykBzJUK+p8t8c+WJu3R5CWG8iHUxbq89z6Sgb4eS+B5HVuUm1pO UKfA0+QOGHNqXVGrZePqO0aH0sMMfkw1/26FCCFp2pF+hy21LwBoPLBSXyfKXpya9eoDFTuIFCh 5UmVTlFK5FTStva2OPHP47vUExlSfh+qBkzaWPk64Js97Zg+A5F8P7f4k7r/epf8rDBE8KD+sxl dIelen+z0Eb8lj02hzQ== X-Proofpoint-ORIG-GUID: qIGAG-vqrSlG759WXXwRNR2iPHUrK5g3 X-Authority-Analysis: v=2.4 cv=V6FNF+ni c=1 sm=1 tr=0 ts=6a228c31 cx=c_pps a=h3Jk+6XEKCuoUZR+ZnWw9Q==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=0LlEyIVc8U2lsR7dKhuH:22 a=64Cc0HZtAAAA:8 a=8U3q0NyPIHcyVLjXBGEA:9 X-Proofpoint-GUID: qIGAG-vqrSlG759WXXwRNR2iPHUrK5g3 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.155.12; envelope-from=khushit.shah@nutanix.com; helo=mx0b-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649366728158500 Content-Type: text/plain; charset="utf-8" Default cache-hierarchy into kvm-base-v1, hence every model inherits a cache topology. Topology: L1: separate-i-d, 4-way x 256 sets x 64B =3D 64 KiB each L2: unified, 8-way x 2048 sets x 64B =3D 1 MiB L3: unified, 12-way x 8192 sets x 64B =3D 6 MiB CLIDR_EL1 fields are set to match the geometry: LoC=3D3, LoUIS=3DLoUU=3D1, ICB=3Dunknown, TTYPEN=3D0. Whether to keep them on as default is another question to tackle some another time. Signed-off-by: Khushit Shah --- target/arm/arm-cpu-models.c | 46 +++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/target/arm/arm-cpu-models.c b/target/arm/arm-cpu-models.c index 3eafa0efc5..5f59650c81 100644 --- a/target/arm/arm-cpu-models.c +++ b/target/arm/arm-cpu-models.c @@ -46,6 +46,50 @@ =20 #define MODEL_PROP_END { .name =3D NULL } =20 +/* + * Expose a default three-level cache hierarchy. + * No justifications on the topology or the values. + * + * L1: separate-i-d-cache, 4-way, 64B, 256 sets: 64KiB + * L2: unified-cache, 8-way, 64B, 2048 sets: 1MiB + * L3: unified-cache, 12-way, 64B, 8192 sets: 6MiB + * + * Louis: 1 + * Loc: 3 + * Louu: 1 + * Icb: unknown (not specified) + * Ttypen: 0 + */ +static const ArmModelPropValue default_expose_cache_props[] =3D { + MODEL_PROP("cache_lvl1_type", STR, "separate-i-d-cache"), + MODEL_PROP("cache_lvl1_icache_linesize", NUM, 64), + MODEL_PROP("cache_lvl1_icache_associativity", NUM, 4), + MODEL_PROP("cache_lvl1_icache_sets", NUM, 256), + + MODEL_PROP("cache_lvl1_dcache_linesize", NUM, 64), + MODEL_PROP("cache_lvl1_dcache_associativity", NUM, 4), + MODEL_PROP("cache_lvl1_dcache_sets", NUM, 256), + + MODEL_PROP("cache_lvl2_type", STR, "unified-cache"), + MODEL_PROP("cache_lvl2_linesize", NUM, 64), + MODEL_PROP("cache_lvl2_associativity", NUM, 8), + MODEL_PROP("cache_lvl2_sets", NUM, 2048), + + MODEL_PROP("cache_lvl3_type", STR, "unified-cache"), + MODEL_PROP("cache_lvl3_linesize", NUM, 64), + MODEL_PROP("cache_lvl3_associativity", NUM, 12), + MODEL_PROP("cache_lvl3_sets", NUM, 8192), + + /* Only set/way based guest operations will care about this. */ + MODEL_PROP("cache_louis", NUM, 1), + MODEL_PROP("cache_loc", NUM, 3), /* Can we safely set to 1 for perform= ance? */ + MODEL_PROP("cache_louu", NUM, 1), + MODEL_PROP("cache_icb_type", STR, "unknown"), + MODEL_PROP("cache_ttypen", NUM, 0), + + MODEL_PROP_END, +}; + static const ArmModelPropValue kvm_base_v1_props[] =3D { MODEL_PROP("el0_mode", STR, "aarch64"), MODEL_PROP("el1_mode", STR, "aarch64"), @@ -57,6 +101,8 @@ static const ArmModelPropValue kvm_base_v1_props[] =3D { MODEL_PROP("feat_MTE_FRAC", STR, "async"), MODEL_PROP("hw_prop_CCIDX", STR, "32"), =20 + MODEL_PROP_COMP("expose-cache", true, default_expose_cache_props), + MODEL_PROP_END, }; =20 --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649221; cv=pass; d=zohomail.com; s=zohoarc; b=Vxk0mVCwNW1WKFk2A+HCcXanMN3B7mDzumJnPhwiyHYfnLfuWq+Zi3AprDYK7t3y2SgW9FyycXy8reUCu+s3lLjW+icXiPva4laxpNqoqxQbk0HkX9eVl5pDT86oqWt1oPZsuOBgt6VBUWxl6L1Yhb+FEMuPeBkGaJITmfpMqJk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649221; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hQaEAz08JKn1aAsLYTiEElBUVD8YXZTF756KPlDNDUk=; b=jVVvWQ984abarecDm4MB2nYK3pzSTnLa4CSWzbPtmgzo5GdCOL09ze0YOwPmKUJlJW3CERwpM9g0KAyT5dbdd6n+EWcXEsDZJsoxvaKkr1sA/XDw0Q9FuwVFA27kuTu+cy895srKKjbhW6fGDC3JS+qIM0sbCM8ov5POsvWfHJ8= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649221010743.9981752088943; Fri, 5 Jun 2026 01:47:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQ9q-0006AS-Qr; Fri, 05 Jun 2026 04:44:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9m-00066B-DS; Fri, 05 Jun 2026 04:43:58 -0400 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9j-0002Zf-Rx; Fri, 05 Jun 2026 04:43:58 -0400 Received: from pps.filterd (m0127844.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6556MRUS1185382; Fri, 5 Jun 2026 01:43:31 -0700 Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11020134.outbound.protection.outlook.com [52.101.201.134]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejuupcm1f-11 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:31 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by MN6PR02MB10630.namprd02.prod.outlook.com (2603:10b6:208:4f4::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:22 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:22 +0000 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=hQaEAz08JKn1aAsLYTiEElBUVD8YXZTF756KPlDND Uk=; b=RIPx2TOVP7acm7tAjEYAN57z7wwxQIvhcRqLin9XiObRPTYuOvf4wMRZR JEu5HM0nxJxXx1OBqg9bx0Yh+88DpjfDwIivreJBh0TVEDUDJcBl47LZ5pGDRjQ/ Dc3jVW1vwEyk45pRKGz7QugAvffvDWbvPhho5JTW+9NVWiZWyavlMH6WvFTdeuSa +YLr/BVFcvBZkWCUx0hHgkd9IxaZTH98Ssa2LTCjKqjvz8rxJadTzatJQqpI40CI 40HS1mtsjvXYVuKwjOaiBAXBlzSzeUjnBDK3rnQlnOUh+WywgvflaKmx5Lk6TcMk Jxs4jjGqsGSZ2BvFE4ucQRp8wrK2A== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Hqucc49NQ6bdgi9s//E+labJ7zTeAmhBAZ4g8g5mFNQh595I8CxoF/kEl8BK600KDRkklYm81pwNmrYY6D5fQpClJnjkBLMVDn821kn2mKaywKcvT1Zbc4sZtuUJh3FxXRIc7uZ+8ZU/s+Q1FY0cX3ho2QgEdJqJtA5d+xa08j8SBCAIY1NjqvIHhxQyCkVoMO5wuGb3VGP37zEdTc5jGEmsd0Gnkd8DGOL6dU5oJxzmvLrn/QxS6HAI+P6gDNeEOKvudBGjp/W66ZVqJ+RGuFA95vblvVy8lJtXQxVIv9BqXLQ9PGWyAiKpOKoB5i/IgTOfhm0D7h4lUlejFEqWqQ== 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=hQaEAz08JKn1aAsLYTiEElBUVD8YXZTF756KPlDNDUk=; b=SEo/SQiW2KrRwgWfzzbUjZYp3/JwmG2cY4FibUF9NhgSHyPeK9ukBnzkmy36SgOpTiIRdJ6kc5D56gtOck2pR/Bfw4tBs/qAFbD4ak7xe4YLgWpWrWPYKxXzjFjtjTTfYB+s0fDULm/ahEPFDogPxlAbVzd2CyLojhuoOakcSqFwrz5hIib9QELMF9sLzDtFu2FSbHP+iMgqRVnp9t2ptdDTFllpF6IfBiqc3BYHiwtOkgBqoWyG9gl0VECF/l6ORb5DDfxrpbiSJNskTZrU0MhfPBn1R95qr2O2D/iKEPKJlTUuzD95SmftyJaduHDXKgkapogvYiUZYINhGe2frw== 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=hQaEAz08JKn1aAsLYTiEElBUVD8YXZTF756KPlDNDUk=; b=D53h3be1cEL2h9u/i0DLmoz6o1yXwiAuEjdSL4qMcdSw3LjJRDdhPItfadKR2cVy1ovJA+4ys9zHYvS/MvanVPCDeCr+y8R0e+bmGsGLJ08lW7ST2cTozmCuTpjL6GYtL/StRPLikVxcFGK36qnZI88SnKrAJesi7xGNrJhdHmzxiabF6GGNFeOmiOeJapEchENehMBJLFbMNjAggmxMsrRJgKEx4mA3BqVdNyvrCK8YN20XquVD2KQzsxbYFkPRsOL2kDf6AoN/ClGPDup16iUuM9Vhnf5lLRlxaLsAXluG6mJD20R4yOhk6GcjslN0TcxIB4Q0zbyfk68x52JMsw== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 28/29] target/arm: supported-values and blockers for CCSIDR cache properties Date: Fri, 5 Jun 2026 08:33:57 +0000 Message-ID: <20260605083358.1320563-29-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|MN6PR02MB10630:EE_ X-MS-Office365-Filtering-Correlation-Id: 4fbb60b6-b7eb-4828-1934-08dec2de7eab x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|7416014|1800799024|376014|6133799003|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: q2/ry90KWyDn7YAW0GxU3POYZ9fZdNcZnrvicfogZsMBp61ZxjDDKYHTQAu8N+1Ox1iaMCsGOcw0QLc2CRE430nhlrLm7CtLrlrSmlYmeb2TlK568P2wWp3nxNGBaD2UjaXRRwHeFo2LOHd+uMdWiWbIOO63zxXdYoBgqriW6mMrIfJzBfABBPLBL/JgFVJcOWl9/ykCnbMCkTLm0p/u6FBYhed2Y6aGcKfaJAdXVAjPzpBV5ap/aUuFbPlA2JNGtwd6vf48PRMyPjhov7sdeva0NJNFNKajN4bTmo45UHNU75Ekk48hSTy1JloNDci6AmR8pwjol3/kY6koMQ0CRwtVTRcDi70SPdzTaer3XeQ5p0VIV9cuPfdrLrpJOFEn3dVjm9ncACA05CMr1eyNNaY94SjcMeKAppr/VhIvS6j/VFuGPxMca1supq6HTikj1FbJulpyDtR4fjsMA0xQs9Y3NEEONfFx+uDqwdDkt+HatI6d7DT0gFMoAvgMKE0AphJqLqFj4p+KH40P58y4AYZ4JjW39RqZD1SfNHBCxEFzhb7jQKHfWJrh/YTfDilDHEyhZm2f7xPqT7qCjWjSlDDeTxqypmO4jI1Yk4zJYWAFOYfEU1dSB/eP3yDTqzPK0WgjrgbAtqjtptPzV4/vgz4yOh+NBSXZm1LdPvrnbw7E/BwCkDJFtEqSYukr0BhU X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(7416014)(1800799024)(376014)(6133799003)(56012099006)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?VDtEmwEQwwOccReTMHaksJahhtXpDKIC3DaHBnaPMKibgFSNc3rn9gkJompZ?= =?us-ascii?Q?KrkmxKs+BCpJi7xw+3qkadoSE7llLEP7trGL8tJTdAdrYVXoJeQDZVYPTl1P?= =?us-ascii?Q?uiaXpSPBLSOg7bNm01G/mFZ9dqv6JBd2u7FsPl9kdG77VZn7AFwv2OK9QLtj?= =?us-ascii?Q?b6IF310KrTFeBn8OWmVrqCcG/hSa6IxG0z+iRb61G8vWEh6lJ9jDr8ZinBsS?= =?us-ascii?Q?sO9QJTIGclqClAYZuOSwKQK+jzxtN9Q2JtvbxjtkBswFMPr6vUswAw+riR9f?= =?us-ascii?Q?BXUkxr4Qo36ofm0nDKYrtNlewnj9MbFrVQOaKXcal9hvcMK8W588StOCMkix?= =?us-ascii?Q?rBLFo32BrJoRseo+uatlhH0tSjoEZT3etCeie/6LiswbfsUD6FaCl0r592v+?= =?us-ascii?Q?7lt02SO33IidVA4lyRTnIkT2apeZ3caakIHLIUVo6I6ezkFE9GSP8jJKV8JR?= =?us-ascii?Q?dVolNJSB6RKGC9RUlWyAg8L9LMRG8yfhWsQORLdnX2fgDPk/TM2SfBwHTwk7?= =?us-ascii?Q?F0fGOjzHDqHbGyQBfQKVgWKLs/4sMqId95YeWWVhMioshJXT2aWoz86jY7Y3?= =?us-ascii?Q?Vp2D0mL/P6SwXabnsTiLRNIoYcagmNcVMW8WDyekgAcFMBxyW8NJpP6+ebqP?= =?us-ascii?Q?R+0SFkPLcd6+tfVr96unufVmDirerPW+OPTuT2jdGNNtDY9XshDKhsL5we2R?= =?us-ascii?Q?13Ut0nGRkAOBL0OMZ6dEgmghP6JP5+gAgThdWxYmTN4tzHBCGrwPAys1YjnE?= =?us-ascii?Q?ZJDzu23Zw916kqm3OmtoUT1B9ZZP/e8UQvZ9rbwiey9gR7JLI4ixP6EIi25t?= =?us-ascii?Q?6oOE0wTUxY5/LGDTziRoIVbNO3o1Bvr+2u7G8s+QdMwjwcUEWjJIJB8LjI7w?= =?us-ascii?Q?KkE94WiPwwByrh0ANn7JfK3Oe11O8rAfPTeLG+CCF7lgtwAgfkofWf5ys+vs?= =?us-ascii?Q?6iMq0V310kPpLToaadi/3sRgIco8MoQ8OoH42JQQOiZulGXiAYsi4jEdyQX0?= =?us-ascii?Q?guoE+RPaqedP7VfJu6XUtdJbQCakS9N0x7XkrI0Zn8okaOsd7I1q/fd+Zr1U?= =?us-ascii?Q?DlbbPoVp1V7coXF+0DLm/LjbEsawiqx4jNGZXCtCrj+MO8TWaks/SPQdD6ap?= =?us-ascii?Q?y5MKAvL0KzoFJ9TTTDvU9Qd5iTeH9DVCBMt7ICIiVyhULdoN0X4/b1VPMXyZ?= =?us-ascii?Q?4yknXlByy8CzK2/v/90fqNdRSCU0EpLJDcdWMCVcIN9zJFKEHtZUmFIMMreY?= =?us-ascii?Q?yPS/WDFHhmoffB5EFg7oPnFGOsIO+HxI6CeR46njYq40uH4XQj+N+MOqN/Ku?= =?us-ascii?Q?cXGeWQ4JlKhZnvNF6zC2u9LX83xPQEPY6X3KnCYotu+p/WGsy9Sym8w6yiNa?= =?us-ascii?Q?xTTBALfH7Vk10ZKCiQmQaw/aJN172fiq4p/6F6Ejud7d6AbTS1rsS9DdwTJQ?= =?us-ascii?Q?IimQk5Vh5jNST2Ud27wqew0k4Je+jwnHeXCrVI6TwuNE+tiumuhb3yL1u5Q/?= =?us-ascii?Q?QB4Va8Ft7gbGdheIx+hN9mjkF9/W0CeWQpoZUi23RNA/aU0u2XAU7WTvdR0s?= =?us-ascii?Q?yw8QRhbnH2BqXv2GYDL5avqrNK5eqX1ky/0gRDLwwPTe3a+CLJK+ShnK84Xa?= =?us-ascii?Q?X0xMYa4F/IHaf69VHLZAE19HbAkS9jIjj+TV7/rJ4Ixa+itqrkb2Ss/U9jDE?= =?us-ascii?Q?yGGbOq7pehC/OocPdM94PIkFfojRdwVWcmLykD71kOmH6Fe5oko44206IwEt?= =?us-ascii?Q?JOKgyRapKrALf9vCqree47YUcNdxjmU=3D?= X-Exchange-RoutingPolicyChecked: lm/BAajwFrMGqUe28XsxnevGVQdqalLzI8MwYOz+C+7Qr0XjNeLFk9eExiNFHEfeNcLGlKitsHWLe9UPUxnblor+FSpQcF57vuK11G6pfqQ8Vod7aIc7hXwAK2xervlB6dGI2tgFDvNCph8/5mR454tsGXhRELkS2LoND6VOFt1lJpWedEQLzUP3u64FhcllPf/vPlUUtJMX7BhaXiQejpK2RchMi5B5ovULO+PQiE5G7ar83JJEQNTGxMYK4776rZ4UyMAiuZcaRBZTuTm9swRsYTKXbEKr36SKgkgdky6VrXgxF3Qpi2WUt2lftKDSJrX5OjoWGbpr3i3mhVdv1Q== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4fbb60b6-b7eb-4828-1934-08dec2de7eab X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:19.8735 (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: au+3l1Go483W5kwgitC9u+mXmKT4N1RI/L2Dc+SgGaZbF+5aWSrC/WlMyBv/W6A+DLwVMK3jqzHPXI/iwUSvUJ+/0E8BIyjvDRdhn+MceSk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR02MB10630 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfX/ata+H3ezmN1 tBznngWMdgonZQ29n7LTttqsWj7nXkR3zaNJT8X7ux0pL+yHbM74V0crl+uZkQ6Ib096lppd4QN hsT5Fzua2L+/jVbKHZbzGBiLdigG57qCKNF1Hf2u3LgbprnVphjq0+ZDSHQep5GmLtCe3a6ScVR i9XqBgdvc98LX4gJhHMGc80aguNg9sSUylXJdcaWUqSAhUN8G3BVz7btyKQGlUMD1+VSFbLkGpg DjoSxHzWd/gQFYgtAzR1sFI83MQz7IRyIhZaXQzD4Wi70wkkhaOguZczUYhBu0ILezx8MCc/gDE JElhp50ZV6S821GKNchKmH1+CN85fghcSrY6wc5k+tuKeeLCg29lyMDUyqs9kfIXOhydV8ESrbT iBthHI03sDcbRFVFHTdFdKgpBC8CkiG/T5R3fm/1Yibd+i0JkjOE4ChlE39Xan19wSfgoylDPY1 Clxem97VvPhqXbW3eaA== X-Proofpoint-ORIG-GUID: lErz9HKEcAczflRpGWxrAOzMvU5OjqFu X-Authority-Analysis: v=2.4 cv=V6FNF+ni c=1 sm=1 tr=0 ts=6a228c33 cx=c_pps a=h3Jk+6XEKCuoUZR+ZnWw9Q==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=0LlEyIVc8U2lsR7dKhuH:22 a=64Cc0HZtAAAA:8 a=lWSKPyB6u50o3MQsOS0A:9 X-Proofpoint-GUID: lErz9HKEcAczflRpGWxrAOzMvU5OjqFu X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.155.12; envelope-from=khushit.shah@nutanix.com; helo=mx0b-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649222696154100 Content-Type: text/plain; charset="utf-8" As CCSIDR banks are not backed by standard idregs[], add special handling for them to hook up supported values and blockers for them. KVM rejects CCSIDR[] linesize if it is < host CTR_EL0.*MinLineSize. Report such case in qmp's cpu-definition blockers using arm_ccsidr_get_blockers. Signed-off-by: Khushit Shah --- target/arm/arm-cpu-models.c | 6 +- target/arm/arm-cpu-props.c | 154 ++++++++++++++++++++++++++++++++---- target/arm/arm-cpu-props.h | 5 ++ 3 files changed, 147 insertions(+), 18 deletions(-) diff --git a/target/arm/arm-cpu-models.c b/target/arm/arm-cpu-models.c index 5f59650c81..d38293cfb2 100644 --- a/target/arm/arm-cpu-models.c +++ b/target/arm/arm-cpu-models.c @@ -568,11 +568,14 @@ void arm_cpu_class_check_missing_features(ARMCPUClass= *acc, strList **blockers) Error *err =3D NULL; Object *obj =3D object_new_with_class(OBJECT_CLASS(acc)); ARMCPU *cpu =3D ARM_CPU(obj); + const ARMISARegisters *host_isar; =20 if (!kvm_enabled() || !arm_find_model(acc->info->name)) { goto out; } =20 + host_isar =3D kvm_arm_get_host_isar(); + if (cpu_isar_feature(aa64_sve, cpu)) { arm_cpu_sve_finalize(cpu, &err); if (err) { @@ -592,7 +595,8 @@ void arm_cpu_class_check_missing_features(ARMCPUClass *= acc, strList **blockers) } } =20 - arm_idregs_get_blockers(cpu, kvm_arm_get_host_isar(), blockers); + arm_idregs_get_blockers(cpu, host_isar, blockers); + arm_ccsidr_get_blockers(cpu, host_isar, blockers); out: object_unref(obj); } diff --git a/target/arm/arm-cpu-props.c b/target/arm/arm-cpu-props.c index 44f21de1c5..cb1c44ea1f 100644 --- a/target/arm/arm-cpu-props.c +++ b/target/arm/arm-cpu-props.c @@ -54,12 +54,13 @@ .get =3D _get, = \ .set =3D _set } =20 -#define ARM_CUSTOM_PROP(prop_name, _custom_type, _get, _set, _reset) \ +#define ARM_CUSTOM_PROP(prop_name, _custom_type, _get, _set, _reset, _gsv)= \ { .name =3D (prop_name), .type =3D ARM_PROP_CUSTOM, = \ .u.custom_type =3D (_custom_type), = \ .get =3D _get, = \ .set =3D _set, = \ - .reset =3D _reset } + .reset =3D _reset, = \ + .get_supported_values =3D _gsv } =20 static void arm_composite_set_internal(ARMCPU *cpu, const ArmCpuPropDesc *p, @@ -123,6 +124,44 @@ static void ccsidr_sets_set(ARMCPU *cpu, int level, bo= ol is_icache, *r =3D FIELD_DP64(*r, CCSIDR_EL1, NUMSETS, val - 1); } =20 +static uint64_t ccsidr_sets_get_max(const ARMISARegisters *host_isar) +{ + return 1ULL << R_CCSIDR_EL1_NUMSETS_LENGTH; +} + +static uint64_t ccsidr_associativity_get_max(const ARMISARegisters *host_i= sar) +{ + return 1ULL << R_CCSIDR_EL1_ASSOCIATIVITY_LENGTH; +} + +static uint64_t ccsidr_linesize_get_max(const ARMISARegisters *host_isar) +{ + return 1ULL << (((1U << R_CCSIDR_EL1_LINESIZE_LENGTH) - 1) + 4); /* 20= 48 bytes */ +} + +static uint64_t ccsidr_linesize_get_min(const ARMISARegisters *host_isar) +{ + uint64_t host_IMinLine; + uint64_t host_DMinLine; + + arm_idreg_field_read(host_isar, ARM_FIELD_CTR_EL0_IMINLINE, &host_IMin= Line); + arm_idreg_field_read(host_isar, ARM_FIELD_CTR_EL0_DMINLINE, &host_DMin= Line); + + /* + * ccsidr_linesize_{get,set} are in unit of bytes. + * CTR_EL0.{IminLine,DminLine} is represented as log2(bytes / 4) + */ + return 1ULL << (MAX(host_IMinLine, host_DMinLine) + 2); +} + +static void ccsidr_sets_get_supported_values(const ArmCpuPropDesc *prop, + const ARMISARegisters *host_i= sar, + QList *out) +{ + qlist_append_str(out, g_strdup_printf("0-%" PRIu64, + ccsidr_sets_get_ma= x(host_isar))); +} + static void ccsidr_associativity_get(ARMCPU *cpu, int level, bool is_icach= e, Visitor *v, const char *name, Error **errp) @@ -150,6 +189,14 @@ static void ccsidr_associativity_set(ARMCPU *cpu, int = level, bool is_icache, *r =3D FIELD_DP64(*r, CCSIDR_EL1, ASSOCIATIVITY, val - 1); } =20 +static void ccsidr_associativity_get_supported_values(const ArmCpuPropDesc= *prop, + const ARMISARegister= s *host_isar, + QList *out) +{ + qlist_append_str(out, g_strdup_printf("0-%" PRIu64, + ccsidr_associativity_get_max(host_isar))); +} + static void ccsidr_linesize_get(ARMCPU *cpu, int level, bool is_icache, Visitor *v, const char *name, Error **errp) { @@ -175,6 +222,15 @@ static void ccsidr_linesize_set(ARMCPU *cpu, int level= , bool is_icache, *r =3D FIELD_DP64(*r, CCSIDR_EL1, LINESIZE, enc); } =20 +static void ccsidr_linesize_get_supported_values(const ArmCpuPropDesc *pro= p, + const ARMISARegisters *h= ost_isar, + QList *out) +{ + qlist_append_str(out, g_strdup_printf("%" PRIu64 "-%" PRIu64, + ccsidr_linesize_get_min(host_isar), + ccsidr_linesize_get_max(host_isar)= )); +} + static void ccsidr_sets_reset(ARMCPU *cpu, int level, bool is_icache) { uint64_t *r =3D &cpu->ccsidr[CACHE_BANK(level, is_icache)]; @@ -206,7 +262,14 @@ static void ccsidr_linesize_reset(ARMCPU *cpu, int lev= el, bool is_icache) static void cache_##NAME##_##FIELD##_reset(ARMCPU *cpu, = \ const char *name, = \ Error **errp) = \ - { ccsidr_##FIELD##_reset(cpu, (LVL), (IC)); } + { ccsidr_##FIELD##_reset(cpu, (LVL), (IC)); } = \ + static void cache_##NAME##_##FIELD##_get_supported_values( = \ + const ArmCpuPropDesc *prop, = \ + const ARMISARegisters *host_isar, = \ + QList *out) = \ + { = \ + ccsidr_##FIELD##_get_supported_values(prop, host_isar, out); = \ + } =20 #define CACHE_PROP_FNS_ALL(NAME, LVL, IC) \ CACHE_PROP_FNS(NAME, LVL, IC, sets) \ @@ -439,53 +502,65 @@ const ArmCpuPropDesc arm_cpu_props[] =3D { ARM_CUSTOM_PROP("cache_lvl1_icache_sets", "number", cache_lvl1_icache_sets_get, cache_lvl1_icache_sets_set, - cache_lvl1_icache_sets_reset), + cache_lvl1_icache_sets_reset, + cache_lvl1_icache_sets_get_supported_values), ARM_CUSTOM_PROP("cache_lvl1_dcache_sets", "number", cache_lvl1_dcache_sets_get, cache_lvl1_dcache_sets_set, - cache_lvl1_dcache_sets_reset), + cache_lvl1_dcache_sets_reset, + cache_lvl1_dcache_sets_get_supported_values), ARM_CUSTOM_PROP("cache_lvl2_sets", "number", cache_lvl2_sets_get, cache_lvl2_sets_set, - cache_lvl2_sets_reset), + cache_lvl2_sets_reset, + cache_lvl2_sets_get_supported_values), ARM_CUSTOM_PROP("cache_lvl3_sets", "number", cache_lvl3_sets_get, cache_lvl3_sets_set, - cache_lvl3_sets_reset), + cache_lvl3_sets_reset, + cache_lvl3_sets_get_supported_values), =20 ARM_CUSTOM_PROP("cache_lvl1_icache_associativity", "number", cache_lvl1_icache_associativity_get, cache_lvl1_icache_associativity_set, - cache_lvl1_icache_associativity_reset), + cache_lvl1_icache_associativity_reset, + cache_lvl1_icache_associativity_get_supported_values), ARM_CUSTOM_PROP("cache_lvl1_dcache_associativity", "number", cache_lvl1_dcache_associativity_get, cache_lvl1_dcache_associativity_set, - cache_lvl1_dcache_associativity_reset), + cache_lvl1_dcache_associativity_reset, + cache_lvl1_dcache_associativity_get_supported_values), ARM_CUSTOM_PROP("cache_lvl2_associativity", "number", cache_lvl2_associativity_get, cache_lvl2_associativity_set, - cache_lvl2_associativity_reset), + cache_lvl2_associativity_reset, + cache_lvl2_associativity_get_supported_values), ARM_CUSTOM_PROP("cache_lvl3_associativity", "number", cache_lvl3_associativity_get, cache_lvl3_associativity_set, - cache_lvl3_associativity_reset), + cache_lvl3_associativity_reset, + cache_lvl3_associativity_get_supported_values), =20 ARM_CUSTOM_PROP("cache_lvl1_icache_linesize", "number", cache_lvl1_icache_linesize_get, cache_lvl1_icache_linesize_set, - cache_lvl1_icache_linesize_reset), + cache_lvl1_icache_linesize_reset, + cache_lvl1_icache_linesize_get_supported_values), ARM_CUSTOM_PROP("cache_lvl1_dcache_linesize", "number", cache_lvl1_dcache_linesize_get, cache_lvl1_dcache_linesize_set, - cache_lvl1_dcache_linesize_reset), + cache_lvl1_dcache_linesize_reset, + cache_lvl1_dcache_linesize_get_supported_values), ARM_CUSTOM_PROP("cache_lvl2_linesize", "number", cache_lvl2_linesize_get, cache_lvl2_linesize_set, - cache_lvl2_linesize_reset), + cache_lvl2_linesize_reset, + cache_lvl2_linesize_get_supported_values), ARM_CUSTOM_PROP("cache_lvl3_linesize", "number", cache_lvl3_linesize_get, cache_lvl3_linesize_set, - cache_lvl3_linesize_reset), + cache_lvl3_linesize_reset, + cache_lvl3_linesize_get_supported_values), =20 /* Fractional properties */ ARM_FRAC_PROP("feat_CSV2", ID_AA64PFR0, CSV2, ID_AA64PFR1, CSV2_FRAC, = csv2_frac_vals), @@ -1011,6 +1086,10 @@ void arm_prop_append_supported_values(const ArmCpuPr= opDesc *prop, const ARMISARegisters *host_isar, QList *out) { + if (prop->get_supported_values) { + prop->get_supported_values(prop, host_isar, out); + return; + } switch (prop->type) { case ARM_PROP_STRING: arm_field_foreach_supported_arch_val(prop->u.field, host_isar, @@ -1066,11 +1145,11 @@ void arm_prop_append_supported_values(const ArmCpuP= ropDesc *prop, break; } case ARM_PROP_COMPOSITE: { - /* not supported for composites */ + /* no defaults for composites */ break; } case ARM_PROP_CUSTOM: { - /* not supported for custom props */ + /* no defaults for custom props */ break; } default: @@ -1090,3 +1169,44 @@ const ArmCpuPropDesc *arm_prop_get_composite_of(cons= t ArmCpuPropDesc *prop) =20 return NULL; } + +void arm_ccsidr_get_blockers(ARMCPU *cpu, + const ARMISARegisters *host_isar, + strList **blockers) +{ + uint64_t max_linesize =3D ccsidr_linesize_get_max(host_isar); + uint64_t min_linesize =3D ccsidr_linesize_get_min(host_isar); + + if (!cpu->cache_exposed) { + return; + } + + for (int level =3D 0; level < 3; level++) { + for (int is_icache =3D 0; is_icache < 2; is_icache++) { + uint64_t level_linesize; + char *linesize_props; + uint64_t ccsidr =3D cpu->ccsidr[CACHE_BANK(level, is_icache)]; + + if (ccsidr =3D=3D 0) { + continue; + } + + if (level =3D=3D 0) { + linesize_props =3D g_strdup_printf("cache_lvl%d_%s_linesiz= e", + level + 1, is_icache ? "icache" : "dcache"); + } else { + linesize_props =3D g_strdup_printf("cache_lvl%d_linesize", + level + 1); + } + + level_linesize =3D object_property_get_int(OBJECT(cpu), + linesize_props, NULL); + + if (level_linesize > max_linesize || level_linesize < min_line= size) { + QAPI_LIST_PREPEND(*blockers, linesize_props); + } else { + g_free(linesize_props); + } + } + } +} diff --git a/target/arm/arm-cpu-props.h b/target/arm/arm-cpu-props.h index 55333de858..b32973349c 100644 --- a/target/arm/arm-cpu-props.h +++ b/target/arm/arm-cpu-props.h @@ -47,6 +47,9 @@ typedef struct ArmCpuPropDesc { void (*get)(ARMCPU *cpu, Visitor *v, const char *name, Error **errp); void (*set)(ARMCPU *cpu, Visitor *v, const char *name, Error **errp); void (*reset)(ARMCPU *cpu, const char *name, Error **errp); + void (*get_supported_values)(const struct ArmCpuPropDesc *prop, + const ARMISARegisters *host_isar, + QList *out); } ArmCpuPropDesc; =20 const ArmCpuPropDesc *get_arm_cpu_props(void); @@ -61,5 +64,7 @@ const ArmCpuPropDesc *arm_prop_for_field(ArmFieldIdx fiel= d); void arm_prop_append_supported_values(const ArmCpuPropDesc *prop, const ARMISARegisters *host_isar, QList *out); +void arm_ccsidr_get_blockers(ARMCPU *cpu, const ARMISARegisters *host_isar, + strList **blockers); =20 #endif --=20 2.52.0 From nobody Sun Jun 7 22:20:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.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=1780649269; cv=pass; d=zohomail.com; s=zohoarc; b=DjctpqTzQd3tqAwEMNkl7m19u2AA+tSJbEnqVuJw7D4+gPmcAVc7sYqlYAtmjHDga7zlTDFPo2bohVYcMMm+n5V6tqQ7mKpLHhgwmaRA3jXmg4Xtqnq+ze9akjd8ivFP3hebx2j3lHSGMIBZ2JhtkPbNIjwmDkj8zMwcuMC8gaA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780649269; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=IJvglxOZOgMA2qda+fgowy9ILLCZG8PXnVHeDhPbgm4=; b=Vx91kKm1BLpCk0fV81kuQx1QE/ZjAP8b8iVGrXsVw6wQpBaQbBmm0l4/VE5lVi30uEQKuSuuRPPzvyvUuV3vocCwwpyxtKNFNqlf5Mc6ZTwGcsgLaEtNHZ1BBKrjc0jRp+CjSX8Gpg02PDOwMwTy1YO5PrDKPYVOfVtI7mJ9458= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780649269120384.0344759010668; Fri, 5 Jun 2026 01:47:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVQ9y-0006GZ-M1; Fri, 05 Jun 2026 04:44:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9x-0006Fr-56; Fri, 05 Jun 2026 04:44:09 -0400 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wVQ9u-0002de-CK; Fri, 05 Jun 2026 04:44:08 -0400 Received: from pps.filterd (m0127844.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6556MRUT1185382; Fri, 5 Jun 2026 01:43:32 -0700 Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11020134.outbound.protection.outlook.com [52.101.201.134]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 4ejuupcm1f-12 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 05 Jun 2026 01:43:31 -0700 (PDT) Received: from PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) by MN6PR02MB10630.namprd02.prod.outlook.com (2603:10b6:208:4f4::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 08:43:23 +0000 Received: from PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef]) by PH0PR02MB7557.namprd02.prod.outlook.com ([fe80::4917:bc05:4373:6bef%5]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 08:43:23 +0000 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=IJvglxOZOgMA2qda+fgowy9ILLCZG8PXnVHeDhPbg m4=; b=GQ6IriM9Q8naasoWvury7V3L3GaP2/i+6+PDreULQD6KPe3YSSBYrxqzE ATEOaHbdpOKZ+YkqkeKj/u+CAV7Z8snvdZNvVPIBLhr2d2KrTtmNSZDf+BO0fg7Y ibl7gTonq0tJBTt9pkxXu1dv0o1uqGqrBrFDtKEmX6JDmPnoXqnXpmcS4DcWSmhF VcYFApGwnLbPa3Vao6YnujLEBIrLMqNEfotV57yptMTim8TPC0elfd8XPrK/Bpsg ABkgNd9L4135CecU8MDgKDT2vWsZSRRNgzUYLSt92G8/7WPn93/QyNZx7fsozM4V pJy2Hbkp4ji2OguvAlnhqzLHSVvOw== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=i8D3JfiuD3H+5oWQXY7TVwvnHeZFIILKyxPOUApWNtiwkUrnSwr13C8LziI9ID0Fvvec34foFtbCrjIqQYC0Zx584GuRnfIrrodvaTj5LhBTiOzbkLKwDeB6WWHXKHKrV2PHEuv81v+MTx/hkKJ21ytOr7Ae4rRB/XmBZEmy4sfeX7AOjwx0g+Sf99wpqxz/tVbn3j8KMRt1uEerNfd0JRPuRLcssVJXIcgXw7590/hRmeWdZ2b2wv20GGq06MJnKkQe+OEYmCtiKHnQrGpTJt34mcCM9p/45olbo9jB7BvJnlQlTiN650yhHwY9+khr9+9i7Zz17d26ZtZxEy/pnw== 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=IJvglxOZOgMA2qda+fgowy9ILLCZG8PXnVHeDhPbgm4=; b=DZYl3pyU6FmIgnFjCW0azXieEKPXZJQGWdJkd1+gOwev3fL72uWurg8HLxfy2aKkc7475PgmZaEDfrGrsvwWWrE0m+09011UE0HmiZHxBZw9D6W5swMfgPfhCT5UZVY0Zs5bMp0rjYsbQ3gdmTziD6fwFTtLXooBrOzLACr74TXisV3xgkFJdu4X6nui82mrpbg7SCpTLTyK0XAsoylW4IXBKs7HKcw23NP8P8erelQgPiBOri4QAuKy22cDGY951Ek47kU3owqYAGyxC542gFPkWlfhg8K7Y50ylhxT3MXCUTD4I72vUUgZsPwm3I/Bsm3BsFhBlICkgf0gB9Wc+w== 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=IJvglxOZOgMA2qda+fgowy9ILLCZG8PXnVHeDhPbgm4=; b=kx3Eem3Se7tCQMt4Awj9nwyTI+sUB3lhf/NDFkoZB+uhCnx1d6gmzQTJzvrkoeI5GBTWGHcE5Y277OZUT1I99WU1ub9j+N6rId/QPx5pdQFO90zB/Od3sXZ2cZOVi1WoFJsyAJzKj5aQWmtDddrzVOZqBY11/+c3ZU8gS6bVTAf+vQWcYm4unV7y3PD+2taqdYxQirVc+ZoN/BGvOCRiFnG2b9q72TylQFXgtG6uLNSysono5c/Xs4bAFIH+U9SB8jOvNT0OYoYfXO44XUcP7Gi93SKCAt5e566zKtQScgPD897S/VN6fOIl77McBn+gHtpUD/k72cVeDlH1yW8V5A== From: Khushit Shah To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, Eric Auger Cc: Cornelia Huck , Peter Maydell , Richard Henderson , Marc Zyngier , Oliver Upton , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Andrea Bolognani , Jiri Denemark , Gavin Shan , Shameer Kolothum , Sebastian Ott , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jinqian Yang , Shaju Abraham , Mark Cave-Ayland , Khushit Shah Subject: [RFC PATCH v2 29/29] target/arm/kvm: fix host model writeback when kernel supports EL2 Date: Fri, 5 Jun 2026 08:33:58 +0000 Message-ID: <20260605083358.1320563-30-khushit.shah@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260605083358.1320563-1-khushit.shah@nutanix.com> References: <20260605083358.1320563-1-khushit.shah@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0007.namprd17.prod.outlook.com (2603:10b6:510:324::18) To PH0PR02MB7557.namprd02.prod.outlook.com (2603:10b6:510:54::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7557:EE_|MN6PR02MB10630:EE_ X-MS-Office365-Filtering-Correlation-Id: 12848bdb-1218-4291-8c82-08dec2de7ee6 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|7416014|1800799024|376014|6133799003|3023799007|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 3o1nvhXxynvumt81CAgneyVKwl/8XkzFjGsJsPsfrFk1MpCutUgwOzKSRFD2kHNx9B+DPMnYbc0OAGcECkxsYOCcv7coKJHNYGKo6vUDnMN5YAZSWF9akaWfWGifJ/1hS9kqzys37V0Ri3l4tUAN6KdWqPM+DOLxfPOxrXwK0Xk/UPi9J72AS43LXwpPcOnNJmsw4zTZmc/9RhWD7tC7agfn1M+6+MeYuGzKIhsR3a/FPbXezlgrG1JfSy+yLtUQM+TtWbOJNNlyXGAcf6ngNLd/V3c6KssRIJpvSeMhL2od4712QufPZ8bz/6Eg82qT6Yw5fE9/CerkosyXD3Kz/ZoTQOBdUfDvxUlUew8fl8A1H5ko9fsDi1bE7B7mJ+e01QmlM5YPO1hjI5ltdOQHcqqXaNljsqY6mjabst9k2PBsMmwxX5CUQ6NZwIT1PkK4HEnvi9vRCTHU/uZQWk+jyeu6eCtFGc0ppi8ApBD9NKUDW8TKONQJv1iEhE4JsN57RXeVjfFxB7NaiVYgfFk1P4Q/MXSDJybxLJjtPufpmrqtAJ69AxCNs0os6C4fGaE9Y0WenZgofJ1ierYsh0lX7rkqivZ5KucouQP6MdGd3Hv3YvIe1mwTue5bY7uzlsu9MsOS1q4GD9L4ItHDpi5GyKiuFcOeqADTZdXcRcpo5/Wgdwg2bPMGaRgSQfwxVBRs X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR02MB7557.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(7416014)(1800799024)(376014)(6133799003)(3023799007)(56012099006)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?jFGrbi+ypHeSd7B2fxqOIy1l6b38BOUIBvADBBSmqFDVphlNdFceHqXOfvJB?= =?us-ascii?Q?LHpJKNulW2ncNExxnC1L7boliBrWcaqKSjFbhuuEoqIy5OCGtqSD0lLLsr7N?= =?us-ascii?Q?yW3H4QY8c5domVqRUj68+Pz9VVRqBjjxikb1PkG3aLp0+yVJegs13O/+rc4r?= =?us-ascii?Q?Hf4wY0mMhyaysFdyTfVHGu/zyqm4cRrgQN2X0pDW2StE0UFmTKxFlEAjw92p?= =?us-ascii?Q?dgCeZtUtrw1TSnJplbsGRxaXm04diIH6n/aA0nAsnaMy1CaXjWc1eO+pz9f+?= =?us-ascii?Q?Hbm4857k18nhoc8j6IIcvoDkHo+2rGsxOas/z6O/r6rrpqD44x9KcxVPyhaV?= =?us-ascii?Q?lKM3K0l/cyeRMFd4Yiz7H2hL+X0b/mf1iBJbC/7+Xnjat4eU4jJQOgFqW1Ea?= =?us-ascii?Q?uM6Q529jqGphE5K6EnIzgIJ4wqLAAoOt5zlzqERsia0iXjFi1iA7gg+tyMjT?= =?us-ascii?Q?zlVUmpf/yIOIddBR6Z/x+a0xpuaRz7Oy7Fr2izRyx/GGD7DIXVY5CcZTBAcP?= =?us-ascii?Q?SolkeJf6hP7ELmz5nYrt57whggTuBa4BqZ2mmwu6aOWpn4OWJJFIOaWn396b?= =?us-ascii?Q?nBALwfd36cpgE9Pcs6Ntx7LWtjE+08jzongQn9PALsUM6ghFXSC9P0sZ5xSq?= =?us-ascii?Q?YnjgTKaAH2vCv0Yj4GOyzLj6OKiqFvt/+IeLqvsxDIOdgx3cYRwEgmfgK0i/?= =?us-ascii?Q?2eYsNerATMwz0d25JHXB/3sbhkwzJCMV27QqkCxO8kfvFEUPzRi9Dkwc/1kE?= =?us-ascii?Q?k5lyY3/AcTETMSPtxpUoLtkV9TwTin9lV/gZmTBBjSNKKipE4Bu80OVFXZ3z?= =?us-ascii?Q?9Tcs2GRiQVeQjtPxRwLdAwViTCmIddcifkPFBkbfPsF3g2zc6FAW1xQ3hi5y?= =?us-ascii?Q?85PpX+0HZzxU/5UEArLAB4FyIC0Wahp6OeRUwiL6l5SOKwaRneJz0HrxOfr0?= =?us-ascii?Q?ovX3fIWXXM6s7CdMYMR3BUzuO9YGGyTqrX1cLuYbO2QOW1Xj4m1BFSyv7Efe?= =?us-ascii?Q?hSNHy7cudh6U4Yn7JPK8yXNOi1VPGBDGAHznF18A2j2u8jjo7hkWVGfkPqlt?= =?us-ascii?Q?DhtOq47C87VS9/FuJNMZVFMojq9Sc+ZfhuZAbVCvz9TX+s/Dqr57riYysQVG?= =?us-ascii?Q?jaSfHGc5whldkLAJR4iHaUH3A3gGUMrnRCnWivkJdlHkrmz/5Y4mUu1IVx33?= =?us-ascii?Q?3StOEq2EAPz/pYQ8fVx6Pnjl/6IVXOE0uUGHULpi3bM7+T4Y/oaqfUZ0iQyg?= =?us-ascii?Q?Y2VTUx3S5/S0JaueCb3VACb7PNrRVGpaSo+62SeLOjUQ7xif6ZmAAow9AUAD?= =?us-ascii?Q?eEVBahmUncKCNqkAo3PCXw4ex2viuqYdF+wImdRdBKiy+mZ+lXmWNxzJdChl?= =?us-ascii?Q?1GCKpbYtIWLppueCpyM5eWrUuWNCzGERXFQOJq9fs8YxqCrXmsTnCKti7XhK?= =?us-ascii?Q?dHFLjUv+vk2/p8HgvMkNAkmKWw6CADYevC6BIQU2L/V30eyqo1KLEVlNNCl0?= =?us-ascii?Q?/sk2ZFJqxYBeaaHZ0CQgf6dilfKpM6V1BZ5yOm/uIQjGFrpffurqAaBAL52J?= =?us-ascii?Q?kygcjiWmD7RGFZJ7Np6iou4g2Y/b5C/6ihTEKQIKeDYVcpc9DEXP0xKx2mK+?= =?us-ascii?Q?JtxS7SbhAf3pFAfyj01iYA1Uyst64isgFuM8HKVTTesbxFJUDMxuKiutjVts?= =?us-ascii?Q?6AI9+t059on9ems9m7dxz6WcKT/qwldo38ELHK7+qZavCkSNfBIywnJ8qa2S?= =?us-ascii?Q?YkzSWTe2rWNjPBKtIJcbBo3GIoocQHk=3D?= X-Exchange-RoutingPolicyChecked: poUt8sX97Kh8NlqvufWF/8Y9yZHr+1INB3bEweTIADuEAjJujx3I0xbfpsx/6zmiLHZjypOX+VNmA/dVgUiffy5Wvoq4RzRFRABzVEGzV1Xu0UV+I0afZSlAk3Jjy8e1Oqio25SJmUGDIy0FNRzqEe3Sr88u26224rehrDnmxTRrCotsOf2Bn9oU/bSwJ2DrB2NGcO5P260KAHZ7IzM+o+YVJcHMCv0P8sLlD8To/eOAe8Ayzv0QXOuz5cVbqkVLICEWIofeRxkBb9lKdGNLCaiAjwbWoq3xmbb2e4bcn0ymxR1A3b9q3Uu4kK99HhqNCN3WfbfqoiTlMeGd7U8PIQ== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 12848bdb-1218-4291-8c82-08dec2de7ee6 X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7557.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 08:43:20.2510 (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: lP9+32Yf2NXVqJwgHi8XetnVJew3e7WnYPJiJbfVg3k4AcysY7qecEXP2rqtNbtRIuQI+KHkjrARtijSN4CNYHqAFfT0FqA/DWPkTHX4CM4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR02MB10630 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA1MDA4MyBTYWx0ZWRfXzpndv/IbCbyA qn4aHpZfvP4yZfdlM50Ur+vbjAI2ss/9rffVA+IfSEv5g0Up1hip5iPI6KcZDjqAuYtWjDu5EIa o2JpciXT5SabZ77tSWp+z5p7eA8CdpXos7PDnq+CdGO9NLjyHFgItDILSz70nqsyuwaFndf4lYX Wz+PI647P+WCiAE2FUwrMDtCByKMu4ghFHso7zbiuOgzp9eXdP0/M5qm0XNHtO/UjcjFqbSd8lz pcAiYLx342tvZCFt1jA6wsD/uO4+PNEnlE9ZG4LWa2M6HF69UWmZ7vi1gCRF4QlKSL03wsEbWcp wkbUwW9GNxw4wcf2I+AFNyaaycI5J69IMFxTVa8yiASaUBfq6yQlTiRRK2sKA1a++TaXEuyHlIe 1MUqmUMhFkV7jgX+4SbnRLGzhdIrD+DKqzt1lRTBqozAQb469u860UtvU53xH068Ox+0SY4SDtG fHVSOcz01X4Xdm96u8A== X-Proofpoint-ORIG-GUID: zbliRuSpNeTQVal3zXwBZZ9KogKH7A0q X-Authority-Analysis: v=2.4 cv=V6FNF+ni c=1 sm=1 tr=0 ts=6a228c33 cx=c_pps a=h3Jk+6XEKCuoUZR+ZnWw9Q==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=FelO9ux0wxsA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=0LlEyIVc8U2lsR7dKhuH:22 a=64Cc0HZtAAAA:8 a=15h_muFj-VbmxBcijCsA:9 X-Proofpoint-GUID: zbliRuSpNeTQVal3zXwBZZ9KogKH7A0q X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-05_01,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.155.12; envelope-from=khushit.shah@nutanix.com; helo=mx0b-002c1b01.pphosted.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1780649270485158500 Content-Type: text/plain; charset="utf-8" kvm_arm_get_host_cpu_features() probes the host by spinning up a scratch vCPU and reading its ID registers. When the host kernel advertises nested virtualization, the scratch is created with KVM_ARM_VCPU_HAS_EL2, which makes the kernel run limit_nv_id_reg() on that vCPU and force several fields (e.g. ID_AA64MMFR4_EL1.NV_frac, parts of ID_AA64DFR0_EL1) to values that match KVM's nested-virt capabilities rather than the raw host. If the actual vCPU is later created without EL2 (e.g. -machine virt,virtualization=3Doff), the EL2-on values cached above no longer match what the kernel exposes for the real vCPU and ID-register writeback fails. Fix this by caching two host views, one probed with EL2 and one without, and selecting the appropriate view at every use site. For -cpu host (and -cpu max) without EL2 we additionally rebase cpu->isar.idregs[] from the EL2-on view it was initialized with onto the EL2-off view via kvm_arm_rebase_host_idregs(), so each field that the user has not explicitly touched picks up the value that the real vCPU will actually see. Corner case: the rebase compares the post-init field value against the EL2-on host value to decide whether the user set it. If the user directly or indirectly set field X=3Di and the EL2-on view also reports feat_X=3Di but the EL2-off view reports feat_X=3Dj, the rebase cannot distinguish "user asked for i" from "inherited i from host" and will overwrite with j. This only affects -cpu host/max without EL2 on NV enabled kernels where the user-requested value happens to match the EL2-on host view, so we avoid the complexity of user set values tracking and accept the loss here. Named models are not affected with the issue as they already start with default-zeroed view. Signed-off-by: Khushit Shah --- target/arm/arm-cpu-models.c | 10 +++- target/arm/arm-qmp-cmds.c | 2 +- target/arm/cpu64.c | 2 +- target/arm/kvm-stub.c | 4 +- target/arm/kvm.c | 98 ++++++++++++++++++++++++++++++------- target/arm/kvm_arm.h | 5 +- 6 files changed, 96 insertions(+), 25 deletions(-) diff --git a/target/arm/arm-cpu-models.c b/target/arm/arm-cpu-models.c index d38293cfb2..0fc30b72ed 100644 --- a/target/arm/arm-cpu-models.c +++ b/target/arm/arm-cpu-models.c @@ -548,7 +548,12 @@ static void arm_named_cpu_initfn(Object *obj) return; } =20 - kvm_arm_set_cpu_features_from_host(cpu); + /* + * Start with the host view without EL2. + * If nested virt is needed user must provide values for all the + * blockers. + */ + kvm_arm_set_cpu_features_from_host(cpu, false); if (!arm_feature(&cpu->env, ARM_FEATURE_AARCH64)) { return; } @@ -574,7 +579,8 @@ void arm_cpu_class_check_missing_features(ARMCPUClass *= acc, strList **blockers) goto out; } =20 - host_isar =3D kvm_arm_get_host_isar(); + /* Use the host view without EL2 to calculate blockers. */ + host_isar =3D kvm_arm_get_host_isar(false); =20 if (cpu_isar_feature(aa64_sve, cpu)) { arm_cpu_sve_finalize(cpu, &err); diff --git a/target/arm/arm-qmp-cmds.c b/target/arm/arm-qmp-cmds.c index e13dfeb357..844bc84720 100644 --- a/target/arm/arm-qmp-cmds.c +++ b/target/arm/arm-qmp-cmds.c @@ -92,7 +92,7 @@ CpuPropInfoList *qmp_query_arm_cpu_props_info(Error **err= p) =20 sv =3D qlist_new(); arm_prop_append_supported_values(pdesc, - kvm_arm_get_host_isar(), + kvm_arm_get_host_isar(false), sv); =20 prop_info->supported_values =3D QOBJECT(sv); diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c index 2fa5b4d9da..bad0b1f9f9 100644 --- a/target/arm/cpu64.c +++ b/target/arm/cpu64.c @@ -889,7 +889,7 @@ static void aarch64_host_initfn(Object *obj) =20 #if defined(CONFIG_KVM) kvm_arm_set_cpreg_mig_tolerances(cpu); - kvm_arm_set_cpu_features_from_host(cpu); + kvm_arm_set_cpu_features_from_host(cpu, true); aarch64_add_sve_properties(obj); arm_add_cpu_props(obj); #elif defined(CONFIG_HVF) diff --git a/target/arm/kvm-stub.c b/target/arm/kvm-stub.c index dd683beaaf..98f41818ba 100644 --- a/target/arm/kvm-stub.c +++ b/target/arm/kvm-stub.c @@ -45,7 +45,7 @@ bool kvm_arm_el2_supported(void) /* * These functions should never actually be called without KVM support. */ -void kvm_arm_set_cpu_features_from_host(ARMCPU *cpu) +void kvm_arm_set_cpu_features_from_host(ARMCPU *cpu, bool with_el2) { g_assert_not_reached(); } @@ -120,7 +120,7 @@ char *kvm_print_register_name(uint64_t regidx) g_assert_not_reached(); } =20 -const ARMISARegisters *kvm_arm_get_host_isar(void) +const ARMISARegisters *kvm_arm_get_host_isar(bool with_el2) { return NULL; } diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 984c7fd256..3dbc2b5f1b 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -65,7 +65,7 @@ typedef struct ARMHostCPUFeatures { const char *dtb_compatible; } ARMHostCPUFeatures; =20 -static ARMHostCPUFeatures arm_host_cpu_features; +static ARMHostCPUFeatures arm_host_cpu_features[2]; =20 #define DEF(NAME, OP0, OP1, CRN, CRM, OP2) [NAME##_IDX] =3D #NAME, const char * const sysreg_names[NUM_ID_IDX] =3D { @@ -349,7 +349,7 @@ static uint32_t kvm_arm_sve_get_vls(int fd) return vls[0] & MAKE_64BIT_MASK(0, ARM_MAX_VQ); } =20 -static void kvm_arm_get_host_cpu_features(ARMHostCPUFeatures *ahcf) +static void kvm_arm_get_host_cpu_features(ARMHostCPUFeatures *ahcf, bool w= ith_el2) { /* Identify the feature bits corresponding to the host CPU, and * fill out the ARMHostCPUClass fields accordingly. To do this @@ -389,7 +389,7 @@ static void kvm_arm_get_host_cpu_features(ARMHostCPUFea= tures *ahcf) * Ask for EL2 if supported. */ el2_supported =3D kvm_arm_el2_supported(); - if (el2_supported) { + if (el2_supported && with_el2) { init.features[0] |=3D 1 << KVM_ARM_VCPU_HAS_EL2; } =20 @@ -528,7 +528,7 @@ static void kvm_arm_get_host_cpu_features(ARMHostCPUFea= tures *ahcf) err |=3D get_host_cpu_reg(fd, ahcf, ID_AA64ZFR0_EL1_IDX); =20 /* Read the set of supported vector lengths. */ - arm_host_cpu_features.sve_vq_supported =3D kvm_arm_sve_get_vls= (fd); + ahcf->sve_vq_supported =3D kvm_arm_sve_get_vls(fd); } } /* @@ -536,7 +536,6 @@ static void kvm_arm_get_host_cpu_features(ARMHostCPUFea= tures *ahcf) * for all registers, hence ignore the errors. */ get_host_cpu_idregs_all(fd, ahcf); - { int wret =3D get_writable_id_regs(fdarray[1]); if (wret) { @@ -572,15 +571,15 @@ static void kvm_arm_get_host_cpu_features(ARMHostCPUF= eatures *ahcf) ahcf->features =3D features; } =20 -void kvm_arm_set_cpu_features_from_host(ARMCPU *cpu) +void kvm_arm_set_cpu_features_from_host(ARMCPU *cpu, bool with_el2) { CPUARMState *env =3D &cpu->env; =20 - if (!arm_host_cpu_features.dtb_compatible) { - kvm_arm_get_host_cpu_features(&arm_host_cpu_features); + if (!arm_host_cpu_features[with_el2].dtb_compatible) { + kvm_arm_get_host_cpu_features(&arm_host_cpu_features[with_el2], wi= th_el2); } =20 - cpu->kvm_target =3D arm_host_cpu_features.target; + cpu->kvm_target =3D arm_host_cpu_features[with_el2].target; =20 if (cpu->kvm_target =3D=3D QEMU_KVM_ARM_TARGET_NONE) { /* @@ -591,15 +590,18 @@ void kvm_arm_set_cpu_features_from_host(ARMCPU *cpu) return; } =20 - cpu->dtb_compatible =3D arm_host_cpu_features.dtb_compatible; - cpu->isar =3D arm_host_cpu_features.isar; - cpu->sve_vq.supported =3D arm_host_cpu_features.sve_vq_supported; - env->features =3D arm_host_cpu_features.features; + cpu->dtb_compatible =3D arm_host_cpu_features[with_el2].dtb_compatible; + cpu->isar =3D arm_host_cpu_features[with_el2].isar; + cpu->sve_vq.supported =3D arm_host_cpu_features[with_el2].sve_vq_suppo= rted; + env->features =3D arm_host_cpu_features[with_el2].features; } =20 -const ARMISARegisters *kvm_arm_get_host_isar(void) +const ARMISARegisters *kvm_arm_get_host_isar(bool with_el2) { - return &arm_host_cpu_features.isar; + if (!arm_host_cpu_features[with_el2].dtb_compatible) { + kvm_arm_get_host_cpu_features(&arm_host_cpu_features[with_el2], wi= th_el2); + } + return &arm_host_cpu_features[with_el2].isar; } =20 static bool kvm_no_adjvtime_get(Object *obj, Error **errp) @@ -2187,6 +2189,52 @@ bool kvm_arm_mte_supported(void) return kvm_check_extension(kvm_state, KVM_CAP_ARM_MTE); } =20 +/* + * Rebase cpu->isar.idregs[] on top of new_isar given the initial_isar. + * + * For fields in cpu->isar.idregs[] that are same as initial_isar, update + * the field with the new_isar values. + */ +static void kvm_arm_rebase_host_idregs(ARMCPU *cpu, + const ARMISARegisters *new_isar, + const ARMISARegisters *initial_isar) +{ + for (int i =3D 0; i < NUM_ID_IDX; i++) { + ArmIdReg *idreg =3D &arm_idregs[i]; + + for (int j =3D 0; j < idreg->fields_count; j++) { + ArmIdRegField *field =3D &idreg->fields[j]; + uint64_t idreg_val; + uint64_t initial_val; + uint64_t new_val; + + arm_idreg_field_read(&cpu->isar, field->idx, + &idreg_val); + arm_idreg_field_read(initial_isar, field->idx, + &initial_val); + arm_idreg_field_read(new_isar, field->idx, + &new_val); + + if (idreg_val =3D=3D initial_val && new_val !=3D idreg_val) { + /* The cpu->isar.idregs[]'s field val is same as + * intial_isar.idregs[]'s field val, which was used to + * initialise it. Hence, override it with the new_isar[] + * value. User might have explicitly asked for some value + * which matched the host value without EL2 in this case, + * that value is lost. As rebase is needed in very specific + * case, we avoid that complication. + */ + arm_idreg_field_write(cpu, field->idx, new_val, + &error_abort); + + warn_report("KVM ID %s.%s value changed from 0x%016" + PRIx64 " to 0x%016" PRIx64, + idreg->name, field->name, idreg_val, new_val); + } + } + } +} + QEMU_BUILD_BUG_ON(KVM_ARM64_SVE_VQ_MIN !=3D 1); =20 static int kvm_arm_sve_set_vls(ARMCPU *cpu) @@ -2307,8 +2355,24 @@ int kvm_arch_init_vcpu(CPUState *cs) return ret; } =20 - /* validate the cpu->isar.idregs[] against the host's isar.idregs[]*/ - if (!arm_idregs_validate_safe_rule(cpu, &arm_host_cpu_features.isar, &= err)) { + /* For -cpu host/max, rebase the idregs[] on top of cpregs[] */ + if ((object_dynamic_cast(OBJECT(cpu), TYPE_ARM_HOST_CPU) + || object_dynamic_cast(OBJECT(cpu), TYPE_ARM_MAX_CPU)) + && !cpu->has_el2 + && kvm_arm_el2_supported()) { + /* scratch vCPU is created with EL2-enabled for -cpu host */ + kvm_arm_rebase_host_idregs(cpu, + kvm_arm_get_host_isar(false), + kvm_arm_get_host_isar(true)); + } + + /* + * validate the cpu->isar.idregs[] against the ahcf->isar.idregs[], + * select ahcf based on the cpu->has_el2 + */ + if (!arm_idregs_validate_safe_rule(cpu, + kvm_arm_get_host_isar(cpu->has_el2), + &err)) { error_report_err(err); return -EINVAL; } diff --git a/target/arm/kvm_arm.h b/target/arm/kvm_arm.h index 750dbe1ef4..538f87e69e 100644 --- a/target/arm/kvm_arm.h +++ b/target/arm/kvm_arm.h @@ -129,11 +129,12 @@ void kvm_arm_destroy_scratch_host_vcpu(int *fdarray); /** * kvm_arm_set_cpu_features_from_host: * @cpu: ARMCPU to set the features for + * @with_el2: probe the host with the EL2-enabled scratch vCPU view * * Set up the ARMCPU struct fields up to match the information probed * from the host CPU. */ -void kvm_arm_set_cpu_features_from_host(ARMCPU *cpu); +void kvm_arm_set_cpu_features_from_host(ARMCPU *cpu, bool with_el2); =20 /** * kvm_arm_add_vcpu_properties: @@ -231,7 +232,7 @@ void kvm_arm_enable_mte(Object *cpuobj, Error **errp); =20 void arm_cpu_kvm_set_irq(void *arm_cpu, int irq, int level); =20 -const ARMISARegisters *kvm_arm_get_host_isar(void); +const ARMISARegisters *kvm_arm_get_host_isar(bool with_el2); =20 void arm_gic_cap_kvm_probe(GICCapability *v2, GICCapability *v3); =20 --=20 2.52.0