{"id":2237947,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2237947/?format=json","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=json","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=json","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=json","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"]}