get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/2237945/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2237945,
    "url": "http://patchwork.ozlabs.org/api/patches/2237945/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260513163356.3033159-12-shaju.abraham@nutanix.com/",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api",
        "name": "QEMU Development",
        "link_name": "qemu-devel",
        "list_id": "qemu-devel.nongnu.org",
        "list_email": "qemu-devel@nongnu.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260513163356.3033159-12-shaju.abraham@nutanix.com>",
    "list_archive_url": null,
    "date": "2026-05-13T16:33:54",
    "name": "[RFC,v1,11/13] target/arm: named_cpu_model: introduce named CPU models for selected CPUs",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "221b489b02db8b58965cd2861ae55c136974695b",
    "submitter": {
        "id": 77003,
        "url": "http://patchwork.ozlabs.org/api/people/77003/?format=api",
        "name": "Shaju Abraham",
        "email": "shaju.abraham@nutanix.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260513163356.3033159-12-shaju.abraham@nutanix.com/mbox/",
    "series": [
        {
            "id": 504187,
            "url": "http://patchwork.ozlabs.org/api/series/504187/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=504187",
            "date": "2026-05-13T16:33:48",
            "name": "named CPU models for ARM64 on KVM",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/504187/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2237945/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2237945/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256\n header.s=proofpoint20171006 header.b=OARFURDk;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256\n header.s=selector1 header.b=y98vnMZj;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"
        ],
        "Received": [
            "from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4gFzcG1Bygz1y5L\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 14 May 2026 02:36:14 +1000 (AEST)",
            "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wNCYo-0004Nf-8P; Wed, 13 May 2026 12:35:50 -0400",
            "from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <shaju.abraham@nutanix.com>)\n id 1wNCXt-0003Mj-3r; Wed, 13 May 2026 12:34:53 -0400",
            "from mx0a-002c1b01.pphosted.com ([148.163.151.68])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <shaju.abraham@nutanix.com>)\n id 1wNCXo-0000mn-WB; Wed, 13 May 2026 12:34:52 -0400",
            "from pps.filterd (m0127838.ppops.net [127.0.0.1])\n by mx0a-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 64DGKXdo1855187; Wed, 13 May 2026 09:34:30 -0700",
            "from sn4pr0501cu005.outbound.protection.outlook.com\n (mail-southcentralusazon11021116.outbound.protection.outlook.com\n [40.93.194.116])\n by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4e3nvke98r-1\n (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT);\n Wed, 13 May 2026 09:34:30 -0700 (PDT)",
            "from PH7PR02MB10160.namprd02.prod.outlook.com\n (2603:10b6:510:2e7::19) by SJ0PR02MB8813.namprd02.prod.outlook.com\n (2603:10b6:a03:3d6::9) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9913.11; Wed, 13 May\n 2026 16:34:28 +0000",
            "from PH7PR02MB10160.namprd02.prod.outlook.com\n ([fe80::4ed7:5c74:48e0:ff23]) by PH7PR02MB10160.namprd02.prod.outlook.com\n ([fe80::4ed7:5c74:48e0:ff23%7]) with mapi id 15.20.9891.021; Wed, 13 May 2026\n 16:34:28 +0000"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h=\n cc:content-transfer-encoding:content-type:date:from:in-reply-to\n :message-id:mime-version:references:subject:to; s=\n proofpoint20171006; bh=90/K6T/F6An7yz81jap0t445Ld1IqL33IR5l1tThA\n fY=; b=OARFURDkgFUq8MAGIBDLp2wqnh6wwKacbnJDDTw0UR+GgTV+bJ0pYbgqA\n peW4DQZ02R0Y5OwbBnP68To85zD4bgqWZTtH/tc3aCPS9dIENT+FkTkDGWpEML8X\n w+gjVdmDjL0aZMdolW0fYFdg5wOhqAnz5HzM2BYwD8/69gQFzrZVJoICpHKo/Z2A\n 0+xDP6NGMNdLXZGNLtcLiinOV5zfBqHKrWnbjbcXT0IFzfhYhT2ic9gxd4Ryluel\n KcV0hgxvOd0Ud09NlzOhQk8+2VN7mp3IvJz+B+oaMWljFQXGUbBJFl0mmzcjB328\n mxfFSwbY+KnsY42hUto1k9Io2hEBg==",
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com;\n s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=90/K6T/F6An7yz81jap0t445Ld1IqL33IR5l1tThAfY=;\n b=y98vnMZjepndOw/y+cqjWYmqMnBGlTkhmdy+qpmsPLwS8CoiF+HTQGTVQvEi+r56ODgm5b/kO16ORAjcpgqllbSOFjUwffQDo4Z7YdwEqX3kHb6seyLebT1pVNxYteBFaNCk8EnVQhp8G5JHOPnwolImzHI4tBi+yNMXqqd1qqwHQJc9nAjanC5/CvxSaQ+29WVN+4cogwI3hL5o2l5jop0O0FIBl6YfBI/TOoHOX67K5iQCDAxoFV/pIf9l5nVH5I6ZLLcyeRYK24KpKyewYSMF8r5SKkKu7U/K7voJh28VzJOGijW1lAfooFvqXCzJMojPsKf+TmogFlXVnA4bnQ=="
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=NSm5RQDdLECsJiKQ/zBt45QWwsFWvlJueCfug/prdrh2DGKIlDkXwon34YynbP4MP+mo5eG4sR47OAyjt9B75DCCqIXd4R5aC/V10KhlnQe/6wWqQaG2NVzWQlCIADD769P/UJ0rJMk18leCqEuiBTaiOrmupcCsmHf9YTbj9U+FJRcwDRx3k3xBdl3GCakUPCVM3Ya0REeM8GLa+BvcLIiJcNWd6bWyJ0yf+qctQtKviBfWDIIJRtylrBLGvU+C+oqdxx4lr+KNaoYQlk1enoBPmPxILW1VVR+Pc8ShzKSCQU7NUTPwEeWYIUBxuN59Gesln25/s37qQWKZT2xN1w==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=90/K6T/F6An7yz81jap0t445Ld1IqL33IR5l1tThAfY=;\n b=aIwQDX+NxW56geQp3O88ikmljGYwM8M3VCERjvIzAvCY03NiIFcBllRk8Dp5LxX8XBdr89scxAV46pQPyDKvXlF8YVp8sZlp6vk9kg5/JlmAYhUF1ig1K/VrUFKUcXoPY4qn2CvJ+Sx6Yaid8ru2uQ6kQksJ7JKDdGtwsiWTPHXqAwHzhBsp3GGSCKJ129uS/UOaY1yLp0r/cfioRwmjEoEj4GaOVn0w/zNWmeKzeSL5ajxhShV/OQWDPr9r9AvMctjo0mgU9uS/1exj0Phh7WuO/1A9WhcwDww/cR/77Kqh90gaMJojbPlEoyp/WKyBoXW4QrPsmaI4m1bOAsHAug==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com;\n dkim=pass header.d=nutanix.com; arc=none",
        "From": "Shaju Abraham <shaju.abraham@nutanix.com>",
        "To": "eric.auger@redhat.com, qemu-devel@nongnu.org, qemu-arm@nongnu.org,\n kvmarm@lists.linux.dev, peter.maydell@linaro.org,\n richard.henderson@linaro.org, cohuck@redhat.com, sebott@redhat.com,\n skolothumtho@nvidia.com, philmd@linaro.org",
        "Cc": "maz@kernel.org, oliver.upton@linux.dev, pbonzini@redhat.com,\n prerna.saxena@nutanix.com, jon@nutanix.com, jond@nutanix.com,\n Shaju Abraham <shaju.abraham@nutanix.com>,\n Khushit Shah <khushit.shah@nutanix.com>",
        "Subject": "[RFC PATCH v1 11/13] target/arm: named_cpu_model: introduce named CPU\n models for selected CPUs",
        "Date": "Wed, 13 May 2026 16:33:54 +0000",
        "Message-ID": "<20260513163356.3033159-12-shaju.abraham@nutanix.com>",
        "X-Mailer": "git-send-email 2.43.0",
        "In-Reply-To": "<20260513163356.3033159-1-shaju.abraham@nutanix.com>",
        "References": "<20260513163356.3033159-1-shaju.abraham@nutanix.com>",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-ClientProxiedBy": "CY5PR10CA0003.namprd10.prod.outlook.com\n (2603:10b6:930:1c::30) To PH7PR02MB10160.namprd02.prod.outlook.com\n (2603:10b6:510:2e7::19)",
        "MIME-Version": "1.0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "PH7PR02MB10160:EE_|SJ0PR02MB8813:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "094a4113-2449-4b99-2729-08deb10d804b",
        "x-proofpoint-crosstenant": "true",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;\n ARA:13230040|7416014|376014|366016|1800799024|921020|18002099003|22082099003|56012099003|3023799003;",
        "X-Microsoft-Antispam-Message-Info": "\n 1L1xxN1VLvPgu31wQ11sIcf5ikRmwxidwrCAhig7x3BxnLufBYZmz/OpIYkpjCkQPtYbctpVLP8QAL/LOYOUdPpWg4VsLAKdBeKuYrHWfLn5amE+KNfCbV3+Z+GtoBCFzuOYVJOPM6HLJdxV5v9heFC5YWQbRp53p0/+auHXaPGU4rElV/pwFO5bVI4b6mtnaP1x52j3J94XB4hW69/tmE3Eg00gLkWRYlTteu7FGDK56eLJzQO1Z3QrH7s6U6e9/uEAoUtQswvEY/p+JMGl8g3mfjOWTcTe7gLAgU72+6P8R9XorIEdrKFkn1D0abXQE9DfFvI5KYmJ2ctAVRO3JgtUGI22wKMepFs+zXjsJzF/yBNMwKvkXm+YLO5agkEWrlzJ5/CRsQrDaNtoNzRKxK9yalv/2Ku7LaPsVVsvms3Wzb49zjdXnls+yvENAkjvp/j46yBKGTYyR/pj3IXI3JfDdvMIexvBvVPcl/ULsUzRxCaxBcJ1zTROzk2+34U1dHYvjHgGILN1q7YQPDzXaDIy7HqioF4MFwPHXzW1cKkj5w7qGvgwMM8PvgT96OSYgCggfrMcNCPl6LstIQj0K4D7cPAaxrPwIkLouq+n1LAq98OgDCnhwA0CQiQmIQBK5vLhqnhJ2GY12VjmP5vyvRVTJVS4W+5hQPSUzDfgimJzYVgdIdq30/05ptLqvBbqUhf0M5qhmzP6J1oXt8enFJ7XqL+mfHVffKjg/i3U57k=",
        "X-Forefront-Antispam-Report": "CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:PH7PR02MB10160.namprd02.prod.outlook.com; PTR:;\n CAT:NONE;\n SFS:(13230040)(7416014)(376014)(366016)(1800799024)(921020)(18002099003)(22082099003)(56012099003)(3023799003);\n DIR:OUT; SFP:1102;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n AOs/nMMldNW7FzO506vbrPT+nP/TN9dYMlQoy/B5aVzVlQeXsabDl1bDEGiSGZ4bkyMHJmOnrlVtKtE1u/GU55XTgo1DcPnAKBsGJgjNexhTMesDYRF6CTvWsKM+Lu25gb3/8mK4BolGUXLPQZXcHN6dLJ1xbjFMo/0p8Bp1un6k/+QqGemwW221zGidwjs2+YHkAdJwdlEhz1vutFnLxkahdmZT2axvJFGY4CTle5OGl7bENYFKMj3pzPcmEbhb+EWOZ+Fy4DztYeY/190zjc07c3ErcrTBDJzusRt6p9bl9wNiwQzbSrdZumZXzhscO+HswyWMMhQovJn6OQn8tgwBTU9XWuIGvVl0yIkvt4/2A/FqJJJJumXJRYjXG5yrI1KPslNts+4TOfO22vedWMwSCf5W/krBqHbd12PZMHdGaRo87OijQncfYOiI1WEI/iFmHfIurIGQ78rre4DvIwGBjBnOhx9FOYQ4A7hr/PF31vqfVKBWDn3DWMtfv/4W8fHkg0isnd824TAa+sIDPtUc577IkllkG4T+cs9T7F0RPQmaN9EpbEqpz//M5ENw+jSxfUUESti0Run9pOmBeJ17MvkVGkMan7jJw8N2TtgtNV+A2bpuHTouGW9akcpVxP9oWVrDmJweoP/7eRVodX7xdlm/Kkduca3Vm2k1cTQ6MdFPk9A41PZddsodDBFZENsBr2oPg9WD1oNJXR5toDegLdVS/m2dP0uDpz0uGwsHx9a09sd9Yjuo5O5+p1ilvQIeFKyqpaE/kGpYGDnN463tWe9rnoZLQ43aOzJ4xIiNCO3/VvmejJXD9XaEa1ckOh25Vja0D99gj4nSKlZ2hVVTlY/lwy6LXFUnoEC3tkVX/tTeB6U7v+yLDTwyv7g8JjE6JSfB6Jbej6kMVDHrk8EPFyA5kzqjpJomwdadhJ/xS4ib+4mwML1LyN9PeWArNqO9tWBz8hzVQHQqPtX26pDh2cmBuX4/avYYfAT24C728ZUxmKUDCSaDq3jb2We6EayObA96UP3XVeZtjxUraN6gO6Ow51Zjlx1ggqzRjKMRGoefVOKO3+sOzzf85GyeDb7LYK4Ejqg2jyzE/dOHt3uE/lMOro3ypmOAQCJonau1X8dJbHibLc99Lmw0EbzvZepuCoCuYADB1p7BoRhVuTzA7luVSH7FiZAI4P6YG2UAYeJUhevAy/l2myNY1njwU/YBwBH1m6Ut6O+91N4bKrJJzR3Ny0RFHqGXCsVD/6h2w+L2LL43pdO8xYog26ynTgFz9j8KsELI7iHENqsiYXKN9vqgx4hmW2V+F9//3fRP0hFtytewK1ylH1bdMdinXrPJDf4I4irxjXlqsByG4IoN65yzy2KxRvYFWiL0n2o1mReGb6DWpV+ivaHnxof1gquz3cF0Ys2h2wXRC/0Hx1Os6larPfIp14UDRn9GObgIZ5PS4QgRN6XghrhrLVPY/fR08mAhGJ9lsYCA6bx84XDHsvAUdgZW+BJDc5G+CXVMv6Nk5soAfJJ4+9SoqXGx8SZE8p7NmJEucDw5kVf4aG/pF0qIt9GOT1fOJC+YjxARxbdZ/tnE15IpxeYRYUTG1lMRG6qhoBbZQrl3GXgJJKIJacLW1oiCmZtQoaKTTF/AVRN4OXT+4+jyszlmukB6Oz3QNrcEsUdShp2gpUec0CpIYguQdno4vPXNKsClcKU44vDheaDmFKkKCVsiTg8rMXmBa/EDmT86mEmq4lIyK65RTmByz2uT0efhpOBX6bg=",
        "X-Exchange-RoutingPolicyChecked": "\n o3U8IvQNyIyI9NPZ84y36WMplj/vYO75EAJk1pqRrNbDgjNCGTAeQBvf1OEVO16SuhWTtebCNP026G3TtfZwNRZjKqBP0oThJmn8YgFma82GeoFfCgQID8TY3fgxkclz+ePD3cKTXp8aTNPa1HNOHvkounbYkiySvaRJHT8wg+dLlOIH6/XwajAHnw9E/UJy2ObfLnWJExRFzGWUverDbrBjplZM2/LRFvlSuOZHlCiRDeIEKCxfBEwxJZginCebfRJDFbnFVYZqb8L7UrmWWF+2Nd99nlQtetVTSrY7SrKcgJELe8CcGnbnHvfEXDN7r519YklNgjpe92Ql/Q9Q1w==",
        "X-OriginatorOrg": "nutanix.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 094a4113-2449-4b99-2729-08deb10d804b",
        "X-MS-Exchange-CrossTenant-AuthSource": "PH7PR02MB10160.namprd02.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "13 May 2026 16:34:28.0550 (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": "\n gr4MenAUqbXIQRnovQeENqttviHJbNSWg2hniFprf4qO76jwQTBVRMd/9ylIGfXGilK+RN7VuM3rKssJL4umt4dl2IGRZNo/EYumMvLpJZE=",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "SJ0PR02MB8813",
        "X-Proofpoint-GUID": "HZ35R1swqmrLdcPCv5gfFH70FizbdPvV",
        "X-Authority-Analysis": "v=2.4 cv=WcU8rUhX c=1 sm=1 tr=0 ts=6a04a816 cx=c_pps\n a=U/cWNT7cGANcmDM7K3LxiQ==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19\n a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19\n a=xqWC_Br6kY4A:10 a=NGcC8JguVDcA:10 a=0kUYKlekyDsA:10\n a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=1L6crL_YRTbalZ11mEUO:22\n a=64Cc0HZtAAAA:8 a=JU90o9GPsxMSsgw1v4MA:9",
        "X-Proofpoint-ORIG-GUID": "HZ35R1swqmrLdcPCv5gfFH70FizbdPvV",
        "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwNTEzMDE2OCBTYWx0ZWRfX5efM/KQKlJWl\n AfxSSdiZetx8lhBghPuTVf8sdFuXlrZAQkmooTmHMeju9tONX8bH1LkKmf23CKSmR/awkdntepY\n aYn//Okz1cBohiywxhNSAZEQ28Dg7mVav1iQlXsUfhEyR86on91E0Mad6gl0nT0Q/Xr4xxG9suY\n GA2AUIxuODZ1WKjAe2OY3psMyJUKQsD9ER5RW+T20+dAJAQU+oKpDAbueigaznJ/z74aptDtKfY\n ekm6zbetcf2K1aHaRCV4BpLlrwNRg2RcTpIeOwJF5N1cDdU6Kb5/sYO4a/ekyAjprGgL3MYDwfu\n i0+odlNbZ8bkNt6/WLcwtd1jUV0xEOCCI3vzvDE3qG3fJEJOkNIZ23d6q9yXQMURw2/Db4GYk3f\n /J/Q+BdbhDViL0/kDado3eGDFSNIKmruLlKQRiwU8B1HSVHiHPox/tBqkmrGuTF6aACgEFK+6uz\n vJTFE8U8rFpYDedd9CA==",
        "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-05-13_01,2026-05-13_01,2025-10-01_01",
        "X-Proofpoint-Spam-Reason": "safe",
        "Received-SPF": "pass client-ip=148.163.151.68;\n envelope-from=shaju.abraham@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,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001,\n 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 <qemu-devel.nongnu.org>",
        "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>",
        "List-Archive": "<https://lists.nongnu.org/archive/html/qemu-devel>",
        "List-Post": "<mailto:qemu-devel@nongnu.org>",
        "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>",
        "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>",
        "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org",
        "Sender": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"
    },
    "content": "Introduce a small named-CPU-model layer on top of the field-backed property\ninfrastructure. Each model is a flat table of (name, value) overrides and a\nparent pointer. At instance-init, the parent chain is walked root-first and\nevery level's properties are applied via QOM, so a child entry overrides\nits ancestors for the same name.\n\nFor example, the grace-v1 named model hierarchy is:\nkvm-base-v1     KVM-imposed quirks (chain root)\narm-v8_4-a-v1   ARMv8.4-A architectural mandate\narm-v9_0-a-v1   ARMv9.0-A architectural deltas\nneoverse-v2-v1  Neoverse V2\ngrace-v1        NVIDIA Grace\n\narm-v8_4-a-v1, arm-v9_0-a-v1:\nOnly features mandated by the corresponding ARM ARM\nrevision. No optional features.\n\nneoverse-v[12]-v1:\nReferrence manual derived feature values for the reference core. Values\ndiffer from reference core values based on what was exposed to the guest\nwith -cpu host.\n\ngrace-v1:\nSoC integration choices (crypto pin, cache hints,\nPAuth alg).\n\nmodel realization logic:\n1. arm_idregs_reset_to_defaults(cpu): Reset cpu->isar.idregs[] to the\n   default values.\n2. Add all properties to the CPU Object\n3. arm_realize_model_chain(obj, model, &error_abort): Walk the parent chain\n   from root first and apply all the properties.\n\nCo-authored-by: Khushit Shah <khushit.shah@nutanix.com>\nSigned-off-by: Shaju Abraham <shaju.abraham@nutanix.com>\n---\n hw/arm/virt.c                   |   8 ++\n target/arm/arm-cpu-models.c     | 214 ++++++++++++++++++++++++++++++++\n target/arm/arm-cpu-models.h     |  43 +++++++\n target/arm/arm-v8_4-a-v1.inc.h  |  22 ++++\n target/arm/arm-v9_0-a-v1.inc.h  |  28 +++++\n target/arm/grace-v1.inc.h       |  17 +++\n target/arm/graviton3-v1.inc.h   |  16 +++\n target/arm/kvm-base-v1.inc.h    |  13 ++\n target/arm/meson.build          |   5 +-\n target/arm/neoverse-v1-v1.inc.h |  64 ++++++++++\n target/arm/neoverse-v2-v1.inc.h |  64 ++++++++++\n 11 files changed, 493 insertions(+), 1 deletion(-)\n create mode 100644 target/arm/arm-cpu-models.c\n create mode 100644 target/arm/arm-cpu-models.h\n create mode 100644 target/arm/arm-v8_4-a-v1.inc.h\n create mode 100644 target/arm/arm-v9_0-a-v1.inc.h\n create mode 100644 target/arm/grace-v1.inc.h\n create mode 100644 target/arm/graviton3-v1.inc.h\n create mode 100644 target/arm/kvm-base-v1.inc.h\n create mode 100644 target/arm/neoverse-v1-v1.inc.h\n create mode 100644 target/arm/neoverse-v2-v1.inc.h",
    "diff": "diff --git a/hw/arm/virt.c b/hw/arm/virt.c\nindex 10b1954382..bbb5f0a241 100644\n--- a/hw/arm/virt.c\n+++ b/hw/arm/virt.c\n@@ -4069,6 +4069,14 @@ static GPtrArray *virt_get_valid_cpu_types(const MachineState *ms)\n             g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME(\"host\")));\n         }\n     }\n+    if (kvm_enabled() && target_aarch64()) {\n+        g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME(\"arm-v8_4-a-v1\")));\n+        g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME(\"arm-v9_0-a-v1\")));\n+        g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME(\"neoverse-v1-v1\")));\n+        g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME(\"neoverse-v2-v1\")));\n+        g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME(\"grace-v1\")));\n+        g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME(\"graviton3-v1\")));\n+    }\n     g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME(\"max\")));\n \n     return vct;\ndiff --git a/target/arm/arm-cpu-models.c b/target/arm/arm-cpu-models.c\nnew file mode 100644\nindex 0000000000..fff7522a64\n--- /dev/null\n+++ b/target/arm/arm-cpu-models.c\n@@ -0,0 +1,214 @@\n+/*\n+ * ARM named CPU model definitions.\n+ *\n+ * Each model is defined in its own .inc.h file using the ARM_PROP()\n+ * macro, listing only the properties that DIFFER from the parent\n+ * model.  At realisation the parent chain is walked root-first and\n+ * every level's props are applied via QOM, so the leaf's values\n+ * naturally override its ancestors.\n+ *\n+ * Hierarchy (single-parent inheritance):\n+ *\n+ *   kvm-base-v1                    KVM-imposed quirks (chain root)\n+ *     arm-v8_4-a-v1                ARMv8.4-A architectural mandate\n+ *       arm-v9_0-a-v1              ARMv9.0-A architectural deltas\n+ *         neoverse-v2-v1           Neoverse V2 (TRM 102375)\n+ *           grace-v1               NVIDIA Grace\n+ *       neoverse-v1-v1             Neoverse V1 (TRM 102649)\n+ *         graviton3-v1             AWS Graviton3\n+ *\n+ * SPDX-License-Identifier: GPL-2.0-or-later\n+ */\n+\n+#include \"qemu/osdep.h\"\n+#include \"qapi/error.h\"\n+#include \"qemu/error-report.h\"\n+#include \"system/kvm.h\"\n+#include \"cpu.h\"\n+#include \"internals.h\"\n+#include \"kvm_arm.h\"\n+#include \"arm-cpu-models.h\"\n+#include \"arm-cpu-props.h\"\n+#include \"cpu-idregs.h\"\n+\n+static const ArmModelPropValue kvm_base_v1_props[] = {\n+#include \"kvm-base-v1.inc.h\"\n+};\n+\n+static const ArmModelPropValue armv8_4_a_v1_props[] = {\n+#include \"arm-v8_4-a-v1.inc.h\"\n+};\n+\n+static const ArmModelPropValue armv9_0_a_v1_props[] = {\n+#include \"arm-v9_0-a-v1.inc.h\"\n+};\n+\n+static const ArmModelPropValue neoverse_v1_v1_props[] = {\n+#include \"neoverse-v1-v1.inc.h\"\n+};\n+\n+static const ArmModelPropValue neoverse_v2_v1_props[] = {\n+#include \"neoverse-v2-v1.inc.h\"\n+};\n+\n+static const ArmModelPropValue grace_v1_props[] = {\n+#include \"grace-v1.inc.h\"\n+};\n+\n+static const ArmModelPropValue graviton3_v1_props[] = {\n+#include \"graviton3-v1.inc.h\"\n+};\n+\n+static const ArmNamedCpuModel arm_cpu_models[] = {\n+    {\n+        .name   = \"kvm-base-v1\",\n+        .parent = NULL,\n+        .props  = kvm_base_v1_props,\n+    },\n+    {\n+        .name   = \"arm-v8_4-a-v1\",\n+        .parent = \"kvm-base-v1\",\n+        .props  = armv8_4_a_v1_props,\n+    },\n+    {\n+        .name   = \"neoverse-v1-v1\",\n+        .parent = \"arm-v8_4-a-v1\",\n+        .props  = neoverse_v1_v1_props,\n+    },\n+    {\n+        .name   = \"graviton3-v1\",\n+        .parent = \"neoverse-v1-v1\",\n+        .props  = graviton3_v1_props,\n+    },\n+    {\n+        .name   = \"arm-v9_0-a-v1\",\n+        .parent = \"arm-v8_4-a-v1\",\n+        .props  = armv9_0_a_v1_props,\n+    },\n+    {\n+        .name   = \"neoverse-v2-v1\",\n+        .parent = \"arm-v9_0-a-v1\",\n+        .props  = neoverse_v2_v1_props,\n+    },\n+    {\n+        .name   = \"grace-v1\",\n+        .parent = \"neoverse-v2-v1\",\n+        .props  = grace_v1_props,\n+    },\n+};\n+\n+static ARMCPUInfo arm_named_cpu_infos[ARRAY_SIZE(arm_cpu_models)];\n+static const ArmNamedCpuModel *arm_find_model(const char *name)\n+{\n+    size_t i;\n+    for (i = 0; i < ARRAY_SIZE(arm_cpu_models); i++) {\n+        if (g_str_equal(arm_cpu_models[i].name, name)) {\n+            return &arm_cpu_models[i];\n+        }\n+    }\n+    return NULL;\n+}\n+\n+static void arm_apply_model_props(Object *obj, const ArmModelPropValue *props,\n+                                  Error **errp)\n+{\n+    const ArmModelPropValue *pv;\n+    ERRP_GUARD();\n+\n+    for (pv = props; pv->name; pv++) {\n+        switch (pv->type) {\n+        case ARM_MODEL_PROP_STR:\n+            object_property_set_str(obj, pv->name, pv->str, errp);\n+            break;\n+        case ARM_MODEL_PROP_BOOL:\n+            object_property_set_bool(obj, pv->name, pv->b, errp);\n+            break;\n+        case ARM_MODEL_PROP_NUM:\n+            object_property_set_uint(obj, pv->name, pv->num, errp);\n+            break;\n+        default:\n+            g_assert_not_reached();\n+        }\n+        if (*errp) {\n+            error_prepend(errp, \"property '%s': \", pv->name);\n+            return;\n+        }\n+    }\n+}\n+\n+static void arm_realize_model_chain(Object *obj, const ArmNamedCpuModel *model,\n+                                    Error **errp)\n+{\n+    const ArmNamedCpuModel *cur, *parent;\n+    const ArmNamedCpuModel *chain[ARRAY_SIZE(arm_cpu_models)];\n+    size_t depth = 0;\n+    for (cur = model; cur; ) {\n+        if (depth >= ARRAY_SIZE(chain)) {\n+            error_setg(errp, \"model '%s': parent chain too deep \"\n+                       \"(possible cycle)\", model->name);\n+            return;\n+        }\n+        chain[depth++] = cur;\n+\n+        if (!cur->parent) {\n+            break;\n+        }\n+        parent = arm_find_model(cur->parent);\n+        if (!parent) {\n+            error_setg(errp, \"model '%s': unknown parent '%s'\",\n+                       cur->name, cur->parent);\n+            return;\n+        }\n+        cur = parent;\n+    }\n+\n+    while (depth--) {\n+        arm_apply_model_props(obj, chain[depth]->props, errp);\n+        if (*errp) {\n+            return;\n+        }\n+    }\n+}\n+\n+static void arm_named_cpu_initfn(Object *obj)\n+{\n+    ARMCPU *cpu = ARM_CPU(obj);\n+    ARMCPUClass *acc = ARM_CPU_GET_CLASS(obj);\n+    const ArmNamedCpuModel *model = arm_find_model(acc->info->name);\n+    if (!model) {\n+        error_report(\"'%s' CPU model entry not found)\",\n+                     acc->info->name);\n+        return;\n+    }\n+\n+    if (!kvm_enabled()) {\n+        error_report(\"'%s' CPU model requires KVM (-accel kvm)\",\n+                     acc->info->name);\n+        return;\n+    }\n+\n+    kvm_arm_set_cpu_features_from_host(cpu);\n+    if (!arm_feature(&cpu->env, ARM_FEATURE_AARCH64)) {\n+        return;\n+    }\n+\n+    arm_idregs_reset_to_defaults(cpu);\n+\n+    aarch64_add_sve_properties(obj);\n+    aarch64_add_pauth_properties(obj);\n+    arm_add_cpu_props(obj);\n+\n+    arm_realize_model_chain(obj, model, &error_abort);\n+}\n+\n+void arm_register_named_cpu_models(void)\n+{\n+    size_t i;\n+    for (i = 0; i < ARRAY_SIZE(arm_cpu_models); i++) {\n+        arm_named_cpu_infos[i].name = arm_cpu_models[i].name;\n+        arm_named_cpu_infos[i].initfn = arm_named_cpu_initfn;\n+        arm_cpu_register(&arm_named_cpu_infos[i]);\n+    }\n+}\n+\n+type_init(arm_register_named_cpu_models)\ndiff --git a/target/arm/arm-cpu-models.h b/target/arm/arm-cpu-models.h\nnew file mode 100644\nindex 0000000000..830a9bdc4a\n--- /dev/null\n+++ b/target/arm/arm-cpu-models.h\n@@ -0,0 +1,43 @@\n+/* SPDX-License-Identifier: GPL-2.0-or-later */\n+/*\n+ * ARM named CPU model definitions - public API.\n+ */\n+#ifndef ARM_CPU_MODELS_H\n+#define ARM_CPU_MODELS_H\n+\n+#include \"qapi/error.h\"\n+#include \"qom/object.h\"\n+\n+typedef enum ArmModelPropType {\n+    ARM_MODEL_PROP_STR,\n+    ARM_MODEL_PROP_BOOL,\n+    ARM_MODEL_PROP_NUM,\n+} ArmModelPropType;\n+\n+typedef struct ArmModelPropValue {\n+    const char     *name;\n+    ArmModelPropType type;\n+    bool            b;\n+    uint64_t        num;\n+    const char     *str;\n+} ArmModelPropValue;\n+\n+typedef struct ArmNamedCpuModel {\n+    const char              *name;\n+    const char              *parent;\n+    const ArmModelPropValue *props;\n+} ArmNamedCpuModel;\n+\n+#define ARM_PROP_FIELD_STR  str\n+#define ARM_PROP_FIELD_BOOL b\n+#define ARM_PROP_FIELD_NUM  num\n+\n+#define ARM_PROP(_name, _type, _value) \\\n+    { .name = (_name), .type = ARM_MODEL_PROP_##_type, \\\n+      .ARM_PROP_FIELD_##_type = (_value) }\n+\n+#define ARM_PROP_END  { .name = NULL }\n+\n+void arm_register_named_cpu_models(void);\n+\n+#endif /* ARM_CPU_MODELS_H */\ndiff --git a/target/arm/arm-v8_4-a-v1.inc.h b/target/arm/arm-v8_4-a-v1.inc.h\nnew file mode 100644\nindex 0000000000..1bad59ba2d\n--- /dev/null\n+++ b/target/arm/arm-v8_4-a-v1.inc.h\n@@ -0,0 +1,22 @@\n+/* SPDX-License-Identifier: GPL-2.0-or-later */\n+ARM_PROP(\"feat_CRC32\", STR,  \"on\"),\n+ARM_PROP(\"feat_ATOMIC\", STR,  \"on\"),\n+ARM_PROP(\"feat_HPDS\", STR,  \"on\"),\n+ARM_PROP(\"feat_LO\", STR,  \"on\"),\n+\n+ARM_PROP(\"feat_DPB\", STR,  \"on\"),\n+ARM_PROP(\"feat_RAS\", STR,  \"1.0\"),\n+ARM_PROP(\"feat_PAN\", STR,  \"pan2\"),\n+ARM_PROP(\"feat_UAO\", STR,  \"on\"),\n+ARM_PROP(\"feat_CNP\", STR,  \"on\"),\n+ARM_PROP(\"feat_IESB\", STR,  \"on\"),\n+\n+ARM_PROP(\"feat_DIT\", STR,  \"on\"),\n+ARM_PROP(\"feat_DBG\", STR,  \"v8p4\"),\n+ARM_PROP(\"feat_PMU\", STR,  \"v3p4\"),\n+ARM_PROP(\"feat_TS\", STR,  \"flagm\"),\n+ARM_PROP(\"feat_LRCPC\", STR,  \"lrcpc2\"),\n+ARM_PROP(\"feat_AT\", STR,  \"on\"),\n+ARM_PROP(\"hw_prop_IDS\", STR,  \"0x18\"),\n+\n+ARM_PROP_END,\ndiff --git a/target/arm/arm-v9_0-a-v1.inc.h b/target/arm/arm-v9_0-a-v1.inc.h\nnew file mode 100644\nindex 0000000000..5ebe728133\n--- /dev/null\n+++ b/target/arm/arm-v9_0-a-v1.inc.h\n@@ -0,0 +1,28 @@\n+\n+/* SPDX-License-Identifier: GPL-2.0-or-later */\n+ARM_PROP(\"feat_BT\", STR, \"on\"),\n+ARM_PROP(\"feat_CSV2\", STR, \"1.0\"),\n+ARM_PROP(\"feat_CSV3\", STR, \"on\"),\n+ARM_PROP(\"feat_DPB\", STR, \"dpb2\"),\n+ARM_PROP(\"feat_E0PD\", STR, \"on\"),\n+ARM_PROP(\"feat_SB\", STR, \"on\"),\n+ARM_PROP(\"feat_SPECRES\", STR, \"on\"),\n+ARM_PROP(\"feat_SSBS\", STR, \"ssbs2\"),\n+\n+ARM_PROP(\"feat_DoubleLock\", STR, \"off\"),\n+ARM_PROP(\"feat_FP\", STR, \"on\"),\n+ARM_PROP(\"feat_AdvSIMD\", STR, \"on\"),\n+ARM_PROP(\"feat_TS\", STR, \"flagm2\"),\n+ARM_PROP(\"feat_FRINTTS\", STR, \"on\"),\n+ARM_PROP(\"feat_RDM\", STR, \"on\"),\n+ARM_PROP(\"feat_DP\", STR, \"on\"),\n+ARM_PROP(\"feat_FHM\", STR, \"on\"),\n+ARM_PROP(\"feat_FCMA\", STR, \"on\"),\n+ARM_PROP(\"feat_JSCVT\", STR, \"on\"),\n+\n+ARM_PROP(\"feat_SVE\", STR, \"on\"),\n+ARM_PROP(\"feat_SEL2\", STR, \"on\"),\n+ARM_PROP(\"feat_VH\", STR, \"on\"),\n+ARM_PROP(\"feat_XNX\", STR, \"on\"),\n+\n+ARM_PROP_END,\ndiff --git a/target/arm/grace-v1.inc.h b/target/arm/grace-v1.inc.h\nnew file mode 100644\nindex 0000000000..048ebb993d\n--- /dev/null\n+++ b/target/arm/grace-v1.inc.h\n@@ -0,0 +1,17 @@\n+\n+/* SPDX-License-Identifier: GPL-2.0-or-later */\n+ARM_PROP(\"cpu_revision\", NUM, 0x0),\n+\n+ARM_PROP(\"feat_AES\", STR, \"pmull\"),\n+ARM_PROP(\"feat_SHA1\", STR, \"on\"),\n+ARM_PROP(\"feat_SHA2\", STR, \"sha512\"),\n+ARM_PROP(\"feat_SHA3\", STR, \"on\"),\n+ARM_PROP(\"feat_SM3\", STR, \"on\"),\n+ARM_PROP(\"feat_SM4\", STR, \"on\"),\n+\n+ARM_PROP(\"hw_prop_IDC\", BOOL, true),\n+ARM_PROP(\"hw_prop_DIC\", BOOL, true),\n+\n+ARM_PROP(\"cpu_revidr\", NUM, 1),\n+\n+ARM_PROP_END,\ndiff --git a/target/arm/graviton3-v1.inc.h b/target/arm/graviton3-v1.inc.h\nnew file mode 100644\nindex 0000000000..9538c3e539\n--- /dev/null\n+++ b/target/arm/graviton3-v1.inc.h\n@@ -0,0 +1,16 @@\n+\n+/* SPDX-License-Identifier: GPL-2.0-or-later */\n+ARM_PROP(\"feat_AES\", STR, \"pmull\"),\n+ARM_PROP(\"feat_SHA1\", STR, \"on\"),\n+ARM_PROP(\"feat_SHA2\", STR, \"sha512\"),\n+ARM_PROP(\"feat_SHA3\", STR, \"on\"),\n+ARM_PROP(\"feat_SM3\", STR, \"on\"),\n+ARM_PROP(\"feat_SM4\", STR, \"on\"),\n+ARM_PROP(\"feat_RNDR\", STR, \"on\"),\n+\n+ARM_PROP(\"hw_prop_IDC\", BOOL, true),\n+ARM_PROP(\"hw_prop_DIC\", BOOL, true),\n+\n+ARM_PROP(\"cpu_revidr\", NUM, 1),\n+\n+ARM_PROP_END,\ndiff --git a/target/arm/kvm-base-v1.inc.h b/target/arm/kvm-base-v1.inc.h\nnew file mode 100644\nindex 0000000000..e0bae90629\n--- /dev/null\n+++ b/target/arm/kvm-base-v1.inc.h\n@@ -0,0 +1,13 @@\n+/* SPDX-License-Identifier: GPL-2.0-or-later */\n+ARM_PROP(\"el0_mode\", STR, \"aarch64\"),\n+ARM_PROP(\"el1_mode\", STR, \"aarch64\"),\n+ARM_PROP(\"el2_mode\", STR, \"off\"),\n+ARM_PROP(\"el3_mode\", STR, \"off\"),\n+ARM_PROP(\"feat_GIC\", STR, \"on\"),\n+ARM_PROP(\"feat_AMU\", STR, \"off\"),\n+ARM_PROP(\"feat_MPAM\", STR, \"0.0\"),\n+ARM_PROP(\"feat_NV\", STR, \"0.0\"),\n+ARM_PROP(\"feat_MTE_FRAC\", STR, \"async\"),\n+ARM_PROP(\"hw_prop_CCIDX\", STR, \"32\"),\n+\n+ARM_PROP_END,\ndiff --git a/target/arm/meson.build b/target/arm/meson.build\nindex 01b1e91a1c..79a22eec3f 100644\n--- a/target/arm/meson.build\n+++ b/target/arm/meson.build\n@@ -22,7 +22,10 @@ arm_common_system_ss.add(files(\n   'arm-qmp-cmds.c',\n   'cpu-idregs.c',\n ))\n-arm_system_ss.add(when: 'CONFIG_KVM', if_true: files('hyp_gdbstub.c', 'kvm.c'))\n+arm_system_ss.add(when: 'CONFIG_KVM',\n+                  if_true: files('arm-cpu-models.c',\n+                                 'hyp_gdbstub.c',\n+                                 'kvm.c'))\n arm_system_ss.add(when: 'CONFIG_HVF', if_true: files('hyp_gdbstub.c'))\n \n arm_user_ss.add(files('cpu.c'))\ndiff --git a/target/arm/neoverse-v1-v1.inc.h b/target/arm/neoverse-v1-v1.inc.h\nnew file mode 100644\nindex 0000000000..5ded208a5e\n--- /dev/null\n+++ b/target/arm/neoverse-v1-v1.inc.h\n@@ -0,0 +1,64 @@\n+/* SPDX-License-Identifier: GPL-2.0-or-later */\n+ARM_PROP(\"cpu_implementer\", NUM, 0x41),\n+ARM_PROP(\"cpu_variant\", NUM, 0x1),\n+ARM_PROP(\"cpu_architecture\", NUM, 0xF),\n+ARM_PROP(\"cpu_partnum\", NUM, 0xD40),\n+ARM_PROP(\"cpu_revision\", NUM, 0x1),\n+\n+ARM_PROP(\"hw_prop_BRPS\", NUM, 0x5),\n+ARM_PROP(\"hw_prop_WRPs\", NUM, 0x3),\n+ARM_PROP(\"hw_prop_CTX_CMPs\", NUM, 0x1),\n+ARM_PROP(\"feat_DoubleLock\", STR, \"off\"),\n+\n+ARM_PROP(\"feat_RDM\", STR, \"on\"),\n+ARM_PROP(\"feat_DP\", STR, \"on\"),\n+ARM_PROP(\"feat_FHM\", STR, \"on\"),\n+\n+ARM_PROP(\"feat_DPB\", STR, \"dpb2\"),\n+ARM_PROP(\"feat_JSCVT\", STR, \"on\"),\n+ARM_PROP(\"feat_FCMA\", STR, \"on\"),\n+ARM_PROP(\"feat_BF16\", STR, \"on\"),\n+ARM_PROP(\"feat_DGH\", STR, \"on\"),\n+ARM_PROP(\"feat_I8MM\", STR, \"on\"),\n+\n+ARM_PROP(\"feat_FP\", STR, \"fp16\"),\n+ARM_PROP(\"feat_AdvSIMD\", STR, \"fp16\"),\n+ARM_PROP(\"feat_RAS\", STR, \"1.1_base\"),\n+ARM_PROP(\"feat_CSV2\", STR, \"1.0\"),\n+ARM_PROP(\"feat_CSV3\", STR, \"on\"),\n+\n+ARM_PROP(\"feat_SSBS\", STR, \"ssbs2\"),\n+\n+ARM_PROP(\"hw_prop_PARANGE\", STR, \"48\"),\n+ARM_PROP(\"hw_prop_ASIDBITS\", STR, \"16\"),\n+ARM_PROP(\"feat_BIGEND\", STR, \"on\"),\n+ARM_PROP(\"feat_SNSMEM\", STR, \"on\"),\n+ARM_PROP(\"hw_prop_TGRAN4\", STR, \"on\"),\n+ARM_PROP(\"hw_prop_TGRAN16\", STR, \"on\"),\n+ARM_PROP(\"hw_prop_TGRAN64\", STR, \"on\"),\n+ARM_PROP(\"hw_prop_TGRAN4_2\", STR, \"tgran4\"),\n+ARM_PROP(\"hw_prop_TGRAN16_2\", STR, \"tgran16\"),\n+ARM_PROP(\"hw_prop_TGRAN64_2\", STR, \"tgran64\"),\n+\n+ARM_PROP(\"feat_HAFDBS\", STR, \"dbm\"),\n+ARM_PROP(\"hw_prop_VMIDBITS\", STR, \"16\"),\n+ARM_PROP(\"feat_VH\", STR, \"on\"),\n+ARM_PROP(\"feat_HPDS\", STR, \"hpds2\"),\n+ARM_PROP(\"feat_XNX\", STR, \"on\"),\n+ARM_PROP(\"feat_SpecSEI\", STR, \"off\"),\n+\n+ARM_PROP(\"hw_prop_FWB\", STR, \"on\"),\n+ARM_PROP(\"feat_BBM\", STR, \"2\"),\n+ARM_PROP(\"feat_EVT\", STR, \"ttlbxs\"),\n+\n+ARM_PROP(\"feat_E2H0\", STR, \"on\"),\n+\n+ARM_PROP(\"hw_prop_IMInline\", NUM, 4),\n+ARM_PROP(\"hw_prop_L1IP\", STR, \"pipt\"),\n+ARM_PROP(\"hw_prop_DMInline\", NUM, 4),\n+ARM_PROP(\"hw_prop_ERG\", NUM, 4),\n+ARM_PROP(\"hw_prop_CWG\", NUM, 4),\n+\n+ARM_PROP(\"hw_prop_BS\", NUM, 0x4),\n+\n+ARM_PROP_END,\ndiff --git a/target/arm/neoverse-v2-v1.inc.h b/target/arm/neoverse-v2-v1.inc.h\nnew file mode 100644\nindex 0000000000..a32f80cd55\n--- /dev/null\n+++ b/target/arm/neoverse-v2-v1.inc.h\n@@ -0,0 +1,64 @@\n+/* SPDX-License-Identifier: GPL-2.0-or-later */\n+ARM_PROP(\"cpu_implementer\", NUM, 0x41),\n+ARM_PROP(\"cpu_variant\", NUM, 0x0),\n+ARM_PROP(\"cpu_architecture\", NUM, 0xF),\n+ARM_PROP(\"cpu_partnum\", NUM, 0xD4F),\n+ARM_PROP(\"cpu_revision\", NUM, 0x2),\n+\n+ARM_PROP(\"hw_prop_BRPS\", NUM, 0x5),\n+ARM_PROP(\"hw_prop_WRPs\", NUM, 0x3),\n+ARM_PROP(\"hw_prop_CTX_CMPs\", NUM, 0x1),\n+ARM_PROP(\"feat_PMU\", STR, \"v3p5\"),\n+\n+ARM_PROP(\"feat_TLB\", STR, \"range\"),\n+\n+ARM_PROP(\"feat_BF16\", STR, \"on\"),\n+ARM_PROP(\"feat_DGH\", STR, \"on\"),\n+ARM_PROP(\"feat_I8MM\", STR, \"on\"),\n+\n+ARM_PROP(\"feat_FP\", STR, \"fp16\"),\n+ARM_PROP(\"feat_AdvSIMD\", STR, \"fp16\"),\n+ARM_PROP(\"feat_RAS\", STR, \"1.1_base\"),\n+\n+/*\n+ * V2 silicon may report CSV2=2 (FEAT_CSV2_2) per TRM page 392, but\n+ * KVM clamps the guest-visible limit to 1.\n+ */\n+ARM_PROP(\"feat_CSV2\", STR, \"1.0\"),\n+\n+\n+ARM_PROP(\"hw_prop_PARANGE\", STR, \"48\"),\n+ARM_PROP(\"hw_prop_ASIDBITS\", STR, \"16\"),\n+ARM_PROP(\"feat_BIGEND\", STR, \"on\"),\n+ARM_PROP(\"feat_SNSMEM\", STR, \"on\"),\n+ARM_PROP(\"hw_prop_TGRAN16\", STR, \"on\"),\n+ARM_PROP(\"hw_prop_TGRAN64\", STR, \"on\"),\n+ARM_PROP(\"hw_prop_TGRAN4\", STR, \"on\"),\n+ARM_PROP(\"hw_prop_TGRAN16_2\", STR, \"on\"),\n+ARM_PROP(\"hw_prop_TGRAN64_2\", STR, \"on\"),\n+ARM_PROP(\"hw_prop_TGRAN4_2\", STR, \"on\"),\n+\n+ARM_PROP(\"feat_HAFDBS\", STR, \"dbm\"),\n+ARM_PROP(\"hw_prop_VMIDBITS\", STR, \"16\"),\n+ARM_PROP(\"feat_HPDS\", STR, \"hpds2\"),\n+ARM_PROP(\"feat_PAN\", STR, \"pan3\"),\n+ARM_PROP(\"feat_ECBHB\", STR, \"off\"),\n+ARM_PROP(\"feat_SpecSEI\", STR, \"off\"),\n+\n+ARM_PROP(\"hw_prop_FWB\", STR, \"on\"),\n+ARM_PROP(\"hw_prop_ST\", STR, \"48_47\"),\n+ARM_PROP(\"feat_TTL\", STR, \"on\"),\n+ARM_PROP(\"feat_BBM\", STR, \"2\"),\n+ARM_PROP(\"feat_EVT\", STR, \"ttlbxs\"),\n+ARM_PROP(\"feat_E2H0\", STR, \"on\"),\n+\n+\n+ARM_PROP(\"hw_prop_IMInline\", NUM, 4),\n+ARM_PROP(\"hw_prop_L1IP\", STR, \"pipt\"),\n+ARM_PROP(\"hw_prop_DMInline\", NUM, 4),\n+ARM_PROP(\"hw_prop_ERG\", NUM, 4),\n+ARM_PROP(\"hw_prop_CWG\", NUM, 4),\n+\n+ARM_PROP(\"hw_prop_BS\", NUM, 0x4),\n+\n+ARM_PROP_END,\n",
    "prefixes": [
        "RFC",
        "v1",
        "11/13"
    ]
}