Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2237947/?format=api
{ "id": 2237947, "url": "http://patchwork.ozlabs.org/api/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/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-11-shaju.abraham@nutanix.com>", "list_archive_url": null, "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/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/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": {}, "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=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" ] }