get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2237947,
    "url": "http://patchwork.ozlabs.org/api/1.1/patches/2237947/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260513163356.3033159-11-shaju.abraham@nutanix.com/",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/1.1/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": ""
    },
    "msgid": "<20260513163356.3033159-11-shaju.abraham@nutanix.com>",
    "date": "2026-05-13T16:33:53",
    "name": "[RFC,v1,10/13] target/arm: named_cpu_model: Register Arm64 properties for host model",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "c693e11ca43442a8f3a500a88becb35a1f554cd0",
    "submitter": {
        "id": 77003,
        "url": "http://patchwork.ozlabs.org/api/1.1/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-11-shaju.abraham@nutanix.com/mbox/",
    "series": [
        {
            "id": 504187,
            "url": "http://patchwork.ozlabs.org/api/1.1/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/2237947/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2237947/checks/",
    "tags": {},
    "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=p0G8URFX;\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=PIdsxRkd;\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 4gFzcs2B0Qz1y5L\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 14 May 2026 02:36:45 +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 1wNCYs-0004nF-Bh; Wed, 13 May 2026 12:35:54 -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 1wNCXj-0003KR-7m; Wed, 13 May 2026 12:34:44 -0400",
            "from mx0b-002c1b01.pphosted.com ([148.163.155.12])\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 1wNCXg-0000if-2X; Wed, 13 May 2026 12:34:42 -0400",
            "from pps.filterd (m0127844.ppops.net [127.0.0.1])\n by mx0b-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 64DGLKTn4149398; Wed, 13 May 2026 09:34:29 -0700",
            "from sn4pr0501cu005.outbound.protection.outlook.com\n (mail-southcentralusazon11021113.outbound.protection.outlook.com\n [40.93.194.113])\n by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 4e3nva675w-2\n (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT);\n Wed, 13 May 2026 09:34:28 -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:26 +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:26 +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=cvUzVq5os+U/Y3Wb81SC3XIp5miUUCaIolEld9owm\n QE=; b=p0G8URFXmHMosWYzvGEid99RYCQ0dwsRG/K0IuVARyupUONSYRVtc+W4a\n WDopOIpbP9ii6HwqansdSMEeuje7kSOmUF1eP1Jr26wEjYTmmPgQY6uC0xlOgAUu\n FdbId7bkmuN+dWCp+/6V741tzM+z0CV+QlDDlU1e3hxsOy56H4QI6dFwj4tQlrDg\n bFFzfb8byQXZVfaLFYOEuG7hZ1CQr5d7lIYSZJpSkNj7n6YIamlPCJ/BNm//vX6u\n rNq4460AEVmhicnKut1Eb/+0hQguw9sEtDE+EqoUwRXtAz3Nqt/27eTcsgoYraNo\n DyueUILKWrLG0nOIYngXVIir8eqfA==",
            "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=cvUzVq5os+U/Y3Wb81SC3XIp5miUUCaIolEld9owmQE=;\n b=PIdsxRkd5drikAoIj1ldENujRggAxWM8Z5jsZjDZ+NsM1zYFdLVrpawWUMG+xfcoRpP4hgw45sKRiRT5VXgXGwGV1+5LntCWcLYtPv4uPgDA0Sa3eKpwPgXmiJ3LFVV2EdEgLFEdwXNmbzwDplQ+fE1g9MBiipa4eYzQ6laJjYF4RzdyLulPpMMzcHdqnXxz6ry/kcoiHwQYFMY+PgFByW5B/n4Vs8R9xJdcZ/swx4HwUxl3ieKlSexMGirg3dF51I2whdxFrJyVuNW/xoeQoJh6eZoVY/h3RuBJRgZ+MNDGM+BRrVlpQmwAet7DXY6YGii54BqJ8HSpHTsXtS3Vbg=="
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=EbroLbfzmgkfUQgp7QQxJOXR1z1pDEgS0jXc9MfshsT/H0/Rkj7cVJKQCPygtdPzbVEbU1Cblr7Zx3kDi3N97qvFBxxa+CdjNDvsdCMw2P+4QWfIDEY5TMKMSzEbIxiS9hB8p3OTfG9T4jV0R8YOjpPaLjJtXsQiX6mIjK4TK2yBvhVdZGkWvNlJWvFGcwr9dR49xh1g2OTjYv5qg4HB+uPpyClxkz3FeRZO3Rx+gMPSGHpikwBBwDH5wfcLWmMNfIwckOHCNc1h+yzrqy1HbJ4nQOwnAyyRYTdA1ta55ReDXQgG1ggzldGANJ4E7wz0zrWAAXMEzKxORkRFAZfNiw==",
        "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=cvUzVq5os+U/Y3Wb81SC3XIp5miUUCaIolEld9owmQE=;\n b=IfhBJN5tHnxVZe13vIBPpNesIj431wxIdjqEaEj/I9NbQHQpMRlKmqeA0Q+2kuTdBDry5rk8IOb+KRPyDEwpuDd51S1MPgGRyRkX8yrUvkoNktxmumGWmZGW0MKdmVVdykqTctqIZmT0Mjpa+ivvj1xu4EXiZGA5AmUBabzbB+gymoARE6yxWtpdj2bUSjLVSejAPkdqlIdWpB1nEl+1k0yk7npVpOPWm1ACpX9zh0LFsEPSBRfvZNLwg1SR4Y4sUuHbntXas9BaiVDTwUqcuFb6yE+DFLBczljNxhNkDWIJvNYGU/kRpP18jy8G6qgP8vZCwbeY5OIMY0h4MZkIUQ==",
        "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 10/13] target/arm: named_cpu_model: Register Arm64\n properties for host model",
        "Date": "Wed, 13 May 2026 16:33:53 +0000",
        "Message-ID": "<20260513163356.3033159-11-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": "6e168396-f713-455a-61b5-08deb10d7f1d",
        "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;",
        "X-Microsoft-Antispam-Message-Info": "\n fPxdIwAsDijviSm6lRhqY2MhKbjlaYSKpwz7FIXSe78lClbdouiou36iUz6fr8Rncy1qr88x8SL9ewDvwzsSRS+lrY57peqsUjm9cURWBSysiXHebVe/rp8VGDm605LG+M89t52qBi5z4FwGiYU2zQ72acLtLY56Dbo6MKkwWYRwV2cJ5FSViR6DCVUUJQj0Gdx8bjZERV7M5qU1rJDoeHC6tEjyRX1Q0G72L2iV5AdmKbInzhpBnSRiPRJ1FDiMXdLGFh7iUGJzkzXsvV/mFfXkqiUxrASKFAbiXVZxtpV8eEesBxMlQTNTnJefyMTksdPZo8+JTEfa4F77wrlxxCKk4fLmnsiMMP+Ag/Mby9fGH9bGzjxECeFDtiCtimlt0dLe2F2Sr0FxQG9oXiwyxzuFg2BcUXcdjqFEqL77E5YKt0lT5b/ICKdzVsID7je9lskqN1XKx3+es1vX6vOQ0VhWFg1ZsGyqwpGjp1GKD9HePzYgR9CJ0XUHANI8N1FZKMuionnf3Bgr2wVtX5A8RGQDDfaINPU2UcfzXUS9OmdujYAFMHGEYxIRoB+MkTDX9xYMoSSmEl9a31GpPJCauC7Iyw4S8sJ6xhclLjws2dSPT/U/XRTc6IoklfEEuQ6+FTPJrsYCpW+ix0fa3gnxFJ8SpYG4E3+9fKz04Q/1IEsFQ/Cf+BRWbKy+ysUvPG8xxuH70aQLIk/zc5FlpDQUcuJWnQJV3Hxee6t9svWVog0=",
        "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);\n DIR:OUT; SFP:1102;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n k6MxTUjH+HhqWiREWsVTdjxADZV0v4SNZGZrN4d3OfCneMiUoe8rl+9a6ySbg/U4kAZHetgtyjL/z396cjTCRle1TXwwWGiQdaeIFWUYbbarDkcnBTqaDln/VucOs3pQ5fmZCqgo6Mqoc41fWjOmbXmLp3F7SYyEFr/IFZ11UBJihRdW+p441JBE8cpwiyFEPEGRzry33ZiRoqaYjDgFvfL2aTindNeZBujgroS423g0qfPZQm72T1gHgCRA/5srLu4bkt70Uc8J89pUwCFaJwMPE8zrzE2+HyMIYV5eGbVtVUPvj5qsyFAwF6BIgztagZIj7/UkwecdmpQTRDb++gDqgGwqf5Dnj1upEYoqHwaAb395gr+M80dB4HYKgK4c1YdNbty4wxx8ThzVjpfr0djSyuIa7t9uYh65FMMeHoRJT+imee+gPeQRPCIN2VlAfYY7xbSpuc43bNgz8CXgPzZUbSYtjFgi3b0DHiuHCP4nPJJ9kAMGzT+ETh3Q7zeUKrflzHWuHO87V7wIAyRYDtmC3Al56heo5HRtgjM9kG9QW5WMygXgxP5UzSDTx52nNPD5izKL+YOLP44WHrdiap6jTtLdLM5hrj+lJXhozvAC5ppKynBTUxgkU0y8PGPVcoe+JW1CoD5ymizHYWUNzCCCvkhnomBA+bagNPw451akmXwsp7OvndtD0/DvLMUNXUxzwHK0a1xgRsH2piOds/GV9DySEujgAFiOoaSfDIoiR1rYOQyZ7Y5oYW3zxeYRCbI2cZrohke/aPgHm+K6H54D4zDwFXvyC6ZiGsfdYPIx3tqSXGEbpjmZDx5GSGivlyjyDZsYJQJgIA1TKEjaz2dytps62Y6FM9W6Laigwt536t4/bvXI/Ee49P+wP39dizYFOk92434XBIokpzMyr7FrQLPmu2WHCvS8jp0+c5Kr8226t8Sm6im5l5vDMDXBsDYY0+zhh51Bypo4dICA6MLfr5jbjH4em1np/82g9l8P5Ht0yUzex9RZP8wOZtzfqlawunaTpjRrshRDw4Y4wWCQLSZQXg5xhPfMU/Sta9S3kQo1HQRoAFY6DhYm8W8aGF1DZHsLcwVMEITB9GvcoKAfYh470M/9efdvwmc6pnswRmZmo9D6KjN98QMPtieIDNQD5/x4+Ha/d3fMglExxO5kdH55UBGxSgOQsm3UwaVIOOwzdjsH4y8A3svw7nLjDO5VJJb4NwDFVb+sg2uRzgK6/xrpD8GmDLxRIrKm4PM0BPZHqzTYChRYYvxPmI6skGe1PvQ9ep2mf1olF7nqQW/YGd41Z7qXFz8T6gAkmGeUI4C8MR6drxdcKDwkVFBN0ilIiLdF8pm4BUxhBT0vuprPjyNWCBH6Y26aS4wKGq6d9+f7EJzD2cb5toAFStO9Y+kVsRSzQ2nzBwgUcqTCuXbp/lTFNK9PkDo+KvWIYzYb7q2+MLTlUrW0tu4uxXRYdhDamle6eErBi1ykXl1TjjJdNvIKmzA4YLhehklQxeHj7Ol6oP9YV2MASVs+vEovqeMk2u1iyw3GO4VpGx7RACi2Nr609LhNgcZDbH/iZf8hpyBWHcc2XrFU60CiX/Y41ChIoT8JHqOiJdrrjcBpLsr2QHDf/pmR/407iYtByl7Hm8XYxU31w5oc/gUpSNgEgyXmFn3kgUoCPK1SDnBzfTyLldy0UN1YLPlZhzcW0ca523/cm5M1PhJNCvF/nhtbW14JbBeONgOYt5q7VFfPZs3DpOse6HQNdrNBV5PL1K8=",
        "X-Exchange-RoutingPolicyChecked": "\n GUqnHGh8tigGMR3KL3XF+8thBzeRrYnFJ4PQIf8KTahgo3acsAXizA/J/BWegFuVisTHOFVWJi84llkVY0laaKiYzK4tbu+QtiqoT+Qr7ctIPad6CVUBCpqKb1y9BGsz6BH/IRwGXqsy/D5JPnbzFafLl4V60uPVgR6uReFfxMUucbLH4qH6kPLSRnUc4L4oZf9DSOThIdVxHr81ChzVtG1pnySd5zZevMpYcq0I81fdrUEGe3tIUXIa9zGKg8Gulrzf7MCNVc1ap7IuGL3Af1o5G9MBXhShQAlIdfmDZ5/4ETGjha49Y3XLsVEUrCEslcXw6s+d/jIpdHc9Uf6oGA==",
        "X-OriginatorOrg": "nutanix.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 6e168396-f713-455a-61b5-08deb10d7f1d",
        "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:26.0746 (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 LBDZQ1LfRRLc0LlZJO9ERNyW30k3VssJQCtqPr1pYLCJXw98eeyBIIbly9ZsUZ276R7LV08dUQUrDK2KK/8U6BeWnPepipcB1UxTIIIR2e4=",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "SJ0PR02MB8813",
        "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwNTEzMDE2OCBTYWx0ZWRfXzCGICApIilXE\n SuJ3bnip2GDfaA1X8zjurBtqAiC28HMc0bIOy38TdP4sT0afgVxTexRIGZUkXivnC9oL0jgG/1l\n kPmg4kNMRA/yBxLpp5N8YTJRIeoyTmJ2tROP420biv7i2BTV7XwWeZZQWSrplfeolCblx6f/FD6\n 5HqWjjsWBoSZd6mqwvbj+G/XT7D5Q4c7fRlxDcTrYuyngkwEe1dh5s9h0CTe9BeLToyyhMI/c9v\n JvXtIt8UDjCX4alZVqimgvecFtJzJrDibbFLlUMqFKh9YxQoRuUVKQoa5hzCgkBVmAo+0G7E5DB\n vOby3W4nzl24f6trndpBvtqxf9Bt6oLTXa22Ox7trNuA/JLJCansQW7iKv8Eem8tvUOt+/Hoop5\n vBVBQ68Jk9cV5s8xzqPYsachmpFkd6qmV55jMYD9TGYQBrf5quaABqZBe/jllrVtOBT2w2RcnX0\n n+9nAvjgJIhTq1i+auQ==",
        "X-Authority-Analysis": "v=2.4 cv=evLvCIpX c=1 sm=1 tr=0 ts=6a04a815 cx=c_pps\n a=+jjOclGHkOGhuepu6R0Llw==: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=0LlEyIVc8U2lsR7dKhuH:22\n a=64Cc0HZtAAAA:8 a=wZ7dmE2_5clyT-bJU3wA:9",
        "X-Proofpoint-ORIG-GUID": "m2j_JzDUZkGZFhLRUFiJiPf6kM7rWV5y",
        "X-Proofpoint-GUID": "m2j_JzDUZkGZFhLRUFiJiPf6kM7rWV5y",
        "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.155.12;\n envelope-from=shaju.abraham@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,\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": "Register all the defined Arm properties to the host model if CONFIG_KVM is\nenabled. Add property finder, getter/setter functions, and wire up the\nproperty registration in the CPU initialization path.\n\nCo-authored-by: Khushit Shah <khushit.shah@nutanix.com>\nSigned-off-by: Shaju Abraham <shaju.abraham@nutanix.com>\n---\n target/arm/arm-cpu-props.c | 216 +++++++++++++++++++++++++++++++++++++\n target/arm/arm-cpu-props.h |   2 +-\n target/arm/cpu64.c         |   3 +-\n 3 files changed, 219 insertions(+), 2 deletions(-)",
    "diff": "diff --git a/target/arm/arm-cpu-props.c b/target/arm/arm-cpu-props.c\nindex f22fe7f08b..1a34428c00 100644\n--- a/target/arm/arm-cpu-props.c\n+++ b/target/arm/arm-cpu-props.c\n@@ -41,3 +41,219 @@ const ArmCpuPropDesc arm_cpu_props[] = {\n #include \"arm-cpu-props.inc.h\"\n     { .name = NULL },\n };\n+\n+static const ArmCpuPropDesc *arm_find_prop(const char *name)\n+{\n+    const ArmCpuPropDesc *p;\n+    for (p = arm_cpu_props; p->name; p++) {\n+        if (g_str_equal(p->name, name)) {\n+            return p;\n+        }\n+    }\n+    return NULL;\n+}\n+\n+static void arm_single_field_get(ARMCPU *cpu, const ArmCpuPropDesc *p,\n+                                 Visitor *v, const char *name, Error **errp)\n+{\n+    uint64_t value;\n+    char *s;\n+    bool b;\n+\n+    arm_idreg_field_read(cpu, p->base_field, &value);\n+\n+    switch (p->type) {\n+    case ARM_PROP_STRING: {\n+        s = g_strdup(arm_arch_val_name(p->base_field, value));\n+\n+        if (!s) {\n+            error_setg(errp, \"Property '%s': unknown value %\" PRIu64,\n+                       name, value);\n+            return;\n+        }\n+        visit_type_str(v, name, &s, errp);\n+        g_free(s);\n+        break;\n+    }\n+    case ARM_PROP_BOOLEAN: {\n+        b = value != 0;\n+        visit_type_bool(v, name, &b, errp);\n+        break;\n+    }\n+    case ARM_PROP_NUMERIC:\n+        visit_type_uint64(v, name, &value, errp);\n+        break;\n+    default:\n+        g_assert_not_reached();\n+    }\n+}\n+\n+static void arm_fractional_get(ARMCPU *cpu, const ArmCpuPropDesc *p,\n+                               Visitor *v, const char *name, Error **errp)\n+{\n+    uint64_t base_val, frac_val;\n+    const ArmFracVal *val;\n+    char *s;\n+\n+    arm_idreg_field_read(cpu, p->base_field, &base_val);\n+    arm_idreg_field_read(cpu, p->frac_field, &frac_val);\n+\n+    for (val = p->vals; val->name; val++) {\n+        if (val->base_val == base_val && val->frac_val == frac_val) {\n+            s = g_strdup(val->name);\n+            visit_type_str(v, name, &s, errp);\n+            g_free(s);\n+            return;\n+        }\n+    }\n+\n+    error_setg(errp,\n+               \"Property '%s': unknown fractional value %\" PRIu64\n+               \".%\" PRIu64, name, base_val, frac_val);\n+}\n+\n+static void arm_cpu_prop_get(Object *obj, Visitor *v, const char *name,\n+                             void *opaque, Error **errp)\n+{\n+    ARMCPU *cpu = ARM_CPU(obj);\n+    const ArmCpuPropDesc *p = arm_find_prop(name);\n+\n+    if (!p) {\n+        error_setg(errp, \"Property %s not found\", name);\n+        return;\n+    }\n+\n+    switch (p->type) {\n+    case ARM_PROP_STRING:\n+    case ARM_PROP_BOOLEAN:\n+    case ARM_PROP_NUMERIC:\n+        arm_single_field_get(cpu, p, v, name, errp);\n+        break;\n+    case ARM_PROP_FRACTIONAL:\n+        arm_fractional_get(cpu, p, v, name, errp);\n+        break;\n+    }\n+}\n+\n+static void arm_single_field_set(ARMCPU *cpu, const ArmCpuPropDesc *p,\n+                                 Visitor *v, const char *name, Error **errp)\n+{\n+    uint64_t value;\n+    char *str = NULL;\n+    bool b;\n+\n+    switch (p->type) {\n+    case ARM_PROP_STRING: {\n+\n+        if (!visit_type_str(v, name, &str, errp)) {\n+            return;\n+        }\n+        if (!arm_arch_val_from_name(p->base_field, str, &value)) {\n+            error_setg(errp, \"Property '%s': invalid value '%s'\", name, str);\n+            g_free(str);\n+            return;\n+        }\n+        g_free(str);\n+        break;\n+    }\n+    case ARM_PROP_BOOLEAN: {\n+\n+        if (!visit_type_bool(v, name, &b, errp)) {\n+            return;\n+        }\n+        value = b ? 1 : 0;\n+        break;\n+    }\n+    case ARM_PROP_NUMERIC:\n+        if (!visit_type_uint64(v, name, &value, errp)) {\n+            return;\n+        }\n+        break;\n+    default:\n+        g_assert_not_reached();\n+    }\n+\n+    if (!arm_idreg_field_write(cpu, p->base_field, value, errp)) {\n+        error_prepend(errp, \"Property '%s': \", name);\n+    }\n+}\n+\n+static void arm_fractional_set(ARMCPU *cpu, const ArmCpuPropDesc *p,\n+                               Visitor *v, const char *name, Error **errp)\n+{\n+    char *str = NULL;\n+    const ArmFracVal *val;\n+\n+    if (!visit_type_str(v, name, &str, errp)) {\n+        return;\n+    }\n+\n+    for (val = p->vals; val->name; val++) {\n+        if (g_str_equal(val->name, str)) {\n+            if (!arm_idreg_field_write(cpu, p->base_field,\n+                                       val->base_val, errp)) {\n+                error_prepend(errp, \"Property '%s': \", name);\n+                g_free(str);\n+                return;\n+            }\n+            if (!arm_idreg_field_write(cpu, p->frac_field,\n+                                       val->frac_val, errp)) {\n+                error_prepend(errp, \"Property '%s': \", name);\n+            }\n+            g_free(str);\n+            return;\n+        }\n+    }\n+\n+    error_setg(errp, \"Property '%s': invalid fractional value '%s'\",\n+               name, str);\n+    g_free(str);\n+}\n+\n+static void arm_cpu_prop_set(Object *obj, Visitor *v, const char *name,\n+                             void *opaque, Error **errp)\n+{\n+    ARMCPU *cpu = ARM_CPU(obj);\n+    const ArmCpuPropDesc *p = arm_find_prop(name);\n+\n+    if (!p) {\n+        error_setg(errp, \"Property %s not found\", name);\n+        return;\n+    }\n+\n+    switch (p->type) {\n+    case ARM_PROP_STRING:\n+    case ARM_PROP_BOOLEAN:\n+    case ARM_PROP_NUMERIC:\n+        arm_single_field_set(cpu, p, v, name, errp);\n+        break;\n+    case ARM_PROP_FRACTIONAL:\n+        arm_fractional_set(cpu, p, v, name, errp);\n+        break;\n+    }\n+}\n+\n+void arm_add_cpu_props(Object *obj)\n+{\n+    const char *type;\n+    const ArmCpuPropDesc *p;\n+\n+    for (p = arm_cpu_props; p->name; p++) {\n+        switch (p->type) {\n+        case ARM_PROP_STRING:\n+        case ARM_PROP_FRACTIONAL:\n+            type = \"string\";\n+            break;\n+        case ARM_PROP_BOOLEAN:\n+            type = \"bool\";\n+            break;\n+        case ARM_PROP_NUMERIC:\n+            type = \"number\";\n+            break;\n+        default:\n+            g_assert_not_reached();\n+        }\n+        object_property_add(obj, p->name, type,\n+                            arm_cpu_prop_get, arm_cpu_prop_set, NULL, NULL);\n+    }\n+}\ndiff --git a/target/arm/arm-cpu-props.h b/target/arm/arm-cpu-props.h\nindex 1dc3786ea9..48f9c46ccb 100644\n--- a/target/arm/arm-cpu-props.h\n+++ b/target/arm/arm-cpu-props.h\n@@ -32,5 +32,5 @@ typedef struct ArmCpuPropDesc {\n     ArmFieldIdx frac_field;\n     const ArmFracVal *vals;\n } ArmCpuPropDesc;\n-\n+void arm_add_cpu_props(Object *obj);\n #endif\ndiff --git a/target/arm/cpu64.c b/target/arm/cpu64.c\nindex a93ad2da5a..0300f8677f 100644\n--- a/target/arm/cpu64.c\n+++ b/target/arm/cpu64.c\n@@ -37,7 +37,7 @@\n #include \"hw/core/qdev-properties.h\"\n #include \"internals.h\"\n #include \"cpu-features.h\"\n-\n+#include \"arm-cpu-props.h\"\n /* convert between <register>_IDX and SYS_<register> */\n #define DEF(NAME, OP0, OP1, CRN, CRM, OP2)      \\\n     [NAME##_IDX] = SYS_##NAME,\n@@ -863,6 +863,7 @@ static void aarch64_host_initfn(Object *obj)\n     kvm_arm_set_cpreg_mig_tolerances(cpu);\n     kvm_arm_set_cpu_features_from_host(cpu);\n     aarch64_add_sve_properties(obj);\n+    arm_add_cpu_props(obj);\n #elif defined(CONFIG_HVF)\n     hvf_arm_set_cpu_features_from_host(cpu);\n #elif defined(CONFIG_WHPX)\n",
    "prefixes": [
        "RFC",
        "v1",
        "10/13"
    ]
}