From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820088; cv=pass; d=zohomail.com; s=zohoarc; b=kaxgBhyI6TIpz9rBoZOloXFjFuxWyB8BiHD50AJ+hKKnLC2VsC6bjy5ZKr9MkaHovp1OxWiwHoI4Ex+vnKNiKciKlb07ytjL3vRGoZobpV/WpZZtC9MKXEtQShJIoKcfQN/feB6iETm9BfAIUymAc+zpXm8m90CYdYbGR0S+QbI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820088; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=DxsAvt+6fkUAG9dDgqIBO8WZCQmt2HNRBv4jRz+7EPk=; b=XZaem9sQNtk5goUpmD6zbfEmnpdUies5Q2Lxp6UaMeKK1MdyEGZxzuo+gJgaHzBNhuA3pUuCzkN4SBwUrxXdaC/Qa/aCuJDQ1M3YKf6/2fWd3SwVyJZKQruKoDCwO+m6oe2O+F79furywd7wN+u+cWdpZS5FkJoRgQXV/OmqUrE= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784820088670824.5356713153288; Thu, 23 Jul 2026 08:21:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvCr-0003vt-1q; Thu, 23 Jul 2026 11:19:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvCq-0003sq-4n; Thu, 23 Jul 2026 11:19:28 -0400 Received: from mail-japanwestazlp170120003.outbound.protection.outlook.com ([2a01:111:f403:c406::3] helo=OS8PR02CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvCo-00081v-HN; Thu, 23 Jul 2026 11:19:27 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by KL1PR02MB6215.apcprd02.prod.outlook.com (2603:1096:820:9f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.11; Thu, 23 Jul 2026 15:19:14 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=y25bWUUHd2yHpylR1zeRMPUpdlc1A0XeSKehHWyTdh/7iAVCNvv54u2K2Izs4U9+YOAnzLe96eWhnys/SObuyqrNq/diXNMxpLJ2HSkkSZAFm5nIoU39tcUT5VL55P1TSMwrU/SSbKl6VOJ5ztrt2ogdpxlV63DoPFe12MQPAH7ge+dFoWfkdZcDAsoa/7dtI1keYseDea122H1EvS3QFX9SgzsEQOPqfA/zSvHFWg02IPyPpbI+XKPZINCKcuOlm846RvUq32HOX2KjDCRtyqzKHnMzRkSI2NPQZlxjNrhn6WXmgW2XRbexFYl6GqW4vBUiHQ4q5iMNJ70rvuYGpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=DxsAvt+6fkUAG9dDgqIBO8WZCQmt2HNRBv4jRz+7EPk=; b=Lhc+yzTl7poeBvu/hLvFCf6Y9RESrSoRf4XbYjKJqgykGkD5KW18ic61UvGpvOCAzPmyATmYnP8iDos01xyvn34MSijPVfVBG0F29rxBEij7NcxoR7CNupepFpGqRsqiQ701v6PPpxvVVW/UdvpfcDTB2U1wDpJ7Bp2s6bcw2cmddFBGf/H4H9ohZyw75v38OiHAk9pbzkjCXnWaMGLWsZFhoM66lmCbNTdSY83sa49eizCTFSbOYdLL1yOPx+sQIY9BtJ/6BOggOwpke9IILTYaa/oc+CvIKDHdsrak4+gKduofCLtV9G0RPI2Zo6TdLSuJT+Oj9ClFXCbP6C1exA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DxsAvt+6fkUAG9dDgqIBO8WZCQmt2HNRBv4jRz+7EPk=; b=VRfpHZ5s4wV+b60A6/DpB3cf8VtDdLdfnCTWXphUb6GQsH/rQif5ejm0f796iixOj60UJGkTfmnmHysov4/+QgpCXdJnUfPNU7gqi9mj0uHLxwpVsgigPK0uzm4QungBMnu6j5wl1sNUgJeeTzjNcLjnoqTcWODOONWmzhf5/uRzz7kkGQlP3zulWThKpPlvdXCSQLBvfErV26Se9WcBxbaBMS3HbAG80la+TzdPgVl//9O/Jaz23hS9MKeSjuYR1fZu5h3OUHcpgnK53rCySHHrX/q0VoS0EQOAdw8215ypbm86urk57+hMTYU5uBkH7V5E+xn2M29hhVyjH5D8ow== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Alistair Francis , Chao Liu , Conor Dooley , Daniel Henrique Barboza , Liu Zhiwei , Palmer Dabbelt , Sebastian Huber , Weiwei Li , qemu-riscv@nongnu.org Subject: [PATCH 01/26] hw/riscv: pfsoc: Correct the L2LIM maximum mapped size Date: Thu, 23 Jul 2026 23:18:28 +0800 Message-Id: <20260723151853.2143177-2-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|KL1PR02MB6215:EE_ X-MS-Office365-Filtering-Correlation-Id: 8c208bb3-796d-4ac2-c943-08dee8cdc0eb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|23010399003|1800799024|376014|366016|56012099006|10067099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 1znknnqgsta/LPVti2jepukKEc+7DLSu3dkwa8LpgeIVuq9Hf3h2xbL5N7ixzm2yiU/AMFSXcQ6IzWHkudkIXh1IR/8Qaeh06D0vplpNSp3LMbaH8dWHIRbFQQ2JRruIqKB1b4HbHSZ0YgsqHwqTktamT43RlHzLhK74+4teeG/HxeK+I+I/7u/8HS+A60Cwib8u2XXfTDDphKDd730NSbEKG5LPpe6qFZA/+n2hJYOTldO6572tfbx99A6lSl1NSauPqyGihX2izTOo51QUPT/FxMTPQCkXh4wlzrsRRNpxVaIqQ/l0y2tDHc+stQmDz5+RVnJwLoXPuAiGl+oAQRhXNFDEHSDs4z21NfghZsmNOEccRc74edrQHmWiKy9fTzo0eKPlI2Yom8ytwqoXn00YVrV3CqR6lxmYaxEZ1R4JDAIBt8sbYUvDfeYatIcpTdH/45xuGKTlyx7ylAHKU69XXKyCcjs2DynGmIls0xDgxJiizchvVgIPcH5XA5W/4egd4VY6cEiQyK+ZI6SKT64pbz9O6bXSMIhIf3aICwVRAkq/nWudnt5r6rSYblBYNgQlypXvIiyrkquHNPR9nPTg7gJoVpaW6A0h5cIlXhNWZmOgiRBnbyZl0g+jHkoMda89kvTGdCizbLegrc+m7w== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(23010399003)(1800799024)(376014)(366016)(56012099006)(10067099003)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?5v+HsQvrPJCPv952Lz9k3jE4vNrTUPzrCWNCGitIzW9fTepQyMvDIANDdLQH?= =?us-ascii?Q?jtZa15YicOyx0Kbqifi9lWkfY3ZzDFuvGxxYeXPsQXG9nZd5CqP1ZkzL3xZM?= =?us-ascii?Q?yh2n6FqHx1Kt9Hw2gXuAnWc3LHZ6/6fh+iefFsKnJn+XkbN0vIc/rebvP9JF?= =?us-ascii?Q?422YsCa8rxvCkTzHtKdcnVeqHCYsx57nNPuVd3fd4ehiUyBnTN80lQaYZ3FI?= =?us-ascii?Q?wQLMB7Kz6YH+sBMWZL/kq8VIIOakY19TI/lN2070CskEQ7rsPpC3IDtcYktf?= =?us-ascii?Q?N56efy6fpOxJP/Ks5x54c+2S/GpPkeisUM1g2ka6T+sCQKsmHt/YGLSqML1E?= =?us-ascii?Q?CgzKBQqcbVUHlssEMvzE3QpDXI6X7YjqO2eJ0RTCoUh2BGV6XzO1YzsCi7po?= =?us-ascii?Q?HpNTk3UFTxtWMQaU5RWIsZE8oX+F5F652lCW2Gx4Dy9WQ3pfwobDsXowuzGh?= =?us-ascii?Q?dupT+TOBWXLnXJ7B5n1jI5RMr7aP1D2ngmf7mDVTOihhL6Qc8SSrCuYUZmXc?= =?us-ascii?Q?DqKOArQKYAz7cwv5vvjjRrxdbEZcV6KkSA3Xn2b2/fC67cGdC/dHTnETm98/?= =?us-ascii?Q?tHSyO0F648g9+Vrhm18mZgDNwGD1ni40jNOig0LMQ9cGsr1nJV4cW+a1dedQ?= =?us-ascii?Q?Co8sAt7qGP9WKWlQXr2RvD84TG3tzRgAlkey6u+gwywFtbj93KhntkWTMf9r?= =?us-ascii?Q?MPzSCKRA3PX7bMO84V8qzTD+AGE9JA6BpvVEnvMFW4HcKMr9A+ESqu2ArsOa?= =?us-ascii?Q?4vG6dyLOlvOziUnaz03iXA6i42a2JAaIZO6t4fwpvOnqIC8/LxnFYegLvUix?= =?us-ascii?Q?WgsJUjr/0zt2xqyapm4aKK3SsiBnqA+XJkkQYE5qXD2j7AANYPhgg/o2dVLn?= =?us-ascii?Q?Sf8rjRNzJJnrOLta37ISv9VSVKl8sjtsA4Oz/uCdHd389ilgftzpl+cTxalp?= =?us-ascii?Q?OOF4cO5xn7uoyg8K8VEo8UijXDlJMAH06LcNOzoEFNlRKPmVdFpO0vExlC/Z?= =?us-ascii?Q?oFoyodACiAZD2xKL52Zee/D7Lk18NiyEUbsRA/6TpKwlHbOSVmmCEDmqdFPs?= =?us-ascii?Q?C7ppiJ9hUkIFZbZz/2tvfDyLCt/iJxUBNWk+lgFDhZcEMUjhpK0Ct6WYIEcL?= =?us-ascii?Q?I8nfFdmPq/arephGh3OEFPJ/gtNxLiJJLsHEFYUmF7015bdG8uJOPn3vNIwP?= =?us-ascii?Q?xMe17dH8hg6amRP67ZDPIVtzoxWRgkA6NPioY8f6BVRwLx0TkSRurCdayn+p?= =?us-ascii?Q?V7dGpNMbM5s3OS5FukPBaH1reFKKfKmZjIssD2AdPR4cn7YfeSx+LaYvqc0B?= =?us-ascii?Q?pNWSehsASMMEMQTm+HOruX0raQYUE2/doMeEraAknaEoRyMeODGX2wDvK4A6?= =?us-ascii?Q?u77wFcZ1J4/tVjb32dLN9UM8Tu4ePj7HTfEtdI53R905tOliacukXcoNb+nn?= =?us-ascii?Q?zSAEoUBybeiHCIOnHaQG/dw49QZDOv6oHIenVPPALDsyESckWAX+7GYr0/ka?= =?us-ascii?Q?tJ7HT09XpxYTu+mG9B4P0JnkRfQWmizlbcvNac83fJ7lspDyNSmjMk2qY1Uu?= =?us-ascii?Q?Om/KNAAaneY85iF8tfDBgUn+a3Ok6eYYG8tN8suo9o+aSWNhJNJMFzDf09ym?= =?us-ascii?Q?bdhGwKqQx4TEHpLjBfhKBI4YaFB9NTb7yLeePQOrF35ptHYdDTtx6Kw5a/Bu?= =?us-ascii?Q?3HOncqBbLFXhL6OEWWUKluvd6IJ+lXxPugJweffAO5iR4Ec3naEFnaSLWxmy?= =?us-ascii?Q?xuKqbL5kJ1AwyLZEEs23FvO8qcecjI4=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8c208bb3-796d-4ac2-c943-08dee8cdc0eb X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:14.3578 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: fw+FUqgOyQNFUcofyeYGIElXpVs5JYTPEqZn9H2K7e+qin8KO5QoEytJA9VQr5HBWMxfcV94PIpzdPzVdCVvVazXEmaJpB737ZtTNjbGD1s= X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR02MB6215 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c406::3; envelope-from=bin.meng@processmission.com; helo=OS8PR02CU002.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820089802158500 Content-Type: text/plain; charset="utf-8" PolarFire SoC has a 2MiB L2 cache, so the maximum mapped size of L2LIM should be set to 2MiB too. Signed-off-by: Bin Meng --- hw/riscv/microchip_pfsoc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c index 4017129c83..218cccab69 100644 --- a/hw/riscv/microchip_pfsoc.c +++ b/hw/riscv/microchip_pfsoc.c @@ -96,7 +96,7 @@ static const MemMapEntry microchip_pfsoc_memmap[] =3D { [MICROCHIP_PFSOC_CLINT] =3D { 0x2000000, 0x10000 }, [MICROCHIP_PFSOC_L2CC] =3D { 0x2010000, 0x1000 }, [MICROCHIP_PFSOC_DMA] =3D { 0x3000000, 0x100000 }, - [MICROCHIP_PFSOC_L2LIM] =3D { 0x8000000, 0x2000000 }, + [MICROCHIP_PFSOC_L2LIM] =3D { 0x8000000, 0x200000 }, [MICROCHIP_PFSOC_PLIC] =3D { 0xc000000, 0x4000000 }, [MICROCHIP_PFSOC_MMUART0] =3D { 0x20000000, 0x1000 }, [MICROCHIP_PFSOC_WDOG0] =3D { 0x20001000, 0x1000 }, --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820360; cv=pass; d=zohomail.com; s=zohoarc; b=IAKa94v4+ks9l4FJO953aiXVv5rWugwwY0r7+IYGtTFivih0dPJHqQxwtnfBJdoBaKkVPGSO/ZkpITIyrrePlvAXZQS9N0VjZfNguV3yCq+u5MndjqJSO2+KD6ebpZmhMeyLpYs4/mNXSkFaLrY9tKqDxFL8qAogOafJCEmrGFc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820360; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=G6RtfaFuncVDNGD1RNqTDJeog9eykOiM2rsSnnHAZvk=; b=JkACqdb2CaHsveuTcnhQ3K03uKYux4doBNqpWFABhbyYjhwyI5tcB50VCUkZVsjx5kTTOCErVXAat64HSWPmXNB/8Ffpt6+Sd/swmnRV73mRLqtjz25zKRhAivMwIlRYALzY3ryk5yOfYrBMvkb2d2muYpqSPAPYPP67hqUoDrI= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784820360381390.54761554676827; Thu, 23 Jul 2026 08:26:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvCt-00043M-AP; Thu, 23 Jul 2026 11:19:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvCq-0003vG-RQ; Thu, 23 Jul 2026 11:19:28 -0400 Received: from mail-japanwestazlp170120003.outbound.protection.outlook.com ([2a01:111:f403:c406::3] helo=OS8PR02CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvCo-0007zZ-LJ; Thu, 23 Jul 2026 11:19:28 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by KL1PR02MB6215.apcprd02.prod.outlook.com (2603:1096:820:9f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.11; Thu, 23 Jul 2026 15:19:16 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qIGeYft2omkqcHwNdS11mKo/3LYJxZITX/OYuFDKAvC++bSzx5j2rDV0FjAtG6eKgEkFMIT7qUt3P9wJE2iaBTfQrEwrX5zvADncDm5K44LL/jUCcUA+BDZpy+rwK66fSIQL27Qi+UfTvSiOICA2whHj4cFHD0F0ZE/W8OOwrnRnP+txcxCqPqCCiHJJUVpPaIhaXDP9G/xck/KWWqYN2BK9ewEvU80JUhrF4yzKljmjgXz/su3J/+dQPzGqidsmoSMifVUz+Y9eQikq4/9yWksCaaAZeDvOiWzXSwt0cq7AmeqAdep/Mh5HWpZM9dzf0s4tRB91ClNb134lp8AHJQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=G6RtfaFuncVDNGD1RNqTDJeog9eykOiM2rsSnnHAZvk=; b=nvAWslad16RXOfB9FKvkuPe4pasxz8roRujRcRzeL74T87OEhaqHpzjh8F3+FthCeg/WcdUkWmr/0LwYwjP8VOmI58i/mgYHqkO+HXTo9yy0qWHdykftCEkoRpKgKRX2h3up0uhgqVksPjsBkSoym9uIUm50lwy2d7rMNaFQN0kaV8snuFXrVqIJR15AxmXH2Hzshk6XjlURhoTCXy6DngUDZbpMfHCJegUIKW1XuWnjwti0bb6BXSP7jU7JhITGrLFt3XSiYve0eX8/lWau8Nd8ZKzbqoocCSbo7ML4mZXdvmJYpcxc8KqcZCTnLutCP6l9LOE77Z60dR+e1UPP0w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=G6RtfaFuncVDNGD1RNqTDJeog9eykOiM2rsSnnHAZvk=; b=nfRu5MlK8uTZbDB2DZxAQ8zkSMxOGHwfdjbDx/aAAR+sNYKzYhLHDHUkTaD1YqlZW0twaU0SR2iHWWLrZ4EXEFB2FQgAI87Tvnybek757ztxlVv1wTgUrvyMAQJa5SRtviSV7HWj5KnNNqGnWjsXWasVXuOMfLoi5XUr0OmfJEK8n3N5DaUXvx+Rngpg/AU6yCfBaGlE+VATmroOz75FYOaW7NAteeAIEdsfAq1FjwhwyPHcdpShPqehq4xzDM47MDsTf719yQCMWax5JyW5Hg43I32MxTJse1OiGTspmUITlZ0TGk7xlFsr2JkxXCy/93KOVCbHS+ruGN1h+/WbiQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Alistair Francis , Chao Liu , Conor Dooley , Daniel Henrique Barboza , Liu Zhiwei , Palmer Dabbelt , Sebastian Huber , Weiwei Li , qemu-riscv@nongnu.org Subject: [PATCH 02/26] hw/riscv: pfsoc: Map the L2 zero device window Date: Thu, 23 Jul 2026 23:18:29 +0800 Message-Id: <20260723151853.2143177-3-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|KL1PR02MB6215:EE_ X-MS-Office365-Filtering-Correlation-Id: 53b5db24-76a8-4893-cad5-08dee8cdc254 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|23010399003|1800799024|376014|366016|56012099006|10067099003|18002099003|22082099003|6133799003; X-Microsoft-Antispam-Message-Info: h8T+G4pkfvCdso7hwwBb0jOlduem5gTzeNJk4qFRB411o6QrNFN0lUfjzCLQJW34M+b53S4jG+wy6Y+6buhyieK+qiLcRkbH7UEfpIl4ZLohK/sVYI6C69FocZF+lrbCWbkJMGUx7ymXMMiDxR7h4ehZZ2CifCvWb/CEJZxlJnqfmnk1gjthhpBfxfQHG/3zZPuQ+4Yma5sEbd3rl59JqibbiSVEoH34P5fzp67dzoUz29OJ7bXDilBHoTEHkVtpCE35OH7Y6sXeqnc8LEV4dBZwKvz6dNbk5lQ0VqoAkpc+vm4Nve51tY1+riIGCzG50dAtpBPGU0E4Vg9krMZ+Iso72wrSxS7N65VkWaebOsxDcGoagTWcsIyQFbZVlID/Gtbg3uaRq68SAVbcVbAt66tWKyE2+doIRo2megZ1TELkDfc2oykU0ugud+53YTnMFvi2W0Agsd62nRaU4YSgh0kU2pyXB9EdznQ5qhRSkG1HtLlybfSacZc3nWKraFi/ihwRAu043mV4Bf4XNKkc9HeHq3aGYpCPi8FzLnSZrrW4gckS5dmgdY0an7Q4ingPhJHpQjgoLk0QBipZv16E2Agf9ynGzFIISc9uRSgaHomWYEJBnh7Eo4GmAoXkgXsOCapjKqlxVVPi7U3mIefYvuDyXA8zRhXIxtTjsZf4c1M= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(23010399003)(1800799024)(376014)(366016)(56012099006)(10067099003)(18002099003)(22082099003)(6133799003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?cnJgfk7/tVXDvWYX8AXTpQXyraTl+Ho2SlhXHJfDl3jzsDrOvNCLbWhdSkZ5?= =?us-ascii?Q?/ZlkY7beHIjEnu4biz3/56wO1HhECopQqT0iTiv+z+OsxjbP/+Sh0fIvs27c?= =?us-ascii?Q?70FZxC2Gf35n7aBg505bjlvXDN0/PBe9Hb9sbC++elH1XANXxc3sYUpcBgAU?= =?us-ascii?Q?OasWVVj9j1nyE0ru1IwEO0Om6GIOY5LMt1E/Tmx6ulbDKOjCtdKxY6SjH3JD?= =?us-ascii?Q?Tg76GAw+SY87jB+TQLZVi6KnB6JKodjJz0aY7oI98MckED0GYfrDnVZFbMJ6?= =?us-ascii?Q?X5Cz6oksSAPKDTdEW5wq3V4lszhP0W+qLYSOUTqhGA3GXZsDGazZaTidEJqG?= =?us-ascii?Q?F1QCG8J+qqXDNeG1Uj9SXgwF6Lp9gMuZu7/4iSpVpRDrZqjEfiRox05sS6gY?= =?us-ascii?Q?gldVHHv3Q1pWS1VmW6bEhLlghB2ejfA+vFZCTi6mx/97BMvEiJiI75SROg5Z?= =?us-ascii?Q?TFfPa/SuGciaZ2dg48GVWFNn0cT4UZUrhFgeOKn+C/68yGehCe+I2bOeQKBo?= =?us-ascii?Q?Dil2Iqc8TD+SsuYd4MtQCrvDAOcdVrLmPz/k8WR/PXr8oqoDYjBkcpbcrvko?= =?us-ascii?Q?jd1R/uAWxBdgR8VGIMfyAeMUEP7xzLPlJqz8t7mfOwN7mVARZEEYQogzSNe6?= =?us-ascii?Q?ZEOjqX9iuCID0wLQa94hVBFgnr3ERT2t8DtewcTydF8zY1tdzDQoymMWsZs3?= =?us-ascii?Q?gDZDFClBN/WyBTIX2VRGwREtzhxeIBi7jYLKtraokyTYIeVAS/GTq5v9s+Bq?= =?us-ascii?Q?hm+Si5drm+dVstuJniUGpRZ4O1ijehjc1FtEsqYadMy5P0WFdFYOeKKTTEm3?= =?us-ascii?Q?DjMs45s31RaMCi0Uls2AYvwY1Bjb/LQSnxFph23A3VO+OfWbuXGFIcOsplPj?= =?us-ascii?Q?kknNAUGu+EYthET7ad+vK590C4OE8cReKMgvMp0sImrJLuhtkvtEOINhzGax?= =?us-ascii?Q?uGupaw1eMW+slKqYBUHDgDwtvi4QswYL8lToVKLlQ/WfLN8ecP2kQrlcuh5L?= =?us-ascii?Q?wkU/IOShkVbppdY/DG+EB1RCdTt2PToIh+Imd53eVlr4sUfqPBviVbKdaIot?= =?us-ascii?Q?76F+Gbo9SFxN+QXsEWjf8rnuD/qDVwTY1MIDGIe80ZuSN68tFvQ4IxldBOP9?= =?us-ascii?Q?c4H7drPNLHvHMdXgZh6V8jDY5Zk3yoflBoDbAKegwn/hCb05DCuPAc+n8lC9?= =?us-ascii?Q?PrCUSHPq0YjnEpHP+TZwMf9nozC+JRdb7ptuRLMqjkeXwc22gmQNBkmBvBBL?= =?us-ascii?Q?y7/JLOpawezkUhF9Mtc3GklSuoK2hXSzbxjCGYubNY0DGYSaiOW4PiU4UVTv?= =?us-ascii?Q?b+DjwSFUICfrgerGYP5ckHQQbD+CDhigd6+30cf6Oky22qyrdsjfV0KJzdJV?= =?us-ascii?Q?N4n+Ih9uNRcB3pQFTfLk6bjjLpv3WQlE/d09bazApGumd0fCxB7flsKZscmG?= =?us-ascii?Q?bqfwogNbg3sX8x0LDhXGy3UvINRohoVeQgzg51hU7flz3Qg0ztemSBEbKgVV?= =?us-ascii?Q?g8n3EDAhV6K1BBhE6sQv2t9LFJSRgf459oXD1ZSyXeQkl006RR2MiLD94P8Q?= =?us-ascii?Q?s04xc0lfgqT3Omd4oKokEN54qyB18tde8XCFzhsKzdBkIHRC2/mexxDJEiny?= =?us-ascii?Q?/ohKeALtVs781Oc4eBjFU971SJKTYwEu4i6i+zpTyrIkvDAIT0Ty6YPF4qXg?= =?us-ascii?Q?QwwhdDLSyEtaDCJ0VFg4l/HDd7rKpuOQkpoPRp8L7Z1DTNzGjlWr6ebrf1dq?= =?us-ascii?Q?G3FxFqEpySl2fEOTVSpQ2m26dZh2HuQ=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 53b5db24-76a8-4893-cad5-08dee8cdc254 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:16.0319 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: bN3DhbNIgzQGE/Tuikoq391WN/h2d7tFvPwRa1VXN2onjOu4E3c6DlVsicFDnwQ0XpkV5Xh2qGtL0bhJKHVTcp6L9Ntam1oezzbgHUGyIHw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR02MB6215 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c406::3; envelope-from=bin.meng@processmission.com; helo=OS8PR02CU002.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820361834158500 Content-Type: text/plain; charset="utf-8" HSS uses a window at 0x0a000000 while setting up the L2 cache, decompressing its runtime image, and executing that image. The missing mapping causes the E51 to trap before firmware can initialize its UART. Represent the window with RAM to provide its persistent read, write, and execute effects without claiming to model the L2 cache itself. Signed-off-by: Bin Meng --- include/hw/riscv/microchip_pfsoc.h | 1 + hw/riscv/microchip_pfsoc.c | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/include/hw/riscv/microchip_pfsoc.h b/include/hw/riscv/microchi= p_pfsoc.h index a30b944afa..612fd2b69c 100644 --- a/include/hw/riscv/microchip_pfsoc.h +++ b/include/hw/riscv/microchip_pfsoc.h @@ -90,6 +90,7 @@ enum { MICROCHIP_PFSOC_L2CC, MICROCHIP_PFSOC_DMA, MICROCHIP_PFSOC_L2LIM, + MICROCHIP_PFSOC_L2ZERO, MICROCHIP_PFSOC_PLIC, MICROCHIP_PFSOC_MMUART0, MICROCHIP_PFSOC_WDOG0, diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c index 218cccab69..fd28ee75fe 100644 --- a/hw/riscv/microchip_pfsoc.c +++ b/hw/riscv/microchip_pfsoc.c @@ -97,6 +97,7 @@ static const MemMapEntry microchip_pfsoc_memmap[] =3D { [MICROCHIP_PFSOC_L2CC] =3D { 0x2010000, 0x1000 }, [MICROCHIP_PFSOC_DMA] =3D { 0x3000000, 0x100000 }, [MICROCHIP_PFSOC_L2LIM] =3D { 0x8000000, 0x200000 }, + [MICROCHIP_PFSOC_L2ZERO] =3D { 0xa000000, 0x200000 }, [MICROCHIP_PFSOC_PLIC] =3D { 0xc000000, 0x4000000 }, [MICROCHIP_PFSOC_MMUART0] =3D { 0x20000000, 0x1000 }, [MICROCHIP_PFSOC_WDOG0] =3D { 0x20001000, 0x1000 }, @@ -201,6 +202,7 @@ static void microchip_pfsoc_soc_realize(DeviceState *de= v, Error **errp) MemoryRegion *rsvd0_mem =3D g_new(MemoryRegion, 1); MemoryRegion *e51_dtim_mem =3D g_new(MemoryRegion, 1); MemoryRegion *l2lim_mem =3D g_new(MemoryRegion, 1); + MemoryRegion *l2zero_mem =3D g_new(MemoryRegion, 1); MemoryRegion *envm_data =3D g_new(MemoryRegion, 1); MemoryRegion *qspi_xip_mem =3D g_new(MemoryRegion, 1); char *plic_hart_config; @@ -277,6 +279,17 @@ static void microchip_pfsoc_soc_realize(DeviceState *d= ev, Error **errp) memmap[MICROCHIP_PFSOC_L2LIM].base, l2lim_mem); =20 + /* + * HSS decompresses into the L2 zero-device window and executes there. + * Model it as RAM because QEMU does not model the backing L2 cache. + */ + memory_region_init_ram(l2zero_mem, NULL, "microchip.pfsoc.l2zero", + memmap[MICROCHIP_PFSOC_L2ZERO].size, + &error_fatal); + memory_region_add_subregion(system_memory, + memmap[MICROCHIP_PFSOC_L2ZERO].base, + l2zero_mem); + /* create PLIC hart topology configuration string */ plic_hart_config =3D riscv_plic_hart_config_string(ms->smp.cpus); =20 --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820204; cv=pass; d=zohomail.com; s=zohoarc; b=Gc/+XVTyb6iGZoOZce6YuZ/4NyDDE6WMcxVYZDiuAi9RjkiV2UQHvist/lqaFOTi7hCdzoF8f6D4pkcjqgo//fPUPKGiXHcnPmze3SBnFhxzbsiHdYlj785DhYKNSeZTShcFgocpVY/eqMfeXxeW0TAgTtkMKaws+nw+D1O8/Ss= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820204; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=5wYrVDiK0b+IKPefObTgD4xoi35IUbw4JoICN7zd96s=; b=bNlz/Tya4uKryeKoQ5+0Bi1xZ4JBARWLkDtlRGWt2/TkjWRjeTlyvqvu2d2tcSFVttHLH5PoeyZB7vqGO5N7bqnSF8ApYw9J9xSaLKnGR7jcA6R9h9ZVtV8TAueaxwj8OOVZ5UpjT89EF99NqEDsysjhYjC2cHD6HceFcZQCNgE= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784820204717775.5767253848923; Thu, 23 Jul 2026 08:23:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvCu-00044L-Ma; Thu, 23 Jul 2026 11:19:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvCt-00043b-Qv; Thu, 23 Jul 2026 11:19:31 -0400 Received: from mail-japanwestazlp170120003.outbound.protection.outlook.com ([2a01:111:f403:c406::3] helo=OS8PR02CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvCr-00081v-44; Thu, 23 Jul 2026 11:19:31 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by KL1PR02MB6215.apcprd02.prod.outlook.com (2603:1096:820:9f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.11; Thu, 23 Jul 2026 15:19:17 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:17 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=loeyDrWHT+cw5cZCZqn4y4aL2kSvD2zYF16jHAuQoSuv94NwELI4RDx8rWMHlQ4KXHKzG+SOUG9L0W6KA1db0AmkfVNWrIzJCM8G2ukmGUIPeJh9qY79wqcLK/QRRo+GP5vkYoLWG7yPhrls4m3MAT6zD9M71ELuC7unX+0/Bl/5kAKpI7MZH/lXYgVe/oACVjYUwaCmN5VI+ZE0C1ApWH1t7BxTHvZWSe5bnFmMDb0lEV1hL1749zMM6s0qOZWMepaY98S6S2sNtZ7GDj7ueMuZ9xEa9lB1Ev/Rw8WgKpykTCC9qeZkySYW5HUNYwiyzLicuSNRmesy46PmReeb3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=5wYrVDiK0b+IKPefObTgD4xoi35IUbw4JoICN7zd96s=; b=v9BrAJxAEf7U1JoNME+1qN5YjKXhV7tPHP83f4O4+WsEK7UtvuxTiPmNOxL2bl4yR4sUUdeeQqNmK5xZsL1CJBkqLfFGiDu0bLvVkqNXqWcic3qE+nO1v8JD5Su0zAFU9z6J3s6/f9R+sfnJww1mWyKPzEi/EzvkngIS1QH2+dN/x2dcrDy4QcXYSYtRQzTtv1B79nuBA5+NdS2XMirzG8+WjeGK5bZF58dZO186BNHHi3DZbQyN0UbjrA0zpx/I2JvD85mI2AWQGatgvDF4kffCstrNXncjDaDTfXQElN8iuRnEip9pxg2uS0JDDsrx22/zJtAiGXf7mTGBQCJs+g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5wYrVDiK0b+IKPefObTgD4xoi35IUbw4JoICN7zd96s=; b=jmaDugTM6QwWuhAiT2DiMMehzjHuxEHuC7kD7JAhUVG75ltwapxicT8KY3nLbpSBPlGo7BRNdWuG9z0ZnPkaCziP5ZKeMc2B9EA6Q0sGCigMziozfYoJTpnvpJQQdT0/boyu49h4zUqp6S01AXBOM6beDg43X7kwworS2Nfj6h2esfVyOhV9rOBFW4vBxQPMUA4DyvT+TZX5AcW0g8vxiNyzSsEUfi0he9ZtSTxWCIHdQS1dCFabq1WxZAzRdRQEzOLyrZiQptaCD6B6WEZQYTFbM7whcLeCN7gNhC8fBiCSpEnAlEw+QpzxsMwG3CVkfHJBRNI3dpDPTyKd0Z2Fwg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Conor Dooley , Sebastian Huber , qemu-riscv@nongnu.org Subject: [PATCH 03/26] hw/misc: pfsoc: Support PolarFire SoC DDR training with newer version HSS Date: Thu, 23 Jul 2026 23:18:30 +0800 Message-Id: <20260723151853.2143177-4-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|KL1PR02MB6215:EE_ X-MS-Office365-Filtering-Correlation-Id: a0967dd5-2d8e-47dc-7c49-08dee8cdc2ea X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|23010399003|1800799024|376014|366016|56012099006|10067099003|18002099003|22082099003|6133799003|5023799004|3023799007; X-Microsoft-Antispam-Message-Info: 7iuhxewvljDNoCZC62DpByJbxGJekPChog35fGYtSdu//kc9ARJuphCD842QXanU5MPa2BdiUTnzXl4h5cbxaiECisHn+hKAlbU18WsFRlKLTSsm7uhJNRXzvGq85K241jT93mix82j6pX5awuUQrWhEG59cMkUBr3ryyVpyRov50faw98+yLwRFYnXmZ9zgiAtSvYVS7mVGuNLYDN/mwxFRMKky7KnbnvdQumlQEV9kh81A47ktG5/Ci+WAlIgwoFu/xa0alcmpIb3hc/tL38jbyGPIQGLFYDu78zvBgh0bBQKQQMLbNk+wMUv5PC8TO1vGm4xgBK3Qzh1g+/98VOjOGE4Fu5IVapV1L0w5ngsMcJ6UAQx6o7ZiNCF4uX0FkZpV0NPfC/AGUTMCxm4mgTt70FwauQfdP5/TKhR0k8wqx4R2TlpUPXeKKAjOceD2CA8KFoyiSGx6d7ZfrCvWCNH6oKCNAvaDN5czrVNQYVlxv5/D5JiPFJvfO2SczMII/No+xYswvvk2uwJ2h+3Va24gHU7YZdaIW9oum7YblU3PSqmWI7nyd23MM/VIyZwKODP4AMktTh6wJb+tiG3t4Ht5U1FRhKEPswuWzCBB+jRkaD8u90C5sJFEBHE4zWJLh4AKP/aMo1JCBRnjv4YqlhNUR+jGtXFM/Ru3KXQN0Cc= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(23010399003)(1800799024)(376014)(366016)(56012099006)(10067099003)(18002099003)(22082099003)(6133799003)(5023799004)(3023799007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?LDbrO9IdS1XvsulntiYrFa4CL+LymuF0OQkA5mK+29sHlm4583vDw7i8R7tI?= =?us-ascii?Q?sZIqEgOb6lEK3F62FJyMMuvJRTaGDnd+XcyHO4iYaupC7ANTZdPi/hrzVsW5?= =?us-ascii?Q?IlNav5Idxr2i3FS/Xzw5PkoalJX7ksTOTt0Mhm967xdE8n47Nqb7ah6urcYH?= =?us-ascii?Q?sToiswyd8Z6gtw4EulSbRxlz7AkIayfV7QD4HjBlSoKlzp/LIUcq0N9/mXZ8?= =?us-ascii?Q?gQgIeJGrI+PULfoE7bvH856/jDpvMGDOkZ6aAztHmkG76PzmHJbA9aWX4mxL?= =?us-ascii?Q?LE+QtwW+y8wYKjBWxMUcFr8S89hin45mfsltf+syfE3JyuGkaZVHSKUkkfR6?= =?us-ascii?Q?ydlj5H3EGqlDVbP1sTTXxXWCmJ292J8S7UP7Z6minQlmlr5OJvEccRgtx2b+?= =?us-ascii?Q?RcAkqd2eFjd0j3keaxjgJQaLqdOLq0Ww2uFoddvZsIAC6JHSknjoIOt7OMd1?= =?us-ascii?Q?ATAAaylbB2spQiwETlS3/X++Cx02U/bdZQoxY3U5QvMyr+rDlUPfQK3FLFaP?= =?us-ascii?Q?MvGmrnmx6cy7R/UL+TaeBoyWX3Esi2LyuupLbhR7VrrvQ0oUZpKBuKWnYshG?= =?us-ascii?Q?54N0MB6u70ZjIbcvIaSgOnzmfuYjfx287k2RPPIaB8BHpUqpTqPgTk53PCHS?= =?us-ascii?Q?cLbVcCNBhSmz8nuZ8GnN8e6ZJckcER2IBDWZhNZysJn/FTkHIRBgrqIP9srO?= =?us-ascii?Q?PZIHJMQKT2FJDbalzOMj6KIEtu6o0YAEH6d9ZbImJRCBaIyveKhiyqI4rIVu?= =?us-ascii?Q?kZb7MPN7vr4whzEIRqB1rZ+zTQ828ROQ1keOsSZ1Y4xg30hbfqbu8iLQk7vO?= =?us-ascii?Q?JasKH806GPcPQgnn1NmaYENVV66wSIyw6Q7wMgdz29Cv56tObOCzwpScsESQ?= =?us-ascii?Q?pe5aB7SDbqvES7AFYVHWNqdeJHk/fXNAwxpFPpO55aoIymGkQlyqGE2LF+1p?= =?us-ascii?Q?2KI5ZMKdedl7qiAAyr/vy1GWas65h7TFe0qCoPZwDpeYEY4rEdsRRY25nZKu?= =?us-ascii?Q?+/n50R+9/b/iI+FAuvLil44hdrapugXiOkTLJeL9Vif2qeNE/x/E+BHkaX6j?= =?us-ascii?Q?wVw5uuSq9JADkUtcWeUMAvvYMuYUzomI3v6ms7AfLb6uIv9Ear4nZ/Djqb5L?= =?us-ascii?Q?jqX9zS/jJVizdvQRRxhsOJrUts5V5rHX3Jw9p3iPpSG05a9RI9u6KqEx6lUa?= =?us-ascii?Q?KFzvKVIg/h7IldnIpkFF+1LXyk42XNWK0gnuKAQo3RQ1y6l1B6fzc7NFUuB9?= =?us-ascii?Q?UDr8+rxN5PYjIt+s1qrLrMTjYHnKVpS7pDbbQ+bfpJzjkl00Cw70IaBudq7U?= =?us-ascii?Q?YkmdWHUQi130RvSzknwEwr0eckWK3PJ4yTFvAiDhRYp9UImCHCYWAur0g6Eb?= =?us-ascii?Q?lvmU9+PKjTKaN4cEXLP0lhymBHMGjAk3lYq/TEkLXTMVircMS5McZT5sOVMK?= =?us-ascii?Q?NNHC3tyICPck8r//Bqa2rQ1O+hwEEFBwCVqqdsRV0xvbNh2A4tFgEGNHIk2U?= =?us-ascii?Q?lqEPAr9s62ZurKdFBRH7ckJpI+eY10DizWaoRwnMrXDHrXdR0o5w4AFPUELy?= =?us-ascii?Q?xctBXa81J2UciKZ6xO0qD1aW49zXL5Jt+4H1UPIIDpw8pn9TpQVpHwFDi5uk?= =?us-ascii?Q?Se9N7EL5FDOO23tqRLevMcNymNro1WRS3FSjdGAYSvtH/vfOqL0PdHBuLSyT?= =?us-ascii?Q?0ncTxDnukr2/AfrUssokvH6cTg+aKp2DBV9cGs1Xvxida/GXwirEbTuJYT6T?= =?us-ascii?Q?rHOkHBGI/VcXJaIWKyY98uXC3qbhZ+w=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: a0967dd5-2d8e-47dc-7c49-08dee8cdc2ea X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:17.1103 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: WCbzX3wjx2MJt+g5RLbvlWIJNhZp9TbcIF9vs4Ovt7JKFo3jK752400oKNHvNkSNHGeR25/CWrYU9LffmAiqKPUcA0D0lv+SIcTnLnh/4Xo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR02MB6215 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c406::3; envelope-from=bin.meng@processmission.com; helo=OS8PR02CU002.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820206622158500 Content-Type: text/plain; charset="utf-8" HSS v2024.06 performs DDR and SGMII initialization through the DMC register window before it can complete platform startup. The existing model, which was validated against older version HSS in the early days, exposes only a few fixed training results, so newer version HSS stalls while waiting for PVT, PLL, DLL, ADDCMD, and verification status. Update the DMC model by adding the minimum state and status behavior needed by that firmware flow. Model the SGMII control registers, main DDR PLL lock, deterministic ADDCMD transitions, and successful gate and DQ/DQS verification. Keep training progress and writable controls per device and clear them on reset. These values are compatibility responses for HSS v2024.06 rather than a cycle-accurate description of the DDR PHY. Document that limitation in the source. While we are here, update the license text to use the SPDX format. Note at the time being there is an HSS bug [1] that consistenly blocks the DDR traning from succeed when using an HSS image built from certain version compiler like GCC 8.3.0. A patch [2] was proposed and verified against HSS v2024.06. [1] https://github.com/polarfire-soc/platform/issues/36 [2] https://github.com/processmission/qemu-machine-images/blob/main/ machine/riscv64/microchip-icicle-kit/ 0001-mpfs_hal-preserve-DDR-pattern-test-parameters.patch Signed-off-by: Bin Meng --- include/hw/misc/mchp_pfsoc_dmc.h | 6 + hw/misc/mchp_pfsoc_dmc.c | 272 ++++++++++++++++++++++++++++--- 2 files changed, 254 insertions(+), 24 deletions(-) diff --git a/include/hw/misc/mchp_pfsoc_dmc.h b/include/hw/misc/mchp_pfsoc_= dmc.h index 2ed582fb8c..6a1986c2c2 100644 --- a/include/hw/misc/mchp_pfsoc_dmc.h +++ b/include/hw/misc/mchp_pfsoc_dmc.h @@ -28,10 +28,16 @@ /* DDR SGMII PHY module */ =20 #define MCHP_PFSOC_DDR_SGMII_PHY_REG_SIZE 0x1000 +#define MCHP_PFSOC_DDR_SGMII_PHY_REG_NUM \ + (MCHP_PFSOC_DDR_SGMII_PHY_REG_SIZE / sizeof(uint32_t)) =20 typedef struct MchpPfSoCDdrSgmiiPhyState { SysBusDevice parent; MemoryRegion sgmii_phy; + uint32_t regs[MCHP_PFSOC_DDR_SGMII_PHY_REG_NUM]; + uint8_t training_status_bit; + uint8_t addcmd_tap; + bool addcmd_move_active; } MchpPfSoCDdrSgmiiPhyState; =20 #define TYPE_MCHP_PFSOC_DDR_SGMII_PHY "mchp.pfsoc.ddr_sgmii_phy" diff --git a/hw/misc/mchp_pfsoc_dmc.c b/hw/misc/mchp_pfsoc_dmc.c index 1fe4535464..443de5ddd1 100644 --- a/hw/misc/mchp_pfsoc_dmc.c +++ b/hw/misc/mchp_pfsoc_dmc.c @@ -2,22 +2,20 @@ * Microchip PolarFire SoC DDR Memory Controller module emulation * * Copyright (c) 2020 Wind River Systems, Inc. + * Copyright (c) 2026 Process Mission * * Author: * Bin Meng * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 or - * (at your option) version 3 of the License. + * Updated by Bin Meng to support DDR + * training emulation for with newer version Hart Software Services, + * aka HSS. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * The DMC register model is based on HSS v2024.06. Its read/write + * behavior is the minimum needed for DDR training to complete and + * may not reflect actual hardware register behavior. * - * You should have received a copy of the GNU General Public License along - * with this program; if not, see . + * SPDX-License-Identifier: GPL-2.0-or-later */ =20 #include "qemu/osdep.h" @@ -29,17 +27,56 @@ =20 /* DDR SGMII PHY module */ =20 -#define SGMII_PHY_IOC_REG1 0x208 -#define SGMII_PHY_TRAINING_STATUS 0x814 -#define SGMII_PHY_DQ_DQS_ERR_DONE 0x834 -#define SGMII_PHY_DQDQS_STATUS1 0x84c -#define SGMII_PHY_PVT_STAT 0xc20 +#define PHY_ADDCMD_CK_TRANSITION_TAP 12 +#define PHY_ADDCMD_A5_TRANSITION_TAP 20 +#define PHY_ADDCMD_CK_READBACK 5 +#define PHY_ADDCMD_A5_READBACK (3 << 8) +#define PHY_GT_TXDLY_VALUE 0x01010101 +#define PHY_DQDQS_STATUS2_VALUE 5 + +#define SGMII_PHY_PLL_CTRL_MAIN 0x084 +#define SGMII_PHY_PLL_CTRL_MAIN_CONTROL_LO_MASK 0x0000007f +#define SGMII_PHY_PLL_CTRL_MAIN_LP_REQUIRES_LOCK BIT(24) +#define SGMII_PHY_PLL_CTRL_MAIN_LOCK BIT(25) +#define SGMII_PHY_IOC_REG1 0x208 +#define SGMII_PHY_TRAINING_STATUS 0x814 +#define SGMII_PHY_GT_ERR_COMB 0x81c +#define SGMII_PHY_GT_CLK_SEL 0x820 +#define SGMII_PHY_GT_TXDLY 0x824 +#define SGMII_PHY_DQ_DQS_ERR_DONE 0x834 +#define SGMII_PHY_DQDQS_STATUS1 0x84c +#define SGMII_PHY_DQDQS_STATUS2 0x850 +#define SGMII_PHY_EXPERT_DLYCNT_MOVE_REG1 0x880 +#define SGMII_PHY_EXPERT_DLYCNT_MOVE_CONTROL_MASK 0x001fffff +#define SGMII_PHY_EXPERT_DLYCNT_MOVE_ADDCMD_MASK 0x00180000 +#define SGMII_PHY_EXPERT_DLYCNT_LOAD_REG1 0x890 +#define SGMII_PHY_EXPERT_DLYCNT_LOAD_CONTROL_MASK 0x001fffff +#define SGMII_PHY_EXPERT_DLYCNT_LOAD_ADDCMD_MASK 0x00180000 +#define SGMII_PHY_EXPERT_ADDCMD_LN_READBACK 0x8ac +#define SGMII_PHY_SOFT_RESET_SGMII 0xc00 +#define SGMII_PHY_SGMII_MODE 0xc04 +#define SGMII_PHY_PLL_CNTL 0xc08 +#define SGMII_PHY_PLL_CNTL_LOCK BIT(7) +#define SGMII_PHY_CH0_CNTL 0xc0c +#define SGMII_PHY_CH1_CNTL 0xc10 +#define SGMII_PHY_RECAL_CNTL 0xc14 +#define SGMII_PHY_RECAL_CNTL_STATUS_MASK 0xffff0000 +#define SGMII_PHY_RECAL_CNTL_LOCK BIT(23) +#define SGMII_PHY_CLK_CNTL 0xc18 +#define SGMII_PHY_DYN_CNTL 0xc1c +#define SGMII_PHY_PVT_STAT 0xc20 +#define SGMII_PHY_PVT_STAT_IO_ENABLE BIT(6) +#define SGMII_PHY_PVT_STAT_CALIBRATED BIT(14) +#define SGMII_PHY_PVT_STAT_GUEST_CTRL_MASK 0xc0000000 +#define SGMII_PHY_SPARE_CNTL 0xc24 +#define SGMII_PHY_SPARE_STAT 0xc28 =20 static uint64_t mchp_pfsoc_ddr_sgmii_phy_read(void *opaque, hwaddr offset, unsigned size) { uint32_t val =3D 0; - static int training_status_bit; + MchpPfSoCDdrSgmiiPhyState *s =3D opaque; + uint32_t index =3D offset / sizeof(uint32_t); =20 switch (offset) { case SGMII_PHY_IOC_REG1: @@ -53,8 +90,8 @@ static uint64_t mchp_pfsoc_ddr_sgmii_phy_read(void *opaqu= e, hwaddr offset, * * See ddr_setup() in mss_ddr.c in the HSS source codes. */ - val =3D 1 << training_status_bit; - training_status_bit =3D (training_status_bit + 1) % 5; + val =3D BIT(s->training_status_bit); + s->training_status_bit =3D (s->training_status_bit + 1) % 5; break; case SGMII_PHY_DQ_DQS_ERR_DONE: /* @@ -71,8 +108,106 @@ static uint64_t mchp_pfsoc_ddr_sgmii_phy_read(void *op= aque, hwaddr offset, val =3D 0xff; break; case SGMII_PHY_PVT_STAT: - /* See sgmii_channel_setup() in HSS */ - val =3D BIT(14) | BIT(6); + /* + * HSS polls IO enable and calibration status, then writes the + * calibration lock. The HSS register definitions mark bits 31:30 + * as writable controls. + * + * See sgmii_channel_setup() in mss_sgmii.c in HSS. + */ + val =3D s->regs[index] | SGMII_PHY_PVT_STAT_IO_ENABLE | + SGMII_PHY_PVT_STAT_CALIBRATED; + break; + case SGMII_PHY_PLL_CTRL_MAIN: + /* + * HSS programs the main DDR PLL controls and polls LOCK after + * changing the PLL dividers during LPDDR4 manual training. The + * HSS register definitions mark bits 6:0 and 24 as writable. + * + * See ddr_pll_config() in mss_pll.c and + * lpddr4_manual_training() in mss_ddr.c in HSS. + */ + val =3D s->regs[index] | SGMII_PHY_PLL_CTRL_MAIN_LOCK; + break; + case SGMII_PHY_PLL_CNTL: + /* + * HSS programs the SGMII PLL controls and polls aro_pll0_lock. + * + * See setup_sgmii_rpc_per_config() and sgmii_channel_setup() + * in mss_sgmii.c in HSS. + */ + val =3D s->regs[index] | SGMII_PHY_PLL_CNTL_LOCK; + break; + case SGMII_PHY_RECAL_CNTL: + /* + * HSS programs the low control half, polls sro_dll_lock, and + * reads sro_dll_90_code from the read-only status half. + * + * See setup_sgmii_rpc_per_config() and sgmii_channel_setup() + * in mss_sgmii.c in HSS. + */ + val =3D s->regs[index] | SGMII_PHY_RECAL_CNTL_LOCK; + break; + case SGMII_PHY_EXPERT_ADDCMD_LN_READBACK: + /* + * HSS pulses the ADDCMD move controls while sampling CK from + * bits 3:0 and A5 from bits 9:8. The transition tap positions + * below are deterministic QEMU model choices. + * + * See lpddr4_manual_training() in mss_ddr.c in HSS. + */ + if (s->addcmd_tap >=3D PHY_ADDCMD_CK_TRANSITION_TAP) { + val |=3D PHY_ADDCMD_CK_READBACK; + } + if (s->addcmd_tap >=3D PHY_ADDCMD_A5_TRANSITION_TAP) { + val |=3D PHY_ADDCMD_A5_READBACK; + } + break; + case SGMII_PHY_GT_ERR_COMB: + case SGMII_PHY_GT_CLK_SEL: + /* + * HSS fails DDR verification on any gate error, a zero delay + * selected by gt_clk_sel, or more than one zero delay byte. + * Model no gate errors; the all-nonzero delay below makes the + * deterministic clock selection immaterial. + * + * See DDR_TRAINING_IP_SM_VERIFY in ddr_setup() in mss_ddr.c + * in HSS. + */ + val =3D 0; + break; + case SGMII_PHY_GT_TXDLY: + val =3D PHY_GT_TXDLY_VALUE; + break; + case SGMII_PHY_DQDQS_STATUS2: + /* + * HSS requires the calculated DQ/DQS window to be at least + * DQ_DQS_NUM_TAPS, which is 5. Return the minimum pass value. + * + * See DDR_TRAINING_IP_SM_VERIFY in ddr_setup() and the + * DQ_DQS_NUM_TAPS definition in mss_ddr.h in HSS. + */ + val =3D PHY_DQDQS_STATUS2_VALUE; + break; + case SGMII_PHY_EXPERT_DLYCNT_MOVE_REG1: + case SGMII_PHY_EXPERT_DLYCNT_LOAD_REG1: + case SGMII_PHY_SOFT_RESET_SGMII: + case SGMII_PHY_SGMII_MODE: + case SGMII_PHY_CH0_CNTL: + case SGMII_PHY_CH1_CNTL: + case SGMII_PHY_CLK_CNTL: + case SGMII_PHY_DYN_CNTL: + case SGMII_PHY_SPARE_CNTL: + case SGMII_PHY_SPARE_STAT: + /* + * HSS programs the ADDCMD and SGMII controls and reads + * SPARE_STAT to classify the silicon and select eye-width + * thresholds. + * + * See lpddr4_manual_training() in mss_ddr.c and the SGMII setup + * functions in mss_sgmii.c in HSS. + */ + val =3D s->regs[index]; break; default: qemu_log_mask(LOG_UNIMP, "%s: unimplemented device read " @@ -87,10 +222,88 @@ static uint64_t mchp_pfsoc_ddr_sgmii_phy_read(void *op= aque, hwaddr offset, static void mchp_pfsoc_ddr_sgmii_phy_write(void *opaque, hwaddr offset, uint64_t value, unsigned size) { - qemu_log_mask(LOG_UNIMP, "%s: unimplemented device write " - "(size %d, value 0x%" PRIx64 - ", offset 0x%" HWADDR_PRIx ")\n", - __func__, size, value, offset); + MchpPfSoCDdrSgmiiPhyState *s =3D opaque; + uint32_t index =3D offset / sizeof(uint32_t); + + switch (offset) { + case SGMII_PHY_IOC_REG1: + case SGMII_PHY_TRAINING_STATUS: + case SGMII_PHY_GT_ERR_COMB: + case SGMII_PHY_GT_CLK_SEL: + case SGMII_PHY_GT_TXDLY: + case SGMII_PHY_DQ_DQS_ERR_DONE: + case SGMII_PHY_DQDQS_STATUS1: + case SGMII_PHY_DQDQS_STATUS2: + case SGMII_PHY_EXPERT_ADDCMD_LN_READBACK: + case SGMII_PHY_SPARE_STAT: + /* + * The HSS register definitions declare these status and + * readback registers read-only. + * + * See mss_ddr_sgmii_phy_defs.h in HSS. + */ + return; + case SGMII_PHY_PLL_CTRL_MAIN: + value &=3D SGMII_PHY_PLL_CTRL_MAIN_CONTROL_LO_MASK | + SGMII_PHY_PLL_CTRL_MAIN_LP_REQUIRES_LOCK; + break; + case SGMII_PHY_PLL_CNTL: + value &=3D ~SGMII_PHY_PLL_CNTL_LOCK; + break; + case SGMII_PHY_RECAL_CNTL: + value &=3D ~SGMII_PHY_RECAL_CNTL_STATUS_MASK; + break; + case SGMII_PHY_PVT_STAT: + value &=3D SGMII_PHY_PVT_STAT_GUEST_CTRL_MASK; + break; + case SGMII_PHY_EXPERT_DLYCNT_MOVE_REG1: { + bool active; + + /* + * HSS pulses 0 -> 0x180000 -> 0 while scanning the ADDCMD eye. + * Count each rising pulse as one abstract delay tap. + * + * See lpddr4_manual_training() in mss_ddr.c in HSS. + */ + value &=3D SGMII_PHY_EXPERT_DLYCNT_MOVE_CONTROL_MASK; + active =3D value & SGMII_PHY_EXPERT_DLYCNT_MOVE_ADDCMD_MASK; + if (active && !s->addcmd_move_active && + s->addcmd_tap !=3D UINT8_MAX) { + s->addcmd_tap++; + } + s->addcmd_move_active =3D active; + break; + } + case SGMII_PHY_EXPERT_DLYCNT_LOAD_REG1: + /* + * HSS pulses 0x180000 before each ADDCMD scan. Restart the + * abstract QEMU tap position when that load pulse is asserted. + * + * See lpddr4_manual_training() in mss_ddr.c in HSS. + */ + value &=3D SGMII_PHY_EXPERT_DLYCNT_LOAD_CONTROL_MASK; + if (value & SGMII_PHY_EXPERT_DLYCNT_LOAD_ADDCMD_MASK) { + s->addcmd_tap =3D 0; + s->addcmd_move_active =3D false; + } + break; + case SGMII_PHY_SOFT_RESET_SGMII: + case SGMII_PHY_SGMII_MODE: + case SGMII_PHY_CH0_CNTL: + case SGMII_PHY_CH1_CNTL: + case SGMII_PHY_CLK_CNTL: + case SGMII_PHY_DYN_CNTL: + case SGMII_PHY_SPARE_CNTL: + break; + default: + qemu_log_mask(LOG_UNIMP, "%s: unimplemented device write " + "(size %d, value 0x%" PRIx64 + ", offset 0x%" HWADDR_PRIx ")\n", + __func__, size, value, offset); + return; + } + + s->regs[index] =3D value; } =20 static const MemoryRegionOps mchp_pfsoc_ddr_sgmii_phy_ops =3D { @@ -99,6 +312,16 @@ static const MemoryRegionOps mchp_pfsoc_ddr_sgmii_phy_o= ps =3D { .endianness =3D DEVICE_LITTLE_ENDIAN, }; =20 +static void mchp_pfsoc_ddr_sgmii_phy_reset(DeviceState *dev) +{ + MchpPfSoCDdrSgmiiPhyState *s =3D MCHP_PFSOC_DDR_SGMII_PHY(dev); + + memset(s->regs, 0, sizeof(s->regs)); + s->training_status_bit =3D 0; + s->addcmd_tap =3D 0; + s->addcmd_move_active =3D false; +} + static void mchp_pfsoc_ddr_sgmii_phy_realize(DeviceState *dev, Error **err= p) { MchpPfSoCDdrSgmiiPhyState *s =3D MCHP_PFSOC_DDR_SGMII_PHY(dev); @@ -117,6 +340,7 @@ static void mchp_pfsoc_ddr_sgmii_phy_class_init(ObjectC= lass *klass, =20 dc->desc =3D "Microchip PolarFire SoC DDR SGMII PHY module"; dc->realize =3D mchp_pfsoc_ddr_sgmii_phy_realize; + device_class_set_legacy_reset(dc, mchp_pfsoc_ddr_sgmii_phy_reset); } =20 static const TypeInfo mchp_pfsoc_ddr_sgmii_phy_info =3D { --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820018; cv=pass; d=zohomail.com; s=zohoarc; b=EeTIVJdN64C9lvBCPviLky7cDFE7GkQ/dRkqTNat0J0xOPhhRocIO2RLquGN1KSQ1S96TcFgMgyGyYR07CJs8rm7uPvVykIEHql/oyZfx3ucaG7ikJg0g5wt2GDOs6Gh9LKvMOa/yOHDnmqWCraLm43yAcUnPig1/nZk6XzvFkI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820018; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=GZvOV3ut1QdLAcN2OD7T9+m98yaure4yYaH425c2XSE=; b=gj/Fr59qKhILo6uaOdDyveFVsJZPpZAVnSQUGWLcfT78ff8pRpj8z2jeos6JqQUkxEkp0va0AwEPyjJZVxa/jvCwlw0toV2dI9tXqVhraQ6zbl9BkPfSvN4pl4v7umBR+Kt8096vtx2ROU09CF8rua2+VlkSNk9Ey4yA+nNhKI4= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178482001827579.97074786955909; Thu, 23 Jul 2026 08:20:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvCv-00045F-AN; Thu, 23 Jul 2026 11:19:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvCt-00043d-T7; Thu, 23 Jul 2026 11:19:31 -0400 Received: from mail-japanwestazlp170120003.outbound.protection.outlook.com ([2a01:111:f403:c406::3] helo=OS8PR02CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvCr-0007zZ-Om; Thu, 23 Jul 2026 11:19:31 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by KL1PR02MB6215.apcprd02.prod.outlook.com (2603:1096:820:9f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.11; Thu, 23 Jul 2026 15:19:20 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QPVKISsaFe2UJHArRAqQelFvVGR7r5PASHiW4tepH+daoZI/5t9tcX2PUyD5wXy4CxwdiiA8k45E9kVBR1le75b8mTXDCA5xpGDHLlaKdFkMexcGQ7Xg4KoA5un+VccBRUtZgLjzu6Qf/XliojWvdrIYZoVbiF7YGRUOLHGcat5LFYD5N7UsxJyJjsEbN6aHuPculGkopIizkY1LppVbqaS9PRhUliky3oinh5b0MMOOzLYwlslDb+nmuR3VzMxR6+fne9JsL0cyT5BFuWw+aDHxZOpswYfV9FldvOCT2D5p5sYdEIuBcrVJU+HuZ3N+ZZ++Zbxsxcx2/E3D5e0qdw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=GZvOV3ut1QdLAcN2OD7T9+m98yaure4yYaH425c2XSE=; b=qEPNbDjCR4dLyiUtNeKye1pOi4gcGmcSX5KodzLOns5QyookvkuhHz4MUAmGapfG/6dtKqmfCT3QuyvF+UvKZ4d+G4KWnRRvA1njujNbR4wyWj7/DDoAnnmrD/FsVQ/kcksr33yTu0+66NbbBrGodN2G1pnjz6zWFOab9/oz2crj+RfteOE4RckiuQX2XNnhHP/WyRG1U3ROAigCshhytlqhkJLtT55/UcxEk/f1aimxumkyTF16CjjzQSc225gw7OzD63hD0d2yD/v2MvHiZeNb5pfpzJKCqx4+pFc2YI40T1ff1U+MBz9MW9fk48O54nnrjljENsTRZYaB0GHVMg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GZvOV3ut1QdLAcN2OD7T9+m98yaure4yYaH425c2XSE=; b=AnDWw9S8cMfObJ3deyoikfz4ezENZE0GfJjbZQCn9yIGpNAwv3D4WwGtthBs4LIIEK9kw4BNBQuohHksEmqn6rdqHoknTo7e7sATMm5t3D/raso6haFv9DI0/8CS1ia9GHsjAEOIf9Sy+QNyqOU/WojKIga0eICNg1qbvcatV0yMwYb5+wxW1W4p/xI70N0JdOVoItizaWYW1LtEQzV1Zy+Zyd/26MkKTQFSHOVecZztkRqYl6RUVr/8tijcZclLJajJt8TBySgPFUB8Z9hV3QNSgSfveaEsTnYxZuxxjjPLNvElaf4WufTpMye+tsHcbetbOSp+Tg6Or+rVgcqkhQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Conor Dooley , Paolo Bonzini , Sebastian Huber , qemu-riscv@nongnu.org Subject: [PATCH 04/26] hw/misc: pfsoc: Model L2 cache controller registers Date: Thu, 23 Jul 2026 23:18:31 +0800 Message-Id: <20260723151853.2143177-5-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|KL1PR02MB6215:EE_ X-MS-Office365-Filtering-Correlation-Id: c4c32e0c-a006-4e7b-a13b-08dee8cdc3db X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|23010399003|1800799024|376014|366016|56012099006|10067099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 9/1NXUN296kMPP2Wl7liHtvyRajJ3auoQQKWjpCB32/I3L+Z5Mg0aGM+SNi/zkRJuRfBCGp9vKX2xPYPdoqFZLrNCCQOmMm0FVO/19nKXSNIa7ZQSDXsCctQn9bYQHAbGXvlSJYo+fvJOaCfY+usBSno+vhj/n8XH8TFPRAthi6sYcabCGdiQR7+gnwK7aXoMsrwyFrzn4c4oGup8zefKT+KZDav7ri8quJSDTky0Oyu2npBohycCkWWCu2a6FG/nxQcqyGz1RfkbsTWfDi5W9iH/uq38ypEWvxr7AuwbNeL9BEnZlDuYEyHcxvxxitwluw71GYMxeXLuRMqqcAchcEm1PbPBhbSl+5NWD9Xyzq2UFT+0IN6eOg5HIe697QUWeP52BnRyt7s5+74WjatuTuaKI9Fv8F7KnZByB5zvJbTmepRcusG/R5z1ihJzDN7r53NWIYfd5s00Lkwr7plTM6+Vcq5Xatrn8hm3u/3HihCHM2tsN65hZO26/W+PSDKA9ZwyDK3OzCh9qKz4Rz0DohflObn7i8IY+0qKlnOJLcwBMigym66psUHKAkwte3svMf7Q6YUbN4jW0c5ku2ltoz6z9GlaVpA6KBR0wFHI5kNQK2KmJc8QuHJCKyolc9ATniQV1Vp+qzX1ftM98xrgYR/jTqdDELQJiph4McThsg= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(23010399003)(1800799024)(376014)(366016)(56012099006)(10067099003)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?DmPjHNaYjUn76/tdhx0nCcX7wXexG12IS4oeSkbyKhuySehN34XiA+Ahwpq2?= =?us-ascii?Q?YB6zqeVb6KxJ9+rZK60aD1MHmNVHeKZhRjUj1+dgosH8AOSAOkHMSB1Z9d48?= =?us-ascii?Q?q+Xx1m9zTNeAfL6jKxkLLuvhdgs0/fElFLUEJrJLgNOvDZXSiaGYtVqMrsQl?= =?us-ascii?Q?4O0vPjDjW/GQNW8FJZlegah/agxr5wS79Q3BwQPT6SwLUPQ69/K/2FfXahK1?= =?us-ascii?Q?8gd77MFlRfVXx50/8uJDaqDA5O2w2j7klOt4SvVRtLQYvp4Z51a6NJblyH74?= =?us-ascii?Q?6mG5ijPoXV+sl0kTqYwqELIJ4nRMk8aoNS3o7QWW1/OIIoKk9rW6K0Pr9HHB?= =?us-ascii?Q?dUqFz02vXe54axEUrPt6oYlbCTmL7Rqfjdt0qlRfaWHPVUJ9X3aKuooU097s?= =?us-ascii?Q?AYnYHWJJtpQLDva9u76Qy6E9WaOwFMBeV728FtBxVPOPm4HbNdlak/uDil72?= =?us-ascii?Q?/fF+iIFSsQ0c1CW1+lI7797/UCDKvPO2IJsCM/+5/MP43fl0qtje0hz5OAFD?= =?us-ascii?Q?og/r1zNbCHdXg0I2LMdXDtFxS7cnf1LOmsFfagDWlOgT5vm96+wraO5V4Rhc?= =?us-ascii?Q?077aoUEN0UHQJ8GnVRUxcIPT/peBFwopwN8LS/0Fl+FNiq1CT0kQdDGTY2es?= =?us-ascii?Q?kn7sqxi2DRtWFzG1sHtyI0wdND/PHwclSKgR0FI2ysn6qqzEmg8F8KPWb1oE?= =?us-ascii?Q?9HmBjoZ5cb4iN8lZW0OQroDW75tuAJ13UoIr4UCgmD3hV07SwaaBWSlXt/28?= =?us-ascii?Q?f28eeeregPDL4u0ywqJQyuVTfNhDEHGFV7A8HEnMLgE48qp16xuHHWqRQm7f?= =?us-ascii?Q?juiJYfiFoduW+BKARTzfiiUtooQF0Bz/kSh2NLUMx5+gfpC6TVuXjavbaw8A?= =?us-ascii?Q?XQy0ylArVrj50w6U0yrBfQdlmhvaKkqx2z837RjBOB5RS2Zg9l8WjjTKyxSk?= =?us-ascii?Q?X6b61ygBXXxsefihRbRH8nB25Ro7txr0nyY/PneS7y2ypjEuTr7aFP8Eoc2C?= =?us-ascii?Q?gHm9dfvo5Y1+Qa+jvrHyNCRRn9pMcXpyJgs+FnMi4V+g9xnqeOKEECYPPpoK?= =?us-ascii?Q?3s4iE0qcArY6Zvw0N+NGowSHBYdqGwxyStmug6Q6fITW7LkB37m7tSaN2eua?= =?us-ascii?Q?NsIwI/u4GYcJB3hYReyuvtoqqKgq7W0QNmJofuOmyCvyCwv0fBXj0wUvzh3f?= =?us-ascii?Q?BTCTHpRmEJNlzplKhy4xrUa9TkgEgWjMYvsg0nhUNMtijA0CRZjefj/JPn2R?= =?us-ascii?Q?ADT6iIiO3mCge+ErmUiDzH8Gr/H9d4tauPbwMZ0oxCeY694om6FcJ5xGEyCQ?= =?us-ascii?Q?qqzwgpJwKWQK4BgzeRW2xaix32mDO2mCODAC/xX7EgU7157BXzYZuMjn6+C4?= =?us-ascii?Q?3GGGpVhBJIuIZnsDbAWi1OroZEUDaiJecuzx9uVld7qRRwNNkq/qs/m4G0js?= =?us-ascii?Q?ucqsP7QJy+vN4yWX/2/upfkx50a0U7/7A7Z/Yjg97AwsQC86lnHvL2bBs8HN?= =?us-ascii?Q?wUMBHSpt/+VTU0LVEwQcj5E7WchgTH5yjyNrFHszLE4aGtrlSyVIuVZlYVz0?= =?us-ascii?Q?iPErdVDOXrrkKnlPH/wbCqgUwo/apABhYyFPT6PPB8akGYXo7fw5OItcBsx5?= =?us-ascii?Q?Zx4n/9NTsbckPbUtXYjPnRUnNPy8oY1Aizb3iAIouckZGSsQyJOegeHoSFdt?= =?us-ascii?Q?Yx8TCb9bNGaSCJKOSmgdGXFoQX03Jg99L2ecWR0MaHyQbRBflGv1gsMJ5Ru+?= =?us-ascii?Q?Ofew5HeHLaob+u6Y1orXfZXqOtAGMOI=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: c4c32e0c-a006-4e7b-a13b-08dee8cdc3db X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:18.6600 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: xj0f/l1HnqXocDrpapiOiTXmossQ7cn5pXfD73DK25AjYY8UwFHMcKuOxUAHc9jr5mkKS8JxektQITlU1nFZ57OCiqdykaxw8wPhLF4No4M= X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR02MB6215 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c406::3; envelope-from=bin.meng@processmission.com; helo=OS8PR02CU002.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820019343158500 Content-Type: text/plain; charset="utf-8" Implement the Config, WayEnable, and per-master WayMask registers described by the PolarFire SoC MSS reference manual. Make WayEnable monotonic and report the remaining register space as unimplemented. Signed-off-by: Bin Meng --- MAINTAINERS | 2 + include/hw/misc/mchp_pfsoc_l2cc.h | 30 +++++ hw/misc/mchp_pfsoc_l2cc.c | 180 ++++++++++++++++++++++++++++++ hw/misc/Kconfig | 3 + hw/misc/meson.build | 1 + 5 files changed, 216 insertions(+) create mode 100644 include/hw/misc/mchp_pfsoc_l2cc.h create mode 100644 hw/misc/mchp_pfsoc_l2cc.c diff --git a/MAINTAINERS b/MAINTAINERS index a28935c898..c0bb18c47a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1770,11 +1770,13 @@ F: hw/riscv/microchip_pfsoc.c F: hw/char/mchp_pfsoc_mmuart.c F: hw/misc/mchp_pfsoc_dmc.c F: hw/misc/mchp_pfsoc_ioscb.c +F: hw/misc/mchp_pfsoc_l2cc.c F: hw/misc/mchp_pfsoc_sysreg.c F: include/hw/riscv/microchip_pfsoc.h F: include/hw/char/mchp_pfsoc_mmuart.h F: include/hw/misc/mchp_pfsoc_dmc.h F: include/hw/misc/mchp_pfsoc_ioscb.h +F: include/hw/misc/mchp_pfsoc_l2cc.h F: include/hw/misc/mchp_pfsoc_sysreg.h =20 Shakti C class SoC diff --git a/include/hw/misc/mchp_pfsoc_l2cc.h b/include/hw/misc/mchp_pfsoc= _l2cc.h new file mode 100644 index 0000000000..1b5b3888d5 --- /dev/null +++ b/include/hw/misc/mchp_pfsoc_l2cc.h @@ -0,0 +1,30 @@ +/* + * Microchip PolarFire SoC L2 cache controller + * + * Copyright (c) 2026 Process Mission + * + * Author: + * Bin Meng + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef MCHP_PFSOC_L2CC_H +#define MCHP_PFSOC_L2CC_H + +#include "hw/core/register.h" +#include "hw/core/sysbus.h" + +#define MCHP_PFSOC_L2CC_REG_SIZE 0x1000 +#define MCHP_PFSOC_L2CC_REG_NUM (MCHP_PFSOC_L2CC_REG_SIZE / 8) + +typedef struct MchpPfSoCL2ccState { + SysBusDevice parent; + uint64_t regs[MCHP_PFSOC_L2CC_REG_NUM]; + RegisterInfo regs_info[MCHP_PFSOC_L2CC_REG_NUM]; +} MchpPfSoCL2ccState; + +#define TYPE_MCHP_PFSOC_L2CC "mchp.pfsoc.l2cc" +OBJECT_DECLARE_SIMPLE_TYPE(MchpPfSoCL2ccState, MCHP_PFSOC_L2CC) + +#endif diff --git a/hw/misc/mchp_pfsoc_l2cc.c b/hw/misc/mchp_pfsoc_l2cc.c new file mode 100644 index 0000000000..b320356572 --- /dev/null +++ b/hw/misc/mchp_pfsoc_l2cc.c @@ -0,0 +1,180 @@ +/* + * Microchip PolarFire SoC L2 cache controller + * + * Copyright (c) 2026 Process Mission + * + * Author: + * Bin Meng + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qemu/log.h" +#include "hw/core/register.h" +#include "hw/core/registerfields.h" +#include "hw/misc/mchp_pfsoc_l2cc.h" + +REG64(L2_CONFIG, 0x000) + FIELD(L2_CONFIG, BANKS, 0, 8) + FIELD(L2_CONFIG, WAYS, 8, 8) + FIELD(L2_CONFIG, SETS, 16, 8) + FIELD(L2_CONFIG, BYTES, 24, 8) +REG64(L2_WAY_ENABLE, 0x008) + FIELD(L2_WAY_ENABLE, VALUE, 0, 8) +REG64(L2_WAY_MASK_DMA, 0x800) +REG64(L2_WAY_MASK_AXI4_PORT_0, 0x808) +REG64(L2_WAY_MASK_AXI4_PORT_1, 0x810) +REG64(L2_WAY_MASK_AXI4_PORT_2, 0x818) +REG64(L2_WAY_MASK_AXI4_PORT_3, 0x820) +REG64(L2_WAY_MASK_HART0_DCACHE, 0x828) +REG64(L2_WAY_MASK_HART0_ICACHE, 0x830) +REG64(L2_WAY_MASK_HART1_DCACHE, 0x838) +REG64(L2_WAY_MASK_HART1_ICACHE, 0x840) +REG64(L2_WAY_MASK_HART2_DCACHE, 0x848) +REG64(L2_WAY_MASK_HART2_ICACHE, 0x850) +REG64(L2_WAY_MASK_HART3_DCACHE, 0x858) +REG64(L2_WAY_MASK_HART3_ICACHE, 0x860) +REG64(L2_WAY_MASK_HART4_DCACHE, 0x868) +REG64(L2_WAY_MASK_HART4_ICACHE, 0x870) + +#define L2_CONFIG_RESET 0x06091004 + +static uint64_t mchp_pfsoc_l2cc_way_enable_pre_write(RegisterInfo *reg, + uint64_t value) +{ + uint64_t current =3D *(uint64_t *)reg->data; + + return MAX(current, value); +} + +#define WAY_MASK_REGISTER(_name) \ + { \ + .name =3D "WAY_MASK_" #_name, \ + .addr =3D A_L2_WAY_MASK_ ## _name, \ + .reset =3D UINT64_MAX, \ + } + +static const RegisterAccessInfo mchp_pfsoc_l2cc_regs_info[] =3D { + { + .name =3D "CONFIG", + .addr =3D A_L2_CONFIG, + .reset =3D L2_CONFIG_RESET, + .ro =3D UINT64_MAX, + }, { + .name =3D "WAY_ENABLE", + .addr =3D A_L2_WAY_ENABLE, + .rsvd =3D ~R_L2_WAY_ENABLE_VALUE_MASK, + .pre_write =3D mchp_pfsoc_l2cc_way_enable_pre_write, + }, + WAY_MASK_REGISTER(DMA), + WAY_MASK_REGISTER(AXI4_PORT_0), + WAY_MASK_REGISTER(AXI4_PORT_1), + WAY_MASK_REGISTER(AXI4_PORT_2), + WAY_MASK_REGISTER(AXI4_PORT_3), + WAY_MASK_REGISTER(HART0_DCACHE), + WAY_MASK_REGISTER(HART0_ICACHE), + WAY_MASK_REGISTER(HART1_DCACHE), + WAY_MASK_REGISTER(HART1_ICACHE), + WAY_MASK_REGISTER(HART2_DCACHE), + WAY_MASK_REGISTER(HART2_ICACHE), + WAY_MASK_REGISTER(HART3_DCACHE), + WAY_MASK_REGISTER(HART3_ICACHE), + WAY_MASK_REGISTER(HART4_DCACHE), + WAY_MASK_REGISTER(HART4_ICACHE), +}; + +static bool mchp_pfsoc_l2cc_register_implemented(hwaddr offset) +{ + size_t i; + + for (i =3D 0; i < ARRAY_SIZE(mchp_pfsoc_l2cc_regs_info); i++) { + if (mchp_pfsoc_l2cc_regs_info[i].addr =3D=3D offset) { + return true; + } + } + + return false; +} + +static uint64_t mchp_pfsoc_l2cc_read(void *opaque, hwaddr offset, + unsigned size) +{ + if (mchp_pfsoc_l2cc_register_implemented(offset)) { + return register_read_memory(opaque, offset, size); + } + + qemu_log_mask(LOG_UNIMP, "%s: unimplemented device read " + "(size %u, offset 0x%" HWADDR_PRIx ")\n", + __func__, size, offset); + return 0; +} + +static void mchp_pfsoc_l2cc_write(void *opaque, hwaddr offset, + uint64_t value, unsigned size) +{ + if (mchp_pfsoc_l2cc_register_implemented(offset)) { + register_write_memory(opaque, offset, value, size); + return; + } + + qemu_log_mask(LOG_UNIMP, "%s: unimplemented device write " + "(size %u, value 0x%" PRIx64 + ", offset 0x%" HWADDR_PRIx ")\n", + __func__, size, value, offset); +} + +static const MemoryRegionOps mchp_pfsoc_l2cc_ops =3D { + .read =3D mchp_pfsoc_l2cc_read, + .write =3D mchp_pfsoc_l2cc_write, + .endianness =3D DEVICE_LITTLE_ENDIAN, + .valid =3D { .min_access_size =3D 1, .max_access_size =3D 8 }, + .impl =3D { .min_access_size =3D 1, .max_access_size =3D 8 }, +}; + +static void mchp_pfsoc_l2cc_reset(DeviceState *dev) +{ + MchpPfSoCL2ccState *s =3D MCHP_PFSOC_L2CC(dev); + size_t i; + + memset(s->regs, 0, sizeof(s->regs)); + for (i =3D 0; i < ARRAY_SIZE(mchp_pfsoc_l2cc_regs_info); i++) { + hwaddr addr =3D mchp_pfsoc_l2cc_regs_info[i].addr; + + register_reset(&s->regs_info[addr / sizeof(uint64_t)]); + } +} + +static void mchp_pfsoc_l2cc_init(Object *obj) +{ + MchpPfSoCL2ccState *s =3D MCHP_PFSOC_L2CC(obj); + RegisterInfoArray *reg_array; + + reg_array =3D register_init_block64( + DEVICE(obj), mchp_pfsoc_l2cc_regs_info, + ARRAY_SIZE(mchp_pfsoc_l2cc_regs_info), s->regs_info, s->regs, + &mchp_pfsoc_l2cc_ops, false, MCHP_PFSOC_L2CC_REG_SIZE); + sysbus_init_mmio(SYS_BUS_DEVICE(obj), ®_array->mem); +} + +static void mchp_pfsoc_l2cc_class_init(ObjectClass *klass, const void *dat= a) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + + device_class_set_legacy_reset(dc, mchp_pfsoc_l2cc_reset); +} + +static const TypeInfo mchp_pfsoc_l2cc_info =3D { + .name =3D TYPE_MCHP_PFSOC_L2CC, + .parent =3D TYPE_SYS_BUS_DEVICE, + .instance_size =3D sizeof(MchpPfSoCL2ccState), + .instance_init =3D mchp_pfsoc_l2cc_init, + .class_init =3D mchp_pfsoc_l2cc_class_init, +}; + +static void mchp_pfsoc_l2cc_register_types(void) +{ + type_register_static(&mchp_pfsoc_l2cc_info); +} + +type_init(mchp_pfsoc_l2cc_register_types) diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig index 1543ee6653..772a2d87b3 100644 --- a/hw/misc/Kconfig +++ b/hw/misc/Kconfig @@ -203,6 +203,9 @@ config MCHP_PFSOC_DMC config MCHP_PFSOC_IOSCB bool =20 +config MCHP_PFSOC_L2CC + bool + config MCHP_PFSOC_SYSREG bool =20 diff --git a/hw/misc/meson.build b/hw/misc/meson.build index 23265f6035..5f45861d8a 100644 --- a/hw/misc/meson.build +++ b/hw/misc/meson.build @@ -30,6 +30,7 @@ system_ss.add(when: 'CONFIG_VIRT_CTRL', if_true: files('v= irt_ctrl.c')) # RISC-V devices system_ss.add(when: 'CONFIG_MCHP_PFSOC_DMC', if_true: files('mchp_pfsoc_dm= c.c')) system_ss.add(when: 'CONFIG_MCHP_PFSOC_IOSCB', if_true: files('mchp_pfsoc_= ioscb.c')) +system_ss.add(when: 'CONFIG_MCHP_PFSOC_L2CC', if_true: files('mchp_pfsoc_l= 2cc.c')) system_ss.add(when: 'CONFIG_MCHP_PFSOC_SYSREG', if_true: files('mchp_pfsoc= _sysreg.c')) system_ss.add(when: 'CONFIG_SIFIVE_TEST', if_true: files('sifive_test.c')) system_ss.add(when: 'CONFIG_SIFIVE_E_PRCI', if_true: files('sifive_e_prci.= c')) --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820014; cv=pass; d=zohomail.com; s=zohoarc; b=lIUai4ASBE0SMSoSoyFPYAW/makQ2cZ/wtWmXsSt6dpZL+xvMeucJMN2TnLEOY/7bWWWTCweuy6QBEs8JLyZJer3s+FD2/9KHbsJ2LrrD6Mf97O/xvp1aX/n34yQDeZ8dM1yNtiRbk8xUyyGa9bChG68XpGO97rRqooj6EdM31I= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820014; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=RFzrRGxHaFmnCV5Vflq4Sd4iOXxEK8wqJHpvb8aBwIU=; b=Uq990bbQ7O/SFfjywHsa7rAp6qGfzwG2e7lbWNRbBILVL3C5Hy2+Q3H3e7xXlpcee6ZSO4q8P5gfGhljVp7GA7jGvCtu87MlFgI4K8/fLteDPUG5Ebl1ESD6Ha9RscWc5yX9WX4bUxAiZ9A9CVs9oGuKhbLL4XUOlZ5Z+6mCeGM= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178482001423892.67618208036288; Thu, 23 Jul 2026 08:20:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvCx-00046e-Ss; Thu, 23 Jul 2026 11:19:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvCw-000468-Rm; Thu, 23 Jul 2026 11:19:34 -0400 Received: from mail-japanwestazlp170120003.outbound.protection.outlook.com ([2a01:111:f403:c406::3] helo=OS8PR02CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvCu-00081v-SC; Thu, 23 Jul 2026 11:19:34 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by KL1PR02MB6215.apcprd02.prod.outlook.com (2603:1096:820:9f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.11; Thu, 23 Jul 2026 15:19:21 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:21 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mIyBlRxD7Z/vzL1cjoP+8oWgbfKeyHUEC4vsJbaQL8GeuAQD5txLRRlnZiTkfUW83484hagkl8Tf8TgB/mHiQ8ZAstz8BHHFRUgghyC0H43BaN6g/h6V9ZRR73C8od60qdptXFYlKEzp2C91+PeVO0gzEQZqq8Hta4HxhfVkXLhUsoz/f4mXEQEynlX8kbfagG7GDTNiu3mw61q4pe2sO5X7u7lNm4tuxW3MflhElSdcX6cR8WA7F2oawLX8+voi6aAeY1/8gz2wO+HMwO6c2sfqGQYMgmIZB6SVIUgACdMbyhafbmNZ8uh788aNYTbDHoTIgQjmD2LfVMnfB6NofQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RFzrRGxHaFmnCV5Vflq4Sd4iOXxEK8wqJHpvb8aBwIU=; b=bxt5+JcFCDaH6k55/KAjiMg1WGOpK5G9pFwUIQARZokbRTjGCbZeDzP/TwD1O7UJz07KDW4T6TYRFJ259us+zTt4u60Kwrw1W54/2snnT7XXNL8B6ayVu38f9rnEZ9cuKH9kshbu0q5x+sWX9Ba2PC3veYWNEnVJZ2rr5ZNcs6S9tFI676jCiXuQ9QUgX5kdhTFcsafaG+uoLCqOmYLIbK1/uaTiqm10zhd54oQHmViARk8Q2f9RZ0QgX53jVhKRgMsYWOYLUqPFBSjnnTGD57QSXna6zj3tBPUHTyqDoQwVQ62pvqc1YW1VUhbSdOj0acxVzbO7JohsvoFprFuIgw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RFzrRGxHaFmnCV5Vflq4Sd4iOXxEK8wqJHpvb8aBwIU=; b=Fr8Tz5Lz2DdjPLn4A969q/j+da0sVvNTaHkU6yIebdQGSbjxPfkR1jjf5VedWyKFUPOEl892sVRkidnogJMXSLW+JaDR33PlthUIbq+jNa8mz1WMdfm20aslsFfnFhlE1MEpWSiH/1rFnJlqMgb2/KuFeBHD/AZtAmhr72CLJ/zj8biMuBUNXDbCb6R/a1DoieRHQU3/G7OcmIKxJXdGsX30vwTi9W8e9tQSOzku6eCPlOi/DsjrlQKM6KAfJccq+Huh+EMFsDj0okRX+16dTJqXaVieHAshqzmuhqo7pBMGc2ekdfmalESfs50ITNIHo50y/lB6RADb0dwr2OaD2Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Alistair Francis , Chao Liu , Conor Dooley , Daniel Henrique Barboza , Liu Zhiwei , Palmer Dabbelt , Paolo Bonzini , Sebastian Huber , Weiwei Li , qemu-riscv@nongnu.org Subject: [PATCH 05/26] hw/riscv: pfsoc: Couple L2CC to L2-LIM Date: Thu, 23 Jul 2026 23:18:32 +0800 Message-Id: <20260723151853.2143177-6-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|KL1PR02MB6215:EE_ X-MS-Office365-Filtering-Correlation-Id: 71df33d8-d56c-45bd-f8e5-08dee8cdc536 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|23010399003|1800799024|376014|7416014|366016|56012099006|10067099003|18002099003|22082099003|6133799003|5023799004; X-Microsoft-Antispam-Message-Info: HI91bvcoG5pigb62b1U/5OOsE8cpQ5pZG41bnqtjHpcsBz0Rb0NiKlVcxuzPB0Cm86ODcyOtnQd71z0oDaT+YpPwgw4qoNpft9JipSyDaZFUEnq3Vsr8eiNUsXy91aYpEbmjLADdY0RcuVVghpItiS//AQ2qt8r/yLVK10mEYtwoP5CjiAKGaxZUJSwE/guK008bFv5b5VR1PnKtN6eHD29MMg0H1fPJdCPvUqmbAhsqmqot6VcEQA3HX3zr0uh5HQAojN7m5XYE/5Pmn3wxMj1Bzft8WvLnkU0Dfbli2pgP7VCX1HeByzLu+ZXFfslpjAyATeghv+yXDGWZtcSOo5EDYtISKZJcQbD853cYKlgB8WB2c6RFR1u/LkNCxvJMqq8SfbwENcjyD6ZYHV74fOGcQdXejoPcYjcJ8Po/Wowh6tsaAlnTUtTxOg3APcuP/m0iOh5qYZRhfQRtcVORBV+b+cTePc1QdWiUPkDTQFiEO7qLn2PJbKq8QHlE+pJBtzxL3K9kp7xNltl+fyIGbp6gABMOvZPRivn5XXxfkv5zY713VMdi7wJxIK1htnOCr4WqWGr10Ixk6PvM0cZmnNHFXAAgcmum+jlNtlkC5tTIVxE/checPryBzQnrw9Ql0f20uzACbBVUIK0gagajSWIjCewRFu7J7qY3iWgXgbo= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(23010399003)(1800799024)(376014)(7416014)(366016)(56012099006)(10067099003)(18002099003)(22082099003)(6133799003)(5023799004); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?r5XVBcDQ/9MCq+09WRDX0BAHWOiJM9gV3Ftb1OdE1yaZ6gI96UYgdbdSf90X?= =?us-ascii?Q?tbf563/oLALN43BTeFWdyncKKJCj6AmsVy1uaHGlvCTq8hXyqZIJ157/9/c0?= =?us-ascii?Q?C6N1jsD3/wP04CfXe87hQyvnhkN8XNS13eKxT5Z/WNUzB7Xe5Jwu6mDzd9ec?= =?us-ascii?Q?Csy74aqFKYSWFfUQNBZycebJKfg5P941i1taPWRLWLwD1jPj8UnKfAl482hn?= =?us-ascii?Q?GsYsI58nBww+4EiAMiI3hrXS5kGZY0pQjI0Sq0yL+37uv5Fkt28V7e4AmfZF?= =?us-ascii?Q?COy/y9Idb8nHrQxyMwwUuaasZmM0o+VCNK/7/tTm/zQknIqUhsLyzCTtBPzs?= =?us-ascii?Q?mHi8RgVANPPw6kxJsVQbrp8L3QC1RRxTaO4dVGWFjlGY+Uo8K+uwsMtUi0pj?= =?us-ascii?Q?vrlPspbnlMjQhcMeUdI/alupvqmWUKa2b08IRbqWzz7iNubC+wsQNbetDoOA?= =?us-ascii?Q?VlYnKN67wE1JWjnQIS69ooBgwQ6pwm0FMhz3T5ac3kpNkWDXFlsu45IlUMZy?= =?us-ascii?Q?9csDLV3VNZYBL/m4CyQ9YbCoKHB/juOOKRPoN3IR/AZ8KavmiEVrxZEgwfZd?= =?us-ascii?Q?PKsEy5bmoc92jhfgsTZJ8lDiorrZ3U/Ps7zSwAWROh+3+TuvQu5+xRKsdp+O?= =?us-ascii?Q?e7qscOrczMtg2rYQt7JfkyJhII3RRTVwfSoeJMcUzJfaXanhyqmAWmIaqUMn?= =?us-ascii?Q?y7W7seCk8J/01RcR2U7oOtIvWSn+2b+YL4MRvYb0xSN97JPAqHhR9L29gwwm?= =?us-ascii?Q?pOyg2vtwpgGoWxm64oAuWgbN6cgi+1M9qjAioCLZPGdpArci/3RGhpKmlnwd?= =?us-ascii?Q?ASYQMyGh7PNcXrl94cL03vHpeuva3e6oK27cykfuUV15vb+7/hDfyF7vPujO?= =?us-ascii?Q?pwyZ0JgkGI2Y+JEZqqFRjB6Sq0K8/3Q1dNUwaFMj19b6sqjzZ75+L44FzUuO?= =?us-ascii?Q?LmCdCr7W53uA1aMG7DY42aGCDqCzOworsSxKq+r2MWR8uOPmS1Rf1JQxT/QB?= =?us-ascii?Q?01+hPe/xFoNOYzbOtiuIsqhJAPMbwo5dgIK8ahGXX7wvCAjMCmXg6ooPRSIn?= =?us-ascii?Q?cDBUagmX8tWHvDKB6sptZV2fFMxxnoeX9DIxD1a3hXojxgEd/AIiP7WkywXM?= =?us-ascii?Q?miYUSo/+bQMTfgW5II+TmSbzSzRasImDjwblEUYUXFf4lj9AwXFTHdVCJWZf?= =?us-ascii?Q?1KofLMWMtdGWifY7fZG/ScRphSp7t7O2bwWT5Wayxyb3CfknaKDmWfszPeXR?= =?us-ascii?Q?dJ3mgcc4voVv9S9iSmXvcnQLqINH9n7JwRDlMFACJOjuE1A7Sncimih73alU?= =?us-ascii?Q?EVztUMfj0aPSBR9QkMEz6qeRECbnNtISI4EpPuhUjzdFCBe4DsWD9r1QbR27?= =?us-ascii?Q?tomDM2Doy8THvv4ziscicvrTGZOMelHmGqe9KkDewi8ZXz7m2rDbek/lMmeY?= =?us-ascii?Q?zUWA/AvwC/+8Vb2FZOXvj4gAm1Gg48oE7LUY4Wgcs+kwwQT7LQYoQ1GEL6Ml?= =?us-ascii?Q?sx4UET6mdpFFz4UNBCyRfQgu9sEeovGsN7v3oGk4Rhb0eE8SdJyH26g5VZ5Q?= =?us-ascii?Q?kkgCZS0I11eeHlNa9PyDhnbYB0TZFjc277I5INc2tUqGVJVdEYXD04GgyvqV?= =?us-ascii?Q?8yiw8xj94BxCZ8NWHkCMtMEV8FP/wAsS2fhLkytnaZ7ddcnQGYPaMdHGwqId?= =?us-ascii?Q?LgOQv7gNxR42pY2nvhvGlNyJij8o+XG8htJz7REb0oPSHBOPIPff9LeZKoKy?= =?us-ascii?Q?lGj/RB/d4MESwMwj54HVBIaJzA6ZGzs=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 71df33d8-d56c-45bd-f8e5-08dee8cdc536 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:20.9638 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: KO42f95U4Tek4cbo6fMacZVVvLwZQ1DPw8MZpG52lDYWeKtaHeY7uT2hxJg24AYfOtpMmwm5NsffEppl2F3GgV3FGutDX3bbqr2XDbECLGo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR02MB6215 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c406::3; envelope-from=bin.meng@processmission.com; helo=OS8PR02CU002.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820015746158500 Content-Type: text/plain; charset="utf-8" Instantiate the L2CC in the PolarFire SoC machine and connect its WayEnable register to the L2-LIM MemoryRegion. Back the complete 2 MiB aperture and shrink it by 128 KiB for each cache way enabled. Keep L2 Zero at its fixed aperture because it represents a cache allocation window rather than the remaining L2-LIM capacity. Signed-off-by: Bin Meng --- include/hw/misc/mchp_pfsoc_l2cc.h | 1 + include/hw/riscv/microchip_pfsoc.h | 2 ++ hw/misc/mchp_pfsoc_l2cc.c | 50 ++++++++++++++++++++++++++++++ hw/riscv/microchip_pfsoc.c | 23 +++++++------- hw/riscv/Kconfig | 1 + 5 files changed, 66 insertions(+), 11 deletions(-) diff --git a/include/hw/misc/mchp_pfsoc_l2cc.h b/include/hw/misc/mchp_pfsoc= _l2cc.h index 1b5b3888d5..3a175a6340 100644 --- a/include/hw/misc/mchp_pfsoc_l2cc.h +++ b/include/hw/misc/mchp_pfsoc_l2cc.h @@ -22,6 +22,7 @@ typedef struct MchpPfSoCL2ccState { SysBusDevice parent; uint64_t regs[MCHP_PFSOC_L2CC_REG_NUM]; RegisterInfo regs_info[MCHP_PFSOC_L2CC_REG_NUM]; + MemoryRegion *l2lim; } MchpPfSoCL2ccState; =20 #define TYPE_MCHP_PFSOC_L2CC "mchp.pfsoc.l2cc" diff --git a/include/hw/riscv/microchip_pfsoc.h b/include/hw/riscv/microchi= p_pfsoc.h index 612fd2b69c..0aeccedf77 100644 --- a/include/hw/riscv/microchip_pfsoc.h +++ b/include/hw/riscv/microchip_pfsoc.h @@ -27,6 +27,7 @@ #include "hw/cpu/cluster.h" #include "hw/dma/sifive_pdma.h" #include "hw/misc/mchp_pfsoc_dmc.h" +#include "hw/misc/mchp_pfsoc_l2cc.h" #include "hw/misc/mchp_pfsoc_ioscb.h" #include "hw/misc/mchp_pfsoc_sysreg.h" #include "hw/net/cadence_gem.h" @@ -43,6 +44,7 @@ typedef struct MicrochipPFSoCState { RISCVHartArrayState e_cpus; RISCVHartArrayState u_cpus; DeviceState *plic; + MchpPfSoCL2ccState l2cc; MchpPfSoCDdrSgmiiPhyState ddr_sgmii_phy; MchpPfSoCDdrCfgState ddr_cfg; MchpPfSoCIoscbState ioscb; diff --git a/hw/misc/mchp_pfsoc_l2cc.c b/hw/misc/mchp_pfsoc_l2cc.c index b320356572..7f3c2672c3 100644 --- a/hw/misc/mchp_pfsoc_l2cc.c +++ b/hw/misc/mchp_pfsoc_l2cc.c @@ -11,6 +11,9 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" +#include "qemu/units.h" +#include "qapi/error.h" +#include "hw/core/qdev-properties.h" #include "hw/core/register.h" #include "hw/core/registerfields.h" #include "hw/misc/mchp_pfsoc_l2cc.h" @@ -39,6 +42,25 @@ REG64(L2_WAY_MASK_HART4_DCACHE, 0x868) REG64(L2_WAY_MASK_HART4_ICACHE, 0x870) =20 #define L2_CONFIG_RESET 0x06091004 +#define L2_LIM_WAY_COUNT 15 +#define L2_WAY_SIZE (128 * KiB) + +static void mchp_pfsoc_l2cc_update_l2lim(MchpPfSoCL2ccState *s, + uint64_t way_enable) +{ + uint64_t l2lim_size; + + if (way_enable >=3D L2_LIM_WAY_COUNT) { + l2lim_size =3D 0; + } else { + l2lim_size =3D (L2_LIM_WAY_COUNT - way_enable) * L2_WAY_SIZE; + } + + memory_region_transaction_begin(); + memory_region_set_size(s->l2lim, l2lim_size); + memory_region_set_enabled(s->l2lim, l2lim_size !=3D 0); + memory_region_transaction_commit(); +} =20 static uint64_t mchp_pfsoc_l2cc_way_enable_pre_write(RegisterInfo *reg, uint64_t value) @@ -48,6 +70,14 @@ static uint64_t mchp_pfsoc_l2cc_way_enable_pre_write(Reg= isterInfo *reg, return MAX(current, value); } =20 +static void mchp_pfsoc_l2cc_way_enable_post_write(RegisterInfo *reg, + uint64_t value) +{ + MchpPfSoCL2ccState *s =3D MCHP_PFSOC_L2CC(reg->opaque); + + mchp_pfsoc_l2cc_update_l2lim(s, value); +} + #define WAY_MASK_REGISTER(_name) \ { \ .name =3D "WAY_MASK_" #_name, \ @@ -66,6 +96,7 @@ static const RegisterAccessInfo mchp_pfsoc_l2cc_regs_info= [] =3D { .addr =3D A_L2_WAY_ENABLE, .rsvd =3D ~R_L2_WAY_ENABLE_VALUE_MASK, .pre_write =3D mchp_pfsoc_l2cc_way_enable_pre_write, + .post_write =3D mchp_pfsoc_l2cc_way_enable_post_write, }, WAY_MASK_REGISTER(DMA), WAY_MASK_REGISTER(AXI4_PORT_0), @@ -157,11 +188,30 @@ static void mchp_pfsoc_l2cc_init(Object *obj) sysbus_init_mmio(SYS_BUS_DEVICE(obj), ®_array->mem); } =20 +static void mchp_pfsoc_l2cc_realize(DeviceState *dev, Error **errp) +{ + MchpPfSoCL2ccState *s =3D MCHP_PFSOC_L2CC(dev); + + if (!s->l2lim) { + error_setg(errp, TYPE_MCHP_PFSOC_L2CC ": 'l2-lim' link not set"); + return; + } + + mchp_pfsoc_l2cc_update_l2lim(s, s->regs[R_L2_WAY_ENABLE]); +} + +static const Property mchp_pfsoc_l2cc_properties[] =3D { + DEFINE_PROP_LINK("l2-lim", MchpPfSoCL2ccState, l2lim, + TYPE_MEMORY_REGION, MemoryRegion *), +}; + static void mchp_pfsoc_l2cc_class_init(ObjectClass *klass, const void *dat= a) { DeviceClass *dc =3D DEVICE_CLASS(klass); =20 device_class_set_legacy_reset(dc, mchp_pfsoc_l2cc_reset); + device_class_set_props(dc, mchp_pfsoc_l2cc_properties); + dc->realize =3D mchp_pfsoc_l2cc_realize; } =20 static const TypeInfo mchp_pfsoc_l2cc_info =3D { diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c index fd28ee75fe..248de4d022 100644 --- a/hw/riscv/microchip_pfsoc.c +++ b/hw/riscv/microchip_pfsoc.c @@ -175,6 +175,9 @@ static void microchip_pfsoc_soc_instance_init(Object *o= bj) object_initialize_child(obj, "dma-controller", &s->dma, TYPE_SIFIVE_PDMA); =20 + object_initialize_child(obj, "l2-cache-controller", &s->l2cc, + TYPE_MCHP_PFSOC_L2CC); + object_initialize_child(obj, "sysreg", &s->sysreg, TYPE_MCHP_PFSOC_SYSREG); =20 @@ -260,18 +263,9 @@ static void microchip_pfsoc_soc_realize(DeviceState *d= ev, Error **errp) RISCV_ACLINT_DEFAULT_MTIMECMP, RISCV_ACLINT_DEFAULT_MTIME, iks->clint_timebase_freq, false); =20 - /* L2 cache controller */ - create_unimplemented_device("microchip.pfsoc.l2cc", - memmap[MICROCHIP_PFSOC_L2CC].base, memmap[MICROCHIP_PFSOC_L2CC].si= ze); - /* - * Add L2-LIM at reset size. - * This should be reduced in size as the L2 Cache Controller WayEnable - * register is incremented. Unfortunately I don't see a nice (or any) = way - * to handle reducing or blocking out the L2 LIM while still allowing = it - * be re returned to all enabled after a reset. For the time being, ju= st - * leave it enabled all the time. This won't break anything, but will = be - * too generous to misbehaving guests. + * Back the complete L2-LIM aperture. The L2 cache controller resizes + * this MemoryRegion to 128 KiB for every way assigned to L2-LIM. */ memory_region_init_ram(l2lim_mem, NULL, "microchip.pfsoc.l2lim", memmap[MICROCHIP_PFSOC_L2LIM].size, &error_fata= l); @@ -279,6 +273,13 @@ static void microchip_pfsoc_soc_realize(DeviceState *d= ev, Error **errp) memmap[MICROCHIP_PFSOC_L2LIM].base, l2lim_mem); =20 + /* L2 cache controller */ + object_property_set_link(OBJECT(&s->l2cc), "l2-lim", + OBJECT(l2lim_mem), &error_abort); + sysbus_realize(SYS_BUS_DEVICE(&s->l2cc), errp); + sysbus_mmio_map(SYS_BUS_DEVICE(&s->l2cc), 0, + memmap[MICROCHIP_PFSOC_L2CC].base); + /* * HSS decompresses into the L2 zero-device window and executes there. * Model it as RAM because QEMU does not model the backing L2 cache. diff --git a/hw/riscv/Kconfig b/hw/riscv/Kconfig index de37c08cae..22619481e4 100644 --- a/hw/riscv/Kconfig +++ b/hw/riscv/Kconfig @@ -18,6 +18,7 @@ config MICROCHIP_PFSOC select DEVICE_TREE select MCHP_PFSOC_DMC select MCHP_PFSOC_IOSCB + select MCHP_PFSOC_L2CC select MCHP_PFSOC_MMUART select MCHP_PFSOC_SYSREG select RISCV_ACLINT --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820142; cv=pass; d=zohomail.com; s=zohoarc; b=SJoLNe+DKJYqtTGgThkfk/8knbq+8nEBjaVT1wAzsTPqRgyC+goUGd8vVcLDbcYRIMxT2KMiNWZOd7/uLamdjP+BLNDSkUlRWs40q73dh/XLfza3wW2PGFTSv2MGNzKrCiauTw87SOMvya74SgF/xtDk3JDzIWwAoVM3SstYL2M= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820142; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=G7Zrfbauvrd6tYWg71Al5H5FDIQRSZ35W16uzRKeA2Y=; b=l/QCLe7+1Sj6mvQX4R4qn0IT/4UGbV6EInIF5qzKppgCspC3aUwEZObkyrMOTG7iU9E1DKXahcnYhisRr9/pxbHMMJBijxBUHpXd47ZnRbh+vQdFBtnsVjH1VWNMbRXhwycypcTUfbVHur0r9hfp9N33MgZfDlnKz5AkNVgFCao= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784820142142618.7246885295315; Thu, 23 Jul 2026 08:22:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvCy-00046o-8Z; Thu, 23 Jul 2026 11:19:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvCx-00046C-1p; Thu, 23 Jul 2026 11:19:35 -0400 Received: from mail-japanwestazlp170120003.outbound.protection.outlook.com ([2a01:111:f403:c406::3] helo=OS8PR02CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvCv-0007zZ-2T; Thu, 23 Jul 2026 11:19:34 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by KL1PR02MB6215.apcprd02.prod.outlook.com (2603:1096:820:9f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.11; Thu, 23 Jul 2026 15:19:22 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:22 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DZ0pu0znMycjHSYcmopJs0rSS6VRqtaao5TqRwPxbM8GGLbj00UxEb4tuWaRj4vU75jCzERHUDL2/EPVPuzU6GtOg1lRmTpdpt3p60qe1hiHAzseqM/Nv+XtxqWyQpUujXgnsSoE0RoqdMbhBcR+l6/kGDY9lFJ8TXIB9x5NeoYXzMt7VM3Nbdh2cQrSaBeGktVjBECPEPakH4WHAx03RbkPFXr2geijmJrkzgA32yBo2FaXydv1yqntV4z8nVp4SOJJ4v8V8DvRxhrnIqn8Th3o+gU9fSfR9q2I/6D+kjbUvY1DUxSi1yFzYtE5ZB+ZTIounQlzj7bbbOr5wbmvig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=G7Zrfbauvrd6tYWg71Al5H5FDIQRSZ35W16uzRKeA2Y=; b=Bx0ntE1KUHN+qs/bgdk5mR0OHOxTKs5LvBD/kZFCNPtrMvsWxJmgoB7dQ1yqfxbe+hYUywrxykYUZ8Yzh/na4pLL/yW7YK2rdFnfOQPGEfRWgWGcSU4EiprYwsfM5lxRqhqXC+kvnVQdrJLAzZlCS/Bpm1U7rvnOxbaPsrIWsMyNL8YbeYL8cyA3YiyI27FA9c1UalqNYQPYEEO2tSEvLF9ebqhtBDJ7eL/LmDEK3K6tpOpSXudhIaEzsun906z+ZqDAy6tijQiOUdj5l5HmpeIiVyU03xlwWecGwwzJxYgPDjSZqbQdaWD6r90/Izhf41aEaTJ0l10e0/ZZKtsc5Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=G7Zrfbauvrd6tYWg71Al5H5FDIQRSZ35W16uzRKeA2Y=; b=NX5vVv1JNDWUw+aLtcwwlRkzz11W7Rvb5VHLynIj24FLXHhaCuE7fV5ZKh+/z+/wiMmuAQL9zO7xWrJcHYgXOBpQagsnvy/45dDkW/k0qkwBhW5eHyF1fpDiszjw0AXMOCSYCJ3d5SgXykNxCVQIdvGRED9mkGlsgb/LXj3I9bQ5LJhCF88CucbvSRS9ySgV9OKXs8xKsGEl6Dkbv7h0gdub7KzqpajTN20qbl2MygU1/4SdK2chX+/cNmjRJda5Okxmp/xzMv1h07sh/cGq1o2jehVkBCZVJBXG4Fs68LGbCbtOwOwwMuTUQbEwfM9bVsPi+FeXZ6hhf0ClIahsWQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Conor Dooley , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Sebastian Huber , qemu-riscv@nongnu.org Subject: [PATCH 06/26] tests/qtest: Add PolarFire SoC L2CC coverage Date: Thu, 23 Jul 2026 23:18:33 +0800 Message-Id: <20260723151853.2143177-7-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|KL1PR02MB6215:EE_ X-MS-Office365-Filtering-Correlation-Id: 47165039-efc4-4398-4960-08dee8cdc60a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|23010399003|1800799024|376014|366016|56012099006|10067099003|18002099003|22082099003|5023799004; X-Microsoft-Antispam-Message-Info: xg2AvA6q4rGPw3/ZeYdvpvfDjggjc0Bm2ypZi76zOHN/f7l40HEFMB4/85Rubhd2b3jRYj+IUyy27ncSRjvLuJoQsL+HCof1VKEeVfwOpFS93MSB+cQKSVmpvjcixMesKVgTaTWSCtNyxPafKr8zg7YuOMg1FlW6BS9If40Vc88fcVjpFLjATcmE6LK2osMqngWF6Sj0tpTT/NELHlt8Cb5GLnzPqkLg0Jc1qPriWgCjW/+hN5Womf4Y4SIVOEkFWHBbC9HfmFsI1SFenEGohXCeUoz/J4WqdEkk0k9cbN4uOFMIjGvRmqHcC/8Fuyk67vHhdf6oKgsXguVsHPoUbeDv3IKOFnYWmGhrdyrMQ6lmptCWWjbH58xK/uSjz0wtuFM5UiuMfUZ837Pfws8AdQMsyeDob27lI1Hm/PB8syu3QdrE+XjyVSU0KtSA4ysmhy2ThhFTzcsXAHGl1NfMYSeZ1HubkbUquxN06XROPt8Jg9xEwjqz0KjbVkT7Gz1Okxy1k8L5ipSVjQMtQvWPYUzQkZoG5fpJlAU5aUQySogIRIiVotSfRIg87FuXWuoaNLtxyZQG1gkR0hEtTvHO2XWn0tPK8tcO6PF+Eo3maREN/6zmURO2gLvWghg1EiC4QCAMPN2TOu/hkbeXVfw0mRLSTtNnip5++tAFUWII0uo= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(23010399003)(1800799024)(376014)(366016)(56012099006)(10067099003)(18002099003)(22082099003)(5023799004); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?vjmQF+zL48SGOMmoKZYzOS+AQksfwc1i3wTbQIQx9O06JN0gwpiREBjhoNrl?= =?us-ascii?Q?EIFov+ffUfzP5BVI4couk4FQJJW9GaRps0M2r+K4eHt+K31jDeLv5XzKiwoW?= =?us-ascii?Q?JSLQ6XcVbrZZoa/uYiGcw3d+GbtYHy+RaAQMUVPGBhxIpjuzYcavoxuwjcnC?= =?us-ascii?Q?dnG5RwSY80ISmu1CpOWbNPjc1Gv7mweGIzHyk1qNh/xXfiJ+PJLlYtseYkiB?= =?us-ascii?Q?Ruw2WcOaewPGz2MRLeceLdeumB4DuX7khobRFOE6N48xxCeKTvLaM2y4bpmA?= =?us-ascii?Q?3Jni1G/jFZgJJAK1ymqFZ5uV6GMZ999U8a59HBRLIQvZmA2IhDloJjTpUBJ+?= =?us-ascii?Q?U1yaRO5F3RZdBPzQ7TZtt2SUI0gX8qzrV3DQRwX1A6ujoO/cCar5DP/gEx+4?= =?us-ascii?Q?1hEK1rdqOX7y0DXSlyYnMCuu2UAcgR/ADQ/NN1ZR4DQmYU0YhyKGBQCCIIhr?= =?us-ascii?Q?CfQ27u0O9k9Tc836z4JtoxYg3sWowBfwzVnWKw3x35uAj3xxQHEjUDajCDVg?= =?us-ascii?Q?MAQrB82+lFFirMhQ6j4Rm8YvW8f7MxFKCq5TyeT698bvTstiI70J5Ca4TtdD?= =?us-ascii?Q?NJAC1b8XLijFPdRlJHBYGB9fsjEMZGLnuoZfUzoEvnMlHvRspZplm6OJRE4t?= =?us-ascii?Q?CwX+4H49RHngqthwoi15IzWHH6IuIEXq5Zruo9PhejQGdF1lKdt7D02t0pxF?= =?us-ascii?Q?YrFnb22uU1webqaYvuRtA1Jm76i+Td4Pro+5k+gzCaz1SPxDJwV79Mcno11C?= =?us-ascii?Q?bX/dGyFtbthMxCcTkJCFuV2lYToS+kq+Eo/GzIi1kZKi8mZi7KxRtHXAryT3?= =?us-ascii?Q?Uf3BBTYF9cMzAcupwu/cM5NDwpW/fyuuQCKMzP02oleWnggrn7AKmmrP2NzB?= =?us-ascii?Q?LSKqqzrXaPgIagSOY4uE2jbDYC7gxY0Uwk25r+DIcH9QzHzXSk7WqHRi+iTI?= =?us-ascii?Q?uDM5KFxwJw5ZQ3Zoy+N0r+vCyUVYEpC67Y2Ngarv5u86nVgZtVA4Oo9xud5Z?= =?us-ascii?Q?poPOXaGcJzVBHtlhe9l8g/kJscqXmFrbZ2owQVqMxUAojyEwxuoqZwYrklMz?= =?us-ascii?Q?lL68OzZUSJ3n9x8X/2eraZlaeI4FmoiFN4559I8HsaK2Z3hyfBNRvRTKJPQj?= =?us-ascii?Q?quJEUZd4zh2+uIjg7nZnT+sMSNCicxgp1/7QOTIn2X14QPXMFMXOoXNumlc3?= =?us-ascii?Q?jXZNvPW2007gPqRhviSoobUHWHHg2xlFcus/gBkDihJuK4F9UgDHqJ7o7EC/?= =?us-ascii?Q?Os5dC1LDpp2AYd9paV42aGeCFCw4yruFNwOPj48Y66FtCl0WMjmTnkJnaFg2?= =?us-ascii?Q?OiiOEKQ/J+lyCDdIW5uNZmrZVijSpSEfZZ3n84y432ib92xuvU/ScF6GmnMk?= =?us-ascii?Q?O4j9rJgIY0n7oBApZdDCrGTyR3LV+Vn+H+6MW0twi1tekJXSw9/uJBTutKAb?= =?us-ascii?Q?I5OgK4GvvvsgIJ9xzOXFIg4vEtoqrk+l7ngP3M5BuYJ0R1ukDmNMzMuZAsd5?= =?us-ascii?Q?xWfkfsOopidPT5t6uRuCsrvYD5+IeUx5ZjHXL6wtUnOv+zMIJv9YzX0WzBxK?= =?us-ascii?Q?1C0Twa/r5SOcPeDSZfprLQ31wtnmY0ces4ISzXLndVUweAd18b/JHDt0jCI8?= =?us-ascii?Q?Usbna6j63lZ2yci/0dV0jx0nKDKTN4c9cIzkTTtg1dwa8MSos2kjHZJT7kj5?= =?us-ascii?Q?UMSzEoUBulYPvMFsu1ixTrUMhuYzUKJf0aHf9zB09dDOkAlQq6bn+U3M1cPa?= =?us-ascii?Q?dzUmK1Gz6B/xccT4q1muyZjM3fjiRe0=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 47165039-efc4-4398-4960-08dee8cdc60a X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:22.3697 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: R3MMF/4YrwXLEAjZVfo12/K0xvk/j30jmIJPHuHoY5FlSrBNTHGW6LP+9nBsRZgdwIr5pDZ/X6bMri4NBhvQDfuiy8gb8nW7Dx3rC5beUgE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR02MB6215 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c406::3; envelope-from=bin.meng@processmission.com; helo=OS8PR02CU002.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820144267158500 Content-Type: text/plain; charset="utf-8" Add a dedicated qtest binary for L2CC register and memory-topology behavior. Use underscores consistently in the test name. Exercise Config, WayEnable, and every WayMask register, including reset, monotonic writes, and unimplemented-register logging. Verify that WayEnable resizes the guest-visible L2-LIM region while L2 Zero remains fixed at the modeled 2 MiB size. Signed-off-by: Bin Meng --- MAINTAINERS | 1 + tests/qtest/mchp_pfsoc_l2cc_test.c | 221 +++++++++++++++++++++++++++++ tests/qtest/meson.build | 2 + 3 files changed, 224 insertions(+) create mode 100644 tests/qtest/mchp_pfsoc_l2cc_test.c diff --git a/MAINTAINERS b/MAINTAINERS index c0bb18c47a..e36594d4fd 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1778,6 +1778,7 @@ F: include/hw/misc/mchp_pfsoc_dmc.h F: include/hw/misc/mchp_pfsoc_ioscb.h F: include/hw/misc/mchp_pfsoc_l2cc.h F: include/hw/misc/mchp_pfsoc_sysreg.h +F: tests/qtest/mchp_pfsoc_l2cc_test.c =20 Shakti C class SoC L: qemu-riscv@nongnu.org diff --git a/tests/qtest/mchp_pfsoc_l2cc_test.c b/tests/qtest/mchp_pfsoc_l2= cc_test.c new file mode 100644 index 0000000000..3401ce4300 --- /dev/null +++ b/tests/qtest/mchp_pfsoc_l2cc_test.c @@ -0,0 +1,221 @@ +/* + * QTest testcase for the Microchip PolarFire SoC L2 cache controller + * + * Copyright (c) 2026 Process Mission + * + * Author: + * Bin Meng + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qemu/units.h" +#include "libqtest.h" + +#define L2CC_BASE 0x02010000 +#define L2CC_CONFIG 0x000 +#define L2CC_CONFIG_VALUE 0x06091004 +#define L2CC_WAY_ENABLE 0x008 +#define L2CC_ECC_INJECT 0x040 +#define L2CC_FLUSH64 0x200 +#define L2CC_WAY_MASK_BASE 0x800 +#define L2CC_WAY_MASK_COUNT 15 +#define L2CC_WAY_MASK(n) (L2CC_WAY_MASK_BASE + 8 * (n)) +#define L2CC_MASTER15 L2CC_WAY_MASK(L2CC_WAY_MASK_COUNT) +#define L2CC_WAY_ENABLE_RESET 0 +#define L2CC_WAY_MASK_RESET UINT64_MAX + +#define L2_LIM_BASE 0x08000000 +#define L2_WAY_SIZE (128 * KiB) +#define L2_LIM_RESET_WAYS 15 +#define L2_ZERO_BASE 0x0a000000 +#define L2_ZERO_SIZE (2 * MiB) + +static QTestState *mchp_pfsoc_l2cc_start(const char *firmware) +{ + return qtest_initf("-machine microchip-icicle-kit -smp 5 -m 2G " + "-bios \"%s\"", firmware); +} + +static char *mchp_pfsoc_l2cc_create_firmware(void) +{ + static const uint8_t firmware[] =3D { + 0x13, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, + }; + char *path; + int fd; + ssize_t written; + + fd =3D g_file_open_tmp("mchp_pfsoc_l2cc_XXXXXX", &path, NULL); + g_assert_cmpint(fd, >=3D, 0); + + written =3D write(fd, firmware, sizeof(firmware)); + g_assert_cmpint(written, =3D=3D, sizeof(firmware)); + close(fd); + + return path; +} + +static uint64_t l2cc_way_mask_test_value(unsigned int master) +{ + return UINT64_C(0xfedcba9876543201) + master; +} + +static void test_l2cc_registers(void) +{ + g_autofree char *firmware =3D mchp_pfsoc_l2cc_create_firmware(); + QTestState *qts =3D mchp_pfsoc_l2cc_start(firmware); + unsigned int i; + + unlink(firmware); + + g_assert_cmphex(qtest_readl(qts, L2CC_BASE + L2CC_CONFIG), =3D=3D, + L2CC_CONFIG_VALUE); + qtest_writel(qts, L2CC_BASE + L2CC_CONFIG, UINT32_MAX); + g_assert_cmphex(qtest_readl(qts, L2CC_BASE + L2CC_CONFIG), =3D=3D, + L2CC_CONFIG_VALUE); + + g_assert_cmphex(qtest_readb(qts, L2CC_BASE + L2CC_WAY_ENABLE), =3D=3D, + L2CC_WAY_ENABLE_RESET); + qtest_writeb(qts, L2CC_BASE + L2CC_WAY_ENABLE, 0xd); + g_assert_cmphex(qtest_readb(qts, L2CC_BASE + L2CC_WAY_ENABLE), =3D=3D,= 0xd); + qtest_writeb(qts, L2CC_BASE + L2CC_WAY_ENABLE, 3); + g_assert_cmphex(qtest_readb(qts, L2CC_BASE + L2CC_WAY_ENABLE), =3D=3D,= 0xd); + qtest_writeq(qts, L2CC_BASE + L2CC_WAY_ENABLE, 0xf); + g_assert_cmphex(qtest_readq(qts, L2CC_BASE + L2CC_WAY_ENABLE), =3D=3D,= 0xf); + qtest_writeb(qts, L2CC_BASE + L2CC_WAY_ENABLE, 0xe); + g_assert_cmphex(qtest_readb(qts, L2CC_BASE + L2CC_WAY_ENABLE), =3D=3D,= 0xf); + + for (i =3D 0; i < L2CC_WAY_MASK_COUNT; i++) { + g_assert_cmphex(qtest_readq(qts, L2CC_BASE + L2CC_WAY_MASK(i)), = =3D=3D, + L2CC_WAY_MASK_RESET); + qtest_writeq(qts, L2CC_BASE + L2CC_WAY_MASK(i), + l2cc_way_mask_test_value(i)); + } + for (i =3D 0; i < L2CC_WAY_MASK_COUNT; i++) { + g_assert_cmphex(qtest_readq(qts, L2CC_BASE + L2CC_WAY_MASK(i)), = =3D=3D, + l2cc_way_mask_test_value(i)); + } + + qtest_system_reset(qts); + g_assert_cmphex(qtest_readl(qts, L2CC_BASE + L2CC_CONFIG), =3D=3D, + L2CC_CONFIG_VALUE); + g_assert_cmphex(qtest_readb(qts, L2CC_BASE + L2CC_WAY_ENABLE), =3D=3D, + L2CC_WAY_ENABLE_RESET); + for (i =3D 0; i < L2CC_WAY_MASK_COUNT; i++) { + g_assert_cmphex(qtest_readq(qts, L2CC_BASE + L2CC_WAY_MASK(i)), = =3D=3D, + L2CC_WAY_MASK_RESET); + } + + qtest_quit(qts); +} + +static void test_l2lim_topology(void) +{ + g_autofree char *firmware =3D mchp_pfsoc_l2cc_create_firmware(); + uint32_t original[L2_LIM_RESET_WAYS]; + const uint32_t poison =3D 0xdeadc0de; + const uint64_t zero_last =3D L2_ZERO_BASE + L2_ZERO_SIZE - 4; + QTestState *qts =3D mchp_pfsoc_l2cc_start(firmware); + unsigned int i; + + unlink(firmware); + + /* Check the fixed aperture, not the RAM stand-in's eviction behavior = */ + qtest_writel(qts, zero_last, 0xa55a9669); + g_assert_cmphex(qtest_readl(qts, zero_last), =3D=3D, 0xa55a9669); + + for (i =3D 1; i <=3D L2_LIM_RESET_WAYS; i++) { + uint64_t l2lim_size =3D (L2_LIM_RESET_WAYS - i) * L2_WAY_SIZE; + uint64_t hidden =3D L2_LIM_BASE + l2lim_size; + uint32_t tail =3D 0x96000000 | i; + + original[i - 1] =3D 0x69000000 | i; + qtest_writel(qts, hidden, original[i - 1]); + g_assert_cmphex(qtest_readl(qts, hidden), =3D=3D, original[i - 1]); + + if (l2lim_size) { + qtest_writel(qts, hidden - 4, tail); + g_assert_cmphex(qtest_readl(qts, hidden - 4), =3D=3D, tail); + } + + qtest_writeb(qts, L2CC_BASE + L2CC_WAY_ENABLE, i); + g_assert_cmphex(qtest_readb(qts, + L2CC_BASE + L2CC_WAY_ENABLE), =3D=3D, i= ); + if (l2lim_size) { + g_assert_cmphex(qtest_readl(qts, hidden - 4), =3D=3D, tail); + } + g_assert_cmphex(qtest_readl(qts, hidden), =3D=3D, 0); + qtest_writel(qts, hidden, poison); + g_assert_cmphex(qtest_readl(qts, hidden), =3D=3D, 0); + g_assert_cmphex(qtest_readl(qts, zero_last), =3D=3D, 0xa55a9669); + } + + qtest_writeb(qts, L2CC_BASE + L2CC_WAY_ENABLE, UINT8_MAX); + g_assert_cmphex(qtest_readb(qts, L2CC_BASE + L2CC_WAY_ENABLE), =3D=3D, + UINT8_MAX); + g_assert_cmphex(qtest_readl(qts, L2_LIM_BASE), =3D=3D, 0); + qtest_writeb(qts, L2CC_BASE + L2CC_WAY_ENABLE, 3); + g_assert_cmphex(qtest_readb(qts, L2CC_BASE + L2CC_WAY_ENABLE), =3D=3D, + UINT8_MAX); + g_assert_cmphex(qtest_readl(qts, L2_LIM_BASE), =3D=3D, 0); + + qtest_system_reset(qts); + g_assert_cmphex(qtest_readb(qts, L2CC_BASE + L2CC_WAY_ENABLE), =3D=3D, + L2CC_WAY_ENABLE_RESET); + for (i =3D 1; i <=3D L2_LIM_RESET_WAYS; i++) { + uint64_t restored =3D L2_LIM_BASE + + (L2_LIM_RESET_WAYS - i) * L2_WAY_SIZE; + + g_assert_cmphex(qtest_readl(qts, restored), =3D=3D, original[i - 1= ]); + } + + qtest_quit(qts); +} + +static void test_l2cc_unimplemented(void) +{ + g_autofree char *firmware =3D mchp_pfsoc_l2cc_create_firmware(); + g_autofree char *log_path =3D NULL; + g_autofree char *log =3D NULL; + QTestState *qts; + int fd; + + fd =3D g_file_open_tmp("mchp_pfsoc_l2cc_unimp_XXXXXX", &log_path, NULL= ); + g_assert_cmpint(fd, >=3D, 0); + close(fd); + + qts =3D qtest_initf( + "-machine microchip-icicle-kit -smp 5 -m 2G -bios \"%s\" " + "-d unimp -D \"%s\"", firmware, log_path); + unlink(firmware); + + g_assert_cmphex(qtest_readl(qts, L2CC_BASE + L2CC_ECC_INJECT), =3D=3D,= 0); + qtest_writeq(qts, L2CC_BASE + L2CC_FLUSH64, 0x1234); + g_assert_cmphex(qtest_readq(qts, L2CC_BASE + L2CC_MASTER15), =3D=3D, 0= ); + qtest_quit(qts); + + g_assert_true(g_file_get_contents(log_path, &log, NULL, NULL)); + g_assert_nonnull(strstr(log, + "unimplemented device read (size 4, offset 0x40)")); + g_assert_nonnull(strstr(log, + "unimplemented device write (size 8, value 0x1234, offset 0x200)")= ); + g_assert_nonnull(strstr(log, + "unimplemented device read (size 8, offset 0x878)")); + unlink(log_path); +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + + qtest_add_func("/mchp_pfsoc_l2cc/registers", test_l2cc_registers); + qtest_add_func("/mchp_pfsoc_l2cc/l2lim_topology", + test_l2lim_topology); + qtest_add_func("/mchp_pfsoc_l2cc/unimplemented", + test_l2cc_unimplemented); + + return g_test_run(); +} diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build index 35c191bace..02b5780d78 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -295,6 +295,8 @@ qtests_riscv32 =3D \ =20 qtests_riscv64 =3D ['riscv-csr-test'] + \ (unpack_edk2_blobs ? ['bios-tables-test'] : []) + \ + (config_all_devices.has_key('CONFIG_MICROCHIP_PFSOC') ? + ['mchp_pfsoc_l2cc_test'] : []) + \ (config_all_devices.has_key('CONFIG_IOMMU_TESTDEV') and config_all_devices.has_key('CONFIG_RISCV_IOMMU') ? ['iommu-riscv-test'] : []) + \ --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820067; cv=pass; d=zohomail.com; s=zohoarc; b=n4G1XC2+Z2/4qfefkhAq95kj2thgEB32XpJYgbQfEi6/Rl6YzQjDmUgpehaUfQpNxUXkAqi7xwe0jodVoKurodRijwcBaio2fwhTIsFnpfBKSQqyr94TRBKmKj+WQJGueq2JGWMKm48OiizFRs4k5kAXl6H62pSZsMI8kC5ERso= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820067; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Wi+ymX8a/nEd1kUWNr/bVGQvOEbR6BoOGmKV3BT4I90=; b=SfOwm29LrCm6E8Gyo23vCuRR+y2orrHbrjdi9iaq2ip5GHs7IiIEz/CbNCcgz7Gxcqf4HWfyLCu1jhTwPuCSqBUmFwzMJ7WibWyzYD2xm9Zq+RzvYYW+35bO94rbVaonV8enTccULPNVxQw2S3yPFHq2OKNcSTwFUmH/aIpHx7A= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784820067830920.8617730148494; Thu, 23 Jul 2026 08:21:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvD3-00049T-3b; Thu, 23 Jul 2026 11:19:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvCz-00047h-7K; Thu, 23 Jul 2026 11:19:37 -0400 Received: from mail-japanwestazlp170120003.outbound.protection.outlook.com ([2a01:111:f403:c406::3] helo=OS8PR02CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvCx-00081v-QQ; Thu, 23 Jul 2026 11:19:36 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by KL1PR02MB6215.apcprd02.prod.outlook.com (2603:1096:820:9f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.11; Thu, 23 Jul 2026 15:19:23 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:23 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EQF/jnFftOLX5myDNnAxNnv8g/htQ9aczqI4w/gwoF6o7XdvqxWgtxFdcTBFXkhrZmm95qYwWp0dJUSXTk1etErnX/vf9xFbkJjoXEZou8LCvX9Mt5fC277Cv5c/68BoC3wY+ef1Zb2L2dNAfGSr/4WsEDcwwnZv4AzYVxOVM0Yg66KMXbETt4CMKPZMcXUkykwdhe5oEZgbOtoGzsetMPd7rk5SZbglNrhjY2ZH3CsRsOpIFV6+cHw2vkMdPdxO4rJ0+RqnnnUd2174TpIU1PX8kgrXziMbekRD6IoEkrL9cDMAd/y1geRYGkTQb7F9R2/PGyte68c9erGk5Cm8xg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Wi+ymX8a/nEd1kUWNr/bVGQvOEbR6BoOGmKV3BT4I90=; b=q1fBoyQpL9d4K2XOvZDL7jEbXLiqFyFSwKsv1m3RBnOjJFu4JWKk3y54ogQXTGckv6xsxdWRCZ35TtqapqSriHkz4ucSIgjPO9kldHegfKtYvidf75jyDm1z6QWdVIP2PrJkhlFVS/mHDEzrCHAwOB2RvwpVBM2T5IsLict1v9BnPBjHljwoDDoUQj5X2Lwh/2ygkooCrTpeK9uwnppIRG/Uda0yXoLrmdCNqN22OyIlx6IOZfbZ1uk+5nhTGxtMEOM6f/y+Pg8xly2CbJLi0MqlKsnpQKUVpkZNwgTPBGgguVsyvhNoI/VlFkwROfA6BhiprMb5tkKtEqr0iWRMDw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Wi+ymX8a/nEd1kUWNr/bVGQvOEbR6BoOGmKV3BT4I90=; b=GIOdl+ppq2aL0wpf79XJC6poIWBzPY+ybTePE16hv9IlMjFyC76SUg+ZaLNEuRG37uUgsTIlnSFo5dqbttbVrZk23JyQb7nElS00CYoXKpieVSi5byZqcghfj7AAU5oNzQmfHzgghb46pdfBDVbouPqvmAvwJcPkkcn+KDxlAyQxuwsqla0JGlVUcztC71scvKrCKAFEAbo7esWP7GQkrSP+OvPuek/7qoGK7l4b7irwYvlnyg4Li6rshViJcG5KCwUSl7zjPSLCHEN3neiwUgHr5+P2QOd38tZPJfpYTqOHAp6oZhYKdypCIx8fDOYWv2VPrQWs5naPubuSGxJRBw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Bin Meng , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-block@nongnu.org Subject: [PATCH 07/26] hw/sd: sdhci: Migrate the Host Control 2 register Date: Thu, 23 Jul 2026 23:18:34 +0800 Message-Id: <20260723151853.2143177-8-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|KL1PR02MB6215:EE_ X-MS-Office365-Filtering-Correlation-Id: 7095e64e-9084-4d43-305f-08dee8cdc6bb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|23010399003|1800799024|376014|366016|56012099006|10067099003|18002099003|22082099003|6133799003; X-Microsoft-Antispam-Message-Info: M++NMPtufe8ey2gKzStYz6MHzKB2kLwyZ3YuOimN2IFEkkulhqY4mj/dC4AA9ICpY+CXOMAFCG9YjNI8qUZlqhdf/Qgcfz45rkY33zSXQz/sZlYB1vUPgJ4+tmxFOATzrbPfGyrBq0BVQsQ+ryL6LQPf0kUBxwajmbiRHi7afwe6+MJKJj//5l8durPL1E+SE6MSjs+oTtIhpFm1uFyCq9OS8upJlJqkiW1GwEvQF06jckqPVxLAQwZyxtf8i4UbRSCAaPDOmJYbtF07OqazUlAdXuReKNpAgxRKuWvUEq1O20r3ViIBUJqg6U+zkWMzsEfuLVj/7/gAwZ72zaxg5+20YA3kDHWWq4S6fsqx3Xs1P6uB+OPL6aFZ91sVxXPz1OqMjfgVo2+pDBIpLE9hHcxJFjwFJSqIHk0F4oVXqi+DFBg/4M7ffqURa1M7mqFmFjF3ELcyV4EPM1340+5+eLaJlC+vi+OTeKXYxhtrbKV9Td8eswLCxYmv+LOVKGD/l/3RBMkJhJHCiqWXLWq/PN2nnaPzKU6K7fqVbxKO41p+5YZs1kpyPPYiKrvHueOMWrh4cOXpcBQ0SGwb6ufDhJ7LhPdorSUbYEKGc5ZBfxms64clOPXCCaqg5FFCYkkUT1tM0e02g73VngM5FHQT0JjYZwH57W4yXos+1n3b9EY= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(23010399003)(1800799024)(376014)(366016)(56012099006)(10067099003)(18002099003)(22082099003)(6133799003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?6xUwJwVPEm3ewicA6/3pRLFN30Aogkt1phYl72wODwRMGiIOVRyds/R6xAYJ?= =?us-ascii?Q?0iB8QZSIZnrcMDi6UdyaB6psSeStf52MCzAQdprI3TNuudCHjILHsWgU6+/g?= =?us-ascii?Q?n2FsVzapwQJLTIAcflHOBM59eVuCJWNU3gfFrXQKpWUB6zC5HmjfluPsjNd2?= =?us-ascii?Q?pxnylMRe5KEy6Gdg5qvbb+Ec2IFiimTwIQTd0EriwmGtfYpZdsnNcvvUX7an?= =?us-ascii?Q?kldBroyvyvDIzKN4Ve/7z8BkTc119irvTbD+I/aU0yWFxBqQhRPifOF4kw+Q?= =?us-ascii?Q?+09U1DHB4FMULOxlJ7e/ucRmXnZSMsUDRlYUNq4N4QHjKAE8pXxF5JwCooa7?= =?us-ascii?Q?t6zpMRU0YYbX4Sl0YMpIzNkvfMhTxv8NH2mB7Hla4dLtMWzoXs0g+utGSDNf?= =?us-ascii?Q?NxRpRxXDo66uyW3TbWhe0f7N+/I2yifU7YxmEzdiOI2ZBVQTZepllOSCWCwn?= =?us-ascii?Q?QV9lIcPipV+pooYqQ2S4Yni2joXK2YcVObw8weBGRbFM9sRjyP9/Dx0/H7W4?= =?us-ascii?Q?AyF2uB9ghxodOOzqWQdTm+qmOoibQaXbKCrQg5c7dQ7ewYZfJ62JPyhsjsSt?= =?us-ascii?Q?/9w9cAvIhyGD/ELEuRHz9lUJcSKxlDSiyy4sGGkYYwwXaqtrq+98LEYhAjtk?= =?us-ascii?Q?A8wxrFmP2WwZWmVs1QXVduZwulb+Fsx8677lFi6FzlqLMF0qwRY1Hvhw/2C+?= =?us-ascii?Q?7Qac4hb5pUQIhZRQIQB6X+UM1jeVnXN87Cr4YIHXyBuqGrPNj74skv3f2PXc?= =?us-ascii?Q?z+a3nXbVbZYPeI984ybHaCsDnUizSaQuMW41iiIsaFiilRCON4Ad2+7NkucO?= =?us-ascii?Q?FVyoFsFoUBRmZaRbaz6XVvUjNSeswoKYX5HbrOQ+DYawNFYRI7Z82FGYTiAk?= =?us-ascii?Q?D3PnhcEgkDesrnXBV/+bCYsO95zSltP2PnCujUrrlC7F1AMawK+EWijpow5c?= =?us-ascii?Q?sitAndUrSU/9qG+EezIQreO+mAkfCJJkKeIWi0qZYsZ+JIW0O3Ju3K8rmXxP?= =?us-ascii?Q?SfWRzxKDIjanRO80hvSgp7mPBirTin9QJxLkyC8m3Yji8kGaz/pZrJEWYVjj?= =?us-ascii?Q?F0bT6vhSaCKUcIn7/GYOBZ322dBZ/+MMeMGppQtzVCGXUYLQgBQZp97aF6Tr?= =?us-ascii?Q?m1URng0kB9Iux8lCKvuVx4LZ9mm2UK7PbR6rEJstVmCffSL8fXRbC7eOdDXC?= =?us-ascii?Q?0Dp6klP7vBoI/bjAUrXsG+FjjKMZrBfYlAV3mVBo04CLVM5riFXpf3KBlD0C?= =?us-ascii?Q?QjJ3uWrdVJAWPpbT7IyTOlUbelFrdyOUbMqQuSr4B0ZAzmEWOtKjujQU3GPY?= =?us-ascii?Q?+wl+JxwKkY2aJFVYl3P7+9h1mQIBZpAHW/owEQXACTOLQVjbUoLkbvX3/OoS?= =?us-ascii?Q?LzPXyM9iOt7vy+TBDHgroFbqgClMQ9R8yw0zgs7qp6+f4CsGGFFcIsyzz0Ch?= =?us-ascii?Q?fp4KEPcavL+2Le8YKaZG2DIURvlZrUVPmCkqluex/TcAItPr7tQnVjjFc/zg?= =?us-ascii?Q?Uwip37aXCSgYLzm44KnZpNhEWnSg3tYaFGlDsla27TguDWlNysrPscd+KsbT?= =?us-ascii?Q?eo4v/624NTYhbLopOPG95bSBgkg8qAxxRA/ysqt7VRgM53AiBds7tQI+Urw0?= =?us-ascii?Q?AeRMfTukUwilvSZukK3U2keFhS2+YZgdPQI3Z2id9CNeUJ0fFSloH+2LeDNt?= =?us-ascii?Q?E9TmmJvHgEfV3FCuUw/oCd5KNEiyf7xkDKbp9LFyztDNx3mgdijW8GkkyEHe?= =?us-ascii?Q?blOigzTa6RE4LBHFPZd3uq+oaMyO2Uw=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7095e64e-9084-4d43-305f-08dee8cdc6bb X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:23.4080 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: tra8yEh4ldpkLet6rEXToB0FSsb2G3k6Xrh4I5WGav8jWDynl3/jb2UlZQOIl07zvcvWTaDJEPv5RqfMSzaC+GEStuYiq3olT46m1aYKMGw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR02MB6215 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c406::3; envelope-from=bin.meng@processmission.com; helo=OS8PR02CU002.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820069595158500 Content-Type: text/plain; charset="utf-8" The Host Control 2 register has been part of SDHCIState since its initial implementation, but it was omitted from sdhci_vmstate. Migration therefore resets the register to zero and can change tuning, voltage, or DMA behavior. Migrate nonzero values in an optional subsection. Clear the register before loading so older streams retain the reset default without changing the main stream version. Fixes: ea55a221bfc0 ("sdhci: implement the Host Control 2 register (tuning = sequence)") Signed-off-by: Bin Meng --- hw/sd/sdhci.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 55a4abdd72..749de85476 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1470,6 +1470,24 @@ void sdhci_common_unrealize(SDHCIState *s) s->fifo_buffer =3D NULL; } =20 +static bool sdhci_hostctl2_vmstate_needed(void *opaque) +{ + SDHCIState *s =3D opaque; + + return s->hostctl2; +} + +static const VMStateDescription sdhci_hostctl2_vmstate =3D { + .name =3D "sdhci/hostctl2", + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D sdhci_hostctl2_vmstate_needed, + .fields =3D (const VMStateField[]) { + VMSTATE_UINT16(hostctl2, SDHCIState), + VMSTATE_END_OF_LIST() + }, +}; + static bool sdhci_pending_insert_vmstate_needed(void *opaque) { SDHCIState *s =3D opaque; @@ -1488,6 +1506,7 @@ static int sdhci_pre_load(void *opaque) { SDHCIState *s =3D opaque; =20 + s->hostctl2 =3D 0; s->sdma_boundary_paused =3D false; return 0; } @@ -1562,6 +1581,7 @@ const VMStateDescription sdhci_vmstate =3D { VMSTATE_END_OF_LIST() }, .subsections =3D (const VMStateDescription * const []) { + &sdhci_hostctl2_vmstate, &sdhci_pending_insert_vmstate, &sdhci_sdma_boundary_paused_vmstate, NULL --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820047; cv=pass; d=zohomail.com; s=zohoarc; b=i0WHFmdG9MHPhsThAXcDAl/3RuLoj2TLRwecZXV64qiHQgG3bK6fZsDGtxYp3KAsZjasNXAIm4PGrfRqDTrvb18dF7KOxwhuVjt8c/enhtoEsFcJdK2hBHyKt+ycrQdxidssEm7jPM3/kp4HN9throX32QSuyoQStp1k1coMjcs= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820047; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=nHbDntHfemAOFyQzoNIxAdxMhYSCjBbI8BHCzPaQ1sc=; b=QI7vEtzXYYU6IOzIs14FXy3W043TvLMlp//8O9cJLgMDuV5SrkxV8mePcUc7gZi5R6GW9OwbaaIeuf7EucP+/GiFnqPkhASMjvpF0c09pIBdBLE7CMdlgyyM5bQtPKcf/tHiGAipWLwDA11LQ4W0Jb3ftv0SvfxtAQ2ZQjmACz4= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784820047570261.88820862090154; Thu, 23 Jul 2026 08:20:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvD3-00049u-U4; Thu, 23 Jul 2026 11:19:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvD1-00048h-BS; Thu, 23 Jul 2026 11:19:39 -0400 Received: from mail-japanwestazlp170120003.outbound.protection.outlook.com ([2a01:111:f403:c406::3] helo=OS8PR02CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvCy-0007zZ-8A; Thu, 23 Jul 2026 11:19:37 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by KL1PR02MB6215.apcprd02.prod.outlook.com (2603:1096:820:9f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.11; Thu, 23 Jul 2026 15:19:24 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cUxSc4noxhUf+XqvpyY6shmyPGHszbcVbbUgOZYxHIlGTp3JkKl4EA1HqckcztgVGxGkDMAYQJAn1kleeBpO5aBz6O0Nqf27+jrELU9JdwIuDFlmnvbMF91fZJZSq4pBRGfRhvY/xPWVomUY3zG5/FY0czdD7xkM7slK0YB9wfZORK0eR2I+jfIE4KUZpwKDmU7vl07r95DN0+/8S6OVvP0ivStk7r+C6rxcvYQU5C+5gy0bT0LaNcPbtKzRGPXHtx29RyOMVB4Q+I3NKOUsr1CL5/zQj+eXbJWTF6OZEfniIwReDI05aWlaIiEaQzgRITbta57f8HWO/uj8XlW2sw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=nHbDntHfemAOFyQzoNIxAdxMhYSCjBbI8BHCzPaQ1sc=; b=WABb5x17nt8tmGkmioNZuN8tNXxXJwYH3p/2TF5QTJh7Rrq3V85CAt8HgBPjmcw8vwQ4MGeaAYsJGcJlganY84WVT8NKozAZAqM3iKeMQqPc1zx6HP7G4hhK4H6NJLsfhkmZe1wLvecz6ZWvEOLE5mTj86ekoJP3DIoSEze4DrW0DIE3kmFOT/zsq/fqUS8pXhex7kXXlseuO3FF07AZB0kShAtlE7bpNEMQQuMXp/JcHXg0yptDblwLmaVJQ2FhQpqVHE1pG2Hdvo+Fnf+44F5uTOfyamzbTv9BJzpfVbdIcS1rOVSoSGiIfSgUHvb/YYVcmLBId2nx3Gvre068Sg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nHbDntHfemAOFyQzoNIxAdxMhYSCjBbI8BHCzPaQ1sc=; b=IbzN6YV+2lT+nMzeGqxEz85BmAC7ci+d3SYdsfWqetzPiCRezA7xxR5WVsH9uNxte1kJ/No2QIG/oRO6RbRkJZa3mRRrI7CAaa//xlw36Z2QmjITHRZzmcAr18M/FkflSM3EYlm7ga/EP9cnkKB4VRgZjX5McJJIRnSnev/jvQ03GQlCu2ygN4fd3EirAD3LijEHpaRKZhzzOvrIc8xYClHREJWLSOQsFB9Iw65Uyd9EM+JAjFIm4HumzMXMiuDe7M8jfedPoig5jjrnGIf21JbjkDKmDeCxTUsWsagRin1kPvjZ1YyP/i6NgeMZ/Ke7u0v+3jNODGIpfEObvAJFZA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: qemu-stable@nongnu.org, Bin Meng , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-block@nongnu.org Subject: [PATCH 08/26] hw/sd: sdhci: Accept version 4 enable without UHS-I Date: Thu, 23 Jul 2026 23:18:35 +0800 Message-Id: <20260723151853.2143177-9-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|KL1PR02MB6215:EE_ X-MS-Office365-Filtering-Correlation-Id: b5c34b13-31ac-4f2e-f507-08dee8cdc75b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|23010399003|1800799024|376014|366016|56012099006|10067099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: /tgzK+ngpHiSQFbi5IWNqaCpAUgkJj8Irkj2oHcBOQnDiix13UnBG2m1OM+Fn6GjU0c7iXO8DPWiuERSS5pEo4pGbMfmt4/NEmiGZ8DcRuwdIuAwAgjOyOql998qS7nim1yI6oaVflv4G/EqhU3wsiLlXrGdlYTMeFyiwEvSOF6al/gGs9IhFa6jk4jqhBJ1lSmZfJqiVdh0F4hVjYys4NkcCsV7fDh2N263ilgWY+q5GrhfGhGKKZHiaxwKx+cfdxKLu24MN3yfMsD3ynKLtBtGlFquAxtlP3qAQQT2W9lS21jNcUuVI2BH8LQ14bF2l7ARiabfhSj2p7128qsrj/l9aURHW2RHLQy8TjeYCE/2Qx+ftROItn90Cc5bAnF7Fx87y+ZVid9swPgfCALy0jRLCmB+nMSsljIMaVN7Q7L5QyLV96NUh5zufZSbUxKgxKh71sZu5C3Irv9NH8r4dPzL+9wUUcmKYg2HGBG3/njALswLbCzFR4tEVFuLB4Y0cfm6zT9HF4UBqygoH2mlHDxXOZV7/dHQeWOcv7SJ9YUu9Hvomy7p5tLVBfZKD2LsYCghMpmE0s8Vo6i9MvIf6uFnsWNNu5O0gC+1qB6nrANWyis29PK5d+URkZNCiVTOIqZ1olkCuYKVvTbTVCGmPF5JRB+zr4crJ57tGeljTTA= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(23010399003)(1800799024)(376014)(366016)(56012099006)(10067099003)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?LWvm8lGnP4xiVLmSmBsMEap8hKNG0w+1zHmAtnbPB8Tuln3ntEheC/8/uG7D?= =?us-ascii?Q?7N9WvdUFyEPsaEfvcwx1ntynmAEDeQ4H+Dfipe+xMYSpKC+Enmn8wQQV1OhX?= =?us-ascii?Q?ELRQ6kxG+xxf9qaLEXZkNdY5RV5Fql5ellbPkvtx44uVvCpHBROL01XN2Gem?= =?us-ascii?Q?uttteHBo469ZTE15KIH56QR++/kqmH+svSwVtNSNM8EIrzBMzNYEIUGG8PCK?= =?us-ascii?Q?XmDLZXUH8pG9wwEnj6UxVSfc6am6AyK6FE7xKEq8bE6jbTyhqSMhC1O7T1Ga?= =?us-ascii?Q?lVU0ZM3MQEc0KZX2tHxHh+gQizxo2YHKT/5DlydVirOVUbMc0OLfJbZz22H4?= =?us-ascii?Q?rvOr6FknxPBo1SHnPVO+vB9yyoMk6VsMvnMgu+LQ6ZURZsXh87jT2yGuk2gG?= =?us-ascii?Q?DO4y9iu20/UvLiNZIVxTU8oB5BEbNAfGi5/P8ZeM027EH9jI3Ldo/iBy98du?= =?us-ascii?Q?ISoHH/To3TVV59kyWA1CsztZi5s/rA1B8Rsl+PmPvWS29f4n4XUtu5xAj9vX?= =?us-ascii?Q?4rx9CMMmaYjH2l0JawZNHYy3zDJXbwu/Fjr6Xjeg/bRa6dSB3wlsBov3RW34?= =?us-ascii?Q?Ky4jV94yFUv+ozepkGE7AaY53jCqjcn/29Fw0TJ7B7l6bABjp3RwNLUF6C5o?= =?us-ascii?Q?RR2dsc5VgGtc3y16Ec1ZALpz3X3E5mVWx4WbisdmmGZdJHR6k89XVbFDbqFG?= =?us-ascii?Q?7Dz/CAXLQCz49/AD2Akl5VnO6i04zG7mYATWAYfu58tK2O9LXbnKmTLbZU5M?= =?us-ascii?Q?aYvSOfEwtBU7MnOzTEUSminwEd7BouCPmPSY3aD34f/n5CWA1vl12cE6dEM0?= =?us-ascii?Q?sYHUd8DcFKNrFgLYDkQ2Pxz+JvCxQHfXGZa394Re3zLyvC0psZmnrC3DZwbw?= =?us-ascii?Q?uZPViJ3sd3TOuB/KZPKLY58TMIe81Kt6x+g0T1DdSDoxaaeKc2+y8nOKMFmn?= =?us-ascii?Q?RpvakWSIkyLR4CzEcvb7vDzVdCmMYG4VjmNW32DqKuewxxQ8OMZ1uX+J3zOm?= =?us-ascii?Q?tqG7ZLrBJiDG3MBuYxDSvUWz2q5zMVA2IXfRPNjCCR+dOCs+e33GyCrxkpE6?= =?us-ascii?Q?g9nGuVzj4pA67GgQJ6bP7NYPIz9O2KzP7SKjNELP/NqGoZgelgf4KRXgYNsI?= =?us-ascii?Q?yskNzb5arzBPdUFhSUPoXYW+lOsmzhqhNb67gaTxVn50MXlvmW0so62dLBKu?= =?us-ascii?Q?ElwutHqvoDw1NDlgEbmY8k3WOvB7AEVIwG0UyvN/5DGyMY+b1o3QdC2g6FQ0?= =?us-ascii?Q?SBJKtsvehsL4CT5uZo4tWeaFbwd/UwbVo9WV0qr3e5Ou5hene83yuseuve1x?= =?us-ascii?Q?S4tP5XSy3LuNQf/YMDgfZqeTpi4m4GI+Lj0K3Sz1lsu0+VV/dvlh2JHbYxWm?= =?us-ascii?Q?ONokxK1xnkl/+ohbkA+WDBIDqSamimjhXxkeeqFPxWuPH0PTYFIMiZ00ZdYI?= =?us-ascii?Q?BPuqDtcQmMqAzYfkvF4LDlSngMPC6nKdxWwsNOKBnaYuWGbPvdERgxGO70Ii?= =?us-ascii?Q?1VvT9zYxpDy5YKM8dSokqGmnvXk0AaMHit72DuQsEHZQB1Vp8NTPBlh/gTiz?= =?us-ascii?Q?KxXF08xoQkI+uh+t7zgfAquICl7w4MYJn8Oxx9cQpBCGiaIESgoHMTkoNnEJ?= =?us-ascii?Q?S/YtEpjyKes0sSg7L/i3TMTaeB+/HyFY9pvzOuhhtYK/YATBLuu73CEBRQDj?= =?us-ascii?Q?xJOOe0cHOu+XoBQH3hQaZdElgOdaUbCtMdceJcTi19bW847GGVkRgy2qR/AJ?= =?us-ascii?Q?5fDR2yps7Rb2lIF+akvFgoO6Dru+SIg=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: b5c34b13-31ac-4f2e-f507-08dee8cdc75b X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:24.6003 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: +oVlmwMLU5QMrcY6jwWZpHKdYfOBVvthhdCxFv4H6hGpF1WKefCskAnM1fbpDP0F+8fnCWjdI3m4iYnbszmZdwySE8xdcGqeI7WZdKXW65A= X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR02MB6215 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c406::3; envelope-from=bin.meng@processmission.com; helo=OS8PR02CU002.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820049655158500 Content-Type: text/plain; charset="utf-8" Host Control 2 writes have been conditional on modeled UHS-I support since commit 0034ebe6ee31. Host Version 4 Enable does not control UHS signaling, so controllers without modeled UHS-I cannot enter version 4 mode. Retain Host Version 4 Enable independently of UHS-I while continuing to reject UHS-specific fields and keeping voltage changes UHS-gated. Fixes: 0034ebe6ee31 ("sdhci: implement UHS-I voltage switch") Cc: qemu-stable@nongnu.org Signed-off-by: Bin Meng --- hw/sd/sdhci.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 749de85476..71af1f8c57 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1358,11 +1358,24 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t v= al, unsigned size) } sdhci_update_irq(s); break; - case SDHC_ACMD12ERRSTS: + case SDHC_ACMD12ERRSTS: { + uint16_t hostctl2_mask =3D mask >> 16; + uint16_t hostctl2_value =3D value >> 16; + MASKED_WRITE(s->acmd12errsts, mask, value & UINT16_MAX); - if (s->uhs_mode >=3D UHS_I) { - MASKED_WRITE(s->hostctl2, mask >> 16, value >> 16); + if (s->uhs_mode < UHS_I) { + /* + * VERSION4 is writable even without UHS-I. Preserve all other + * Host Control 2 bits when UHS-I is not supported. + */ + uint16_t independent =3D R_SDHC_HOSTCTL2_VERSION4_MASK; =20 + hostctl2_mask |=3D ~independent; + hostctl2_value &=3D independent; + } + MASKED_WRITE(s->hostctl2, hostctl2_mask, hostctl2_value); + + if (s->uhs_mode >=3D UHS_I) { if (FIELD_EX32(s->hostctl2, SDHC_HOSTCTL2, V18_ENA)) { sdbus_set_voltage(&s->sdbus, SD_VOLTAGE_1_8V); } else { @@ -1370,6 +1383,7 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t val= , unsigned size) } } break; + } =20 case SDHC_CAPAB: case SDHC_CAPAB + 4: --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784819996; cv=pass; d=zohomail.com; s=zohoarc; b=Vm3t1Q9/mC/roqZaqjSRvisnKJOCZt6Hjf+kwd0Z6QnOyr9vtdb6h7oi6LY+rBM6TusZ4fHAyEZYfIYYiJ+LnX4TZXhCybTslX/yOnefrZ4N7XwV4VsjIHfgcbRePYJ5ysiPnvMLjRXbHwBvvbvuy28vYf6NvmxjQBFxbbNdGSc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784819996; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=YNCBzkDO1fAiMAC8JrbtkNMAd1gWM0VhYkBiE7rxsG4=; b=H2G7FqFyWP/A5J8FKFY/4vGmG3JqQSPKKBE+pIWOys6ZWYLM7W0rE/fCcariShrTUCM1PYwl4BrqJja3OMjoBjsUcDjuGp3I040af8HJj9oL4PSfCs4mtYh8t/9FIysRzRIojXsLy0/MdsOoJWUBdlSTaHnZoybMjHwLCuQ7Xt0= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784819996334106.08711655444438; Thu, 23 Jul 2026 08:19:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvD9-0004Bk-10; Thu, 23 Jul 2026 11:19:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvD5-0004Aq-7Z; Thu, 23 Jul 2026 11:19:43 -0400 Received: from mail-japanwestazlp170120003.outbound.protection.outlook.com ([2a01:111:f403:c406::3] helo=OS8PR02CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvD1-00081v-L0; Thu, 23 Jul 2026 11:19:42 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by KL1PR02MB6215.apcprd02.prod.outlook.com (2603:1096:820:9f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.11; Thu, 23 Jul 2026 15:19:25 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZafuETjr3t/Bne/RGzmqvgxPHmVB0BxmmwGS1OAspZhMmhwkxEkRX1XmogajMF7YXUfCfIhDLcpYU02NfAkGV/w34B54SIPqMu1puXWgM9HgB9URi1HM6bGgfSKOBhllUR13bGwkWjTzMNU1EHp6o20lnSpGg+51XiUQqhxX0dWRvUADDnBwj3PK6242jVBfSA1OSL+qSu4wCzuj5NKAWYM8oBwSRG9bR9T3BK6aE0Dy2Mfq5U/TWqzybwNRcKPTuZqaQ9gnEL8JGt5eFZXto2rdbTY8vj8IGaYTYHX7mBfh/HGEp0WWCCC7gR8CaD4yKd7blS0a/ZvMxzLtdzogSA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=YNCBzkDO1fAiMAC8JrbtkNMAd1gWM0VhYkBiE7rxsG4=; b=O/FEUms8KVyhI6mjRm0NpO3LjetLOyKOrEoL3WR5Ac0bhXUKipV1kGsYd4/8MGgRunWspGR10htBD20ckQy5gis8IwnSqFY7sWxuYKJztHLNUkgwd3sDRkitj+h1mIal6cq2XLCebNWWf9FOgLRLgbT3BBRNZ+yuCNnI4ipntom7pEj2lZtisWIqLuAkaID4mmwMmHv4wo+5DcTLDqEWQO5RvdCAV4gst2UH6Xyk2fDSsAcm0HJYgYla8o5PktIKYifWi1Ranbyk66sdYJRqx5WM6stPBV52wwenG2j3qE7HnHlGUPSrJIonHXNtE94o7OApIvKO1BW+w2xlfJ7ZEQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YNCBzkDO1fAiMAC8JrbtkNMAd1gWM0VhYkBiE7rxsG4=; b=M/Z6U8YSMM5Jyifuk5dQuTvoIb8WTO/jU7cYGmZcDSoTd6J63Wir7fu3epKLqLbNJm18+W5r4brpvKsQCc42E3w+KQa1I+/pogI5gaP3NthW/ZVCszI5ZmxeMx7WkhTeSlDxSc9sy/HanxkIOAZaQi37fVwauPERBQ/OfmBr9AznMp8NoYOw1J8rPNlyofXhDstqFh82/fzNko2/2bWlio2eqme7MQJKCSW9hcxnTH8EabR5/QiHw9OjGFTrvcO4l7DP+msfhyCYiOZ98iF+gbhM9db9uBbygN8n7b5F/zeosWi2SBE6C8GVCjIy2Ym9Q/idps6rJd7kLcSjTk7T9g== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Bin Meng , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-block@nongnu.org Subject: [PATCH 09/26] hw/sd: sdhci: Use version 4 system address for SDMA Date: Thu, 23 Jul 2026 23:18:36 +0800 Message-Id: <20260723151853.2143177-10-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|KL1PR02MB6215:EE_ X-MS-Office365-Filtering-Correlation-Id: a3301436-e819-4144-d8a1-08dee8cdc801 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|23010399003|1800799024|376014|366016|56012099006|10067099003|18002099003|22082099003|6133799003; X-Microsoft-Antispam-Message-Info: s5iyvTFlw8fZ2tY3CU593DBRjXm16cgFWbYsTevugH7j3GG1jB9vXBRqO1mcITo73DBBF9UOwxI+kfIHLCYFLGPqzHHjEpDuTClQLpK59RHBWBzQC1zVQhiVZvRFplrJ/WpAdxOR9Tr+qdMUb/UuooAMf/XTjyUApSEzUgmOe0HaFsJRJY8Z+/3rZhSMwsuGTy80vJuXIHHaLlI1Ga7l6AMcOV7dpn33ZeWCMS0QmsPlX4qXQXi9hXSgtLz9PcNFV8mBUf6hUvpuQm9SbGMHGEpWZIJKPEdSIwf9LwtBB+VgEOuV7ydjNaNT/83HtRnLfaVYwKBaHg0gthE1ESsjhj68HnjyWXkNEYp65PDTGY21jsQsKLGL+aoibcWP0hRulYuK4ldD+r37gF++RmcJuXyAsNaPXJ8Bs80lmxB3QMF3IVJm36AHiAA5pnZOKA/Dh7Z5UAX3069yISYHjTB9Bi2GdhARGUDg4GpHElVrWJ6G/Kp3HY0oa3r3QsoVWic7CouFixJDsm3EedOpVkbgrC2dgUP1uazrNEeiEcKWByseYljHnmVdctSiRQqs9id/FfIxsvezradSb8hDUV9FTe+bBHGZGbOVdtxPBde+Rd5I5oBZ+eMLONLlbdEnyIkyIGjV1PsDRl5lTnz/taLZ/QhEx9coIQRJvPZ6PK5MjbI= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(23010399003)(1800799024)(376014)(366016)(56012099006)(10067099003)(18002099003)(22082099003)(6133799003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?P7qyo5gz7UdEKOT107OU/4DEjvVKjizawcSHeLiRsFgY2bxoo4mWHdRFrT3d?= =?us-ascii?Q?2ncOjcpK9cIS7KBf4MvbJjqiaHhdv1heIL470XmEsTfkMqXWp92+4uQiC6fA?= =?us-ascii?Q?5x2BptQ1JoE9mv3vdOOVHTIs+qVkOPDc112l4yAjDJyhpxKj5qKF6KhzQvBh?= =?us-ascii?Q?6154QXId1Xslw8qs4VgzdMz+YUhKmoZf5aX5VtXkXEqBf2SNJDKqFseCzWRF?= =?us-ascii?Q?tksS8DUcyDJqMRjyeijwnw5pnJUZIBO/Irzohe8NHrVqo5kO3lyT+JKupoj1?= =?us-ascii?Q?l457+SW5OVgziGFu5SklpfhozJC1vIt5m0TX6g6R6feJlvmWbWOUV5cB70Ae?= =?us-ascii?Q?75ChBKxdzY+KGX78JJ+LKFvaVc8MDOyqAc2IZoYKauXMo961y0RXLGA4R6eZ?= =?us-ascii?Q?eOszoqZCCDT7dYiNW3xQ1KCL+dsnaQ7xzT/2mnRHD29msfftsstK5MkfJbhV?= =?us-ascii?Q?em8cirmkykP/qsLxC4pKNPQ/T1iZPzUuAmfXaCLpst2Aa9JacKcxgGqVLk2Y?= =?us-ascii?Q?PIy2CMCqQFxRXHsO8bFnxKDaK2IRILXqfk1BUhW3wL69vXSOBFDg8Qi17sxB?= =?us-ascii?Q?/GiY6fgQng4zHs1qfXZ0ITx2FUabCMCSTx9g3zjH0FmyqLs/Da1M0/VH8AfW?= =?us-ascii?Q?xUACmrX7B9m7/k2dLvh6vn4cI72lW08W41TXDkG02lwsU0AzQ14CkLHd27AA?= =?us-ascii?Q?y4us6mOcu1rHzv2H6zVGAj7/cTexJ5a/097gw4sIrgnPr01cEzMMjiXEVxtQ?= =?us-ascii?Q?qPXBE3oyojxQ2QLc27XwxQsba9jXjmWJHBHCv5igJFMF7ArJacTiZ8GJ1VL0?= =?us-ascii?Q?cQGDj7QP/dYxvAzSX7YGlEmJtVhXDKVLfDbQdY1FRjhAcdOg10/QDxZjgcdd?= =?us-ascii?Q?MPOx2b3RDBz4O8GC4BBbr0uzlqNVWtZlErioXeRmC1FxPE96edZaJpBmI7U2?= =?us-ascii?Q?FF479+L6aFOLqyRe9x3P8vs07tmey6N+ZjqKgtr3bLec7B3nro1mmaBWZGla?= =?us-ascii?Q?43ltO2Tn0ExpaKhrb6ZsUsuKtND9E8SpGOKutzc2ill+OgWoiNIVL9JARfyg?= =?us-ascii?Q?YsQWGLzkdUqU1rD7efLQVcKclRQEaa1hn+Ty3ek9mg4pk3KFcHc2VMEP2tia?= =?us-ascii?Q?YrXFYfyVRp6mqZH99wrCwPFrn5i5Zt8TYu8Bx59tY3dhfLa9w8iCKQglysUk?= =?us-ascii?Q?Ri5nk3O0gOSZrFDV/yB0owBGLVz4ZOI5VyJgSEy6sb0Fp01zLG1tR8od3AXh?= =?us-ascii?Q?+sD6cHLXkWqBUyOxPpay+2eZ3CIAGGRUO6EHRaRmxoxS8L9lDdxcScagWlX8?= =?us-ascii?Q?fj5GP9pVP0kYp6GbkkWlsj6JZpgi4/tTObzZgblx8FFkdR6MPDEq0WudtMH9?= =?us-ascii?Q?mH3qkofeZNFx2ScAZSmMz7nvCNm0SWsKfSW+yYqZzktdLcDd/uD57aEnvVOI?= =?us-ascii?Q?BydJynXusaz4aHztgqjLwKzboLytm+1+/jCOv+lRG0mWiLfteQNhYPNjql5X?= =?us-ascii?Q?PZ0FNCK7kwPw9uPuPBYlwsS/U6xuACOEga7vi27tSD7wag5eQL5SQAS9RC+V?= =?us-ascii?Q?FoMZVoVjyJNPv9ON7PFn60AEj9yqhQvHI1cCPwk/+SVa6qUyVaCrcPTOsARu?= =?us-ascii?Q?8dp8kptFvJWoehZWdkiDPzXXsyyJ5milKAZM2nj2+/mdHuiz/Gt8Ra25DaQk?= =?us-ascii?Q?xespYyHjcVEnGLX8rHEUVddB9P12RB+b1xdxdr9tU3JDqJgx5whnrhfmPfEY?= =?us-ascii?Q?ZasozvjOppTFcw7cNaXdltXBQmYJv7E=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: a3301436-e819-4144-d8a1-08dee8cdc801 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:25.6413 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: N6N/kV8cjlYybbposY6zH2IjaQ8weCbNZhEOroJmWZNcbp/F9kHpE3f/Q0USpt8EN7bO0gnY9LNDTQq1oOQJ90+GzGJzeuzQhiWH+cNxml4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR02MB6215 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c406::3; envelope-from=bin.meng@processmission.com; helo=OS8PR02CU002.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784819997505158500 Content-Type: text/plain; charset="utf-8" SDHCI version 4 moves the SDMA system address from the legacy 32-bit register at offset 0x00 to the address pair at offsets 0x58 and 0x5c. At present QEMU always uses the legacy register, so guest SDHCI driver with version 4 mode enabled uses an incorrect DMA address. Select the address register from Host Version 4 Enable and honor 64-bit Addressing when reading and advancing it. Keep the existing offset 0x00 behavior when version 4 mode is disabled. Signed-off-by: Bin Meng --- hw/sd/sdhci-internal.h | 1 + hw/sd/sdhci.c | 63 ++++++++++++++++++++++++++++++++++-------- 2 files changed, 53 insertions(+), 11 deletions(-) diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h index 4aeed120bf..2116995dcc 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -201,6 +201,7 @@ FIELD(SDHC_HOSTCTL2, UHS_II_ENA, 8, 1); /* since = v4 */ FIELD(SDHC_HOSTCTL2, ADMA2_LENGTH, 10, 1); /* since v4 */ FIELD(SDHC_HOSTCTL2, CMD23_ENA, 11, 1); /* since v4 */ FIELD(SDHC_HOSTCTL2, VERSION4, 12, 1); /* since v4 */ +FIELD(SDHC_HOSTCTL2, ADDRESSING_64, 13, 1); /* since v4 */ FIELD(SDHC_HOSTCTL2, ASYNC_INT, 14, 1); FIELD(SDHC_HOSTCTL2, PRESET_ENA, 15, 1); =20 diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 71af1f8c57..d2132035eb 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -598,6 +598,41 @@ static void sdhci_write_dataport(SDHCIState *s, uint32= _t value, unsigned size) * Single DMA data transfer */ =20 +static bool sdhci_version4_enabled(SDHCIState *s) +{ + return FIELD_EX32(s->hostctl2, SDHC_HOSTCTL2, VERSION4); +} + +static bool sdhci_64bit_addressing_enabled(SDHCIState *s) +{ + return FIELD_EX32(s->hostctl2, SDHC_HOSTCTL2, ADDRESSING_64); +} + +static uint64_t sdhci_sdma_address(SDHCIState *s) +{ + if (!sdhci_version4_enabled(s)) { + return s->sdmasysad; + } + + return sdhci_64bit_addressing_enabled(s) ? + s->admasysaddr : (uint32_t)s->admasysaddr; +} + +static void sdhci_advance_sdma_address(SDHCIState *s, uint32_t bytes) +{ + if (!sdhci_version4_enabled(s)) { + s->sdmasysad +=3D bytes; + } else if (sdhci_64bit_addressing_enabled(s)) { + s->admasysaddr +=3D bytes; + } else { + uint32_t address =3D s->admasysaddr; + + address +=3D bytes; + s->admasysaddr =3D (s->admasysaddr & 0xffffffff00000000ULL) | + address; + } +} + /* Multi block SDMA transfer */ static void sdhci_sdma_transfer_multi_blocks(SDHCIState *s) { @@ -605,7 +640,8 @@ static void sdhci_sdma_transfer_multi_blocks(SDHCIState= *s) unsigned int begin; const uint16_t block_size =3D s->blksize & BLOCK_SIZE_MASK; uint32_t boundary_chk =3D 1 << (((s->blksize & ~BLOCK_SIZE_MASK) >> 12= ) + 12); - uint32_t boundary_count =3D boundary_chk - (s->sdmasysad % boundary_ch= k); + uint64_t sdma_address =3D sdhci_sdma_address(s); + uint32_t boundary_count =3D boundary_chk - (sdma_address % boundary_ch= k); =20 if (!(s->trnmod & SDHC_TRNS_BLK_CNT_EN) || !s->blkcnt) { qemu_log_mask(LOG_UNIMP, "infinite transfer is not supported\n"); @@ -617,7 +653,7 @@ static void sdhci_sdma_transfer_multi_blocks(SDHCIState= *s) * possible stop at page boundary if initial address is not page align= ed, * allow them to work properly */ - if ((s->sdmasysad % boundary_chk) =3D=3D 0) { + if ((sdma_address % boundary_chk) =3D=3D 0) { page_aligned =3D true; } =20 @@ -639,9 +675,10 @@ static void sdhci_sdma_transfer_multi_blocks(SDHCIStat= e *s) s->blkcnt--; } } - dma_memory_write(s->dma_as, s->sdmasysad, &s->fifo_buffer[begi= n], + dma_memory_write(s->dma_as, sdhci_sdma_address(s), + &s->fifo_buffer[begin], s->data_count - begin, MEMTXATTRS_UNSPECIFIED= ); - s->sdmasysad +=3D s->data_count - begin; + sdhci_advance_sdma_address(s, s->data_count - begin); if (s->data_count =3D=3D block_size) { s->data_count =3D 0; } @@ -660,9 +697,10 @@ static void sdhci_sdma_transfer_multi_blocks(SDHCIStat= e *s) s->data_count =3D block_size; boundary_count -=3D block_size - begin; } - dma_memory_read(s->dma_as, s->sdmasysad, &s->fifo_buffer[begin= ], + dma_memory_read(s->dma_as, sdhci_sdma_address(s), + &s->fifo_buffer[begin], s->data_count - begin, MEMTXATTRS_UNSPECIFIED); - s->sdmasysad +=3D s->data_count - begin; + sdhci_advance_sdma_address(s, s->data_count - begin); if (s->data_count =3D=3D block_size) { sdbus_write_data(&s->sdbus, s->fifo_buffer, block_size); s->data_count =3D 0; @@ -695,10 +733,12 @@ static void sdhci_sdma_transfer_single_block(SDHCISta= te *s) =20 if (s->trnmod & SDHC_TRNS_READ) { sdbus_read_data(&s->sdbus, s->fifo_buffer, datacnt); - dma_memory_write(s->dma_as, s->sdmasysad, s->fifo_buffer, datacnt, + dma_memory_write(s->dma_as, sdhci_sdma_address(s), + s->fifo_buffer, datacnt, MEMTXATTRS_UNSPECIFIED); } else { - dma_memory_read(s->dma_as, s->sdmasysad, s->fifo_buffer, datacnt, + dma_memory_read(s->dma_as, sdhci_sdma_address(s), + s->fifo_buffer, datacnt, MEMTXATTRS_UNSPECIFIED); sdbus_write_data(&s->sdbus, s->fifo_buffer, datacnt); } @@ -1365,10 +1405,11 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t v= al, unsigned size) MASKED_WRITE(s->acmd12errsts, mask, value & UINT16_MAX); if (s->uhs_mode < UHS_I) { /* - * VERSION4 is writable even without UHS-I. Preserve all other - * Host Control 2 bits when UHS-I is not supported. + * Version 4 fields are writable even without UHS-I. Preserve = all + * other Host Control 2 bits when UHS-I is not supported. */ - uint16_t independent =3D R_SDHC_HOSTCTL2_VERSION4_MASK; + uint16_t independent =3D R_SDHC_HOSTCTL2_VERSION4_MASK | + R_SDHC_HOSTCTL2_ADDRESSING_64_MASK; =20 hostctl2_mask |=3D ~independent; hostctl2_value &=3D independent; --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820031; cv=pass; d=zohomail.com; s=zohoarc; b=DTZojX4beNnJ7oIpLiIsClGX5CzaHqcVMD46eENLPowQn49443Slc2dYSGzsPA9rw1lHGcYJ4eQhWI4o5zlNV1NxoRcRlDrwfbBW1xwUYEohs5AgXeX46AkYz0fmpBWPHvOAtz689403s02NCmMFMVjpDy8lu7ywVdEQiMaxSzk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820031; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=moP7k6X+hNoOnNA6gwYXEhkbpSr0Cxv6gmtgIBoJt/c=; b=U2md+UxHFv4pCggOvp+hlT8xw5TIfbAHvnO84oyonP4XhSz5oxWLxV7GOK4b5FTuhxeytdeB6r6cR3HxUjhV667fye+Kkh9EP91zEcXBR/XVOnF04bCsT/sa4cyDBO6aC+EreqmZPRlXMn0XYJwYbOefqZmq1BjSN5Zh7l5mVFw= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178482003153494.85241054450228; Thu, 23 Jul 2026 08:20:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvDF-0004EK-8s; Thu, 23 Jul 2026 11:19:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvD5-0004Ay-CT; Thu, 23 Jul 2026 11:19:43 -0400 Received: from mail-japanwestazlp170120003.outbound.protection.outlook.com ([2a01:111:f403:c406::3] helo=OS8PR02CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvD3-0007zZ-Ko; Thu, 23 Jul 2026 11:19:43 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by KL1PR02MB6215.apcprd02.prod.outlook.com (2603:1096:820:9f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.11; Thu, 23 Jul 2026 15:19:27 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:26 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=a1yMr5erH/ubWzvOi2ObwZI0I1i66fJXwAY18MV603bNbsZYUlY087jS9ET8WAO/wv6A2dC1fmXizpG9ToSQKJTZSTWhbd7PTaptXNR5CAaCmqcCaVf3zTvq/yOm4OVVYHw/YKN+ifmrSff10CLsmMAfgZ3SWANRLCZSweShEEy9n3LWPC/xY1BczZ84nqI2siTVzubA5RgKZy4CCjaX4uyoeWnCnCGVK6jERPLV9GgSADNCwmGxwVJC0QLuLJG1lT+lmYwXGqIfRjkHTAGbAeu5O0xIcgWcIKlvYCtzEIyKl+OaYJPNhUBjAkCoTejyeWnIlbMzu5xr25SolF1UBA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=moP7k6X+hNoOnNA6gwYXEhkbpSr0Cxv6gmtgIBoJt/c=; b=rnKM4dwquV+rSQgN9DQ1TeX6VKM30Zh9zEFUIMrqCmW0eNckQryraxGhoxoez4RZZiIwaDhKFBw41amNYIg54LS3oDIMeuSwdffUa+mDpNuZoxyfe3semxb77pCOASAOpSePH/WPWuZuYkTqKdGtP+tv0iYDkbiS0nvIiBFWcsaexsAoaXJ6Ac7RRI8yKgXaaKCB+kuQdkOzQRML5MegheitzfZdBaqRawJRa0EfB9YdZXSsiMolLpW6C5E0pux0JnBzbuOMau49JLjHwgbrTr23J2nJzhvcChkWrPfF1yNXbTc7O/vl8qc/Pgirz68WbJ9UCv19+/6Hoca6LFQlWw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=moP7k6X+hNoOnNA6gwYXEhkbpSr0Cxv6gmtgIBoJt/c=; b=QgDEtySzvL3Iod4HuTBf7F+ubGq6wzTQrwq9GxRX/eDlBTNY9BHe3RgQPxt8fhrA53BJr5kQUsOuBBryqfPm0xWqNDNf0fX8IoT1gjCMp1W+J0XxN01vRg6FsNKEPTyotKOQVnYfxBuQdttD8Ao0Z7ZqSSbVTjUU8B9+TCLxiSCoxRXpHnhzFzXo0WskO8VzVM8iRdCy/0wjfhAFzW8Cvv26zZDoyLmB6sztivbuTHjUYJlkTaXqNTh3Eu9llTZejozo0smg7f3fJqGF9f7J2EpaevJ1LBy3H/uVIVvMsJ2u+VVlJKUNS5RUWlhrcfYQvW13NPqYOMkttwDLy22CjA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Bin Meng , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-block@nongnu.org Subject: [PATCH 10/26] hw/sd: sdhci: Support version 4 ADMA 64-bit addressing Date: Thu, 23 Jul 2026 23:18:37 +0800 Message-Id: <20260723151853.2143177-11-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|KL1PR02MB6215:EE_ X-MS-Office365-Filtering-Correlation-Id: f6f026fc-57da-4584-687d-08dee8cdc8cc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|23010399003|1800799024|376014|366016|56012099006|10067099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 9ErnnwRTChjU++SfwJQa8sV6UiqrouMOIwkIe2L84YOh/pPjzKUvH0aQH9k9oaUgMubPJD78dnXTJfDSyNNP/25kjdd3MTKjlit4xpreOmuEk7osqPvAxbArsVTAwv/ry3zWkd+Lk7NYUnAv+plMdi+5Lg5x5SDRp+Htkg9NM5YU1+V/0BX5fs1Y5yFR0yESqVYfeOiyDaZrgDxtgc1T6yOaJtGzollaWmwcK8lcy+2QecMnOIq7zEvtEBj6LeSRtvugReduOgxPKtxov65lijgN6hYXuSL2uudBzh31eRn3nHY27zNmd7fSuj6W78IKhvIOay3dIE4XcvaxcKUYNNIxWy7xVh++zU2O6t5Jzt6mytlWp+EGA9d2lMZ8dwL1NrnSVdHZXvYsTwhpVueS3ZbNVKw0/qL/FwlgxjyNoPaxG3NsWFu/iRiOwTMpCZKAbQlrWUK2IG6aHs5D8BmI/iSX+65BUooOnbO3fr39QC6Q0jIdHTV/tZbmAqqNkgfk3Fqs+ZIOjIvMUz39rLD4IxuF3jB+/chEqkog+7Yuyq0DaVD29x+HOC4cWv7WSJ8CW/z0C2jWyJPJebMAQhK2F6SBUTJMzTlS12v3+8MRHjg54Xuulaxs5q6LhawNJjymY2OLeb3z/4roovm65tWbB8hvubykeLq2pJkFBkx9wbs= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(23010399003)(1800799024)(376014)(366016)(56012099006)(10067099003)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?wkJgFQpW51AvK+or9akHepgi1RGoHh3uFkiz+E/8c33skkKBo/kB0gEcGKW5?= =?us-ascii?Q?4ZTVNuIe1yatSnhFjoUW693T7cqKW1rsHUGSZbQpif1T0+IWccpxh+cvKlBO?= =?us-ascii?Q?xL0TQ9HumeWP+aRsI7SO5s6k4LNLYXOA+R2VXghyu5RXr2DzjbmaRyDfpP4X?= =?us-ascii?Q?N16+lxJviWHWHOAEGiZbCGvXLnLQyduZWzH3FJewqYMZg+KjO5iSNd92MOIA?= =?us-ascii?Q?J7vqxKez4z8ujkcL20ev3VAFm3aKhhSO9lN+EwOCN4uTYKnaKiPdTAYbdqUR?= =?us-ascii?Q?cMMG3fup/ZIvtN+8LEdItOe2UeukCCs9OJbVrlEjhyRyfbwLV2A6IB/RPWw4?= =?us-ascii?Q?zLAbSm2p/Z1QWbkBPVArfGaZ2tHoGhP9gNRbRFnLtT7wXm+r3u3xTjMajgDv?= =?us-ascii?Q?2IMQUXd081R4Ngkgv0Rcvp8t/jHuOPWNzvPPIKKku1qSh/2+S+YCL/lj3gp6?= =?us-ascii?Q?0qR5QL5u+Dj9b4P0Xdeff3PreH2APPiQyw/LGMCAgGgbJQPU1qgEhem1pEGs?= =?us-ascii?Q?5zD3MvRNgSXsNis5Lzr+xldAGJkcE0ufu1Eyg8+rdSuT/RzKPYhQWJg0qty4?= =?us-ascii?Q?1GQSYJ5rCE8y4PximKIiYJEsx8ytn/7wBtODZA6y7u2vrzc5/3MOVseD7659?= =?us-ascii?Q?SD31wn/JH5+RoimAschaRQwI3K/oPhy9lJFBD/yrRcMRD9RCEJJrxe77I4QY?= =?us-ascii?Q?OvcVk5fS4JP02KwhMqSMOMkJQ2+rdB/zb5GVfEvYPJMXA5KXYklY2yO+ndIS?= =?us-ascii?Q?m111UcWftk35bjnNYaqM52ldG33nYGMdG3UhntLZrHx1QyFY4Xq0smKPcdy2?= =?us-ascii?Q?w02h6Uwx+AaU+lSpMbNUZc1pgpT+Wi27rfeDUt10V0zvPbY8oZuRpmk2dboI?= =?us-ascii?Q?mBro541/K8NYbU6CoNtN5xTYaq3xc2Q7yFpVKiiZJQqFVVQEs2A892M3cCi2?= =?us-ascii?Q?ZqAV8CfLamZJm2WHuIL84ODCQSnQutHPqcgQ5qo1X2DWlDKR2cI0FHZjkrjj?= =?us-ascii?Q?VuVJWs2gCwu7yqVItiqgoVljACe+bRLgbQLXaIRmABDdvU6sJAxk3NTMScrw?= =?us-ascii?Q?sPkbaq4l36GON2+YgMnTm4l+f0X6JmFDP6AH3L+6BkxbGiVCwuU3EDmomyiV?= =?us-ascii?Q?5HG/HxoUWU40lZH+7RGL7nqlEM2ZZAB8vqX32aW6z4BmiH3ur4YOUJe83qGd?= =?us-ascii?Q?vemjlZDNECMlL6dSa2W2xxaThYxSDOtKJPgYd0coFa5Ixvs0v0+Iu70epmJ/?= =?us-ascii?Q?jp/9fxIay/VwZ6EDzh4Fg2VtlQeaaKV885LufacI6C7JX6Fc+YiZRmijmOzJ?= =?us-ascii?Q?/oD7h2Omuju0KA6rJuwkqhmK0XBBJCcgQYPLt+aYHfPVoFG1nFW/zz7Q/w8h?= =?us-ascii?Q?dfgRwI3sWn+CCEANy+gO8aa8XLZrs78/CGlHNSBsktjw4a+FMN+GekfTpCtH?= =?us-ascii?Q?dnBBhNA1jChUYFdBDVgRZeZ7qpx3W1LHaMhbD7zk+V+y7B8irlBz7k2vz8g3?= =?us-ascii?Q?H8TER6GkX3m74wB44nC8aagOhvs1C8BqMfHBCgyJ21tM9F+HgnRxsWIyKBnR?= =?us-ascii?Q?rfufPKxmql1GSEylHFEZOPnv/0Hk6szWWteLjPgSeotHOl4NiyQ6mxKksEvz?= =?us-ascii?Q?+B71Y6HeQV8N7kMsb6rk7F0mZh0rHI7qhS0DD5TNdslXNP8mUbrhIeYFlz6y?= =?us-ascii?Q?L3E4AfApcJ6Hj7BeV/T3Lc1ADR5JYi+sDuDaSNQb3HKeGtnEJs9lSohHrWhH?= =?us-ascii?Q?HVWDPxv8GE7wXhtIgVcytshCiczXJbI=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: f6f026fc-57da-4584-687d-08dee8cdc8cc X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:26.9479 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 3CX3wRVVF64kf/0Dt9/oxxQJsLELdOgMuPAjTcTsqllf1P2u3E7BdBgslhi+ZSyJCEbQKnF6jyj/PqUFuBYjzSnp8Dq8PsZTWuToDuZCqHY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR02MB6215 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c406::3; envelope-from=bin.meng@processmission.com; helo=OS8PR02CU002.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820033507158500 Content-Type: text/plain; charset="utf-8" The Cadence Linux driver enables version 4 mode and 64-bit addressing in Host Control 2 but retains the ADMA2 encoding in Host Control 1. QEMU treats the transfer as 32-bit ADMA and uses 12-byte descriptors because it only decodes Host Control 1. Resolve the DMA type from both control registers and use 16-byte version 4 descriptors. Preserve the legacy 12-byte ADMA2 64-bit format when version 4 mode is disabled. Signed-off-by: Bin Meng --- hw/sd/sdhci.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index d2132035eb..00a4b9b0e4 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -227,6 +227,23 @@ static bool sdhci_update_irq(SDHCIState *s) return pending; } =20 +static uint8_t sdhci_get_dma_type(SDHCIState *s) +{ + uint8_t type =3D SDHC_DMA_TYPE(s->hostctl1); + + /* + * In version 4 mode, the legacy ADMA2_32 encoding selects ADMA2, + * while ADDRESSING_64 determines its address width. + */ + if (type =3D=3D SDHC_CTRL_ADMA2_32 && + FIELD_EX32(s->hostctl2, SDHC_HOSTCTL2, VERSION4) && + FIELD_EX32(s->hostctl2, SDHC_HOSTCTL2, ADDRESSING_64)) { + return SDHC_CTRL_ADMA2_64; + } + + return type; +} + static void sdhci_raise_insertion_irq(void *opaque) { SDHCIState *s =3D (SDHCIState *)opaque; @@ -781,7 +798,7 @@ static void get_adma_description(SDHCIState *s, ADMADes= cr *dscr) uint32_t adma1 =3D 0; uint64_t adma2 =3D 0; hwaddr entry_addr =3D (hwaddr)s->admasysaddr; - switch (SDHC_DMA_TYPE(s->hostctl1)) { + switch (sdhci_get_dma_type(s)) { case SDHC_CTRL_ADMA2_32: dma_memory_read(s->dma_as, entry_addr, &adma2, sizeof(adma2), MEMTXATTRS_UNSPECIFIED); @@ -818,7 +835,9 @@ static void get_adma_description(SDHCIState *s, ADMADes= cr *dscr) MEMTXATTRS_UNSPECIFIED); dscr->addr =3D le64_to_cpu(dscr->addr); dscr->attr &=3D (uint8_t) ~0xC0; - dscr->incr =3D 12; + /* Version 4 pads 64-bit ADMA2 descriptors from 96 to 128 bits */ + dscr->incr =3D FIELD_EX32(s->hostctl2, SDHC_HOSTCTL2, VERSION4) ? + 16 : 12; break; } } @@ -998,7 +1017,7 @@ static void sdhci_data_transfer(void *opaque) SDHCIState *s =3D (SDHCIState *)opaque; =20 if (s->trnmod & SDHC_TRNS_DMA) { - switch (SDHC_DMA_TYPE(s->hostctl1)) { + switch (sdhci_get_dma_type(s)) { case SDHC_CTRL_SDMA: sdhci_sdma_transfer(s); break; --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820300; cv=pass; d=zohomail.com; s=zohoarc; b=doqa22gJFK0xcTVUuP70XbZ6jFcRcJMm/VxwM4bcnYLW9YiXEI8v6eq6yPezYjUuPrL044RCkpAELXi2zwmNCekfQtN+Mhv3g2cloFHWayKzNENXJWOc35pZx8kpV02kPyC+ULehAkxkCFZpVX8MTsPDTpYOTySnDTMb/uSXqDw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820300; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=w7vgjoqLWfwU7yW7j04l1GsRqedYCi01zm5n9lHEJQg=; b=SOMMaNOEExU70INM86n7Urn85tEPpUyE+ASLYVgEZF6toqS5TtChXi7bLykuAQcOLiOyrkPChUUVWCIKe2a/lsjBdNBwFkiYcfcUIlde4uYYdqk60GCez6YErFpYEsWoVlRjyYlZ5y7krowqciWP0Nj0VJAccF7Ol7L/am/bFbg= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784820300519734.3977598376566; Thu, 23 Jul 2026 08:25:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvDi-0004mv-6t; Thu, 23 Jul 2026 11:20:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDS-0004WO-I9; Thu, 23 Jul 2026 11:20:10 -0400 Received: from mail-japanwestazlp170120003.outbound.protection.outlook.com ([2a01:111:f403:c406::3] helo=OS8PR02CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDQ-00081v-P6; Thu, 23 Jul 2026 11:20:06 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by KL1PR02MB6215.apcprd02.prod.outlook.com (2603:1096:820:9f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.11; Thu, 23 Jul 2026 15:19:28 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qHMcdlq0xP3oRXmkQmGaRPvAh6qQETTeFmHCqA+Rf4PkwFtp3VtduRZ0/dhWDqdjoEMf/siXpxxZ2NB3vt7/U51LLuilnlcZZOAcczF2hLfkpurTOmy1NdwTwiWMPyRjhmDtRmJcxH4+79KDxfr1ag+x691+PGuvGUXGJn2oF/b7nVR0bOVD1QaR+Jow6ps7CxIryOZ4JM2xfZv4jV+6ofw1Nbwan7sVdB4gcDxwG8OIXY+/Vs7gU2yJdE4QZRxP/Rp7HT7ztOth5NZiWN/nDPo2wKD5xDZU0WhpUxjMf+KM6AgjLfqK6L5V1yLSFRewDYyD8k0S1ocj9Fn6jCCF5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=w7vgjoqLWfwU7yW7j04l1GsRqedYCi01zm5n9lHEJQg=; b=lC0IgXLdfC2YY3jPboUJhKl2osBL7QAGTWOhIslUphh/5FiwJamwGxdKnr0wjZD1CYFEDFC+RS7VsR7oyMcZ0ZSLltaWsyndzAwArbmBZdKbuHw8J1i6skO2+8TOfBZrayqJ36Qu1Jhc4ra+pZiFnnFieHOgaa4Lt9PbObFHrcAC1vBT1HRpsIP2KaUmLWA6eSEALEqIjUhgu1armPhu4nNHXV4heaJulevbwPaeeYZ/TbyrlGEb14qxW08W4KSrhtvL9DCjoE9qJ++9Y6PNKdnxMwdKe5CZGUCgc6uD0md+Cv7I3y/t0ztSZGnGUVrxXjzJ0zXJwj4FjIC4Nn8rOQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=w7vgjoqLWfwU7yW7j04l1GsRqedYCi01zm5n9lHEJQg=; b=rQ8lgHZe3CCuEpaAXS3bQfhWXk5JMx654Nhn7031rInhSavvpyTBysAckygC6brxlaPB+L8jIOz/WvIOiw4ZQMsW2xURvWL33WsxiaohPl0ODMd6DvzcO5hxF/TcIH/s+6VcIcKbeTmH7CjcNcMi02/B2zjwCUet+sjUqJaSfJloeQRAX1WYDRV+0oB46DwUDOUkC9/e/FxrKNvXlFXZZak8xCmDWp0CqZBnXmp5OAlYVQzmzUkExVrSNgn3N9QXp0Ffx1960SISIVSDqFen7Lzknc6DzXI0LGJsq/8iiU9xJbmMFnbhJtc8fUG9eUAhNzLf6qHwf9LpJoN0g0ayGw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Bin Meng , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-block@nongnu.org Subject: [PATCH 11/26] hw/sd: sdhci: Resume version 4 SDMA at buffer boundaries Date: Thu, 23 Jul 2026 23:18:38 +0800 Message-Id: <20260723151853.2143177-12-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|KL1PR02MB6215:EE_ X-MS-Office365-Filtering-Correlation-Id: 8fa5c6a4-38cf-4e6f-630f-08dee8cdc99c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|23010399003|1800799024|376014|366016|56012099006|10067099003|18002099003|22082099003|6133799003; X-Microsoft-Antispam-Message-Info: ZSBOG7DM9JPq67XaXmmsdyR6UIAyty1nebJhfljX4h3BEbUoTrFDLeuJ1h9lbzumFtv98dFr0Hak9Zgznw6/BS4t0Qz+PJjMKimmt/IYl/i6GiTe2y8+s0l8n71ilk3ynWYdBXHqwrj1HjALSQWngefhzFCN1GygQ+0z32fzAP1UoSVqjb670kB5zmJsDTKxYjvUGO95+yRN/LfWm+UhLs4Jij5OLrmuEU7FTkFT1Yx4lUdujdYfypTtNqnVsTposx02pI8NrjQq8wKGXFOAZ+YQsBj1rsYBA/HdzmnmKzE11hc2nr5jb8jvwWbBylxyFRHjOuMJCdVqP7iaiBjTJfIxDB4y/IWmNT0NvyDz6h5mPTietbQTdxHdfXVEXnBHDQTqVNVlo/rsfrmh/9LzgUQz8m4rVTSTaXfL/DZr/bO+uc3BwL9rX91j+Kx18fPBDWqzFaO23ruE3Gm+1j9GjoBDElnQOlnZJKeY/1cFTIcEOa4g0xbS918+N/njGBcCJKGLQmvP5noUM+nO+leyknSfwLp7ZIX2Ax6VsesBlrL3ztNuisD/k4BJnSL1CZk/i4YkAjeUUIIyukvAJ+AQSArCWdfjBfaKt+Pw3aADkHkrtTT+g3L8SwBKmMFTjvU8DZ34M6GgDDCQQScgph49kKMheM6K8fDSbWmvwDdlqkw= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(23010399003)(1800799024)(376014)(366016)(56012099006)(10067099003)(18002099003)(22082099003)(6133799003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?5Yev1avE9QtFxfjACbh5cX7jTxh0simbwvY0YzbxK7WB5TgUSqPxCLwCJYV8?= =?us-ascii?Q?B7FvhnAhI33sZMv98jB8obnrDeW+Jf6Dayr+uBxdh84RfFi5+VUBFcJqRyNe?= =?us-ascii?Q?EpAtxpmL2P+jNdjcBVg//DGKqAOoSGzltOJhSrmKriZpNWxwKI/sMb1VN2r/?= =?us-ascii?Q?5NDoUvtimb4rjh8MWuvvYKxUa7owr55hGmB2V6ECb0VBaf8Vcj0RFw2aQGGG?= =?us-ascii?Q?2F+WYuKZ/yJ6wABjqzxTej23ByYeDXT+TeJZc1q8HlmvEoU8i9T+JskmYAvd?= =?us-ascii?Q?OpCwsvFlP4TIgx5yfm1Al4XNHuXlWV0FhVk5ZeMhCtt/lDUdK4I/fxs/lxYG?= =?us-ascii?Q?BHi4Q/+i6GZACekkTdVFZrMyolNh+x5JQd/wZXKVAqDrmmAiOl3ekVoV41rd?= =?us-ascii?Q?c8aW1no1bcnhazEMN9VSPcPxRKJPlkrbzRskAQKNvrCun6XbnDB9Giqpv7ox?= =?us-ascii?Q?/ex0dZ+0i+jnWvNzJ6GPqdl5NvxsvtxMpQ8a2GJaHO/Sk2DUE5YrLRmOpENP?= =?us-ascii?Q?i54GheVcwBAuZpmNxYI+FpS7zSJLHLb2A5NGdoqAf/UvZZDRuKMtFE3HhPD5?= =?us-ascii?Q?g87Og5eh7SYykLbtrvCPUVD3IWJdA0QkMhj8WgkWt+XYIzdj/SryIMY/d/Wu?= =?us-ascii?Q?p6hQyVNIj21hzjqE2rVfZ1hzivfwOUaY4I+vrHGj9mjdrsVI1zCL47vu6WdN?= =?us-ascii?Q?R2h7SYxZ1M/c3l829e92Q15junirSOb8tYbX4c1LCrcAcAQvjv/habQiL+ty?= =?us-ascii?Q?P4DAR1fN+g9qp1cVsPtJC0OMR6tG3Qvbo35MN7DYU6aFSWyi6ePvbYzdZikX?= =?us-ascii?Q?Q60zcrJWJd3X5JOYbescuBKq45YRDnIcIrSgYc+fdV7fk2Y0hoRuqWbpweLQ?= =?us-ascii?Q?NTok2rjzquJbk0KUIq/AVJZROdBe1q3IlgQRRYIXZ6LEEltXhLR+xllqBHkz?= =?us-ascii?Q?eDrWqUOxh+/2onzfY+B8aTUFXIW+EEzZEg4vtARtxC+scHUZ6vRKlzpCdX2g?= =?us-ascii?Q?OKiFABrQnRWowL1e6g0fbXdqKjAKPDUOnyMKB7Q/UGR6eeO3S0GDyGJgsfK0?= =?us-ascii?Q?9tshhWxRxoQVk/J8FL1bCmqRTs7oUkj1TZrHEOe9NcvN1S5SUXaH4PHkvvW8?= =?us-ascii?Q?QhCCk1KPXCf11y7uMIwMcoCm/vMKxYuvQ5GWywMYwYooMgTHCYMDtjmMTMUw?= =?us-ascii?Q?UQUdL0xJK0OR6XlWu7nAAx8Xxnm4kNP4bXnGSQXQv/uHT9m3GS2R9t1NhG3x?= =?us-ascii?Q?AjpuwUmdfquUUzcHCl/EqBiUbTkSFrJPDaEKcJN8aQa3guRzArXShUhgrmFS?= =?us-ascii?Q?xwoO4HshDkT6bqZGZar+Yph3TlfxkBXQgFSD/BuBj1YJQxx/Pv/e814rby/R?= =?us-ascii?Q?Im6MyReaft8h4V+opZHdwhNoYOgNvMh8E+mLBIf526QqMVkzlT38ipqtevbj?= =?us-ascii?Q?k+k4wNk/PP3gBA8dSmNZgTNcBE5tNMs1rlI6vd+5c8ufepQwRc6Z8TEBQ7nS?= =?us-ascii?Q?6E/3fSeagvRTJOStiCD/O3Jojrdy2Bnm7Sqhvr9Opv7DtWlkbOGA7T0o50T4?= =?us-ascii?Q?eIGgf3U9Dwki6hvagAfmyfaCFH4HyJ7BFabfv0uNpLKIJjTGk/ZX+ffjFKWF?= =?us-ascii?Q?INyw6IgzkKTPVv6FBI4LVxq6JUtG9tzKI+VdftLhayimOiRBQqd+bCbPUwB2?= =?us-ascii?Q?TE9FxbSB27dm/TANEem+ClM2n52+NzdW7ef10xOmHXIq2c2Tf0yMmGDddY3H?= =?us-ascii?Q?Q5HmVR7AU5NNxuLwbkidpev5hv1W0Lo=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8fa5c6a4-38cf-4e6f-630f-08dee8cdc99c X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:28.3174 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: u+SoBTkc0/GgOHHj69yaYdFzoA78og2gyxPznRjk3iPH3ZzY+bqoPD1uvmDu1wV3Gfmq6lyYG8AUor9TAmLYLAPsoXBlOYs/YdfDNT3zgA0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR02MB6215 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c406::3; envelope-from=bin.meng@processmission.com; helo=OS8PR02CU002.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820301211158500 Content-Type: text/plain; charset="utf-8" Version 4 SDMA selects its system address from the registers also named as the ADMA System Address registers. Updating those registers does not resume a transfer that stopped at the configured SDMA buffer boundary. Resume 32-bit addressing after an access completes the lower 32 bits of the ADMA System Address register. For 64-bit addressing, wait until an access completes the upper 32 bits so software can update the low half before the high half without starting from a mixed address. Signed-off-by: Bin Meng --- hw/sd/sdhci.c | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 00a4b9b0e4..8d85e1551c 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -786,6 +786,12 @@ static bool sdhci_sdma_transfer_active(SDHCIState *s) SDHC_DMA_TYPE(s->hostctl1) =3D=3D SDHC_CTRL_SDMA; } =20 +static void sdhci_resume_sdma_transfer(SDHCIState *s) +{ + s->sdma_boundary_paused =3D false; + sdhci_sdma_transfer(s); +} + typedef struct ADMADescr { hwaddr addr; uint16_t length; @@ -1257,14 +1263,15 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t v= al, unsigned size) =20 switch (offset & ~0x3) { case SDHC_SYSAD: - if (!TRANSFERRING_DATA(s->prnsts) || s->sdma_boundary_paused) { + if (!TRANSFERRING_DATA(s->prnsts) || + (!sdhci_version4_enabled(s) && s->sdma_boundary_paused)) { s->sdmasysad =3D (s->sdmasysad & mask) | value; MASKED_WRITE(s->sdmasysad, mask, value); - /* Writing to last byte of sdmasysad might trigger transfer */ - if (!(mask & 0xFF000000) && s->blkcnt && - (s->blksize & BLOCK_SIZE_MASK) && - SDHC_DMA_TYPE(s->hostctl1) =3D=3D SDHC_CTRL_SDMA) { - sdhci_sdma_transfer(s); + /* A completed selected-address write resumes stopped SDMA */ + if (!sdhci_version4_enabled(s) && !(mask & 0xff000000) && + s->sdma_boundary_paused && + sdhci_sdma_transfer_active(s)) { + sdhci_resume_sdma_transfer(s); } } break; @@ -1401,10 +1408,23 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t v= al, unsigned size) case SDHC_ADMASYSADDR: s->admasysaddr =3D (s->admasysaddr & (0xFFFFFFFF00000000ULL | (uint64_t)mask)) | (uint64_t)value; + if (sdhci_version4_enabled(s) && + !sdhci_64bit_addressing_enabled(s) && + !(mask & 0xff000000) && s->sdma_boundary_paused && + sdhci_sdma_transfer_active(s)) { + sdhci_resume_sdma_transfer(s); + } break; case SDHC_ADMASYSADDR + 4: s->admasysaddr =3D (s->admasysaddr & (0x00000000FFFFFFFFULL | ((uint64_t)mask << 32))) | ((uint64_t)value << 32); + /* A completed selected-address write resumes boundary-stopped SDM= A */ + if (sdhci_version4_enabled(s) && + sdhci_64bit_addressing_enabled(s) && + !(mask & 0xff000000) && s->sdma_boundary_paused && + sdhci_sdma_transfer_active(s)) { + sdhci_resume_sdma_transfer(s); + } break; case SDHC_FEAER: s->acmd12errsts |=3D value; --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820077; cv=pass; d=zohomail.com; s=zohoarc; b=bcZbndcuLSmCVIo3Uw3qRSp1xgjTYGA/UxvVOdtKkfeLjfZJIacHYHB3aEH91+Dgv3rO2OA68k52mAdk1xkpBECgjaqKFvHehuOcqRp1v+QQ8KHXbn2XdCBis5ynj8+soTiAXDu9CCpAQopOtzFwHgu6L+v/HV2RYLztpB0X+gk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820077; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cOQk9owve0RKpEylsUPAGqj7ECNhYVQuQpfGZS+L/Ic=; b=hDGB2bKWt+Omd9W9vAsFDN5FYCXBuB2aaNAwfTVDKd9uqa9yZa8O8QBzoNEjRtVsPJI6CuZO8h9Wa7nuaNMnniEQjUCOCmMS5GFIlTc8Q2yeaUlWGuxJn9flbDaFYJgMkHflZ+OHjMFJFBnsLygp3k7ML0USFujhew4RaGPGJIM= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784820077063567.854300239249; Thu, 23 Jul 2026 08:21:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvDK-0004Jn-MS; Thu, 23 Jul 2026 11:19:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvD9-0004Bp-01; Thu, 23 Jul 2026 11:19:47 -0400 Received: from mail-japanwestazlp170120003.outbound.protection.outlook.com ([2a01:111:f403:c406::3] helo=OS8PR02CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvD6-0007zZ-Vm; Thu, 23 Jul 2026 11:19:46 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by KL1PR02MB6215.apcprd02.prod.outlook.com (2603:1096:820:9f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.11; Thu, 23 Jul 2026 15:19:29 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aZkeKG4OD/sxA5bQ0Gl7tI95TLRB3MQHbubHS6Ecu1wAzV5gYzrRca4m1SbW6fEpb1qKWu+SM3dUaV+/Q0LUWvhy56uKUKaEzqdqaVvtLlHEie32j8+hit0c6FuP4S8A0/R0ahYtWnUmYuefzR8WNhoRhBbhr5MmIzGiKvZ0yasT+zP0C42QudyL6PVG+x+T8jRlzGeCEZQO66PuHWWgRGy69rTX+F2C2XJHKZVm3moisa8mbLXuSjJt9mwhKQbiyAFoJQ74v2VrVs0rRXeYlnXBPxZOaIocZVRKtPSk/lmCEwh9RSFX3KKFYWVF262WEn8vyR574Rw83mrtp07VJw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=cOQk9owve0RKpEylsUPAGqj7ECNhYVQuQpfGZS+L/Ic=; b=hkRQbDo25cclvhxbWY+RavUWCLpjOmzMY4b+Qw4Mq9VQV6s+n8A02dqE5VIBdMG0ygKiuytLEJRfdy3U8ybVm+jMYqBGjdUEMOdt+dToehYF45TEyu5nZB4LCgotgdIPrZ7DTEjcsWR0XkH6d0DjSZUBGd/cADtoILpUnGSAAphQzWQpjLfu1Ya+E0cPR1tvqFYddNoVfDc0ZiebnKFQHQ9lI377USNvLzvVaT2f/+z1fnpsygzlLolCcyCchFR31E7WRmULcc/HdkCE/OZZfVpiRITUJypXgBiFao0m/JbsgBV/NKBnl7N6CUIJxjXKgDui1JLMW7f1JLMxVVlhEQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cOQk9owve0RKpEylsUPAGqj7ECNhYVQuQpfGZS+L/Ic=; b=NgnwZxsv1/qME4pFYWakCeywjPX8+taVwO/KRjhLKft2TviBxzuYusafuhVM3nvYWamSFxkyJT+WbeDR28vPHU07mqDFAc4QoHqffYxarBlbXVmE8dBaEnUX4dy4qYg0Vtw1BrmxqmyYyRGoquf5wlhYEVLvax2XWeNBSy7eSk4iy/zabA2LOcCGKOTBaUcVjdcAyJkUlAhkGDRU9orT0RX7ltQJ5NUGc2sW2pIzC6Bdz9ZXe6JblQrLsqsRHZn/7t7/fzwilIzfKG6pBzHHnq3gIFegi+bHOodifwdgka38ZaU2n5H8ZlD/Z8VGGjeZjHGYY9ZOQlOPIyne903FWQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Bin Meng , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-block@nongnu.org Subject: [PATCH 12/26] hw/sd: sdhci: Run ADMA independently of MMIO Date: Thu, 23 Jul 2026 23:18:39 +0800 Message-Id: <20260723151853.2143177-13-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|KL1PR02MB6215:EE_ X-MS-Office365-Filtering-Correlation-Id: 187479f3-ace2-4901-3aa3-08dee8cdca3b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|23010399003|1800799024|376014|366016|56012099006|10067099003|18002099003|22082099003|6133799003; X-Microsoft-Antispam-Message-Info: gq8SBT2E+qOeI+AfgTj1v17R32lutj/PuU48+N3nu/LROp5ISw6bHX6OqPkHjwrh315uKbp5CABdlue2D4swJvOZ5rym3AMycKucUlePriV7YH93F1ecB0fIBLzBNAuK1n2/cmhZ2u676qmB5Gn4/xmLLNfSu0jwYeyEWjKj1/NhXEzkNPOh744864GP7ogzcju1xM8WcysfcVWzsRz+v90VsKMEx/HcdDp7a2R/9fEQ8uk01/xMdGlxo0viYPpE59nqyHLsWpdV5LmTiQPDqesjziWAcSmbWdbWJuwH+vMZFnxMhDT7xSLv3lma518UutAdRQYBY1Thw4ZBPuBMCs1LGJQNT9MY8wz8KNvTyCOVRDOFgBG7hDuGKA3Q66Jpg6Xi9BEM3KgEfRYfbpQCBUs+zj4o9U2aZGAIv0ipt85VBw5YEekOZcZ805IlInZx7smfJdg4Ja8+clKGFAkmv7iv8NLCmpPGvOIdkOPIJQRkxBQiqGBYdkygonvi0OJ6RfOEY8XUAOMc0yW5dm//naSaQ7QBTXzuLarfsdSdoJfEVHZRPDkjevJC31M8NgRkJTiD2JKAFMyuwpVlVv5771EZkwX0cBtdtNRqRzFAW5KjoqOZkDPY9y2QqpVzkpTfyaHGby3gAhade8UKhJBgjY4xmmBMuz2XUI23W2pQivI= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(23010399003)(1800799024)(376014)(366016)(56012099006)(10067099003)(18002099003)(22082099003)(6133799003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?FVzJxFEQp7PJkDrfDc+AMWE+WG8HQOVjqUucUms61HZ2WxaYaTx9Bsm/3VI0?= =?us-ascii?Q?PedI4E817U1JF2IPDy9EawWLdyznqflN/ynEflQHvxhRIoKvYkMtpz3myt2z?= =?us-ascii?Q?JWK00+lonENosGWqcVlnithk3Ksdh4OejJ+8cyeHYufMwXMWDwekOk//c6Yt?= =?us-ascii?Q?GTBkYpcvPCaEzlaUg4szzOdoxDbv5U2jx8xZf0S61HagFaLFcVilezGX2yFL?= =?us-ascii?Q?awU90qtZxKxtal5Ey0FmORIyzhnzWspDoNporgRJhPKVWeJ5afbpFYGXJt2l?= =?us-ascii?Q?fTZnKIilcFiP0zE9ue2ehrWQ8GVnT0EXCdCaru2baKATU5lN5ux9Omx/nd8R?= =?us-ascii?Q?Gt3JPAdPBsWwWnPsFhDIuuc315HwD8AO/kfbdIeBlaW4uRV6WCf7HTItHpsx?= =?us-ascii?Q?1PP3hhtR+nAJlIRVTdUtk0TXN/xDJrmwKOcKfF1mngUnkM+fLaUpA4QqRCJT?= =?us-ascii?Q?CK98ILcESQotXZqRjz1XnnHQ/CQdwbDebrC0HCC1umUpmlric2jZGp3HTePS?= =?us-ascii?Q?X95uvwTjcC8sslOyfKCbWpH77enMoXkOf0lDAUMAI5quKUPpHV3NxBdbZ1Rn?= =?us-ascii?Q?O9T0ZI4JS/67zSUnkjUmCDK/kcMtd5fioY+gLOp2Uq5gdJ7JtOlGIHWMRge6?= =?us-ascii?Q?Dl0q2MjmDkDij96Njn+575mc1YyhKKUGV3YtNmh2vxj5Gq+dH/2659hjUmfe?= =?us-ascii?Q?LFmK47/g5gWLVD7iDAwMSlix8xVa0xtAX/Z78JeSI6mcgA8ISPnPpR7LBEh7?= =?us-ascii?Q?DqoDFBP1kOveysTX0r8I8cHbdGG1hXmas7TxywdrhFmMFa7grM79RHEoVe2P?= =?us-ascii?Q?coN/U1x5DZx5QTt0DzSlgiEr0KRj39edG83OuT88KmKdSOfGJzBgLOqAjaBT?= =?us-ascii?Q?ayiE4pZVg3cc51GglliXKMwyz4qbBVHfIrmYNRm1KSfWTiUq9D9Ba3W30zzn?= =?us-ascii?Q?9mjGgQM0r1DGJEkp+FTKqY1k6Ebv7nevKhfz0sIhseWuNrczZ3G+EQu2CMq9?= =?us-ascii?Q?36/Q/iQYg2zl9B49pJIJcy0eIZtJ7c14eaBHOxt28sEQ1cE53zTmHKR8gLSX?= =?us-ascii?Q?2YPeAsYZyS/6RTUoPyy+pz3oBVO1ElFmRVVMto+2IhtZo0Mkrd/LU2SxOCZc?= =?us-ascii?Q?x9GXGXgEHI+vOekKxkkLgpSGU+CZBN8m9YLbhOkwIQG8VRwjpW7wXEtzxtfk?= =?us-ascii?Q?NS++oaqLzdq4WPA0s/Yj+N0BFeUOtojoYm287hVItknvFM1hhqL71+KgI/93?= =?us-ascii?Q?UfbDUMuWqQmzzWu1KAYGr869YMBK8gOKSnj3oDWHBiEmQkLpn/zMZGd4c5Tq?= =?us-ascii?Q?eYIrWo1cQyR9DcZUaWzBwRfHxuZpSY8ysyBjhCeUFHtamczrLweJ8cqpsj8B?= =?us-ascii?Q?1bxPfIa29Goh6nBNFio31ykMNaxMR2myG3qrBSHX2PJ96qw71qeYgArU/duS?= =?us-ascii?Q?jX0Vb3CplD1Bdd42lCmnoiAEnp6GIX10sotAgr3xQZ5CdMQkDoGcPETYl8JU?= =?us-ascii?Q?Br/WmAedjRWnb4Ui1sjGeWvG8jYNGRfCYAyUv7u3+Mn5UExX2wZlZjdy47m6?= =?us-ascii?Q?fYs8C9P3vAfllkgqiox9AY0UY24FMRUWdakkPVDqh4glcibkaQRHtxXAQeFb?= =?us-ascii?Q?feW0/TbAp+ggqbIHuiPrZ17606orzPBygZWnzhpWsAki/+zgDzAzCjvKvcib?= =?us-ascii?Q?PYeMKvDsT35L1MUV/xxBKLttCrb52gG+4dnxVyQAOpPLgI5nx/KUI+CszWO0?= =?us-ascii?Q?dcTuZnHZ1mucMNiH5L8x0xn5a1F0gnQ=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 187479f3-ace2-4901-3aa3-08dee8cdca3b X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:29.3814 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: kfh3Ebr+Gz7JNJ7HAY65rbSB/FlCaDgJ8ZYVJ+84GPrLCuO3+yqkDnMTiQGm7718qfpOsWjKvSQAdH1EzRSsfwo6rsJSSLBqrwcpJFV+IM8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR02MB6215 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c406::3; envelope-from=bin.meng@processmission.com; helo=OS8PR02CU002.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820077717158500 Content-Type: text/plain; charset="utf-8" The SDHCI model processes the first ADMA descriptor batch inside the command MMIO write, then resumes pending batches before every later SDHCI MMIO read or write. This makes register access perform bulk DMA work and can delay a status read even when completion bits are set. On the Icicle Kit, U-Boot uses ADMA2-64 and CMD18 to load a roughly 19 MiB FIT image from SD. It can report: Timeout for status update: 00000001 00000001 Timeout for status update: 00000003 00000001 The status already contains the requested Command Complete bit, and may also contain Transfer Complete. However, reading the interrupt status first executes a pending ADMA batch. The MMIO read can therefore return after U-Boot has reached its one-second polling deadline. Turn the existing transfer timer into an ADMA-only engine. Starting an ADMA command arms the engine directly, and each timer callback runs one bounded batch before yielding. MMIO reads and writes no longer perform or schedule ADMA work. Keep PIO and SDMA synchronous. Cancel the engine and clear ADMA activity and error state on DATA or ALL reset. Signed-off-by: Bin Meng --- hw/sd/sdhci.c | 140 +++++++++++++++++++++++++++++++------------------- 1 file changed, 86 insertions(+), 54 deletions(-) diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 8d85e1551c..e716a0d89f 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -277,6 +277,7 @@ static void sdhci_set_inserted(DeviceState *dev, bool l= evel) } } else { s->prnsts =3D 0x1fa0000; + timer_del(s->transfer_timer); s->pwrcon &=3D ~SDHC_POWER_ON; s->clkcon &=3D ~SDHC_CLOCK_SDCLK_EN; if (s->norintstsen & SDHC_NISEN_REMOVE) { @@ -348,7 +349,34 @@ static void sdhci_poweron_reset(DeviceState *dev) } } =20 -static void sdhci_data_transfer(void *opaque); +static void sdhci_data_transfer(SDHCIState *s); +static void sdhci_adma_engine(void *opaque); + +static void sdhci_set_transfer_active(SDHCIState *s) +{ + s->prnsts |=3D SDHC_DATA_INHIBIT | SDHC_DAT_LINE_ACTIVE; + if (s->trnmod & SDHC_TRNS_READ) { + s->prnsts |=3D SDHC_DOING_READ; + } else { + s->prnsts |=3D SDHC_DOING_WRITE; + } +} + +static void sdhci_schedule_adma(SDHCIState *s) +{ + timer_mod(s->transfer_timer, + qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + SDHC_TRANSFER_DELAY); +} + +static bool sdhci_adma_transfer_active(SDHCIState *s) +{ + return TRANSFERRING_DATA(s->prnsts) && + (s->trnmod & SDHC_TRNS_DMA) && + (s->cmdreg & SDHC_CMD_DATA_PRESENT) && + sdhci_get_dma_type(s) !=3D SDHC_CTRL_SDMA && + !(s->admaerr & SDHC_ADMAERR_STATE_MASK) && + !(s->errintsts & SDHC_EIS_ADMAERR); +} =20 #define BLOCK_SIZE_MASK (4 * KiB - 1) =20 @@ -405,7 +433,13 @@ static void sdhci_send_command(SDHCIState *s) if (!timeout && (s->blksize & BLOCK_SIZE_MASK) && (s->cmdreg & SDHC_CMD_DATA_PRESENT)) { s->data_count =3D 0; - sdhci_data_transfer(s); + if ((s->trnmod & SDHC_TRNS_DMA) && + sdhci_get_dma_type(s) !=3D SDHC_CTRL_SDMA) { + sdhci_set_transfer_active(s); + sdhci_schedule_adma(s); + } else { + sdhci_data_transfer(s); + } } } =20 @@ -850,7 +884,7 @@ static void get_adma_description(SDHCIState *s, ADMADes= cr *dscr) =20 /* Advanced DMA data transfer */ =20 -static void sdhci_do_adma(SDHCIState *s) +static void sdhci_adma_run_batch(SDHCIState *s) { unsigned int begin, length; const uint16_t block_size =3D s->blksize & BLOCK_SIZE_MASK; @@ -956,12 +990,15 @@ static void sdhci_do_adma(SDHCIState *s) } if (res !=3D MEMTX_OK) { s->data_count =3D 0; + s->admaerr &=3D ~SDHC_ADMAERR_STATE_MASK; + s->admaerr |=3D SDHC_ADMAERR_STATE_ST_TFR; if (s->errintstsen & SDHC_EISEN_ADMAERR) { trace_sdhci_error("Set ADMA error flag"); s->errintsts |=3D SDHC_EIS_ADMAERR; s->norintsts |=3D SDHC_NIS_ERR; } sdhci_update_irq(s); + return; } else { s->admasysaddr +=3D dscr.incr; } @@ -1012,50 +1049,52 @@ static void sdhci_do_adma(SDHCIState *s) } =20 /* we have unfinished business - reschedule to continue ADMA */ - timer_mod(s->transfer_timer, - qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + SDHC_TRANSFER_D= ELAY); + sdhci_schedule_adma(s); } =20 -/* Perform data transfer according to controller configuration */ - -static void sdhci_data_transfer(void *opaque) +/* Run one independently scheduled, quota-bounded ADMA batch */ +static void sdhci_adma_engine(void *opaque) { SDHCIState *s =3D (SDHCIState *)opaque; =20 - if (s->trnmod & SDHC_TRNS_DMA) { - switch (sdhci_get_dma_type(s)) { - case SDHC_CTRL_SDMA: - sdhci_sdma_transfer(s); - break; - case SDHC_CTRL_ADMA1_32: - if (!(s->capareg & R_SDHC_CAPAB_ADMA1_MASK)) { - trace_sdhci_error("ADMA1 not supported"); - break; - } + if (!sdhci_adma_transfer_active(s)) { + return; + } =20 - sdhci_do_adma(s); - break; - case SDHC_CTRL_ADMA2_32: - if (!(s->capareg & R_SDHC_CAPAB_ADMA2_MASK)) { - trace_sdhci_error("ADMA2 not supported"); - break; - } + switch (sdhci_get_dma_type(s)) { + case SDHC_CTRL_ADMA1_32: + if (!(s->capareg & R_SDHC_CAPAB_ADMA1_MASK)) { + trace_sdhci_error("ADMA1 not supported"); + return; + } + break; + case SDHC_CTRL_ADMA2_32: + if (!(s->capareg & R_SDHC_CAPAB_ADMA2_MASK)) { + trace_sdhci_error("ADMA2 not supported"); + return; + } + break; + case SDHC_CTRL_ADMA2_64: + if (!(s->capareg & R_SDHC_CAPAB_ADMA2_MASK) || + !(s->capareg & R_SDHC_CAPAB_BUS64BIT_MASK)) { + trace_sdhci_error("64 bit ADMA not supported"); + return; + } + break; + default: + trace_sdhci_error("Unsupported ADMA type"); + return; + } =20 - sdhci_do_adma(s); - break; - case SDHC_CTRL_ADMA2_64: - if (!(s->capareg & R_SDHC_CAPAB_ADMA2_MASK) || - !(s->capareg & R_SDHC_CAPAB_BUS64BIT_MASK)) { - trace_sdhci_error("64 bit ADMA not supported"); - break; - } + sdhci_adma_run_batch(s); +} =20 - sdhci_do_adma(s); - break; - default: - trace_sdhci_error("Unsupported DMA type"); - break; - } +/* Perform synchronous PIO or SDMA data transfer */ +static void sdhci_data_transfer(SDHCIState *s) +{ + if (s->trnmod & SDHC_TRNS_DMA) { + assert(sdhci_get_dma_type(s) =3D=3D SDHC_CTRL_SDMA); + sdhci_sdma_transfer(s); } else { if ((s->trnmod & SDHC_TRNS_READ) && sdbus_data_ready(&s->sdbus)) { s->prnsts |=3D SDHC_DOING_READ | SDHC_DATA_INHIBIT | @@ -1098,21 +1137,11 @@ sdhci_buff_access_is_sequential(SDHCIState *s, unsi= gned byte_num) return true; } =20 -static void sdhci_resume_pending_transfer(SDHCIState *s) -{ - timer_del(s->transfer_timer); - sdhci_data_transfer(s); -} - static uint64_t sdhci_read(void *opaque, hwaddr offset, unsigned size) { SDHCIState *s =3D (SDHCIState *)opaque; uint32_t ret =3D 0; =20 - if (timer_pending(s->transfer_timer)) { - sdhci_resume_pending_transfer(s); - } - switch (offset & ~0x3) { case SDHC_SYSAD: ret =3D s->sdmasysad; @@ -1235,7 +1264,10 @@ static inline void sdhci_reset_write(SDHCIState *s, = uint8_t value) s->norintsts &=3D ~SDHC_NIS_CMDCMP; break; case SDHC_RESET_DATA: + timer_del(s->transfer_timer); s->data_count =3D 0; + s->admaerr =3D 0; + s->errintsts &=3D ~SDHC_EIS_ADMAERR; s->prnsts &=3D ~(SDHC_SPACE_AVAILABLE | SDHC_DATA_AVAILABLE | SDHC_DOING_READ | SDHC_DOING_WRITE | SDHC_DATA_INHIBIT | SDHC_DAT_LINE_ACTIVE); @@ -1244,6 +1276,10 @@ static inline void sdhci_reset_write(SDHCIState *s, = uint8_t value) s->sdma_boundary_paused =3D false; s->norintsts &=3D ~(SDHC_NIS_WBUFRDY | SDHC_NIS_RBUFRDY | SDHC_NIS_DMA | SDHC_NIS_TRSCMP | SDHC_NIS_BLKGAP); + if (!s->errintsts) { + s->norintsts &=3D ~SDHC_NIS_ERR; + } + sdhci_update_irq(s); break; } } @@ -1257,10 +1293,6 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t va= l, unsigned size) uint32_t value =3D val; value <<=3D shift; =20 - if (timer_pending(s->transfer_timer)) { - sdhci_resume_pending_transfer(s); - } - switch (offset & ~0x3) { case SDHC_SYSAD: if (!TRANSFERRING_DATA(s->prnsts) || @@ -1521,7 +1553,7 @@ void sdhci_initfn(SDHCIState *s) s->insert_timer =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, sdhci_raise_insertion_irq, s); s->transfer_timer =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, - sdhci_data_transfer, s); + sdhci_adma_engine, s); =20 s->io_ops =3D &sdhci_mmio_ops; } --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820350; cv=pass; d=zohomail.com; s=zohoarc; b=B2GRsarfR421BtUp4b66yAkaB6MkNL4ULdAtGw9VBrUvgmpUBf36zeoolXd8sQOliMKkNZpbZudLJISTIO+XMcjwimRObBRpoDXteGhycnTVwHo89s7CG17IuPj4lSbySbs+ozVi5UJ3/1r+mxLREawDmphnjwGgOn+u0lFyAP0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820350; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XMpX72i14kkrHIkhHt2lgJWfFBFnNQSxja+H99PeKwY=; b=mCB2NauxgUXL1CLao2wa8Unq8ZCMqZyFMBGMd426TPFSMLl044w39y5ZoOsIZFRndLOJxAR5JM1I1uv9XNfNEVM5I7Dgv53UsBkajoXEo6Mi59HOSLqtkctCtC+GmZiwZ/Xi0uLK/gc2RhGNkyUdM4TMMckFWEWhuBJRfR+IdIs= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784820350304389.99855033756353; Thu, 23 Jul 2026 08:25:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvDn-0005K4-RA; Thu, 23 Jul 2026 11:20:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDg-0004gI-84; Thu, 23 Jul 2026 11:20:20 -0400 Received: from mail-japanwestazlp170120003.outbound.protection.outlook.com ([2a01:111:f403:c406::3] helo=OS8PR02CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDe-0007zZ-A5; Thu, 23 Jul 2026 11:20:19 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by KL1PR02MB6215.apcprd02.prod.outlook.com (2603:1096:820:9f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.11; Thu, 23 Jul 2026 15:19:30 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=o5U5JdZQI15SWyn+XI+5qZOgqD/HnRRzhVpDJJB6Pa6/0zvWHC3QbEJed3xwy5IICQ2NQIWAoHdiG8rQecKL5tM3jbs82ucd1xbmTP2EiKpKtDkA8DmNysbJzu70TUfQhK5xmwXDZ7oYmAErGesfjOROlWepGwHbicFB1J7erKZiy9O6GkFOlRQ5w5Uh4Z1SmqsuuDTdZfjHbbWHfB18rWTgaqvz9jpjDI3Uzp0GK8TVQyiMeJsPBMCCs/0nWqeuUjFxEtcy1k2oGI/RnIErZFOZE3QOr11mQoxBjxxVzXhGD4ApvL3pKkY7rVxsNUoQHyvlhuDmK6VkhCn5c2pO7g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=XMpX72i14kkrHIkhHt2lgJWfFBFnNQSxja+H99PeKwY=; b=WiFcLI15JW5yA0CqVYkyGAx4QUEJQfmJlWAuoRZECFUQ15vsIGq88ieHIRPl/aX58hh/GVmerQf+R6vMg5LJ/+w5rxDj8clUhv7ZW7dNjz307ESllIHqus3Wmb4UUVvjMWZW77Kur6dyXACMIuEYMiRb2fzbdknk7DOT7idO/X9D2gCX/kIEOd+NlQ7AYSlsnMdeGUbecj/TSzeMkcAm9iiWGw7xS3XGsVmTkj+a9oZV8hhe2xyaVvDIaqemAlEn+GWZE4PsuOIZF08CRQT7k4LHuPDLNxL7mTCnJfIvFxtmT/ELKLMsoQMPL+VlvYDvtfuDa9z1LDvKyCAhFbX7fg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XMpX72i14kkrHIkhHt2lgJWfFBFnNQSxja+H99PeKwY=; b=WAECSlr3xJz8RxvvurzKJTnThKr3slIlrPR+aGjNLftkVyQLmtHJAPCMkenOyW6WB8RDShg7cH1CVplJGFvpyPELyyEkcyRdSydIpm42s+qf2LgaurxUC+0kCPiOP5Q8vv/+SeNklQRz0CI2BlhW3vYsiagYj9/HLYyVuDu2rp6y1osyasDr9VWbQMT6bLqZjg4B/OS7L3lkMh56qTSiGQSm1Df7T3rdFnzMorttGdmgm177wZWhUCpj0u1ii568sSrz+/mpv1n6kqoIl1dmI7pc/+Nxq7oM8jg8Ob2pWXlQAJBWTLdzGJHWTmVrEx6ufAqEhxAuShpvNO/up5l6Sg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: qemu-stable@nongnu.org, Bin Meng , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-block@nongnu.org Subject: [PATCH 13/26] hw/sd: sd: Keep high-capacity memory blocks at 512 bytes Date: Thu, 23 Jul 2026 23:18:40 +0800 Message-Id: <20260723151853.2143177-14-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|KL1PR02MB6215:EE_ X-MS-Office365-Filtering-Correlation-Id: 73701471-54c8-4648-ce1f-08dee8cdcaeb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|23010399003|1800799024|376014|366016|56012099006|10067099003|18002099003|22082099003|6133799003|5023799004|3023799007; X-Microsoft-Antispam-Message-Info: WaHj3PQvpZ4NZCN5d1rQOsVGkzD0Dhe26AOBR7gLKfPyaRumbF+1FRBYgWeyWjZAhzewu9xvaWiBmWnwKkFUTlrYy5PN2+5mSe2EFG7MceXWabkFz9MC8eI/OSMY4UMrw0QzR6agR1rwR5mVO04hAO+C8SEF+I0OJ9XiFkT1xVFsrq5kKgbGxRrKDO5NQauROwFXnVSwmWdvGZDYjeMNFiBgFL+mdCT1jLoDFUgG+q90kUmCamuT/LDEyGhyJrRdFWaAHymTV7w1Iej4awaVlDHrpJMMBAzXQwkmEY9VJEtR7ocAIuSBSk/qHu6Ka/SrCMO/L/K0kNPis3p8rODmhlwwlpk8jAVRJSeiWUBrOt6aPWwB7i2j+nPw2X1PU7khP6NSvpE0Yhd1Xxu9jvdo3+RbuIwezOdsP7GKTmhPnmYRhTt3+Lwy2Zj4U92B/sRHn0t3+0FafXIMMiHw8NYTZLRRjiAqQj98DkT4XEApBCptiATEJkdXvE+81wYaAxj8+NIoMps+vf0/+H1ecCebikQ7h+7tbQdwUOnAE5ADc5XmNFmLvRCGIq+3saeesf7ey8P0UaXpDhxXUmJTmmYivELAjvdYNv8ah9t55bTkXhblSK5jw0y7ToQoVZjB9PyCFrvJIidpi/oQ9fACKO2mUiDwO/ZKO9bAWKvvjsslYio= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(23010399003)(1800799024)(376014)(366016)(56012099006)(10067099003)(18002099003)(22082099003)(6133799003)(5023799004)(3023799007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?6q65ZeXISS4Z3PRPtd3favpF+AtE4/ZDqcwA3ZAOwpk0Rh3BqaFCAQ8apN9I?= =?us-ascii?Q?tN514PbBp9IkGaIafoNo2nvy2yB8pFB/g0r/fFf7tGDF3A9L3E6pQ2PwXoDu?= =?us-ascii?Q?yvs/QMVpqSUdQHeWsjsdUBiJvnjoNtuifgfw636U26tfjC5XTCQCvc7F5yuv?= =?us-ascii?Q?qCH7IRCdYheTE8aOvWKeTk1mwGEcRVUtHhfPZHKyU8cP8V/rukXZvK5K9xMb?= =?us-ascii?Q?UR8+QNPnFMb5v/QRsOFNMGN9cYTW+BQAGUDkM7dvNwEdvhV3WSFsgwHuYnxv?= =?us-ascii?Q?2jYVc6DRH5dgR1SILgNiylLSbLf2P31DqvYkg0aIyj+V1U+ekyiQHMiJ/tti?= =?us-ascii?Q?PfYuRBIla+V4elG9eqqHK0QXhm26HSdabHcocjeNoGMP5o7HaOK+WeAVz4Mt?= =?us-ascii?Q?7fePyJtWCG0zvFKny4qDU/k/66pfXFltc3SKKy+YEMFseiDtbTazgztlvLxx?= =?us-ascii?Q?yNZYO6LIw6q2l568TF/LvquJeR9msHaSfycBtWZivC0n7QRYSPsc7GhxK4Pu?= =?us-ascii?Q?x/2NCg5mFQWbEanv7AnNFA1jTja+EAbFOCLIJR1DG4p/LzGAagY2lFM/YS/l?= =?us-ascii?Q?Il9P2F3q4lrZZxNrsjcRy2TT8zzjra2gSOxfTZHUtyr5b45TCM3WI84DaKCw?= =?us-ascii?Q?D2bG/OVhxkeDbQ+t8oU7+vdGJBGa7sxP1OqGo8xFLuO8Op6CJM9moq4gJeh/?= =?us-ascii?Q?eP082hfD5/tQlUHY9QnzG9VSbW9oi62nmE9Udunxwn0dHVfCxrf5wDwNLrMj?= =?us-ascii?Q?zuZAwHf7iX8fRxD4wKzS1G23WUyOkIHOpkLUSDD4tAYnmCCZjR821Jspbk1f?= =?us-ascii?Q?S6wjwxNbXr/3jXRYok09kiImL801rijefpZVHX0XKUWpMQPvv6SZWBMOEnqZ?= =?us-ascii?Q?zTAPg/umwPAn2mHluikF7RmPVRPoH35U7Ig6VpOEp/5K2GgCAk2aKlR8uPGw?= =?us-ascii?Q?dOT6aPGdjvGGVogaGS35ut+7vteaejEBjtq2kcTrEHitm/c4iAWoMRfgCA53?= =?us-ascii?Q?Z+r12wJnOd2QCm6pFFimhVYDkIAYWDT7wJVeh2LyMivispWM3wkWL2rbW1Vg?= =?us-ascii?Q?Cpc1X5quA920ftzun/VlmOuBRgma1Wp35W7PVocBx0/Tnkv/tuhQBlBFIUVf?= =?us-ascii?Q?M3dPtcKh/G7WPTmUXieeWrR8Px+fpvhmNQoEcgygNs0j2NvelCBlXuIenuqO?= =?us-ascii?Q?UkYZQobiVrTWaCy7qXIJOiBzJjcvBvwTAbINye9UZbw0oUzPrfFw6/q1NToq?= =?us-ascii?Q?re43QU6fw5xOoukubwX2yyibTJ2vS5YkTJmQpLzE/qolXt42O8oIHyqibHyL?= =?us-ascii?Q?n8R+Ld5SC6TLW87QPPHKEXTxzqHGpk8QC2sI5h+DA1gbdROwFvCD0UjkFIY1?= =?us-ascii?Q?3O8wPYSJLBzCMvue/TX5apQXlb6On+ZyNCk0GIrXp/PQeF7cnFza82HEmNiT?= =?us-ascii?Q?tLTkdZ5Dm5oO55cH5gRloRmZkoVkiX+61RIBRPGR9XFtQYelziUTfQujMoJ0?= =?us-ascii?Q?1Q5WcutauXnBFTAE1mKvQtWzhGC3jv+I83IN73AP7jsAk1L0nNgx3u42/ZEM?= =?us-ascii?Q?RMM67Td5Gpa3OCOi50CankBA/uL/+53pqXxai6XWTYptcKszIgQOvcVOrHMt?= =?us-ascii?Q?9re6JxDji2QwsPFKhInFhUQnql+EvL/pzeK28BSxg1f6fKBWmMONLjJnI7sh?= =?us-ascii?Q?+np3mwu/6cNR3m+sDQaQvv722B2glFrZKvkMHpi9La+KA6W83Yoznhkb7Xu0?= =?us-ascii?Q?dIvP9X82U7TpcKzf91L4ZsMXQj2IMaE=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 73701471-54c8-4648-ce1f-08dee8cdcaeb X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:30.5365 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: PmNBNia9TPdRXy6VOC6jRgbocm0qs6EU/m1nAs0FUjXVadFzgvDZie8a84CKmbrPorb1WaupXtm9orUBCPVNhM+YU4eShzxyOtS6dn5xMrs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR02MB6215 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c406::3; envelope-from=bin.meng@processmission.com; helo=OS8PR02CU002.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820351751158500 Content-Type: text/plain; charset="utf-8" SDHC and SDXC memory commands always transfer 512-byte blocks regardless of the length selected by CMD16. QEMU stores that selected length for LOCK_UNLOCK but also used it directly for several memory command paths. Route single- and multi-block memory sizing through the existing helper that distinguishes high-capacity cards from SDSC. This lets PolarFire SoC HSS validate the complete GPT header and locate its boot partition instead of receiving only the eight-byte signature. Fixes: 2d7adea4fe57 ("hw/sd: Support SDHC size cards") Cc: qemu-stable@nongnu.org Signed-off-by: Bin Meng --- hw/sd/sd.c | 43 +++++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index a30c541df0..7832117a58 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1975,18 +1975,20 @@ static sd_rsp_type_t sd_cmd_SET_BLOCKLEN(SDState *s= d, SDRequest req) static sd_rsp_type_t sd_cmd_READ_SINGLE_BLOCK(SDState *sd, SDRequest req) { uint64_t addr; + uint32_t blk_len; =20 if (sd->state !=3D sd_transfer_state) { return sd_invalid_state_for_cmd(sd, req); } =20 + blk_len =3D sd_blk_len(sd); addr =3D sd_req_get_address(sd, req); - if (!address_in_range(sd, "READ_SINGLE_BLOCK", addr, sd->blk_len)) { + if (!address_in_range(sd, "READ_SINGLE_BLOCK", addr, blk_len)) { return sd_r1; } =20 - sd_blk_read(sd, addr, sd->blk_len); - return sd_cmd_to_sendingdata(sd, req, addr, NULL, sd->blk_len); + sd_blk_read(sd, addr, blk_len); + return sd_cmd_to_sendingdata(sd, req, addr, NULL, blk_len); } =20 /* CMD19 */ @@ -2025,13 +2027,15 @@ static sd_rsp_type_t sd_cmd_SET_BLOCK_COUNT(SDState= *sd, SDRequest req) static sd_rsp_type_t sd_cmd_WRITE_SINGLE_BLOCK(SDState *sd, SDRequest req) { uint64_t addr; + uint32_t blk_len; =20 if (sd->state !=3D sd_transfer_state) { return sd_invalid_state_for_cmd(sd, req); } =20 + blk_len =3D sd_blk_len(sd); addr =3D sd_req_get_address(sd, req); - if (!address_in_range(sd, "WRITE_SINGLE_BLOCK", addr, sd->blk_len)) { + if (!address_in_range(sd, "WRITE_SINGLE_BLOCK", addr, blk_len)) { return sd_r1; } =20 @@ -2045,7 +2049,7 @@ static sd_rsp_type_t sd_cmd_WRITE_SINGLE_BLOCK(SDStat= e *sd, SDRequest req) } =20 sd->blk_written =3D 0; - return sd_cmd_to_receivingdata(sd, req, addr, sd->blk_len); + return sd_cmd_to_receivingdata(sd, req, addr, blk_len); } =20 /* CMD26 */ @@ -2372,7 +2376,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) switch (sd->state) { case sd_transfer_state: =20 - if (!address_in_range(sd, "READ_BLOCK", addr, sd->blk_len)) { + if (!address_in_range(sd, "READ_BLOCK", addr, sd_blk_len(sd)))= { return sd_r1; } =20 @@ -2392,7 +2396,8 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) switch (sd->state) { case sd_transfer_state: =20 - if (!address_in_range(sd, "WRITE_BLOCK", addr, sd->blk_len)) { + if (!address_in_range(sd, "WRITE_BLOCK", addr, + sd_blk_len(sd))) { return sd_r1; } =20 @@ -2662,6 +2667,7 @@ static void sdcard_write_data_dump(const char *proto,= const char *cmd_desc, static size_t sd_write_data(SDState *sd, const void *buf, size_t length) { unsigned int partition_access; + uint32_t blk_len; int i; const uint8_t *value =3D buf; =20 @@ -2678,6 +2684,7 @@ static size_t sd_write_data(SDState *sd, const void *= buf, size_t length) if (sd->card_status & (ADDRESS_ERROR | WP_VIOLATION)) return length; =20 + blk_len =3D sd_blk_len(sd); sdcard_write_data_dump(sd->proto->name, sd->last_cmd_name, sd->current_cmd, sd->data_offset, buf, length); @@ -2704,7 +2711,7 @@ static size_t sd_write_data(SDState *sd, const void *= buf, size_t length) if (sd->data_offset =3D=3D 0) { /* Start of the block - let's check the address is valid */ if (!address_in_range(sd, "WRITE_MULTIPLE_BLOCK", - sd->data_start, sd->blk_len)) { + sd->data_start, blk_len)) { break; } if (sd->size <=3D SDSC_MAX_CAPACITY) { @@ -2715,7 +2722,7 @@ static size_t sd_write_data(SDState *sd, const void *= buf, size_t length) } } sd->data[sd->data_offset++] =3D value[0]; - if (sd->data_offset >=3D sd->blk_len) { + if (sd->data_offset >=3D blk_len) { /* TODO: Check CRC before committing */ sd->state =3D sd_programming_state; partition_access =3D sd->ext_csd[EXT_CSD_PART_CONFIG] @@ -2726,7 +2733,7 @@ static size_t sd_write_data(SDState *sd, const void *= buf, size_t length) sd_blk_write(sd, sd->data_start, sd->data_offset); } sd->blk_written++; - sd->data_start +=3D sd->blk_len; + sd->data_start +=3D blk_len; sd->data_offset =3D 0; sd->csd[14] |=3D 0x40; =20 @@ -2810,7 +2817,7 @@ static size_t sd_read_data(SDState *sd, void *buf, si= ze_t length) /* TODO: Append CRCs */ const uint8_t dummy_byte =3D 0x00; unsigned int partition_access; - uint32_t io_len; + uint32_t blk_len; uint8_t *value =3D buf; =20 if (!sd->blk || !blk_is_inserted(sd->blk)) { @@ -2830,11 +2837,11 @@ static size_t sd_read_data(SDState *sd, void *buf, = size_t length) return length; } =20 - io_len =3D sd_blk_len(sd); + blk_len =3D sd_blk_len(sd); =20 trace_sdcard_read_data(sd->proto->name, sd->last_cmd_name, sd->current_cmd, - sd->data_offset, sd->data_size, io_len); + sd->data_offset, sd->data_size, blk_len); switch (sd->current_cmd) { case 6: /* CMD6: SWITCH_FUNCTION */ case 8: /* CMD8: SEND_EXT_CSD */ @@ -2859,22 +2866,22 @@ static size_t sd_read_data(SDState *sd, void *buf, = size_t length) =20 if (sd->data_offset =3D=3D 0) { if (!address_in_range(sd, "READ_MULTIPLE_BLOCK", - sd->data_start, io_len)) { + sd->data_start, blk_len)) { *value =3D dummy_byte; return length; } partition_access =3D sd->ext_csd[EXT_CSD_PART_CONFIG] & EXT_CSD_PART_CONFIG_ACC_MASK; if (partition_access =3D=3D EXT_CSD_PART_CONFIG_ACC_RPMB) { - emmc_rpmb_blk_read(sd, sd->data_start, io_len); + emmc_rpmb_blk_read(sd, sd->data_start, blk_len); } else { - sd_blk_read(sd, sd->data_start, io_len); + sd_blk_read(sd, sd->data_start, blk_len); } } *value =3D sd->data[sd->data_offset++]; =20 - if (sd->data_offset >=3D io_len) { - sd->data_start +=3D io_len; + if (sd->data_offset >=3D blk_len) { + sd->data_start +=3D blk_len; sd->data_offset =3D 0; =20 if (sd->multi_blk_cnt !=3D 0) { --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820063; cv=pass; d=zohomail.com; s=zohoarc; b=CE72wGqMnRUZTKHInDYHXpDrT8S5fEqjVeeXfdgdjMqYvM+fV1KgPGisHyUi2+0FJB9QZE3mFtzmGzeiNvjWRg2aLkZ9QhRP6GvQ3Cihxgwhx1b0vGT1/ZXpfd4U3xONAtGfO5Z7EJHNvA76Z6ecd3WuyMnI9U5uAfDY9vWRLi8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820063; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=3ojEfVgCrrlKpGIGftQBoVEj0rfBzqM2Rri0p8sf7to=; b=PUG1ekTBDDzL98CVwqyURDuz5C7ut9dOIpb7iSHtKapbd4abu9JHEz9WExNN61JYtaqIxBIRed4Zv2lMSZkZVDpXOb5pb35v/NnPRzkX3NEc6rxBVWhihzX5Le3+UmfQBEh8osxx6+Y3znYYA6G/bPakEPjcraQ5Ljsfl4IvdJE= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784820063339242.15091374745532; Thu, 23 Jul 2026 08:21:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvDj-0004v6-Dg; Thu, 23 Jul 2026 11:20:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDX-0004Ya-2Y; Thu, 23 Jul 2026 11:20:14 -0400 Received: from mail-japanwestazlp170120003.outbound.protection.outlook.com ([2a01:111:f403:c406::3] helo=OS8PR02CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDT-00081v-GP; Thu, 23 Jul 2026 11:20:09 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by KL1PR02MB6215.apcprd02.prod.outlook.com (2603:1096:820:9f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.11; Thu, 23 Jul 2026 15:19:31 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cP5Pe8FOLGv5nsXV9AEhxcHyBft2bAWcIGLpCU9gEwv8xcFAMOWYYoie0L4k4JONX5iYqJi3qTt/qkO+LJWQiimphHy+uEhYLGjyMh4h/OvZr6mr53e6bIHzBqHz8/6iTh1vUNWDaTQyErYiitcKvR7DPZf+bxImhmjgHU8Jymbpxr5a80KowqwjG/gN8g9osc8oYuT0SUgnzJrNzh7CuH8Ft7FTbmc1JrM/YjWWZyeRGcXTaRfMlwwlMT15H4D6jzOuKm++7PfEKNpJ5cNtSZQ/+TWqOunrAr09e8WcBUGGWDJoBPtyTL3tRbxBttMtQ22Zm9t2EeTYswP4svkenA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=3ojEfVgCrrlKpGIGftQBoVEj0rfBzqM2Rri0p8sf7to=; b=FRSzpXLTGIwpUDLUaVp3j71uJfOjUPktjr+RpC+sypCcQd/OMfjfJJbr3rK5zOLhcRyMN481H4z6Xb3btLg2oxNSMIG9Yaw/BwBF5ImvEJejiVfk13kGUWJLad49wOhWcsV/peRLJjg18gsdyjxH8mLUup4s5ppQSAoQiCXdwxEeNrbyDSqxFRbx4ZdItVajrGSuKKV9MKzZpBzF0/+qv1UX84vz0ywzyUD21ldC4DB1DCSFTX9RF2WGT5xf68MgSnWED2vxj0bocU3gXCNpyPR93lSMf3MoeVsff7qYW8frn31zJ4ytI2NKnrQ2kdXnRAn9tKhcsXAAqt3XKn0SCA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3ojEfVgCrrlKpGIGftQBoVEj0rfBzqM2Rri0p8sf7to=; b=FbXcW8g0rA9HuYBCAksobSHe2ZC4EXJ9R/62pJBsx/FBsTz26RXJ6J7aTUX2cW4K7xtsqyKPn3JFsLRP7vu3zgeWk9grs7hCR5PFGI/jJm1TEcrHYaET1veu4Pj5kl1B6AEE+r47gqUN2/j5RXSEdF57c2QQOgnaRgYW1Tz2LQ3np4dnce9hDXRDhPSl8KNoWjXA4SiIMb2LK+4HRtV1VVi7v9jEa2q7w2tFUoFtr2ybUatB8B0Tpnj5IX5sCivBoSFDI4xl4Hd6rwKasIj1KMy2iXuzJj0frLTH8/ff7K87idWEhQUjv+ZBDQDfpzlnD1rQepNXgHIRwjWXLhoUbw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Alistair Francis , "Edgar E. Iglesias" , Peter Maydell , qemu-arm@nongnu.org Subject: [PATCH 14/26] hw/sd: cadence: Advertise 64-bit system bus support Date: Thu, 23 Jul 2026 23:18:41 +0800 Message-Id: <20260723151853.2143177-15-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|KL1PR02MB6215:EE_ X-MS-Office365-Filtering-Correlation-Id: 99e751d8-0fc0-401f-b665-08dee8cdcba3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|23010399003|1800799024|376014|366016|56012099006|10067099003|18002099003|22082099003|6133799003; X-Microsoft-Antispam-Message-Info: ZkvLx44hDCHTH1ygRdCoNnSTpNOoEJKBATgSpurzx/UUw/kUDFofPnnWfGKxG2zXOROKpm4kjnpSUUEyJnPUpdelg/k/HSuJnDA2Ipj3v/oUxSa59OuPgZXJDYvcdUOkBYoXIz6uqdXtnF2OxmXXQeAiuzxUBIVV4VKMFhFN3jCBrv7x4xQD7u3hE2qogTr6Hc1cxdFcDn/VmhLyFLWMg2tZ705sbwMypHe4D69g2QyBXxykWK4Y0VbX3RWCrdzXT5jDfftlteY/beqZfE2ZO6lQtKFtwGOvr/OFTXdiEGCM/KuV+4CJAD0kaC5UI7MnGxazuOG9Mfzj+Kbux38jw6kP6W1bVYlpg6aBSJQrSQyZvxPnHiPDenrAIW9cn3/NZ+DEly7YwfpLnok+8Eg0NdMU0jQmmt1+qL99l86v//KgJ+SV59oyjRb3ZemJOoN7WrfSGhuBNvnq2S+yyEaOwOynxgLHz7BdT/snWvdzozBr+39UIDRMVixnsAWm05V62+0/vTtqOkHFcL25wmLBwAjtktL9qdgLy9Tr+JiCMhNZXf7YeoRJJ+C2jpjV+bRG0RGJWy1NKfisjUXduBT3GwEGaRbHGI219BVk8fkeEvW81XTXFnNspLXm7PkPMVEPmonv2/0PPR/IFlfTGpRyOqIyAv7M1PDMQY7mdt74+j4= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(23010399003)(1800799024)(376014)(366016)(56012099006)(10067099003)(18002099003)(22082099003)(6133799003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?1WOhVy+CbIJM1JOcAB2Z7+zF+xEwt41US1Dem8m888PQdjtrr5s4xSC8GSCB?= =?us-ascii?Q?A1lbMQ76vCoJulz7zbGBlJ58vMZFpuJ9vPYGygU+vgpuEi3AJyfdaW33yC3+?= =?us-ascii?Q?u3QLt4zMOcX5+uNSz+gsQLrlWOHTsNmipZPD2rml9tdeuJxOdx6bEl7LCB3S?= =?us-ascii?Q?PGW+Tq3vRNa6aUUit+1aKoC9ePZIAFoeBiebTB2t+MRHIDo2v9TnfYPWyytv?= =?us-ascii?Q?cyyaubcoPu2FCBaKP12aNLBwZs2oeaz2BxJxzmhMqBqu5KB+pQ8JflbZ49rW?= =?us-ascii?Q?pIWCzVItwXxPAzaNrGhwHJqt+jtM/sicDQhrzMglH1jOfQxLy0wJa8NhjY7N?= =?us-ascii?Q?SvyksA1zwFPjYehsO8ly2hrr/+L1xyTAesGtPxZ88muRM+AmTcFR18sGlu6g?= =?us-ascii?Q?k2vISiNKC73m5pMEUJIzWxwIZV+xb/GRYmYSKuvs61224/Lx2FTmeCII8Hcw?= =?us-ascii?Q?aeG+ZtFZuB8fo8B9lJWH5g0Z/A9wGfyqVe5ynittYBFdgFJYsKDtUwytXZTM?= =?us-ascii?Q?rwID7l9wHel6uYro30iBeJDIWOsfIFGVQc+ZTVwGfAzCnwbFeY12SyqLYk7i?= =?us-ascii?Q?ONs1DkU1wDRfCOSvm2H9wfNuP4x2As6WdjlB++oVirVpJm2RGmIb0ZoqKU0a?= =?us-ascii?Q?Sdz/E7Txq17/sTheLe6c3hJ5vDItm0FASazIOke2atrKY7JgVvX8Z98t72wU?= =?us-ascii?Q?zNFa4u1hebJcNSgJ4tSXUb88tEZ22tGTdKcR1wq8Z9AI940KmT3cKYEcHOMo?= =?us-ascii?Q?s8J9jXC43Swdw8FGpk+411edVuFSOBkoegIUMjIGxbT7DbuhYVhGo67mxWGc?= =?us-ascii?Q?ZcubqfFAQUNhD8Pr4oPykSyaNv7teR8cNq4EpRqSUGomEsaUrT1RkqjTfUFZ?= =?us-ascii?Q?9wOF17zVYnQ2jECfGuPHF4TMOlKlZjjVBO6H4w+niqhiGkLrC4HYaOaRawvf?= =?us-ascii?Q?FRFG+0tX6jI3hdpo4Y+qbDIEl4qDJzgxVIvM89sogjnspx68ucNYutAkFirJ?= =?us-ascii?Q?yDnfAYenPUQU3aqSCoZUV9WQ/dlpH+rF2HozL9ZttNsyzLY+1ex/kbB/abva?= =?us-ascii?Q?vp8bMOmbnAKu2giaPFWd6LzMIRXM2CJFw8N30ls/DnxPPmKP1hlUig8NlFhU?= =?us-ascii?Q?H88qKTs0fIcPcOyYCO0QIig0pvgQt4Zf3GE51aF00BqcBvzPbjCZr0FTZnA3?= =?us-ascii?Q?Wtmsff7ORwWt05ohcCuesAMsCmjH/NbBuPvGbCtkhwYR6d1xYdvWaV/WStF1?= =?us-ascii?Q?oImxDwugn8N3hUYhwNbGNXkj4ArcUCI63h1OBNHzjVzLo/AuALhC7ujslIrx?= =?us-ascii?Q?gN/UsiQ4aaYEauT35oOheBnI3bHlxQ1K53ggQ/N4+hu/sdkU3EUwC1FX3L/z?= =?us-ascii?Q?SaNYegmVsBE57lhzjDdnN4YYqaQdgRkyaRzg3csZ6VRJGsTtRkVE27GGqRzO?= =?us-ascii?Q?yCiexjmSBMMDZI/MS8VUMkxVO1m4EEVy8zw/1rxTmFg6pSKCA+xazqq9TRUN?= =?us-ascii?Q?yXCPT0pIHxez7nJgPdi64DFhhDfFtcaYVuafhqPD5/1Ls3xd1nDjjkcTEY93?= =?us-ascii?Q?63FmyrV59ZWIH1iV9S2jr91Lla7txA32KuVko3HGLJpNn3CsV6kz7lNZPZln?= =?us-ascii?Q?Wfr9VEudOi43uVIIkcEhsLnmSPVgYg9l9FLMIqCiBhdtwL5FiyVHSjxNEowY?= =?us-ascii?Q?q0b9kAPOQoNc3WfE8nJ2EbVXJfAK0/nYponGtaRXxCmpYiqbIxvfVvaYUalm?= =?us-ascii?Q?1EZjkNZkRRhH9parfrgef6sF+GqF8bE=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 99e751d8-0fc0-401f-b665-08dee8cdcba3 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:31.7493 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 3dNvoXZUJTLvwuxHNM1+885+phVK/J+weK+omRsSCJ05yco8wcIajjmtUnSp4KKlI0yi48zRwEkDthSxTt9eSDXqWQG16JahBL0CR0aWthU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR02MB6215 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c406::3; envelope-from=bin.meng@processmission.com; helo=OS8PR02CU002.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820065571158500 Content-Type: text/plain; charset="utf-8" PolarFire SoC software selects 64-bit ADMA descriptors for the Cadence SDHCI controller. Advertise 64-bit system bus support so the existing generic descriptor engine can execute those transfers. Signed-off-by: Bin Meng --- hw/sd/cadence_sdhci.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hw/sd/cadence_sdhci.c b/hw/sd/cadence_sdhci.c index 8476baf67f..39c6e5d101 100644 --- a/hw/sd/cadence_sdhci.c +++ b/hw/sd/cadence_sdhci.c @@ -54,6 +54,9 @@ static void cadence_sdhci_instance_init(Object *obj) =20 object_initialize_child(OBJECT(s), "generic-sdhci", &s->sdhci, TYPE_SYSBUS_SDHCI); + object_property_set_uint(OBJECT(&s->sdhci), "capareg", + SDHC_CAPAB_REG_DEFAULT | + R_SDHC_CAPAB_BUS64BIT_MASK, &error_abort); } =20 static void cadence_sdhci_reset(DeviceState *dev) --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820049; cv=pass; d=zohomail.com; s=zohoarc; b=iBS4+f6zf/QGwL0OjM32bMsyfjNY0PCmqSz2eo1F2ef21dM6Rtij/ZkiSLHQIW+aZUs3SL0yWQJ92kWH0+8u5Tz36A7Iatn5FAB5KNKYmHey83IrmX82w1dig4IBXEZCzV3ewvbIqftAfPmRJEAexInKe/+XiJjbxzv190Qz63I= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820049; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ubmzn700Y1571Kajvg9ykUb1B05ivONiGbWqi0GDxIQ=; b=SxCZrcV8iI4dQP3jIesKSZwRfbMWIbl/J8l4c+5+6iRykd5UqKOgkR6KXz1ZuifFKRohMra1BRw0NuWHwrCNBRq0fdNu1Yc263hOhDXATbsded49VT0fKVpLG7pyZzkVyBBXLmK+MhmEB6P4PiiylgOY0bl8zqYSEocLo4K5c1Y= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784820049394499.8739340290995; Thu, 23 Jul 2026 08:20:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvDj-0004wt-PB; Thu, 23 Jul 2026 11:20:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDG-0004Ez-7e; Thu, 23 Jul 2026 11:19:54 -0400 Received: from mail-koreacentralazlp170130006.outbound.protection.outlook.com ([2a01:111:f403:c40f::6] helo=SEYPR02CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvD9-00085x-NQ; Thu, 23 Jul 2026 11:19:52 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by SEYPR02MB7097.apcprd02.prod.outlook.com (2603:1096:101:1a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.10; Thu, 23 Jul 2026 15:19:33 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:33 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nd8/CdSoMFTR7Rx/UN9aLvTP/J7I7wvzzWacAogiR/SuTSoOzvGJXeDg8ZgBhM46HadBqbR8VjcgasEK/i/l2F2z+PE9bVcQepJ/U5gj5smtMo6hlPV+R2fzJUiHsh5fx2U2SEXJWLyIF2f7HJZg9KdvCbFFH3FyK6JM0SEF2wrJeYjcwLigQqt7LDKbUhcbn92EwZL30EMgpUpCmh2aclDHNek7FR9YCVT2UEEVaGZEVNPzRtgZ+NqNwhpMEDCFI6T8bglsgbM9ztPwnD89GkVZXQZi55cHK2wK8ixDDLdhecPYopChFUrZngTm2MngnJBGNlH/JxIrFUV1DpzYvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ubmzn700Y1571Kajvg9ykUb1B05ivONiGbWqi0GDxIQ=; b=F0cKyeO0fk4UhWhk1dYubHdnXQfz6S9rnV53J5qDjOo0q+8WNn/4awExzcFgGG/ydVcyyyxUvfbwwUg8L/J/BgESXxk9cTQhpyE8kKd9eCNRWQMsJL6jf//6fQucle0vkiRCVYJL5MnQW3RUJeop0cibiLNuPDEJEq1yhMUCeCxjn+zru9hKXkyrBqAKWPQFWjb84z149FsDFIYTfrestXp4RlkXQtHr7T3JAMGKpdwxeZLoV9XO8KsMVmgQibNzjlRy9Ydn/1DBScKVZ/mYs4qWu5J0jM4zUrIXADkDTANf0Pvl6HCQpQGIaDpuIcWPQYjDHbJlo4c+7yuMnyOj4w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ubmzn700Y1571Kajvg9ykUb1B05ivONiGbWqi0GDxIQ=; b=GepqGX/CNLWmzSFqygi+isLD4JkTracRAnfzdrKJ7nJ0V8SOm0UuhSymiXDjvkK4YMjUnRajE0i+VqFNFLeI+l1eKTZx2Sl0w1glNrY2F/6OSa7p27qejUSnknmdjjTN1nQkqydmBfpyJu8b48AveiZZFqAAhgooY07/olnuhMY0ecaA1cPhbj/MUYO3vf/IbuxLEfJ0eOyLS8X3NzOPH59K02q3JDi/8L88ms7rTWmP53Cl6i6f6BrIoUHOa5HcFh4nVQ8NgMkYtNAxGqDtkV2AsNA5q43DNvwWx3nODAg2Et2c5dVHS9gqj1ByC4QkRu/u1gYGhC7ILuTzy/rGXg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Conor Dooley , Sebastian Huber , qemu-riscv@nongnu.org Subject: [PATCH 15/26] hw/misc: pfsoc: Model PolarFire SoC serial number service Date: Thu, 23 Jul 2026 23:18:42 +0800 Message-Id: <20260723151853.2143177-16-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|SEYPR02MB7097:EE_ X-MS-Office365-Filtering-Correlation-Id: f38e5c02-edcf-4f54-3789-08dee8cdcc4a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|376014|366016|23010399003|1800799024|6133799003|22082099003|18002099003|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: h67B/WMFLtmPh9K+HeYBPmRZDR12jlDkmPZlAlAjgnXlUFBGidUdeYFVFxv8wk9GbWCO40PiTjiAe3Q2Ib+1d6llxunixKMmtUm4PxGZok9oR+t1jRkvt9g29TgrOZ4uIE1hHxsg5PQtkqEyRlJH95wGUTnn7KhrYGfyH+Ln9t1wAQh8rEaZD0xrA2zW0xygBeTdyLM6f7Kp4KJdw+OKE2lGR+EF14spsJuSR63MYl/Kt23qLpxVQooJkg+chravqk3MXsq3etIbS8vdk13eGokn+HRVUXH+LloZhgDfdH6/fqGUGUJUwd7ZbuccHa+lK2Rga0TU78DIOJGbNkN6jx0IQAFkVKg3VSgWVZN505u1tl+h9EnSc/ATbdPrV2FcSKBOZqgtoLG2Tam+uJMfWnKNA5KanAv1WnnsOp3nBWSbqG6fh2oE9y4r8qEfgWDW+gRjVQooMgmOqo4LI3NmRHjYFEmuV6L5/b4vQYK/Hbhsr51TjxgZlNci58c+4XAoavtrTFZDBpO/YTajk7hP0jLhJlf+muXl2bxI8y10+XzaBd0suXQxFzYxJWswYJ92J+Ms7J85fdKrZ3Itw26f9VWA4fbvg1+mHhzOiUgSt9FhD8cQ+ZWvMmKq04w2cYkCHvy+Yqg/ACFyspDlSZ83WQOMWcIoMEjGa/HFvpZkKeM= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(376014)(366016)(23010399003)(1800799024)(6133799003)(22082099003)(18002099003)(10067099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aldNaEgrN0dOcmVvUU9PbXFwN2pDZlFjZC9WLzBlZEhpRUxnbFNMWVRncHNu?= =?utf-8?B?TXhhYkdrbzg4bFJ0QWdKRmdRTGpiVDk2dDdFajh0WWlVdkJMQUtnUFdVby9y?= =?utf-8?B?ZkVQc25jVEdHQ2pqSURmcW1OQ3NhNG1aK1VhZnU1SHNMZWVJZjh1U0J6eTJp?= =?utf-8?B?cnFRS2lMNGRaNTkxdVdMZ3Q4Z240T3MrU1BPOHF1dzBtODNWeGdZM1FwTmM5?= =?utf-8?B?WFdIelRlV015SUc1aFhTSzJMM3NLZXUzZWJ6dzVmVklUMVJMb2tnQUQ1ZUpa?= =?utf-8?B?SjlmTEMwQ3o4aEh5U01lQ211OHJ3cFJHaUY1aEl4ZW5vR0NpWTZIYUJWc2NV?= =?utf-8?B?NUFTRDRiYytkMFZJRnJVS0VzejY4QUIwU3AvZXU2Tit0QktsYWRuK2VEVFFq?= =?utf-8?B?ekhTN0tYcjU4SmkzV1didlROUVVFaGp5NzByUklOYnRrdmZ1b0dZSUZPZ3JP?= =?utf-8?B?aFJLUElmZzZkMWRMTUpyeU1SbW9Zend3QkQzZEM3ZGx2VGV3d3dTMzFRYmFN?= =?utf-8?B?Yjd5SUZLVTBWelphTFl2VVZrNjhCNjdtTzZZa2xvd0lyWGN5QmdPdEtPZVRP?= =?utf-8?B?bmxPOUlNOURVVlJLdmhzbzM3RkFVRnRGaW9FYVJXZ01ZRU01MEZpOUlLTjlU?= =?utf-8?B?elNMNVhPaER4dytTS1hZbi9qeW9XNjg1M2UycUhmRkpTUGlvejloVHgwUkpK?= =?utf-8?B?TjZRTmc3dldBTURPR1pka0RMNHhhNmIrZW9TVFlLemE1MzFURXRpUnM1YThF?= =?utf-8?B?eWRUNkxTNWhuVm1mOGo3NkxQVDJGazVwTmMvUlN1L25nK3k4dWxNL2loWEpw?= =?utf-8?B?NThhSWJvMmMyeGxOcmRLekx2dEsvU1VLNHM5V0wyUWtkR0Z5emZ4TEphcy9x?= =?utf-8?B?M3phT1h0bTVicnhGVllTWnprRmtoVG9UU0g1bWlwOFRhSUo3TmRyc2gxK3I1?= =?utf-8?B?N001QzNaUlN0cFA4YkpiTE1lM2xwVW0vdTJ6Rzd2NFdBSDhDNHA5cHBxcDFt?= =?utf-8?B?OEhaTGdTYWtHM2RQRnVDTGs1Nnp4NFpDOHZPbzgxWERXR0tYNkJSSDFlTEla?= =?utf-8?B?M2x6SWZvY2ZnUjd4YkRvZXF3N0t3K0N0R04vTGJXOTNwQVduaVJEV0ZML0Q4?= =?utf-8?B?UUNma1d0OHQwV0RXdGIya3BsMkxvcit3aWVNSjVoMzA2UmZZNmRQY0pqb0lC?= =?utf-8?B?Zk5CbnlkVUM1MG1uWDJDbDEzLzV2WUZkRW90Yk85MXpDTXBRRVZVQXh2WHI3?= =?utf-8?B?RzVTenZUUVREQmt0M2lZb3h2REVnZ2F4OTBVcmZDZWhaWkJtT0JCUGpGV2hJ?= =?utf-8?B?NG5UeXN1d1lOMzVrTUJhSnQyclgremhGdlJJRkVSSFJCUG14R2pIWnhGYXdi?= =?utf-8?B?U0NuT2YyTVN4c2F3RG9BK2tIRHZ5bFhUN0E5M0tXalM5T2Z4aGxQV0JrRnJ2?= =?utf-8?B?Lyt1K1dhdWZ3b3JlNnpQNmNMMUxpWFJmRmd1Z2lGY3liV1Z5RmNvN2Y1OGRv?= =?utf-8?B?R3QwQjNaditXWWN5Ykl4K0tMbzRwUllWU0lRak95dVE3UjRUZjh3Z3F3ZG1o?= =?utf-8?B?WE90cXdTZHpMRmFEL01wS29wZVpsVlcwUkxOTzQ2SWFBRHljTEVmVGZObGxu?= =?utf-8?B?dnZ6WE9LWmFUdnBreUVUS1RyUHVIcXp6bTlCVURCZ3ZSME13Z0hZT3plYldB?= =?utf-8?B?VHU2YlZSdjZBWFkvU1NRQmpHcjVhVWlZSE1hUXpQanB4YU9KczVLRXBwUTg5?= =?utf-8?B?T0VKUDJvOHRtRUVMREhrTnRlcitiQ2FZY3ppSzJHT3FqSmdvTXJSWXE3TlRx?= =?utf-8?B?NFNBU0ZVd0xocklvUnY3TmlxOEQ1bmlJeG03RU5OcXZrcndGaEJzOTlNa1BV?= =?utf-8?B?SEJBQkJ1bGtXeVkwVDRxbnFhLzNsOC8zdDJQczNoekdmZ3dLSmVjSFNKK2dU?= =?utf-8?B?cHp4amk3UXljaDBWWEsyL1R1RXVrWVRpTEtsY3NDN3FsSnBIVC81aFJ3R1Fo?= =?utf-8?B?OTlwK2lJQXp6Q0s3NHB2YWxJQ2NOSCtaUStqVnoxUW4xbDVhV2FadXcyUXNa?= =?utf-8?B?Q2ZVbHlOMWFXUWxWTmhzY2dNQkFkdWFweHkvYm8wZklGSEhqVk9YY2RTbDZU?= =?utf-8?B?WFRDNStxOXptYlAybWx1WXdnNGo4ZFNMN3p5OG9BNDZJVHFJUkdyUklOYUd5?= =?utf-8?B?cDRMVFkvMXZsZnN4aE9vdTJCN2hub1Z4V25oOENDZzJ1TUxuT0ZzK2xxQkFF?= =?utf-8?B?TUR5bFFLU1pTR3BCa3RabjltYlFLczkwSndzRWNnRkdRdFR5Um1ETmNkbXE2?= =?utf-8?B?VTlVM09LQVZpRE4wU0l5UDdKUEtIeGQ0QXNFQkJFS3RFdFRFUTVMcEluZnVx?= =?utf-8?Q?tCmJL7pMCEK6C8K4=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: f38e5c02-edcf-4f54-3789-08dee8cdcc4a X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:32.8793 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: EEusJXxbRGKsiu1AM4LmTvJsAzxI5INtcfFhqOmwndHV1ly+2ajJJmoMViqD9sLFKi3u8eK9fBbraUiYRldqIQZ2gH6E5rFeFRa2HsMSfTU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR02MB7097 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c40f::6; envelope-from=bin.meng@processmission.com; helo=SEYPR02CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820051551158500 U-Boot requests the PolarFire SoC device serial number during board late initialization. The IOSCB previously rejected every request, so board setup could not complete. Model the System Services control registers and byte-addressable mailbox. Obtain the 128-bit serial number from an optional device property, using a deterministic value when it is not configured. Return an explicit failure for unsupported services and reset the new runtime state with the rest of the device. Signed-off-by: Bin Meng --- include/hw/misc/mchp_pfsoc_ioscb.h | 6 ++ hw/misc/mchp_pfsoc_ioscb.c | 141 +++++++++++++++++++++++++---- 2 files changed, 130 insertions(+), 17 deletions(-) diff --git a/include/hw/misc/mchp_pfsoc_ioscb.h b/include/hw/misc/mchp_pfso= c_ioscb.h index 9687ea25b1..fd31427304 100644 --- a/include/hw/misc/mchp_pfsoc_ioscb.h +++ b/include/hw/misc/mchp_pfsoc_ioscb.h @@ -25,6 +25,8 @@ =20 #include "hw/core/sysbus.h" =20 +#define MCHP_PFSOC_IOSCB_MAILBOX_SIZE 0x1000 + typedef struct MchpPfSoCIoscbState { SysBusDevice parent; MemoryRegion container; @@ -47,6 +49,10 @@ typedef struct MchpPfSoCIoscbState { MemoryRegion cfm_sgmii; MemoryRegion bc_sgmii; MemoryRegion io_calib_sgmii; + uint32_t services_cr; + uint32_t services_sr; + uint8_t mailbox_data[MCHP_PFSOC_IOSCB_MAILBOX_SIZE]; + char *serial_number; qemu_irq irq; } MchpPfSoCIoscbState; =20 diff --git a/hw/misc/mchp_pfsoc_ioscb.c b/hw/misc/mchp_pfsoc_ioscb.c index 09b702e520..7c82b55986 100644 --- a/hw/misc/mchp_pfsoc_ioscb.c +++ b/hw/misc/mchp_pfsoc_ioscb.c @@ -25,6 +25,7 @@ #include "qemu/log.h" #include "qapi/error.h" #include "hw/core/irq.h" +#include "hw/core/qdev-properties.h" #include "hw/core/sysbus.h" #include "hw/misc/mchp_pfsoc_ioscb.h" =20 @@ -37,6 +38,9 @@ #define IOSCB_CCC_REG_SIZE 0x2000000 #define IOSCB_CTRL_REG_SIZE 0x800 #define IOSCB_QSPIXIP_REG_SIZE 0x200 +#define IOSCB_SERIAL_NUMBER_SIZE 16U +#define IOSCB_DEFAULT_SERIAL_NUMBER "0123456789abcdef" +#define IOSCB_PROP_SERIAL_NUMBER "serial-number" =20 =20 /* @@ -186,33 +190,71 @@ static const MemoryRegionOps mchp_pfsoc_io_calib_ddr_= ops =3D { .endianness =3D DEVICE_LITTLE_ENDIAN, }; =20 -#define SERVICES_CR 0x50 -#define SERVICES_SR 0x54 -#define SERVICES_STATUS_SHIFT 16 +#define SERVICES_CR 0x50 +#define SERVICES_CR_REQUEST BIT(0) +#define SERVICES_CR_COMMAND_SHIFT 16 +#define SERVICES_CR_COMMAND_WIDTH 8 +#define SERVICES_CR_COMMAND_MASK \ + MAKE_64BIT_MASK(SERVICES_CR_COMMAND_SHIFT, SERVICES_CR_COMMAND_WID= TH) +#define SERVICES_CR_MASK \ + (SERVICES_CR_REQUEST | SERVICES_CR_COMMAND_MASK) +#define SERVICES_SR 0x54 +#define SERVICES_SR_STATUS_SHIFT 16 +#define SERVICES_COMMAND_SERIAL_NUMBER 0 +#define SERVICES_STATUS_SUCCESS 0 +#define SERVICES_STATUS_FAILED 1 +#define SERVICES_MAILBOX_RESPONSE_OFFSET 0 + +static void services_cr_write(MchpPfSoCIoscbState *s, uint32_t value) +{ + uint32_t command; + uint32_t status =3D SERVICES_STATUS_FAILED; + + if (device_is_in_reset(DEVICE(s)) || + !(value & SERVICES_CR_REQUEST)) { + return; + } + + /* + * System services complete synchronously in this model, so clear the + * request bit before exposing the response to the guest. + */ + s->services_cr &=3D ~SERVICES_CR_REQUEST; + + command =3D (value & SERVICES_CR_COMMAND_MASK) >> + SERVICES_CR_COMMAND_SHIFT; + if (command =3D=3D SERVICES_COMMAND_SERIAL_NUMBER) { + /* + * The serial-number service returns a 128-bit response starting at + * the beginning of the mailbox. + */ + memset(&s->mailbox_data[SERVICES_MAILBOX_RESPONSE_OFFSET], 0, + IOSCB_SERIAL_NUMBER_SIZE); + memcpy(&s->mailbox_data[SERVICES_MAILBOX_RESPONSE_OFFSET], + s->serial_number, strlen(s->serial_number)); + status =3D SERVICES_STATUS_SUCCESS; + } + + s->services_sr =3D status << SERVICES_SR_STATUS_SHIFT; + qemu_irq_raise(s->irq); +} =20 static uint64_t mchp_pfsoc_ctrl_read(void *opaque, hwaddr offset, unsigned size) { - uint32_t val =3D 0; + MchpPfSoCIoscbState *s =3D opaque; =20 switch (offset) { + case SERVICES_CR: + return s->services_cr; case SERVICES_SR: - /* - * Although some services have no error codes, most do. All servic= es - * that do implement errors, begin their error codes at 1. Treat a= ll - * service requests as failures & return 1. - * See the "PolarFire=C2=AE FPGA and PolarFire SoC FPGA System Ser= vices" - * user guide for more information on service error codes. - */ - val =3D 1u << SERVICES_STATUS_SHIFT; - break; + return s->services_sr; default: qemu_log_mask(LOG_UNIMP, "%s: unimplemented device read " "(size %d, offset 0x%" HWADDR_PRIx ")\n", __func__, size, offset); + return 0; } - - return val; } =20 static void mchp_pfsoc_ctrl_write(void *opaque, hwaddr offset, @@ -222,13 +264,17 @@ static void mchp_pfsoc_ctrl_write(void *opaque, hwadd= r offset, =20 switch (offset) { case SERVICES_CR: - qemu_irq_raise(s->irq); + s->services_cr =3D value & SERVICES_CR_MASK; + services_cr_write(s, value); + break; + case SERVICES_SR: break; default: qemu_log_mask(LOG_UNIMP, "%s: unimplemented device write " "(size %d, value 0x%" PRIx64 ", offset 0x%" HWADDR_PRIx ")\n", __func__, size, value, offset); + break; } } =20 @@ -236,6 +282,55 @@ static const MemoryRegionOps mchp_pfsoc_ctrl_ops =3D { .read =3D mchp_pfsoc_ctrl_read, .write =3D mchp_pfsoc_ctrl_write, .endianness =3D DEVICE_LITTLE_ENDIAN, + .valid =3D { + .min_access_size =3D sizeof(uint32_t), + .max_access_size =3D sizeof(uint32_t), + }, +}; + +/* + * The System Controller uses the mailbox as a byte-addressable shared buf= fer + * for service command payloads and responses. + */ +static uint64_t mchp_pfsoc_mailbox_read(void *opaque, hwaddr offset, + unsigned size) +{ + MchpPfSoCIoscbState *s =3D opaque; + + return ldn_le_p(&s->mailbox_data[offset], size); +} + +static void mchp_pfsoc_mailbox_write(void *opaque, hwaddr offset, + uint64_t value, unsigned size) +{ + MchpPfSoCIoscbState *s =3D opaque; + + stn_le_p(&s->mailbox_data[offset], size, value); +} + +static const MemoryRegionOps mchp_pfsoc_mailbox_ops =3D { + .read =3D mchp_pfsoc_mailbox_read, + .write =3D mchp_pfsoc_mailbox_write, + .endianness =3D DEVICE_LITTLE_ENDIAN, + .valid =3D { + .min_access_size =3D sizeof(uint8_t), + .max_access_size =3D sizeof(uint32_t), + }, +}; + +static void mchp_pfsoc_ioscb_reset(DeviceState *dev) +{ + MchpPfSoCIoscbState *s =3D MCHP_PFSOC_IOSCB(dev); + + s->services_cr =3D 0; + s->services_sr =3D 0; + memset(s->mailbox_data, 0, sizeof(s->mailbox_data)); + qemu_irq_lower(s->irq); +} + +static const Property mchp_pfsoc_ioscb_properties[] =3D { + DEFINE_PROP_STRING(IOSCB_PROP_SERIAL_NUMBER, + MchpPfSoCIoscbState, serial_number), }; =20 static void mchp_pfsoc_ioscb_realize(DeviceState *dev, Error **errp) @@ -243,6 +338,16 @@ static void mchp_pfsoc_ioscb_realize(DeviceState *dev,= Error **errp) MchpPfSoCIoscbState *s =3D MCHP_PFSOC_IOSCB(dev); SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); =20 + /* Use a deterministic identity when no serial number is configured */ + if (!s->serial_number) { + s->serial_number =3D g_strdup(IOSCB_DEFAULT_SERIAL_NUMBER); + } + if (strlen(s->serial_number) > IOSCB_SERIAL_NUMBER_SIZE) { + error_setg(errp, "The serial number can't be longer than %u bytes", + IOSCB_SERIAL_NUMBER_SIZE); + return; + } + memory_region_init(&s->container, OBJECT(s), "mchp.pfsoc.ioscb", IOSCB_WHOLE_REG_SIZE); sysbus_init_mmio(sbd, &s->container); @@ -265,7 +370,7 @@ static void mchp_pfsoc_ioscb_realize(DeviceState *dev, = Error **errp) "mchp.pfsoc.ioscb.qspixip", IOSCB_QSPIXIP_REG_SI= ZE); memory_region_add_subregion(&s->container, IOSCB_QSPIXIP_BASE, &s->qsp= ixip); =20 - memory_region_init_io(&s->mailbox, OBJECT(s), &mchp_pfsoc_dummy_ops, s, + memory_region_init_io(&s->mailbox, OBJECT(s), &mchp_pfsoc_mailbox_ops,= s, "mchp.pfsoc.ioscb.mailbox", IOSCB_SUBMOD_REG_SIZ= E); memory_region_add_subregion(&s->container, IOSCB_MAILBOX_BASE, &s->mai= lbox); =20 @@ -343,6 +448,8 @@ static void mchp_pfsoc_ioscb_class_init(ObjectClass *kl= ass, const void *data) =20 dc->desc =3D "Microchip PolarFire SoC IOSCB modules"; dc->realize =3D mchp_pfsoc_ioscb_realize; + device_class_set_legacy_reset(dc, mchp_pfsoc_ioscb_reset); + device_class_set_props(dc, mchp_pfsoc_ioscb_properties); } =20 static const TypeInfo mchp_pfsoc_ioscb_info =3D { --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820046; cv=pass; d=zohomail.com; s=zohoarc; b=NRx/XD1ZONltDiMxZJxMCWVyX+EytKeu963sC3KIgJZP7rYWRjZ9obHulYXIajDkmfqw+NxGgEWq8oz7lylVYzK70Jm9PEGQCJRT6uX0uJ2pt3Vy+KcohFhj8+EX5591TNHGLcG1FWIRDdldGK54rGeqTYZJW7Ess26AWCIJqzs= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820046; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=kdPHNrQ3n3OKUJHikSico2whZxJmvVuyzHmIDjf8nZE=; b=oI9hkM47iwSZfwXdpYglpMSvgt1eIX/XiViMqh0h3gmt7WxkQFw4qZ67lJXDmvzppvwWj3SZgqhp5nrtEdHiCnwilDFfIdn9x5J2hTVOy0OHDBX/sacr8/x5BaRHjMmEyU0lzXgyeI62dFNqdnAhDbw6YV5tl9tcTRqiH+vJd9I= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784820046768325.2777723438588; Thu, 23 Jul 2026 08:20:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvDW-0004Qq-5v; Thu, 23 Jul 2026 11:20:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvD6-0004BP-Jq; Thu, 23 Jul 2026 11:19:44 -0400 Received: from mail-japaneastazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c405::5] helo=TYPPR03CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvD3-00084Z-NV; Thu, 23 Jul 2026 11:19:44 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by SEYPR02MB7097.apcprd02.prod.outlook.com (2603:1096:101:1a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.10; Thu, 23 Jul 2026 15:19:34 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cnCuiXIuIggsZzmq9qoxUJ1roLaGhf9TSWdKx+Pz+hxwvjlBIdXpPK7Ep8n7Hk5nSzLU5nLm70afV3RUkhFDz0D65b6rArDiLd7lh1din0OVahNFFPx4tNbhxjertE0wQPU/IMY4PKyCR5zuYwpc+lR/B+iUpfG35oQ+7TMik/YXnDTGW35eT/rpx+svwV/vuqzirC0YWeXHkcO9r05YJoovA9EOwc99lhNTlXvnvnkjOo/GyCNjbVy7mRszJVb4dOP3faNRRYOcAf7ADh6zTkigoO5Ll5te/y8aJrAbks+pskdPyqH9Nkw9g2vc81bM87sA1IIAKNpfOyegG5Pn/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=kdPHNrQ3n3OKUJHikSico2whZxJmvVuyzHmIDjf8nZE=; b=ZYfv6Ctzs3+rXiKHH4q7fb6Reo/tDyswgg9KZI/t7H9J0IzRC85/a0DI3bwxYj19FGQCFOvd+I/yH/ub6S8FLOfxMjTBTMvHRa5L6iwAH5SG0t05vjyVZcV7nswHnvwzHD0PKzJz+CVaHm9jdd5WUWqCyUXpLc3XorqYIKPJs35DNDpoAjkJTiVw86I9EMnxKwl2OyJzCc48RBvQd1emWck391dCE/JyeYLQ0Mrev1jg/RHT0wmjJXT3ninpwruN6yYTFlVXSBzGZioQEpAQ09s53M9KTNBYTe+DE+r2rILHscJx57jMRu90za92d2yYEx7JSAH7hIH0+ZlFV8Z5vw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kdPHNrQ3n3OKUJHikSico2whZxJmvVuyzHmIDjf8nZE=; b=nl9tkxGMoKbiY7/6Tu8uSCy2PY0Lkt6fNTL3a1v7dOneuqswUA5lRjMAfbqaF4+lEu56chp76OM/+HDxUyMjuk/dRDkAspTZ2EPNN60jUp2+nnn5PUvW6EUO6DHGn/vyhwSe/UqTsQkwDMdh+99KSMfQfzvoIr4OeR4K0/HajpEUOfBQvnWn5vpHf0/1Cxvbnp7MGRcry+srnVy2ZqflqERIyi/GJVbrt9+Pjjp2Hz5ar8r0HJOtWbBg11xMExodkHbE/3UGg89Q3DHL1IwXts/utYuB74B4tTRyWCWQBrCbKqr20coWC9CgywPrqcmj6K9biQaz11uegDWV4jUGPg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Conor Dooley , Paolo Bonzini , Sebastian Huber , qemu-riscv@nongnu.org Subject: [PATCH 16/26] hw/rtc: Add PolarFire SoC RTC model Date: Thu, 23 Jul 2026 23:18:43 +0800 Message-Id: <20260723151853.2143177-17-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|SEYPR02MB7097:EE_ X-MS-Office365-Filtering-Correlation-Id: 7791cdce-366e-446e-48e0-08dee8cdcd05 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|376014|366016|23010399003|1800799024|6133799003|22082099003|18002099003|10067099003|56012099006|3023799007; X-Microsoft-Antispam-Message-Info: SXrGjwjz12bY+mwZOWuxqvgtjap7kPUnHWha56Umc/EKIeayD0Uv5F+3XaTXIpDqIxKhPi7zy6NeGH0VmNx/wDsStj6dllmL8Ro3ZSQMOCtglj6iTUhRq0tBsU0dSLQsBlVudG+PYCZzs3o2357UlNnDJJJAYhmq/7Il3JUYtK/M48F0PQVD+LFwvMJV2Le+4KLBQ/fPmZE2cvunkHdX3J3ih1+D2ilozQFUS9SIcgMzIQyFtI7Vq67ggtuStQtNSoJBWaABKnXXR5LZyCm4//5/xV54M5AGuMyyi5SgAf+5M1ypEV+54fTY2d3WF8Ee5yhYYQGnK0Hru+6aKjsw+F4+7nExqlC2pHQAMLieL406qWBqbgBepwtUlD/GvDziBHo4LOg7954HAjHrmH5PjD/GPv6tHSvd+qdF72cAE2IHGq0lA6eOSA2Yp7mRbDvg4/t/iV53grIoxlAMHW3m1SeHemmLRul+70ZJSjuyyJ1TRzCzwvV/E/YuVVjcr+Ijqj3gIgDh4azpiPZGRY6CU16xTmTW+X74oMlQyZtMw4LdmVDVAiv/0BsXtkqveFWeikxkf4+x6p7/511XVSB1SvKkBEsZMQmXGvlGPYwQ3yiWZjqabddcNq9l5EWu2UL06QuOSuhiP75i06Y6IQ9VR666nW9SmQ4d59xkeii6JRM= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(376014)(366016)(23010399003)(1800799024)(6133799003)(22082099003)(18002099003)(10067099003)(56012099006)(3023799007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4PLI32tYXt3Veyh/m9s9cKsrcLq3VtcS5k9xE2/hqxRuc/g/CYTh+QHmPB5Z?= =?us-ascii?Q?sncP21e98Khd/1pcPhzhKnKrKhFZxYRUweoXo3nhxsjNHfqJUgdrGAq+N6K8?= =?us-ascii?Q?5sr+U8LrwzTlMzS4y9sucu7cEygzZVlDMRLP//IVlwziG5N1a832+lEmRmAk?= =?us-ascii?Q?yPKJvrHrzuvfXVmmfwmQeKsTX2chmKd6t2OZ3/MFLie+Q9mBQOKTGBVxfIQL?= =?us-ascii?Q?wT3BMbJcz3PwooQ3UMnH7Z1ARjcCYScM88NwhT4bih/zrWR/0fi0aO+YRbhI?= =?us-ascii?Q?CI8ueD78kmAS5CRvSFH7iFWMXTjIVue36IhubM8EqD2zd3tiH5YRlQ6rzBZj?= =?us-ascii?Q?biU2RBcoFV4HXbxvMeojYH7uU5JHxamb9B/exSGGiQHhfwoLPtUEy0uOne4a?= =?us-ascii?Q?iznZfMiwFhMqzovRjJv4RApqU7n5N/LAM04nmCKZfGuyvO+ylyjIRyYPlr5U?= =?us-ascii?Q?9/2x7oPqPTK0E/hvHaVWVcALyXgkFMK2YLfxgZlwq6QhygBC7suB8wjFzGGw?= =?us-ascii?Q?NIn0ua08f+VvnMnyo3ylGheVqZw81bIuxuQ7aDn1h93vlCUtVOGMVzl0Z9Qr?= =?us-ascii?Q?gvG642dm8bZnAj/MYjtsqSQDRiVIAGIXWoEZwCeHCLn7OUkduds534krR76N?= =?us-ascii?Q?f/k8SSJ2N6Cixdt9I3ubP3SbbZh2aZpP3KIUIbNuWAYRtWoNn708Lp9B7fq7?= =?us-ascii?Q?prYcsGd6Z2aokRmNt9ZD4gk8hMIcEN3nfN0nFetwNDhP3JK8HFxTuK9bMyG2?= =?us-ascii?Q?XOo9A4u2I/FvzgohWP37LwOkgKhWx++2tbgBbhLq9ADLpJWuc2g6extxQn7p?= =?us-ascii?Q?DvoUEo4U1zHB5QSWUKaUeWz+aZ9/Tn+V8Rn6ibtPmu/Y8UYOHBwF91I6sXow?= =?us-ascii?Q?57WJCKhGfKERTSeaoViCGEWr7GxIP4tjBhQ9pvhxlAgC4VI9KOksXNWlj/wY?= =?us-ascii?Q?elpQ0/WIdiTIaH4R0WHegeLwztpzBYEimDgB0rHP++WLbb589QVu3Cdt2lB2?= =?us-ascii?Q?uSicSLuzGf168Oy5ElJ02UF0YDQkNOnDCKMwUzv8RhZ6GBsrWbRLwWgpsyAx?= =?us-ascii?Q?V5FPGTQCbGHj9/SUgNQXIflVk6yGcbZUBwsUm3RDE+Rn5ApocxdfwfM2OOmO?= =?us-ascii?Q?vejVf8H60f02iu8Gl+isfghmTVpxS3laWD46zkJRpqW96dzuY+n9jRfkspeT?= =?us-ascii?Q?mVCBOk1DsXEr3eP9Cq5JLD7fodHYRGy3jFi+VPgEL3co2cH06Xa0Yhoni6Fl?= =?us-ascii?Q?k6vFpTABHrj9bJavpZ+pDeHMa855pZN3RSISeKX3PSnpBywiLr7llUiiWI55?= =?us-ascii?Q?6COVGU4iJg293aJ3Psur7ZKywq43IROnh6h1Enc/3wmcj1gnbNKc7pFFJi0D?= =?us-ascii?Q?R2/gscl/W0IrQDIon3GV7cgQYThg/W2tixOtL8ll0YwpVZ2V1US/i8JvPCeQ?= =?us-ascii?Q?8YzxQcHpTYWe9aiw+7aLtWu3FRkX0nsGIOxWceCwJd8tIVWL8sI/3BdUadQP?= =?us-ascii?Q?H1JepZmmw2Jwvx7hedQee4ep1WOYbl/lLiRNlIfsEL7tOFsB95zeyljb96P6?= =?us-ascii?Q?d+5N23U1dLIwcA9ee9Ke7kxwPZYzixuio9znpSDqXVpJqdyk4qLC/jHMso2g?= =?us-ascii?Q?R3PS7wg0sijqA8FaUCLvlyTm9YyFJzwrqEViCdAKHoVq2NSVBHyHs6bCGQXR?= =?us-ascii?Q?2ksL08BT4OvQLZvzrNg2dwl8Jyx3fqZCtrAg6IDNOISw4R1aoR8V8jM3aEqc?= =?us-ascii?Q?UdxJTXrdhiaD69OXsp4Ju+/W3etQFPo=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7791cdce-366e-446e-48e0-08dee8cdcd05 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:34.1622 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: maZb+wn1KtnjkAVcpT/ekADXFcu+wh8mB2ww/+y4Py23iD1O8HrkrjTXDghmoKbdnyGmsliFgymJZ0O1+y+c0WD74kQuBIHLswp9dxePphQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR02MB7097 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c405::5; envelope-from=bin.meng@processmission.com; helo=TYPPR03CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820047718158500 Content-Type: text/plain; charset="utf-8" The PolarFire SoC exposes an RTC with binary and calendar modes, programmable prescaling, alarms, and wakeup and match interrupts. Add a standalone device model with explicit MMIO handling for time, commands, alarms, interrupt state, reset, and migration. Add its Kconfig and Meson entries and list it under the PolarFire SoC maintainer section. Signed-off-by: Bin Meng --- MAINTAINERS | 2 + include/hw/rtc/mchp_pfsoc_rtc.h | 46 +++ hw/rtc/mchp_pfsoc_rtc.c | 479 ++++++++++++++++++++++++++++++++ hw/rtc/Kconfig | 3 + hw/rtc/meson.build | 1 + 5 files changed, 531 insertions(+) create mode 100644 include/hw/rtc/mchp_pfsoc_rtc.h create mode 100644 hw/rtc/mchp_pfsoc_rtc.c diff --git a/MAINTAINERS b/MAINTAINERS index e36594d4fd..c4026832d8 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1772,12 +1772,14 @@ F: hw/misc/mchp_pfsoc_dmc.c F: hw/misc/mchp_pfsoc_ioscb.c F: hw/misc/mchp_pfsoc_l2cc.c F: hw/misc/mchp_pfsoc_sysreg.c +F: hw/rtc/mchp_pfsoc_rtc.c F: include/hw/riscv/microchip_pfsoc.h F: include/hw/char/mchp_pfsoc_mmuart.h F: include/hw/misc/mchp_pfsoc_dmc.h F: include/hw/misc/mchp_pfsoc_ioscb.h F: include/hw/misc/mchp_pfsoc_l2cc.h F: include/hw/misc/mchp_pfsoc_sysreg.h +F: include/hw/rtc/mchp_pfsoc_rtc.h F: tests/qtest/mchp_pfsoc_l2cc_test.c =20 Shakti C class SoC diff --git a/include/hw/rtc/mchp_pfsoc_rtc.h b/include/hw/rtc/mchp_pfsoc_rt= c.h new file mode 100644 index 0000000000..17bc6ddcdc --- /dev/null +++ b/include/hw/rtc/mchp_pfsoc_rtc.h @@ -0,0 +1,46 @@ +/* + * Microchip PolarFire SoC RTC + * + * Copyright (c) 2026 Process Mission + * + * Author: + * Bin Meng + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef HW_RTC_MCHP_PFSOC_RTC_H +#define HW_RTC_MCHP_PFSOC_RTC_H + +#include "hw/core/sysbus.h" +#include "qemu/timer.h" +#include "qom/object.h" + +#define TYPE_MCHP_PFSOC_RTC "mchp.pfsoc.rtc" +OBJECT_DECLARE_SIMPLE_TYPE(MchpPfSoCRtcState, MCHP_PFSOC_RTC) + +#define MCHP_PFSOC_RTC_REGS 28 + +struct MchpPfSoCRtcState { + SysBusDevice parent_obj; + + MemoryRegion iomem; + qemu_irq irq_wakeup; + qemu_irq irq_match; + QEMUTimer *alarm_timer; + + int64_t tick_offset; + int64_t tick_offset_vmstate; + uint64_t frozen_count; + uint64_t read_latch; + bool running; + bool alarm_enabled; + bool wakeup_pending; + bool match_pending; + bool updated; + bool read_latch_valid; + + uint32_t regs[MCHP_PFSOC_RTC_REGS]; +}; + +#endif /* HW_RTC_MCHP_PFSOC_RTC_H */ diff --git a/hw/rtc/mchp_pfsoc_rtc.c b/hw/rtc/mchp_pfsoc_rtc.c new file mode 100644 index 0000000000..087fd1f5ce --- /dev/null +++ b/hw/rtc/mchp_pfsoc_rtc.c @@ -0,0 +1,479 @@ +/* + * Microchip PolarFire SoC RTC + * + * Copyright (c) 2026 Process Mission + * + * Author: + * Bin Meng + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "hw/rtc/mchp_pfsoc_rtc.h" +#include "hw/core/irq.h" +#include "migration/vmstate.h" +#include "qemu/cutils.h" +#include "qemu/log.h" +#include "qemu/module.h" +#include "system/rtc.h" +#include "system/system.h" + +#define RTC_MMIO_SIZE 0x1000 +#define RTC_CONTROL_MASK 0x000007ff +#define RTC_MODE_MASK 0x0000000f +#define RTC_PRESCALER_MASK 0x03ffffff +#define RTC_ALARM_UPPER_MASK 0x000007ff +#define RTC_UPPER_MASK 0x3fffffff +#define RTC_CALENDAR_MASK 0x000000ff + +#define RTC_CONTROL 0x00 +#define RTC_CONTROL_START_RUNNING BIT(0) +#define RTC_CONTROL_STOP BIT(1) +#define RTC_CONTROL_ALARM_ON BIT(2) +#define RTC_CONTROL_ALARM_OFF BIT(3) +#define RTC_CONTROL_RESET BIT(4) +#define RTC_CONTROL_UPLOAD BIT(5) +#define RTC_CONTROL_DOWNLOAD BIT(6) +#define RTC_CONTROL_MATCH BIT(7) +#define RTC_CONTROL_WAKEUP_CLEAR BIT(8) +#define RTC_CONTROL_WAKEUP_SET BIT(9) +#define RTC_CONTROL_UPDATED BIT(10) + +#define RTC_MODE 0x04 +#define RTC_MODE_CLOCK_CALENDAR BIT(0) +#define RTC_MODE_WAKEUP_ENABLE BIT(1) +#define RTC_MODE_WAKEUP_RESET BIT(2) +#define RTC_MODE_WAKEUP_CONTINUE BIT(3) + +#define RTC_PRESCALER 0x08 +#define RTC_ALARM_LOWER 0x0c +#define RTC_ALARM_UPPER 0x10 +#define RTC_COMPARE_LOWER 0x14 +#define RTC_COMPARE_UPPER 0x18 +#define RTC_DATETIME_LOWER 0x20 +#define RTC_DATETIME_UPPER 0x24 +#define RTC_SECONDS 0x30 +#define RTC_MINUTES 0x34 +#define RTC_HOURS 0x38 +#define RTC_DAY 0x3c +#define RTC_MONTH 0x40 +#define RTC_YEAR 0x44 +#define RTC_WEEKDAY 0x48 +#define RTC_WEEK 0x4c +#define RTC_SECONDS_COUNT 0x50 +#define RTC_MINUTES_COUNT 0x54 +#define RTC_HOURS_COUNT 0x58 +#define RTC_DAY_COUNT 0x5c +#define RTC_MONTH_COUNT 0x60 +#define RTC_YEAR_COUNT 0x64 +#define RTC_WEEKDAY_COUNT 0x68 +#define RTC_WEEK_COUNT 0x6c + +#define RTC_REG(offset) ((offset) / sizeof(uint32_t)) + +static uint64_t mchp_pfsoc_rtc_get_count(MchpPfSoCRtcState *s) +{ + if (!s->running) { + return s->frozen_count; + } + + return s->tick_offset + + qemu_clock_get_ns(rtc_clock) / NANOSECONDS_PER_SECOND; +} + +static void mchp_pfsoc_rtc_set_count(MchpPfSoCRtcState *s, uint64_t count) +{ + if (s->running) { + s->tick_offset =3D (int64_t)count - + qemu_clock_get_ns(rtc_clock) / NANOSECONDS_PER_SECOND; + } else { + s->frozen_count =3D count; + } +} + +static void mchp_pfsoc_rtc_update_irq(MchpPfSoCRtcState *s) +{ + qemu_set_irq(s->irq_wakeup, s->wakeup_pending); + qemu_set_irq(s->irq_match, s->match_pending); +} + +static void mchp_pfsoc_rtc_schedule_alarm(MchpPfSoCRtcState *s); + +static void mchp_pfsoc_rtc_alarm(void *opaque) +{ + MchpPfSoCRtcState *s =3D opaque; + bool periodic =3D s->regs[RTC_REG(RTC_MODE)] & RTC_MODE_WAKEUP_RESET; + + s->alarm_enabled =3D periodic; + s->match_pending =3D true; + if (s->regs[RTC_REG(RTC_MODE)] & RTC_MODE_WAKEUP_ENABLE) { + s->wakeup_pending =3D true; + } + if (s->regs[RTC_REG(RTC_MODE)] & RTC_MODE_WAKEUP_RESET) { + mchp_pfsoc_rtc_set_count(s, 0); + } + if (!(s->regs[RTC_REG(RTC_MODE)] & RTC_MODE_WAKEUP_CONTINUE)) { + s->frozen_count =3D mchp_pfsoc_rtc_get_count(s); + s->running =3D false; + } + mchp_pfsoc_rtc_update_irq(s); + if (periodic) { + mchp_pfsoc_rtc_schedule_alarm(s); + } +} + +static void mchp_pfsoc_rtc_schedule_alarm(MchpPfSoCRtcState *s) +{ + uint64_t compare_mask; + uint64_t target; + uint64_t now; + uint64_t delta; + + timer_del(s->alarm_timer); + if (!s->alarm_enabled || !s->running || + (s->regs[RTC_REG(RTC_MODE)] & RTC_MODE_CLOCK_CALENDAR)) { + return; + } + + compare_mask =3D s->regs[RTC_REG(RTC_COMPARE_LOWER)] | + ((uint64_t)(s->regs[RTC_REG(RTC_COMPARE_UPPER)] & + RTC_UPPER_MASK) << 32); + if (compare_mask !=3D MAKE_64BIT_MASK(0, 62)) { + return; + } + + target =3D s->regs[RTC_REG(RTC_ALARM_LOWER)] | + ((uint64_t)(s->regs[RTC_REG(RTC_ALARM_UPPER)] & + RTC_ALARM_UPPER_MASK) << 32); + now =3D mchp_pfsoc_rtc_get_count(s); + if (target <=3D now) { + mchp_pfsoc_rtc_alarm(s); + return; + } + + delta =3D target - now; + if (delta > INT64_MAX / NANOSECONDS_PER_SECOND) { + return; + } + timer_mod(s->alarm_timer, + qemu_clock_get_ns(rtc_clock) + delta * NANOSECONDS_PER_SECON= D); +} + +static void mchp_pfsoc_rtc_control_write(MchpPfSoCRtcState *s, + uint32_t value) +{ + uint64_t count; + + value &=3D RTC_CONTROL_MASK; + if (value & RTC_CONTROL_UPDATED) { + s->updated =3D false; + } + if (value & RTC_CONTROL_RESET) { + mchp_pfsoc_rtc_set_count(s, 0); + s->updated =3D true; + } + if (value & RTC_CONTROL_UPLOAD) { + count =3D s->regs[RTC_REG(RTC_DATETIME_LOWER)] | + ((uint64_t)(s->regs[RTC_REG(RTC_DATETIME_UPPER)] & + RTC_UPPER_MASK) << 32); + mchp_pfsoc_rtc_set_count(s, count); + s->updated =3D true; + } + if (value & RTC_CONTROL_DOWNLOAD) { + count =3D mchp_pfsoc_rtc_get_count(s); + s->regs[RTC_REG(RTC_DATETIME_LOWER)] =3D count; + s->regs[RTC_REG(RTC_DATETIME_UPPER)] =3D count >> 32; + } + if ((value & RTC_CONTROL_START_RUNNING) && !s->running) { + s->tick_offset =3D (int64_t)s->frozen_count - + qemu_clock_get_ns(rtc_clock) / NANOSECONDS_PER_SECOND; + s->running =3D true; + } + if ((value & RTC_CONTROL_STOP) && s->running) { + s->frozen_count =3D mchp_pfsoc_rtc_get_count(s); + s->running =3D false; + } + if (value & RTC_CONTROL_ALARM_OFF) { + s->alarm_enabled =3D false; + s->wakeup_pending =3D false; + s->match_pending =3D false; + timer_del(s->alarm_timer); + } else if (value & RTC_CONTROL_ALARM_ON) { + s->alarm_enabled =3D true; + } + if (value & RTC_CONTROL_WAKEUP_CLEAR) { + s->wakeup_pending =3D false; + s->match_pending =3D false; + } + if (value & RTC_CONTROL_WAKEUP_SET) { + s->wakeup_pending =3D true; + } + + mchp_pfsoc_rtc_update_irq(s); + mchp_pfsoc_rtc_schedule_alarm(s); +} + +static uint32_t mchp_pfsoc_rtc_control_read(MchpPfSoCRtcState *s) +{ + uint32_t value; + + value =3D s->running ? RTC_CONTROL_START_RUNNING : 0; + if (s->alarm_enabled) { + value |=3D RTC_CONTROL_ALARM_ON; + } + if (s->match_pending) { + value |=3D RTC_CONTROL_MATCH; + } + if (s->updated) { + value |=3D RTC_CONTROL_UPDATED; + } + return value; +} + +static uint32_t mchp_pfsoc_rtc_datetime_lower_read(MchpPfSoCRtcState *s) +{ + s->read_latch =3D mchp_pfsoc_rtc_get_count(s); + s->read_latch_valid =3D true; + return (uint32_t)s->read_latch; +} + +static uint32_t mchp_pfsoc_rtc_datetime_upper_read(MchpPfSoCRtcState *s) +{ + uint64_t count =3D s->read_latch_valid ? s->read_latch : + mchp_pfsoc_rtc_get_count(s); + + s->read_latch_valid =3D false; + return (count >> 32) & RTC_UPPER_MASK; +} + +static uint64_t mchp_pfsoc_rtc_read(void *opaque, hwaddr offset, + unsigned size) +{ + MchpPfSoCRtcState *s =3D opaque; + + switch (offset) { + case RTC_CONTROL: + return mchp_pfsoc_rtc_control_read(s); + case RTC_DATETIME_LOWER: + return mchp_pfsoc_rtc_datetime_lower_read(s); + case RTC_DATETIME_UPPER: + return mchp_pfsoc_rtc_datetime_upper_read(s); + case RTC_MODE: + case RTC_PRESCALER: + case RTC_ALARM_LOWER: + case RTC_ALARM_UPPER: + case RTC_COMPARE_LOWER: + case RTC_COMPARE_UPPER: + case RTC_SECONDS: + case RTC_MINUTES: + case RTC_HOURS: + case RTC_DAY: + case RTC_MONTH: + case RTC_YEAR: + case RTC_WEEKDAY: + case RTC_WEEK: + case RTC_SECONDS_COUNT: + case RTC_MINUTES_COUNT: + case RTC_HOURS_COUNT: + case RTC_DAY_COUNT: + case RTC_MONTH_COUNT: + case RTC_YEAR_COUNT: + case RTC_WEEKDAY_COUNT: + case RTC_WEEK_COUNT: + return s->regs[RTC_REG(offset)]; + default: + qemu_log_mask(LOG_UNIMP, "%s: unimplemented device read " + "(size %d, offset 0x%" HWADDR_PRIx ")\n", + __func__, size, offset); + return 0; + } +} + +static void mchp_pfsoc_rtc_write(void *opaque, hwaddr offset, + uint64_t value, unsigned size) +{ + MchpPfSoCRtcState *s =3D opaque; + bool update_alarm =3D false; + + switch (offset) { + case RTC_CONTROL: + mchp_pfsoc_rtc_control_write(s, value); + return; + case RTC_MODE: + s->regs[RTC_REG(offset)] =3D value & RTC_MODE_MASK; + update_alarm =3D true; + break; + case RTC_PRESCALER: + s->regs[RTC_REG(offset)] =3D value & RTC_PRESCALER_MASK; + break; + case RTC_ALARM_LOWER: + case RTC_COMPARE_LOWER: + s->regs[RTC_REG(offset)] =3D value; + update_alarm =3D true; + break; + case RTC_ALARM_UPPER: + s->regs[RTC_REG(offset)] =3D value & RTC_ALARM_UPPER_MASK; + update_alarm =3D true; + break; + case RTC_COMPARE_UPPER: + s->regs[RTC_REG(offset)] =3D value & RTC_UPPER_MASK; + update_alarm =3D true; + break; + case RTC_DATETIME_LOWER: + s->regs[RTC_REG(offset)] =3D value; + break; + case RTC_DATETIME_UPPER: + s->regs[RTC_REG(offset)] =3D value & RTC_UPPER_MASK; + break; + case RTC_SECONDS: + case RTC_MINUTES: + case RTC_HOURS: + case RTC_DAY: + case RTC_MONTH: + case RTC_YEAR: + case RTC_WEEKDAY: + case RTC_WEEK: + s->regs[RTC_REG(offset)] =3D value & RTC_CALENDAR_MASK; + break; + case RTC_SECONDS_COUNT: + case RTC_MINUTES_COUNT: + case RTC_HOURS_COUNT: + case RTC_DAY_COUNT: + case RTC_MONTH_COUNT: + case RTC_YEAR_COUNT: + case RTC_WEEKDAY_COUNT: + case RTC_WEEK_COUNT: + break; + default: + qemu_log_mask(LOG_UNIMP, "%s: unimplemented device write " + "(size %d, value 0x%" PRIx64 + ", offset 0x%" HWADDR_PRIx ")\n", + __func__, size, value, offset); + return; + } + + if (update_alarm) { + mchp_pfsoc_rtc_schedule_alarm(s); + } +} + +static const MemoryRegionOps mchp_pfsoc_rtc_ops =3D { + .read =3D mchp_pfsoc_rtc_read, + .write =3D mchp_pfsoc_rtc_write, + .endianness =3D DEVICE_LITTLE_ENDIAN, + .valid =3D { .min_access_size =3D 4, .max_access_size =3D 4 }, +}; + +static void mchp_pfsoc_rtc_reset(DeviceState *dev) +{ + MchpPfSoCRtcState *s =3D MCHP_PFSOC_RTC(dev); + struct tm tm; + + timer_del(s->alarm_timer); + s->running =3D true; + s->alarm_enabled =3D false; + s->wakeup_pending =3D false; + s->match_pending =3D false; + s->updated =3D false; + s->read_latch_valid =3D false; + memset(s->regs, 0, sizeof(s->regs)); + + qemu_get_timedate(&tm, 0); + s->tick_offset =3D mktimegm(&tm) - + qemu_clock_get_ns(rtc_clock) / NANOSECONDS_PER_SECOND; + s->frozen_count =3D 0; + s->read_latch =3D mchp_pfsoc_rtc_get_count(s); + mchp_pfsoc_rtc_update_irq(s); +} + +static int mchp_pfsoc_rtc_pre_save(void *opaque) +{ + MchpPfSoCRtcState *s =3D opaque; + int64_t delta =3D qemu_clock_get_ns(rtc_clock) / + NANOSECONDS_PER_SECOND - + qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) / + NANOSECONDS_PER_SECOND; + + s->tick_offset_vmstate =3D s->tick_offset + delta; + return 0; +} + +static int mchp_pfsoc_rtc_post_load(void *opaque, int version_id) +{ + MchpPfSoCRtcState *s =3D opaque; + int64_t delta =3D qemu_clock_get_ns(rtc_clock) / + NANOSECONDS_PER_SECOND - + qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) / + NANOSECONDS_PER_SECOND; + + s->tick_offset =3D s->tick_offset_vmstate - delta; + s->read_latch_valid =3D false; + mchp_pfsoc_rtc_update_irq(s); + mchp_pfsoc_rtc_schedule_alarm(s); + return 0; +} + +static const VMStateDescription vmstate_mchp_pfsoc_rtc =3D { + .name =3D TYPE_MCHP_PFSOC_RTC, + .version_id =3D 1, + .minimum_version_id =3D 1, + .pre_save =3D mchp_pfsoc_rtc_pre_save, + .post_load =3D mchp_pfsoc_rtc_post_load, + .fields =3D (const VMStateField[]) { + VMSTATE_UINT32_ARRAY(regs, MchpPfSoCRtcState, + MCHP_PFSOC_RTC_REGS), + VMSTATE_INT64(tick_offset_vmstate, MchpPfSoCRtcState), + VMSTATE_UINT64(frozen_count, MchpPfSoCRtcState), + VMSTATE_BOOL(running, MchpPfSoCRtcState), + VMSTATE_BOOL(alarm_enabled, MchpPfSoCRtcState), + VMSTATE_BOOL(wakeup_pending, MchpPfSoCRtcState), + VMSTATE_BOOL(match_pending, MchpPfSoCRtcState), + VMSTATE_BOOL(updated, MchpPfSoCRtcState), + VMSTATE_END_OF_LIST() + }, +}; + +static void mchp_pfsoc_rtc_init(Object *obj) +{ + MchpPfSoCRtcState *s =3D MCHP_PFSOC_RTC(obj); + SysBusDevice *sbd =3D SYS_BUS_DEVICE(obj); + + memory_region_init_io(&s->iomem, obj, &mchp_pfsoc_rtc_ops, s, + TYPE_MCHP_PFSOC_RTC, RTC_MMIO_SIZE); + sysbus_init_mmio(sbd, &s->iomem); + sysbus_init_irq(sbd, &s->irq_wakeup); + sysbus_init_irq(sbd, &s->irq_match); + s->alarm_timer =3D timer_new_ns(rtc_clock, mchp_pfsoc_rtc_alarm, s); +} + +static void mchp_pfsoc_rtc_finalize(Object *obj) +{ + MchpPfSoCRtcState *s =3D MCHP_PFSOC_RTC(obj); + + timer_free(s->alarm_timer); +} + +static void mchp_pfsoc_rtc_class_init(ObjectClass *klass, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + + device_class_set_legacy_reset(dc, mchp_pfsoc_rtc_reset); + dc->vmsd =3D &vmstate_mchp_pfsoc_rtc; +} + +static const TypeInfo mchp_pfsoc_rtc_info =3D { + .name =3D TYPE_MCHP_PFSOC_RTC, + .parent =3D TYPE_SYS_BUS_DEVICE, + .instance_size =3D sizeof(MchpPfSoCRtcState), + .instance_init =3D mchp_pfsoc_rtc_init, + .instance_finalize =3D mchp_pfsoc_rtc_finalize, + .class_init =3D mchp_pfsoc_rtc_class_init, +}; + +static void mchp_pfsoc_rtc_register_types(void) +{ + type_register_static(&mchp_pfsoc_rtc_info); +} + +type_init(mchp_pfsoc_rtc_register_types) diff --git a/hw/rtc/Kconfig b/hw/rtc/Kconfig index 315b0e4ecc..0d53546adc 100644 --- a/hw/rtc/Kconfig +++ b/hw/rtc/Kconfig @@ -14,6 +14,9 @@ config M48T59 config PL031 bool =20 +config MCHP_PFSOC_RTC + bool + config MC146818RTC depends on ISA_BUS bool diff --git a/hw/rtc/meson.build b/hw/rtc/meson.build index 6c87864dc0..4a666bfc94 100644 --- a/hw/rtc/meson.build +++ b/hw/rtc/meson.build @@ -3,6 +3,7 @@ system_ss.add(when: 'CONFIG_DS1338', if_true: files('ds1338= .c')) system_ss.add(when: 'CONFIG_M41T80', if_true: files('m41t80.c')) system_ss.add(when: 'CONFIG_M48T59', if_true: files('m48t59.c')) system_ss.add(when: 'CONFIG_PL031', if_true: files('pl031.c')) +system_ss.add(when: 'CONFIG_MCHP_PFSOC_RTC', if_true: files('mchp_pfsoc_rt= c.c')) system_ss.add(when: ['CONFIG_ISA_BUS', 'CONFIG_M48T59'], if_true: files('m= 48t59-isa.c')) system_ss.add(when: 'CONFIG_XLNX_ZYNQMP', if_true: files('xlnx-zynqmp-rtc.= c')) =20 --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820308; cv=pass; d=zohomail.com; s=zohoarc; b=GvL5Nozfa0N72kq2lCcHuBMnhmp/7mTb0hpzbWM1ITJ02fRVJK2/bdGrfDL97NLCbh86O2aMZGn0HwplAwKDkX9MqfhoLpR8GglK3jKgthFcUWFayimvmmyTSAgBg1eGlzZFH5OXK7UULVpwYEqnzGwcUntgmMG4Yvh66dlREgY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820308; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0tfGvMk7jmo7ZfUel37LobxHifLq1W24S3SYRjJ/p/0=; b=fdZsAngZQvibQiXE7ConayhKTh40XpGmsIMrHP8P+AMFdqkbCXyO0uUfsu9ZGJRbovnYmdKtQADQmMfi+BM3tudTq4A2UxBu/+NExaL9FgTFXwEfYjkyiarQCLZvGE2mjyCvY0ruGH7lD0CWDKGoVzxcwpWherd+TlgZISXsF8Y= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178482030886289.44202480346473; Thu, 23 Jul 2026 08:25:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvDh-0004iB-0d; Thu, 23 Jul 2026 11:20:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvD9-0004C9-6N; Thu, 23 Jul 2026 11:19:48 -0400 Received: from mail-japaneastazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c405::5] helo=TYPPR03CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvD7-00084Z-Dm; Thu, 23 Jul 2026 11:19:46 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by SEYPR02MB7097.apcprd02.prod.outlook.com (2603:1096:101:1a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.10; Thu, 23 Jul 2026 15:19:36 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZT4HqwCXHvogFGHk3rGx1YrCvQ9NnwkmBKM48t+T+J1J5qrrlYxvMHx5xa+NybBaEfHnWxLrdk7rBC4HthEEZ5d8r0c18T4+GqzTsLsfsk/taeskBtCdK3fq2OdkXtf5GuRUBriJLEVWWkhcoJXckoAVVScmJa8llhtCaA7Ba1z90M/QoCa28A+ceOgrmtPoDTpDvHKBVFViczkIb9Ze224emX6IfdJpvsT6KpEHRrL0sXHFwJ8FaA6jmjvosEDyzw95dw83OCZtAGrL57AktXkGQw8q1UrcCTxx46//fkFH85nSserDbL5PkoF1BvLUiG391S6OC6a5Vq5YhI15xQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=0tfGvMk7jmo7ZfUel37LobxHifLq1W24S3SYRjJ/p/0=; b=Ov2djCEKdVtoMcjtWsYHRrWvzXvHk+7UbWKYNJfxHyvQHonOJKX3ru7MSJhdsQencNoFGpqsb0S89m/uPaYSY3XKxPuzcV4HK5j8WMdVaRf0H0z1FNh3lrVpb+V1LJaGtKI8h3CJNyklIrmlp1XQ9RtXYfp5e0BMrDJaO/cBhTGMjRBGAoNSJL0bw7xK/cEERsudN/rU2K+Tc/u4iO+w4YZ5W8gsnfKFMmqH1OCJnXPjuGlFyYF1E9oqIM3paW426LBZT6lr7XKpPW2xYF74ZN7yXRICE7GRmjli294cAaFTITC0BgjilIskl0pR8XC67Ua2pNgjDIg3VjAx6j458A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0tfGvMk7jmo7ZfUel37LobxHifLq1W24S3SYRjJ/p/0=; b=kXujXEJEAjw95q3FYKefpZ2x2pmvQPiYUuWLvcWk8A0pkzbuUvXyVVvcL0+GJtNxYZmI6JtnkEzF2N4LF8UcoFQlwLwKg1OvCema+ozVS1wP3OdoCj9rDmsQn0PeGMqWLrY9XwOSSCi4QVfRyHqh4ebrTs9ojemSWzMxBoJpI+EIZzIhfbsntCY7RgmOle202TsSWP8Swx29lYsodQrWlLNEEfNEFWJTE6NAskTJaYeCazCDA6r+y845H76ZKzK+G74LcJ4Xd7ULcb0oKCkO+J2UFckg3KxH1B/3VbHawQeXcaQM3kjzsogCy+7OCO6UVsnlSpHsU9OtR/F6rlgbuQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Alistair Francis , Chao Liu , Conor Dooley , Daniel Henrique Barboza , Liu Zhiwei , Palmer Dabbelt , Paolo Bonzini , Sebastian Huber , Weiwei Li , qemu-riscv@nongnu.org Subject: [PATCH 17/26] hw/riscv: pfsoc: Add PolarFire SoC RTC to Icicle Kit Date: Thu, 23 Jul 2026 23:18:44 +0800 Message-Id: <20260723151853.2143177-18-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|SEYPR02MB7097:EE_ X-MS-Office365-Filtering-Correlation-Id: fceb3c7e-6387-41ef-85c7-08dee8cdce59 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|7416014|34096008|376014|366016|23010399003|1800799024|22082099003|18002099003|5023799004|10067099003|56012099006|3023799007; X-Microsoft-Antispam-Message-Info: DmDbXCa6wK25+jNsJK1GPYOcC8/0v6bNwZZVmhNdnnSgpca79AgNjzd+/54FcMTg/duHB3yxQjckVXwgcHLCzCyjq30z5JRSWS04LEnw6ofoHFt/na9m6vIkU1N0APKTSC4aPeJcRTC4qmqIue8pkTSy5RPc9Hq0/g6x9vEc4kMRMbsFOfle9OY84GLbeHA80yRZCynVONNET6oNKYvIkGAaDB98Jd1o7vGXJ3fbwGX1KGBbqZnBwmfozw/+2D9QBNWyjeeFs/8Fp/HAcMqNN1viMXm3Krh/WtHhU5P6N/uabG04/v8KF51Xma8oSO0R410lkSQWPGlbEgEEd04Dmq+w5HhV4grBbq0rgniz9cjUown0Kq6O+vFaFW5wJRvIalbQM9mlsaSQ8xICQ9tThIA+rIXEuxt0ZEtdAWOdk7BPdQ6UgpZ3REfLctVR4B1QE83ipRtsRrtLlqoW+dMw7migH5a2V59oLLi2DveAWN42QfM8gQ4e1ADX/LdBro4PmWJ/ZG+PKDy2MKYYM7sQCExioGCF+Y9MZJcbsDt6+3/p2+Mup8uyufqhnYg+3hU+2DFQ7Ixurj94NycWCEkge6Yv5kYJihU3gWhclsB11NJSUcvrLSNmjdmzGGzT54irUUxCIfb/zEWffu7KOdCyOgyv6WmhtG82WHY/ZghTPgo= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(34096008)(376014)(366016)(23010399003)(1800799024)(22082099003)(18002099003)(5023799004)(10067099003)(56012099006)(3023799007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?rmoBRFf0w23r+wMOW55Ss3mPHQnjc5BSpVnB1nNhIL0Eskrc+no4D05gNLZw?= =?us-ascii?Q?zYUgWJ1UohCapZaE3gUPP2Gq2JxWD7fnuGNMcy/hlrHA1vYQFDFtw8WPu7XY?= =?us-ascii?Q?O89mvTqVL9aDBYPbqGf5JyRuPDR+98+d/mo0XH50F41M75JmFJg7I0V4H9aM?= =?us-ascii?Q?FVKDLFbBpiwvF8S95RzsZUDF/2eh1oxOR8aiq6InnsNYppTeDnrk4/xHpXq4?= =?us-ascii?Q?TDGaqWv8lqadzKDG2l7WP57LpwPjNe7AyJezfKY+x8GmVXZbeaLzx1u+ieKg?= =?us-ascii?Q?+rEVIAuFm9WDvqjlwrdo4SGEIRY8j2KMVHcmUY+Ak+3tQx2hvpKW8q/4//v+?= =?us-ascii?Q?EAGr64kpRcybNsuaRDVT9S4ex9PjXg1+ZQMXl9gF7VrnSUMGGlc9Ahlu3Hf/?= =?us-ascii?Q?Ezh+e059HBdOdC2H/CUrWtepnMr8KeBO4lgTawYCbsajEbiVSAT7sMQeW68u?= =?us-ascii?Q?hJCivl9c5oi3/dVZVVzSjuoy2/7gzDQrf5wKf58j7BG0TNAtJ7fta4IygKCW?= =?us-ascii?Q?CwZhDIzsCX7+A/pTy4jo+FNrnd2xS8TSUB8qPUvomvsNu1alh2J2XsxZ98Yk?= =?us-ascii?Q?F/WIEIPRv2z0DyZrK6r9NxCsKg+y3Ca2Of3c2pI12WLsp1vmDGUXpwrNllh3?= =?us-ascii?Q?8a+nw6QkIRF+2jM2VErZSOJe8lB7Vz7S5KF9xWGR4CinS8mPhucu+lUQHHx+?= =?us-ascii?Q?6cd1QLgl7sEl3WdI2XjNttiqKHzkKJgYSq2/x+pwKGGGaR0zyBSZ84z9A9w5?= =?us-ascii?Q?mNKFOjdr/cd6FX2T/dQeH3hy2fRGqme8Vk2VDtBuvnDiuOKr6fR8TJ1+lb1R?= =?us-ascii?Q?nHx0fTVZk7sNDu6iJUI4zq0mRamCmOV97DjhzPEG3IqfiLuKARwVYSQlmDyc?= =?us-ascii?Q?AHPUXEJbpNwVoCfTFZDqiux7X2menUuHvGBEpas9M6RSfjis+iGtVvLj3e/s?= =?us-ascii?Q?8dAkcCJqpcpXKyZ1PrpGKIGmckkwVZHMgsbuSH6/YQ83gtowxOogzFupTXzh?= =?us-ascii?Q?wd4jXaCBnlbwnPVCmMiRViYi3MhsJwTNkqgSqdQyIi0KEqniDbiIhWiqoOnc?= =?us-ascii?Q?O/3boWNghYALAr8fOV1pwEgTzccru4RHnA7ohbL5rHIIi4s0num2t9FXy12x?= =?us-ascii?Q?Q11n1/eYjJ1CA81LJAlzftjX1I2gZMveVySptFVlSNapOWtW+Bi4idvA/VZ+?= =?us-ascii?Q?2fjMz9B6VaY/V7rYKDzI8tCJ0CyJE/erEgCNdW69qfeZqy0fAAJ8N9O5sLC/?= =?us-ascii?Q?0+mNRargGVMdU36FTZuaCI+qp7A5hscBWrRfYHmFmzA0MeGrFFvXnLpDxM/O?= =?us-ascii?Q?KvvamNIW70IMwHNQ9Itd77BfO8E92P+zOiqTmq9CPHicfSIfCQ2OFd1li7G8?= =?us-ascii?Q?zolc5E5uH64QMX09PdnWCcO08/Ti0ZBTq8lnP/kY0SqRV+tJminedPIANoCC?= =?us-ascii?Q?oNOwyOdmrLMTSAYHD/ZzE4M9FIdadQzHrCJhef0FCpG9NUOTeCeT7Aq5t4tm?= =?us-ascii?Q?oJJf6KUmXITswnMGqDoRFmKe7NXEyYnyEZYpDPLkxXYumdwVRPdPwpVUdqFR?= =?us-ascii?Q?NPTDOJ2rwy1jGiXbmvmrW/HhAkgQSNJWCF6WuLMzRQs6BqWoJAsDWigL28vO?= =?us-ascii?Q?ntK4VTzeaYlLXNMPkmbmfsBWg+UNyMXkgnfQuOA4SvISG//y22f65XsSeQi8?= =?us-ascii?Q?j395x5yCwaNh2fmgEx1N/yW02FtZlDdWYKoZLyF7VwBmLYHet2BGd43c5iHn?= =?us-ascii?Q?+D4tlMrYuTL5Cq58OO2KCfBmw2bsLqU=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: fceb3c7e-6387-41ef-85c7-08dee8cdce59 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:36.2713 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: B6uMK6216CEqhXIZNRyoEwHNmlgm8KEIxh2cveSMwValW49r9KT4r6ApIZm8r4nn278jW0OVBZ24X1k76TwdTykyf1VT9z5QGAVTloKkGW0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR02MB7097 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c405::5; envelope-from=bin.meng@processmission.com; helo=TYPPR03CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820309435158500 Content-Type: text/plain; charset="utf-8" The Icicle Kit memory map advertises the PolarFire RTC, but the machine leaves its MMIO range unmapped. Linux faults when it programs the RTC prescaler during boot. Select and instantiate the RTC, map it at the documented address, and wire its wakeup and match outputs to PLIC interrupts 80 and 81. Signed-off-by: Bin Meng --- include/hw/riscv/microchip_pfsoc.h | 4 ++++ hw/riscv/microchip_pfsoc.c | 11 +++++++++++ hw/riscv/Kconfig | 1 + 3 files changed, 16 insertions(+) diff --git a/include/hw/riscv/microchip_pfsoc.h b/include/hw/riscv/microchi= p_pfsoc.h index 0aeccedf77..26d28252ea 100644 --- a/include/hw/riscv/microchip_pfsoc.h +++ b/include/hw/riscv/microchip_pfsoc.h @@ -31,6 +31,7 @@ #include "hw/misc/mchp_pfsoc_ioscb.h" #include "hw/misc/mchp_pfsoc_sysreg.h" #include "hw/net/cadence_gem.h" +#include "hw/rtc/mchp_pfsoc_rtc.h" #include "hw/sd/cadence_sdhci.h" #include "hw/riscv/riscv_hart.h" =20 @@ -53,6 +54,7 @@ typedef struct MicrochipPFSoCState { MchpPfSoCMMUartState *serial2; MchpPfSoCMMUartState *serial3; MchpPfSoCMMUartState *serial4; + MchpPfSoCRtcState rtc; MchpPfSoCSysregState sysreg; SiFivePDMAState dma; CadenceGEMState gem0; @@ -148,6 +150,8 @@ enum { MICROCHIP_PFSOC_DMA_IRQ7 =3D 12, MICROCHIP_PFSOC_GEM0_IRQ =3D 64, MICROCHIP_PFSOC_GEM1_IRQ =3D 70, + MICROCHIP_PFSOC_RTC_WAKEUP_IRQ =3D 80, + MICROCHIP_PFSOC_RTC_MATCH_IRQ =3D 81, MICROCHIP_PFSOC_EMMC_SD_IRQ =3D 88, MICROCHIP_PFSOC_MMUART0_IRQ =3D 90, MICROCHIP_PFSOC_MMUART1_IRQ =3D 91, diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c index 248de4d022..63658fbeb0 100644 --- a/hw/riscv/microchip_pfsoc.c +++ b/hw/riscv/microchip_pfsoc.c @@ -181,6 +181,8 @@ static void microchip_pfsoc_soc_instance_init(Object *o= bj) object_initialize_child(obj, "sysreg", &s->sysreg, TYPE_MCHP_PFSOC_SYSREG); =20 + object_initialize_child(obj, "rtc", &s->rtc, TYPE_MCHP_PFSOC_RTC); + object_initialize_child(obj, "ddr-sgmii-phy", &s->ddr_sgmii_phy, TYPE_MCHP_PFSOC_DDR_SGMII_PHY); object_initialize_child(obj, "ddr-cfg", &s->ddr_cfg, @@ -308,6 +310,15 @@ static void microchip_pfsoc_soc_realize(DeviceState *d= ev, Error **errp) memmap[MICROCHIP_PFSOC_PLIC].size); g_free(plic_hart_config); =20 + /* RTC */ + sysbus_realize(SYS_BUS_DEVICE(&s->rtc), errp); + sysbus_mmio_map(SYS_BUS_DEVICE(&s->rtc), 0, + memmap[MICROCHIP_PFSOC_RTC].base); + sysbus_connect_irq(SYS_BUS_DEVICE(&s->rtc), 0, + qdev_get_gpio_in(DEVICE(s->plic), MICROCHIP_PFSOC_RTC_WAKEUP_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(&s->rtc), 1, + qdev_get_gpio_in(DEVICE(s->plic), MICROCHIP_PFSOC_RTC_MATCH_IRQ)); + /* DMA */ sysbus_realize(SYS_BUS_DEVICE(&s->dma), errp); sysbus_mmio_map(SYS_BUS_DEVICE(&s->dma), 0, diff --git a/hw/riscv/Kconfig b/hw/riscv/Kconfig index 22619481e4..d69c9f7629 100644 --- a/hw/riscv/Kconfig +++ b/hw/riscv/Kconfig @@ -20,6 +20,7 @@ config MICROCHIP_PFSOC select MCHP_PFSOC_IOSCB select MCHP_PFSOC_L2CC select MCHP_PFSOC_MMUART + select MCHP_PFSOC_RTC select MCHP_PFSOC_SYSREG select RISCV_ACLINT select SIFIVE_PDMA --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820297; cv=pass; d=zohomail.com; s=zohoarc; b=LFfEz4QlvetPxf4iMOt1npShkCwtF1oD1QaPCEuW2HkZMyN98iGPgqT/vmE2Bhq0VxcnsL7B3Kd3egHBYe2MdT7NlopPx72tATKLlW21Bi65zDdto4bvi33dYHugUH6uX1Xu0xtyF6sC14cvDlsNPtCTwsLsrjflYqsvun+5CO4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820297; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XK+3bh4DBfNIgmPbUdGkeSCH+WVx5qSrD9GZMBU3Z84=; b=CMBlOHV/oBvfqfXz03iB4lf7acmz2tZQeYwAhM8vZ7X6ORBgeZuDrL+czMGDcntLoAT3DyN0d2FNh5HEpTs8+MK37bxc99xuLgB/T57tXbD5IwABR4cxa4sGRJ54NDi1ZmwK0OuCwC7lR03Y5BUplY+IB4S3wi7E6d1vx13kE+Y= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784820297307810.7098496497126; Thu, 23 Jul 2026 08:24:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvDi-0004on-DN; Thu, 23 Jul 2026 11:20:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDD-0004Ep-TG; Thu, 23 Jul 2026 11:19:53 -0400 Received: from mail-japaneastazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c405::5] helo=TYPPR03CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDA-00084Z-0c; Thu, 23 Jul 2026 11:19:51 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by SEYPR02MB7097.apcprd02.prod.outlook.com (2603:1096:101:1a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.10; Thu, 23 Jul 2026 15:19:37 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:37 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xTLP29KRRhZ175RfFx42HnjDjWMK5LBN45XVzce3JUWIi1Bom7p41A2aW+zeGHZUv4OKK/+FmHwjhy9YX+jZ8mcht7M40eEgPeaH/b8Q9PAeoTfHJ6KnDq5pQZYrd+CucHR/CKzWcYqTDZPrnPvO51hlGWgxB/YtwaF79AsMA5ESltO5ywhpL342sPYyr6RgwwzylGF56CtvWyPu5hojpOW0nSBiWAg9PmjFBiK7+FvaAoGiUy4ZApkW/VisUv3fvxxfzEEthVGKX9ZeI9bP1IzYkown8V7Mf3CXuV3P9xv5I/eqJjnOnOpz1gmT10zk2kxm3v1KFNwt4xdYSZxeEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=XK+3bh4DBfNIgmPbUdGkeSCH+WVx5qSrD9GZMBU3Z84=; b=czZRJIqJxUugvyDWd2i9mIxnQ2kKQ9O4Oz7WSa6h9kSh7Za9aPcSsH5aVuxsEduD7EhWXZHi9DTJKEYuENsQqQ+yk7aqJY6IY8XU1FrpXZk3ZEyb/U1TwTf5pXNIX6MjprM1tfLZTTY4YVcfqeMtBsz2oQJqubjBC+YyNwcgWmD/xlPD8NEXnHMHHwyykW7Bnu0tkrQz9P/4RZ4rdBxG2SzKrUVMRwE799zBm+3P2H3KOucNEfFUu80NTnGnncrq05m10c5g8AwVoqYbg84IJS7T2E+9MDm5PjZGHuuuMMD5V0TeRHRGfdoY9kgrZ5hjbz8Mhxt4cvjeaIgcAhSkCA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XK+3bh4DBfNIgmPbUdGkeSCH+WVx5qSrD9GZMBU3Z84=; b=KCGeTPzjQjyT5WHXDrTfmlaF1Z1MMcA7N1Hatqi9IqTsXSKoID6sAA38th0roYWdXLPxWchwwKt/FcObgLPO8G7PGEAdZytJQF0FHsR0XsIOuLIyZeYoaIG8ezANzL9aaj2XOdXpUICAwZZtJ4VjpnjpFsHo7lLX0NOOffiD3W2RNWD4bXegehn5RwF8DUm9O/PnsWWfjrvCCXvQkIy00YyGJyKzPTJIJFXGQZE19MzxICws1/kMctuIrOeGQ0yBErk7a+AOfGdBymreFX/Auc+F9HoF/x3vK4LtB5KBm9Do65tO9RHHDIzs0XrpBdoOTtLVweLJQJMeRRJl08NBlA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Conor Dooley , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Sebastian Huber , qemu-riscv@nongnu.org Subject: [PATCH 18/26] tests/qtest: Add PolarFire SoC RTC coverage Date: Thu, 23 Jul 2026 23:18:45 +0800 Message-Id: <20260723151853.2143177-19-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|SEYPR02MB7097:EE_ X-MS-Office365-Filtering-Correlation-Id: aafbe872-cabd-430f-480c-08dee8cdcf27 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|376014|366016|23010399003|1800799024|22082099003|18002099003|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: iAbCtarlNPmRQe4+ufssQj6SovURBJjQkKFBLJirLKtXCJ3+s/Tzczzf25RwErPaNEMoiDl8yQQ+V+5EKjDJX3sc2mCTXi6ud4IlgP+dnIN0x8UTGx4F3/kE3XJt1Iis6OA0AswpWg3G+yPXN0+aYCOLSf7FmY910mg9Hvby7usrrSR6LrrUd+gaUlvEQaN5IhPqAM8nE/Kd/sssZUVQBO9k6kRJbexu+ttMbz8qJSX5LNl45iaunoKfw2U0e7zsU0WTl6TTgjMH3fys8XioREFjFii2MBQQvkGetT6LkIFP32SwS+7BlYNWm6Q73VxRq17UnNz9Hpw8nile5YFJNGCh55pbYDfKsQ2b3XBnXRb74slwJGlE7uROIJYxHhwwqjKifj1DsYB7X6QxyTlslngqso6LeuWAOkUX2XxYVdOsY44vg7Yabx1fNBIAZ3SBJsDg8jLRPJNcpuTsBG+yTo8IeSkWt5ydh1s8FI8R7zZwEplzxv2buu/FiR0IgW3V+BtDhef/QbRz8TTTxbzxif2NkvSWi/sAfXi8ZseXQthpNyEp/BWJAnQZsxDnHieZOLbae5d+E5MZW0qPAxj9dv6T4ock47vmo2+sGEgB26ec3JfuK4zWMbDLypXVQIJOYr61m+r9e9wnjsN6YWvT3ifz7Qapc1h+XR/qQ0jOnhI= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(376014)(366016)(23010399003)(1800799024)(22082099003)(18002099003)(10067099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?BZlJcfBbTxU3QUWjPIs41Z5Effk+spiNemLgB14ccu/NfzfmSjcyy7baizpN?= =?us-ascii?Q?8SnF7IJkOWRKfpw7mvLHBDyl11LicRW2yrimNg+vG54WiqzPrKt/jp/qKSYT?= =?us-ascii?Q?7jnf60xvYpJ5GRrU03biSzDOFqbvsueNKy2HkYFgZcBJ/SA6ui9HYFGC+Dqp?= =?us-ascii?Q?qnxk3X2/L4IZ+TwRnFpcNK4qc9krcnnuNWSOarddbAEyBYaGj41C7mXyZmY4?= =?us-ascii?Q?5Z0Oc7TWlZRRCF7tInx8eF2Vhop6unyXWY4stlP2+Ci5E9CEL1hT4/Iu4+M3?= =?us-ascii?Q?zJrwyz9IYJUTDNSdd9VJ6LqGxLmJvyR8OXmJBbIu9+nEVUY3HcCX5aArZWQb?= =?us-ascii?Q?MpI+C8hMr2Cv0NTYl85B/XTn8suUvygDrePZ4eYiccXfLc+Dw7Dh1wUtcEF/?= =?us-ascii?Q?WbE2QgleLIima7+jxP6nWipQuVtGP2EuXJdZYWQT96haImY1ql6Va9NxQfCK?= =?us-ascii?Q?LGF4jeQZR/fVWnbOpjUDEKwGMcEFipO93owjdtXzX1qyvILCNhl6DQEAesYA?= =?us-ascii?Q?QMRjcM4iOeHqVX00/ylHqN1sr2DMggRUw5kGyQR9dqiqiPIWvyYzFUMlfMsc?= =?us-ascii?Q?AS0FypsV+1gX0m7carX2OJ07/X4mT01AqOVemj3YEVqYJfqJl6ssNJ6Ceq7P?= =?us-ascii?Q?U94ugNGCG/uvJp6FhXBKwSXOMSxr/B5F7ZQ+nILB/Z43fxZy7zWw2w5gyzaD?= =?us-ascii?Q?98s3W32+Pv4t844+rK/WFrB4BGyJjhqsoiFC/8MIy8casnDmuYQSIOGmvHZD?= =?us-ascii?Q?n69rncVov2qGzx7xQU8ipsnQeatMcLLGNewTUZfUi5PgoazySAhcKO1B9Gg2?= =?us-ascii?Q?2uc8CzP95FhPmLajih/qYTmu1gS7n5ZXDWhbrQQFyyNOM/RhYc20BnEoqows?= =?us-ascii?Q?db4Gw0LVjfX3nw2WgDPvHS9td1eXPtnmMSFL6v6Q+qLqxQgmXDzbQIG4Lxqt?= =?us-ascii?Q?XAfjGGzxDyWCYJl7XkRGFPbFlzXQW+bXKyT0NgVfS0yhfxZ9idAGyKBAkmk1?= =?us-ascii?Q?giEMufkZgskIQp3fCAzvl+esv13LjYwJu6OryN/GpCTr1V+YXlnJhz76CJwx?= =?us-ascii?Q?NNB2WrmsP/5XXaPCp6yjLQK6VBy9bLuzj7nq/3iGdvqax7xZNH0MrsDGSOBm?= =?us-ascii?Q?vKWpBBhE+WWtf5JCfGxwDBltNPo4qoXwh92osIZBARhM0SAfyEE43ocNZ81y?= =?us-ascii?Q?Ia2Q8WjyAuRzz1YQtBcf6N/p2e7pW2Ia6EH3xon2pqmkOxescr78Z0Z6GAJA?= =?us-ascii?Q?eNkGHDVLZaSqDlJOGaHDtz6txPm6nDGSMLAzUBen24mieSKb8pFm68daP3/j?= =?us-ascii?Q?635fWJMlicPhhy50rIrwsvNQNXYwx3bXjK+ZB5u8HIRidqUKdl3ajC7Ho0jd?= =?us-ascii?Q?2nzPfpIh+aRwpetuJV378H2ylRWCZvgLUo9oWWA7HV2VLOXurmuLGHOgn6gv?= =?us-ascii?Q?5o8egbmWSbbJ9HL5bUApt5TF8fm0Gm7j0d0i8Y4LtHJLMhoDX7/Tqb8HWWc/?= =?us-ascii?Q?Lt5VwH/mmvh23l+T0VXa26nUfYEkxOLljN6Ex5LQTlGyCi3n8UV2mRrSplD+?= =?us-ascii?Q?FHyatnGkrNtpWLOmiz4Mr4f1uVCMcCXy1EcIjQ8pT+GcvUlI9Gtji86mU9SR?= =?us-ascii?Q?ThBU3mrgaQUBLvxqyJAovi3MS6/yXhs6X1mvQZorr/7T3Lo66ZARbKFyRsa+?= =?us-ascii?Q?VJAq6cYDPpjGgx3GuOuMMn3e7ssQ3wQwwdApvqTYURtwKXK9O8pVKSaKZZXa?= =?us-ascii?Q?ciVj03bpBg8KcH11SwPmGLt2exrwQTA=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: aafbe872-cabd-430f-480c-08dee8cdcf27 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:37.6365 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: e6rKq4CN309UhV9GNDmmRDmrJFRQ7Fh/mTfNdsfTIRxGxhQyP9LbkBaCQUwtCJXHRofC34IBTqgwoD857A7JrXcuYy4NIwsVtXscQDI8vjQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR02MB7097 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c405::5; envelope-from=bin.meng@processmission.com; helo=TYPPR03CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820299219158500 Content-Type: text/plain; charset="utf-8" Exercise RTC register masks, binary counter, upload and stop controls, alarm and wakeup interrupt behavior, reset state, and PLIC wiring on the Icicle Kit. Also verify RTC state and pending interrupt migration, including streams from QEMU versions that predate the RTC device. Signed-off-by: Bin Meng --- MAINTAINERS | 1 + tests/qtest/mchp_pfsoc_rtc_test.c | 317 ++++++++++++++++++++++++++++++ tests/qtest/meson.build | 5 +- 3 files changed, 322 insertions(+), 1 deletion(-) create mode 100644 tests/qtest/mchp_pfsoc_rtc_test.c diff --git a/MAINTAINERS b/MAINTAINERS index c4026832d8..4bcc59f1cf 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1781,6 +1781,7 @@ F: include/hw/misc/mchp_pfsoc_l2cc.h F: include/hw/misc/mchp_pfsoc_sysreg.h F: include/hw/rtc/mchp_pfsoc_rtc.h F: tests/qtest/mchp_pfsoc_l2cc_test.c +F: tests/qtest/mchp_pfsoc_rtc_test.c =20 Shakti C class SoC L: qemu-riscv@nongnu.org diff --git a/tests/qtest/mchp_pfsoc_rtc_test.c b/tests/qtest/mchp_pfsoc_rtc= _test.c new file mode 100644 index 0000000000..5345c7689e --- /dev/null +++ b/tests/qtest/mchp_pfsoc_rtc_test.c @@ -0,0 +1,317 @@ +/* + * QTest testcase for the Microchip PolarFire SoC RTC + * + * Copyright (c) 2026 Process Mission + * + * Author: + * Bin Meng + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qemu/bitops.h" +#include "qemu/bswap.h" +#include "qemu/timer.h" +#include "libqtest.h" +#include "migration/migration-qmp.h" +#include "migration/migration-util.h" + +#define RTC_BASE 0x20124000 +#define RTC_CONTROL 0x00 +#define RTC_MODE 0x04 +#define RTC_PRESCALER 0x08 +#define RTC_ALARM_LOWER 0x0c +#define RTC_ALARM_UPPER 0x10 +#define RTC_COMPARE_LOWER 0x14 +#define RTC_COMPARE_UPPER 0x18 +#define RTC_DATETIME_LOWER 0x20 +#define RTC_DATETIME_UPPER 0x24 +#define RTC_RUNNING BIT(0) +#define RTC_STOP BIT(1) +#define RTC_ALARM_ON BIT(2) +#define RTC_ALARM_OFF BIT(3) +#define RTC_UPLOAD BIT(5) +#define RTC_MATCH BIT(7) +#define RTC_WAKEUP_CLEAR BIT(8) +#define RTC_WAKEUP_SET BIT(9) +#define RTC_UPDATED BIT(10) +#define RTC_WAKEUP_ENABLE BIT(1) +#define RTC_WAKEUP_RESET BIT(2) +#define RTC_WAKEUP_CONTINUE BIT(3) +#define RTC_PRESCALER_MASK 0x03ffffff +#define RTC_UPPER_MASK 0x3fffffff +#define PLIC_BASE 0x0c000000 +#define PLIC_PENDING 0x1000 +#define PLIC_RTC_PENDING (BIT(16) | BIT(17)) +#define ENVM_BASE 0x20220000 +#define HSS_HEADER_SIZE 0x100 +#define HSS_HEADER_JUMP 0x1000006f +#define HSS_PAYLOAD_BASE (ENVM_BASE + HSS_HEADER_SIZE) +#define HSS_PAYLOAD_SIZE 8 + +static QTestState *microchip_icicle_kit_start_rtc(const char *firmware) +{ + return qtest_initf( + "-machine microchip-icicle-kit -smp 5 -m 2G -bios \"%s\" " + "-rtc base=3D2020-01-01T00:00:00,clock=3Dvm", firmware); +} + +static QTestState *microchip_icicle_kit_start_ext(const char *qemu_var, + const char *firmware) +{ + g_autofree char *args =3D g_strdup_printf( + "-machine microchip-icicle-kit -smp 5 -m 2G -bios \"%s\"", + firmware); + + return qtest_init_ext(qemu_var, args, NULL, true); +} + +static char *create_firmware(void) +{ + uint8_t firmware[HSS_HEADER_SIZE + HSS_PAYLOAD_SIZE] =3D { 0 }; + static const uint8_t payload[] =3D { + 0x13, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, + }; + char *path; + int fd; + ssize_t written; + unsigned int i; + + stl_le_p(&firmware[0], HSS_HEADER_JUMP); + stl_le_p(&firmware[4], HSS_PAYLOAD_SIZE); + for (i =3D 0; i < 5; i++) { + stl_le_p(&firmware[8 + i * sizeof(uint32_t)], HSS_PAYLOAD_BASE); + } + memcpy(&firmware[HSS_HEADER_SIZE], payload, sizeof(payload)); + + fd =3D g_file_open_tmp("microchip-icicle-kit-XXXXXX", &path, NULL); + g_assert_cmpint(fd, >=3D, 0); + + written =3D write(fd, firmware, sizeof(firmware)); + g_assert_cmpint(written, =3D=3D, sizeof(firmware)); + close(fd); + + return path; +} + +static uint64_t rtc_read_binary_count(QTestState *qts) +{ + uint64_t count =3D qtest_readl(qts, RTC_BASE + RTC_DATETIME_LOWER); + + count |=3D (uint64_t)qtest_readl(qts, + RTC_BASE + RTC_DATETIME_UPPER) << 32; + return count; +} + +static void test_rtc(void) +{ + const uint64_t initial_count =3D 1577836800; + g_autofree char *firmware =3D create_firmware(); + QTestState *qts =3D microchip_icicle_kit_start_rtc(firmware); + uint32_t control; + + unlink(firmware); + qtest_irq_intercept_out_named(qts, "/machine/soc/rtc", "sysbus-irq"); + + g_assert_cmphex(qtest_readl(qts, RTC_BASE + RTC_CONTROL), =3D=3D, + RTC_RUNNING); + g_assert_cmphex(rtc_read_binary_count(qts), =3D=3D, initial_count); + qtest_clock_step(qts, 2 * NANOSECONDS_PER_SECOND); + g_assert_cmphex(rtc_read_binary_count(qts), =3D=3D, initial_count + 2); + + qtest_writel(qts, RTC_BASE + RTC_MODE, UINT32_MAX); + qtest_writel(qts, RTC_BASE + RTC_PRESCALER, UINT32_MAX); + g_assert_cmphex(qtest_readl(qts, RTC_BASE + RTC_MODE), =3D=3D, 0xf); + g_assert_cmphex(qtest_readl(qts, RTC_BASE + RTC_PRESCALER), =3D=3D, + RTC_PRESCALER_MASK); + qtest_writel(qts, RTC_BASE + RTC_MODE, 0); + + qtest_writel(qts, RTC_BASE + RTC_CONTROL, RTC_STOP); + g_assert_cmphex(qtest_readl(qts, RTC_BASE + RTC_CONTROL) & + RTC_RUNNING, =3D=3D, 0); + qtest_clock_step(qts, 2 * NANOSECONDS_PER_SECOND); + g_assert_cmphex(rtc_read_binary_count(qts), =3D=3D, initial_count + 2); + + qtest_writel(qts, RTC_BASE + RTC_DATETIME_LOWER, 42); + qtest_writel(qts, RTC_BASE + RTC_DATETIME_UPPER, 0); + qtest_writel(qts, RTC_BASE + RTC_CONTROL, RTC_UPLOAD); + g_assert_cmphex(rtc_read_binary_count(qts), =3D=3D, 42); + g_assert_cmphex(qtest_readl(qts, RTC_BASE + RTC_CONTROL) & + (RTC_UPLOAD | RTC_UPDATED), =3D=3D, RTC_UPDATED); + + qtest_writel(qts, RTC_BASE + RTC_CONTROL, RTC_RUNNING); + qtest_clock_step(qts, NANOSECONDS_PER_SECOND); + g_assert_cmphex(rtc_read_binary_count(qts), =3D=3D, 43); + qtest_writel(qts, RTC_BASE + RTC_CONTROL, RTC_WAKEUP_SET); + g_assert_true(qtest_get_irq(qts, 0)); + qtest_writel(qts, RTC_BASE + RTC_CONTROL, RTC_WAKEUP_CLEAR); + g_assert_false(qtest_get_irq(qts, 0)); + + qtest_writel(qts, RTC_BASE + RTC_ALARM_LOWER, 45); + qtest_writel(qts, RTC_BASE + RTC_ALARM_UPPER, 0); + qtest_writel(qts, RTC_BASE + RTC_COMPARE_LOWER, UINT32_MAX); + qtest_writel(qts, RTC_BASE + RTC_COMPARE_UPPER, RTC_UPPER_MASK); + qtest_writel(qts, RTC_BASE + RTC_MODE, + RTC_WAKEUP_ENABLE | RTC_WAKEUP_CONTINUE); + qtest_writel(qts, RTC_BASE + RTC_CONTROL, RTC_ALARM_ON); + g_assert_false(qtest_get_irq(qts, 0)); + g_assert_false(qtest_get_irq(qts, 1)); + control =3D qtest_readl(qts, RTC_BASE + RTC_CONTROL); + g_assert_cmphex(control & RTC_ALARM_ON, =3D=3D, RTC_ALARM_ON); + qtest_writel(qts, RTC_BASE + RTC_CONTROL, control | RTC_ALARM_OFF); + g_assert_cmphex(qtest_readl(qts, RTC_BASE + RTC_CONTROL) & + RTC_ALARM_ON, =3D=3D, 0); + qtest_clock_step(qts, 2 * NANOSECONDS_PER_SECOND); + g_assert_false(qtest_get_irq(qts, 0)); + g_assert_false(qtest_get_irq(qts, 1)); + + qtest_writel(qts, RTC_BASE + RTC_DATETIME_LOWER, 43); + qtest_writel(qts, RTC_BASE + RTC_CONTROL, RTC_UPLOAD); + qtest_writel(qts, RTC_BASE + RTC_CONTROL, RTC_ALARM_ON); + qtest_clock_step(qts, 2 * NANOSECONDS_PER_SECOND); + g_assert_true(qtest_get_irq(qts, 0)); + g_assert_true(qtest_get_irq(qts, 1)); + g_assert_cmphex(qtest_readl(qts, RTC_BASE + RTC_CONTROL) & RTC_MATCH, + =3D=3D, RTC_MATCH); + qtest_writel(qts, RTC_BASE + RTC_CONTROL, RTC_ALARM_OFF); + g_assert_false(qtest_get_irq(qts, 0)); + g_assert_false(qtest_get_irq(qts, 1)); + + qtest_writel(qts, RTC_BASE + RTC_DATETIME_LOWER, 0); + qtest_writel(qts, RTC_BASE + RTC_DATETIME_UPPER, 0); + qtest_writel(qts, RTC_BASE + RTC_CONTROL, RTC_UPLOAD); + qtest_writel(qts, RTC_BASE + RTC_ALARM_LOWER, 2); + qtest_writel(qts, RTC_BASE + RTC_MODE, + RTC_WAKEUP_ENABLE | RTC_WAKEUP_RESET | + RTC_WAKEUP_CONTINUE); + qtest_writel(qts, RTC_BASE + RTC_CONTROL, RTC_ALARM_ON); + qtest_clock_step(qts, 2 * NANOSECONDS_PER_SECOND); + g_assert_true(qtest_get_irq(qts, 0)); + g_assert_cmphex(rtc_read_binary_count(qts), =3D=3D, 0); + g_assert_cmphex(qtest_readl(qts, RTC_BASE + RTC_CONTROL) & + RTC_ALARM_ON, =3D=3D, RTC_ALARM_ON); + qtest_writel(qts, RTC_BASE + RTC_CONTROL, RTC_WAKEUP_CLEAR); + qtest_clock_step(qts, 2 * NANOSECONDS_PER_SECOND); + g_assert_true(qtest_get_irq(qts, 0)); + g_assert_cmphex(rtc_read_binary_count(qts), =3D=3D, 0); + qtest_writel(qts, RTC_BASE + RTC_CONTROL, RTC_ALARM_OFF); + g_assert_false(qtest_get_irq(qts, 0)); + g_assert_false(qtest_get_irq(qts, 1)); + + qtest_system_reset(qts); + g_assert_cmphex(qtest_readl(qts, RTC_BASE + RTC_CONTROL), =3D=3D, + RTC_RUNNING); + g_assert_cmphex(qtest_readl(qts, RTC_BASE + RTC_MODE), =3D=3D, 0); + g_assert_cmphex(qtest_readl(qts, RTC_BASE + RTC_PRESCALER), =3D=3D, 0); + g_assert_false(qtest_get_irq(qts, 0)); + g_assert_false(qtest_get_irq(qts, 1)); + + qtest_quit(qts); +} + +static void test_rtc_plic(void) +{ + g_autofree char *firmware =3D create_firmware(); + QTestState *qts =3D microchip_icicle_kit_start_rtc(firmware); + + unlink(firmware); + + qtest_writel(qts, RTC_BASE + RTC_DATETIME_LOWER, 42); + qtest_writel(qts, RTC_BASE + RTC_DATETIME_UPPER, 0); + qtest_writel(qts, RTC_BASE + RTC_CONTROL, RTC_UPLOAD); + qtest_writel(qts, RTC_BASE + RTC_ALARM_LOWER, 43); + qtest_writel(qts, RTC_BASE + RTC_ALARM_UPPER, 0); + qtest_writel(qts, RTC_BASE + RTC_COMPARE_LOWER, UINT32_MAX); + qtest_writel(qts, RTC_BASE + RTC_COMPARE_UPPER, RTC_UPPER_MASK); + qtest_writel(qts, RTC_BASE + RTC_MODE, + RTC_WAKEUP_ENABLE | RTC_WAKEUP_CONTINUE); + qtest_writel(qts, RTC_BASE + RTC_CONTROL, RTC_ALARM_ON); + qtest_clock_step(qts, NANOSECONDS_PER_SECOND); + + g_assert_cmphex(qtest_readl(qts, PLIC_BASE + PLIC_PENDING + 8) & + PLIC_RTC_PENDING, =3D=3D, PLIC_RTC_PENDING); + + qtest_quit(qts); +} + +static void test_machine_migration(void) +{ + g_autofree char *firmware =3D create_firmware(); + const char *old_qemu =3D g_getenv("QTEST_QEMU_BINARY_OLD"); + QTestState *from; + QTestState *to =3D qtest_initf( + "-machine microchip-icicle-kit -smp 5 -m 2G " + "-bios \"%s\" -incoming defer " + "-rtc base=3D2020-01-01T00:00:00,clock=3Dvm", firmware); + + qtest_irq_intercept_out_named(to, "/machine/soc/rtc", "sysbus-irq"); + + /* Allow an older QEMU source to exercise migration compatibility */ + if (old_qemu) { + from =3D microchip_icicle_kit_start_ext("QTEST_QEMU_BINARY_OLD", + firmware); + } else { + from =3D microchip_icicle_kit_start_rtc(firmware); + qtest_writel(from, RTC_BASE + RTC_DATETIME_LOWER, 0x23456789); + qtest_writel(from, RTC_BASE + RTC_DATETIME_UPPER, 1); + qtest_writel(from, RTC_BASE + RTC_CONTROL, RTC_UPLOAD); + qtest_writel(from, RTC_BASE + RTC_ALARM_LOWER, 0x2345678b); + qtest_writel(from, RTC_BASE + RTC_ALARM_UPPER, 1); + qtest_writel(from, RTC_BASE + RTC_COMPARE_LOWER, UINT32_MAX); + qtest_writel(from, RTC_BASE + RTC_COMPARE_UPPER, RTC_UPPER_MASK); + qtest_writel(from, RTC_BASE + RTC_MODE, + RTC_WAKEUP_ENABLE | RTC_WAKEUP_CONTINUE); + qtest_writel(from, RTC_BASE + RTC_CONTROL, RTC_ALARM_ON); + qtest_writel(from, RTC_BASE + RTC_CONTROL, RTC_WAKEUP_SET); + qtest_writel(from, RTC_BASE + RTC_PRESCALER, 999999); + } + + unlink(firmware); + + migrate_incoming_qmp(to, "tcp:127.0.0.1:0", NULL, "{}"); + migrate_qmp(from, to, NULL, NULL, "{}"); + wait_for_migration_complete(from); + + if (old_qemu) { + g_assert_cmphex(qtest_readl(to, RTC_BASE + RTC_CONTROL), =3D=3D, + RTC_RUNNING); + g_assert_cmphex(qtest_readl(to, RTC_BASE + RTC_PRESCALER), =3D=3D,= 0); + g_assert_false(qtest_get_irq(to, 0)); + g_assert_false(qtest_get_irq(to, 1)); + } else { + g_assert_cmphex(rtc_read_binary_count(to), =3D=3D, 0x123456789); + g_assert_cmphex(qtest_readl(to, RTC_BASE + RTC_CONTROL) & + (RTC_RUNNING | RTC_ALARM_ON), =3D=3D, + RTC_RUNNING | RTC_ALARM_ON); + g_assert_cmphex(qtest_readl(to, RTC_BASE + RTC_PRESCALER), =3D=3D, + 999999); + g_assert_true(qtest_get_irq(to, 0)); + g_assert_false(qtest_get_irq(to, 1)); + qtest_writel(to, RTC_BASE + RTC_CONTROL, RTC_WAKEUP_CLEAR); + g_assert_false(qtest_get_irq(to, 0)); + qtest_clock_step(to, 2 * NANOSECONDS_PER_SECOND); + g_assert_cmphex(rtc_read_binary_count(to), =3D=3D, 0x12345678b); + g_assert_true(qtest_get_irq(to, 0)); + g_assert_true(qtest_get_irq(to, 1)); + qtest_writel(to, RTC_BASE + RTC_CONTROL, RTC_ALARM_OFF); + g_assert_false(qtest_get_irq(to, 0)); + g_assert_false(qtest_get_irq(to, 1)); + } + + qtest_quit(from); + qtest_quit(to); +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + + qtest_add_func("/mchp_pfsoc_rtc/registers", test_rtc); + qtest_add_func("/mchp_pfsoc_rtc/plic", test_rtc_plic); + qtest_add_func("/mchp_pfsoc_rtc/migration", + test_machine_migration); + + return g_test_run(); +} diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build index 02b5780d78..945c99d014 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -296,7 +296,8 @@ qtests_riscv32 =3D \ qtests_riscv64 =3D ['riscv-csr-test'] + \ (unpack_edk2_blobs ? ['bios-tables-test'] : []) + \ (config_all_devices.has_key('CONFIG_MICROCHIP_PFSOC') ? - ['mchp_pfsoc_l2cc_test'] : []) + \ + ['mchp_pfsoc_l2cc_test', + 'mchp_pfsoc_rtc_test'] : []) + \ (config_all_devices.has_key('CONFIG_IOMMU_TESTDEV') and config_all_devices.has_key('CONFIG_RISCV_IOMMU') ? ['iommu-riscv-test'] : []) + \ @@ -404,6 +405,8 @@ qtests =3D { 'erst-test': files('erst-test.c'), 'ivshmem-test': [rt, '../../contrib/ivshmem-server/ivshmem-server.c'], 'migration-test': test_migration_files + migration_tls_files + migration= _colo_files, + 'mchp_pfsoc_rtc_test': files('migration/migration-qmp.c', + 'migration/migration-util.c'), 'pxe-test': files('boot-sector.c'), 'pnv-xive2-test': files('pnv-xive2-common.c', 'pnv-xive2-flush-sync.c', 'pnv-xive2-nvpg_bar.c'), --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820120; cv=pass; d=zohomail.com; s=zohoarc; b=aoGdinL7kI7wtZKhuWo2EYavVIWhrmypiNLSgA33ee4u1LgJqUOCf+0h/i+GzTiVXLjkqe5NzxunoxHerIk6exZEVsjl0xJXGGZ6ibuE/F4cWGS53uddtAL81AW9ICgo0+Y69GRjZIgjjAMDKDqnZqBHU865P4TGNoMiajMzxYo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820120; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=o2Mkq+5MU0N+5IudU9BUomDRVYRwlkK6b9Enrk3WZW8=; b=CgPnTB3+8KVAp9jYspmd7mHAVJbD7DDpkrFJaN7rKj4MNehZWAVlDjmSnGyUdTvTGsbL800xUVWYbfhH9Q9aSBY3Uyk+5q4+a482E/CUwwUqlgrBaq0cHisV/0crbMr9pBz/BPjZKKOvQ7JnnH/FqFU9MqmjSnLmR14x0UX1mos= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784820120282734.6373497939669; Thu, 23 Jul 2026 08:22:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvDk-00054H-PD; Thu, 23 Jul 2026 11:20:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDI-0004Jd-Qf; Thu, 23 Jul 2026 11:19:58 -0400 Received: from mail-japaneastazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c405::5] helo=TYPPR03CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDE-00084Z-NM; Thu, 23 Jul 2026 11:19:55 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by SEYPR02MB7097.apcprd02.prod.outlook.com (2603:1096:101:1a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.10; Thu, 23 Jul 2026 15:19:39 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:39 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bJ39keiZjsNPOIOY5mim0pFtLBE9g6r4gbg3CMAMmvQ1mbA/vv+cUCCmysfcdMW8bYnye7N9jAZRBpH2zcdJzvXH2oRpYbDmT9Upvb7PAwwOeJLmukLtR62JEit+LRNPonf/UqVuKZpclcTXrR2DZoRxj5wmOLpZ5Tq0ZO5xNtycMS61UsLrKxdgKgU3brNK7krDFMzWiSKXhKGk1BTjCVNqu5bfW0lOxmbLJtKkyls8Ngiw0tHc7HqK1pQIuOzcfi/IqEoxl/on9nA6t3tYkxBjtdzfWh/KxeV/CX6E3NeG+qb9AQImJk0VQ+xnK++y3o4YvIrE3cI89dgmZBIJaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=o2Mkq+5MU0N+5IudU9BUomDRVYRwlkK6b9Enrk3WZW8=; b=Wk3J7nx+jByPPrsibCGWEOn5Jw7siBcoswReW+CShmqF1uEarwE/6TlcBF6ItQB5qGZyg4yggqgs2oamrNSI0ewqeFdpN6QXGDHMbq4XxpMyYbWKPTRKzsqpe5B1V7eLaOrSNu6t0Fw8n8vBHTol9AxIT3xnF3uJJ1c+u9ZdEBB0RY5U2VNRcASnyaIsJQfrDcqjpoy8pWbEbjm1izru3sp44od2FZIAvQTBVogjwhqpTXuCpXkEUVqViUoPs8j2GNuyPR8H87HysgHfYsFOqRrn+hdtFddCkuIQKcTK+LsLkOuF07ZmiFfSCts6brNPopvIKun9CN6T8tmN+Mrg2Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=o2Mkq+5MU0N+5IudU9BUomDRVYRwlkK6b9Enrk3WZW8=; b=QmK7z6t+oSJvBjhZ6iQ7Djt4uTpZPn22iSiaiszI8sVp5ueJE6TZmBYjSaS9O24yrv8K3AD0+GV7GEQD0bqg1QKBbcd4t6BLQ50mmAbQ80acRFYzAo6TSm8tQV6Au3dMATJwaTVMFHjaNi4UGBC1ZFxKRuiGaauubmCw1uTxP7uuBDNQbLE/siO7Jj4zc1X3jo97zqGWDpe6pkibpqbCGKu78HrnGIR0hVFwn1cnfw/fk6FMn2F2O2nMPO5UIKuag9g7buqAWJn3gvg02fr0GVE1SGVlQs1ccnG/H2G46c2DoK6HO8nBIZRED53VS+tSJ/v+CgA/K01sPshww3tbXg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Alistair Francis , Chao Liu , Conor Dooley , Daniel Henrique Barboza , Liu Zhiwei , Palmer Dabbelt , Sebastian Huber , Weiwei Li , qemu-riscv@nongnu.org Subject: [PATCH 19/26] hw/misc: pfsoc: Honor PolarFire service notification requests Date: Thu, 23 Jul 2026 23:18:46 +0800 Message-Id: <20260723151853.2143177-20-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|SEYPR02MB7097:EE_ X-MS-Office365-Filtering-Correlation-Id: 0b88b32c-d6c2-4627-f181-08dee8cdd032 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|376014|366016|23010399003|1800799024|6133799003|22082099003|18002099003|5023799004|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: mReY1vXCemmfhJylUOwzDUeJ3u6cToTSuPymeeLZTTjsqpVukjyDVZtv2qzrORkWFt5wZUpdT8JqeRLQEtJL3jJAz9qIyR/krWVl7LUUUrYuFrjczC87lMyUE3284YK3KoW8hOPFl1xNqN1W+doJg/V9/SHQaQORUnV5z4+BqfxinyABopzYo+K27Jdwx3UMgsIG2PgrwhIUMHd5csnDFf3jSpcHH2rTtouGyNEbI36uW6VVTP/uyIoYh830O7jxh7OhHsMaRFsGg8U0GQBvobUx4L0BGanVwk/xC5EAotwsjzbfY/Nsm5Bw9KSBS1y3c8bhq8J9aJNNHUbmdHVkZ/dbW9RyLFKcyHVflfUmYv8ueHZZJKfLHo8JLWZf/t3oy9/O5dMpTrxOaOauO7pC1sWTOdeVcLZA/VfiTiJ5NMTuBOJ0kowsYjHnOWuPNFjpIdoK3bben7kiE7XIR1dRPOtl6G2y9+1MDsQHTABaB9Cl/mPHaKUC7S5yryVGdoIznS1DTvU3RCqId0aPq2OoJgCi3UF1bfHKQS2QpczvQbyV1WOzCKc4phCLmLckafdotIL6XMMeUsaiukHQ9nCNVah7yn3F/br9eZt7j7UtOSYfePAyWCdyk1OmyftlIMTz+uHKslSvU1LYQSoFvGWJZJhgqp+j/+zDDCsJpsX8WTI= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(376014)(366016)(23010399003)(1800799024)(6133799003)(22082099003)(18002099003)(5023799004)(10067099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Hq5MUnaHJWX2NlCYz0O/7Not3atl7zZxD7ff1yRap0ilqI59EKJ8jP/NlGl6?= =?us-ascii?Q?Dvs0qw7oc6sNqjHGWeSy0lCu120SjDWyTNtK8Y/OmEOxjqWLsxKMRrGBOdTh?= =?us-ascii?Q?GGGTv24RMJvHhOXm7Od1Vo++cmieSIJHNTuyXQdeeuPr/8B4w8L0yxmtMX1t?= =?us-ascii?Q?J46KIyUEAfigyiqWFrJcWz9fRznvHnsBuJxkGifrwWE6PHWEY4sFpN7onL/z?= =?us-ascii?Q?45h10qpOnGeUA84FcoH9K2Q0qi+2VWtFW5kj4v0Bw8KQu8wbOBGMv7Fiulsz?= =?us-ascii?Q?T7cYDXYZlHB64xM/U5wBIJdvqy8JY9XwS6hovgHxTSOz+Szu/XEB9Nnkr8Ay?= =?us-ascii?Q?VnXtVDOsQrk9fSvi5SPlW1CUjLyDb4SjTPRtqZPZifkUGw6NsViGtU4bJLKu?= =?us-ascii?Q?47wzkoT61ny6ZVb+c1nMaOWr0Vt6SVZUSbqynv6vQXrMIZZgZz8VSe8nxSBX?= =?us-ascii?Q?4IzuIKSz8Vpbgr8bjG9rhGFoAyJL0cx3Q7tc1gsJxnWeE9eBgHv/IN0H6h/g?= =?us-ascii?Q?erDSMaWML0cTA3kDRCP3snhKb4Q6om3zlV4xPkojwndlOwh993Bvw6OAN+9r?= =?us-ascii?Q?4LDwUcK7mPImAklY2U8kW44YJm80RRpBvmQDxO5xBEhOImMxMEauN3FjcYn6?= =?us-ascii?Q?t9x1T+qUCM3bHqorrXDvGDFCTA2yI1nfQcFYq621nuw4yxeNoxcXpz5XYH3b?= =?us-ascii?Q?2I1YOt1kAU7mN+l0K1i9wlZAK5L83H3XknBpodbR/jP0ZBaAKi4lIZnYeYXm?= =?us-ascii?Q?bEuqMPKW4fwESD3Ib4Rad5v4m2m12o9xKMRZ8Rx2KbXEMYSjgM9FQPWuIV2S?= =?us-ascii?Q?gTQIPXOOiWCPeg2EWylc0Kab4ARC4cLODyUp5Yn+WJ1HRYjIfZZMGqOoPL7B?= =?us-ascii?Q?pe3XG0p3SjPp3lZHbhhba+F3me1bfX72m+eGSFCphCXfLGbe9c6q/OfSfqkb?= =?us-ascii?Q?iCGQfPXXbPY0/wzrcKFjFBTdjw5BYa641EbRBgKA7MnM+GrKPLof7f/gw4cq?= =?us-ascii?Q?UB8yd/27aJA7g5GXas2Qldccl0IbcpII/5x0/xEMsTUwTS1/8wp8TDaACwXl?= =?us-ascii?Q?rzjf45D8FOK/oK2plp4iSkp+RHBqIq44krbGDRY/5IRgyXIKrsSDDHcHcjzR?= =?us-ascii?Q?AgiOuPJljBrZFptSigbcvwjVoSSBFfa7Cb4TmEpFk3mEPwvazqdKwmVFQBsI?= =?us-ascii?Q?u3qd4WLqc5fV7xbM7ZAWayHUNcM+Ee/lHksgDq6xlfzdDH39VSLjfnJ69PO4?= =?us-ascii?Q?WpHuG9VblY8eliO9ihvJX9V1YUsA7KS9hGH9X9Rrwb0cQTrZOb+Dp5slIyMu?= =?us-ascii?Q?L+ov+xBZdzniyipTAsCDG3vYKAYiaEtNzq8UVDgal5rvPWR5GdV2whTpk+MY?= =?us-ascii?Q?FY7WFmARXl1gpNV/dPvK+pFXVxzeHuoEALiZLBTftnxSbbntrcq9q+uALZMv?= =?us-ascii?Q?EKaIUnlUAPGzoDmahmF2PCba+gvr9oL5uhBg7guqry5CjcOT6bSNTqdBu5Om?= =?us-ascii?Q?FN/6KAsGpT4g4//BPGzQtKRiaZ8MyiMSLTLnoHd0H/3HCzEusAYi8fnwdvHT?= =?us-ascii?Q?g4FXlW5HvTtwf7U8Ip0oC1TKZZ7AauiC1QnRgObIe/itaHfFWYTeeaTI2rth?= =?us-ascii?Q?IwhXoWCr/VE3lMrFtBjMdrW9TtDrwl4BVASGc+dEr+kCHoJcI5SwlV+cD892?= =?us-ascii?Q?xPYWX7v1rgaQpv3JlKJ9JjrWwD1jBmlSbNLyj7x5sa9PfPtCW0znF8obOyW+?= =?us-ascii?Q?8OIYu3JkBWLjTKJHsvLjQ2LpexYOBAA=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0b88b32c-d6c2-4627-f181-08dee8cdd032 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:39.2830 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ciGIf7EV/dxoqbqCPlTCLNOylZSHDVBV0NDocf7JHBlB2oAQYkwfbS/wkF+GivYxl7J//c7Y3CGCnA1+KCDD6qAsC5ADfPm7zQGPjqmWs0g= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR02MB7097 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c405::5; envelope-from=bin.meng@processmission.com; helo=TYPPR03CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820122086158500 Content-Type: text/plain; charset="utf-8" Polling firmware requests system services without requesting an interrupt. The old model ignored this distinction: 1. HSS requests the serial number with REQUEST set and NOTIFY clear. 2. QEMU synchronously fills the mailbox and clears REQUEST. 3. QEMU incorrectly asserts PLIC source 96. 4. HSS polls REQUEST and neither waits for nor handles the interrupt. 5. PLIC source 96 remains pending. 6. Linux registers the MPFS mailbox driver. 7. The stale interrupt immediately enters mpfs_mbox_inbox_isr(). 8. Linux has not submitted a request or installed its response pointer. 9. The ISR dereferences that null pointer and faults near address 0x10. Honor SERVICES_CR.NOTIFY, let IOSCB own the pending interrupt state, and route the SYSREG acknowledgement through an IOSCB clear input. Signed-off-by: Bin Meng --- include/hw/misc/mchp_pfsoc_ioscb.h | 2 ++ hw/misc/mchp_pfsoc_ioscb.c | 39 +++++++++++++++++++++++++++--- hw/misc/mchp_pfsoc_sysreg.c | 9 ++++++- hw/riscv/microchip_pfsoc.c | 6 ++--- 4 files changed, 49 insertions(+), 7 deletions(-) diff --git a/include/hw/misc/mchp_pfsoc_ioscb.h b/include/hw/misc/mchp_pfso= c_ioscb.h index fd31427304..e39d995b64 100644 --- a/include/hw/misc/mchp_pfsoc_ioscb.h +++ b/include/hw/misc/mchp_pfsoc_ioscb.h @@ -26,6 +26,7 @@ #include "hw/core/sysbus.h" =20 #define MCHP_PFSOC_IOSCB_MAILBOX_SIZE 0x1000 +#define MCHP_PFSOC_IOSCB_IRQ_CLEAR "irq-clear" =20 typedef struct MchpPfSoCIoscbState { SysBusDevice parent; @@ -53,6 +54,7 @@ typedef struct MchpPfSoCIoscbState { uint32_t services_sr; uint8_t mailbox_data[MCHP_PFSOC_IOSCB_MAILBOX_SIZE]; char *serial_number; + bool irq_pending; qemu_irq irq; } MchpPfSoCIoscbState; =20 diff --git a/hw/misc/mchp_pfsoc_ioscb.c b/hw/misc/mchp_pfsoc_ioscb.c index 7c82b55986..ccc2201b7a 100644 --- a/hw/misc/mchp_pfsoc_ioscb.c +++ b/hw/misc/mchp_pfsoc_ioscb.c @@ -192,12 +192,13 @@ static const MemoryRegionOps mchp_pfsoc_io_calib_ddr_= ops =3D { =20 #define SERVICES_CR 0x50 #define SERVICES_CR_REQUEST BIT(0) +#define SERVICES_CR_NOTIFY BIT(3) #define SERVICES_CR_COMMAND_SHIFT 16 #define SERVICES_CR_COMMAND_WIDTH 8 #define SERVICES_CR_COMMAND_MASK \ MAKE_64BIT_MASK(SERVICES_CR_COMMAND_SHIFT, SERVICES_CR_COMMAND_WID= TH) #define SERVICES_CR_MASK \ - (SERVICES_CR_REQUEST | SERVICES_CR_COMMAND_MASK) + (SERVICES_CR_REQUEST | SERVICES_CR_NOTIFY | SERVICES_CR_COMMAND_MA= SK) #define SERVICES_SR 0x54 #define SERVICES_SR_STATUS_SHIFT 16 #define SERVICES_COMMAND_SERIAL_NUMBER 0 @@ -205,6 +206,21 @@ static const MemoryRegionOps mchp_pfsoc_io_calib_ddr_o= ps =3D { #define SERVICES_STATUS_FAILED 1 #define SERVICES_MAILBOX_RESPONSE_OFFSET 0 =20 +static void mchp_pfsoc_ioscb_update_irq(MchpPfSoCIoscbState *s) +{ + qemu_set_irq(s->irq, s->irq_pending); +} + +static void mchp_pfsoc_ioscb_clear_irq(void *opaque, int n, int level) +{ + MchpPfSoCIoscbState *s =3D opaque; + + if (level) { + s->irq_pending =3D false; + mchp_pfsoc_ioscb_update_irq(s); + } +} + static void services_cr_write(MchpPfSoCIoscbState *s, uint32_t value) { uint32_t command; @@ -236,7 +252,15 @@ static void services_cr_write(MchpPfSoCIoscbState *s, = uint32_t value) } =20 s->services_sr =3D status << SERVICES_SR_STATUS_SHIFT; - qemu_irq_raise(s->irq); + /* + * HSS and U-Boot submit polling requests with REQUEST set and NOTIFY + * clear, then poll REQUEST/BUSY for completion. Linux sets both bits + * and expects completion through PLIC source 96. + */ + if (value & SERVICES_CR_NOTIFY) { + s->irq_pending =3D true; + mchp_pfsoc_ioscb_update_irq(s); + } } =20 static uint64_t mchp_pfsoc_ctrl_read(void *opaque, hwaddr offset, @@ -325,7 +349,8 @@ static void mchp_pfsoc_ioscb_reset(DeviceState *dev) s->services_cr =3D 0; s->services_sr =3D 0; memset(s->mailbox_data, 0, sizeof(s->mailbox_data)); - qemu_irq_lower(s->irq); + s->irq_pending =3D false; + mchp_pfsoc_ioscb_update_irq(s); } =20 static const Property mchp_pfsoc_ioscb_properties[] =3D { @@ -333,6 +358,13 @@ static const Property mchp_pfsoc_ioscb_properties[] = =3D { MchpPfSoCIoscbState, serial_number), }; =20 +static void mchp_pfsoc_ioscb_init(Object *obj) +{ + /* Accept service interrupt acknowledgements from SYSREG MESSAGE_INT */ + qdev_init_gpio_in_named(DEVICE(obj), mchp_pfsoc_ioscb_clear_irq, + MCHP_PFSOC_IOSCB_IRQ_CLEAR, 1); +} + static void mchp_pfsoc_ioscb_realize(DeviceState *dev, Error **errp) { MchpPfSoCIoscbState *s =3D MCHP_PFSOC_IOSCB(dev); @@ -456,6 +488,7 @@ static const TypeInfo mchp_pfsoc_ioscb_info =3D { .name =3D TYPE_MCHP_PFSOC_IOSCB, .parent =3D TYPE_SYS_BUS_DEVICE, .instance_size =3D sizeof(MchpPfSoCIoscbState), + .instance_init =3D mchp_pfsoc_ioscb_init, .class_init =3D mchp_pfsoc_ioscb_class_init, }; =20 diff --git a/hw/misc/mchp_pfsoc_sysreg.c b/hw/misc/mchp_pfsoc_sysreg.c index 1d9154280a..899b485da6 100644 --- a/hw/misc/mchp_pfsoc_sysreg.c +++ b/hw/misc/mchp_pfsoc_sysreg.c @@ -77,7 +77,14 @@ static void mchp_pfsoc_sysreg_write(void *opaque, hwaddr= offset, } break; case MESSAGE_INT: - qemu_irq_lower(s->irq); + /* + * A MESSAGE_INT write is an acknowledgement event, not a level th= at + * remains asserted. Model it as an active-high pulse. The rising = edge + * invokes IOSCB's irq-clear input with level 1, which clears + * irq_pending and lowers PLIC source 96. The falling edge invokes= the + * input with level 0 and is ignored. + */ + qemu_irq_pulse(s->irq); break; default: qemu_log_mask(LOG_UNIMP, "%s: unimplemented device write " diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c index 63658fbeb0..f348de6fd4 100644 --- a/hw/riscv/microchip_pfsoc.c +++ b/hw/riscv/microchip_pfsoc.c @@ -333,9 +333,6 @@ static void microchip_pfsoc_soc_realize(DeviceState *de= v, Error **errp) sysbus_realize(SYS_BUS_DEVICE(&s->sysreg), errp); sysbus_mmio_map(SYS_BUS_DEVICE(&s->sysreg), 0, memmap[MICROCHIP_PFSOC_SYSREG].base); - sysbus_connect_irq(SYS_BUS_DEVICE(&s->sysreg), 0, - qdev_get_gpio_in(DEVICE(s->plic), - MICROCHIP_PFSOC_MAILBOX_IRQ)); =20 /* AXISW */ create_unimplemented_device("microchip.pfsoc.axisw", @@ -489,6 +486,9 @@ static void microchip_pfsoc_soc_realize(DeviceState *de= v, Error **errp) sysbus_connect_irq(SYS_BUS_DEVICE(&s->ioscb), 0, qdev_get_gpio_in(DEVICE(s->plic), MICROCHIP_PFSOC_MAILBOX_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(&s->sysreg), 0, + qdev_get_gpio_in_named(DEVICE(&s->ioscb), + MCHP_PFSOC_IOSCB_IRQ_CLEAR, 0)); =20 /* FPGA Fabric */ create_unimplemented_device("microchip.pfsoc.fabricfic3", --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820275; cv=pass; d=zohomail.com; s=zohoarc; b=HUzoII0C0IcANZ8y8N5ttJQBd3B1QOlwVkePylEhVHhb7h2ohW32or246Hcz0d2xYIPXSaentU1AdpeELX+IfMzNWJyAxiHoloQO0eL7xYQRVkU2oRKfHGxqYimUlP8FwIfJBRoc2UZIKqK3HhqAPTjds8Ka+UpF3ox53qNT1aw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820275; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=RhfcHWlRoqwl5tzBmG4h1hrmaVqbsctsfi2knzV6aoo=; b=YbT1jxkQOYVNJ/P0V/enqciTUS12V0sjUFjmrzMJD450hqF4716uUz7x+fAoMjGaJ+J34nT+E/Ykqqux4HonlR2579FnBH6JBqSpYJLAmGoHUeAkay7Thtcz8ySUJsPz7JMsNp6wzEJn9nJDSXumchkUi7RFzEXjtfBfR1WxpZo= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784820275085850.9480038429601; Thu, 23 Jul 2026 08:24:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvDj-0004vY-HY; Thu, 23 Jul 2026 11:20:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDK-0004LQ-Qk; Thu, 23 Jul 2026 11:20:00 -0400 Received: from mail-koreacentralazlp170130006.outbound.protection.outlook.com ([2a01:111:f403:c40f::6] helo=SEYPR02CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDH-00085x-0o; Thu, 23 Jul 2026 11:19:57 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by SEYPR02MB7097.apcprd02.prod.outlook.com (2603:1096:101:1a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.10; Thu, 23 Jul 2026 15:19:41 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kD3MgIYzVzWardmPpCbnkZuLHHo0VU59vmLQRPOUabx0A7WpyKK7aAtbrn60nm9FIhZoiIKlUrrUsVSTTzzdMqcK60gvAPjLtJYCbd9yKhHq5bV7hNageajbzKSTBjDDhdjtw/7yZpdQPQU6U8Gi87bwGDYoJp9IMRBTNm+fzZgnJ/lBoNcFwgpJCAJEfCd1WCAnpD+PEdhgCBAW6BlgAiCJuC1pqa6mRfQNLa8wJWVlrr8pxx9FZ9IjvnF7E7Le9HRZvRXCkRWccMZ7QWT5oziQaTEQ2R1VoYbq042+v8Nm0KN1IkfCNHH66GfIskVciAAG1hBl5SFXr1Gntt+UEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RhfcHWlRoqwl5tzBmG4h1hrmaVqbsctsfi2knzV6aoo=; b=h7N6vhXEY7979W+G5fuBgFXmI5XAnnOXYP5o3BLI/42cK1DVyR6PKY5ygw1s2j+jvQwW1lTXu0p8vtXTsVpJZG1UoSSgqXrUClsXkF2v1tINJPsjbq5dMWqyXvsUhucleY8KbqH3sjLm+eQMVkS/OqxQazI82SjKGNT73HK7/4I/ub+bS1N5V8VK3x/Ni7pjyZe/c4Lsg7Wd0VSfEu+x5gb7RFJYTsbVqAEX9rZg3blQI3I+45fcZp7wPzWW2Zv1921gIdboBa+vZ/vwNno2COoNsw5aMLy2Sy5QDqS+RVepLoF8yxRIdUGJYI6ysblnTRz5NBaK0plcDLc7E3ZkUg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RhfcHWlRoqwl5tzBmG4h1hrmaVqbsctsfi2knzV6aoo=; b=VYpRuHLTtvlU0Ljb2VXenBgrCTFiPYFtkProhwU2BFxFylkxRIZC0mla76a/uLkVP6cHJw/B2DG681nSY574S4L7/MROlUjsHJb+vDdXZHk2oFsNp4VIeRMSoPOvt1itb4nh7BEuSSQNL18HjW2vAKOGRTPBtOoAKPsuhpqzwNCP0tG3knHnaG4Tm9PIfRjvKnxOvWPPsGz76QLngT766XLUxIT678sm3ADpM7i+vmHNEPQ9Bdw+FNWPVdhcWWnA6OsixkLvBbDuEffCvpvyK1kf6pCJpI9Qv1viXwrCPssJw0juOhWHYuXqV7cn4WYLEKXNLt5mXf3iLLSqPHj8RA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Alistair Francis , Chao Liu , Conor Dooley , Daniel Henrique Barboza , Liu Zhiwei , Palmer Dabbelt , Sebastian Huber , Weiwei Li , qemu-riscv@nongnu.org Subject: [PATCH 20/26] hw/riscv: pfsoc: Correct PolarFire SoC DDR aliases Date: Thu, 23 Jul 2026 23:18:47 +0800 Message-Id: <20260723151853.2143177-21-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|SEYPR02MB7097:EE_ X-MS-Office365-Filtering-Correlation-Id: af8ebccf-eb05-45ac-86b6-08dee8cdd149 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|376014|366016|23010399003|1800799024|22082099003|18002099003|5023799004|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: OuYWk1KvqNpPMPmqIgpZ9IDqQo8MD+92+AqCjRFhUJ7tL+AqKkX4nc7o/yJZw7qyvGrZUBgYE9H6pvz/6mzayUA7yXt5WaOaf1y9vGWgwIWnurN9X8HPkB4+PiO8PQGE4Q1vEoC3rdLgeSOPk7QHYZ02O48Ycn5jrrt3sNRoH9aSuq2cxsZruisK1b+ORVlHJlghsDDxv7u9xEHjH86Pk7tNVoeVbjBoZcDfQdbRTu9a+Xb2uWryTgM2WkoYd5KHq/oWwuKywOJgVOzhjqY9njgm8UWxDwYhKRkJ/UWU0Ip5XFcyn/h4udUvH8tyihTG5a59L34xfbYjW0spvkVrBF3iiNpHv7jv0izP+yASzPOyIX0zX7CqVoYMrnaeC0iTkkmsvHEotr5T9sWeb/IRySuzDKlwcXEERArB6Y0WnmsuEnGkEP8RglJv6FYK2nYJUTvmgYL7tETEz0xhprTariZRPZYEtKhaE1ZrNN2dhFeyvCoIN/G4p5BOANN3rrP8lFieKx8qrizuNrte/KhAQt7JL8getKUFE+elupGa45ERoBGXG5rPb86O2EBs/AngQgUM13aOVjc8CUT9pyqR6DEyusHFkaBMafcA5/bcJ3KxWHI/exqbAWu+setl7QzCLPZcGm49izgqzEjSsZDmN/RYmAeBG+KJV2a/p1aRZ5Q= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(376014)(366016)(23010399003)(1800799024)(22082099003)(18002099003)(5023799004)(10067099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Y/fkgkboXFrzwLKNr9Vt0S2S5PSpcDYyoaO5pY8RlZrK7zm4XAIJnSTDEgbI?= =?us-ascii?Q?pUct94WMfElvwEsVGtWdApZa3jrTYCy2cwF5pKSykbRX5n4VQ6Q23uAyccGX?= =?us-ascii?Q?6dBsvJpUgZjEVTAXjYmLgxGimEqtsbn8+ogr1XPdvp+Eg23K3jF+jF+xcblo?= =?us-ascii?Q?NjrzAPTqLEri4wbXnysaJLWgJgIt/ikO1qjgNeKoOhpQG/X7ju67+UZWjtbD?= =?us-ascii?Q?DaEeqLfFwQAFXhYyVLq33zOpgMjR7Wuy2FgX7unuvzXd48/CmNXQy56hS2u6?= =?us-ascii?Q?pHqwbEXZ6fEF8lT5RqSph2aVHkijfWVffsNT159TYP2w96fe5T6CIbBUj36O?= =?us-ascii?Q?+yKp501MThpf6nWOD3ha3fm5xFuxZbLphzK8LUX/RGVvsReHftz0hZkDtye9?= =?us-ascii?Q?Hs8FoeRuLBAGBIIHucfVDkAcfICTjNMzOzwBkao//fs6b8Fphd/jhLbhofSd?= =?us-ascii?Q?e9kaD1ZGvdNDXux7F7fqlce96XEyFmaGPtpFz/UfI8vmdNY0P5CYDVH3P1rw?= =?us-ascii?Q?kGTjU9VH7fB2a/8VPt4SU7pZDJ2OxFxvSdIHXLnnFlqFCk/ZSyVrA6otNfY9?= =?us-ascii?Q?ciJ2Xmp4Eif32WR3CENB69HaM/P/PhCkhS8l3UNtbzefTwdMcdc35/50OGiR?= =?us-ascii?Q?nqzXzpbbrRyFkKnA722Ma9fJqaw2hlVCWIHCvmgRDWbFonvg95yvJHBpCMMI?= =?us-ascii?Q?gPfZOoxxw1+m/jh5r1h9F342Z0jx+geHzGVAefjJffUFkR6yiMLc78Zx0DuO?= =?us-ascii?Q?rd2ffahUaJv2+VfusmLfmZw5G7Ao5B8SBA3m16JRUrxf9G00OMc06C/G2BO9?= =?us-ascii?Q?G9GElJOg5g/RA4xpnKyFrDQAUPebPAjw+vdcuGtOUyCdmX04wjMM4tdrCd/N?= =?us-ascii?Q?Ftlw+u3lGkcNV5eKqS+wapMtRe/2YPXJzJOBM8TjJhPHotBjDaKL8xk+lkqF?= =?us-ascii?Q?yd4irLDxoY/gmLzBag5Fv0/VZBfWy7reUQZfXNcHG0XarluweFykcKJz6c0g?= =?us-ascii?Q?jX37hJ7JQGfpVELzUmTTkIoJuxeaqChTorQT9aBPU/T+ETkg4CAgzhnYmtK3?= =?us-ascii?Q?U7lHWTVXef/F5SWOrKDobr4SK0F1Ispdt06/XF/MuMSb7ASFwTdupyGMkK5e?= =?us-ascii?Q?7KTUJgatpE2qkJb/bn3egrtiuSyhCdoZ+KFwhxLTmKFTMz99W/BNsfJhTfcB?= =?us-ascii?Q?IsMsTd+8mwivZ4YKD5tKIjJSeXRIletXP0NnTX5WBaB+hScBcgaWN//Mgm2J?= =?us-ascii?Q?ZyFy8EtKrlv9o1s/B1yI3XNaI1VZX/4/GFtiOf15OKemUl4BIleZjXp/7hvV?= =?us-ascii?Q?IGwRxHsOOkmhWNwQQARLYoW6jQoMrH8HN0cRspI0tuKklDgMyQxg9RHR1N9s?= =?us-ascii?Q?OmPP+ch1EibxT/XKnJd95b+EdwWnPgphMvuw7OMON3NTfY1jk4siUGEz3R63?= =?us-ascii?Q?6Mm5dmUH2a8DEDx6OKLRd59yr88Weg1IURDyOqSPkiitpLLhoBpZ5k2dDuWj?= =?us-ascii?Q?Abb82y6BLtYvQ+RwB9KcidF2YDeT7j9HXIZ4fm+YR6KYaLIk3j32wh/DsKBx?= =?us-ascii?Q?+YurnvzbL4k1lxTxxS3RvZpBH8ls5kxWHbW5GOm9ey+yjUmEPtCbe+OpSBJ6?= =?us-ascii?Q?nKQvsz52BMn/WPtipSTyZGlGbwHFNUkn+HejKD6r+GcjzazyS/Ko0UAVo08r?= =?us-ascii?Q?0AHgYADLPpM9yhXM6kB7bdTk8vZE4Cw4zxiKA3+zn03ROR3xCVwcIUE9Qvrc?= =?us-ascii?Q?9FgJ8IhEgids8TlqlP09C6ApqjNdJP0=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: af8ebccf-eb05-45ac-86b6-08dee8cdd149 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:41.2097 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Soz1vNoWXhOAOd0bKcCgH9fwyZ6egStLHVlcCMdrBQUtoj9YnfTaxRnN3YSS2OG8bU4w131EC7WVcIKVsCs2IvAQaLCIIXwIo4y7+sNTBg4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR02MB7097 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c40f::6; envelope-from=bin.meng@processmission.com; helo=SEYPR02CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820277174158500 Content-Type: text/plain; charset="utf-8" The 64-bit cached and non-cached windows alias the complete physical DDR from offset zero. Treating them as only the portion above 1 GiB leaves valid Icicle Kit memory nodes unbacked with the board's 2 GiB. Map both high windows over the full machine RAM. Signed-off-by: Bin Meng --- hw/riscv/microchip_pfsoc.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c index f348de6fd4..a2fbc89222 100644 --- a/hw/riscv/microchip_pfsoc.c +++ b/hw/riscv/microchip_pfsoc.c @@ -570,15 +570,27 @@ static void microchip_icicle_kit_machine_init(Machine= State *machine) TYPE_MICROCHIP_PFSOC); qdev_realize(DEVICE(&s->soc), NULL, &error_fatal); =20 - /* Split RAM into low and high regions using aliases to machine->ram */ + /* + * The four CPU-visible windows alias the same physical DDR from offset + * zero. For the Icicle Kit's 2 GiB of DDR, they map as follows: + * + * CPU address Attribute Visible size DDR range + * 0x0080000000 32-bit cached 1 GiB [0, 1 GiB) + * 0x00c0000000 32-bit non-cached 1 GiB [0, 1 GiB) + * 0x1000000000 64-bit cached 2 GiB [0, 2 GiB) + * 0x1400000000 64-bit non-cached 2 GiB [0, 2 GiB) + * + * "Low" and "high" describe the CPU address windows, not the lower and + * upper portions of physical DDR. + */ mem_low_size =3D memmap[MICROCHIP_PFSOC_DRAM_LO].size; - mem_high_size =3D machine->ram_size - mem_low_size; + mem_high_size =3D machine->ram_size; memory_region_init_alias(mem_low, NULL, "microchip.icicle.kit.ram_low", machine->ram, 0, mem_low_size); memory_region_init_alias(mem_high, NULL, "microchip.icicle.kit.ram_high", machine->ram, - mem_low_size, mem_high_size); + 0, mem_high_size); =20 /* Register RAM */ memory_region_add_subregion(system_memory, --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820317; cv=pass; d=zohomail.com; s=zohoarc; b=jbqC8cxM2RcA8whZHB1EfVuF+19lexaHKnJ+DYrmBHJkCJQeutn/NQ5WaWkU23mc7dzoljexWMCyomsppIHuaNgkb9Y27Ug7h58K+vmif2Uedf8YCNcXdf8CvXmfECS+KpbqKwexF6a+7czH+S5tklVa6iMPGtGBXBP/j5O5pTg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820317; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xVxG9LusGwObsmg1FgHMpBS+nQpGUFdg75hulxmQJsQ=; b=XMR6OGUNi9hnQ5g8JiSxpKpnumZB2N5DjvK3l9VCiT7mSZWDa/mPf4S10k6dVCv/LEurEfWwyU+sBzMtGxboWW5vl4VfMNQpQi08lZQOXHS4Z81JgENFhMAYCF3PD1JZMa7cZOpm++fXR8YB4rtNEbhwVOKGcEOJ11Br7yzjdk8= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784820317134304.9769939153092; Thu, 23 Jul 2026 08:25:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvDn-0005HO-9x; Thu, 23 Jul 2026 11:20:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDN-0004NT-1b; Thu, 23 Jul 2026 11:20:02 -0400 Received: from mail-japaneastazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c405::5] helo=TYPPR03CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDL-00084Z-9g; Thu, 23 Jul 2026 11:20:00 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by SEYPR02MB7097.apcprd02.prod.outlook.com (2603:1096:101:1a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.10; Thu, 23 Jul 2026 15:19:43 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:43 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xkAvaA4IujZbfEEHBfULHim//3Y1mEBiETLVPf9KH2eZVZ4FEC3i6LDmCA1u8gIiLCYMyWvQKBTgcXFvkY/4kHSt0tYiA1lPCF7EhV1zS/8av/Cmj79R2EaHiHTa2esurhbwr7i650JlNxV3/eqVPwVqzpUD1hPV878lZeWuD+2l95o4DymA9EPJe/T+MUhiIYWDiibbhQ/iJ/CeGAwWKCnu2MPelBU2Cp9nobPmnfrazG2obh5cY3wpBfLCOhh3ymK7kyomqeZYPnXiG0kJLhK4tBUb2TiB1+9bXai1ZzXZoPt93JSQa0Pg6SQgaxr+uDgUSXMAqv0rQX1GjAWv6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=xVxG9LusGwObsmg1FgHMpBS+nQpGUFdg75hulxmQJsQ=; b=M/MDGyVg5IEE6wGg/J0F7XYe8uheFa1dsrqnpOfR03k/y85M3mmK0WnsDJEWZ4XB8Fg11RQ/HSlzakf9pzSlfwq5B8w6+8rtm1o4TrAHUj/LtO5hBXNSx7qlD7wcyExqhIzKfJnEOE/Soy9SFfc2UO18h/b03ZgDnRNJW3YV60mCuSkITMmIS/0YI3fP6BzfKBOu2vlciv29nd0w8oNoQe67+4nsU630VXe5Vl4P6pcphiNUaS5iAVcRporDo8EuoqKMTn/IoDYB9c0n+oeDch+PeVrD0iJGretbyIM99GozffV2D7dvEOVqYDIS/8qUZ9UhDgGY9gOZbqrkAWFB/Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xVxG9LusGwObsmg1FgHMpBS+nQpGUFdg75hulxmQJsQ=; b=qZeqomNHseDwH89Sz8UJtxXNTTFq2qKyddlv3WWoPNjTWoyyObaoUUqqSdWjhKPlIGkga+7SN9+Iz14Ip3VR+Vk+Lio/Ps+POlJb7R+4OT2DC5cD/TxW6TK29j6qY5n+addaTZmozSrYXFfP//OD7SAxqkTLqku3mPkZeYxweAg35oTwZTy++VPvQ6bYWEMdr8+kXAhOxYmzSN6ehrOr/c5Vd54VUoElXw4sgA3AmHL0f2dwlp0D2z3lS9pw1tioH7VZfKz9EU5DKCrq0hy1/CB4uxFzPPDXTwKxnBOo3+2xvlxPytgw75blcqPqzU14xdChGbh3nyGmwtr14njeiA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Alistair Francis , Chao Liu , Conor Dooley , Daniel Henrique Barboza , Liu Zhiwei , Palmer Dabbelt , Pierrick Bouvier , Sebastian Huber , Weiwei Li , qemu-riscv@nongnu.org Subject: [PATCH 21/26] hw/riscv: pfsoc: Fix Icicle Kit RAM size at 2 GiB Date: Thu, 23 Jul 2026 23:18:48 +0800 Message-Id: <20260723151853.2143177-22-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|SEYPR02MB7097:EE_ X-MS-Office365-Filtering-Correlation-Id: 1372d0a7-24ba-4d8d-a68a-08dee8cdd264 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|7416014|34096008|376014|366016|23010399003|1800799024|6133799003|22082099003|18002099003|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: O7AuEI8A9lvD1eJNm7w2Ci3pAIDkgTPARpkeaupcFeqDjSJB3+Jcwy8OdI4p+mTC6sR8INUr8s8ow+Wl5JKrdBDT+CqF2qOFXYbCf5J6fxRaDsbM6vsBK6s/qiyGUpDiILl8KlhRqcktkJAd65hyCvdcQeecgqRAye4hGgObRTApL8pa3UGDFpiS8aPY3eQwVUX0FHdlRLA7L4ompmkUay11e8sg80Sh9644tf9HJHAhthYvZnTg+kkxY52wBf1xNRjSRgb+/LZyV2JDQKR124ycgA4kMNWk9NhhiMto/5KRb9o5vzqD0txhpY77psLhbLAgShivZnCe3TvICpvGIfIoZ9AnROV0SP6P2gN+SRleUq3S8SCdPsQzxA/EznbtaZxGEYloqPQpYZ/ul8B0JJQnHYRJMO85IA6MLxQBIWoAA6wnn3DIQeSJV33q5dxK/Z468nj0lXia3kXU8UsZ+v6rGMwH8Jn5ZF21Ch+hTzKpOs2CzHihj8lARfoZRELmwsYI5RrRPThPIRsY++nTklbjYq31vHAxfnsU7+mYq4ROvW4zKh4LHv0Ef0YXXTS0r+FHup8aExcohhO1VH7qC59lXBf4vGbFDiKgkjU8wNxa+PWdqnbSdxPMHw1askP9nCqWD9SJVJVJRAH0i6Om3Aiqf3eTMAVn4JiNtnNjXao= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(34096008)(376014)(366016)(23010399003)(1800799024)(6133799003)(22082099003)(18002099003)(10067099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?gGlSH/r6ubRwFExGNs6M8f+HuCz4LfOBBB2q6VP+f03gqLvKh5C6rBAOAcVu?= =?us-ascii?Q?r7x5W5kY6LOtU1IJ0jV88lWvV08L8oyI/e0W9KZ7OT/cgdXn2UMHjkRWqONB?= =?us-ascii?Q?Jom81BCj3Pr2BaOhdPGIj0LyhSTGGkoE/mpGk6O+NlyWqvvU4p5iP0YJ9OLL?= =?us-ascii?Q?z0G57ePdzh38qyoNbYboCSKlilvStZJiNxTT/1gX6UbqkemEK5ih6w0itZ59?= =?us-ascii?Q?qROaNkKXJetqS0Vzlltxt31jg6VtH2IIAmSKyJ4+ng/20HbkVy0DjBoTq6R5?= =?us-ascii?Q?wv2Gr8Toulo7wPL3EDS7erUI7+Zx8nv8XY+nVX/Zk2D2upUFSaPS4bQUupwo?= =?us-ascii?Q?MTLgxSWLYCjW1ldF57Ym76uHbAt66/3jpN9HF+2GxORMogkevPjK4NJHabmZ?= =?us-ascii?Q?wkwyf6G/EYPHu0rdhzmllcsPikx2MMzxt12m+1gSKyKbs1PZ4ILra3atexS/?= =?us-ascii?Q?Fx4RRg52Hd79XsmTpgm9QmvpxIWG7ms/2O2SKslQJrRfzVRPPg/ZscCsvotK?= =?us-ascii?Q?qsv3EwB10GYR20rhY7ntI4FWxbvl5HCfOan+Wm/VMWpY5oIPNea4SQarvuFd?= =?us-ascii?Q?g5QWKmUgSq9p3AvOVqszAxU2On4BcxIrjJfwtc/k3kbUE0n5LAwpWM2olrIG?= =?us-ascii?Q?83x/etc+cMMlk77HMkCbjwnMNg/DeMnSDcuL8RE7Np34+cHC7Nvt8wX//O/7?= =?us-ascii?Q?2GBGZuEfW2EjKOZdfOkOJOSnXUrpoweoHkg0w1Z71YzrwwztjJVsV4eRJztb?= =?us-ascii?Q?CFdy48YS6g/ofv4e+CXqjyLbkmBo6SfprbFxxIVcUFogwMhIj8SR3WXDovSc?= =?us-ascii?Q?IawKs0vkgNf9BrMUiHN+Sq3c7tdFJeS9kUV46nc4KQ/eTA/Y+8Ce6C1UnXOj?= =?us-ascii?Q?UtL4jRGeWz1K+aQ8TQUSri4rIcPkxwjOxJVh9Egf7v91Z090Bh6B5xaePbGi?= =?us-ascii?Q?QDXmBEq36slX9iQZq+YWzJatrPYaUhLAstUhvH2Ykcb0aOjJLi526x2r8vCN?= =?us-ascii?Q?VnnfxwKKWVkMb5QcA9AFpPBnPpRCjLdjHn7Qv3uXjbPvlDHGGvFhfgcC0ODc?= =?us-ascii?Q?2jdSuAA7FqMWTnyYIXWO+m8pMBe2oPCNXvOZuADB3x3YZKTpBzKFxym4Jfj3?= =?us-ascii?Q?Omfox278jUHCr84Sl5YRzZXYwLJQRdh4/C1ESKi7hXfETXJwR4T+k/Hm5koA?= =?us-ascii?Q?eZFlgai+e/f3aBjCdi9IJ0fTdnxCrGFRZquD86/0BGwuYyoAOWmCigUO6GYV?= =?us-ascii?Q?jRuQLGBfRWfXvUkTcKAXgBusF6gb169Ycr4uzYx65lO8t1Eeqm3ICTl0PwMN?= =?us-ascii?Q?R5akRpwsLjbeb3Z9PyyXz1hRRIEdPSAi5JMshCCAmbGq61RRcgsZI+j/dBis?= =?us-ascii?Q?MQAoZqGCopdyFqbxZUCqMZLX6oNDHsOKPTSR5bv70RDLSg96UEtz2FsT8TeR?= =?us-ascii?Q?zqzGWsiiwsNidFBQDzwuHOvO198zik0/kqRA2ynIB//K2NUyiSqXvRSc9tak?= =?us-ascii?Q?Z7br4j3AxPOwq05HZlzC80nChc+gG/AOhke+wj3upVu7o8yX7W0kYtyVY5eO?= =?us-ascii?Q?Nam/PvjKMWxCKgyOQLUAnuE8KaepRzz4h27lJWJR4oBAAMiY91rwHsQHRqZy?= =?us-ascii?Q?KV5fX7RkDDZZcX7xiiTI+k6PoQlAF87RXHJtSiarXyotRpTq29WIKaAxfBEh?= =?us-ascii?Q?HK8iJvwawbY7U8pkkaBBM6hLDiunuxrIclkP3B6ycFazT1Ni4T0+wFdizgnj?= =?us-ascii?Q?mqXmZBp/A05lcfxM6XfGA7JnfqchUUc=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1372d0a7-24ba-4d8d-a68a-08dee8cdd264 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:42.9637 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: TlT8z8KpHq9iGJOFJEEQD6YpVponN5R97rs3GxxtaSaoO+lMBQdI5oUfcUUBWjWPaEB2KaPLyc1UB6oxO7QQmbgD5rLRth1upm4Dgmwe7jg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR02MB7097 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c405::5; envelope-from=bin.meng@processmission.com; helo=TYPPR03CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820319303158500 Content-Type: text/plain; charset="utf-8" The Icicle Kit has 2 GiB of RAM, and its firmware device tree describes that fixed capacity. The model currently defaults to 1537 MiB and accepts any larger size, allowing configurations that do not match the board. Set the default to 2 GiB and reject every other size. Update the documentation and L2CC qtest command line accordingly. Signed-off-by: Bin Meng --- docs/system/riscv/microchip-icicle-kit.rst | 4 +--- hw/riscv/microchip_pfsoc.c | 15 ++++----------- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/docs/system/riscv/microchip-icicle-kit.rst b/docs/system/riscv= /microchip-icicle-kit.rst index 9809e94b84..3db2b3c7e3 100644 --- a/docs/system/riscv/microchip-icicle-kit.rst +++ b/docs/system/riscv/microchip-icicle-kit.rst @@ -26,9 +26,7 @@ The ``microchip-icicle-kit`` machine supports the followi= ng devices: * 2 GEM Ethernet controllers * 1 SDHC storage controller =20 -The memory is set to 1537 MiB by default. A sanity check on RAM size is -performed in the machine init routine to prompt user to increase the RAM s= ize -to > 1537 MiB when less than 1537 MiB RAM is detected. +The machine has a fixed 2 GiB of RAM. Other memory sizes are rejected. =20 Boot options ------------ diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c index a2fbc89222..b604f7008b 100644 --- a/hw/riscv/microchip_pfsoc.c +++ b/hw/riscv/microchip_pfsoc.c @@ -557,10 +557,10 @@ static void microchip_icicle_kit_machine_init(Machine= State *machine) DriveInfo *dinfo =3D drive_get(IF_SD, 0, 0); RISCVBootInfo boot_info; =20 - /* Sanity check on RAM size */ - if (machine->ram_size < mc->default_ram_size) { + /* The board has a fixed RAM size */ + if (machine->ram_size !=3D mc->default_ram_size) { char *sz =3D size_to_str(mc->default_ram_size); - error_report("Invalid RAM size, should be bigger than %s", sz); + error_report("Invalid RAM size, should be %s", sz); g_free(sz); exit(EXIT_FAILURE); } @@ -770,14 +770,7 @@ static void microchip_icicle_kit_machine_class_init(Ob= jectClass *oc, mc->default_ram_id =3D "microchip.icicle.kit.ram"; mc->auto_create_sdcard =3D true; =20 - /* - * Map 513 MiB high memory, the minimum required high memory size, bec= ause - * HSS will do memory test against the high memory address range regar= dless - * of physical memory installed. - * - * See memory_tests() in mss_ddr.c in the HSS source code. - */ - mc->default_ram_size =3D 1537 * MiB; + mc->default_ram_size =3D 2 * GiB; =20 object_class_property_add(oc, "clint-timebase-frequency", "uint32_t", microchip_icicle_kit_get_clint_timebase_freq, --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820309; cv=pass; d=zohomail.com; s=zohoarc; b=m2DXIU1fzUunq/ndDf1iLizYBXfEt4xiH3Ch8IS03ZK9nnzRRSD7MfoH0wgOV+AvctUPt+7tOIwKgw7UiMPe/rXYCzNTxd0Z7ucMWgJHysJOkbO97qGcdbCXfSuPxxR5HSldiqThCZiR5F6zw1LX2F/HHvzAba/POoBQCbVvgmU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820309; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=nvJKkwfpqWBr8v6Kx/2XNdM5ogAtMQQ/ADt+Sk40TnU=; b=Y6Xo9X0v0R9/hYrVQSlrucft17jn+smvK/OKdHxb/2nVxynIsNgtiFoaGTx/BjNZa+xHOd/cf3Y20qtfI5N/vpAFmG2n01FIYIFN6YEu7UYXzXyyWd3YU2KPaTivd+naIe4Wps0CFTaiLeZ24ND/8yeggboDefkDoygQDtoYElQ= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784820309174162.36789277256378; Thu, 23 Jul 2026 08:25:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvDn-0005K6-UC; Thu, 23 Jul 2026 11:20:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDO-0004OI-Et; Thu, 23 Jul 2026 11:20:02 -0400 Received: from mail-koreacentralazlp170130006.outbound.protection.outlook.com ([2a01:111:f403:c40f::6] helo=SEYPR02CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDM-00085x-23; Thu, 23 Jul 2026 11:20:01 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by SEYPR02MB7097.apcprd02.prod.outlook.com (2603:1096:101:1a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.10; Thu, 23 Jul 2026 15:19:44 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IwdUl4rxQxqLmdUJnMlV0fK1FKPDTZb4yB3ULSDVDbl3f1x/lxxhJDdZimqVfKCNzhzwupnp8xawE6ocwk1T32yCMGDp8zBWrB1eKgt+CC/v0Ui66pNl91yCUo4utyXnYwBmJYt+hl+AgwLK00ekaQgO+r62lMZXX1brpQzoHEWmTZTP1rooOuii0WWqb8mEiNfQOeYrhrvgPGmmh73UOTyVYMye3AOozMDuXgMkxT/gbLQZBJKIIsgddkSEV6DBEGdS65B3urJ3myG3p7UN0wBIP/Vfevn1tOYQSN9gBeAvPUDP4e3F3Adk2k+wPi2N4avUVvRwJLvpYP3J5fJPrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=nvJKkwfpqWBr8v6Kx/2XNdM5ogAtMQQ/ADt+Sk40TnU=; b=dzDTjgdaC9Z34chnGZdQdTBL3+5Qo+YufqVh20+zU8wn3YSEUFFbo1tDf24Ymw0YgtvqLHqmb3FqXdUGhTEk1FzSw6XOp0ob9MEo3NtdBfgdUAy+fslURMhZstaPbKkpZU8nf8nhA7+Prw/kjzBvrbC3wjS7vjIc+MUSQ5Tc/0lNUjS3GHuKQeFWUvEfm9xCBgrGv7Tq9qjjSB4tCUO58vXIZMr7IMdcNoVnIewqr6XrAlS/O6Y2MY/oxMH50JULzwcnzLPbHGL9FUca2Ss0niZbEHNk2pMzy+LbS2kyD5/ZPl0hPpgdBEO2AdPWpiDZwqMHbx2EsQOwv0boN7aF4Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nvJKkwfpqWBr8v6Kx/2XNdM5ogAtMQQ/ADt+Sk40TnU=; b=mVUxyYcGkmMSXDcgbuZTdys0v4HxvPKHo5sj5uFrUiEho8tG9RQp1um5aW3t3zeI1ovyCgqOwtxtqH/jiTvbZtxJbAPXu+dMtutTWHlbKnAMyZalNOEDjrLfvqco7+nD7xhETqDfsOuOkU7uiA4t7cW3aCGkSVc9ZB2N4kNc1QUUyCHfhdKY+E3MJTc2mk/HzH3WbC1TYACE1zVLa5QH6xnJdlUj19b2780Ava3Kbz3iHi1BkuSV4aaRmgdzaglBs9zMsoShZy30Fxr7qLs6ipgzrpNp19OK7yyv2G/pRB8cj2il5c0lNcrZxvW3zABNNUdxcOE6ZpsJfKaUM22UoA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Alistair Francis , Chao Liu , Conor Dooley , Daniel Henrique Barboza , Liu Zhiwei , Palmer Dabbelt , Pierrick Bouvier , Sebastian Huber , Weiwei Li , qemu-riscv@nongnu.org Subject: [PATCH 22/26] hw/riscv: pfsoc: Fix Icicle Kit hart count at five Date: Thu, 23 Jul 2026 23:18:49 +0800 Message-Id: <20260723151853.2143177-23-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|SEYPR02MB7097:EE_ X-MS-Office365-Filtering-Correlation-Id: 0dd70847-6bb7-4518-7e31-08dee8cdd362 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|7416014|34096008|376014|366016|23010399003|1800799024|6133799003|22082099003|18002099003|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: xq7fujII3LFC6ytay1ZiS8fD1PivZZ+4pw/UPbnPIIUHLhlVVWMwzwhqUI/86aZqQFg+i891Y/h3LkX59FjxDAlcA9XXJUSbG4JlEGpDnTt+2yt790dgNwtYI/8UBN46i7lbOqNjOAmnna2cucZx8F0UyBCaplpqBHFFV0K/NDGRUN3hN1DnDDy6JKpfinvYTooKrRa1hCTK2v0DKkYL07PRMpr230zYdQMxp8DLc5phT1KuJojGmKtXda2wiGn+2b2xAJH7R4dPkf0q95DCVspUUfZr5BSNZJGVsAzUuMi9lA6QR0ZK3TK5y2IN5bCAtSc4ahPdgLxLjA8h030oJniTqr0I1Tc1MldLmCobk/zhRrrgvsR+8732tyw47hkRcheeGvgT5e+NGhvPtUsjxUffbgHF90aRzukYBDnGw9EGn3ciJoVAxt2H66hkVP+k4czZdUzgo3Rx+X15lQ9AeqH0zJ6iqKQlKnvjy/4I8CZd0nFp0b8jjT86p5KPw2WYcQ6NC5iAzR5HeISajgw2K4noN+f2hajb7jTFALP3y5F2S80+fNw5Q+uqbINUmNswZtUiSJC+7zbUsTfNPxFqmOZo21RucbZwd6Hu5rlOA5LU/6VvKtpxT7/hxg6eFX9/mzPznYh5dbtZ+eId13a27LGHr2GbWggzil0XYF5+diw= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(34096008)(376014)(366016)(23010399003)(1800799024)(6133799003)(22082099003)(18002099003)(10067099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?0OZkFCE3qYepI3EKF+sWNs4VfTwrf9WJLiWomXYrJeLeMfU5/UjZEA2zIqi7?= =?us-ascii?Q?HvGJU53y+R64fnZPOPaIAjrkpFleAb15ymto1purmYgfVemwHys078LJwgP0?= =?us-ascii?Q?K4BVFMqNN1abXQjEm8LdlTivgX8Yh4+N5gpVA17HNr5PqV4PlgITw2sdAdry?= =?us-ascii?Q?ftAjxEppyN1Vp1qIVwTZYDO71f/qhDdIYKCKdDhpqyYIwxy4MrZ+vtAkm/a9?= =?us-ascii?Q?2omgdI5HY6NXwitOSAp2mBtdyytyWn7yyBgNAVD6yKI37yscgHLqUTMo1sID?= =?us-ascii?Q?KiZjgslBSzffT02gTA6Isja6yOXOO9V5MFFaxVNFu7sHr3TE8Wj/AAtHAXTH?= =?us-ascii?Q?WIstKZHFdtuENwTKYc2KHvtAlCKqmDnAux2pBzNGpSa8eLOyZuw010NSuN6I?= =?us-ascii?Q?wjNLaYxSfP+3ZR0og+753Tnen8iO8iX9HktWL2v7GGpzbVucVQdhs0mnEqa2?= =?us-ascii?Q?xjNUSiESjnIQEdaq8myfJABr0FYUKWoPhAdyA53N7uSbIjPcoycPVPXdb12W?= =?us-ascii?Q?0etp0I0/FPkNQn3xR/8e8gJxSO6lK38BioMwpFxv4isFSyiAZAnX+Ks6okFD?= =?us-ascii?Q?eJ2nnOYzvudZVs9JF4nI/d35g8OACAlEZO12tpG8KOSYxsLxUmwgu1IvPR9B?= =?us-ascii?Q?EeyAh08kXEH1w/wfdvB2pR7IUkf7cFRl4/nE38aHEv1RX0D2ZG/Gum0BOLUq?= =?us-ascii?Q?fbEcsnr2ANki3Kq1rw/sVpbrOsG2NsvE5uMgMdwgSi+jWdyAlIt3dqEOBmPE?= =?us-ascii?Q?7/+WDplBs8JwLtzhoWxHw5JbBypqjxoYm4sd//o0PonFORa1II7Tkex5nUh7?= =?us-ascii?Q?kPK8O2PuJQ88BaBnnHU+UdzWIcDZYJymAeKkkcLRqbGajzp9XUx1flsmt0nK?= =?us-ascii?Q?NAgbwuMsjX6ytjbfvLKSvYH42rS7Qmdj5TekaWfnpFXpTsi/CWZHxb6gxDmR?= =?us-ascii?Q?AVhxiP61Y0X8WKqTRzQTUHFmPdX0RM7dNCpIFWBJuZ8bin2gvDwWTi1I91XP?= =?us-ascii?Q?ENods0p6liC9n7owTIxW1UKyDurjz3isiGLvzMGAXL10VqAfRHB+1g6U0cZK?= =?us-ascii?Q?aBCqbPM4c7TeUPCSE+/cYFlMqTqk1n+i1fsX7DpznZlNco5CP42POXQXgj+v?= =?us-ascii?Q?lY8k2wfj1zMZsxkkDlgRjzE3vWiybTnZ36ddMT3SP9kU7PMkORwPvQ1siPXb?= =?us-ascii?Q?8pnADe1vNcbzWA/IluCxrXwUrYyCu4+kVmwFiJZ4cRCfd/B9ryTCeUf2iSd8?= =?us-ascii?Q?CZ/Y/AnA8r5ocv4qdhHdFBcJAJNF8O7w7+RMuakuEnpI+uiZ6roVdwtoc9rS?= =?us-ascii?Q?AQl4/+enyENsohaoahaDsulUGI4Sp9tLmD436nBUsDBwIvj9FaWcidOhfEGu?= =?us-ascii?Q?fRyGGVBP1fGzVLnUgRZQgRiSg5n6B37g4EsTmJnJ54u8yN7hu14BLdGdinhp?= =?us-ascii?Q?GUoWmJWQvKxbzkB/9h3e9JpLwcmgMztIHUJ+s24MCQUkK9oyHtsrql6DShl5?= =?us-ascii?Q?8pnx6CPZA/OP+hFaOYWik7AbGOhrQs0NVUHq4NuuJoCixFNZPTQDSykznjPg?= =?us-ascii?Q?xSYQsbj3vt+Ddzgum7HpcVoBPfUP52vlXWpuzsdhhOaYt+rLliTIrFA/x0eH?= =?us-ascii?Q?stEm9JyrEQjvGyRDaN/W9Q/hcrMj+nkjvBTLgUGvoVv7INDT/3chaIERi5xD?= =?us-ascii?Q?DZ0z8qK8NnUI19opPIFDOEl9OrH9aycUaA9OK88S9GDVqmj5T8nuACIkeakl?= =?us-ascii?Q?84ULwxlVDVGNST/OQsuMtmflijEZSDU=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0dd70847-6bb7-4518-7e31-08dee8cdd362 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:44.7181 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: KQRk6sVew/45p4WBCfnRsC0Kb3Axahj0rscJBGDEXiTar3z8JEQ0khelBfDD7B4OxTwXUumPMLq7c6vGVB7q9Z6FmPZfKmD5RoeoO176E0g= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR02MB7097 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c40f::6; envelope-from=bin.meng@processmission.com; helo=SEYPR02CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820311242158500 Content-Type: text/plain; charset="utf-8" The Icicle Kit always contains one E51 management hart and four U54 application harts. The model currently accepts two to five harts and defaults to two, allowing configurations that cannot match the board. Set the minimum and default CPU counts to the five-hart maximum. Update the documentation to state that other hart counts are rejected. Signed-off-by: Bin Meng --- docs/system/riscv/microchip-icicle-kit.rst | 1 + hw/riscv/microchip_pfsoc.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/system/riscv/microchip-icicle-kit.rst b/docs/system/riscv= /microchip-icicle-kit.rst index 3db2b3c7e3..38352cc62b 100644 --- a/docs/system/riscv/microchip-icicle-kit.rst +++ b/docs/system/riscv/microchip-icicle-kit.rst @@ -27,6 +27,7 @@ The ``microchip-icicle-kit`` machine supports the followi= ng devices: * 1 SDHC storage controller =20 The machine has a fixed 2 GiB of RAM. Other memory sizes are rejected. +The machine always exposes all five harts. Other CPU counts are rejected. =20 Boot options ------------ diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c index b604f7008b..1562423930 100644 --- a/hw/riscv/microchip_pfsoc.c +++ b/hw/riscv/microchip_pfsoc.c @@ -765,8 +765,8 @@ static void microchip_icicle_kit_machine_class_init(Obj= ectClass *oc, mc->init =3D microchip_icicle_kit_machine_init; mc->max_cpus =3D MICROCHIP_PFSOC_MANAGEMENT_CPU_COUNT + MICROCHIP_PFSOC_COMPUTE_CPU_COUNT; - mc->min_cpus =3D MICROCHIP_PFSOC_MANAGEMENT_CPU_COUNT + 1; - mc->default_cpus =3D mc->min_cpus; + mc->min_cpus =3D mc->max_cpus; + mc->default_cpus =3D mc->max_cpus; mc->default_ram_id =3D "microchip.icicle.kit.ram"; mc->auto_create_sdcard =3D true; =20 --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820249; cv=pass; d=zohomail.com; s=zohoarc; b=REQ55DmeHrjN61uEsEkqkHI84keIRPZXmGCLRRFR0t5//6nBUTUSG2fXFo7/lVkIeQYWGWe0E6Cd7xj7kN7tqOLAvp4rv3Em5faHsvSdAf45Epq9QLdxK0i4NU1xs/fqdcCBydJRE3kUrc4ZaJOa+26h2B8uEKRqHJv0umHczwQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820249; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=PHkXJTsS6CKeKU6sx3voHDxoOVQbTgDL32LbiiK2H2E=; b=l4kiyP1/hJ5rcB0pJxrcaUp/P1F/Wi+Pwg+680AEGLMEBG1Uzh8RKA51tAxw9GLXWqyW4o97Ht0oE29fEaC2lLI4cy8LlgFULEuScjw3vXTi0EYzysrA3CkSuh9W0yO6pXk3u4ICTCgu/N2oqGnBxNnb0YjNBl7Lf7e6uzsZquo= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178482024997823.654927286361385; Thu, 23 Jul 2026 08:24:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvDl-00056F-4S; Thu, 23 Jul 2026 11:20:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDS-0004VR-Cd; Thu, 23 Jul 2026 11:20:10 -0400 Received: from mail-japaneastazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c405::5] helo=TYPPR03CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDP-00084Z-0H; Thu, 23 Jul 2026 11:20:06 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by SEYPR02MB7097.apcprd02.prod.outlook.com (2603:1096:101:1a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.10; Thu, 23 Jul 2026 15:19:46 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:45 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JDrqu3AB2zJOr6HS0/2sK80jT1pmB58MU7cirXvWgY7WW4jLMvdS1fBAPvL78dOrxOfPt+X4UkPgDisnetM9fPnlkuXPV6FLEHsoEo9KfiklXzpPJX8Rr4+im/PApvtHnv1aX5g+u9qWsksDw7wwH8KIkiezE3B+Sm9cVup16CiuveoAwqL2mUNCOkO35l+dexOtyBYwYGiumFg1E5kWF/kKfAWLTnsqkxvCZ4Ew074ljlMHG0Rq8hYgzVeeTeS6BLfxZ6kDAnvqLO4dTGAcyS1+cCnT05kCpKdmDEPYM7HqoXoILTaJMgBMZAFBW85TJ8BYzyiMiH0ZT/w68AwPOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PHkXJTsS6CKeKU6sx3voHDxoOVQbTgDL32LbiiK2H2E=; b=tc0v4tFNM07q6t7BetSW99tDfTL/8y8aLPEkeHAmNsNNtOosc+r2crGraH5hwPoGOiZW64rWlTBZibGiCI7wKJCvQooT5kLt7qDzFfVMatwk4flthVpntTMaUA7FbRYshy74ZEDlDEB5qgljOXCzFBOgDa1nAWe//1s1JRuQp9zl5X4S1XL8yoXKy8tobZkjV5jvyOBRrXN7MqRhdYZ42Wh+DbInac36QNKjOjEslgHm4S7OJa+SNWOSjuEinjnaXGKcwFKGbyu6qFQf2vkYhGHBxoCL8OduBc+kwbqlCorMK1gQGcGR4zrlI9AOIxMOnMCP0XsJRIPagL9IJf0wEw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PHkXJTsS6CKeKU6sx3voHDxoOVQbTgDL32LbiiK2H2E=; b=i+ciWbcx5iITM1w8mH7pURDPOxCdQE8nN98NPWYI5ieJsuqkFc3XDKCwhUWBJAQcmm5Ue3zfRl3DZK2zpA/gUW915ySievcCGGIJSCiGWREEnxpKt4VWm4NMleWGI5IQjlgrqfmylmCa7OUhUHFZcMbvxcPS2Bce5Um/ZJfooE7WWqEkfXRAJ9OPskdM1QSGzWU135qE2zCIfDoftEsrZs8IGxQzOj1Pn6ItAItxe/P/mja0OeXoyzBiddG31iOssBJSy56fb0LePco4P+rFedSxWXzKTQGDvWR6E/409FgCFYPy3YbkIPTRn6/ZW5iEgxWqJJUAkTcifNBT4P/r7w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Conor Dooley , Pierrick Bouvier , Sebastian Huber , qemu-riscv@nongnu.org Subject: [PATCH 23/26] docs/system/riscv: Document Icicle Kit HSS boot Date: Thu, 23 Jul 2026 23:18:50 +0800 Message-Id: <20260723151853.2143177-24-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|SEYPR02MB7097:EE_ X-MS-Office365-Filtering-Correlation-Id: 6430c38e-fef5-4edb-df09-08dee8cdd410 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|376014|366016|23010399003|1800799024|6133799003|22082099003|18002099003|5023799004|10067099003|56012099006|3023799007; X-Microsoft-Antispam-Message-Info: RkZMrHXtwtSnDxe9zVugalo4euMLioGoFzAbviV5MpRj0lODIW5lhGR6LzSfHSwuwIkKnaMpzAFvO33cdtDruvxMuqExpx720wsocRgcLndggwzCl640Ph3Gb45z2C3jjZbCceSLqtzAItYz/wodUzZ9NU1gI485xeTHMOIdbv220dY+xcYGsgRPsN/yehLYQi+isrf3rCMNciWAzqiVhYZcRwvf3y/vySl6DHdnRfG9pkXMrsSihWkfwHUShtZVjqlzY8LBIGHoTStUGQgd23CPfxR0j5ghpqFapKrzQmL5I2OorJcRJF9qRCyo2ych5zg95gCgrn1Kofz3rooKTGqTJisQU1Q7yhf7lSVww/55dhxqdlDsyUWDdR7ShILrvfEsd38HMyQPUearqoikuJXk1MzpycVNozyIw7gjyaDE+jq9nsE4t4FUA1dTnsLetLaiVm4YvMQkt257owYf376QEju6jsBurtskxfPf//kq5A3gfyEYj4OxgnxzDwGJfV+D0wvYmKY0aM4iGu+lBi4vcIyKo6ApTEKP7CWI2LmbLn8vrQcMC+gvL0ZesyFJ3CjLdjAMzR0WHyjPkKcPezL/BjD9Or0A5ZGJaBq6NWW5G2M0KycSKTq8Ud3G0mT7uV0n0JCFTsgHcC3c8vbV3BfF/RqmM/aBPh7h6i4IDtY= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(376014)(366016)(23010399003)(1800799024)(6133799003)(22082099003)(18002099003)(5023799004)(10067099003)(56012099006)(3023799007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?WB8o+Klil6QmMLc9iAmBtK1wc4OkaCvZJOy7niOejaLpcrr7PKj0s3COPTH2?= =?us-ascii?Q?y6o3E2owzKeNSZxmCiJBpiJjPZAP/KJ0XU/t1kZf8zjV0HiSp4cw+yEdH9Ra?= =?us-ascii?Q?nk5bwfvnZt18c7iI4i6ZdzSax3QMmgBRJLFje64I3jv1RM5GROiKQFYsxQr7?= =?us-ascii?Q?V8U/EDM8EXKOxvn8J9nGN/+cvHYM3xXncr8Pz0TcaxUwp8YxSH32rPqkbCqF?= =?us-ascii?Q?yJ72vUJpH9NQU5r27Cl4bpnZ9EHzy0QppgnRbYhBfnnOYmK9Ngsbl5h7Lw3F?= =?us-ascii?Q?SaDpivbYykFO6QckV6B4YXGVyHqoVVIIzzNrhCcc492Ii60tTsxn6D964Fji?= =?us-ascii?Q?Yv4yi7/m7I5rlWLHEzoDnzG4QM1IQl4TdZSU4lSmoDwCW0v43gB2s6bxyA5J?= =?us-ascii?Q?zzstKQPZN68xGNZsSg4t34nxexyKDWzOBaKXJOM67S83tFRfxsxi+4ITSBTm?= =?us-ascii?Q?LTstKTcSTpX/8jeP44DX6AyGjaoGmIJDeFRHNmKRWqWo501bmg4UBXpsHDM7?= =?us-ascii?Q?NFTVswGxnqz4OiBiH6+AWbJpcY/XS4MvAA+nhUciwFSvFAfLdtuE9KJrn05E?= =?us-ascii?Q?LGOKScJPmt/HxCPvYk0/iQiQTDiv2Ca3rNh/xa0JrRiEG2IHYfmSloLlpQnY?= =?us-ascii?Q?lzCTeWM3CN4dMfkgTqI3alOdkJM3ZwX0YBCx9DFgcffIapBDHpQ5TsoAc0Mj?= =?us-ascii?Q?HeJlNaRA7Zs6EuKYJ7TSfRmU51fRqL7y0/+u9hjg96SYmgp9fYqmK4MXtihR?= =?us-ascii?Q?CPAq/0idufmXvGBNs3W0ej3pkFTNG/FpUqZVFWMiDEuWWY4mCp4/xVm8CRtI?= =?us-ascii?Q?0ySk5Gbn6FIK9FJTTP9ek8On3NIsxkwuqJhbRpEWmQNuHs8b2r2iPtwuMOs3?= =?us-ascii?Q?y5IITlm8Tb9YVESGbrDCTRnV9ZJ/qmcC7rjjdsAPI9jPkq/ae6eOc/iD4GTu?= =?us-ascii?Q?/WUm0vdnw4LCHV95tfs363mrvvjY/MUvfUctJpgG3JzdlCkcOHjcsbhqGb9v?= =?us-ascii?Q?jhtAIzM2w4r+X0PPOsNC7PGD23sjiVDwmg876zzGrBNT7GRYPlB6KBg4utq2?= =?us-ascii?Q?NfCLleEsMSNo7qbdvFRnIej0AdpjAGgHIECQqCfMqkyK9cptrI7Y2n1O7HfD?= =?us-ascii?Q?XUaH0EBoCXVmHDBnvHDZDg/deY1NXMWk6fZH4HG+pIzQyoNk+6s1p4AORySr?= =?us-ascii?Q?U5nH2+h5Tro8Wtf4SuG7Va2hv1nt4LLjSJ7SJBS89hmIJ2v4L6WDNsMVzFVw?= =?us-ascii?Q?KdemM7U4yFMzNUht+f7Qrn/nZ4R0hiA1HC7tyiIk+pqKcvkNtT+a6Lm448+S?= =?us-ascii?Q?nhjKIMN+O255nRQM808JyeJKnEt3xY/+O93OkR+Zq/zTKHNV8gLfjWke8c4a?= =?us-ascii?Q?8FCGIpSgL0ycB4mp7hhNlII88jLlx7SkN++qd4Shzy6hKM6JMSkEfZCpIsj1?= =?us-ascii?Q?oPogfPJ7rH/ZmZC/s1W99Xgo65QX2Elb/UnuFd2fDVmQD3T5StpNLNCMW/3i?= =?us-ascii?Q?WqUCrbEGNjrbIiB/DSWXOCnX8nSKFmPxqWCmKx7GOSn86R5tZtmSFUIDx6t5?= =?us-ascii?Q?2r8LQH5oi+UGGooonamtGA8107FWuhNAe9gZaFaPg5GsTagaMaH/hLia6e8v?= =?us-ascii?Q?iHMeJ9/Th6Wl94zxJaL44oYS7sduWgdO318NrdchU83MPQQ7U0iw9UbhYUC5?= =?us-ascii?Q?Ft+kelUa7A/ZoNnBC1ZAR6He8I0lEKAKHAZZGi+U1id3eSjVGdesB5E1aK+y?= =?us-ascii?Q?ehvUirAGkf7y8Vy/PDPCwp5SgTOqFIM=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6430c38e-fef5-4edb-df09-08dee8cdd410 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:45.8643 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: P+n/etsPnoeONrHIqQuLUwTYx0xDKEDj61hVOkPZM5Mx6NmPizhxfwNpS0witS0GOhJgvAezAO/QVPvcefz5TXjthqjhOqeS+5jXofEDdmE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR02MB7097 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c405::5; envelope-from=bin.meng@processmission.com; helo=TYPPR03CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820251846158500 Content-Type: text/plain; charset="utf-8" With all previous changes, the Icicle Kit model is now able to boot HSS v2024.06 through a Buildroot 2026.05 SD image to U-Boot and Linux. Document the tested source versions and exact commands to build HSS and Buildroot. Include the sparse resize and GPT relocation steps needed to make the generated SD image usable by QEMU. Also describe the RAM and serial setup, boot stages, and remaining model limitations. Signed-off-by: Bin Meng --- docs/system/riscv/microchip-icicle-kit.rst | 101 +++++++++++++++++++-- 1 file changed, 95 insertions(+), 6 deletions(-) diff --git a/docs/system/riscv/microchip-icicle-kit.rst b/docs/system/riscv= /microchip-icicle-kit.rst index 38352cc62b..eeb4ff938c 100644 --- a/docs/system/riscv/microchip-icicle-kit.rst +++ b/docs/system/riscv/microchip-icicle-kit.rst @@ -19,12 +19,15 @@ The ``microchip-icicle-kit`` machine supports the follo= wing devices: * 4 U54 cores * Core Level Interruptor (CLINT) * Platform-Level Interrupt Controller (PLIC) -* L2 Loosely Integrated Memory (L2-LIM) +* Loosely Integrated Memory (L2-LIM) +* L2 cache controller (L2CC) * DDR memory controller +* System controller and system services mailbox * 5 MMUARTs * 1 DMA controller * 2 GEM Ethernet controllers * 1 SDHC storage controller +* 1 Real-Time Clock =20 The machine has a fixed 2 GiB of RAM. Other memory sizes are rejected. The machine always exposes all five harts. Other CPU counts are rejected. @@ -101,10 +104,96 @@ CAVEATS: Running HSS ----------- =20 -The machine ``microchip-icicle-kit`` used to run the Hart Software Services -(HSS_), however, the HSS development progressed and the QEMU machine -implementation lacks behind. Currently, running the HSS no longer works. -There is missing support in the clock and memory controller devices. In -particular, reading from the SD card does not work. +The ``microchip-icicle-kit`` machine can boot the Hart Software Services +(HSS_), which then loads an HSS payload containing U-Boot from an SD card. +The following flow was tested with HSS v2024.06 and Buildroot 2026.05. + +Configure HSS for the ``mpfs-icicle-kit-es`` board using its default +configuration. QEMU provides the software-visible registers and determinis= tic +status consumed by the HSS v2024.06 DDR initialization and training flow; +it does not model the electrical properties of DDR training. HSS requires +the RISC-V bare-metal toolchain supplied by Microchip SoftConsole to be +available in ``PATH``. Build the tested HSS version with: + +.. code-block:: bash + + $ git clone https://github.com/polarfire-soc/hart-software-services.git + $ cd hart-software-services + $ git checkout v2024.06 + $ make BOARD=3Dmpfs-icicle-kit-es defconfig + $ make -j$(nproc) BOARD=3Dmpfs-icicle-kit-es + +The HSS build creates both the raw wrapper and an eNVM programming image. = QEMU +needs the complete eNVM image, including the 256-byte boot header added by= the +Microchip boot mode programmer. Convert the generated Intel HEX file to a = raw +binary image, for example: + +.. code-block:: bash + + $ riscv64-unknown-elf-objcopy -I ihex -O binary \ + build/hss-envm-wrapper.mpfs-icicle-kit-es.hex build/hss.bin + +Do not pass ``build/hss-envm-wrapper.bin`` directly to QEMU. That file sta= rts +at eNVM offset 0x100 and does not contain the boot header with the image s= ize +and per-hart reset vectors. + +Build the SD card image with the tested Buildroot version: + +.. code-block:: bash + + $ git clone https://gitlab.com/buildroot.org/buildroot.git + $ cd buildroot + $ git checkout 2026.05 + $ make microchip_mpfs_icicle_defconfig + $ make + +This produces ``output/images/sdcard.img`` with three GPT partitions: + +* An HSS ``payload.bin`` containing U-Boot. +* A FAT partition containing ``boot.scr`` and the kernel FIT image. +* An ext4 Linux root filesystem. + +The QEMU SD card model requires a power-of-two image size. Make a sparse +4 GiB working copy and relocate its backup GPT to the new end of the image: + +.. code-block:: bash + + $ cp --reflink=3Dauto output/images/sdcard.img sdcard.img + $ truncate -s 4G sdcard.img + $ sgdisk -e sdcard.img + $ sgdisk -v sdcard.img + +The Icicle Kit firmware device tree in the FIT image describes 2 GiB of RA= M, +matching the machine's fixed RAM size. The command below keeps ``-m 2G`` +explicit. Attach the image as an SD card and route both board serial port= s: + +.. code-block:: bash + + $ qemu-system-riscv64 \ + -M microchip-icicle-kit -smp 5 -m 2G \ + -bios path/to/hss/build/hss.bin \ + -drive if=3Dsd,file=3Dpath/to/sdcard.img,format=3Draw \ + -display none \ + -serial file:hss.log \ + -serial stdio \ + -no-reboot + +HSS writes to MMUART0, which the command records in ``hss.log``. U-Boot and +Linux use MMUART1, which remains connected to the terminal. A successful +boot proceeds through HSS payload loading, U-Boot, the Linux kernel, and t= he +login prompt from the root filesystem on the third partition. + +Known limitations +----------------- + +* The tested HSS v2024.06 flow contains 2 separate multi-hart startup races + issues which is still not fixed as of the latest v2026.04 release. A boot + may therefore stall at the very beginning or after successful DDR traini= ng + during the OpenSBI/U-Boot handoff. +* The SD card model requires the raw image size to be a power of two. Keep + the backup GPT header at the end when resizing the image. +* The machine does not generate an Icicle Kit device tree. Firmware boot m= ust + provide one in its payload or FIT image; direct kernel boot must use + ``-dtb`` as described above. =20 .. _HSS: https://github.com/polarfire-soc/hart-software-services --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820184; cv=pass; d=zohomail.com; s=zohoarc; b=ThWuJWS1caEJ1WAvKGB9bcOKZfDY8nrMBkgPwrD5qa9wudbl2LsTTryoyW3VkHDjr0PAsAO29rYHaehpEBmTvT928DlDJJ97S7offtqgmNOk3Zko0UHN1NuNf9SUCZsVNp4efFPu18UckHQFuGlnZVnQAMJRoeKnAAC3oDIxNMY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820184; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=W2OW1fuRVPdUXTcStYsFTbQhFdLSW02RzeZnaqFLt0I=; b=DTrkTyqx1+/OOtX+qadDGPImyYldZzPoOWLpWowipluOVM6EXN7gNucdgPbswTQS2agzlXhC+TUqtqNnncb+e6u/Vlgm91DkUl/5nhMj/ZJVsKN0clMWu0km6XguN5DeoS2zbkJFOkGhlpcipsPD8cVO0BUSvwzjSgmeT6rCT9Y= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784820184912196.51084393324606; Thu, 23 Jul 2026 08:23:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvDo-0005MW-LG; Thu, 23 Jul 2026 11:20:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDV-0004XT-5j; Thu, 23 Jul 2026 11:20:10 -0400 Received: from mail-koreacentralazlp170130006.outbound.protection.outlook.com ([2a01:111:f403:c40f::6] helo=SEYPR02CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDQ-00085x-R3; Thu, 23 Jul 2026 11:20:07 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by SEYPR02MB7097.apcprd02.prod.outlook.com (2603:1096:101:1a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.10; Thu, 23 Jul 2026 15:19:47 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jVvZY8bl8MIGCLne7Dbs84o5HVAYxCOCRfkRiJKWsP9cTbrGYj8tAb+jd6NAacDg60sZRkKc3c9V46uhCXAM47J6YWGVXtxo2sJGmO2SldmWN++kMHQjJiMAYiqYGSocdF0AAkTef9jbJlaNWSuSdxqfw7D/DencpYS3pDp/kGPIal5N8JPRRCq6F+V/SU0NLb10h0nHQvsogZp/UE2atEiDvU6zCpPbIQXulQcWTloVhg7NqX/07UXlnt+SRkJc+sAwLKvFfU8VATIYIpLWyf9atDDQdmKbc0i26wikBqVqICLuQm4MP+4MjCHsC7dp5tRXsl+wf7KAGGvOK0pUvA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=W2OW1fuRVPdUXTcStYsFTbQhFdLSW02RzeZnaqFLt0I=; b=mshBp6toujh1VBHqVGF1/LzmZDAMU4EOgFZ++TK+KGTs/1gxUppJoucR2sLjp5aaAkuSBB27HazIE3FmOWZLevoE5g4pgbTwbpwL14CN+ExoRytwjGG5l4pAlOMJTqCZXcWNXGljamPTmfYJ63+01vQXjjuOQ4Zo3DlnCfnr1XlB3tBmJmccS/x3mW1hkJ+qgXZwVCNtx97Ja1GEoIKIsb7cHCgDL603oMeLil6WFc1Yzxzv9n2Q8ajnJQg6VXhg+9jySNOcpCR8ido1sgq4HPEwDcWpshsqxtu2Vdr5xpzMrzYz/Jc4vpuaXTMsgLVE9X1sq/Ai3fmeKUAKNKaY5g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=W2OW1fuRVPdUXTcStYsFTbQhFdLSW02RzeZnaqFLt0I=; b=Q28sPqc/pqKvkIWku/nZCD8cnoZqjuVEemunpZzBcWRaef624saQkxY8fmASJLJ6FZDBn7CEqvv4JDOLFoOTJUSzq8QndFqO8PvdnTWAD3537PIJQxIUTTys8g+1c5AAwSTJjhNa5+iLwsmjWcfR72TeCafImhpdRK/XTh4GMX7LYrBkycEifyFzZxlWSGwofaK7hPWdLzbmpbvNWQ+Wg4WlhGVKnTR+LyMPeQ2OoXo8NohfOBwAwK5qPD3pe6E3wNSc3UGInn1bAXlQjIheONqVBhm2qK4qLhqOnERVD1R7ii3leOT14lhyYGJIPOZQ8GUIPSdsIguPwoG6tZETqw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Conor Dooley , Pierrick Bouvier , Sebastian Huber , qemu-riscv@nongnu.org Subject: [PATCH 24/26] docs/system/riscv: pfsoc: Document CLINT topology for direct Linux boot Date: Thu, 23 Jul 2026 23:18:51 +0800 Message-Id: <20260723151853.2143177-25-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|SEYPR02MB7097:EE_ X-MS-Office365-Filtering-Correlation-Id: db7c4ac8-01e2-4f1e-a368-08dee8cdd4bf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|376014|366016|23010399003|1800799024|22082099003|18002099003|5023799004|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: Ob0L+a0Zfq9nMi2wghML4jg4og/N20Ec4yELruRQzbOqLnz19UY0qourT/DUSSOefAHt48R7R5Fj5dt0A2cmtN7cTy7tQ98kIHWXMTk/7X8qvLdoS3otR43/54uFsWml8k30kqNjlDiO3CwMLhewxhk7paR/t4W0t9QBfy3uTtFYCAf51mdCnhOvhZ+kbqwPPP+gyt0W7ekGU+UexDvvVsaHyBpKowMGhhLqC+piD/NtU8H8BrPPYc5d2BK+8JGW3R8uPw1I+WN+VCvzX/E3sbiP31NLKWFSz10rf9bFHitY7j0l7nh1fkUHX9EdKikV9Tw6QCh47Xc/+/hH52ShqDO4ZR2apesg3kaytSkrpzC/hK0/j+0w/KpKWhTPKUsBkxwGrrjZU4TlI8exneSOW19Dj/WFZS6aIWY0tROl3o4g4QTg3Cnb1kwd2+JiThAlc0Zo9IDm+Rw2Tdu0ApmDcHQV7f879Bawuf+KPkmBYTpu1ZhNdVHt5UzUHWUOP7sIpZjNYOqEGaUNPEKQOJVzXF4ayw3OPSmpzm5xW7loaPMCiB2Ww6C0I4vpp4QEIJmbPbNywqWDN39oGiO2ZS1Vl0a9k6h3qdIxrAyitmWmpi6+uyFk0nRdSu8Zq4oxBdWVS5TFvhTZWVCgt/X6eDzL3eidseCrA2fmSBckabfaycw= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(376014)(366016)(23010399003)(1800799024)(22082099003)(18002099003)(5023799004)(10067099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?EpcKYr8w/cvUKqF/ggBXjkhpczc5Bys1w+uoynPIgczMtVme+jtcBfHZ/g0m?= =?us-ascii?Q?sMwmE0UnZq3FUzULKRmmb10pX7INhW/2V0PP5VFBeJ41v5kJnniNQOfJbTCo?= =?us-ascii?Q?/QnDanLj63wS0WOiwySCauogxIulRbfukqg+GwiDVqZw95y0B4zpA9Ia73NF?= =?us-ascii?Q?fLeweu16SxXmDlJ0vbNEDtcVLpSj0lB25l1a8iCfn73Hc8Z5b7wQE/L3PPiR?= =?us-ascii?Q?KTzMULkT1fmoIyPZSgq1XalPaawhtIbzdEuX0v7y/4ikMThWNlC1SM5y0QVq?= =?us-ascii?Q?sS5W+fq48ma9SoV7+tWsg1V0utQdHEKT1RbEw8MKz8qg4tahkRJUIJ/tym+F?= =?us-ascii?Q?4UVuRi72hlqR+x9c+FPmNhbhDOEz125J06PLjf5m/a9yu+DJudJKy7/hdrCL?= =?us-ascii?Q?znR2wfrSU4Mr72dCuegM4EV91aerk1lFgf9tYDr18NPVIFTqEv3nCErehLu8?= =?us-ascii?Q?R8G6K5PLElRdQALXyB9lUJfftJjJFO8SRGL/NHzyESBpNkm4SOxjaBh5OI5T?= =?us-ascii?Q?gOgSWCn1SVHO064QRLgbuty7AcdVwEpdDeyTpaGP/9JUigmz6KhBBTn512hT?= =?us-ascii?Q?0vayIWuOBR5XCkztfueYclX7XFBcnqUEfiA2Qk8eIKK+IaQG0xqFSAKAjJ51?= =?us-ascii?Q?l7WoHxEoS2Qued7ZPBhbJd9QY0pkOhAV/VFXXsa6er432XFDPJjAXCY907/M?= =?us-ascii?Q?YCVAWHB95HZ9CnzAcUY/wPLbLW3Z4kVBdy9/bxmOWy6nSIJyKxA28O14LbM7?= =?us-ascii?Q?0rBxdBv3c+QHOssamjCwL5xeQgMbpgtMlmW344UJ4HD1tYYXRRhzvm1jq5+b?= =?us-ascii?Q?qRU7R5h9fpuqI6L8gnINLG8yS7oNo0tVVlCif+z3yySCzmTmTSLmZ+IdHW42?= =?us-ascii?Q?Nd5g0uOE9lBvTuYdL4unIWNa0Azh0+sDpPolOLQUfyLxi5EH9Sn+yDwt2WN/?= =?us-ascii?Q?GULAAdKkqHP7nOzCD6nD2c+zMCoI+Slucv+E1q7yc2x0vhIO8EOwKXMFd6MZ?= =?us-ascii?Q?W0pdYqOGx6dTIHVcas7oCk+EaF9WRtUC4s9X4W8N34oAjV8zyvKeQYs2Wqnm?= =?us-ascii?Q?17RFZ/kGRfvmsDUVKpBGly5xz5LvPSRNrXwahcrP3QHmtGbGODiMnTFaEWyL?= =?us-ascii?Q?hgQDcU/FomEjy6HjHh8i1DftQh10kvB5ROM41qtQdkZfZU/F6i3+Lhe6IfCv?= =?us-ascii?Q?rBmDb99QEycEjNbwZl1Yy6rJZq8gTtx4AKXHEKSgjt12HSshgZeXJG6oC+F/?= =?us-ascii?Q?q9wR6rNmLxOT4vjyrGl79ybRv/UfJeZ9gl8/DK1Yey53A/RNVRzG7l9Sy1aA?= =?us-ascii?Q?dBOVwX6hwYrtshaclJKC0B+/BDW5uH0IEKIh5qZr17zBdQE9uTZwKuMRTNzt?= =?us-ascii?Q?vU9cjfCMRIQbMU3f3nJYXyTIOjkxHjB8l8P/tSeqNwqX3F1cRh2jgzyzmUwQ?= =?us-ascii?Q?560LzzCl0NEBTK3C7TySCnjvtIbvl3rj8ktxMyFclmhTn4oTk3RKt0FqBjjg?= =?us-ascii?Q?byCPwlmIXRowtlCrdLyDCxtMdH2Ni6A/Z16UknBmQDvOPfMeEQywcjhoHZ59?= =?us-ascii?Q?py3qUziXlAmJrHVQqAaczfD0xwP1n9zHshWEv0d2oRsxT3hv4URXu2GzCqh2?= =?us-ascii?Q?HOk6GogFfcNoaTxXMAr7bScauWSIt2ScH1/1tQ9Zhdr4+120SGnPQ/Iu37xg?= =?us-ascii?Q?xHnKrYGniPymnIQVoMq60EQrek7Ysj/TbrA8rDcbkXsX37sl9ZZ/NNxB9rjt?= =?us-ascii?Q?1fTxNS1ZjlFlbkUImWLWaGqmoty/yoo=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: db7c4ac8-01e2-4f1e-a368-08dee8cdd4bf X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:47.0146 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: xJ4Kaj+u4093ZrL+QKaQW9phVDqipIL9DvFIf6N5IMQtbr2okoNQ249jxskPSMZGdh6i6hcNrLcpUR2u2FHsEiCrqEpH02dFc0LO84B7lnI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR02MB7097 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c40f::6; envelope-from=bin.meng@processmission.com; helo=SEYPR02CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820186511158500 Content-Type: text/plain; charset="utf-8" The generic OpenSBI platform derives the CLINT first hart and register slot count from interrupts-extended. Some S-mode-only MPFS device trees mask the E51 M-mode interrupt entries with 0xffffffff, which shifts the MSIP and MTIMECMP slots when the same DTB is used for direct boot. Document the complete five-hart CLINT node. Require interrupts 3 and 7 for hart 0 as well as the U54 harts. Signed-off-by: Bin Meng --- docs/system/riscv/microchip-icicle-kit.rst | 23 +++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/docs/system/riscv/microchip-icicle-kit.rst b/docs/system/riscv= /microchip-icicle-kit.rst index eeb4ff938c..af8e984df7 100644 --- a/docs/system/riscv/microchip-icicle-kit.rst +++ b/docs/system/riscv/microchip-icicle-kit.rst @@ -65,7 +65,28 @@ should meet the following requirements: option. =20 * It should contain a node for the CLINT device with a compatible string - "riscv,clint0". + "riscv,clint0" or "sifive,clint0". Its ``interrupts-extended`` property + must describe the M-mode software interrupt (3) and timer interrupt (7) = for + every hart, including the E51 hart 0. + +For example, the five-hart Icicle Kit CLINT node can be described as: + +.. code-block:: none + + clint: clint@2000000 { + compatible =3D "sifive,fu540-c000-clint", "sifive,clint0"; + reg =3D <0x0 0x2000000 0x0 0xc000>; + interrupts-extended =3D <&cpu0_intc 3>, <&cpu0_intc 7>, + <&cpu1_intc 3>, <&cpu1_intc 7>, + <&cpu2_intc 3>, <&cpu2_intc 7>, + <&cpu3_intc 3>, <&cpu3_intc 7>, + <&cpu4_intc 3>, <&cpu4_intc 7>; + }; + +Do not replace the hart 0 interrupt numbers with ``0xffffffff`` when the s= ame +DTB is used to initialize the generic OpenSBI platform. OpenSBI derives t= he +first hart and the number of CLINT register slots from these interrupt tup= les; +masking hart 0 would shift the per-hart MSIP and MTIMECMP register mapping= s. =20 When ``-bios`` is not specified or set to ``default``, the OpenSBI ``fw_dynamic`` BIOS image for the ``generic`` platform is used to boot an --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820327; cv=pass; d=zohomail.com; s=zohoarc; b=N08e8fL4Tms5tqVgQL0xe3L/iEa74B/P7HkxR3E107YhsClTS5n6QGdTVE7GN3bUtBdXPVpFUz3ffgYdJFpjWN/5OGvAfZopkOsyLxdbnY1NzFtc94n7UHZBswxzRywZZQKiKOCI2Uwx5fL5VgQft+uYea1P0CLCx+tE79uaBWI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820327; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=iusH6Id3cScyZBJ70MHQrkKT09UZhEY5x2BOiKf1HmI=; b=cA08IhjQqLQ5EDii5acAJUzun75ia8mDP4RjbCOlQzEKf3m7ziJvlReIPi6XvTM4geiznibURbjTjqKA8R4MCIBvGDuuWV+7Qmpq5gHYpI1CR5MCxtYsyJY82V0AL73waIZUXklLqG4VFrVKiTBUA+RtiCu7ptxXOz5VBQPBOSQ= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784820327150141.96615317761268; Thu, 23 Jul 2026 08:25:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvDn-0005H2-8U; Thu, 23 Jul 2026 11:20:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDX-0004YZ-1e; Thu, 23 Jul 2026 11:20:14 -0400 Received: from mail-japaneastazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c405::5] helo=TYPPR03CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDT-00084Z-Au; Thu, 23 Jul 2026 11:20:10 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by SEYPR02MB7097.apcprd02.prod.outlook.com (2603:1096:101:1a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.10; Thu, 23 Jul 2026 15:19:48 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:48 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JkxZEaNqvqXtaj5sdaGORNU3LsSpmfrxnYNTMyMbwJ+UIr4QO45iMNBZSP2JLmXIZVOsBdE9UgiSaLkFTY/E+lnMtR8LOPC1Bok7rXLjcsIbua4LI9LrEYi5UyeeLaCZv22EayPKa7U9d3yU6qyPavidCgrbJzIqeNtTH9M8OvNvjSSjNXje6TBnBjQF6+eqLveoLorgfwhk5+CUPaTntDcL0SK2+7iCVvSnPFSLIUHfxSYAKDliPuNBaScanE/eGHzEa8P17gqV8FCTPnzdCOzy81Noq4f9JU2b+7ZUUXeTozOCFareXDHM8uEVo7UX3kZHvu6+cUTwGtNthzsZ3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=iusH6Id3cScyZBJ70MHQrkKT09UZhEY5x2BOiKf1HmI=; b=Btf915Zb8I/WFuIH+55aQ5g/B6kTwQfqbX4WDTA+G402b/a7rIKL5MSxQ5ZzLjJzpM4XFa6AG1v1NT0sdpqA2ec+lTpyiBBoGKhKGrvS+feuZyH9ALWA17mU6pML7a78NxtvnWhCFC0clvxRPL2POw+ufDAhrxNI67lV6RuShqrXxKKhiUGuaytc+vVaiy49CFzmHp5YILy+wi5j4nLuONfVoGk6kGn++xaXh67++q1QauU2qQtMC/Jlep+1ymZ95EYg7FTLZ8Bo5m6TaVPIJ/2YTIqE6qqY9fMSOSGwd+e3HbrtdifJ+26gVHi6FBIGWJgk7RGGHJXboCRe3Tyh8A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iusH6Id3cScyZBJ70MHQrkKT09UZhEY5x2BOiKf1HmI=; b=TJEfn9UjenlqBSCCE2ZLE+GStRS3ab7uzxFronHo1dcEjTTUdGKnqGNZy9zUP7oROohjOIXdxukOShpZ0ZVsNHnd8vWRrNcOBuZyE7I74+5a/xZReq3UDBN33QIJ1MKrOyKW2dr0lsmHK6EpKkuij+rrh+cxgxQefbRwXgv3HJ0VdAFckrA0frEupccwJs0g9qIfB4ytikmL2kT5zRoirB0q3v1G5q6kPiOkv9Ogx/P6c+gYTfEdYqv40r2ujLhOZW1Tz+wI/vWN/H2bmrP0WX9AHEbM1zTX7oG7twmRYTgHDjP+ySH+zB4gx2w61gtuaTR3QNXOKsdXrPdE4nLUQg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Alistair Francis , Chao Liu , Conor Dooley , Daniel Henrique Barboza , Liu Zhiwei , Palmer Dabbelt , Sebastian Huber , Weiwei Li , qemu-riscv@nongnu.org Subject: [PATCH 25/26] tests/functional/riscv64: Add Icicle Kit firmware boot test Date: Thu, 23 Jul 2026 23:18:52 +0800 Message-Id: <20260723151853.2143177-26-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|SEYPR02MB7097:EE_ X-MS-Office365-Filtering-Correlation-Id: a69ee280-1258-4608-d596-08dee8cdd5ba X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|376014|366016|23010399003|1800799024|6133799003|22082099003|18002099003|5023799004|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: uekLMgVMKWTjdDysFT23lK7jEf3rsjYWQimyUHovRJm1ouTmIVSjqrMDnuj5cisnEY0n1xYFTsOCpB9Dbgy7WjwAWwn4PHYi1hr0UfdxoTIfzdrE6GH9CuUVEu/Gz3WQNr+uzWHX/L8Q233VOacJFdyvbZ4NMdl43EmuJAPbnvYfjEl2e7kn7sXaUtOpyo4CNTy2s2vkqwNylFn8XZGNP0QKWBRK0r4Ad2SpRdMVnU1clxH8Tk8JhqaEThSjFnBYzi/5v/e4IHBSOLFicR8tntRdyRm2/qopRWcJ50vNOVqHmre/sJ7tjYNB2p1ZrUM9hsBefrS1rTVch/NiVTYIQZ2g/uInjvCtiz42ssUYLCGOGhiV0zuybX+a17zIsC0I7bYRLMx8Im65e0phLp0WwmbHaNGOcFnSI9rmP+nPMCb7Fpn6wOUno89G5/OYuZoNESwt9nWiBKrirrl8eOJ8LF/drlnNgk7X5kl0u7PXuxpJ5ORGY/53OLwB/qfBeq6/oFADdVj4xwq/RfFkJShIrlZ8nTovnH0mWC8P+WMFBzGDX5b8pekNSEJv2KSeXitQh8YDBoxf9tohC80J+rbj9bO0PQyJTgY7xbaSjL0Tll5Svqp4xM24t+E2eCYBxYij94FY5Mr7oLcIDC5fMfk0evlfKMOudVa1dtBi4fb66NU= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(376014)(366016)(23010399003)(1800799024)(6133799003)(22082099003)(18002099003)(5023799004)(10067099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?bPzJYZ0WL4lDLHH1KrC4c+dNhoFenLYpgRYF/L8ZZhxfDuyMvAgplf90XssG?= =?us-ascii?Q?NurVZZvFAhA8OpCnUwsSoMoVND+XxqXeX+35BLctILYNrrwC16aNO1/IiZoB?= =?us-ascii?Q?JkxdYuKflOAFc3Qi0MGc1Ozh3KFDELdX6ILFFvLkLHnheUiBKAHQEq2yO5Kl?= =?us-ascii?Q?Ld3te59CMoiu18TMIDu/N3TqqSHa1/jpkjXSVtMGKoiJ8w+SUdJ3bpZl/FyU?= =?us-ascii?Q?A01LpnM3f0ucoIeW5EF6Aw56Z7zTtRU0D1aUkOu8liYNcplijaubUD6gdUJn?= =?us-ascii?Q?UZvehAaDONlWFxKUniMTII+/+4p7TQUcLGOihBQ//Fo2ZRQyxm9piQ1iOLml?= =?us-ascii?Q?6i//nHAC93CJ9P9Ix35c9nZhzmUmW+at37vkcZCkMbM5ZTS4NeIbYRHLyXXV?= =?us-ascii?Q?A+HSwZsQUthAl7+C9Wuliz3PM6/9uty/bB+5/QPqsWMGWC04JduoLaL9+7yi?= =?us-ascii?Q?nWNvr74I8txeB4xMkEtyyQU7Y8WmYSSHiOH5Ct/qaZZENT97gf5jgEM/4hsz?= =?us-ascii?Q?HDg2cMYZ5mfnoxNEpWcV+tomZP0JXROcPK/4YO9vWs1+TaX+sPIAF3XgDiZ6?= =?us-ascii?Q?CpMuXW6DoXpEqRvcFpf/b3F4PAXndxlZYfs1tu5uPxgkYy8ZmKU83ynZ0t6y?= =?us-ascii?Q?zOb4NJnzoBbRW5Moey7HcWESESxnxv/SsHqrX6cNqLxqi8zUgqMI8+k5Oa1d?= =?us-ascii?Q?ekiFvomQTEWl837YLK6oKphNsfyHRSuOLHxUT5GOIrOtZ17QKZGI0YBQK0+4?= =?us-ascii?Q?2bhBy+2X0pBND2bqqMj13OVkLGT976gLPbxMgVuvtoSqGV0Z4vJtDjvxD8W+?= =?us-ascii?Q?jQRiMZELLjvXyxVa/0lHGBb2rQB5UpIQ7kVI+PUfB39m8BlRwV9sjprbtgcL?= =?us-ascii?Q?SMo/t2h/U8AqZ0HlSQQYwDwUmKY5YevL2uCDthfDLZVS9wQmam8AyCPBIn5d?= =?us-ascii?Q?ZRpylD8qZvCY/PdwmT5ilM3Q06gmFPd0kv85PzV07kOmaQVMacCciaTOHkQX?= =?us-ascii?Q?up9jCQw44m4Q1/G2+m4RV+FXXfLJu8qdAY1JoChgAKkmyWqL8ajP8DPVM0L6?= =?us-ascii?Q?bYs49hd8N5sj3A0XTHXj8qP9WB9hm6y4EIrk9kJrakksaRbOizziMlf/cipI?= =?us-ascii?Q?1EsvJPCz/vjCjcuoaA1uDTBuuyFloVeFDJ8AgGSqOaDXMIudZM9R4SAWq06P?= =?us-ascii?Q?FSBf4ZdmmCvF+z8uOdtnBhzcQC7VT/awVK0LL8a/xOyUNibrgKx+7FDclRf3?= =?us-ascii?Q?rIoz3oUuaYbHhsBrlW02KUnA8bZ/jyvfupVruN0jmSHa9UeEVTthHSBJvGso?= =?us-ascii?Q?Fo7Ee86hR92wvOdLr1WAKUNdn/BxbKlxkYlCmxMkR3fG2GXKB/eUzlcdwVZH?= =?us-ascii?Q?GuyPFgc/USowX9z5+iMB5iqU6yl2o5tGVTm7pTivBYAu7buNbGaPwMpjXVCM?= =?us-ascii?Q?9RzAKCIymyHSU7nhlPwzGcD9hYGvWFy9gc/tVXkMsScpMm/zQHSoXPb2x61Y?= =?us-ascii?Q?gc+K8ztswDZlkBtMFqtj/HSzrqu+Nm8R+Ygn2bDPonNgfZaJpz1qBy/TECCP?= =?us-ascii?Q?YwFj8ULvLTs2VB9KHO03PENVz/7vRxF0phrrUCJSIpe2mqK6RRFVYlMcvWpq?= =?us-ascii?Q?2kgReVJlS0WfKAyJl+GuAtJ2lXRUwwD56F3A8l0p9ezQOOK4n8SKflVC/tKd?= =?us-ascii?Q?Z8xwAWHyReuphG8AvPpp5aZMhTlXJ4TxyK9D4gPH+zmUGXQpSxwSYZSth8HN?= =?us-ascii?Q?2cdHZF3odKjpQUx5GcGJ+ZMAKEVwaq8=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: a69ee280-1258-4608-d596-08dee8cdd5ba X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:48.6517 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 8P/7usnrMGsGeSxK/KNjQWIonqqE1/nVipjEBR5fnyGophRfc7GZ9GVKgb7jr0uujQd3X1LYqENQkYqMpwm7MmIDS2HkkAKMmjAOytaR5AA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR02MB7097 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c405::5; envelope-from=bin.meng@processmission.com; helo=TYPPR03CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820327608158500 Content-Type: text/plain; charset="utf-8" Add functional coverage using prebuilt HSS and SD card images. Boot HSS and U-Boot with five harts and 2 GiB of RAM. Connect the test console to MMUART1 and let U-Boot start Linux. The complete boot exercises the SDHCI controller in the DMA modes used at each stage. HSS uses Version 4 64-bit SDMA to load U-Boot. U-Boot uses ADMA2-64 to read the boot script and the large FIT image. Linux then selects 64-bit ADMA for SD card and rootfs I/O. Check the machine identity, kernel ADMA initialization, root filesystem mount, and login prompt. Signed-off-by: Bin Meng --- MAINTAINERS | 1 + tests/functional/riscv64/meson.build | 2 + .../riscv64/test_microchip_icicle_kit.py | 52 +++++++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 tests/functional/riscv64/test_microchip_icicle_kit.py diff --git a/MAINTAINERS b/MAINTAINERS index 4bcc59f1cf..800a2f31cd 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1780,6 +1780,7 @@ F: include/hw/misc/mchp_pfsoc_ioscb.h F: include/hw/misc/mchp_pfsoc_l2cc.h F: include/hw/misc/mchp_pfsoc_sysreg.h F: include/hw/rtc/mchp_pfsoc_rtc.h +F: tests/functional/riscv64/test_microchip_icicle_kit.py F: tests/qtest/mchp_pfsoc_l2cc_test.c F: tests/qtest/mchp_pfsoc_rtc_test.c =20 diff --git a/tests/functional/riscv64/meson.build b/tests/functional/riscv6= 4/meson.build index d1a3e6c2bf..cbf61d9535 100644 --- a/tests/functional/riscv64/meson.build +++ b/tests/functional/riscv64/meson.build @@ -3,6 +3,7 @@ test_riscv64_timeouts =3D { 'boston' : 120, 'k230' : 120, + 'microchip_icicle_kit' : 180, 'tuxrun' : 120, } =20 @@ -15,6 +16,7 @@ tests_riscv64_system_thorough =3D [ 'endianness', 'boston', 'k230', + 'microchip_icicle_kit', 'sifive_u', 'tt_atlantis', 'tuxrun', diff --git a/tests/functional/riscv64/test_microchip_icicle_kit.py b/tests/= functional/riscv64/test_microchip_icicle_kit.py new file mode 100644 index 0000000000..a75803fb84 --- /dev/null +++ b/tests/functional/riscv64/test_microchip_icicle_kit.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python3 +# +# Functional test that boots HSS, U-Boot, and Linux on an Icicle Kit. +# +# Copyright (c) 2026 Process Mission +# +# Author: +# Bin Meng +# +# SPDX-License-Identifier: GPL-2.0-or-later + +from qemu_test import Asset, LinuxKernelTest + + +class MicrochipIcicleKitMachine(LinuxKernelTest): + + ASSET_IMAGES =3D Asset( + ('https://github.com/processmission/qemu-machine-images/releases/' + 'download/v1.0.0/' + 'riscv64-microchip-icicle-kit-v1.0.0.tar.zst'), + '8a8a831f5a1715503abf88386fca81c8e5edb303bff0265118f6ac35a725d27f') + + def test_microchip_icicle_kit_boot(self): + self.require_accelerator('tcg') + self.set_machine('microchip-icicle-kit') + + archive_path =3D self.uncompress( + self.ASSET_IMAGES, target=3D'microchip_icicle_kit_images.tar') + self.archive_extract(archive_path, format=3D'tar') + firmware_path =3D self.scratch_file('images', 'hss.bin') + sdcard_path =3D self.scratch_file('images', 'sdcard.img') + + self.vm.set_console(console_index=3D1) + self.vm.add_args( + '-smp', '5', + '-m', '2G', + '-bios', firmware_path, + '-drive', f'if=3Dsd,file=3D{sdcard_path},format=3Draw,snapshot= =3Don', + '-no-reboot') + self.vm.launch() + + self.wait_for_console_pattern('U-Boot ') + self.wait_for_console_pattern('Starting kernel ...') + self.wait_for_console_pattern( + 'Machine model: Microchip PolarFire-SoC Icicle Kit') + self.wait_for_console_pattern('using ADMA 64-bit') + self.wait_for_console_pattern('VFS: Mounted root') + self.wait_for_console_pattern('mpfs_icicle login:') + + +if __name__ =3D=3D '__main__': + LinuxKernelTest.main() --=20 2.34.1 From nobody Fri Jul 24 05:22:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1784820243; cv=pass; d=zohomail.com; s=zohoarc; b=fNy6VnrUlLMT66l5MRrk/a+W+LdHW7gS5alH7fY6WFg1WfgK0zaHeLcXGRBVFE3L/JCY2FLRd8zCdDT5JNd9IliHJEZozlPlgU4W9g0oOnkCERbjeS9lTnARFdhV2+4RCBv4aewXtFRGprN9pwS/eYbI4rUOxSlIAG0JbSh6J1s= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784820243; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=kVzoya2/6sCmKoTE7/fcejn9pLd19yjkvzqx22ES6O4=; b=DHAKsVvNq3Wo6WY++HOCsIsLArIi2mTS5qYyFj+x/sEpm1RoVHEA9jR3PRUh393LH3Di6EmD1D/RaKKsodSu66mGPYW1cdizzDWhKqMIgpta+Fay1OVMR7kB16Dehq9lEceaH15F4Z0gXqJ1cspxjcq3UKQ/AnrJ+GAc/XRch7A= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784820243653316.3476307705272; Thu, 23 Jul 2026 08:24:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wmvDq-0005RX-Ap; Thu, 23 Jul 2026 11:20:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDZ-0004ab-J7 for qemu-devel@nongnu.org; Thu, 23 Jul 2026 11:20:14 -0400 Received: from mail-koreacentralazlp170130006.outbound.protection.outlook.com ([2a01:111:f403:c40f::6] helo=SEYPR02CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wmvDX-00085x-34 for qemu-devel@nongnu.org; Thu, 23 Jul 2026 11:20:12 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by SEYPR02MB7097.apcprd02.prod.outlook.com (2603:1096:101:1a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.10; Thu, 23 Jul 2026 15:19:50 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0245.010; Thu, 23 Jul 2026 15:19:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QXs+LkknaIEoVHg4y26frxqeDoURRhkhzZ4LkXUDbhuVZhN/UN8aU5WvWR4Uk11CAu4uhUg7tXAshTUhRVf7tCV6Lt1mC2Z4ptrebG4pbjGly9GkowgtsGkUkfrt25FnnfXvo66supColA2d1ukT752QdcRg5NKXRvt9pzgSNKx/cX2Ajd/AyVTDTkjt+rYoeNTCfWMQgrx1JaayilXEZ101ZBTBhuKd3wo4ZpB3QOdMq3QvQTC+muWMnSyb6RM0CdC04JlzNRmn0SXcNr/7j3Y0h9Ofx6UuseMtOwEZOwh2zhVGscNlWaLx37AZZgSo7Evj120Qh/Kx8qPYj9QogQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=kVzoya2/6sCmKoTE7/fcejn9pLd19yjkvzqx22ES6O4=; b=rGXhW6vNO0xlLIOIrQrxO1g56wWtldI7Y9ynw4bnjxYUNwyNlLZvrObATs7n8El82UfX/G8xhmQbXV7bo4QRUDtkiafOR973CLcpLVIuRrfMDJu1T0R386T+v5xrnf+B29qzLGXtF/kwQCIcw+Dlxm8zm6+y088FMIf779Z7phtac/Dg2E6ZrIwG9xytlSaxzT8R1xrKrZRkD3qplSOb6xaT6owge0Gxn8Sce031WiHQTWJWGdsVnjKpdyTxi2t/DFkBtkM0rVbeOmpl8rY5u8rfP0bMT/yJlH2tb8OCVvE6veG8NkW65u9afjvIlm8rmq6aIge0sHp0USF4+ghwxQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kVzoya2/6sCmKoTE7/fcejn9pLd19yjkvzqx22ES6O4=; b=Za2kOipOUzVXwy0O5WMaqCjRn1KlZFH7F1PkIT2XZHGgOCeGQ42P3B5vLs9SCTaScHbUUF6qT+NsEtjApYirsZa9rGspcd/0g1TzOtYpCFtRLlxgGWG4fU8Um1bhJzuRO2PdRgxqZF97RokVBy69PtN8LCIyanlZyNy5t/cQHNUr8t8t83Oks3LzgT6RlPJgVF3AG/EO9GJwVuk8JXQCR5vPWCZDkRMX5z0JquyoVcVFQTdXo09T797qaMDFNQ+kCvP2f9okMFzTTsyJEvrud2N1xZRjClikGSQEjxmGpJaZj6htNLlKERDtWEd3QRddKSHZ/KeBHm+VUskEtRcxpg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Markus Armbruster , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pierrick Bouvier , Thomas Huth Subject: [PATCH 26/26] MAINTAINERS: Add PolarFire SoC Icicle Kit maintainer Date: Thu, 23 Jul 2026 23:18:53 +0800 Message-Id: <20260723151853.2143177-27-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260723151853.2143177-1-bin.meng@processmission.com> References: <20260723151853.2143177-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU0P306CA0037.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:29::8) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|SEYPR02MB7097:EE_ X-MS-Office365-Filtering-Correlation-Id: 994f1e24-430c-44b2-7ad2-08dee8cdd676 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|376014|366016|23010399003|1800799024|22082099003|18002099003|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: iAFSA6MTwYbdOmFM7oclmP6pSl+fafI7O4Gpq0B2hILIaiz3T1On5I0dKWeWt/ACgTbo6zhvovXz6M/GRq9H6qDdGp1XbuEW6xhO5RcG+asbzfx/gew95to9jYnDIl1xtm8NvdTw/PpQnQeP1TrU3HlTmRR/tJUUAR2NXbmhYDBhQ0U5WFCjrqfhPx3+g5J/wyo++2UXeXzidnF2lLcQv9sdlAvHJZj+24Xl97leSWL70DxlVCJzqQI+BE9TptXFVX3Zlwufv9Mp8pveuwj81Vyu/YJOPJ9eZYkempFW8biFEJo1T3ldHD4ib0BGHVPTv8r3FbDM12X+BaRBHwH09JHnFbKQyMahIj1GURNq8B62V23g5rncrYQAjkhoMCv4NaQq6zEHcfUsRM6Dd9fEwIPYJhs5nvqz48sdGr7L6W0CtDsS/7JHzcZA107u+Z9JTg1tuTR/RHyD6/hC6DfGxh2RbajswDDCxGtHdtz6cSv9NjjM3Lcwi4JTXHeHxskDcM1oTwV3v/h2ZFzuHGQRSfpWqTeHDJSOfhKTI+FcI97P5nZ+fH2+z0pmxFRFvKH3B3ZN+6eHTuwwC5gQ/yHTUrlRI93QmbRUEXtkgHHVJIOxMJw8M8WKKLCGD7FefIWHdNcijvrDIsFQl4eP5bxoa1Bnc3zJfZrQtk+HdZL1TdE= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(376014)(366016)(23010399003)(1800799024)(22082099003)(18002099003)(10067099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?MMsZHsteeJRhCTYZczBpoOr4qU2aC7W1FAdK1denQwCN8LUHKqU77cZq7Qq3?= =?us-ascii?Q?UFYMtfaCwVVZpIjbgi+RrPIu/wxR/L9xMhqHJErgDm0vegmJAaW46MJ5FIdL?= =?us-ascii?Q?3+2CZi3/Drvdm7AY7T/RyRpJA1oC3LFsqyDCXVF4fhJ4bBZbgNtA6/Uw738i?= =?us-ascii?Q?1xoBlPiQ9VWFCq80nyQ3XHvGEisR2vKY+EZuYmAHC1Jeyvrlvbq7SYbbJvS5?= =?us-ascii?Q?zrzc++9cd7/KWDjVcAdBUXFXTjC57Kek/OqlzWIZ+GWDDNJTKhPgkbRMOTrH?= =?us-ascii?Q?N5onn08gMV/GDljsGXfxAy6zYOw2xCz3/GKtnIdkcWGIHsJrOSz33gVxjvQH?= =?us-ascii?Q?A82yFk9afLB7oNECtibQbOyx/DhfIqwiQIqAmNgO7HbSuAlSswlhmF2rbVFe?= =?us-ascii?Q?cx8zQB7NSbFQI1XlZ4PtIljfV8VEQgykPvTg5G0HMm5Z7zreMNgEGCRAgmMF?= =?us-ascii?Q?LrKzFxWbsP7dx+WxEkx/w7HD6h92q67lFCizJ5/ymxl7bvBfLq0QDGzQ94BU?= =?us-ascii?Q?4yed6Z4tYi+UuAIshfp6Pn9z6i8B00rBitZGuQ1RtqgzzulyPhea/InryJ8p?= =?us-ascii?Q?HwQzmvNDVtNOyNmeR2tiPudhfSb92/12twUUlTK0ymeUGbKAjBGjYr4K3skJ?= =?us-ascii?Q?5XGQTJ6m5ubTrKqkdq0Xi+BlFFtAfqr0DrTA0l34tw1SvmiMBavzSs0dYch6?= =?us-ascii?Q?t0nyRMj5QUU4qFDZiL3KnCqHY4Q03nZ9S22Ly3gRzS6Q9nmsjER1/LraCcFH?= =?us-ascii?Q?2lW2NNvxFYVljJQQ6xPnuPfOiTYxdCOaTB7WnnAhTx/iMndvB7SjsZvQZ0FL?= =?us-ascii?Q?huJCh+jn3GxWI1Lz3/LnFF8tp+mlSoIkqmY2P1EtFb/SuQPPvTnUK6hOw1by?= =?us-ascii?Q?txq+VT8tRW9KGilx5XH6i2eVzHWrRf5NHFB3+DRJDUKwHt63YOaIFh/ve+k7?= =?us-ascii?Q?CSf2oXaCuF15oI+ju9lBrrANfwikoC+xxdep3mzCVnpUqgeB6AxbvyxNn0Oi?= =?us-ascii?Q?unkaU0BldAHz1VN/j6UHbr8PENcOVR5UyXSy4eH/XigduqPX6qC+mbAxgQYs?= =?us-ascii?Q?8oKhsGbvXFgLEnSoVkorj+EKr5X5osM34yVOpeJq0J++8pwr9ZTVKgzRqpUm?= =?us-ascii?Q?RxYtq3jBCqrpCQHUAkdZfWki7KGwmxJXPNhTZ6Xp0Z09yZOlBVubhOQszlZB?= =?us-ascii?Q?YAZUmadSCimywnDu8MX5ciwra8ApQcsDSCpffr2pDuXYUwkC+n/UleHjUX1J?= =?us-ascii?Q?84Jqit7KrPGM65qgDE3mIuspuLyAJiqIjhGEMvvev8fxco5T7rlEcSwbc9ov?= =?us-ascii?Q?n0hLPhyb7la88hFnul2XIIuOYdijnz0prgqQUtJkGnVu1okYiX6aKIlN+v3j?= =?us-ascii?Q?UCaolnWwWTwvfA5m8rfHgB51QboZIsCD22u1V6zgFsE9HL/87VcixPB2KqUW?= =?us-ascii?Q?uxYvBJS48Aeu94/N4o7XHhW8JaYpb/qx1FU64y0UIRnIbOueWmLgWahyIWtO?= =?us-ascii?Q?4GLWVPzJgGxZz7ikwH/rcz7lIkkXmbGOR9d9wjCRIOvZ+y1WdicI2FotAzCe?= =?us-ascii?Q?u74iynfIYBcU5pYLBTM9xXDmdmr62nYlJ0QfEs9LqBdhB1rj3DVvlN+NCX1Z?= =?us-ascii?Q?sfrZCeoYFI3k2lsTy2jwHAjVB71L/VcpqPQxYdlT1+F3QdnCCWVmazib7N2N?= =?us-ascii?Q?9BQbQigaxlGdA1csc4LXsHeE2mmAMU39a8o/hYImg1Jalxoy/QPI3WlEL2mB?= =?us-ascii?Q?BLGozRQr0HWTdJMB7TTJJSWkkL9wEmU=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 994f1e24-430c-44b2-7ad2-08dee8cdd676 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 15:19:49.8831 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 8dVII6GvlzzJhkZ2T29BBshoOJTDUY8nliEQYtrbwMYYCRkBAofWVsq9HNNFCU+nSeZdXVhYI8LxbxVfyaBR2lWG9Q+4xNH8Ctab22dCIc4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR02MB7097 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c40f::6; envelope-from=bin.meng@processmission.com; helo=SEYPR02CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @processmission.com) X-ZM-MESSAGEID: 1784820244799158500 Content-Type: text/plain; charset="utf-8" The preceding Icicle Kit updates restore HSS, U-Boot, and Linux boot. Functional test coverage is also added. Restore myself as a maintainer and mark the machine as 'Supported' to reflect its active maintenance. Signed-off-by: Bin Meng Acked-by: Conor Dooley Reviewed-by: Markus Armbruster --- MAINTAINERS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index 800a2f31cd..9ed60d14a5 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1761,10 +1761,11 @@ F: target/riscv/xlrbr.decode F: tests/tcg/riscv64/test-crc32.S =20 Microchip PolarFire SoC Icicle Kit +M: Bin Meng M: Conor Dooley M: Sebastian Huber L: qemu-riscv@nongnu.org -S: Odd Fixes +S: Supported F: docs/system/riscv/microchip-icicle-kit.rst F: hw/riscv/microchip_pfsoc.c F: hw/char/mchp_pfsoc_mmuart.c --=20 2.34.1