From nobody Sun Sep 21 20:11:36 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671355; cv=pass; d=zohomail.com; s=zohoarc; b=EmnWx/vEE525UsPomrKfcXoWhvqVlo1sJDJ0+XNuy0hBhM+JQFwYIsucU5N2E5t9T5anl+UMb6FSdvIbsg8FiZ+JIEaHDdChPHthMkx89c+bmQ3FJXddpEprZXmUxcWmu6cMfMMHUL/+SIUkQIM3PNNJTnsNpUG58oi4FXjYgH8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671355; 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=Efn7Wd4/4cD8VpnlV5844GVHoLIv9tcZ8b9zDqArtYo=; b=Jz28I+uUiwCYO9it0qUfagGPpenR/RamkRiwI+wVkw+Mdz08ODPdYq5MzOH32E898oxUbb3eTYUQQv+EVaGggwZoRA9j2mpOUqHogcY7W3nBeOB48JIbHzsi1Rrgyz+UFkm3+O6zvz18NIorkEYvZ3BlrtDrZL+/jb9emMc5YWU= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671355752741.4849314993064; Fri, 12 Sep 2025 03:02:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0b6-0004vW-Cb; Fri, 12 Sep 2025 06:01:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0ax-0004ug-AS; Fri, 12 Sep 2025 06:01:33 -0400 Received: from mail-bn8nam11on20627.outbound.protection.outlook.com ([2a01:111:f403:2414::627] helo=NAM11-BN8-obe.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 1ux0ar-000100-8H; Fri, 12 Sep 2025 06:01:31 -0400 Received: from DS7PR03CA0056.namprd03.prod.outlook.com (2603:10b6:5:3b5::31) by SA1PR12MB6995.namprd12.prod.outlook.com (2603:10b6:806:24e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:01:16 +0000 Received: from DS1PEPF0001709A.namprd05.prod.outlook.com (2603:10b6:5:3b5:cafe::1d) by DS7PR03CA0056.outlook.office365.com (2603:10b6:5:3b5::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.18 via Frontend Transport; Fri, 12 Sep 2025 10:01:16 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS1PEPF0001709A.mail.protection.outlook.com (10.167.18.104) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:01:16 +0000 Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:16 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:01:16 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:01:14 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=c5Dk/F5KjsQxGVCXr7JZJRALr+hjWChB5v5xEnfyl1emEHZbo8yQQXJYIb6iRpsSX+MvMPxgdtK+BTfrcs38F7MpaLZDyJFiQfVwFeYc+V7h9RjG1BYfUhS0+g0xS1Z+0MsO6NCSoyKraGI3JbdX1CSkyIuN7uXab0gm5IfiH/ueCtckimwx/2YQZytjLeBNFXCSLUbuACMt8NDCfDMFxjXhw5mMtzZqhxMxcSVV6UqwU32ST/07ksjH5NcJJoPIZzIT8xMgblq8GypJcS9myvGYJYIhA8Ztm3nptyvf2xpuvKSZgVAyOdFF8Cnf8RaDyLElmwg7nvrwgaPakeoxZw== 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=Efn7Wd4/4cD8VpnlV5844GVHoLIv9tcZ8b9zDqArtYo=; b=QJuJCyHhUldw+RgB42nlg+3sDEUxZ1lfxMTBCOOJancuDDMHjDgmcwo0oImLASHsv+wueKOmJUDLzekV1M35FbeeKouZrAZ9Frmv22IZTHCCaGoxE/pEaK+F9MfUEbNBUb2hf6VOIfomS/KpP/R5tx4ntOEHaYSJ+N139oDZGaJAKS81AaUBS19A5sEjWt9nGV8REtV9pPenPEIQFpWE6nYjtly7sjDpEvL8T3zp8jMG+HWliXyMMBXYBkcPjEUlRPmpk1n9X0zLHPwalW5HniAkfrVSS0nk3pEQ9u3KX5rsWYcXu1OF3euLI6mTOLHB2z2X51kCjc3k/3kLAiF/qw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Efn7Wd4/4cD8VpnlV5844GVHoLIv9tcZ8b9zDqArtYo=; b=OpcVUxbZAWCukwJPs6zz34Im1hrsgIHpyYMVkb1sbbyChH+88ZrjR/Bn2ki9+w1m8zx5uR/B+Q2UUh8CjSieB3SzGFL1A7LScCi4LN4WmNEtIPk6rSm4mELu/UZgkc4CL0iKcBV+njgI7sDkr60jz+RRAUg5k9wL4ALPz5dw/q4= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 01/47] hw/arm/xlnx-versal: split the xlnx-versal type Date: Fri, 12 Sep 2025 12:00:10 +0200 Message-ID: <20250912100059.103997-2-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: None (SATLEXMB04.amd.com: luc.michel@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0001709A:EE_|SA1PR12MB6995:EE_ X-MS-Office365-Filtering-Correlation-Id: 2f863cdd-e285-4e00-aa1b-08ddf1e35080 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|376014|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: =?utf-8?B?ZW1rNFRDbFRVeWM0WWRHZnJPTkRoeGIwVUJvVzR5c2hrMlMvbk5sNEYrcnNt?= =?utf-8?B?ekF0T0JpZGIybFg2T2J6THZLaGJDZzlXbXhzby8zUHpSTytYWHB2UmV0L0w3?= =?utf-8?B?Z1JlcS9XcDV3MzVja1krb0twT05ZK3AvNjgvYW0zWTlLa1FGM3BUTVpBdGxI?= =?utf-8?B?Qy9hZkxsYWdyaHM4NWl4bVNPajY1enV4WWxmdFVNbUMvREdGcDVaajdSUHU4?= =?utf-8?B?cktXcTc0RHRHRXk4NTlVQ2ozTHRWM20zWUR3ZXdJTDhTSTJpSG0xVHNjMVdy?= =?utf-8?B?dXlDTjBRZFhmbHBTOWtmdkU3MkxLU21hMmJwSzVYSmVCbkhOVWxobUFOS1pS?= =?utf-8?B?RW1GOXJxV3NpNVlleElFcTRwUlZ0dmdSakxIT0h3WE54dTdCSHNmSER1Mm1M?= =?utf-8?B?akROVmpIOGtQYVdQUnZDWGJJTG54RStxZTNYdyt0WFlEZ3dUZzRXNVFWU2F0?= =?utf-8?B?YTcrQW1rZDQ5K0lQckMySWhSQVd4Qm1FTUE0SnhyYmpNUE5Fd3pTUFRNRkgx?= =?utf-8?B?RGY1QjBudTZTVzEreExsZWs1aDNKdDNzVUFDVkY1WSt4S0RTV3ZLZUs4VEVj?= =?utf-8?B?NTlkNTg1aVdoQWpFUFhCeWM4aXZaZTBScEN6NDQycloxQy90NXBGYnJaa2gx?= =?utf-8?B?bm1OZVdCbzg5ekFqYm9pdDNZODAvL3RFSHJGejhmdTBKYllDaGNhbXZ5dk8x?= =?utf-8?B?K281cENHUzdlYVpFaFR6alJqRjFsdzZ5TEVzUVRsZGhrVHMvNC9YK21acEs0?= =?utf-8?B?STR3dlZYSkx0eDMxSzVrQUZxQjh1Sll2NjdYSzRCMjRsdlZqU0pCb1NsMEVN?= =?utf-8?B?WktHdzVyNzZtVm04SERBVzh1OUp3d25vL1pXeFpueFBhRnp3TnBHVWlFSTJJ?= =?utf-8?B?VFBpVFpHVU1SeFNvNnIyZys4MUF4QjNiZTkxT1Z4LzhOOGVMTFZlVTNra09H?= =?utf-8?B?STIrdC8xK3REUEt3NmdwU0Zvai9RMmhackJ2bDQyZGYvZldVT0s1ZFNEd1JQ?= =?utf-8?B?aTEzNk1pdU0yMmdhMDlIQnUwZjRtSko4dUE3ZHdFTlR2ZEpBKzQ1b3kyb0lh?= =?utf-8?B?eFNLOS9RR2llNUxNVWdHTUEybm5PM3dWMXZJT1B1QXhjUytCMVh5NDE0QnZu?= =?utf-8?B?QVhaNTlVUHZ0cVRBOHFNbStGSXlQbHF3QlA0NTc2alNCWFhYRzlyU0Y2VDJQ?= =?utf-8?B?MHFZMmNYUTRpaDRra2tuVnRySUozbDhrb0lhRDdjRmVnYUc2MFpCcGZpdm1L?= =?utf-8?B?OEFVU2hpcU1DRjZhbXFrUEp4TS9qdWhRR1grZmlCMU5pQUFWbEhkaitxTHJw?= =?utf-8?B?c0NMbDg4Um1oK1dZQ0VORmhrby9xTCt0U21nYkkzbG5UNERmNmFpWlpzZ2tu?= =?utf-8?B?QnhtbVhzZjBURWsxbUU5R0NlUGRMazRIZExHSDQvd0RUYmtmRE9POFRyVG1I?= =?utf-8?B?OWpIbEhlY2xwSG5GY0ZKcEtUdkJudjNtaGRXRHVsLzU5cFc1RjIxQ242T2F6?= =?utf-8?B?RGRibnRpeEwvYWVHbGxrTjNEeXVnMWVHN0p5V21wV29qVHc4MjRVdkxNdytw?= =?utf-8?B?TE5MVXZqQ04raXI2ZkxuaTVEbU1CRnh5VmQ5NzRKa2hoaVdVYzBMOElReFQy?= =?utf-8?B?MlpHN2duNVBZSzV0K0VOZmJoRHFMeWh6UmsrazR2MjdQaER6MzBGOEplVVEy?= =?utf-8?B?V0U1b05zc25MSTlTeWwwRTR5aGJIYXoxN0xFK3NyR2JyM2ZicGZmSHl0ZW5o?= =?utf-8?B?Wk5vdUVLSGZ1N0lnWmV6V1hrWG1pQUs0VkZWY0JUQjBHdUZIMnRMT3pxRHpt?= =?utf-8?B?Q3dIa2ppc2lsMW85Y3U1V1VRV015dnVoNFYrdW1aT3BNVzgySU1FVnU4M3N2?= =?utf-8?B?SjFhdG9aRytsZk9ObnhnS0RJNENibWIwM0lPS3Z6eS92VGI0MC8xMWo4Z21R?= =?utf-8?B?bzhJYlVsOThnbnNJY1pPNGlUb2t2SExYdnVCWHZMQzA1OXo0Sngyc0JoUEI4?= =?utf-8?B?cnBzMk1HT2RtVGM4cHhDY0F2aVJicDEyZDNDVXdSYWdDdUFCbHRwVW5DRmNL?= =?utf-8?Q?zt8Z+4?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(376014)(1800799024)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:01:16.6105 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2f863cdd-e285-4e00-aa1b-08ddf1e35080 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0001709A.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB6995 Received-SPF: permerror client-ip=2a01:111:f403:2414::627; envelope-from=Luc.Michel@amd.com; helo=NAM11-BN8-obe.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1, SPF_HELO_PASS=-0.001, T_SPF_TEMPERROR=0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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 @amd.com) X-ZM-MESSAGEID: 1757671357260116600 Split the xlnx-versal device into two classes, a base, abstract class and the existing concrete one. Introduce a VersalVersion type that will be used across several device models when versal2 implementation is added. This is in preparation for versal2 implementation. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Edgar E. Iglesias --- include/hw/arm/xlnx-versal-version.h | 15 ++++++++++++++ include/hw/arm/xlnx-versal.h | 12 ++++++++++- hw/arm/xlnx-versal.c | 31 +++++++++++++++++++++------- 3 files changed, 50 insertions(+), 8 deletions(-) create mode 100644 include/hw/arm/xlnx-versal-version.h diff --git a/include/hw/arm/xlnx-versal-version.h b/include/hw/arm/xlnx-ver= sal-version.h new file mode 100644 index 00000000000..c4307d1304a --- /dev/null +++ b/include/hw/arm/xlnx-versal-version.h @@ -0,0 +1,15 @@ +/* + * AMD Versal versions + * + * Copyright (c) 2025 Advanced Micro Devices, Inc. + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef HW_ARM_XLNX_VERSAL_VERSION_H +#define HW_ARM_XLNX_VERSAL_VERSION_H + +typedef enum VersalVersion { + VERSAL_VER_VERSAL, +} VersalVersion; + +#endif diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 05ed641b6b6..1f92e314d6c 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -1,9 +1,10 @@ /* * Model of the Xilinx Versal * * Copyright (c) 2018 Xilinx Inc. + * Copyright (c) 2025 Advanced Micro Devices, Inc. * Written by Edgar E. Iglesias * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 or * (at your option) any later version. @@ -33,13 +34,16 @@ #include "hw/misc/xlnx-versal-trng.h" #include "hw/net/xlnx-versal-canfd.h" #include "hw/misc/xlnx-versal-cfu.h" #include "hw/misc/xlnx-versal-cframe-reg.h" #include "target/arm/cpu.h" +#include "hw/arm/xlnx-versal-version.h" + +#define TYPE_XLNX_VERSAL_BASE "xlnx-versal-base" +OBJECT_DECLARE_TYPE(Versal, VersalClass, XLNX_VERSAL_BASE) =20 #define TYPE_XLNX_VERSAL "xlnx-versal" -OBJECT_DECLARE_SIMPLE_TYPE(Versal, XLNX_VERSAL) =20 #define XLNX_VERSAL_NR_ACPUS 2 #define XLNX_VERSAL_NR_RCPUS 2 #define XLNX_VERSAL_NR_UARTS 2 #define XLNX_VERSAL_NR_GEMS 2 @@ -135,10 +139,16 @@ struct Versal { struct { MemoryRegion *mr_ddr; } cfg; }; =20 +struct VersalClass { + SysBusDeviceClass parent; + + VersalVersion version; +}; + /* Memory-map and IRQ definitions. Copied a subset from * auto-generated files. */ =20 #define VERSAL_GIC_MAINT_IRQ 9 #define VERSAL_TIMER_VIRT_IRQ 11 diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index a42b9e7140b..4da656318f6 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -1,9 +1,10 @@ /* * Xilinx Versal SoC model. * * Copyright (c) 2018 Xilinx Inc. + * Copyright (c) 2025 Advanced Micro Devices, Inc. * Written by Edgar E. Iglesias * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 or * (at your option) any later version. @@ -918,11 +919,11 @@ static void versal_unimp(Versal *s) gpio_in); } =20 static void versal_realize(DeviceState *dev, Error **errp) { - Versal *s =3D XLNX_VERSAL(dev); + Versal *s =3D XLNX_VERSAL_BASE(dev); qemu_irq pic[XLNX_VERSAL_NR_IRQS]; =20 versal_create_apu_cpus(s); versal_create_apu_gic(s, pic); versal_create_rpu_cpus(s); @@ -953,13 +954,13 @@ static void versal_realize(DeviceState *dev, Error **= errp) memory_region_add_subregion_overlap(&s->fpd.apu.mr, 0, &s->mr_ps, 0); memory_region_add_subregion_overlap(&s->lpd.rpu.mr, 0, &s->lpd.rpu.mr_ps_alias, 0); } =20 -static void versal_init(Object *obj) +static void versal_base_init(Object *obj) { - Versal *s =3D XLNX_VERSAL(obj); + Versal *s =3D XLNX_VERSAL_BASE(obj); =20 memory_region_init(&s->fpd.apu.mr, obj, "mr-apu", UINT64_MAX); memory_region_init(&s->lpd.rpu.mr, obj, "mr-rpu", UINT64_MAX); memory_region_init(&s->mr_ps, obj, "mr-ps-switch", UINT64_MAX); memory_region_init_alias(&s->lpd.rpu.mr_ps_alias, OBJECT(s), @@ -973,28 +974,44 @@ static const Property versal_properties[] =3D { TYPE_CAN_BUS, CanBusState *), DEFINE_PROP_LINK("canbus1", Versal, lpd.iou.canbus[1], TYPE_CAN_BUS, CanBusState *), }; =20 -static void versal_class_init(ObjectClass *klass, const void *data) +static void versal_base_class_init(ObjectClass *klass, const void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); =20 dc->realize =3D versal_realize; device_class_set_props(dc, versal_properties); /* No VMSD since we haven't got any top-level SoC state to save. */ } =20 -static const TypeInfo versal_info =3D { - .name =3D TYPE_XLNX_VERSAL, +static void versal_class_init(ObjectClass *klass, const void *data) +{ + VersalClass *vc =3D XLNX_VERSAL_BASE_CLASS(klass); + + vc->version =3D VERSAL_VER_VERSAL; +} + +static const TypeInfo versal_base_info =3D { + .name =3D TYPE_XLNX_VERSAL_BASE, .parent =3D TYPE_SYS_BUS_DEVICE, .instance_size =3D sizeof(Versal), - .instance_init =3D versal_init, + .instance_init =3D versal_base_init, + .class_init =3D versal_base_class_init, + .class_size =3D sizeof(VersalClass), + .abstract =3D true, +}; + +static const TypeInfo versal_info =3D { + .name =3D TYPE_XLNX_VERSAL, + .parent =3D TYPE_XLNX_VERSAL_BASE, .class_init =3D versal_class_init, }; =20 static void versal_register_types(void) { + type_register_static(&versal_base_info); type_register_static(&versal_info); } =20 type_init(versal_register_types); --=20 2.50.1 From nobody Sun Sep 21 20:11:36 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671356; cv=pass; d=zohomail.com; s=zohoarc; b=fvbBmtT39flh4qxJqt/WFjdPlL+46h2FQjaZf3kwuwHMruGQlx8vlzCEfajOiUvcDe3nTam8NPlClnuyZ5HGoh+pMUyzyGercvvjooMoP8y8huE2fCRWEouNYVTPypTHRccmG/VGMyujOm5PYM4ZUm+6Sy/2Xqb+/OKutP+x3tE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671356; 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=HYvNBM/DwxwpoC4xaE9QNyZjkWBpI1oBvjKeVAQfV+s=; b=Z3PQ8RS9D3tLPFZ/F9AVjjArUpcDDpfp3NkdzNvL1C8/nOJ6j9gqVMEXmCX7XykK5oJQ9xJ4au06QisH1qXPcLQc9M2fYC5jZGTIaa/X1YRkQdmCIvb/MAqcXBO4QetpgwJTWJeo4Idv93cit4XB6gZkUzCIaBqxluKLPhQzCCs= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175767135639878.72204564012463; Fri, 12 Sep 2025 03:02:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0bD-0004xA-D4; Fri, 12 Sep 2025 06:01:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0b3-0004vF-Cf; Fri, 12 Sep 2025 06:01:37 -0400 Received: from mail-bn1nam02on2060f.outbound.protection.outlook.com ([2a01:111:f403:2407::60f] helo=NAM02-BN1-obe.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 1ux0at-000113-6U; Fri, 12 Sep 2025 06:01:37 -0400 Received: from DM6PR02CA0123.namprd02.prod.outlook.com (2603:10b6:5:1b4::25) by PH0PR12MB7957.namprd12.prod.outlook.com (2603:10b6:510:281::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.18; Fri, 12 Sep 2025 10:01:18 +0000 Received: from DS3PEPF000099E0.namprd04.prod.outlook.com (2603:10b6:5:1b4:cafe::87) by DM6PR02CA0123.outlook.office365.com (2603:10b6:5:1b4::25) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.17 via Frontend Transport; Fri, 12 Sep 2025 10:01:18 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099E0.mail.protection.outlook.com (10.167.17.203) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:01:18 +0000 Received: from satlexmb10.amd.com (10.181.42.219) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:18 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb10.amd.com (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:17 -0700 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:01:16 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=x04I6+Ubr7tM9RulqwQHGuRnzbcx7S92xguN0Vp5oRs4dh2hu5QFSd9K7hb9GttexfLuwMjephgWaCdcwlZs/h+4b1LjIN1gK/RGf1LJG+ml+JnY8V09J2iGJvwmL+kOTxrTR8H7ElwlUcK19ThUlWaL5ctwphrY3LKJgs4JbyIGcqpC03MejIfAcFqhlpd7jyqwnK+dzXp6oX3wVBYYy2XfiuAjqkPjioYt+DC8vIgADgZFA+XW5iib0NM5H432jMo6D5F3irP7U5DgGLGpYUDtCwTQ/cO0HIiA19ahvhxMCBqWtl5JGh80mw6tGZPnG84u7Mqph2tC13nFlSEWxA== 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=HYvNBM/DwxwpoC4xaE9QNyZjkWBpI1oBvjKeVAQfV+s=; b=uErhdBFrgPrZTVbxQVr60jIJ9ScngD6oAqPOXcF9pswbOdrkuUbnqNnGP+PYm/yyad64AdI5oebf4LNXcMgIdSZ1WNkI8c7UmY5q0r9EPBGjAlNWJmemABG/vdsm6Oy4rFJ4jt1j4hWEsFy0UFMX4OlHrolELefYf97Jpaz/9bMQzpZBCP+/xXnfJwPBVHRkk7pz60WtWX/VyZq+uW4NKNQqtX/Vqt/hLf+Kv8WtLWb1DT0Gms9z2pKDV/6UUO2btjOuVopAT4bBnL1TijZSpJhGYubg4n8TCnFSnNBBZAhEo66Q46vQtLSzsm6vjG8zVRO4Bjs0WmF9czV0ADjW0A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HYvNBM/DwxwpoC4xaE9QNyZjkWBpI1oBvjKeVAQfV+s=; b=qRsVYMikDw3V98HhdDIxKCgEzAUJA0jA2xKz9cO/BVb2Z1D+evBQcqmAqBMib3gLmpf4bBfgC6HfuHjj8tKMRFAIurp/+dI+A8cbsJCtc4Gn3fDodIypERlcDc2eokL4nO4C/Qw1ADZe+BS6FvB5Ocd0urruefxACoP7GKcRwdc= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 02/47] hw/arm/xlnx-versal: prepare for FDT creation Date: Fri, 12 Sep 2025 12:00:11 +0200 Message-ID: <20250912100059.103997-3-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099E0:EE_|PH0PR12MB7957:EE_ X-MS-Office365-Filtering-Correlation-Id: f2719e88-961b-4f58-9e57-08ddf1e35181 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|36860700013|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?kyhxAqZY1scY6/HQTP8kvvEoxv+P9ycWw28pkp629lv5b8h7Osa4+K9Hd/mk?= =?us-ascii?Q?h6TFYI38vAwhyFrH/tbuLRmuDjqTI0AoDVjR8stKgWbYpzEcXLO3LnVMKIPe?= =?us-ascii?Q?6sRiTwIk1odr9o4wJT5X20Itf4gzF80ChlhTrjIywqT5/TmiGbCkabYGjpIs?= =?us-ascii?Q?PnejYrJXcv3eJxdPlDMbUZo766qF2DuRSOhwnOXUSL2LxcyEagov0UHJWX6t?= =?us-ascii?Q?LEXW9/N/EuCnBpOiujrGgMvigcesYaMJ2Mn4Gn2EOedon8Flq81loIfZeJCa?= =?us-ascii?Q?/y/hwqSuFW9D3O4Oq4EeO66lsFORvLZPPWeeXBOos6xRal3Ihpph+dHrHklL?= =?us-ascii?Q?x1y78rDOpGN0TWJuBMI026LojhAOfkOrrajIZI6KGLPJAR04Yl3TkpfEY81H?= =?us-ascii?Q?P2yuGPraYEx0t9sICjLRrpH3ZkgwUPFBuwRKjJpQ3hEETzumaEANN8Zt3IgL?= =?us-ascii?Q?RrUBANaZdAbGwL45QehznjC52Vt9hyL3/m2FC9bsljc/20iTotagi1Cygw+g?= =?us-ascii?Q?plo2gubwsfURXXAWWb2YNGpWUtKRzNCFuU9gP+bNI8ejLplLX4SgjtZmHdrj?= =?us-ascii?Q?IKJDe3pz4bZdGP3NQ7hjK/u/UiQ7Gy/cUhq/6PToFGVHCuEF2c6mQFFyn9o1?= =?us-ascii?Q?lPWMBbWROgarHlG5PZShdJd6TzjpNRj5eJDvRkq2xIPGMtINuTJ2i3CrMNfQ?= =?us-ascii?Q?6l6RkA7fxpCcMUi/IJLxjkYXtxjXbszJbhL6CekI+th1i8hYwrEsGqm3NWy4?= =?us-ascii?Q?NREStgW6pb5k0U8xFhUEld+AsTIq8u6KdtEE0aTmTq0RnJnLhY5PEaO5IBvB?= =?us-ascii?Q?K2pQnPsrDNsUW8XX0miAm2zw+aOzNEhworJWJ8iX2ViZe1WydCzuGyyG1p3z?= =?us-ascii?Q?ZRrER1YQaJrr1x1dEV9/mcJtTf2WUFLQIKoCM2Fg8hK1tQ9QrFiD+FcfRW7m?= =?us-ascii?Q?OF4FfP3N63UJonnRgEYddaDZlNt5VhuTlBkk2VDEYsH9sUR72kkQ1QCNk1tG?= =?us-ascii?Q?yJ0zXHzG6SaIoNxvLLRljRLMyUyKiP0uuFsW2VEVb/1RHMsSKPqQZyGwREiJ?= =?us-ascii?Q?kMU4BbHolECBIbd1obZHTeZACsFoDuMvWZKdrUPh9aZlCtpAhScNs1Xme0VG?= =?us-ascii?Q?bhDMQ6/Ogm1joV/OnyUhpv4pGm4obdOp3UoiQAnolJQbklMewHMGYzLmn87U?= =?us-ascii?Q?a13YhmCEGjE1l7P0n2m03uBXRAENlz71E9sERLHeC8CBsAWdW3yfZsib2Jvm?= =?us-ascii?Q?JyFNqagEmc+Yys10YBEh2wS2H5dIrpyVp7z/Wbizvm+dqkET97nXK88Ocu0z?= =?us-ascii?Q?j8Nh9Q+l7h1+M8a9y3DyqSjjK4qB17EaYvXQkru/jNQ8suSwsuHfilRtcC2e?= =?us-ascii?Q?YTalmHAkinT13uiKcMaHpi9sT+Zf7cpc/585VR/tsnZsAfQUKSz1sDVkFbih?= =?us-ascii?Q?ubzBOZ9SdD6ziQsOEjg1/+jn3c9oiuLeL0aNCa2hoHML81LCBfvlCnUnYKho?= =?us-ascii?Q?DSBcvx6oY6kK02bEZvFqL5C+kmSpKve6ICTZ?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(1800799024)(36860700013)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:01:18.2996 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f2719e88-961b-4f58-9e57-08ddf1e35181 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099E0.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB7957 Received-SPF: permerror client-ip=2a01:111:f403:2407::60f; envelope-from=Luc.Michel@amd.com; helo=NAM02-BN1-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671358588116600 Content-Type: text/plain; charset="utf-8" The following commits will move FDT creation logic from the xlnx-versal-virt machine to the xlnx-versal SoC itself. Prepare this by passing the FDT handle to the SoC before it is realized. If no FDT is passed, a dummy one is created internally as a stub to the fdt function calls. For now the SoC only creates the two clock nodes. The ones from the xlnx-versal virt machine are renamed with a `old-' prefix and will be removed once they are not referenced anymore. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/arm/xlnx-versal.h | 12 ++++++++++++ hw/arm/xlnx-versal-virt.c | 9 ++++++--- hw/arm/xlnx-versal.c | 28 ++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 3 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 1f92e314d6c..f2a62b43552 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -134,21 +134,33 @@ struct Versal { XlnxVersalCFrameBcastReg cframe_bcast; =20 OrIRQState apb_irq_orgate; } pmc; =20 + struct { + uint32_t clk_25mhz; + uint32_t clk_125mhz; + } phandle; + struct { MemoryRegion *mr_ddr; + void *fdt; } cfg; }; =20 struct VersalClass { SysBusDeviceClass parent; =20 VersalVersion version; }; =20 +static inline void versal_set_fdt(Versal *s, void *fdt) +{ + g_assert(!qdev_is_realized(DEVICE(s))); + s->cfg.fdt =3D fdt; +} + /* Memory-map and IRQ definitions. Copied a subset from * auto-generated files. */ =20 #define VERSAL_GIC_MAINT_IRQ 9 #define VERSAL_TIMER_VIRT_IRQ 11 diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index adadbb72902..d1c65afa2ac 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -1,9 +1,10 @@ /* * Xilinx Versal Virtual board. * * Copyright (c) 2018 Xilinx Inc. + * Copyright (c) 2025 Advanced Micro Devices, Inc. * Written by Edgar E. Iglesias * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 or * (at your option) any later version. @@ -695,14 +696,16 @@ static void versal_virt_init(MachineState *machine) &error_abort); object_property_set_link(OBJECT(&s->soc), "canbus0", OBJECT(s->canbus[= 0]), &error_abort); object_property_set_link(OBJECT(&s->soc), "canbus1", OBJECT(s->canbus[= 1]), &error_abort); - sysbus_realize(SYS_BUS_DEVICE(&s->soc), &error_fatal); =20 fdt_create(s); + versal_set_fdt(&s->soc, s->fdt); + sysbus_realize(SYS_BUS_DEVICE(&s->soc), &error_fatal); create_virtio_regions(s); + fdt_add_gem_nodes(s); fdt_add_uart_nodes(s); fdt_add_canfd_nodes(s); fdt_add_gic_nodes(s); fdt_add_timer_nodes(s); @@ -712,12 +715,12 @@ static void versal_virt_init(MachineState *machine) fdt_add_rtc_node(s); fdt_add_bbram_node(s); fdt_add_efuse_ctrl_node(s); fdt_add_efuse_cache_node(s); fdt_add_cpu_nodes(s, psci_conduit); - fdt_add_clk_node(s, "/clk125", 125000000, s->phandle.clk_125Mhz); - fdt_add_clk_node(s, "/clk25", 25000000, s->phandle.clk_25Mhz); + fdt_add_clk_node(s, "/old-clk125", 125000000, s->phandle.clk_125Mhz); + fdt_add_clk_node(s, "/old-clk25", 25000000, s->phandle.clk_25Mhz); =20 /* Make the APU cpu address space visible to virtio and other * modules unaware of multiple address-spaces. */ memory_region_add_subregion_overlap(get_system_memory(), 0, &s->soc.fpd.apu.mr, 0); diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 4da656318f6..fda8fdf786a 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -22,10 +22,12 @@ #include "hw/misc/unimp.h" #include "hw/arm/xlnx-versal.h" #include "qemu/log.h" #include "target/arm/cpu-qom.h" #include "target/arm/gtimer.h" +#include "system/device_tree.h" +#include "hw/arm/fdt.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") #define GEM_REVISION 0x40070106 =20 @@ -917,15 +919,41 @@ static void versal_unimp(Versal *s) qdev_connect_gpio_out_named(DEVICE(&s->pmc.iou.slcr), SYSBUS_DEVICE_GPIO_IRQ, 0, gpio_in); } =20 +static uint32_t fdt_add_clk_node(Versal *s, const char *name, + unsigned int freq_hz) +{ + uint32_t phandle; + + phandle =3D qemu_fdt_alloc_phandle(s->cfg.fdt); + + qemu_fdt_add_subnode(s->cfg.fdt, name); + qemu_fdt_setprop_cell(s->cfg.fdt, name, "phandle", phandle); + qemu_fdt_setprop_cell(s->cfg.fdt, name, "clock-frequency", freq_hz); + qemu_fdt_setprop_cell(s->cfg.fdt, name, "#clock-cells", 0x0); + qemu_fdt_setprop_string(s->cfg.fdt, name, "compatible", "fixed-clock"); + qemu_fdt_setprop(s->cfg.fdt, name, "u-boot,dm-pre-reloc", NULL, 0); + + return phandle; +} + static void versal_realize(DeviceState *dev, Error **errp) { Versal *s =3D XLNX_VERSAL_BASE(dev); qemu_irq pic[XLNX_VERSAL_NR_IRQS]; =20 + if (s->cfg.fdt =3D=3D NULL) { + int fdt_size; + + s->cfg.fdt =3D create_device_tree(&fdt_size); + } + + s->phandle.clk_25mhz =3D fdt_add_clk_node(s, "/clk25", 25 * 1000 * 100= 0); + s->phandle.clk_125mhz =3D fdt_add_clk_node(s, "/clk125", 125 * 1000 * = 1000); + versal_create_apu_cpus(s); versal_create_apu_gic(s, pic); versal_create_rpu_cpus(s); versal_create_uarts(s, pic); versal_create_canfds(s, pic); --=20 2.50.1 From nobody Sun Sep 21 20:11:36 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671359; cv=pass; d=zohomail.com; s=zohoarc; b=KjYrYtFKb4eKttivv1baSzHxlgnOk9Wq+Ftg3JTq6CYimWC/8f53rSoI/nnurAIMJED8gqQPCcmuEpmxkAnqQgNw7yJLJRg53B0dpgakhQhoJG/K0kRQZ1hKJCvHZmuegRZvvU8otfrzP2734HWFBhNgko2NGDWy9NURTjy4Ck4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671359; 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=cZoIpJx5jRgwkLAv6q+27lEbCMjdhETtGBoZB+dYpDI=; b=TZmxDUYpLZh2GW6z4QDlFRBWTLoVcZ2Dqj3uhp7cyx3W0qhE53FQ2gdug2C9/mMWTem3Hfg8zVdQECVMuCbV43zyHQH5NYoiFcR6NmISDJlapWFvgeegYDtyGedyMROVZF6JKb8Ru1GHZ7KKD/rWk/yyr0KW7qmt47kEKRSdsK8= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671359052513.4597975246742; Fri, 12 Sep 2025 03:02:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0bC-0004wY-9r; Fri, 12 Sep 2025 06:01:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0b2-0004vE-C2; Fri, 12 Sep 2025 06:01:37 -0400 Received: from mail-dm6nam04on20614.outbound.protection.outlook.com ([2a01:111:f403:2409::614] helo=NAM04-DM6-obe.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 1ux0az-00011z-FJ; Fri, 12 Sep 2025 06:01:36 -0400 Received: from CH0PR04CA0058.namprd04.prod.outlook.com (2603:10b6:610:77::33) by MW6PR12MB7070.namprd12.prod.outlook.com (2603:10b6:303:238::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.18; Fri, 12 Sep 2025 10:01:21 +0000 Received: from DS3PEPF000099DE.namprd04.prod.outlook.com (2603:10b6:610:77:cafe::f4) by CH0PR04CA0058.outlook.office365.com (2603:10b6:610:77::33) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.16 via Frontend Transport; Fri, 12 Sep 2025 10:01:21 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099DE.mail.protection.outlook.com (10.167.17.200) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:01:20 +0000 Received: from satlexmb10.amd.com (10.181.42.219) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:19 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb10.amd.com (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:19 -0700 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:01:18 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ydJaweoe/+BEphOjCmRWU87HpzrVGYsONI6GQ4pEjnYToO1Jkpljv0vQkGOV/gmYrSlRXF1shGI8SsMxFI6jm8dY36DrEC0pqUH/B0zjhHBMkFRau6kpE2YKiyKWj6pxKgvWbgfWey/lHRWmaL6fw9fLuczQln06VchdhJrF98kouKltOH5UD7O+5tgCNiFWsC6CK8Ceoet+rMusyCpQ+61J6CSWSBnzcnHCfhiYJPptHzdWY2wEIIkRcxfhWNFB55TIigIPRvC569mwcTwPH+xKB2Oe9M3RfssCJ6Nich7L5fpVpNDXuZF3uSrE59yvoKjbwQhcbxBnVfaHYM6Wpw== 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=cZoIpJx5jRgwkLAv6q+27lEbCMjdhETtGBoZB+dYpDI=; b=I9CoLCQhgzF8cwK6KCPN3UN/PepZfRcINnKtAbtroGvxuFqrVHc8D4aAxqCZ2GZN2EYSR7sqlkbPqZ6aqcTqqotXXwVgDkM4hwAYXGDo5ZK+vT+mjgaB7gfnn5rH3Kz5dqrI4LDN7Dd2LS4jZggge+2TfPoQ4jMb9ZeCBdghfwMIgX7R3WRqhUlQ4Q7c2ZnAsQkBfXXkhqxj7t2Xm/qfsAslB9VLnetpf8Ww51eDUCQ6dZIpvlpZxmNpkZXhe9cmV8ADuhQX7BL9Ipxtaha5qPudRhTcJb7+tzH6mNHc4lxcozHScN203s+HQstG6xNKYpyZpuPGILL8uNiXzRfgXg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cZoIpJx5jRgwkLAv6q+27lEbCMjdhETtGBoZB+dYpDI=; b=UrevOLCCY/qctZ21bDE4XJu+Cel0cHu6wzo466AZ/KTDnqGLmv6p6FYdBjiFCoAcG6B6rc8tWlNx75OQCR1N16ua9tRE042QMEljUA97UfPZbocWuyKz7DEbpUivdLq3Jerh/sGHPLFR6IeqTvgIklHDADcuhQOoII9KYAMS3+8= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 03/47] hw/arm/xlnx-versal: uart: refactor creation Date: Fri, 12 Sep 2025 12:00:12 +0200 Message-ID: <20250912100059.103997-4-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099DE:EE_|MW6PR12MB7070:EE_ X-MS-Office365-Filtering-Correlation-Id: 6abb59ca-4c0b-4969-490c-08ddf1e352df X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|1800799024|82310400026|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?54pFtlyRCQZdPvQz8suEKpliknRIQgZ8uTs211R5Kg7SUFAq6DLVsMw1St/L?= =?us-ascii?Q?0/z29ZcIWctnAKUqyqRX+4pkMrzpl+uQxPY/lLB3qPGh7+8a9EgMA2mE3bYJ?= =?us-ascii?Q?yMFV5C9l9p/HkNlb5acbEDwyjiekpvyFnCgRvcfhJl45vwcfb8ImkRZkCeFk?= =?us-ascii?Q?ffIdsETuuGg4xUnVfhWw+ovRLBVdLhJ2vSEq6h7+51PSzpYtWAWApk/RJaWA?= =?us-ascii?Q?Ypy6mfhqFmr8imZ5UQp4DcODuU7qyZEOi/u1dKzFUErvQSb+6+FAWkguwYOb?= =?us-ascii?Q?2Z+faQCeevvSuDk0Aa9DfGkERQGdx3sXklPB8QbnXigccAjc0pMTIwD8vGW8?= =?us-ascii?Q?jUr7703LwvX5L9ROpNyphkRfyrGPekGBwfTTcHs7jrA3CkzBWXYVsTsOnjkz?= =?us-ascii?Q?h4Nt0d7liFLeYFM0adHTOKwXRtT2MUpOxG11z+XkKSk9SVEgf7Q/Q28kjgIf?= =?us-ascii?Q?l48hFHiMWlMGmBqCLnbBU5sS44e9Pz9NwmdupoF52dmjmjpl5BbZvIIe+o+Q?= =?us-ascii?Q?jIoGlz8aaoSNTP9gB0GED6SWicJwJ+sI4sVMLZBUPtf0Ei3qUyp6BFd/VK+w?= =?us-ascii?Q?09pAq2ffojW7dP4tEBTYHjHrr0nfOt9vqnwXKqB7E5ZfoxnPvDAlU7D74teQ?= =?us-ascii?Q?0Y7Yz0KTZm5ZFdsD6EfUaSBIgQ506hGiu9nFyvF+CuEUmGbcrWa5J+5zE8mL?= =?us-ascii?Q?uZhgRqhpteo6rh1kGtjPXwbhFqJTPKyxnK00ZG9BTbTB1e/F1vA9W/ezUCUq?= =?us-ascii?Q?eL/V/oUyqNaFtCdb9MvUXi2TR+p8gCLbAOSO5PQgYYQGshvEDCA4iEg4nCXI?= =?us-ascii?Q?T9Yw83mhVxRJf2qYqQ2tmo4NvyzrefwXSWmIrHizNYpnoaa/FUPEcs9foQno?= =?us-ascii?Q?0+AskN4CD87pK1DAYTvrXGFZ5ZJrO/zvGUw2iIKmWPg5RYK/VB99uvXI//WC?= =?us-ascii?Q?PXX0gM+Kg6ZI6KKs2vdkcz6N4A14n7G+MqnbpMHRVBhv/upMVHEmE9RpO75t?= =?us-ascii?Q?TdR8w+BE8W+aumlJHZrK9Pu1OysZvfSlu9w22G3S7zQKsl/N+DRimGH1NM6i?= =?us-ascii?Q?ZywqrWMLvUqR6ne8lnim5V3pK2kJr2T99gJhoC2Fxiv/KJpYs9TdukAMK1tv?= =?us-ascii?Q?Qb9Qqy5GrTi7OMf5bARXv8loxC9rnS5dmZ5MwL/IN5HZEu4yIKCDbOlBGy07?= =?us-ascii?Q?zL9XieqAkCpeJIdggjuRuLlMFKtqVPZArnTQT1cGyWZxSA68frT4JyyR3UsL?= =?us-ascii?Q?HKqWsaH0p+U2sf1Ro2rcYRO47RWxX4NjVNaZyUHm9Y+MGgikpyNrtCJGb/pD?= =?us-ascii?Q?Khb6tt4wJYKa6/NLxtPkzRuA7AkKcGG9HFgyutMe3xe+DYuGb22i7tujtFfH?= =?us-ascii?Q?WqL1Gl+s7ggCVSA00vhKT8y+DbzkN6/kJOhRSV8Ntfkt4ohqpskCummZ9Pr8?= =?us-ascii?Q?yAkrNTUSOqhhJzeU/xIjDlOwQotdeP6DWWlwLl23QJ7Kq289JFeb5jWsD1pI?= =?us-ascii?Q?XwWMFBxmaFBuXXoTYEdAZh+qKo1m8uGld5yi?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(36860700013)(1800799024)(82310400026)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:01:20.5903 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6abb59ca-4c0b-4969-490c-08ddf1e352df X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099DE.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW6PR12MB7070 Received-SPF: permerror client-ip=2a01:111:f403:2409::614; envelope-from=Luc.Michel@amd.com; helo=NAM04-DM6-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671360471116600 Content-Type: text/plain; charset="utf-8" Refactor the UARTs creations. The VersalMap struct is now used to describe the SoC and its peripherals. For now it contains the two UARTs mapping information. The creation function now embeds the FDT creation logic as well. The devices are now created dynamically using qdev_new and (qdev|sysbus)_realize_and_unref. This will allow to rely entirely on the VersalMap structure to create the SoC and allow easy addition of new SoCs of the same family (like versal2 coming with next commits). Note that the connection to the CRL is removed for now and will be re-added by next commits. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/arm/xlnx-versal.h | 2 - hw/arm/xlnx-versal-virt.c | 36 +-------- hw/arm/xlnx-versal.c | 144 ++++++++++++++++++++++++++++------- 3 files changed, 119 insertions(+), 63 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index f2a62b43552..b01ddeb1423 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -16,11 +16,10 @@ #include "hw/sysbus.h" #include "hw/cpu/cluster.h" #include "hw/or-irq.h" #include "hw/sd/sdhci.h" #include "hw/intc/arm_gicv3.h" -#include "hw/char/pl011.h" #include "hw/dma/xlnx-zdma.h" #include "hw/net/cadence_gem.h" #include "hw/rtc/xlnx-zynqmp-rtc.h" #include "qom/object.h" #include "hw/usb/xlnx-usb-subsystem.h" @@ -78,11 +77,10 @@ struct Versal { =20 struct { MemoryRegion mr_ocm; =20 struct { - PL011State uart[XLNX_VERSAL_NR_UARTS]; CadenceGEMState gem[XLNX_VERSAL_NR_GEMS]; OrIRQState gem_irq_orgate[XLNX_VERSAL_NR_GEMS]; XlnxZDMA adma[XLNX_VERSAL_NR_ADMAS]; VersalUsb2 usb; CanBusState *canbus[XLNX_VERSAL_NR_CANFD]; diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index d1c65afa2ac..e1deae11317 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -75,10 +75,11 @@ static void fdt_create(VersalVirt *s) =20 s->phandle.usb =3D qemu_fdt_alloc_phandle(s->fdt); s->phandle.dwc =3D qemu_fdt_alloc_phandle(s->fdt); /* Create /chosen node for load_dtb. */ qemu_fdt_add_subnode(s->fdt, "/chosen"); + qemu_fdt_add_subnode(s->fdt, "/aliases"); =20 /* Header */ qemu_fdt_setprop_cell(s->fdt, "/", "interrupt-parent", s->phandle.gic); qemu_fdt_setprop_cell(s->fdt, "/", "#size-cells", 0x2); qemu_fdt_setprop_cell(s->fdt, "/", "#address-cells", 0x2); @@ -206,44 +207,10 @@ static void fdt_add_usb_xhci_nodes(VersalVirt *s) qemu_fdt_setprop_cell(s->fdt, name, "phandle", s->phandle.dwc); qemu_fdt_setprop_string(s->fdt, name, "maximum-speed", "high-speed"); g_free(name); } =20 -static void fdt_add_uart_nodes(VersalVirt *s) -{ - uint64_t addrs[] =3D { MM_UART1, MM_UART0 }; - unsigned int irqs[] =3D { VERSAL_UART1_IRQ_0, VERSAL_UART0_IRQ_0 }; - const char compat[] =3D "arm,pl011\0arm,sbsa-uart"; - const char clocknames[] =3D "uartclk\0apb_pclk"; - int i; - - for (i =3D 0; i < ARRAY_SIZE(addrs); i++) { - char *name =3D g_strdup_printf("/uart@%" PRIx64, addrs[i]); - qemu_fdt_add_subnode(s->fdt, name); - qemu_fdt_setprop_cell(s->fdt, name, "current-speed", 115200); - qemu_fdt_setprop_cells(s->fdt, name, "clocks", - s->phandle.clk_125Mhz, s->phandle.clk_125Mh= z); - qemu_fdt_setprop(s->fdt, name, "clock-names", - clocknames, sizeof(clocknames)); - - qemu_fdt_setprop_cells(s->fdt, name, "interrupts", - GIC_FDT_IRQ_TYPE_SPI, irqs[i], - GIC_FDT_IRQ_FLAGS_LEVEL_HI); - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", - 2, addrs[i], 2, 0x1000); - qemu_fdt_setprop(s->fdt, name, "compatible", - compat, sizeof(compat)); - qemu_fdt_setprop(s->fdt, name, "u-boot,dm-pre-reloc", NULL, 0); - - if (addrs[i] =3D=3D MM_UART0) { - /* Select UART0. */ - qemu_fdt_setprop_string(s->fdt, "/chosen", "stdout-path", name= ); - } - g_free(name); - } -} - static void fdt_add_canfd_nodes(VersalVirt *s) { uint64_t addrs[] =3D { MM_CANFD1, MM_CANFD0 }; uint32_t size[] =3D { MM_CANFD1_SIZE, MM_CANFD0_SIZE }; unsigned int irqs[] =3D { VERSAL_CANFD1_IRQ_0, VERSAL_CANFD0_IRQ_0 }; @@ -703,11 +670,10 @@ static void versal_virt_init(MachineState *machine) versal_set_fdt(&s->soc, s->fdt); sysbus_realize(SYS_BUS_DEVICE(&s->soc), &error_fatal); create_virtio_regions(s); =20 fdt_add_gem_nodes(s); - fdt_add_uart_nodes(s); fdt_add_canfd_nodes(s); fdt_add_gic_nodes(s); fdt_add_timer_nodes(s); fdt_add_zdma_nodes(s); fdt_add_usb_xhci_nodes(s); diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index fda8fdf786a..87468cbc291 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -24,18 +24,96 @@ #include "qemu/log.h" #include "target/arm/cpu-qom.h" #include "target/arm/gtimer.h" #include "system/device_tree.h" #include "hw/arm/fdt.h" +#include "hw/char/pl011.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") #define GEM_REVISION 0x40070106 =20 #define VERSAL_NUM_PMC_APB_IRQS 18 #define NUM_OSPI_IRQ_LINES 3 =20 +typedef struct VersalSimplePeriphMap { + uint64_t addr; + int irq; +} VersalSimplePeriphMap; + +typedef struct VersalMap { + VersalSimplePeriphMap uart[2]; + size_t num_uart; +} VersalMap; + +static const VersalMap VERSAL_MAP =3D { + .uart[0] =3D { 0xff000000, 18 }, + .uart[1] =3D { 0xff010000, 19 }, + .num_uart =3D 2, +}; + +static const VersalMap *VERSION_TO_MAP[] =3D { + [VERSAL_VER_VERSAL] =3D &VERSAL_MAP, +}; + +static inline VersalVersion versal_get_version(Versal *s) +{ + return XLNX_VERSAL_BASE_GET_CLASS(s)->version; +} + +static inline const VersalMap *versal_get_map(Versal *s) +{ + return VERSION_TO_MAP[versal_get_version(s)]; +} + + +static qemu_irq versal_get_irq(Versal *s, int irq_idx) +{ + return qdev_get_gpio_in(DEVICE(&s->fpd.apu.gic), irq_idx); +} + +static void versal_sysbus_connect_irq(Versal *s, SysBusDevice *sbd, + int sbd_idx, int irq_idx) +{ + qemu_irq irq =3D versal_get_irq(s, irq_idx); + + if (irq =3D=3D NULL) { + return; + } + + sysbus_connect_irq(sbd, sbd_idx, irq); +} + +static inline char *versal_fdt_add_subnode(Versal *s, const char *path, + uint64_t at, const char *compat, + size_t compat_sz) +{ + char *p; + + p =3D g_strdup_printf("%s@%" PRIx64, path, at); + qemu_fdt_add_subnode(s->cfg.fdt, p); + + if (!strncmp(compat, "memory", compat_sz)) { + qemu_fdt_setprop(s->cfg.fdt, p, "device_type", compat, compat_sz); + } else { + qemu_fdt_setprop(s->cfg.fdt, p, "compatible", compat, compat_sz); + } + + return p; +} + +static inline char *versal_fdt_add_simple_subnode(Versal *s, const char *p= ath, + uint64_t addr, uint64_t = len, + const char *compat, + size_t compat_sz) +{ + char *p =3D versal_fdt_add_subnode(s, path, addr, compat, compat_sz); + + qemu_fdt_setprop_sized_cells(s->cfg.fdt, p, "reg", 2, addr, 2, len); + return p; +} + static void versal_create_apu_cpus(Versal *s) { int i; =20 object_initialize_child(OBJECT(s), "apu-cluster", &s->fpd.apu.cluster, @@ -165,32 +243,48 @@ static void versal_create_rpu_cpus(Versal *s) } =20 qdev_realize(DEVICE(&s->lpd.rpu.cluster), NULL, &error_fatal); } =20 -static void versal_create_uarts(Versal *s, qemu_irq *pic) +static void versal_create_uart(Versal *s, + const VersalSimplePeriphMap *map, + int chardev_idx) { - int i; + DeviceState *dev; + MemoryRegion *mr; + g_autofree char *node; + g_autofree char *alias; + const char compatible[] =3D "arm,pl011\0arm,sbsa-uart"; + const char clocknames[] =3D "uartclk\0apb_pclk"; =20 - for (i =3D 0; i < ARRAY_SIZE(s->lpd.iou.uart); i++) { - static const int irqs[] =3D { VERSAL_UART0_IRQ_0, VERSAL_UART1_IRQ= _0}; - static const uint64_t addrs[] =3D { MM_UART0, MM_UART1 }; - char *name =3D g_strdup_printf("uart%d", i); - DeviceState *dev; - MemoryRegion *mr; + dev =3D qdev_new(TYPE_PL011); + object_property_add_child(OBJECT(s), "uart[*]", OBJECT(dev)); + qdev_prop_set_chr(dev, "chardev", serial_hd(chardev_idx)); + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 - object_initialize_child(OBJECT(s), name, &s->lpd.iou.uart[i], - TYPE_PL011); - dev =3D DEVICE(&s->lpd.iou.uart[i]); - qdev_prop_set_chr(dev, "chardev", serial_hd(i)); - sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); + mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); + memory_region_add_subregion(&s->mr_ps, map->addr, mr); =20 - mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); - memory_region_add_subregion(&s->mr_ps, addrs[i], mr); + versal_sysbus_connect_irq(s, SYS_BUS_DEVICE(dev), 0, map->irq); =20 - sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[irqs[i]]); - g_free(name); + node =3D versal_fdt_add_simple_subnode(s, "/uart", map->addr, 0x1000, + compatible, sizeof(compatible)); + qemu_fdt_setprop_cell(s->cfg.fdt, node, "current-speed", 115200); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "clocks", + s->phandle.clk_125mhz, s->phandle.clk_125mhz); + qemu_fdt_setprop(s->cfg.fdt, node, "clock-names", clocknames, + sizeof(clocknames)); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "interrupts", + GIC_FDT_IRQ_TYPE_SPI, map->irq, + GIC_FDT_IRQ_FLAGS_LEVEL_HI); + qemu_fdt_setprop(s->cfg.fdt, node, "u-boot,dm-pre-reloc", NULL, 0); + + alias =3D g_strdup_printf("serial%d", chardev_idx); + qemu_fdt_setprop_string(s->cfg.fdt, "/aliases", alias, node); + + if (chardev_idx =3D=3D 0) { + qemu_fdt_setprop_string(s->cfg.fdt, "/chosen", "stdout-path", node= ); } } =20 static void versal_create_canfds(Versal *s, qemu_irq *pic) { @@ -781,18 +875,10 @@ static void versal_create_crl(Versal *s, qemu_irq *pi= c) object_property_set_link(OBJECT(&s->lpd.crl), name, OBJECT(&s->lpd.iou.adma[i]), &error_abort); } =20 - for (i =3D 0; i < ARRAY_SIZE(s->lpd.iou.uart); i++) { - g_autofree gchar *name =3D g_strdup_printf("uart[%d]", i); - - object_property_set_link(OBJECT(&s->lpd.crl), - name, OBJECT(&s->lpd.iou.uart[i]), - &error_abort); - } - object_property_set_link(OBJECT(&s->lpd.crl), "usb", OBJECT(&s->lpd.iou.usb), &error_abort); =20 sysbus_realize(sbd, &error_fatal); @@ -940,10 +1026,12 @@ static uint32_t fdt_add_clk_node(Versal *s, const ch= ar *name, =20 static void versal_realize(DeviceState *dev, Error **errp) { Versal *s =3D XLNX_VERSAL_BASE(dev); qemu_irq pic[XLNX_VERSAL_NR_IRQS]; + const VersalMap *map =3D versal_get_map(s); + size_t i; =20 if (s->cfg.fdt =3D=3D NULL) { int fdt_size; =20 s->cfg.fdt =3D create_device_tree(&fdt_size); @@ -953,11 +1041,15 @@ static void versal_realize(DeviceState *dev, Error *= *errp) s->phandle.clk_125mhz =3D fdt_add_clk_node(s, "/clk125", 125 * 1000 * = 1000); =20 versal_create_apu_cpus(s); versal_create_apu_gic(s, pic); versal_create_rpu_cpus(s); - versal_create_uarts(s, pic); + + for (i =3D 0; i < map->num_uart; i++) { + versal_create_uart(s, &map->uart[i], i); + } + versal_create_canfds(s, pic); versal_create_usbs(s, pic); versal_create_gems(s, pic); versal_create_admas(s, pic); versal_create_sds(s, pic); --=20 2.50.1 From nobody Sun Sep 21 20:11:36 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671696; cv=pass; d=zohomail.com; s=zohoarc; b=KdhJBkhAX89Us0yi8WH6jtu2MUiLDE6aSaC4zNXB2JaUyUxPwQdh8ubHEGWYCpMTaMnxe7q4jHM82VpfHBkNM3iyL19IR52UdKEasQYNvIkp5yyF5Dkzz9OTpDEf1/lqJtDfK9WSlFWMdnF8RYyCFoY4d8d0oV8FStzmLt/zQQQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671696; 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=gv4nxH8HkRk3cotOYv7YUbJ6H/52+Xnk5/u2aLGfvzg=; b=H8qQZl0ZYSR5BHM7eKAngVtLHO6ZroB7sUKUJocnXIbg8IYlN3j4Xwhpt3+Db52RA/SPXf7Em1vZA4CvwWdcvKmPCoStugrX79+pt9h5PyLg2YnK9FEJCoq9l0plL8YJuR9p1Z7kstvjwPuy29mw7FVcQC73gkhXeE+Ul38UHac= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671696422773.3625406220901; Fri, 12 Sep 2025 03:08:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0cN-0005jh-Aa; Fri, 12 Sep 2025 06:02:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cK-0005gi-Dj; Fri, 12 Sep 2025 06:02:56 -0400 Received: from mail-bn7nam10on20623.outbound.protection.outlook.com ([2a01:111:f403:2009::623] helo=NAM10-BN7-obe.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 1ux0cG-0001Dt-10; Fri, 12 Sep 2025 06:02:56 -0400 Received: from DS7PR03CA0332.namprd03.prod.outlook.com (2603:10b6:8:55::19) by PH7PR12MB6636.namprd12.prod.outlook.com (2603:10b6:510:212::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:02:43 +0000 Received: from DS1PEPF00017097.namprd05.prod.outlook.com (2603:10b6:8:55:cafe::84) by DS7PR03CA0332.outlook.office365.com (2603:10b6:8:55::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.17 via Frontend Transport; Fri, 12 Sep 2025 10:02:34 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS1PEPF00017097.mail.protection.outlook.com (10.167.18.101) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:02:42 +0000 Received: from SATLEXMB05.amd.com (10.181.40.146) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:29 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB05.amd.com (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:01:21 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:01:19 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=acdAQ7GmhHM+izpApstsAY0VYwVTiVr4AYIWyec6btzlKl4GN51FmEvi/rfwbNwxcXcDIXghnwUTV7Yhy/ascfeMdNyw83sL4kXhKLsUmBZV+ajcY+Lw8kQgTUlomdhos5eAYj/5NFuWL/YKCnfjQOt5YtGaL2o997SerNIQVwzDsX72D8sszAuHIFsoOxLwexGqiIQ0xh3m0KeVvcRmOoHJQBw8nZmvH4hOsDgXDKqZBfW/X7zaUuEHYfXLbfmI7vFg8FTDp+l3E9wtH1svUWCr+EeVHJlCDHSKgQ37SausapsMkrtaMJJmfeo6fZEOW/QhIy2CXVQiytEP1dTcpg== 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=gv4nxH8HkRk3cotOYv7YUbJ6H/52+Xnk5/u2aLGfvzg=; b=FSstz2H0sTxhK9//XK4T3CsearVzVt6lba8FB/IXLLSSJ5w98Bj8mwEpY81msbAq09kJeBxt/4MnbL7Cx9fmoj7N/yLFMMuaj6tiq1ysh/REEWSumJeeFeruV0CcfoNYip7OUSOosKeVOTwFqH1oqnJars7nn3E9RNepe7hp7kLxNd7zwgCA/LVwAsqjk82ff39UZcpnBJ1gId4BR+f0atRfnCpUXGSHlOlP65UIIHsiotZovsy5oyqb3/d/K8ukC356zxgzHI9o4NasgzLXPqvgemOAlq2ToBgPLAQeaGfNMgRTYrMbZh2jZzS/s40RWFqXeQi0IYsQRJ+R9WlxNg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gv4nxH8HkRk3cotOYv7YUbJ6H/52+Xnk5/u2aLGfvzg=; b=cu+KHPKSUiB+ydQQsAz2WMc+CnhbwSyKkF1iShqoa4G2SZRcQbcG5H/GgP5MDm+T9E3v1O1CtzcKLC/xK/lv3vbrLd8NCJCgZ+Rp07SRzMOpsiik1XflT8CuhBwtbYOJk4/SlcbnNS/2e+kQDa2dnPX/dUdRN07FgD9ieOVMNMw= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 04/47] hw/arm/xlnx-versal: canfd: refactor creation Date: Fri, 12 Sep 2025 12:00:13 +0200 Message-ID: <20250912100059.103997-5-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: None (SATLEXMB05.amd.com: luc.michel@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF00017097:EE_|PH7PR12MB6636:EE_ X-MS-Office365-Filtering-Correlation-Id: 8f720f0d-92b9-4e9c-a28a-08ddf1e383b6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|376014|36860700013; X-Microsoft-Antispam-Message-Info: =?utf-8?B?ZDFhSjF5K2dGZXBURmFzV21VL0pPVVZxcTVSTTV1UW9nTHI4aTJ4MEdvRzNZ?= =?utf-8?B?dkhpbTAwNlQvSE5IMU9TZ1ZEQnRBSVl3d3k0V1B1TmVvVXJpaTFmSFZIUmVo?= =?utf-8?B?aUdhNFJYSkRnOXFKNDhkd3FFdFcwcWNsbXJWZ281MUdtSUJxVDRUMXJSSGFM?= =?utf-8?B?NjQ3ZW44UzhjWGhDaW1LbTJvU3I3YkJ3OUliRVFna0hydnQ0K2NYVlBUZy9L?= =?utf-8?B?MXA1eGxhQkoyamVseUtMRDJ1NFphWG1NaXM5dENEcEFxZzkyZVg4QmI4MUQw?= =?utf-8?B?UDBuWWdDK2x1VytBZUUyNEwydUpJWDUvaXBZYmpBUVdSdTI1bTdGS1l2cUdu?= =?utf-8?B?c0k2TVNmbU9rR0hrMFhDNWpCR2dKdk51SnBIRWh4SmFiek5YU3RqVldxVXY5?= =?utf-8?B?aG1jM1VpVFVSdllIS1R5TTR0YjZiTGtUeFdqLzY3dWhSSXYwMytGNEtzRUt6?= =?utf-8?B?K2dCWTcwcmpYalllTVJaVlI5RUpXMENmNUJFaEFQbnJkblJSaVlnMVovQXla?= =?utf-8?B?aDl2SDRLRENnVEE3bXBGMS9rZFVsNHNLUTNmT0RaVHVXNERYc2tYd2xhMXE2?= =?utf-8?B?aG5saEw3dCtmWFF5UXRUY0ZSUSs0MUZ0ejU5MU1kUUxQc013bkYrSlpmdkh3?= =?utf-8?B?cEY4WlV5R2J6QkNaMmpGc1BBTVRMU2tIc2FUMFc3dEZXNVpNeVNTSlFOZmxk?= =?utf-8?B?TEFmQTlXQm8xdERNVjA0WUFHODhKckExenNIWFR4UEp4ZmxIZHc2TzRBTzhH?= =?utf-8?B?d0QvM2VFdWZjYmxqSXhpa045ZVMwRngrUENGNjl5MDc2NnZYcWZNOXM1OUlG?= =?utf-8?B?c0dyNHd2QVBGN25YMUQyUlhmOGhlZlljTmRFVHhMOG1OZGVDM1IwN3cxTk41?= =?utf-8?B?aThwRDBsdXdkalk1Z2YrTnA1bUVIYjA2QjQwb0JrOUprZ1NhZVNOYXZzQ01m?= =?utf-8?B?c1BYSDlRUUFGYXNsUUpsQklEQmgvUE5pb3ZlUXFYeTM4c2dKZk1ZVEsxUHhj?= =?utf-8?B?bENEVlpzVGY0cTBFR2JqcllyQ3haRTg4MTkveFJWZDhYU2wrRW45ZGg1SmNY?= =?utf-8?B?QXg1bkF4OWRJb0F3bWJhajA5YWsyRU5NVnZPUGpQVEFpNmdPaEpwSFFndnFK?= =?utf-8?B?endnQUpVRmFkTTkzUnU2YzFWdE00SE40TG13YThsdUM5ZlJ3enpBREdrMG5V?= =?utf-8?B?MUY2S0U2alY3eVNoSEZGdFVLdzJaT1czbFB5QTBKQWhCRkRGVjU4MkZISFdN?= =?utf-8?B?eS84clpsbnlLWVBsV1hrWUZaTzdOQ1M5NmV4WnNCRUVaNVA2N01YLzUyMnpT?= =?utf-8?B?OXdreWtpaUNhS0lCOWtjbXJ2MEFQWVdZWnRxNUp5M01wQS8xWjI0YVRyVEdo?= =?utf-8?B?WEFoNWxVeXN4ZHVRZytHZitiWit5MXg5dVlrbjlqTjgyVExicWZQTTAvdTAv?= =?utf-8?B?YTA3Z0tlOTMyaS9EY0FzV3RkNnVOQktJR01SM3g1dnJKU2o0dzJEQkYvK093?= =?utf-8?B?QkVlSW94elh4WFpYWXZtcXFBb2MwSWliYlhUdllrVU5zMmpOc2RvOGtDUzdG?= =?utf-8?B?d3Mzd2EzU2J3U1lNMzhHTzJvWG90bGhMbkhGQUlsZm9pMFd2dVZzZTFMQUxs?= =?utf-8?B?dkNTVXhFSG54V1Q4eExxVzUwY1N1N0lmbFNCeFpTYzZIU1dWVmsrdG9aMlpR?= =?utf-8?B?dmEzQzlmT2MwNmpuUnVNbVZYNWVSTXgrYmxpb3VWR3lIWngxSU8vN3lKWW15?= =?utf-8?B?bjAyM0pHc3QrWDlHaXVjcGMwc1RjQWVOcC96Y0h4TkdQZ2lISVkwZzc3czJk?= =?utf-8?B?OVhvYytYQWFKalVoNjBySzBxd0lqQlR1cFd3VGdkTWdlRFpIeWx3WmlBbVFj?= =?utf-8?B?TDJ4UFVjSVFEb0x6aDJoTER1REpudWF1QzlYOWdDYUZwYmxHcEh1RHl6aDd6?= =?utf-8?B?R2QzdlNGb3NCalhVNFRSbnJianRWR1gxZDh3RXFkeVV0VkUxajlOK2tOOGcw?= =?utf-8?B?WjcrNFB4V0lZSTljK080MXdRaHpRM0FMRGpHcE5HRktVWURibkQvblNZTXJK?= =?utf-8?Q?i7YBoq?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(1800799024)(376014)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:02:42.5324 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8f720f0d-92b9-4e9c-a28a-08ddf1e383b6 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF00017097.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6636 Received-SPF: permerror client-ip=2a01:111:f403:2009::623; envelope-from=Luc.Michel@amd.com; helo=NAM10-BN7-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671697309116600 Refactor the CAN controllers creation using the VersalMap structure. Note that the connection to the CRL is removed for now and will be re-added by next commits. The xlnx-versal-virt machine now dynamically creates the correct amount of CAN bus link properties based on the number of CAN controller advertised by the SoC. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/arm/xlnx-versal.h | 7 +-- hw/arm/xlnx-versal-virt.c | 73 +++++++++------------------- hw/arm/xlnx-versal.c | 94 +++++++++++++++++++++++++----------- 3 files changed, 95 insertions(+), 79 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index b01ddeb1423..007c91b596e 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -29,11 +29,11 @@ #include "hw/ssi/xlnx-versal-ospi.h" #include "hw/dma/xlnx_csu_dma.h" #include "hw/misc/xlnx-versal-crl.h" #include "hw/misc/xlnx-versal-pmc-iou-slcr.h" #include "hw/misc/xlnx-versal-trng.h" -#include "hw/net/xlnx-versal-canfd.h" +#include "net/can_emu.h" #include "hw/misc/xlnx-versal-cfu.h" #include "hw/misc/xlnx-versal-cframe-reg.h" #include "target/arm/cpu.h" #include "hw/arm/xlnx-versal-version.h" =20 @@ -81,12 +81,10 @@ struct Versal { struct { CadenceGEMState gem[XLNX_VERSAL_NR_GEMS]; OrIRQState gem_irq_orgate[XLNX_VERSAL_NR_GEMS]; XlnxZDMA adma[XLNX_VERSAL_NR_ADMAS]; VersalUsb2 usb; - CanBusState *canbus[XLNX_VERSAL_NR_CANFD]; - XlnxVersalCANFDState canfd[XLNX_VERSAL_NR_CANFD]; } iou; =20 /* Real-time Processing Unit. */ struct { MemoryRegion mr; @@ -139,10 +137,11 @@ struct Versal { uint32_t clk_125mhz; } phandle; =20 struct { MemoryRegion *mr_ddr; + CanBusState **canbus; void *fdt; } cfg; }; =20 struct VersalClass { @@ -155,10 +154,12 @@ static inline void versal_set_fdt(Versal *s, void *fd= t) { g_assert(!qdev_is_realized(DEVICE(s))); s->cfg.fdt =3D fdt; } =20 +int versal_get_num_can(VersalVersion version); + /* Memory-map and IRQ definitions. Copied a subset from * auto-generated files. */ =20 #define VERSAL_GIC_MAINT_IRQ 9 #define VERSAL_TIMER_VIRT_IRQ 11 diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index e1deae11317..334252564be 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -41,15 +41,15 @@ struct VersalVirt { uint32_t ethernet_phy[2]; uint32_t clk_125Mhz; uint32_t clk_25Mhz; uint32_t usb; uint32_t dwc; - uint32_t canfd[2]; } phandle; struct arm_boot_info binfo; =20 - CanBusState *canbus[XLNX_VERSAL_NR_CANFD]; + CanBusState **canbus; + struct { bool secure; } cfg; char *ospi_model; }; @@ -207,42 +207,10 @@ static void fdt_add_usb_xhci_nodes(VersalVirt *s) qemu_fdt_setprop_cell(s->fdt, name, "phandle", s->phandle.dwc); qemu_fdt_setprop_string(s->fdt, name, "maximum-speed", "high-speed"); g_free(name); } =20 -static void fdt_add_canfd_nodes(VersalVirt *s) -{ - uint64_t addrs[] =3D { MM_CANFD1, MM_CANFD0 }; - uint32_t size[] =3D { MM_CANFD1_SIZE, MM_CANFD0_SIZE }; - unsigned int irqs[] =3D { VERSAL_CANFD1_IRQ_0, VERSAL_CANFD0_IRQ_0 }; - const char clocknames[] =3D "can_clk\0s_axi_aclk"; - int i; - - /* Create and connect CANFD0 and CANFD1 nodes to canbus0. */ - for (i =3D 0; i < ARRAY_SIZE(addrs); i++) { - char *name =3D g_strdup_printf("/canfd@%" PRIx64, addrs[i]); - qemu_fdt_add_subnode(s->fdt, name); - - qemu_fdt_setprop_cell(s->fdt, name, "rx-fifo-depth", 0x40); - qemu_fdt_setprop_cell(s->fdt, name, "tx-mailbox-count", 0x20); - - qemu_fdt_setprop_cells(s->fdt, name, "clocks", - s->phandle.clk_25Mhz, s->phandle.clk_25Mhz); - qemu_fdt_setprop(s->fdt, name, "clock-names", - clocknames, sizeof(clocknames)); - qemu_fdt_setprop_cells(s->fdt, name, "interrupts", - GIC_FDT_IRQ_TYPE_SPI, irqs[i], - GIC_FDT_IRQ_FLAGS_LEVEL_HI); - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", - 2, addrs[i], 2, size[i]); - qemu_fdt_setprop_string(s->fdt, name, "compatible", - "xlnx,canfd-2.0"); - - g_free(name); - } -} - static void fdt_add_fixed_link_nodes(VersalVirt *s, char *gemname, uint32_t phandle) { char *name =3D g_strdup_printf("%s/fixed-link", gemname); =20 @@ -659,22 +627,25 @@ static void versal_virt_init(MachineState *machine) =20 object_initialize_child(OBJECT(machine), "xlnx-versal", &s->soc, TYPE_XLNX_VERSAL); object_property_set_link(OBJECT(&s->soc), "ddr", OBJECT(machine->ram), &error_abort); - object_property_set_link(OBJECT(&s->soc), "canbus0", OBJECT(s->canbus[= 0]), - &error_abort); - object_property_set_link(OBJECT(&s->soc), "canbus1", OBJECT(s->canbus[= 1]), - &error_abort); + + for (i =3D 0; i < versal_get_num_can(VERSAL_VER_VERSAL); i++) { + g_autofree char *prop_name =3D g_strdup_printf("canbus%d", i); + + object_property_set_link(OBJECT(&s->soc), prop_name, + OBJECT(s->canbus[i]), + &error_abort); + } =20 fdt_create(s); versal_set_fdt(&s->soc, s->fdt); sysbus_realize(SYS_BUS_DEVICE(&s->soc), &error_fatal); create_virtio_regions(s); =20 fdt_add_gem_nodes(s); - fdt_add_canfd_nodes(s); fdt_add_gic_nodes(s); fdt_add_timer_nodes(s); fdt_add_zdma_nodes(s); fdt_add_usb_xhci_nodes(s); fdt_add_sd_nodes(s); @@ -753,30 +724,34 @@ static void versal_virt_init(MachineState *machine) } =20 static void versal_virt_machine_instance_init(Object *obj) { VersalVirt *s =3D XLNX_VERSAL_VIRT_MACHINE(obj); + size_t i, num_can; + + num_can =3D versal_get_num_can(VERSAL_VER_VERSAL); + s->canbus =3D g_new0(CanBusState *, num_can); =20 /* - * User can set canbus0 and canbus1 properties to can-bus object and c= onnect - * to socketcan(optional) interface via command line. + * User can set canbusx properties to can-bus object and optionally co= nnect + * to socketcan interface via command line. */ - object_property_add_link(obj, "canbus0", TYPE_CAN_BUS, - (Object **)&s->canbus[0], - object_property_allow_set_link, - 0); - object_property_add_link(obj, "canbus1", TYPE_CAN_BUS, - (Object **)&s->canbus[1], - object_property_allow_set_link, - 0); + for (i =3D 0; i < num_can; i++) { + g_autofree char *prop_name =3D g_strdup_printf("canbus%zu", i); + + object_property_add_link(obj, prop_name, TYPE_CAN_BUS, + (Object **) &s->canbus[i], + object_property_allow_set_link, 0); + } } =20 static void versal_virt_machine_finalize(Object *obj) { VersalVirt *s =3D XLNX_VERSAL_VIRT_MACHINE(obj); =20 g_free(s->ospi_model); + g_free(s->canbus); } =20 static void versal_virt_machine_class_init(ObjectClass *oc, const void *da= ta) { MachineClass *mc =3D MACHINE_CLASS(oc); diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 87468cbc291..7ed1001dab3 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -25,10 +25,11 @@ #include "target/arm/cpu-qom.h" #include "target/arm/gtimer.h" #include "system/device_tree.h" #include "hw/arm/fdt.h" #include "hw/char/pl011.h" +#include "hw/net/xlnx-versal-canfd.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") #define GEM_REVISION 0x40070106 =20 @@ -41,16 +42,23 @@ typedef struct VersalSimplePeriphMap { } VersalSimplePeriphMap; =20 typedef struct VersalMap { VersalSimplePeriphMap uart[2]; size_t num_uart; + + VersalSimplePeriphMap canfd[4]; + size_t num_canfd; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { .uart[0] =3D { 0xff000000, 18 }, .uart[1] =3D { 0xff010000, 19 }, .num_uart =3D 2, + + .canfd[0] =3D { 0xff060000, 20 }, + .canfd[1] =3D { 0xff070000, 21 }, + .num_canfd =3D 2, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { [VERSAL_VER_VERSAL] =3D &VERSAL_MAP, }; @@ -284,40 +292,46 @@ static void versal_create_uart(Versal *s, if (chardev_idx =3D=3D 0) { qemu_fdt_setprop_string(s->cfg.fdt, "/chosen", "stdout-path", node= ); } } =20 -static void versal_create_canfds(Versal *s, qemu_irq *pic) +static void versal_create_canfd(Versal *s, const VersalSimplePeriphMap *ma= p, + CanBusState *bus) { - int i; - uint32_t irqs[] =3D { VERSAL_CANFD0_IRQ_0, VERSAL_CANFD1_IRQ_0}; - uint64_t addrs[] =3D { MM_CANFD0, MM_CANFD1 }; + SysBusDevice *sbd; + MemoryRegion *mr; + g_autofree char *node; + const char compatible[] =3D "xlnx,canfd-2.0"; + const char clocknames[] =3D "can_clk\0s_axi_aclk"; =20 - for (i =3D 0; i < ARRAY_SIZE(s->lpd.iou.canfd); i++) { - char *name =3D g_strdup_printf("canfd%d", i); - SysBusDevice *sbd; - MemoryRegion *mr; + sbd =3D SYS_BUS_DEVICE(qdev_new(TYPE_XILINX_CANFD)); + object_property_add_child(OBJECT(s), "canfd[*]", OBJECT(sbd)); =20 - object_initialize_child(OBJECT(s), name, &s->lpd.iou.canfd[i], - TYPE_XILINX_CANFD); - sbd =3D SYS_BUS_DEVICE(&s->lpd.iou.canfd[i]); + object_property_set_int(OBJECT(sbd), "ext_clk_freq", + 25 * 1000 * 1000 , &error_abort); =20 - object_property_set_int(OBJECT(&s->lpd.iou.canfd[i]), "ext_clk_fre= q", - XLNX_VERSAL_CANFD_REF_CLK , &error_abort); + object_property_set_link(OBJECT(sbd), "canfdbus", OBJECT(bus), + &error_abort); =20 - object_property_set_link(OBJECT(&s->lpd.iou.canfd[i]), "canfdbus", - OBJECT(s->lpd.iou.canbus[i]), - &error_abort); + sysbus_realize_and_unref(sbd, &error_fatal); =20 - sysbus_realize(sbd, &error_fatal); + mr =3D sysbus_mmio_get_region(sbd, 0); + memory_region_add_subregion(&s->mr_ps, map->addr, mr); =20 - mr =3D sysbus_mmio_get_region(sbd, 0); - memory_region_add_subregion(&s->mr_ps, addrs[i], mr); + versal_sysbus_connect_irq(s, sbd, 0, map->irq); =20 - sysbus_connect_irq(sbd, 0, pic[irqs[i]]); - g_free(name); - } + node =3D versal_fdt_add_simple_subnode(s, "/canfd", map->addr, 0x10000, + compatible, sizeof(compatible)); + qemu_fdt_setprop_cell(s->cfg.fdt, node, "rx-fifo-depth", 0x40); + qemu_fdt_setprop_cell(s->cfg.fdt, node, "tx-mailbox-count", 0x20); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "clocks", + s->phandle.clk_25mhz, s->phandle.clk_25mhz); + qemu_fdt_setprop(s->cfg.fdt, node, "clock-names", + clocknames, sizeof(clocknames)); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "interrupts", + GIC_FDT_IRQ_TYPE_SPI, map->irq, + GIC_FDT_IRQ_FLAGS_LEVEL_HI); } =20 static void versal_create_usbs(Versal *s, qemu_irq *pic) { DeviceState *dev; @@ -1046,11 +1060,14 @@ static void versal_realize(DeviceState *dev, Error = **errp) =20 for (i =3D 0; i < map->num_uart; i++) { versal_create_uart(s, &map->uart[i], i); } =20 - versal_create_canfds(s, pic); + for (i =3D 0; i < map->num_canfd; i++) { + versal_create_canfd(s, &map->canfd[i], s->cfg.canbus[i]); + } + versal_create_usbs(s, pic); versal_create_gems(s, pic); versal_create_admas(s, pic); versal_create_sds(s, pic); versal_create_pmc_apb_irq_orgate(s, pic); @@ -1074,28 +1091,50 @@ static void versal_realize(DeviceState *dev, Error = **errp) memory_region_add_subregion_overlap(&s->fpd.apu.mr, 0, &s->mr_ps, 0); memory_region_add_subregion_overlap(&s->lpd.rpu.mr, 0, &s->lpd.rpu.mr_ps_alias, 0); } =20 +int versal_get_num_can(VersalVersion version) +{ + const VersalMap *map =3D VERSION_TO_MAP[version]; + + return map->num_canfd; +} + static void versal_base_init(Object *obj) { Versal *s =3D XLNX_VERSAL_BASE(obj); + size_t i, num_can; =20 memory_region_init(&s->fpd.apu.mr, obj, "mr-apu", UINT64_MAX); memory_region_init(&s->lpd.rpu.mr, obj, "mr-rpu", UINT64_MAX); memory_region_init(&s->mr_ps, obj, "mr-ps-switch", UINT64_MAX); memory_region_init_alias(&s->lpd.rpu.mr_ps_alias, OBJECT(s), "mr-rpu-ps-alias", &s->mr_ps, 0, UINT64_MAX); + + num_can =3D versal_get_map(s)->num_canfd; + s->cfg.canbus =3D g_new0(CanBusState *, num_can); + + for (i =3D 0; i < num_can; i++) { + g_autofree char *prop_name =3D g_strdup_printf("canbus%zu", i); + + object_property_add_link(obj, prop_name, TYPE_CAN_BUS, + (Object **) &s->cfg.canbus[i], + object_property_allow_set_link, 0); + } +} + +static void versal_base_finalize(Object *obj) +{ + Versal *s =3D XLNX_VERSAL_BASE(obj); + + g_free(s->cfg.canbus); } =20 static const Property versal_properties[] =3D { DEFINE_PROP_LINK("ddr", Versal, cfg.mr_ddr, TYPE_MEMORY_REGION, MemoryRegion *), - DEFINE_PROP_LINK("canbus0", Versal, lpd.iou.canbus[0], - TYPE_CAN_BUS, CanBusState *), - DEFINE_PROP_LINK("canbus1", Versal, lpd.iou.canbus[1], - TYPE_CAN_BUS, CanBusState *), }; =20 static void versal_base_class_init(ObjectClass *klass, const void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); @@ -1115,10 +1154,11 @@ static void versal_class_init(ObjectClass *klass, c= onst void *data) static const TypeInfo versal_base_info =3D { .name =3D TYPE_XLNX_VERSAL_BASE, .parent =3D TYPE_SYS_BUS_DEVICE, .instance_size =3D sizeof(Versal), .instance_init =3D versal_base_init, + .instance_finalize =3D versal_base_finalize, .class_init =3D versal_base_class_init, .class_size =3D sizeof(VersalClass), .abstract =3D true, }; =20 --=20 2.50.1 From nobody Sun Sep 21 20:11:36 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757672002; cv=pass; d=zohomail.com; s=zohoarc; b=IgS/sD/7L8HUhA4snnCnfIwnqB7KlTdetNfpjfaxzFd1/1rH3MO8tdNGli/81qwhhkJ7gXNKaqOcoPoUGQDJNrvxQcgjEYKgfyvVjdIxUn0pE5Ahpa34AlKNyYV8fr67yaSiQ1kopNAPwBdVPsms6kJd0CDuYBXRw5GnjpjMMvI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757672002; 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=FxGru8PK9rDs5PwRinBoqTOFq3Z7zxiNVCdZBIjh3HA=; b=g1pkKi4pleErX4t6uoCEcVocy4I9RYROzo5i9us19bnaRMn4SJBwPSpzD3Xzeb0c0K4osWkJmTsj23l0EYghfqqqbJnFBa2oaFusZZOlNmIOi5LKROX92yUa7qkSYIbcKzl3C9xEP66YUZaP0IjMjgQo2jeGj3RTs30QKMMFgCk= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17576720026921022.3622519077684; Fri, 12 Sep 2025 03:13:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0cc-0006Wd-Gn; Fri, 12 Sep 2025 06:03:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cQ-0005s9-Lq; Fri, 12 Sep 2025 06:03:03 -0400 Received: from mail-mw2nam10on20604.outbound.protection.outlook.com ([2a01:111:f403:2412::604] helo=NAM10-MW2-obe.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 1ux0cK-0001GX-8i; Fri, 12 Sep 2025 06:03:02 -0400 Received: from DS7PR03CA0050.namprd03.prod.outlook.com (2603:10b6:5:3b5::25) by PH7PR12MB7257.namprd12.prod.outlook.com (2603:10b6:510:205::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:02:43 +0000 Received: from DS1PEPF0001709A.namprd05.prod.outlook.com (2603:10b6:5:3b5:cafe::6e) by DS7PR03CA0050.outlook.office365.com (2603:10b6:5:3b5::25) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.18 via Frontend Transport; Fri, 12 Sep 2025 10:02:43 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS1PEPF0001709A.mail.protection.outlook.com (10.167.18.104) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:02:43 +0000 Received: from SATLEXMB05.amd.com (10.181.40.146) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:31 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB05.amd.com (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:01:30 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:01:29 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=RsiEunyFaE6kYcyOuc3xnR4chn0m1EqQv07WzkJYwsyTugfa9R734+INOAqoTRRKu5QiO3GwY9DqYbj881S1ts/x54T6dZ+9NFRSb49wDj2k7eBin1XuociwAgMVdcC741cXHflB+0RsQGXS6EueBQ3s756PHJ4jogOskjsmqnGQRsMT/uOZ8B9nQfMSB874bUxHnh1XUmv+VT77TY1ad4lJOKEyWl0nVvmOdt4KeKiz1xv5tFWa9f7vQq4WCA7OLJ5UAun9ksubR2Kd1UwdHvaE7I6wyO/FnrMMyZqNwNjL1bjwf6W7leauNsUfycTk6Xl5YEoJAzknRx+WdASDsQ== 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=FxGru8PK9rDs5PwRinBoqTOFq3Z7zxiNVCdZBIjh3HA=; b=SvnTgK4rfI2eytBOl2wzSTHCk8B0+m9N3ETFj62+xV3Us1DDSoI8XzGoKYzvlaBdDO31HMDRt4UzsRULEfFz0w7qum0vF9xw4zgGwKjfwNLT05GU4ikTQsVgwkHYkAvIDx9qNgqcY50xNDEtc4zgnj3V4F31mjI4r3JPQFUoreadtpb5Wny1bkE5OgCZCk49fDVchhjgJO+9e5NJsV6yN92NAYXHVUSQ4q2HHbcwAcTLkiFxW04vpiEsn4YN3dPQj010h7M18zuS/DpUt8rZI6K6kNI6GUEdvQlyIK/ZLXzYWfx3fPzSbvbq13cpA4hIOYiXrnJisNpeGMUJQ2bGwQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FxGru8PK9rDs5PwRinBoqTOFq3Z7zxiNVCdZBIjh3HA=; b=iaTTrR7tC/crsrKznMrWNFBhXPSEQY2Ir/GGTw9PKsiZuq/UO3+SWWn4NU6cs6EtPMsrscmLRHdtkYc0+S3LY3BvZAOwQcbwqmgydlscFJ5V4PiqcvoMqN9d39Q+s3T5pZp3D7Wp7K1k2qLv1dZ+UnbjgVNi2/lIKeGIs3WAIx8= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 05/47] hw/arm/xlnx-versal: sdhci: refactor creation Date: Fri, 12 Sep 2025 12:00:14 +0200 Message-ID: <20250912100059.103997-6-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: None (SATLEXMB05.amd.com: luc.michel@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0001709A:EE_|PH7PR12MB7257:EE_ X-MS-Office365-Filtering-Correlation-Id: 1d240508-1327-4fe4-7b88-08ddf1e38402 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|376014|1800799024|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?808aaxlEIEylq5siaeFZFTvuJfq+8FKFZ0TlqreiVUh9A648/gx6Cx2j633n?= =?us-ascii?Q?Zs4UkYgnFkZezBhkykJj3fPU8hLItgX7XErQJW6oiF2nBWZP63nvuzwjtvsy?= =?us-ascii?Q?GCeEmaTitz8rzEvZbZhnF5vR+wjKpyZe0OpcviFkjX6ddF4R4fY0f/mGm90l?= =?us-ascii?Q?Ukt4xIJdWTIEdLA+zBXrJspft87vvCBaJKoIfFNGxYpznGawQToqt7NjOk75?= =?us-ascii?Q?BBwi4D7kn2y7WwK2jZuyaZ4Z1jQKZnPX2fjcfxc0Nuk7mfgQJBwvY+3j0pgy?= =?us-ascii?Q?tb3468dlD8NypbAnAj9TNmyGHd+O6q232Ays2Rn7pye4+fMqWYrmxOAhBpQE?= =?us-ascii?Q?ps1sEr/GsUsu+ofdeR6/tRpZRC1IMosU6/vQlX3ChQfbPSp62qwsJbY7UHG+?= =?us-ascii?Q?ynuafizcg1sarOx/J4aPpUH76iuT5a6trdsoTC4VUSEwj6WJP2q1c+bc7HGG?= =?us-ascii?Q?bM+NaFX9+Jw9AtjFiErB2b0VdBYylYtuoIweccetD9QS3Mzp8FsRqPxt/yMt?= =?us-ascii?Q?UKvHfYvJ41YFfCr9Zrnf1KjHxMiTGDinThnBDGlZSk8fIp80E6HWovK1qYnH?= =?us-ascii?Q?0YPQHb66GUoJfcP99+Oa2BkVtjiBDZxnZZ6NEE00iKAQFZbv9DOfsdrqoH0z?= =?us-ascii?Q?iZOC3boPsw6+g+XdcXhraNO4xIfXnajXPFFBtq36WuXDRndukcDYD+WzanRO?= =?us-ascii?Q?AzkLT2HjqrwsJdhLOP/Zh4d76GS7989iB6omSqWEeMp/gGuEj+ma29XuViaP?= =?us-ascii?Q?kVABBJNr6UWLBrWu2KNfkJv0pCNRvQQfaVbi66d39Sr+Micp3miatyr/Tvuh?= =?us-ascii?Q?31zlM/42nGYK3L7yYUAe5UNEy4FUp3z7cs5Mot3f7gDl7ogLYfnIMjMypTm7?= =?us-ascii?Q?Zhczvcr1fxI5PzyXqvAMK0IlKzSmbnXg247jlCdCs7+i8tP5fjUZ+5QDERB2?= =?us-ascii?Q?4wMFlpKTtArVTLOZfLrv7NDk+gdJwAVecaxwdLBJ9zfZFFVCDyvbushKfpOW?= =?us-ascii?Q?wG3Glqs4VpGIS6E2CC1t78kmf6WFsaI/qxSwTdtTg12z0FTstoCWDEI62r+3?= =?us-ascii?Q?RCr2dkdypTwbCw5LZfxcanVJYZJK9b5kpuuAg++2q0efxL+fVEPH7QFcOqet?= =?us-ascii?Q?4pVocD4rABJb4mXKZ/GUmUZ+LGf/f1VzD/nc4TSF9YsTN5nEJNYyD2piQv2o?= =?us-ascii?Q?wxUArHTdvk6L3QL3qoDmEFJMEBPEGtuuVAyX+Dh8uZNQEa0CuwGCRlrJVfFN?= =?us-ascii?Q?S4A+VCFvBNCWS+pFf1QfYsdn/W0ly1/kImDJavuWl42+RyG9BzAHnAB4EEQ2?= =?us-ascii?Q?PcNnDUmCGb9INhZfYlCocEmUMQZKDXg0P2KGWwyWYI3XgmzghpoJHSobinmp?= =?us-ascii?Q?+MiishI0mTy0LV9MUn+h+DK0XGTLVtk/ovoCvFRUKqZIEBUVGI4TY4gCgeQY?= =?us-ascii?Q?0EAC8tcbTFCjdmPwVfStmiYLBLEttdjqV/55zhrGzl8j9A3VUNAfO8OOJdUZ?= =?us-ascii?Q?SgUhdmkta24+GFwJcP4aZuYBqzjPl6quQnz+?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(36860700013)(376014)(1800799024)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:02:43.0280 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1d240508-1327-4fe4-7b88-08ddf1e38402 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0001709A.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7257 Received-SPF: permerror client-ip=2a01:111:f403:2412::604; envelope-from=Luc.Michel@amd.com; helo=NAM10-MW2-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757672003171116600 Content-Type: text/plain; charset="utf-8" Refactor the SDHCI controllers creation using the VersalMap structure. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/arm/xlnx-versal.h | 5 +- hw/arm/xlnx-versal-virt.c | 43 ++-------------- hw/arm/xlnx-versal.c | 96 ++++++++++++++++++++++++++++-------- 3 files changed, 83 insertions(+), 61 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 007c91b596e..4a7a2d85aac 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -14,11 +14,10 @@ #define XLNX_VERSAL_H =20 #include "hw/sysbus.h" #include "hw/cpu/cluster.h" #include "hw/or-irq.h" -#include "hw/sd/sdhci.h" #include "hw/intc/arm_gicv3.h" #include "hw/dma/xlnx-zdma.h" #include "hw/net/cadence_gem.h" #include "hw/rtc/xlnx-zynqmp-rtc.h" #include "qom/object.h" @@ -103,11 +102,10 @@ struct Versal { } lpd; =20 /* The Platform Management Controller subsystem. */ struct { struct { - SDHCIState sd[XLNX_VERSAL_NR_SDS]; XlnxVersalPmcIouSlcr slcr; =20 struct { XlnxVersalOspi ospi; XlnxCSUDMA dma_src; @@ -154,11 +152,14 @@ static inline void versal_set_fdt(Versal *s, void *fd= t) { g_assert(!qdev_is_realized(DEVICE(s))); s->cfg.fdt =3D fdt; } =20 +void versal_sdhci_plug_card(Versal *s, int sd_idx, BlockBackend *blk); + int versal_get_num_can(VersalVersion version); +int versal_get_num_sdhci(VersalVersion version); =20 /* Memory-map and IRQ definitions. Copied a subset from * auto-generated files. */ =20 #define VERSAL_GIC_MAINT_IRQ 9 diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 334252564be..52852082d4b 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -282,36 +282,10 @@ static void fdt_add_zdma_nodes(VersalVirt *s) qemu_fdt_setprop(s->fdt, name, "compatible", compat, sizeof(compat= )); g_free(name); } } =20 -static void fdt_add_sd_nodes(VersalVirt *s) -{ - const char clocknames[] =3D "clk_xin\0clk_ahb"; - const char compat[] =3D "arasan,sdhci-8.9a"; - int i; - - for (i =3D ARRAY_SIZE(s->soc.pmc.iou.sd) - 1; i >=3D 0; i--) { - uint64_t addr =3D MM_PMC_SD0 + MM_PMC_SD0_SIZE * i; - char *name =3D g_strdup_printf("/sdhci@%" PRIx64, addr); - - qemu_fdt_add_subnode(s->fdt, name); - - qemu_fdt_setprop_cells(s->fdt, name, "clocks", - s->phandle.clk_25Mhz, s->phandle.clk_25Mhz); - qemu_fdt_setprop(s->fdt, name, "clock-names", - clocknames, sizeof(clocknames)); - qemu_fdt_setprop_cells(s->fdt, name, "interrupts", - GIC_FDT_IRQ_TYPE_SPI, VERSAL_SD0_IRQ_0 + i = * 2, - GIC_FDT_IRQ_FLAGS_LEVEL_HI); - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", - 2, addr, 2, MM_PMC_SD0_SIZE); - qemu_fdt_setprop(s->fdt, name, "compatible", compat, sizeof(compat= )); - g_free(name); - } -} - static void fdt_add_rtc_node(VersalVirt *s) { const char compat[] =3D "xlnx,zynqmp-rtc"; const char interrupt_names[] =3D "alarm\0sec"; char *name =3D g_strdup_printf("/rtc@%x", MM_PMC_RTC); @@ -562,20 +536,15 @@ static void efuse_attach_drive(XlnxEFuse *dev) if (blk) { qdev_prop_set_drive(DEVICE(dev), "drive", blk); } } =20 -static void sd_plugin_card(SDHCIState *sd, DriveInfo *di) +static void sd_plug_card(VersalVirt *s, int idx, DriveInfo *di) { BlockBackend *blk =3D di ? blk_by_legacy_dinfo(di) : NULL; - DeviceState *card; =20 - card =3D qdev_new(TYPE_SD_CARD); - object_property_add_child(OBJECT(sd), "card[*]", OBJECT(card)); - qdev_prop_set_drive_err(card, "drive", blk, &error_fatal); - qdev_realize_and_unref(card, qdev_get_child_bus(DEVICE(sd), "sd-bus"), - &error_fatal); + versal_sdhci_plug_card(&s->soc, idx, blk); } =20 static char *versal_get_ospi_model(Object *obj, Error **errp) { VersalVirt *s =3D XLNX_VERSAL_VIRT_MACHINE(obj); @@ -646,11 +615,10 @@ static void versal_virt_init(MachineState *machine) fdt_add_gem_nodes(s); fdt_add_gic_nodes(s); fdt_add_timer_nodes(s); fdt_add_zdma_nodes(s); fdt_add_usb_xhci_nodes(s); - fdt_add_sd_nodes(s); fdt_add_rtc_node(s); fdt_add_bbram_node(s); fdt_add_efuse_ctrl_node(s); fdt_add_efuse_cache_node(s); fdt_add_cpu_nodes(s, psci_conduit); @@ -666,14 +634,13 @@ static void versal_virt_init(MachineState *machine) bbram_attach_drive(&s->soc.pmc.bbram); =20 /* Attach efuse backend, if given */ efuse_attach_drive(&s->soc.pmc.efuse); =20 - /* Plugin SD cards. */ - for (i =3D 0; i < ARRAY_SIZE(s->soc.pmc.iou.sd); i++) { - sd_plugin_card(&s->soc.pmc.iou.sd[i], - drive_get(IF_SD, 0, i)); + /* Plug SD cards */ + for (i =3D 0; i < versal_get_num_sdhci(VERSAL_VER_VERSAL); i++) { + sd_plug_card(s, i, drive_get(IF_SD, 0, i)); } =20 s->binfo.ram_size =3D machine->ram_size; s->binfo.loader_start =3D 0x0; s->binfo.get_dtb =3D versal_virt_get_dtb; diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 7ed1001dab3..4b4cca0487d 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -26,10 +26,11 @@ #include "target/arm/gtimer.h" #include "system/device_tree.h" #include "hw/arm/fdt.h" #include "hw/char/pl011.h" #include "hw/net/xlnx-versal-canfd.h" +#include "hw/sd/sdhci.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") #define GEM_REVISION 0x40070106 =20 @@ -45,20 +46,27 @@ typedef struct VersalMap { VersalSimplePeriphMap uart[2]; size_t num_uart; =20 VersalSimplePeriphMap canfd[4]; size_t num_canfd; + + VersalSimplePeriphMap sdhci[2]; + size_t num_sdhci; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { .uart[0] =3D { 0xff000000, 18 }, .uart[1] =3D { 0xff010000, 19 }, .num_uart =3D 2, =20 .canfd[0] =3D { 0xff060000, 20 }, .canfd[1] =3D { 0xff070000, 21 }, .num_canfd =3D 2, + + .sdhci[0] =3D { 0xf1040000, 126 }, + .sdhci[1] =3D { 0xf1050000, 128 }, + .num_sdhci =3D 2, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { [VERSAL_VER_VERSAL] =3D &VERSAL_MAP, }; @@ -71,10 +79,22 @@ static inline VersalVersion versal_get_version(Versal *= s) static inline const VersalMap *versal_get_map(Versal *s) { return VERSION_TO_MAP[versal_get_version(s)]; } =20 +static inline Object *versal_get_child(Versal *s, const char *child) +{ + return object_resolve_path_at(OBJECT(s), child); +} + +static inline Object *versal_get_child_idx(Versal *s, const char *child, + size_t idx) +{ + g_autofree char *n =3D g_strdup_printf("%s[%zu]", child, idx); + + return versal_get_child(s, n); +} =20 static qemu_irq versal_get_irq(Versal *s, int irq_idx) { return qdev_get_gpio_in(DEVICE(&s->fpd.apu.gic), irq_idx); } @@ -422,36 +442,43 @@ static void versal_create_admas(Versal *s, qemu_irq *= pic) g_free(name); } } =20 #define SDHCI_CAPABILITIES 0x280737ec6481 /* Same as on ZynqMP. */ -static void versal_create_sds(Versal *s, qemu_irq *pic) +static void versal_create_sdhci(Versal *s, + const VersalSimplePeriphMap *map) { - int i; + DeviceState *dev; + MemoryRegion *mr; + g_autofree char *node; + const char compatible[] =3D "arasan,sdhci-8.9a"; + const char clocknames[] =3D "clk_xin\0clk_ahb"; =20 - for (i =3D 0; i < ARRAY_SIZE(s->pmc.iou.sd); i++) { - DeviceState *dev; - MemoryRegion *mr; + dev =3D qdev_new(TYPE_SYSBUS_SDHCI); + object_property_add_child(OBJECT(s), "sdhci[*]", OBJECT(dev)); =20 - object_initialize_child(OBJECT(s), "sd[*]", &s->pmc.iou.sd[i], - TYPE_SYSBUS_SDHCI); - dev =3D DEVICE(&s->pmc.iou.sd[i]); + object_property_set_uint(OBJECT(dev), "sd-spec-version", 3, + &error_fatal); + object_property_set_uint(OBJECT(dev), "capareg", SDHCI_CAPABILITIES, + &error_fatal); + object_property_set_uint(OBJECT(dev), "uhs", UHS_I, &error_fatal); + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 - object_property_set_uint(OBJECT(dev), "sd-spec-version", 3, - &error_fatal); - object_property_set_uint(OBJECT(dev), "capareg", SDHCI_CAPABILITIE= S, - &error_fatal); - object_property_set_uint(OBJECT(dev), "uhs", UHS_I, &error_fatal); - sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); + mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); + memory_region_add_subregion(&s->mr_ps, map->addr, mr); =20 - mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); - memory_region_add_subregion(&s->mr_ps, - MM_PMC_SD0 + i * MM_PMC_SD0_SIZE, mr); + versal_sysbus_connect_irq(s, SYS_BUS_DEVICE(dev), 0, map->irq); =20 - sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, - pic[VERSAL_SD0_IRQ_0 + i * 2]); - } + node =3D versal_fdt_add_simple_subnode(s, "/sdhci", map->addr, 0x10000, + compatible, sizeof(compatible)); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "clocks", + s->phandle.clk_25mhz, s->phandle.clk_25mhz); + qemu_fdt_setprop(s->cfg.fdt, node, "clock-names", + clocknames, sizeof(clocknames)); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "interrupts", + GIC_FDT_IRQ_TYPE_SPI, map->irq, + GIC_FDT_IRQ_FLAGS_LEVEL_HI); } =20 static void versal_create_pmc_apb_irq_orgate(Versal *s, qemu_irq *pic) { DeviceState *orgate; @@ -1064,14 +1091,17 @@ static void versal_realize(DeviceState *dev, Error = **errp) =20 for (i =3D 0; i < map->num_canfd; i++) { versal_create_canfd(s, &map->canfd[i], s->cfg.canbus[i]); } =20 + for (i =3D 0; i < map->num_sdhci; i++) { + versal_create_sdhci(s, &map->sdhci[i]); + } + versal_create_usbs(s, pic); versal_create_gems(s, pic); versal_create_admas(s, pic); - versal_create_sds(s, pic); versal_create_pmc_apb_irq_orgate(s, pic); versal_create_rtc(s, pic); versal_create_trng(s, pic); versal_create_xrams(s, pic); versal_create_bbram(s, pic); @@ -1091,17 +1121,41 @@ static void versal_realize(DeviceState *dev, Error = **errp) memory_region_add_subregion_overlap(&s->fpd.apu.mr, 0, &s->mr_ps, 0); memory_region_add_subregion_overlap(&s->lpd.rpu.mr, 0, &s->lpd.rpu.mr_ps_alias, 0); } =20 +void versal_sdhci_plug_card(Versal *s, int sd_idx, BlockBackend *blk) +{ + DeviceState *sdhci, *card; + + sdhci =3D DEVICE(versal_get_child_idx(s, "sdhci", sd_idx)); + + if (sdhci =3D=3D NULL) { + return; + } + + card =3D qdev_new(TYPE_SD_CARD); + object_property_add_child(OBJECT(sdhci), "card[*]", OBJECT(card)); + qdev_prop_set_drive_err(card, "drive", blk, &error_fatal); + qdev_realize_and_unref(card, qdev_get_child_bus(DEVICE(sdhci), "sd-bus= "), + &error_fatal); +} + int versal_get_num_can(VersalVersion version) { const VersalMap *map =3D VERSION_TO_MAP[version]; =20 return map->num_canfd; } =20 +int versal_get_num_sdhci(VersalVersion version) +{ + const VersalMap *map =3D VERSION_TO_MAP[version]; + + return map->num_sdhci; +} + static void versal_base_init(Object *obj) { Versal *s =3D XLNX_VERSAL_BASE(obj); size_t i, num_can; =20 --=20 2.50.1 From nobody Sun Sep 21 20:11:36 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757672446; cv=pass; d=zohomail.com; s=zohoarc; b=GpZOQnwEO/ahmTaRliZveT6NhMXF8r0UAN0AGe34+ADaSEGMhnsnrvVod9l0RkyJ+gkVREhyDAfPUEtlldIOMUHo/XVkZJM6vp+d5SFM28c1rfyxnkdENkuNl+FZ7MlgZq59SxxUJLvH5kzyBE4Z1xoAnV357O+zSm7mmJwfb3Q= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757672446; 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=5RzthV+oyR0WDvdvzw7IcAJoSUVnb2LxRn303QHDILA=; b=de3YidNeWzwV1qTttB3owTHIv87q017K3HVdylA5ZsHstCsB5M3EoFxj1vpCVd0QKbKJDNzgvy0aiqazEd4HhbHILb0J9Ro2j3GFAezpF446Y5H73I0SrNb+D//HafLo8p8UFpAR/u59Zcq7WU3X0k3wvEWzXpURZ0uMr2CfNGQ= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757672446661228.8871026881227; Fri, 12 Sep 2025 03:20:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0cR-0005x3-Q5; Fri, 12 Sep 2025 06:03:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cP-0005po-LT; Fri, 12 Sep 2025 06:03:01 -0400 Received: from mail-sn1nam02on2062d.outbound.protection.outlook.com ([2a01:111:f403:2406::62d] helo=NAM02-SN1-obe.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 1ux0cG-0001EE-Ep; Fri, 12 Sep 2025 06:03:00 -0400 Received: from DS7PR03CA0279.namprd03.prod.outlook.com (2603:10b6:5:3ad::14) by MN0PR12MB6199.namprd12.prod.outlook.com (2603:10b6:208:3c4::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:02:44 +0000 Received: from DS1PEPF0001709C.namprd05.prod.outlook.com (2603:10b6:5:3ad:cafe::c8) by DS7PR03CA0279.outlook.office365.com (2603:10b6:5:3ad::14) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.15 via Frontend Transport; Fri, 12 Sep 2025 10:02:44 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS1PEPF0001709C.mail.protection.outlook.com (10.167.18.106) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:02:44 +0000 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:32 -0700 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:01:31 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=g/25YUyxozyQbcwIQHB7tsdOKxYKrrmw3BpGWXiZyl3rQq94A376H5FgQQVkiic4F1VHL/ywgMuFH/SfFmZZQCOMtQizONbwReNmInqvvjyMmlviQDOdcd95FpZVDON75LqCgB+J25DoJ0F8yd9CcGlgSSWylphTXJWeVRIivSDayoIQlD3OMNj0daS1lCjfZh97zVybPYdcTwTxsTlWrDBunZubBzDPwdAA8jIeX9vXr/xt2UH2HogDtA8kUdobHW5ObdvISsd7eOWB/9lCr7OsW9Va4en8RmuDKEXnTmVLfALZTG9zAPDWPhcPxJr6X5zrgVwMhdwMkS9IlYZ61A== 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=5RzthV+oyR0WDvdvzw7IcAJoSUVnb2LxRn303QHDILA=; b=mCtg3hkl7ob7SEmMtTqWY7VyUVk0RYazToPUqYT8OzWSVAJMSxioDEVvxdHFohxwRGcJl1UlpETI+BSs+q+edeDDjdS+VBKc/+xagxMiYtPiEIwBIrq/BvuZz+qMXdiCXuQkBwIY/W4JJ/tlGEtkZOGbgJvWqWfLBSIpEHqeI3Y6dut5FwO4YYAEoYghW1kTey3hNJKn37yLaMFzXJw1AcCxi2BFvf/k9yx2qytfaI8okJJlmY9wwIHOFSRGjwiUEERD5DJsn52XNC6cEZ8iuYGeMHuNtHR4i+3nk3C2FdfvrqTjyt7y8J64BTdfmVmNvZEQA+OzE0DpGlbWUW3Mhg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5RzthV+oyR0WDvdvzw7IcAJoSUVnb2LxRn303QHDILA=; b=S7FM/ynFSMJLBNYHTCONcevpr9y/aPYXGIRCWswO9BsS6FqGnogpSzW9SyRonW/55qIqm0CK6ESsyEgqk248YIYh+0uCGGnXkecPO2f3QNUKek+urEVXN2sgGoKbBfImx1YiEuYlYB18oN2uV1rZDwvglrzxkoAZop8By0syFE0= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 06/47] hw/arm/xlnx-versal: gem: refactor creation Date: Fri, 12 Sep 2025 12:00:15 +0200 Message-ID: <20250912100059.103997-7-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0001709C:EE_|MN0PR12MB6199:EE_ X-MS-Office365-Filtering-Correlation-Id: 75d3b833-7266-4e99-05cb-08ddf1e38500 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|82310400026|376014|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?7nOQaDxJ7wYDHrYv3CTIShbD1H0EphqedDN3HeUPAtJUFB3Lds+HikI4DOq6?= =?us-ascii?Q?CyUNww2p9oozNkJIH+YQwWG+YTc/2j79pLB7ZO44rHJ4cdAGwfG522mKDlTn?= =?us-ascii?Q?WfJ94YVCI+hdvcemEAGUwPo1surGlVOgZlyHHSMpZRitYttZHKDv3sRtYtge?= =?us-ascii?Q?tJTNQVXBXohq9+9iHnK1ZCgATv7k6rTFRnphEKTpORnKixr2DcFXBdaPwgbD?= =?us-ascii?Q?kYatNtkFR6ccHhCnfKZAjs47XAR+5A6gfaWmBxtB5So87D9HCwgbrig2LsmG?= =?us-ascii?Q?wUwzxEkI7/tn4dADcBlXTs0FgnvgLdU3gWMiy5lvlRSZ2Py63BxmANQY5KOC?= =?us-ascii?Q?65PUKe5I7O17AeU7NdsTNUxE+3CyUufvEbM5/wyZ2cV+vHYnH0CqeUEjGNEo?= =?us-ascii?Q?AKrDbO9oOp876hl01kHkarVINvLHFk0/t3FYY74CPWFlBNK4Z9RmyjpUomdg?= =?us-ascii?Q?wGEQ3Ov1WX8ZjXTtj1S5G17zgzTVSW0pe7IPZGEqwQCMeE3+CwtVb6ddBf8e?= =?us-ascii?Q?xdTqc7QR7/recg0b3yDbcQgVPRbI65RZBkU82+vJQb8Lz7DtykpX1pYgx4va?= =?us-ascii?Q?7mWz/E+z6Eb3x3/6bu1BxYuetRo9ObtlWTo3sAB0WStEtvJDVA2VE/QOY44C?= =?us-ascii?Q?2Z+ukTVnGIoxjg+J8J9JbRKLITFynk1uvRZ6Ir7cZ1X72P1O26oVvpRZyHYk?= =?us-ascii?Q?vBi6+08KJEJ980KylrbdLluALs9BCmnnzede/CY90Mil6pn1BqUJRRB1XAzI?= =?us-ascii?Q?64ksq7Q4lwQq5xPjcTBtN9vFZ4x6beyMEHHUQXYOv5vBA5utkQ3sM7CSjkHp?= =?us-ascii?Q?10nfzKe3npMOK9aatQVaZVCEy7vI+xdW37u3xU68hnyAHCQ4/lt0wqnkBl3p?= =?us-ascii?Q?moh7Qy1lGIzktRXXRylUfnxNVGn+MjJq5Ns/hbRiikqYB2uTVWETmHlSAfvo?= =?us-ascii?Q?ukkeAPvx9x5bqh9BaWu1Rrf5Ly6mXJdM00mB/0tcn4M8gLpIRiHAdk+b8vQL?= =?us-ascii?Q?DTHaX6BSIuMFTRyf3RLcfD2EcxPPXXKwZF0q6FG1ANyfABlALoBO3n4wHRI3?= =?us-ascii?Q?jaeMFZutW+ddtEqhVcOacgWxWr+E22AXueIy3GTmauYYTk+kOYrYpZGgZM7G?= =?us-ascii?Q?hEB1A5TOXsLPLXA/37kaA9vvb5Bdgo/jl4TZVaeuI4Tcgy17OWShvFWyYxrC?= =?us-ascii?Q?PgVTNcdwS0fbHt1meubB++u84PAks7RillNCmSB0tPGqRdRtvCYkoXORilj4?= =?us-ascii?Q?SUWDigdkrQmg4AKWKxybEF4qunDVeOcgn3cfPXA0cYfb0cZ4FVaUDvqonFwp?= =?us-ascii?Q?KGkYUl3VxM8NcMfCIbU1MD812rky4jYzOxP2ytqEApcyA7eLOqDUeF53OaAn?= =?us-ascii?Q?kMs2p6seCZrtVbCaliBxI271EL4vHHT252t+PbcPnsnihsh+OqdtkpIQo0Dj?= =?us-ascii?Q?qt2+n73HObRFVNpNER73FmjTIofzkSQPBarb2Vut4utvI1DIZF1G8Ec1ISvL?= =?us-ascii?Q?QvAkjhMfKYq6/YVe/EKy2evxpxs/YQNWapOz?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(1800799024)(82310400026)(376014)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:02:44.6913 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 75d3b833-7266-4e99-05cb-08ddf1e38500 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0001709C.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB6199 Received-SPF: permerror client-ip=2a01:111:f403:2406::62d; envelope-from=Luc.Michel@amd.com; helo=NAM02-SN1-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757672449038116600 Content-Type: text/plain; charset="utf-8" Refactor the GEM ethernet controllers creation using the VersalMap structure. Note that the connection to the CRL is removed for now and will be re-added by next commits. The FDT nodes are created in reverse order compared to the devices creation to keep backward compatibility with the previous generated FDTs. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/arm/xlnx-versal.h | 3 - hw/arm/xlnx-versal-virt.c | 54 ------------ hw/arm/xlnx-versal.c | 163 ++++++++++++++++++++++++++--------- 3 files changed, 120 insertions(+), 100 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 4a7a2d85aac..1fcc2b623da 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -16,11 +16,10 @@ #include "hw/sysbus.h" #include "hw/cpu/cluster.h" #include "hw/or-irq.h" #include "hw/intc/arm_gicv3.h" #include "hw/dma/xlnx-zdma.h" -#include "hw/net/cadence_gem.h" #include "hw/rtc/xlnx-zynqmp-rtc.h" #include "qom/object.h" #include "hw/usb/xlnx-usb-subsystem.h" #include "hw/misc/xlnx-versal-xramc.h" #include "hw/nvram/xlnx-bbram.h" @@ -76,12 +75,10 @@ struct Versal { =20 struct { MemoryRegion mr_ocm; =20 struct { - CadenceGEMState gem[XLNX_VERSAL_NR_GEMS]; - OrIRQState gem_irq_orgate[XLNX_VERSAL_NR_GEMS]; XlnxZDMA adma[XLNX_VERSAL_NR_ADMAS]; VersalUsb2 usb; } iou; =20 /* Real-time Processing Unit. */ diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 52852082d4b..0634cc90eac 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -36,11 +36,10 @@ struct VersalVirt { =20 void *fdt; int fdt_size; struct { uint32_t gic; - uint32_t ethernet_phy[2]; uint32_t clk_125Mhz; uint32_t clk_25Mhz; uint32_t usb; uint32_t dwc; } phandle; @@ -55,23 +54,19 @@ struct VersalVirt { }; =20 static void fdt_create(VersalVirt *s) { MachineClass *mc =3D MACHINE_GET_CLASS(s); - int i; =20 s->fdt =3D create_device_tree(&s->fdt_size); if (!s->fdt) { error_report("create_device_tree() failed"); exit(1); } =20 /* Allocate all phandles. */ s->phandle.gic =3D qemu_fdt_alloc_phandle(s->fdt); - for (i =3D 0; i < ARRAY_SIZE(s->phandle.ethernet_phy); i++) { - s->phandle.ethernet_phy[i] =3D qemu_fdt_alloc_phandle(s->fdt); - } s->phandle.clk_25Mhz =3D qemu_fdt_alloc_phandle(s->fdt); s->phandle.clk_125Mhz =3D qemu_fdt_alloc_phandle(s->fdt); =20 s->phandle.usb =3D qemu_fdt_alloc_phandle(s->fdt); s->phandle.dwc =3D qemu_fdt_alloc_phandle(s->fdt); @@ -207,58 +202,10 @@ static void fdt_add_usb_xhci_nodes(VersalVirt *s) qemu_fdt_setprop_cell(s->fdt, name, "phandle", s->phandle.dwc); qemu_fdt_setprop_string(s->fdt, name, "maximum-speed", "high-speed"); g_free(name); } =20 -static void fdt_add_fixed_link_nodes(VersalVirt *s, char *gemname, - uint32_t phandle) -{ - char *name =3D g_strdup_printf("%s/fixed-link", gemname); - - qemu_fdt_add_subnode(s->fdt, name); - qemu_fdt_setprop_cell(s->fdt, name, "phandle", phandle); - qemu_fdt_setprop(s->fdt, name, "full-duplex", NULL, 0); - qemu_fdt_setprop_cell(s->fdt, name, "speed", 1000); - g_free(name); -} - -static void fdt_add_gem_nodes(VersalVirt *s) -{ - uint64_t addrs[] =3D { MM_GEM1, MM_GEM0 }; - unsigned int irqs[] =3D { VERSAL_GEM1_IRQ_0, VERSAL_GEM0_IRQ_0 }; - const char clocknames[] =3D "pclk\0hclk\0tx_clk\0rx_clk"; - const char compat_gem[] =3D "cdns,zynqmp-gem\0cdns,gem"; - int i; - - for (i =3D 0; i < ARRAY_SIZE(addrs); i++) { - char *name =3D g_strdup_printf("/ethernet@%" PRIx64, addrs[i]); - qemu_fdt_add_subnode(s->fdt, name); - - fdt_add_fixed_link_nodes(s, name, s->phandle.ethernet_phy[i]); - qemu_fdt_setprop_string(s->fdt, name, "phy-mode", "rgmii-id"); - qemu_fdt_setprop_cell(s->fdt, name, "phy-handle", - s->phandle.ethernet_phy[i]); - qemu_fdt_setprop_cells(s->fdt, name, "clocks", - s->phandle.clk_25Mhz, s->phandle.clk_25Mhz, - s->phandle.clk_125Mhz, s->phandle.clk_125Mh= z); - qemu_fdt_setprop(s->fdt, name, "clock-names", - clocknames, sizeof(clocknames)); - qemu_fdt_setprop_cells(s->fdt, name, "interrupts", - GIC_FDT_IRQ_TYPE_SPI, irqs[i], - GIC_FDT_IRQ_FLAGS_LEVEL_HI, - GIC_FDT_IRQ_TYPE_SPI, irqs[i], - GIC_FDT_IRQ_FLAGS_LEVEL_HI); - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", - 2, addrs[i], 2, 0x1000); - qemu_fdt_setprop(s->fdt, name, "compatible", - compat_gem, sizeof(compat_gem)); - qemu_fdt_setprop_cell(s->fdt, name, "#address-cells", 1); - qemu_fdt_setprop_cell(s->fdt, name, "#size-cells", 0); - g_free(name); - } -} - static void fdt_add_zdma_nodes(VersalVirt *s) { const char clocknames[] =3D "clk_main\0clk_apb"; const char compat[] =3D "xlnx,zynqmp-dma-1.0"; int i; @@ -610,11 +557,10 @@ static void versal_virt_init(MachineState *machine) fdt_create(s); versal_set_fdt(&s->soc, s->fdt); sysbus_realize(SYS_BUS_DEVICE(&s->soc), &error_fatal); create_virtio_regions(s); =20 - fdt_add_gem_nodes(s); fdt_add_gic_nodes(s); fdt_add_timer_nodes(s); fdt_add_zdma_nodes(s); fdt_add_usb_xhci_nodes(s); fdt_add_rtc_node(s); diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 4b4cca0487d..8ad67a110d7 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -27,10 +27,11 @@ #include "system/device_tree.h" #include "hw/arm/fdt.h" #include "hw/char/pl011.h" #include "hw/net/xlnx-versal-canfd.h" #include "hw/sd/sdhci.h" +#include "hw/net/cadence_gem.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") #define GEM_REVISION 0x40070106 =20 @@ -49,10 +50,18 @@ typedef struct VersalMap { VersalSimplePeriphMap canfd[4]; size_t num_canfd; =20 VersalSimplePeriphMap sdhci[2]; size_t num_sdhci; + + struct VersalGemMap { + VersalSimplePeriphMap map; + size_t num_prio_queue; + const char *phy_mode; + const uint32_t speed; + } gem[3]; + size_t num_gem; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { .uart[0] =3D { 0xff000000, 18 }, .uart[1] =3D { 0xff010000, 19 }, @@ -63,10 +72,14 @@ static const VersalMap VERSAL_MAP =3D { .num_canfd =3D 2, =20 .sdhci[0] =3D { 0xf1040000, 126 }, .sdhci[1] =3D { 0xf1050000, 128 }, .num_sdhci =3D 2, + + .gem[0] =3D { { 0xff0c0000, 56 }, 2, "rgmii-id", 1000 }, + .gem[1] =3D { { 0xff0d0000, 58 }, 2, "rgmii-id", 1000 }, + .num_gem =3D 2, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { [VERSAL_VER_VERSAL] =3D &VERSAL_MAP, }; @@ -109,10 +122,22 @@ static void versal_sysbus_connect_irq(Versal *s, SysB= usDevice *sbd, } =20 sysbus_connect_irq(sbd, sbd_idx, irq); } =20 +static void versal_qdev_connect_gpio_out(Versal *s, DeviceState *dev, + int dev_idx, int irq_idx) +{ + qemu_irq irq =3D versal_get_irq(s, irq_idx); + + if (irq =3D=3D NULL) { + return; + } + + qdev_connect_gpio_out(dev, dev_idx, irq); +} + static inline char *versal_fdt_add_subnode(Versal *s, const char *path, uint64_t at, const char *compat, size_t compat_sz) { char *p; @@ -138,10 +163,25 @@ static inline char *versal_fdt_add_simple_subnode(Ver= sal *s, const char *path, =20 qemu_fdt_setprop_sized_cells(s->cfg.fdt, p, "reg", 2, addr, 2, len); return p; } =20 +static inline DeviceState *create_or_gate(Versal *s, Object *parent, + const char *name, uint16_t num_l= ines, + int irq_idx) +{ + DeviceState *or; + + or =3D qdev_new(TYPE_OR_IRQ); + qdev_prop_set_uint16(or, "num-lines", num_lines); + object_property_add_child(parent, name, OBJECT(or)); + qdev_realize_and_unref(or, NULL, &error_abort); + versal_qdev_connect_gpio_out(s, or, 0, irq_idx); + + return or; +} + static void versal_create_apu_cpus(Versal *s) { int i; =20 object_initialize_child(OBJECT(s), "apu-cluster", &s->fpd.apu.cluster, @@ -375,50 +415,86 @@ static void versal_create_usbs(Versal *s, qemu_irq *p= ic) =20 mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 1); memory_region_add_subregion(&s->mr_ps, MM_USB2_CTRL_REGS, mr); } =20 -static void versal_create_gems(Versal *s, qemu_irq *pic) +static void versal_create_gem(Versal *s, + const struct VersalGemMap *map) { + DeviceState *dev; + MemoryRegion *mr; + DeviceState *or; int i; =20 - for (i =3D 0; i < ARRAY_SIZE(s->lpd.iou.gem); i++) { - static const int irqs[] =3D { VERSAL_GEM0_IRQ_0, VERSAL_GEM1_IRQ_0= }; - static const uint64_t addrs[] =3D { MM_GEM0, MM_GEM1 }; - char *name =3D g_strdup_printf("gem%d", i); - DeviceState *dev; - MemoryRegion *mr; - OrIRQState *or_irq; - - object_initialize_child(OBJECT(s), name, &s->lpd.iou.gem[i], - TYPE_CADENCE_GEM); - or_irq =3D &s->lpd.iou.gem_irq_orgate[i]; - object_initialize_child(OBJECT(s), "gem-irq-orgate[*]", - or_irq, TYPE_OR_IRQ); - dev =3D DEVICE(&s->lpd.iou.gem[i]); - qemu_configure_nic_device(dev, true, NULL); - object_property_set_int(OBJECT(dev), "phy-addr", 23, &error_abort); - object_property_set_int(OBJECT(dev), "num-priority-queues", 2, - &error_abort); - object_property_set_int(OBJECT(or_irq), - "num-lines", 2, &error_fatal); - qdev_realize(DEVICE(or_irq), NULL, &error_fatal); - qdev_connect_gpio_out(DEVICE(or_irq), 0, pic[irqs[i]]); - - object_property_set_link(OBJECT(dev), "dma", OBJECT(&s->mr_ps), - &error_abort); - sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); - - mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); - memory_region_add_subregion(&s->mr_ps, addrs[i], mr); - - sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(DEVICE= (or_irq), 0)); - sysbus_connect_irq(SYS_BUS_DEVICE(dev), 1, qdev_get_gpio_in(DEVICE= (or_irq), 1)); - g_free(name); + dev =3D qdev_new(TYPE_CADENCE_GEM); + object_property_add_child(OBJECT(s), "gem[*]", OBJECT(dev)); + + qemu_configure_nic_device(dev, true, NULL); + object_property_set_int(OBJECT(dev), "phy-addr", 23, &error_abort); + object_property_set_int(OBJECT(dev), "num-priority-queues", + map->num_prio_queue, &error_abort); + + object_property_set_link(OBJECT(dev), "dma", OBJECT(&s->mr_ps), + &error_abort); + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + + mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); + memory_region_add_subregion(&s->mr_ps, map->map.addr, mr); + + /* + * The GEM controller exposes one IRQ line per priority queue. In Vers= al + * family devices, those are OR'ed together. + */ + or =3D create_or_gate(s, OBJECT(dev), "irq-orgate", + map->num_prio_queue, map->map.irq); + + for (i =3D 0; i < map->num_prio_queue; i++) { + sysbus_connect_irq(SYS_BUS_DEVICE(dev), i, qdev_get_gpio_in(or, i)= ); } } =20 +static void versal_create_gem_fdt(Versal *s, + const struct VersalGemMap *map) +{ + int i; + g_autofree char *node; + g_autofree char *phy_node; + int phy_phandle; + const char compatible[] =3D "cdns,zynqmp-gem\0cdns,gem"; + const char clocknames[] =3D "pclk\0hclk\0tx_clk\0rx_clk"; + g_autofree uint32_t *irq_prop; + + node =3D versal_fdt_add_simple_subnode(s, "/ethernet", map->map.addr, = 0x1000, + compatible, sizeof(compatible)); + phy_node =3D g_strdup_printf("%s/fixed-link", node); + phy_phandle =3D qemu_fdt_alloc_phandle(s->cfg.fdt); + + /* Fixed link PHY node */ + qemu_fdt_add_subnode(s->cfg.fdt, phy_node); + qemu_fdt_setprop_cell(s->cfg.fdt, phy_node, "phandle", phy_phandle); + qemu_fdt_setprop(s->cfg.fdt, phy_node, "full-duplex", NULL, 0); + qemu_fdt_setprop_cell(s->cfg.fdt, phy_node, "speed", map->speed); + + qemu_fdt_setprop_string(s->cfg.fdt, node, "phy-mode", map->phy_mode); + qemu_fdt_setprop_cell(s->cfg.fdt, node, "phy-handle", phy_phandle); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "clocks", + s->phandle.clk_25mhz, s->phandle.clk_25mhz, + s->phandle.clk_125mhz, s->phandle.clk_125mhz); + qemu_fdt_setprop(s->cfg.fdt, node, "clock-names", + clocknames, sizeof(clocknames)); + + irq_prop =3D g_new(uint32_t, map->num_prio_queue * 3); + for (i =3D 0; i < map->num_prio_queue; i++) { + irq_prop[3 * i] =3D cpu_to_be32(GIC_FDT_IRQ_TYPE_SPI); + irq_prop[3 * i + 1] =3D cpu_to_be32(map->map.irq); + irq_prop[3 * i + 2] =3D cpu_to_be32(GIC_FDT_IRQ_FLAGS_LEVEL_HI); + } + qemu_fdt_setprop(s->cfg.fdt, node, "interrupts", irq_prop, + sizeof(uint32_t) * map->num_prio_queue * 3); +} + + static void versal_create_admas(Versal *s, qemu_irq *pic) { int i; =20 for (i =3D 0; i < ARRAY_SIZE(s->lpd.iou.adma); i++) { @@ -900,18 +976,10 @@ static void versal_create_crl(Versal *s, qemu_irq *pi= c) object_property_set_link(OBJECT(&s->lpd.crl), name, OBJECT(&s->lpd.rpu.cpu[i]), &error_abort); } =20 - for (i =3D 0; i < ARRAY_SIZE(s->lpd.iou.gem); i++) { - g_autofree gchar *name =3D g_strdup_printf("gem[%d]", i); - - object_property_set_link(OBJECT(&s->lpd.crl), - name, OBJECT(&s->lpd.iou.gem[i]), - &error_abort); - } - for (i =3D 0; i < ARRAY_SIZE(s->lpd.iou.adma); i++) { g_autofree gchar *name =3D g_strdup_printf("adma[%d]", i); =20 object_property_set_link(OBJECT(&s->lpd.crl), name, OBJECT(&s->lpd.iou.adma[i]), @@ -1095,12 +1163,21 @@ static void versal_realize(DeviceState *dev, Error = **errp) =20 for (i =3D 0; i < map->num_sdhci; i++) { versal_create_sdhci(s, &map->sdhci[i]); } =20 + for (i =3D 0; i < map->num_gem; i++) { + versal_create_gem(s, &map->gem[i]); + /* + * Create fdt node in reverse order to keep backward compatibility= with + * previous versions of the generated FDT. This affects Linux kern= el + * interface naming order when persistent naming scheme is not in = use. + */ + versal_create_gem_fdt(s, &map->gem[map->num_gem - 1 - i]); + } + versal_create_usbs(s, pic); - versal_create_gems(s, pic); versal_create_admas(s, pic); versal_create_pmc_apb_irq_orgate(s, pic); versal_create_rtc(s, pic); versal_create_trng(s, pic); versal_create_xrams(s, pic); --=20 2.50.1 From nobody Sun Sep 21 20:11:36 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671575; cv=pass; d=zohomail.com; s=zohoarc; b=EobuzECpQhn/hu5P9xjWy50wffUFUZhIwiwkJgjsdod6Q/OyrqRDr6JRgu74u18zeXR9DeR/6xkSp5+19r4yq8MJ/JbxBtpYXWPPl+l9TFyrRcBjkrabBImFEyqtz1C47XSo+Hb34ISTgHgM3oDyhlmO+IgRHLaSZv3erzBNo0M= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671575; 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=EPKO2fFZ18WTIPxqxLrHMiTGkcsboveMs6SeUeEeZnw=; b=fI31OeNkGChaf2v12TAuGh85xsWZTjlX15Q8AE4ZQC5cw4tDBPLYSr7ojz9HURZZZeTpqoBKL+tRORW+caF0DsXuz/lISWOY5yAgqQ/pJW6HuIidetNCzp+vE/suHHxkIwyr4769ncHidUN1B2OEbkAf9J8IctkFKv/2ws4xsa4= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671575318541.7733860729059; Fri, 12 Sep 2025 03:06:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0cU-0005zw-5Q; Fri, 12 Sep 2025 06:03:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cP-0005pq-MH; Fri, 12 Sep 2025 06:03:01 -0400 Received: from mail-bn8nam12on2061f.outbound.protection.outlook.com ([2a01:111:f403:2418::61f] helo=NAM12-BN8-obe.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 1ux0cJ-0001GU-Nh; Fri, 12 Sep 2025 06:03:00 -0400 Received: from DM6PR13CA0022.namprd13.prod.outlook.com (2603:10b6:5:bc::35) by DS7PR12MB5933.namprd12.prod.outlook.com (2603:10b6:8:7c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:02:48 +0000 Received: from DS1PEPF00017099.namprd05.prod.outlook.com (2603:10b6:5:bc:cafe::b7) by DM6PR13CA0022.outlook.office365.com (2603:10b6:5:bc::35) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9137.8 via Frontend Transport; Fri, 12 Sep 2025 10:02:47 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS1PEPF00017099.mail.protection.outlook.com (10.167.18.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:02:46 +0000 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:34 -0700 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:01:32 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lJDua7ITxhGD2FAuCrEv5WtOBWWce//q0WVLv9z0HyegGRjC5S9Z0z2uZepKN7XbBx47FxOOFO5ZzyIQwrRVECGkbOIKSPOZvp/UTLCYXbKdYvTk4kzsixKz6ZetoNdP3E2kwsnQ9WCD13OIPMRVn/G42hHlpcK8pQLyGobSdPoOquPJAI+uWLd/UHJFb1ltBUc6I0aPIQDSQn634UVyP9/3VeWDSO582OIVRE+TsRLi5KXPtgasi+1/ZM3yStjpbB2VVMq8Tt8pHnK6gGCxYXnfAnPK5Y8x+VxluzjMBkzg6qWtK+MGx1qBC/gXeDTr8np/HYoCRD+y/nUHUvnsvg== 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=EPKO2fFZ18WTIPxqxLrHMiTGkcsboveMs6SeUeEeZnw=; b=ooPgm3Js9iuE6RVy161zv6A2pohBUPY+Kxs21Sa27g2XAMPwfssEV7fiDC1j7EdpTUdx+p6O5w/cHDDcxzHUKRK3V7OAqPvxHhqXXyWxdGp4OH3IIAKdWFFOTeX0zjI9wcbEpInpJI3z7x8FqGultzEMsgQYLUfCTid53APJEJGyay0vqpQi7Z8SmhZgNOv2xIR6Nld1DFc7RrtThlYzqEO4dlOvKqGGIiTg4OwBsIWkmD4uni1ACn+JsK0LIQWU1V5rJlb+TQ+dyTsr/Hs3lUI5QwEfgg14hE3NE+KewXHrwyzAHbUWPiwSqOcQlCT84qHkQqPblSuLMfVxbEqLSw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EPKO2fFZ18WTIPxqxLrHMiTGkcsboveMs6SeUeEeZnw=; b=yEP4+p3Zt7AhbWhRGbXmhSGoGz4VxMneuYMcXmW9uaYYxTFYMslaj6ThiVWQAHn+ByMWrYyDiCZJuawNSy1JEnys7quYF89Fi0ETDybaB83Z/WK7c+nYUEWD5jLkuIIDdMqGG/RF85CSJIovvQUDEnqEcBoNiTZ7+wZx0/47KZQ= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 07/47] hw/arm/xlnx-versal: adma: refactor creation Date: Fri, 12 Sep 2025 12:00:16 +0200 Message-ID: <20250912100059.103997-8-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF00017099:EE_|DS7PR12MB5933:EE_ X-MS-Office365-Filtering-Correlation-Id: 1b633ce1-121e-46b4-efe2-08ddf1e38658 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|376014|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?RYVZBDSNfCo+OhiahLFK7df0Ov9hLADKw8uqZ8kM8cYP7wKo/iKKHBWKHKNT?= =?us-ascii?Q?LRArvHg/xIMNYQNHRI2oLqgwUu0g/fLcRtPGUvhlFXaZq9ZP3TiWHDathJPi?= =?us-ascii?Q?nSILnOZdexvKKpT3SkHVIrd9Vr2cRQGa3ahjKdxow4UlVt7T+HfkhIXi1yCY?= =?us-ascii?Q?tyOJZbqvW+MVMfn4MSuV9pVl+1WvOvRPXf/kwRm3+A23d1nZFhcFIVYqP2rC?= =?us-ascii?Q?mRpFiNHqdRkR6OlFvUWM6yCLoZPtLQpY31bMVFYdt9cVAwf5YMXM2ccqohZ4?= =?us-ascii?Q?SfU5cYWb/4UEt5HxmidbkmMS5BY/ro7/XaCc1STNb61/0n+Qkvnv0S/STUm2?= =?us-ascii?Q?JKt7nMBl0RIZb/3FZNzmxPRVwvc64pVApM+6vgSF++wsdoiwU5bQz/awilOi?= =?us-ascii?Q?oYZ5xdQbVQA2boSemPIwejQ9GcMGHv28604FW0ksoi/ljmrvByOBkFWDhM8W?= =?us-ascii?Q?WtbCaSsqoX9s5MuiBP9+W3cG3ZmOw6IC1xxyXT56I/9ItPhlE+NcBXFhlkC1?= =?us-ascii?Q?mAWj0MbPQyyB34/kifbX850S8v5ck+V5D4qzl23ocmLIkcjXFpOYGOxxDOS+?= =?us-ascii?Q?lk8thEH7fPqBOaQnc+/0Q8sK1f6uvW2atXTpdFw8TQjfRjTWBAHDg/lJ9tT2?= =?us-ascii?Q?NaNca/5tPC/RoJ9+e7gpAYV4D+mDnsvvzpsRpydlOgqEuXEna3sriEznVWaT?= =?us-ascii?Q?Qmt1ftUgAIf0HFVxSMVUs0Ved8EZkRuEovmlZTL3dgu+RvzW+z4koY85GX2I?= =?us-ascii?Q?Ro8QYL78R6aNFxE8Ji+5W2GGSBHmmGkVBi6C7GPpO6a010DyHQEcrPwO1qoP?= =?us-ascii?Q?QJec5DV6Ft0LqRCe7FCgKVx8jgYnpGK37ICpJLy23ZeUxjx4PluNdwaTFVrD?= =?us-ascii?Q?qyhFKea8n8Ct9KjmG+K1jaovmyNb6WQuiKga5XMfiqucU/cCaLn0gYLJBt+L?= =?us-ascii?Q?R4nqle2WQfja8oVKftATq8HDfwnTbeOmutry5vXGsdkcs1qU2NyZjIoCW/nf?= =?us-ascii?Q?vQG5O34pfB0KbzcF7WfQMq6nY5wUpGjk3mN+fitl+0ea9Lysf5/THG3iQ9vD?= =?us-ascii?Q?t5X5oy2NSfJUA/P86L8hx4czvTfHmKH6j0o8aGfbzRm2AqKJA+X3z5uzBJyH?= =?us-ascii?Q?f+PhCVXv46dWaEZME6FZQ88GH0Y26R7nHgXavh7kvgq0bGWVpy71lTx6Bvap?= =?us-ascii?Q?L26TKGa9ygQwg8ugNnti41NEhyfgD21EL+lflCjXBvfUr3km5LPRQmZ2YxQs?= =?us-ascii?Q?riaJDAbOeaupWWL2Irvd5QEboqcs7wo5/gH95FxbWJxM7o8XBIizZSnfkpR4?= =?us-ascii?Q?IcqWiT+yUnXSuZ0RWPGfrUknew2gLdXgFRRIxHW1mQAMCg4EjPrjv+WDb+d/?= =?us-ascii?Q?IWYeRne8hpDEwLS6nBRoveRNTvP0aKW4DC7hgr45uoNfhZhsuGrna0pCeVEz?= =?us-ascii?Q?3CIiBNsVvpe7lObr+W9pUnjmTOLEHKRL0WDWdKJPPHR3bwpqKMziBabi//sP?= =?us-ascii?Q?NDd4Mq8khFMZDG9s5BjtsQ+8JQvxCq24FQue?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(1800799024)(376014)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:02:46.9530 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1b633ce1-121e-46b4-efe2-08ddf1e38658 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF00017099.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB5933 Received-SPF: permerror client-ip=2a01:111:f403:2418::61f; envelope-from=Luc.Michel@amd.com; helo=NAM12-BN8-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671577225116600 Content-Type: text/plain; charset="utf-8" Refactor the ADMA creation using the VersalMap structure. Note that the connection to the CRL is removed for now and will be re-added by next commits. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/arm/xlnx-versal.h | 2 - hw/arm/xlnx-versal-virt.c | 28 -------------- hw/arm/xlnx-versal.c | 72 ++++++++++++++++++++++++------------ 3 files changed, 48 insertions(+), 54 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 1fcc2b623da..4eeea98ff34 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -15,11 +15,10 @@ =20 #include "hw/sysbus.h" #include "hw/cpu/cluster.h" #include "hw/or-irq.h" #include "hw/intc/arm_gicv3.h" -#include "hw/dma/xlnx-zdma.h" #include "hw/rtc/xlnx-zynqmp-rtc.h" #include "qom/object.h" #include "hw/usb/xlnx-usb-subsystem.h" #include "hw/misc/xlnx-versal-xramc.h" #include "hw/nvram/xlnx-bbram.h" @@ -75,11 +74,10 @@ struct Versal { =20 struct { MemoryRegion mr_ocm; =20 struct { - XlnxZDMA adma[XLNX_VERSAL_NR_ADMAS]; VersalUsb2 usb; } iou; =20 /* Real-time Processing Unit. */ struct { diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 0634cc90eac..418e4c6e983 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -202,37 +202,10 @@ static void fdt_add_usb_xhci_nodes(VersalVirt *s) qemu_fdt_setprop_cell(s->fdt, name, "phandle", s->phandle.dwc); qemu_fdt_setprop_string(s->fdt, name, "maximum-speed", "high-speed"); g_free(name); } =20 -static void fdt_add_zdma_nodes(VersalVirt *s) -{ - const char clocknames[] =3D "clk_main\0clk_apb"; - const char compat[] =3D "xlnx,zynqmp-dma-1.0"; - int i; - - for (i =3D XLNX_VERSAL_NR_ADMAS - 1; i >=3D 0; i--) { - uint64_t addr =3D MM_ADMA_CH0 + MM_ADMA_CH0_SIZE * i; - char *name =3D g_strdup_printf("/dma@%" PRIx64, addr); - - qemu_fdt_add_subnode(s->fdt, name); - - qemu_fdt_setprop_cell(s->fdt, name, "xlnx,bus-width", 64); - qemu_fdt_setprop_cells(s->fdt, name, "clocks", - s->phandle.clk_25Mhz, s->phandle.clk_25Mhz); - qemu_fdt_setprop(s->fdt, name, "clock-names", - clocknames, sizeof(clocknames)); - qemu_fdt_setprop_cells(s->fdt, name, "interrupts", - GIC_FDT_IRQ_TYPE_SPI, VERSAL_ADMA_IRQ_0 + i, - GIC_FDT_IRQ_FLAGS_LEVEL_HI); - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", - 2, addr, 2, 0x1000); - qemu_fdt_setprop(s->fdt, name, "compatible", compat, sizeof(compat= )); - g_free(name); - } -} - static void fdt_add_rtc_node(VersalVirt *s) { const char compat[] =3D "xlnx,zynqmp-rtc"; const char interrupt_names[] =3D "alarm\0sec"; char *name =3D g_strdup_printf("/rtc@%x", MM_PMC_RTC); @@ -559,11 +532,10 @@ static void versal_virt_init(MachineState *machine) sysbus_realize(SYS_BUS_DEVICE(&s->soc), &error_fatal); create_virtio_regions(s); =20 fdt_add_gic_nodes(s); fdt_add_timer_nodes(s); - fdt_add_zdma_nodes(s); fdt_add_usb_xhci_nodes(s); fdt_add_rtc_node(s); fdt_add_bbram_node(s); fdt_add_efuse_ctrl_node(s); fdt_add_efuse_cache_node(s); diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 8ad67a110d7..3ffaa6fc56b 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -28,10 +28,11 @@ #include "hw/arm/fdt.h" #include "hw/char/pl011.h" #include "hw/net/xlnx-versal-canfd.h" #include "hw/sd/sdhci.h" #include "hw/net/cadence_gem.h" +#include "hw/dma/xlnx-zdma.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") #define GEM_REVISION 0x40070106 =20 @@ -58,10 +59,20 @@ typedef struct VersalMap { size_t num_prio_queue; const char *phy_mode; const uint32_t speed; } gem[3]; size_t num_gem; + + struct VersalZDMAMap { + const char *name; + VersalSimplePeriphMap map; + size_t num_chan; + uint64_t chan_stride; + int irq_stride; + } zdma[2]; + size_t num_zdma; + } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { .uart[0] =3D { 0xff000000, 18 }, .uart[1] =3D { 0xff010000, 19 }, @@ -76,10 +87,13 @@ static const VersalMap VERSAL_MAP =3D { .num_sdhci =3D 2, =20 .gem[0] =3D { { 0xff0c0000, 56 }, 2, "rgmii-id", 1000 }, .gem[1] =3D { { 0xff0d0000, 58 }, 2, "rgmii-id", 1000 }, .num_gem =3D 2, + + .zdma[0] =3D { "adma", { 0xffa80000, 60 }, 8, 0x10000, 1 }, + .num_zdma =3D 1, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { [VERSAL_VER_VERSAL] =3D &VERSAL_MAP, }; @@ -490,34 +504,49 @@ static void versal_create_gem_fdt(Versal *s, } qemu_fdt_setprop(s->cfg.fdt, node, "interrupts", irq_prop, sizeof(uint32_t) * map->num_prio_queue * 3); } =20 - -static void versal_create_admas(Versal *s, qemu_irq *pic) +static void versal_create_zdma(Versal *s, + const struct VersalZDMAMap *map) { - int i; + DeviceState *dev; + MemoryRegion *mr; + g_autofree char *name; + const char compatible[] =3D "xlnx,zynqmp-dma-1.0"; + const char clocknames[] =3D "clk_main\0clk_apb"; + size_t i; =20 - for (i =3D 0; i < ARRAY_SIZE(s->lpd.iou.adma); i++) { - char *name =3D g_strdup_printf("adma%d", i); - DeviceState *dev; - MemoryRegion *mr; + name =3D g_strdup_printf("%s[*]", map->name); =20 - object_initialize_child(OBJECT(s), name, &s->lpd.iou.adma[i], - TYPE_XLNX_ZDMA); - dev =3D DEVICE(&s->lpd.iou.adma[i]); + for (i =3D 0; i < map->num_chan; i++) { + uint64_t addr =3D map->map.addr + map->chan_stride * i; + int irq =3D map->map.irq + map->irq_stride * i; + g_autofree char *node; + + dev =3D qdev_new(TYPE_XLNX_ZDMA); + object_property_add_child(OBJECT(s), name, OBJECT(dev)); object_property_set_int(OBJECT(dev), "bus-width", 128, &error_abor= t); object_property_set_link(OBJECT(dev), "dma", OBJECT(get_system_memory()), &error_fatal= ); - sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); - memory_region_add_subregion(&s->mr_ps, - MM_ADMA_CH0 + i * MM_ADMA_CH0_SIZE, mr= ); + memory_region_add_subregion(&s->mr_ps, addr, mr); =20 - sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[VERSAL_ADMA_IRQ_0 += i]); - g_free(name); + versal_sysbus_connect_irq(s, SYS_BUS_DEVICE(dev), 0, irq); + + node =3D versal_fdt_add_simple_subnode(s, "/dma", addr, 0x1000, + compatible, sizeof(compatible= )); + qemu_fdt_setprop_cell(s->cfg.fdt, node, "xlnx,bus-width", 64); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "clocks", + s->phandle.clk_25mhz, s->phandle.clk_25mhz); + qemu_fdt_setprop(s->cfg.fdt, node, "clock-names", + clocknames, sizeof(clocknames)); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "interrupts", + GIC_FDT_IRQ_TYPE_SPI, irq, + GIC_FDT_IRQ_FLAGS_LEVEL_HI); } } =20 #define SDHCI_CAPABILITIES 0x280737ec6481 /* Same as on ZynqMP. */ static void versal_create_sdhci(Versal *s, @@ -976,18 +1005,10 @@ static void versal_create_crl(Versal *s, qemu_irq *p= ic) object_property_set_link(OBJECT(&s->lpd.crl), name, OBJECT(&s->lpd.rpu.cpu[i]), &error_abort); } =20 - for (i =3D 0; i < ARRAY_SIZE(s->lpd.iou.adma); i++) { - g_autofree gchar *name =3D g_strdup_printf("adma[%d]", i); - - object_property_set_link(OBJECT(&s->lpd.crl), - name, OBJECT(&s->lpd.iou.adma[i]), - &error_abort); - } - object_property_set_link(OBJECT(&s->lpd.crl), "usb", OBJECT(&s->lpd.iou.usb), &error_abort); =20 sysbus_realize(sbd, &error_fatal); @@ -1173,12 +1194,15 @@ static void versal_realize(DeviceState *dev, Error = **errp) * interface naming order when persistent naming scheme is not in = use. */ versal_create_gem_fdt(s, &map->gem[map->num_gem - 1 - i]); } =20 + for (i =3D 0; i < map->num_zdma; i++) { + versal_create_zdma(s, &map->zdma[i]); + } + versal_create_usbs(s, pic); - versal_create_admas(s, pic); versal_create_pmc_apb_irq_orgate(s, pic); versal_create_rtc(s, pic); versal_create_trng(s, pic); versal_create_xrams(s, pic); versal_create_bbram(s, pic); --=20 2.50.1 From nobody Sun Sep 21 20:11:36 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671406; cv=pass; d=zohomail.com; s=zohoarc; b=IkIcUkZaV9EywXlotfd2N3kWHGdxAde/58jqW4dfa8z53O6JOnMEj76BOAeXOYhkspToAflYvSu3QPWzlZN2RJ628RiUYbHBtfCL9cyPQVpGryHYrLqoB2XChr3mpuGO5SvnrTVR6bwxUpVHVGF8LsBjgnUic4pM2stSiTqwYuA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671406; 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=IW84d2vSmUk7g7MPt5YZtjb2cj+9z3imf0lDaIKVHxM=; b=Of0GoF/QttE2mqR+4a6RTzIcbq5b1UNmxxE8Uk6FZyz4yAPs7M1A+/MptmQ64W1rQI0MWmhyLSAVsvBXJYgSFZZUPXnMveg+GfLsGkV7xmEsOtGGeqafqJpHERg0d4z4Ha3alJTtz+KgLeoT6yt6eAqqiJU2do9uKQYWM270BzM= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17576714069312.872228287681878; Fri, 12 Sep 2025 03:03:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0cW-00069j-A1; Fri, 12 Sep 2025 06:03:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cP-0005pp-Lf; Fri, 12 Sep 2025 06:03:01 -0400 Received: from mail-bn7nam10on2061a.outbound.protection.outlook.com ([2a01:111:f403:2009::61a] helo=NAM10-BN7-obe.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 1ux0cJ-0001GY-Tu; Fri, 12 Sep 2025 06:03:00 -0400 Received: from DM6PR14CA0063.namprd14.prod.outlook.com (2603:10b6:5:18f::40) by CY5PR12MB6323.namprd12.prod.outlook.com (2603:10b6:930:20::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:02:50 +0000 Received: from DS3PEPF000099DC.namprd04.prod.outlook.com (2603:10b6:5:18f:cafe::4c) by DM6PR14CA0063.outlook.office365.com (2603:10b6:5:18f::40) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.17 via Frontend Transport; Fri, 12 Sep 2025 10:02:50 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099DC.mail.protection.outlook.com (10.167.17.198) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:02:49 +0000 Received: from SATLEXMB05.amd.com (10.181.40.146) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:37 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB05.amd.com (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:01:36 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:01:34 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=I8W+8U7iw8+qQ2TU5kF1ivhatK2iUUpIuWtLYX8fJmjdKew4ae63Ndifher59VpMhfrR+KCRz8zj5vEzaBkvC1GsvMkPny9ChJxg6tKStbPYefXFRaUc3eqpf5DQeLMxRXIaRREH0DfX3cqieWxgYY9SLnrlf+0vdfT1B4iHCAT5XFvXM4x/gNwgDWV/bDIm6vF9HU5g1ndpbTHqBnBXC01Us8Fw8Eiwc6+19ZqSvb82lWTCNwKf/nkv5g1JWsLg/8v0SX388rG3odNLKHqzit/9fPjt2N+G7eFTTxs9uKmBo0dFw0jtWuhJN/pEPGl0dYntKpb1+T6wM5EsrhmO6Q== 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=IW84d2vSmUk7g7MPt5YZtjb2cj+9z3imf0lDaIKVHxM=; b=xjLKPzTfjO7IF6ZEM7p06LmvujxniitI70aE6XS0BO0nLCasaz83UbzaIGS1Ra5nMFxFG1LM4aUEi6lGSgsx3GnuMRO8SDZXnSg021xPkSHxX9bN6Nuk8jgAz66M8gEDDQbKQ1H//d7wTlVCN1Xn5nHpuC8kqRo5gw4IbX3NvVnZoASEB73UB1F6I4c9fJIyacFzwQ5iAN2mIUhia3chGksxcaojh/8jzYpmB2RikiDncxz5vEiRFH0jr/aJ+NeFhNoHUrmlIJSohBnwcLnnm/ATr3+3KhXJ/KDK8Gm2LG8b2/W6EoXq20k/FeDEeHPzF5c52I8K5ZoDGGItyurvLQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IW84d2vSmUk7g7MPt5YZtjb2cj+9z3imf0lDaIKVHxM=; b=xizgyCIcGcArnX8DybHaqDWFgC7WTFGhci045xVt6Irh08757elMTavmzL5zhERep/9PQxQj9t6JaBKhO6vb8HuDMuqtnMvss6hBH/LFy6EZLmHbnXmBG93VRlBbgYz3W7psE/Fht+hM/Gqj96aDsmKht/NdF1C13ULRQqatL84= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 08/47] hw/arm/xlnx-versal: xram: refactor creation Date: Fri, 12 Sep 2025 12:00:17 +0200 Message-ID: <20250912100059.103997-9-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: None (SATLEXMB05.amd.com: luc.michel@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099DC:EE_|CY5PR12MB6323:EE_ X-MS-Office365-Filtering-Correlation-Id: 2e5156a3-d786-4a46-3650-08ddf1e38822 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|36860700013|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?oxPRZgthY94H3dG2i5c7Jv8Mh5LudLnb+7OZ3v7XN/Skdad/FtYGmMim+puf?= =?us-ascii?Q?UdcZB+vNSakxXEH1zUQorgpg/bU1yEJg0sh9dh+0pW4WqHrBQD/R1yuS05uS?= =?us-ascii?Q?v8/uFBxZNUawCdAuPymuTCsJResGKd7xDv/6LeHfxbwd8lgJS1SR8s2EOmXq?= =?us-ascii?Q?iGsroGI5dpXyeTgUmOJTjPIbAyDhHc+qMiR5pNOE39ud0y7DsMEnSeuKxa9z?= =?us-ascii?Q?+5diEsADbdHE90JvLZfQDG4M5TVm3AQJB4+tE/s9gUHEPG4PTysQVoF0iFuy?= =?us-ascii?Q?gX8YBkM1yhcH4CSSJoydkbpqG/YX7eNgQ+mS2iP+JqdyJzjtcVPf7NjnrhoU?= =?us-ascii?Q?de2csKiUHWkLs1c5CIEjsxDdRgCiGFL1pX6IbJDUTrngXRKXsu1xCX32FCtM?= =?us-ascii?Q?wjjfvxRKmL4/lu7EP83XuWuHe91W7kRCsdG6v4VoPNxLooHgCcG/GJYnThvb?= =?us-ascii?Q?y+pWOgiKWEZwAYIYdsRcQfL52GZxplj/QSaogeSIgk7WMlOGPgM2DTk5kRwC?= =?us-ascii?Q?sghWYz5C75z5q8fdfVgSWOlt8GkDqxCcOnTKoqNUyL2OQss1SpOZoYKun6Xx?= =?us-ascii?Q?Ukx4bMg0kOcVfR40y5pkPu+hOTBtHTjWkmiD2TARxriKJ1E0uuOc/Gn1CO22?= =?us-ascii?Q?oOFcLy8dVhfHrweUNqx6fCZolH2E92AuQ+qBNObABxo4WiierHKFbM+/a3y3?= =?us-ascii?Q?TL6azrapAaKy0NbCFVEtMsKm1memQEyzv6yVr54aVvNlzQeeT5etTkRPi+Rj?= =?us-ascii?Q?NZ6bnO4mZmBh9d7fpQHLFAGL3N3bGI7YZIku46yX8vQNc3tWKW91taJYf+Md?= =?us-ascii?Q?GIqIp6y3LbWmaAEc0wqGMNq+IcqXo4bwVDBQDQTMDkOlNfLUdUSDim/KFby9?= =?us-ascii?Q?zIy5M+AexwEXh8gUqmdcb4+YQm2TW4MDduimeQuGW96YkOSa171t0G+UUTzj?= =?us-ascii?Q?qtnGxQh5NIGp0Hb/acawR0vRvEP3aoDtb6nspAA2Ul6y1LPYJ/v/LryUMAv2?= =?us-ascii?Q?FbpNM5ojOnEQW34ZLN0376UwQY63gvGEfClhgiLTkMdwQi8I08qlvPtONwnp?= =?us-ascii?Q?NXbUC6+dSdSt6G3a/K7FmGyv/9idS0bvn5Qgfj+p82p6CsQdOGzc6SkF3Oqt?= =?us-ascii?Q?Qr3CxiHGHCAxeOLS/NUsC7vvYPFlTcbzUrfs/x/VNOOT2Oe2pb3zgLh6mIyz?= =?us-ascii?Q?3doKqcxuasvjmF9+fhkPP0wm07hnuMNdYmz4N4Yn/wt+sG0k1dIgSx3n95EW?= =?us-ascii?Q?pVTEMBDxsx7Bb+l32Ee/ohYnVxaTUt5/5G/0tn8vwl6qXAsUSytouAtYb6/I?= =?us-ascii?Q?V2P1HQrPZw72NmOr9syWWM/6foqFh6CLpemy1n5m7pXv/DdmNiP5VbV70BCE?= =?us-ascii?Q?jPNCWziP4nJ0/yWE0KvUN36Jh3timudgv/Obxxfkqr3JTNwjVKAAMpPoP6Am?= =?us-ascii?Q?FqvM/TsrJ7s3AhHKAv5ab8e2YYpT1t19Ymm1/PC38AQj4J+B8ikkMXwgz6Eg?= =?us-ascii?Q?byBtgut9BNuKEo72eiEnQQ1PViKXRVxetWaK?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(1800799024)(376014)(36860700013)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:02:49.9495 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2e5156a3-d786-4a46-3650-08ddf1e38822 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099DC.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6323 Received-SPF: permerror client-ip=2a01:111:f403:2009::61a; envelope-from=Luc.Michel@amd.com; helo=NAM10-BN7-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671409163116600 Content-Type: text/plain; charset="utf-8" Refactor the XRAM devices creation using the VersalMap structure. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/arm/xlnx-versal.h | 6 ---- hw/arm/xlnx-versal.c | 59 +++++++++++++++++++++--------------- 2 files changed, 35 insertions(+), 30 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 4eeea98ff34..71c3314b8b4 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -18,11 +18,10 @@ #include "hw/or-irq.h" #include "hw/intc/arm_gicv3.h" #include "hw/rtc/xlnx-zynqmp-rtc.h" #include "qom/object.h" #include "hw/usb/xlnx-usb-subsystem.h" -#include "hw/misc/xlnx-versal-xramc.h" #include "hw/nvram/xlnx-bbram.h" #include "hw/nvram/xlnx-versal-efuse.h" #include "hw/ssi/xlnx-versal-ospi.h" #include "hw/dma/xlnx_csu_dma.h" #include "hw/misc/xlnx-versal-crl.h" @@ -86,15 +85,10 @@ struct Versal { =20 CPUClusterState cluster; ARMCPU cpu[XLNX_VERSAL_NR_RCPUS]; } rpu; =20 - struct { - OrIRQState irq_orgate; - XlnxXramCtrl ctrl[XLNX_VERSAL_NR_XRAM]; - } xram; - XlnxVersalCRL crl; } lpd; =20 /* The Platform Management Controller subsystem. */ struct { diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 3ffaa6fc56b..5d647a3ac0b 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -29,10 +29,11 @@ #include "hw/char/pl011.h" #include "hw/net/xlnx-versal-canfd.h" #include "hw/sd/sdhci.h" #include "hw/net/cadence_gem.h" #include "hw/dma/xlnx-zdma.h" +#include "hw/misc/xlnx-versal-xramc.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") #define GEM_REVISION 0x40070106 =20 @@ -69,10 +70,18 @@ typedef struct VersalMap { uint64_t chan_stride; int irq_stride; } zdma[2]; size_t num_zdma; =20 + struct VersalXramMap { + uint64_t mem; + uint64_t mem_stride; + uint64_t ctrl; + uint64_t ctrl_stride; + int irq; + size_t num; + } xram; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { .uart[0] =3D { 0xff000000, 18 }, .uart[1] =3D { 0xff010000, 19 }, @@ -90,10 +99,17 @@ static const VersalMap VERSAL_MAP =3D { .gem[1] =3D { { 0xff0d0000, 58 }, 2, "rgmii-id", 1000 }, .num_gem =3D 2, =20 .zdma[0] =3D { "adma", { 0xffa80000, 60 }, 8, 0x10000, 1 }, .num_zdma =3D 1, + + .xram =3D { + .num =3D 4, + .mem =3D 0xfe800000, .mem_stride =3D 1 * MiB, + .ctrl =3D 0xff8e0000, .ctrl_stride =3D 0x10000, + .irq =3D 79, + }, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { [VERSAL_VER_VERSAL] =3D &VERSAL_MAP, }; @@ -639,41 +655,35 @@ static void versal_create_trng(Versal *s, qemu_irq *p= ic) mr =3D sysbus_mmio_get_region(sbd, 0); memory_region_add_subregion(&s->mr_ps, MM_PMC_TRNG, mr); sysbus_connect_irq(sbd, 0, pic[VERSAL_TRNG_IRQ]); } =20 -static void versal_create_xrams(Versal *s, qemu_irq *pic) +static void versal_create_xrams(Versal *s, const struct VersalXramMap *map) { - int nr_xrams =3D ARRAY_SIZE(s->lpd.xram.ctrl); - DeviceState *orgate; - int i; + SysBusDevice *sbd; + MemoryRegion *mr; + DeviceState *or; + size_t i; =20 - /* XRAM IRQs get ORed into a single line. */ - object_initialize_child(OBJECT(s), "xram-irq-orgate", - &s->lpd.xram.irq_orgate, TYPE_OR_IRQ); - orgate =3D DEVICE(&s->lpd.xram.irq_orgate); - object_property_set_int(OBJECT(orgate), - "num-lines", nr_xrams, &error_fatal); - qdev_realize(orgate, NULL, &error_fatal); - qdev_connect_gpio_out(orgate, 0, pic[VERSAL_XRAM_IRQ_0]); + or =3D create_or_gate(s, OBJECT(s), "xram-orgate", map->num, map->irq); =20 - for (i =3D 0; i < ARRAY_SIZE(s->lpd.xram.ctrl); i++) { - SysBusDevice *sbd; - MemoryRegion *mr; + for (i =3D 0; i < map->num; i++) { + hwaddr ctrl, mem; =20 - object_initialize_child(OBJECT(s), "xram[*]", &s->lpd.xram.ctrl[i], - TYPE_XLNX_XRAM_CTRL); - sbd =3D SYS_BUS_DEVICE(&s->lpd.xram.ctrl[i]); - sysbus_realize(sbd, &error_fatal); + sbd =3D SYS_BUS_DEVICE(qdev_new(TYPE_XLNX_XRAM_CTRL)); + object_property_add_child(OBJECT(s), "xram[*]", OBJECT(sbd)); + sysbus_realize_and_unref(sbd, &error_fatal); + + ctrl =3D map->ctrl + map->ctrl_stride * i; + mem =3D map->mem + map->mem_stride * i; =20 mr =3D sysbus_mmio_get_region(sbd, 0); - memory_region_add_subregion(&s->mr_ps, - MM_XRAMC + i * MM_XRAMC_SIZE, mr); + memory_region_add_subregion(&s->mr_ps, ctrl, mr); mr =3D sysbus_mmio_get_region(sbd, 1); - memory_region_add_subregion(&s->mr_ps, MM_XRAM + i * MiB, mr); + memory_region_add_subregion(&s->mr_ps, mem, mr); =20 - sysbus_connect_irq(sbd, 0, qdev_get_gpio_in(orgate, i)); + sysbus_connect_irq(sbd, 0, qdev_get_gpio_in(or, i)); } } =20 static void versal_create_bbram(Versal *s, qemu_irq *pic) { @@ -1198,15 +1208,16 @@ static void versal_realize(DeviceState *dev, Error = **errp) =20 for (i =3D 0; i < map->num_zdma; i++) { versal_create_zdma(s, &map->zdma[i]); } =20 + versal_create_xrams(s, &map->xram); + versal_create_usbs(s, pic); versal_create_pmc_apb_irq_orgate(s, pic); versal_create_rtc(s, pic); versal_create_trng(s, pic); - versal_create_xrams(s, pic); versal_create_bbram(s, pic); versal_create_efuse(s, pic); versal_create_pmc_iou_slcr(s, pic); versal_create_ospi(s, pic); versal_create_crl(s, pic); --=20 2.50.1 From nobody Sun Sep 21 20:11:36 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671830; cv=pass; d=zohomail.com; s=zohoarc; b=IWL15hI39XPaXzaf93ngz/zPHo8lqFL0MZlkF+S5mbCGQ2HpQRYC91ADj4qTdezxUJ2zKacXJkyYxmSK5TxJFak2gL1h8yqRR3195qePJTmpn3nw3YlQur47ppefR4v5NWQRfaYzYHjpk7/87OG7O+785HVLZVx43HvlgdAh/C0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671830; 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=6GaVysA9Mf7BilsM1bywaQzevXzKOpOBpZYIYeMQb8M=; b=cQdivAeVfw8mbswO1bQg1FL0ns6wKpyTAOwKLM2dlwuTmGrcVVNcJ0LuInE081sNsfgKngGAW1NayiMC0nHOaiYj5WAEWy5l35J/ORyL244PGyFsFHW0y+sCfygdxZ3OB+UsKfAbwWON2FrNVjyHn55Ly+emH841UHBVMTNtfD0= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671830519465.69842214067637; Fri, 12 Sep 2025 03:10:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0cj-0006uz-De; Fri, 12 Sep 2025 06:03:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cV-00064Q-0l; Fri, 12 Sep 2025 06:03:07 -0400 Received: from mail-mw2nam04on2062e.outbound.protection.outlook.com ([2a01:111:f403:240a::62e] helo=NAM04-MW2-obe.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 1ux0cM-0001IJ-17; Fri, 12 Sep 2025 06:03:06 -0400 Received: from DM6PR02CA0066.namprd02.prod.outlook.com (2603:10b6:5:177::43) by PH7PR12MB7889.namprd12.prod.outlook.com (2603:10b6:510:27f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:02:51 +0000 Received: from DS1PEPF0001709D.namprd05.prod.outlook.com (2603:10b6:5:177:cafe::67) by DM6PR02CA0066.outlook.office365.com (2603:10b6:5:177::43) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.17 via Frontend Transport; Fri, 12 Sep 2025 10:02:50 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS1PEPF0001709D.mail.protection.outlook.com (10.167.18.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:02:50 +0000 Received: from SATLEXMB05.amd.com (10.181.40.146) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:38 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB05.amd.com (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:01:37 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:01:36 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=j2/yCU6zceMMAcqkXnH25Q7D2dZ1w3qz1lNWgR0BG2dUkO3uvr665KLI7f/oF/ZpYjNhjxq8CY3KXSS2Vxyhoxwi9dqq8EpopY7FVEp1rPCIt16GcjDk3zn1GCu/80m61GZuSh67NcHPjmZoFFQKpQiGXJYIXpAtjMNe/A6IUb/8PS66bLDeYeK51lLeVOe3FTPZWLAs1pTK03Xxpl51IuGiqWrg2U/2hZlyRNp6vnUCOG9PtAPJcUqgajRey9etTruq3Jaij8W52vI12TVmpjtrMiIl0SHhFtkmztHbLqUYK5JbdH/dsDZAajC1ZwJZq9mOZI6ddRk1qFwXJhaMkQ== 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=6GaVysA9Mf7BilsM1bywaQzevXzKOpOBpZYIYeMQb8M=; b=VCWOuj3d6P8gQQPQA5b2VHxB27tjCzon9Y17vPVoxAoQLSKjtcmN8BVdkAikAurVu4ly11C2YP9Vu8VXxAlIhEl4VWaNf11wjsZxH3OF4wxppO9AVZCsP48a75b+8VSLj40/qiDyieVIpBIzg9NDSBB4VU/Dl1WqIzhJMd0cJ6fV/x8OLg+DZVeFI7FrRNDoYryo0scivOrr9qNdwvqKQe9jUcp0wQXP4AcIzntzrWBuqjlLsg0GCRQBG3P4TzypZyqrlbOnl9lHMDXcNXgOL7MK0gpjFQd9y5X/nTfiQGGbpJd917eMvzs+wMo/CyyCJHbsgJEnro2ZTMuS/J1fgQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6GaVysA9Mf7BilsM1bywaQzevXzKOpOBpZYIYeMQb8M=; b=i+4w2UNxN+jXrinskLLi1zQzmZ1l+22OLs+eLnSjeNVOkNy1Gs0vafDw495tyFmZUg0qj3cYES7qvtVPtqTDL+CDqoCVhrpf2dVpUvmrpok0Y9VybPkWO3LIoHaXg69fPXlTrg85A+6xIyCe4lSDSuM76TgCH99LD2+Tc/7vK4k= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 09/47] hw/arm/xlnx-versal: usb: refactor creation Date: Fri, 12 Sep 2025 12:00:18 +0200 Message-ID: <20250912100059.103997-10-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: None (SATLEXMB05.amd.com: luc.michel@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0001709D:EE_|PH7PR12MB7889:EE_ X-MS-Office365-Filtering-Correlation-Id: 923781b4-43d0-4335-fb2c-08ddf1e38882 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|36860700013|376014|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?IgdJh0ZvfIBp8Fh/GjY9dwvEBKSDCy+hijs67CFuZmiU3fKJzQEKDwWToHhF?= =?us-ascii?Q?23ZEi0bF1+DzTF57A5xyzQUDZemwQ7D+V0L51dR8nMRxvcwLsBrrdPmbVof2?= =?us-ascii?Q?nqrlF7hWmzgffmuTd0yACYEX/KIHHfESJTeAnpPAejagMjfA93lnjecoWnn6?= =?us-ascii?Q?CAFsSvCjWFPCVbP4FoYcE9pKz9WHf4N3dww4UfyT9+isvLz4EiBui0OitjJk?= =?us-ascii?Q?8i+kiHtXSrfxeg/KWNibTzmm5WKlt4vwbd9xBtyogiSeuHFyhuffeox+KlMe?= =?us-ascii?Q?Ahob0h6ROgj/cpEFCIliT3rjg1XrZhsZFdpZJNcHQiLX/ZhH8N8ltLg6tMJF?= =?us-ascii?Q?tMCU6Qj7HayjbScCe4gujpkod6ZSJL9PemXE8Zz1alHa/yN3m/zjpy630uaA?= =?us-ascii?Q?Fhcqpn74pKlkwrc0dETiYLSmW0u92YimEdxxjZ+g/enWJea3J1vHcPzFX2Uq?= =?us-ascii?Q?Mt0pATZOPw01nV0IpHeeI+FDH5YPfGP2/YzJ/p3IJwzqWjRU00el+pOk5U4s?= =?us-ascii?Q?3TOSEYkrYtyEQqpvU/KD8If/OJc4nvR7Zsr0QGkh7lAlaGolJqPbf+e1QcsD?= =?us-ascii?Q?uAH3D546PFk77MXvSayAmbvp8PWaAPvJY5GaQk1GUKuyTJs3uM/5D3X9LWS5?= =?us-ascii?Q?vWI31nC+CAs4u+s+mxOGTCezLPH0eSj99j17A85ddX8OYdTXjQGTgsNiBZVj?= =?us-ascii?Q?6HuMB9ElCyThCPfmMfSOwRiBOmHaN+7aAWfVmkfZ/AGobjFTF1g3YJ6bby4w?= =?us-ascii?Q?r5p67oIbRov2CiAWQXYETVyzPLWWzQgHyF7PSTjEs05ZpHVS5A18JScU5+DA?= =?us-ascii?Q?p1NeF34jrk3XnYlMRZu31Hgi3NCseS0F2zT9fcgHo+peaYQvHDNCumIl9az9?= =?us-ascii?Q?uS3QDgY/4dVFMgN7AI8QF6v2UXHSMahXIOBeIahZeshpbvDTHchYR7TMBNBh?= =?us-ascii?Q?iUrysaWKvxW+vmJ6pg6gntZBpvk5cadKqx9RAarZk84+cPg9MccqU8aF4ehp?= =?us-ascii?Q?Hsua2mBO67QFYLHtGhZzDODbiDfqfOLsaO/vS5936K5AgosKN0mfL+kHS8gm?= =?us-ascii?Q?FIzHoc3Cc6ul3kfQsiDJ8vgu95DXjZiaq2Tngvm05PIrhDFMqdeSL40QicKB?= =?us-ascii?Q?vT4UONIwhBuY+RPIjegilEJiCy2C9XKOTBkOH7iXbxyCxvHvfTsctpgVnJ0w?= =?us-ascii?Q?wDgwKxv6YmIMkZ0G5JkGFswWlzjPFVxALwYIfSeSPhIz2xyLjnDY1EZ4lQWx?= =?us-ascii?Q?jtPOh3is6cxLlPNu73WVymzJ7+TW8xXcPrDpEYFHTFlidla/vudK7TUxL8Fm?= =?us-ascii?Q?58M1XXppR6wSgVhyrTlLXJjp6rh+TG7udVtmw8BYin1nQwh25cXatoj6n12Z?= =?us-ascii?Q?6OfrsCtZpFQyRvOAs8cgEzi15CHp7HZJeyvJIgOF8lP4NBMsCElYdtvnA2ic?= =?us-ascii?Q?sZHkbVZJnO6ExB2uJhH8ORr3WXs97TgfDNlKyvLThiZEwZj/gioTr0mOan7X?= =?us-ascii?Q?WBcPIAYIchIYqq7E8/QcbQK/e+e3lCkOL2mY?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(1800799024)(36860700013)(376014)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:02:50.5818 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 923781b4-43d0-4335-fb2c-08ddf1e38882 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0001709D.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7889 Received-SPF: permerror client-ip=2a01:111:f403:240a::62e; envelope-from=Luc.Michel@amd.com; helo=NAM04-MW2-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671831069116600 Content-Type: text/plain; charset="utf-8" Refactor the USB controller creation using the VersalMap structure. Note that the connection to the CRL is removed for now and will be re-added by next commits. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/arm/xlnx-versal.h | 5 --- hw/arm/xlnx-versal-virt.c | 56 +-------------------------- hw/arm/xlnx-versal.c | 74 +++++++++++++++++++++++++++++------- 3 files changed, 62 insertions(+), 73 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 71c3314b8b4..5d4b30f0ff9 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -17,11 +17,10 @@ #include "hw/cpu/cluster.h" #include "hw/or-irq.h" #include "hw/intc/arm_gicv3.h" #include "hw/rtc/xlnx-zynqmp-rtc.h" #include "qom/object.h" -#include "hw/usb/xlnx-usb-subsystem.h" #include "hw/nvram/xlnx-bbram.h" #include "hw/nvram/xlnx-versal-efuse.h" #include "hw/ssi/xlnx-versal-ospi.h" #include "hw/dma/xlnx_csu_dma.h" #include "hw/misc/xlnx-versal-crl.h" @@ -72,14 +71,10 @@ struct Versal { } noc; =20 struct { MemoryRegion mr_ocm; =20 - struct { - VersalUsb2 usb; - } iou; - /* Real-time Processing Unit. */ struct { MemoryRegion mr; MemoryRegion mr_ps_alias; =20 diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 418e4c6e983..5801598da7c 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -12,10 +12,11 @@ =20 #include "qemu/osdep.h" #include "qemu/error-report.h" #include "qapi/error.h" #include "system/device_tree.h" +#include "system/address-spaces.h" #include "hw/block/flash.h" #include "hw/boards.h" #include "hw/sysbus.h" #include "hw/arm/fdt.h" #include "hw/qdev-properties.h" @@ -38,12 +39,10 @@ struct VersalVirt { int fdt_size; struct { uint32_t gic; uint32_t clk_125Mhz; uint32_t clk_25Mhz; - uint32_t usb; - uint32_t dwc; } phandle; struct arm_boot_info binfo; =20 CanBusState **canbus; =20 @@ -66,12 +65,10 @@ static void fdt_create(VersalVirt *s) /* Allocate all phandles. */ s->phandle.gic =3D qemu_fdt_alloc_phandle(s->fdt); s->phandle.clk_25Mhz =3D qemu_fdt_alloc_phandle(s->fdt); s->phandle.clk_125Mhz =3D qemu_fdt_alloc_phandle(s->fdt); =20 - s->phandle.usb =3D qemu_fdt_alloc_phandle(s->fdt); - s->phandle.dwc =3D qemu_fdt_alloc_phandle(s->fdt); /* Create /chosen node for load_dtb. */ qemu_fdt_add_subnode(s->fdt, "/chosen"); qemu_fdt_add_subnode(s->fdt, "/aliases"); =20 /* Header */ @@ -152,60 +149,10 @@ static void fdt_add_timer_nodes(VersalVirt *s) GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_NS_EL2_IRQ, irqflags); qemu_fdt_setprop(s->fdt, "/timer", "compatible", compat, sizeof(compat)); } =20 -static void fdt_add_usb_xhci_nodes(VersalVirt *s) -{ - const char clocknames[] =3D "bus_clk\0ref_clk"; - const char irq_name[] =3D "dwc_usb3"; - const char compatVersalDWC3[] =3D "xlnx,versal-dwc3"; - const char compatDWC3[] =3D "snps,dwc3"; - char *name =3D g_strdup_printf("/usb@%" PRIx32, MM_USB2_CTRL_REGS); - - qemu_fdt_add_subnode(s->fdt, name); - qemu_fdt_setprop(s->fdt, name, "compatible", - compatVersalDWC3, sizeof(compatVersalDWC3)); - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", - 2, MM_USB2_CTRL_REGS, - 2, MM_USB2_CTRL_REGS_SIZE); - qemu_fdt_setprop(s->fdt, name, "clock-names", - clocknames, sizeof(clocknames)); - qemu_fdt_setprop_cells(s->fdt, name, "clocks", - s->phandle.clk_25Mhz, s->phandle.clk_125Mhz= ); - qemu_fdt_setprop(s->fdt, name, "ranges", NULL, 0); - qemu_fdt_setprop_cell(s->fdt, name, "#address-cells", 2); - qemu_fdt_setprop_cell(s->fdt, name, "#size-cells", 2); - qemu_fdt_setprop_cell(s->fdt, name, "phandle", s->phandle.usb); - g_free(name); - - name =3D g_strdup_printf("/usb@%" PRIx32 "/dwc3@%" PRIx32, - MM_USB2_CTRL_REGS, MM_USB_0); - qemu_fdt_add_subnode(s->fdt, name); - qemu_fdt_setprop(s->fdt, name, "compatible", - compatDWC3, sizeof(compatDWC3)); - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", - 2, MM_USB_0, 2, MM_USB_0_SIZE); - qemu_fdt_setprop(s->fdt, name, "interrupt-names", - irq_name, sizeof(irq_name)); - qemu_fdt_setprop_cells(s->fdt, name, "interrupts", - GIC_FDT_IRQ_TYPE_SPI, VERSAL_USB0_IRQ_0, - GIC_FDT_IRQ_FLAGS_LEVEL_HI); - qemu_fdt_setprop_cell(s->fdt, name, - "snps,quirk-frame-length-adjustment", 0x20); - qemu_fdt_setprop_cells(s->fdt, name, "#stream-id-cells", 1); - qemu_fdt_setprop_string(s->fdt, name, "dr_mode", "host"); - qemu_fdt_setprop_string(s->fdt, name, "phy-names", "usb3-phy"); - qemu_fdt_setprop(s->fdt, name, "snps,dis_u2_susphy_quirk", NULL, 0); - qemu_fdt_setprop(s->fdt, name, "snps,dis_u3_susphy_quirk", NULL, 0); - qemu_fdt_setprop(s->fdt, name, "snps,refclk_fladj", NULL, 0); - qemu_fdt_setprop(s->fdt, name, "snps,mask_phy_reset", NULL, 0); - qemu_fdt_setprop_cell(s->fdt, name, "phandle", s->phandle.dwc); - qemu_fdt_setprop_string(s->fdt, name, "maximum-speed", "high-speed"); - g_free(name); -} - static void fdt_add_rtc_node(VersalVirt *s) { const char compat[] =3D "xlnx,zynqmp-rtc"; const char interrupt_names[] =3D "alarm\0sec"; char *name =3D g_strdup_printf("/rtc@%x", MM_PMC_RTC); @@ -532,11 +479,10 @@ static void versal_virt_init(MachineState *machine) sysbus_realize(SYS_BUS_DEVICE(&s->soc), &error_fatal); create_virtio_regions(s); =20 fdt_add_gic_nodes(s); fdt_add_timer_nodes(s); - fdt_add_usb_xhci_nodes(s); fdt_add_rtc_node(s); fdt_add_bbram_node(s); fdt_add_efuse_ctrl_node(s); fdt_add_efuse_cache_node(s); fdt_add_cpu_nodes(s, psci_conduit); diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 5d647a3ac0b..87b3b2c65e1 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -30,10 +30,11 @@ #include "hw/net/xlnx-versal-canfd.h" #include "hw/sd/sdhci.h" #include "hw/net/cadence_gem.h" #include "hw/dma/xlnx-zdma.h" #include "hw/misc/xlnx-versal-xramc.h" +#include "hw/usb/xlnx-usb-subsystem.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") #define GEM_REVISION 0x40070106 =20 @@ -78,10 +79,17 @@ typedef struct VersalMap { uint64_t ctrl; uint64_t ctrl_stride; int irq; size_t num; } xram; + + struct VersalUsbMap { + uint64_t xhci; + uint64_t ctrl; + int irq; + } usb[2]; + size_t num_usb; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { .uart[0] =3D { 0xff000000, 18 }, .uart[1] =3D { 0xff010000, 19 }, @@ -106,10 +114,13 @@ static const VersalMap VERSAL_MAP =3D { .num =3D 4, .mem =3D 0xfe800000, .mem_stride =3D 1 * MiB, .ctrl =3D 0xff8e0000, .ctrl_stride =3D 0x10000, .irq =3D 79, }, + + .usb[0] =3D { .xhci =3D 0xfe200000, .ctrl =3D 0xff9d0000, .irq =3D 22 = }, + .num_usb =3D 1, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { [VERSAL_VER_VERSAL] =3D &VERSAL_MAP, }; @@ -420,33 +431,71 @@ static void versal_create_canfd(Versal *s, const Vers= alSimplePeriphMap *map, qemu_fdt_setprop_cells(s->cfg.fdt, node, "interrupts", GIC_FDT_IRQ_TYPE_SPI, map->irq, GIC_FDT_IRQ_FLAGS_LEVEL_HI); } =20 -static void versal_create_usbs(Versal *s, qemu_irq *pic) +static void versal_create_usb(Versal *s, + const struct VersalUsbMap *map) { DeviceState *dev; MemoryRegion *mr; + g_autofree char *node, *subnode; + const char clocknames[] =3D "bus_clk\0ref_clk"; + const char irq_name[] =3D "dwc_usb3"; + const char compat_versal_dwc3[] =3D "xlnx,versal-dwc3"; + const char compat_dwc3[] =3D "snps,dwc3"; =20 - object_initialize_child(OBJECT(s), "usb2", &s->lpd.iou.usb, - TYPE_XILINX_VERSAL_USB2); - dev =3D DEVICE(&s->lpd.iou.usb); + dev =3D qdev_new(TYPE_XILINX_VERSAL_USB2); + object_property_add_child(OBJECT(s), "usb[*]", OBJECT(dev)); =20 object_property_set_link(OBJECT(dev), "dma", OBJECT(&s->mr_ps), &error_abort); qdev_prop_set_uint32(dev, "intrs", 1); qdev_prop_set_uint32(dev, "slots", 2); =20 - sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); - memory_region_add_subregion(&s->mr_ps, MM_USB_0, mr); + memory_region_add_subregion(&s->mr_ps, map->xhci, mr); =20 - sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[VERSAL_USB0_IRQ_0]); + versal_sysbus_connect_irq(s, SYS_BUS_DEVICE(dev), 0, map->irq); =20 mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 1); - memory_region_add_subregion(&s->mr_ps, MM_USB2_CTRL_REGS, mr); + memory_region_add_subregion(&s->mr_ps, map->ctrl, mr); + + node =3D versal_fdt_add_simple_subnode(s, "/usb", map->ctrl, 0x10000, + compat_versal_dwc3, + sizeof(compat_versal_dwc3)); + qemu_fdt_setprop(s->cfg.fdt, node, "clock-names", + clocknames, sizeof(clocknames)); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "clocks", + s->phandle.clk_25mhz, s->phandle.clk_125mhz= ); + qemu_fdt_setprop(s->cfg.fdt, node, "ranges", NULL, 0); + qemu_fdt_setprop_cell(s->cfg.fdt, node, "#address-cells", 2); + qemu_fdt_setprop_cell(s->cfg.fdt, node, "#size-cells", 2); + + subnode =3D g_strdup_printf("/%s/dwc3", node); + g_free(node); + + node =3D versal_fdt_add_simple_subnode(s, subnode, map->xhci, 0x10000, + compat_dwc3, + sizeof(compat_dwc3)); + qemu_fdt_setprop(s->cfg.fdt, node, "interrupt-names", + irq_name, sizeof(irq_name)); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "interrupts", + GIC_FDT_IRQ_TYPE_SPI, map->irq, + GIC_FDT_IRQ_FLAGS_LEVEL_HI); + qemu_fdt_setprop_cell(s->cfg.fdt, node, + "snps,quirk-frame-length-adjustment", 0x20); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "#stream-id-cells", 1); + qemu_fdt_setprop_string(s->cfg.fdt, node, "dr_mode", "host"); + qemu_fdt_setprop_string(s->cfg.fdt, node, "phy-names", "usb3-phy"); + qemu_fdt_setprop(s->cfg.fdt, node, "snps,dis_u2_susphy_quirk", NULL, 0= ); + qemu_fdt_setprop(s->cfg.fdt, node, "snps,dis_u3_susphy_quirk", NULL, 0= ); + qemu_fdt_setprop(s->cfg.fdt, node, "snps,refclk_fladj", NULL, 0); + qemu_fdt_setprop(s->cfg.fdt, node, "snps,mask_phy_reset", NULL, 0); + qemu_fdt_setprop_string(s->cfg.fdt, node, "maximum-speed", "high-speed= "); } =20 static void versal_create_gem(Versal *s, const struct VersalGemMap *map) { @@ -1015,14 +1064,10 @@ static void versal_create_crl(Versal *s, qemu_irq *= pic) object_property_set_link(OBJECT(&s->lpd.crl), name, OBJECT(&s->lpd.rpu.cpu[i]), &error_abort); } =20 - object_property_set_link(OBJECT(&s->lpd.crl), - "usb", OBJECT(&s->lpd.iou.usb), - &error_abort); - sysbus_realize(sbd, &error_fatal); memory_region_add_subregion(&s->mr_ps, MM_CRL, sysbus_mmio_get_region(sbd, 0)); sysbus_connect_irq(sbd, 0, pic[VERSAL_CRL_IRQ]); } @@ -1210,11 +1255,14 @@ static void versal_realize(DeviceState *dev, Error = **errp) versal_create_zdma(s, &map->zdma[i]); } =20 versal_create_xrams(s, &map->xram); =20 - versal_create_usbs(s, pic); + for (i =3D 0; i < map->num_usb; i++) { + versal_create_usb(s, &map->usb[i]); + } + versal_create_pmc_apb_irq_orgate(s, pic); versal_create_rtc(s, pic); versal_create_trng(s, pic); versal_create_bbram(s, pic); versal_create_efuse(s, pic); --=20 2.50.1 From nobody Sun Sep 21 20:11:36 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757672057; cv=pass; d=zohomail.com; s=zohoarc; b=Y4OIlLTsGrfD+KzeDLSNnXGCdiP1zcZxD4Cu+EoqCYdwJktzEVXwUCDlEzx00dcProhmORui56U7d0fFxkuUD/NXc3H9otQ0XS/SBoy8wLubjY8PGdSB+Hcan+cgWWiR7kfop2ivUo3MzgyhaR+yA3Gor3IzZZ1XYcWc1cnSndg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757672057; 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=FjIu0vE3Wcf6QlDdxHGByC93Du0elAvHoKX7gHVczlI=; b=bfBlJI6PDTMtqHo9WeW3e6EjShXyLMc52wECWUsfpFAmPs5PBOm1xRu0P7d93BIRJYD+fZN4eBdMjkrmAVofKaS1ePJJ2WXDa2NeFIOIT5Ad6dul2r9/XxzcXP1o9NL5MnHc9LD5/mLVZZrMCyNPPZns3gzCQYmUGaCH7+eCjAA= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757672057595577.2418021086006; Fri, 12 Sep 2025 03:14:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0cc-0006UZ-3i; Fri, 12 Sep 2025 06:03:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cW-0006EB-PM; Fri, 12 Sep 2025 06:03:08 -0400 Received: from mail-bn8nam04on20614.outbound.protection.outlook.com ([2a01:111:f403:2408::614] helo=NAM04-BN8-obe.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 1ux0cQ-0001JX-A5; Fri, 12 Sep 2025 06:03:08 -0400 Received: from DS7PR03CA0057.namprd03.prod.outlook.com (2603:10b6:5:3b5::32) by PH7PR12MB7306.namprd12.prod.outlook.com (2603:10b6:510:20a::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:02:51 +0000 Received: from DS1PEPF0001709A.namprd05.prod.outlook.com (2603:10b6:5:3b5:cafe::89) by DS7PR03CA0057.outlook.office365.com (2603:10b6:5:3b5::32) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9094.23 via Frontend Transport; Fri, 12 Sep 2025 10:02:51 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS1PEPF0001709A.mail.protection.outlook.com (10.167.18.104) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:02:51 +0000 Received: from SATLEXMB06.amd.com (10.181.40.147) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:40 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB06.amd.com (10.181.40.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:01:39 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:01:38 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tPNcSeQp9sImkJ80Q5OzmsbOOAb5wTg+m/DZEvTHEzuTXUQ6EA++OWFu0F9J0vSsJ8oUwztWsT32iRnEvsgpmSTcHijrHpvmwEIF8yZsUVEcP2ywcViDjJ2e3QC2v01UcuzcxK68aF2LKd3M0ZRi6YgunGR9V8Jp84UvAwmFpRrVxQJCR73a1ek0FYTjmVJ1PvydKiHy8YVmPwwVZ1aoXAh8o/ll+aSA9FB2QOjdGQv4vbYUaJgK9tmCvD8cY9w60rKFilsElUA/J+vxG59weCwHCbHOqj8ccjtRtkxf7JaAazRa06Rgr2KusFo2s40hYzqsOfWKKXFOTYJQV3Ft9Q== 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=FjIu0vE3Wcf6QlDdxHGByC93Du0elAvHoKX7gHVczlI=; b=hXTKYguzvfyMgq3xtIZPs/UbFWwwuU47IgRQv4BbBVJjXlC4u4+tLXMFiSA0sGIAvRt233m9ooQW3qKQxCHjqKgkIrlSdRmAmF4dW25DEJAbh8jm0MSp9QscddDOVtrI397zM//MnV3XHy7ONMY4196xL9wvjuyhDTUDr2uLJLYkCaQB5vnxk2jPWBf+ynobHXGnKeOUSOKv/rDoiiJhrTYs2F+bYX73He/CDHFDZZpxPSe1k05kier0olzY10WsD3sKrrR6NomuratKFDKCvCtwy+Ea4NiiSaxj9bRHreHRN6vOhtncTB3wHpnQE6m80XPRgXSsjEcLpXm4onJ3iw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FjIu0vE3Wcf6QlDdxHGByC93Du0elAvHoKX7gHVczlI=; b=PiJhm+JResaiC0aXf2y6q8UJku4gzUM5UfFyIWl92s5KunmbrVEaaTQiKkvtwmOU5ZqEV+qHxP3ycdcxTd2aCYGAwb+RISH7yt57zC/x3WmYQqmH+vIaW1EI/WCu71JsFtZdjB9oVaJ/sTgcFwnlzJhRR65vIbHrTTpRY11bor4= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 10/47] hw/arm/xlnx-versal: efuse: refactor creation Date: Fri, 12 Sep 2025 12:00:19 +0200 Message-ID: <20250912100059.103997-11-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0001709A:EE_|PH7PR12MB7306:EE_ X-MS-Office365-Filtering-Correlation-Id: c6c6572f-ed62-4d77-139b-08ddf1e388de X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|376014|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?xb+svQdG1fwDGV+2cfECnIOX8xxzLG0AvYd5e0UBbuXaEST69ZapIObh8ZTq?= =?us-ascii?Q?3Mv2SaBfdbKqm9U+QJWRWBuz5Y7UdslJnJds/sV5fb93qlVA0uPKGXBP+ega?= =?us-ascii?Q?Ixcgceqz3xgzA3ceP0kZTFlaCE5OERXobyWGWwlZwZAyvvi4VizXwuqAx04e?= =?us-ascii?Q?QO3Bq0sbh2n1/2cbaYkBIUvmVCh8bykYP4CmQgDVxypOstkNfb2W9awOh71r?= =?us-ascii?Q?W/xZr2wPa285vrwWNo3tINecvZTpDx/o5nFw/rDPEz7NPY2/P9tH+8TYPn8J?= =?us-ascii?Q?kutIz6q5ANDfbubarD4eT3lzvVekPFh4IgC0lG5I0RX/Va9ihDtdq76X4jRJ?= =?us-ascii?Q?QEB1mOEtKu+4laWvNLmBz69vYTNw/c60kzGxAUGE+RjL1qqW9LR6+QKJ7tmi?= =?us-ascii?Q?SsXI1bZFhS5/IBSLK6rDgcH2K93Vt5JRBMVWfoACqsfIjuUIiCRvmmWiDVVA?= =?us-ascii?Q?ax8vh8TYajbr6T76wZo2jzw9sVuLfKQ+kUCUcfDkEQgiBRgx7WLAnJtaH6xN?= =?us-ascii?Q?L/PAlmvDZ41OYfV0V5MBIQH5A5MzME56egTnw0SiYc0ZMnLMlNtlUvXllfpR?= =?us-ascii?Q?kY5yG+UvmbEIUOfrSD+pXT1WevKhl6O+NuyK1e19QrqIrCLatpypBG9Ttk3p?= =?us-ascii?Q?wukQX2bW9jPei8//KgUkH0/eujf3SFf1ai3m+eqq2WiaNnwIZ9SGqT2uvHjf?= =?us-ascii?Q?E/tBaGTkJtwIkiefat5Nr8XGrZs1aOjaoX4on3fJ2hNDMyJqFHFj8BtsoyCU?= =?us-ascii?Q?1cCuuGu11fLHfiYunVZXqNL2VaLS6oL2dG1M0yqij+QpPeRAUwHIDRft7y1F?= =?us-ascii?Q?2N2r3Y5En0zacQv7OY8I9UTbWYrfEdnliU+FcSBcbKwF2ikuhV0U/JC3Hvnb?= =?us-ascii?Q?NJ2G17ARBIJJZmIk1JfdbcP6bOddd4v/qfhjQvPHMORc1049mgkrpoDn5tUI?= =?us-ascii?Q?sVhhFzsrRnbTgaFJTBWPZxhuSDTNFLTZGEl69aPfLX83pGBzPzouHPn6MCJ6?= =?us-ascii?Q?IBMALLdXuujO2iDWUIlxctWOZcoD0Do1MViAWDQ1r8I1maS64qt18Z5czHjr?= =?us-ascii?Q?rloJxHDge2MWN+0jnw6TQn9RQH3SEj9pScVSnTm6cw7WGIS3hGOtrsJdo3ae?= =?us-ascii?Q?0DnrDjtsXdxooIIjr0++Az/rh2BuFYMHqNkgAKyCwgpbCxVpeII1Tipt8D1B?= =?us-ascii?Q?DTijcBuFgxI+qg4SKB5LXI5FhHvsbp7ND6Q0mhDx8YBPlhxdXBh2raO2r7mQ?= =?us-ascii?Q?blKejOfzP1ohjRw2utRZcC5dYvLMQq+kPvetImETeVsbBbumCFYKt9Aqh0ZP?= =?us-ascii?Q?lDNPD0hOk1o61e4i+sjDrIWpwVaCA6NVqsE0TcdmwLHqOr5det4jhvz5hEu3?= =?us-ascii?Q?ZVpMdllhbsEM7rsoMAnZqIYNJseSJCmctNzWYKnWZ+RfOH3y9jSu5oq5CBJH?= =?us-ascii?Q?NmVfXRKi+Dq+vi1cIFh6tyl6E7Tqy72TIQTjStcSRNQFWm3JSBagU0yC2IKZ?= =?us-ascii?Q?1wWGUxxd4m/ELesdQpDkK0TNkXtPoG7Smfhu?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(376014)(1800799024)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:02:51.1802 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c6c6572f-ed62-4d77-139b-08ddf1e388de X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0001709A.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7306 Received-SPF: permerror client-ip=2a01:111:f403:2408::614; envelope-from=Luc.Michel@amd.com; helo=NAM04-BN8-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757672060228116600 Content-Type: text/plain; charset="utf-8" Refactore the eFuse devices creation using the VersalMap structure. Note that the corresponding FDT nodes are removed. They do not correspond to any real node in standard Versal DTBs. No matching drivers exist for them. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/arm/xlnx-versal.h | 5 +-- hw/arm/xlnx-versal-virt.c | 43 ++------------------ hw/arm/xlnx-versal.c | 78 +++++++++++++++++++++++------------- 3 files changed, 54 insertions(+), 72 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 5d4b30f0ff9..79ca9b13321 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -18,11 +18,10 @@ #include "hw/or-irq.h" #include "hw/intc/arm_gicv3.h" #include "hw/rtc/xlnx-zynqmp-rtc.h" #include "qom/object.h" #include "hw/nvram/xlnx-bbram.h" -#include "hw/nvram/xlnx-versal-efuse.h" #include "hw/ssi/xlnx-versal-ospi.h" #include "hw/dma/xlnx_csu_dma.h" #include "hw/misc/xlnx-versal-crl.h" #include "hw/misc/xlnx-versal-pmc-iou-slcr.h" #include "hw/misc/xlnx-versal-trng.h" @@ -100,13 +99,10 @@ struct Versal { } iou; =20 XlnxZynqMPRTC rtc; XlnxVersalTRng trng; XlnxBBRam bbram; - XlnxEFuse efuse; - XlnxVersalEFuseCtrl efuse_ctrl; - XlnxVersalEFuseCache efuse_cache; XlnxVersalCFUAPB cfu_apb; XlnxVersalCFUFDRO cfu_fdro; XlnxVersalCFUSFR cfu_sfr; XlnxVersalCFrameReg cframe[XLNX_VERSAL_NR_CFRAME]; XlnxVersalCFrameBcastReg cframe_bcast; @@ -137,10 +133,11 @@ static inline void versal_set_fdt(Versal *s, void *fd= t) g_assert(!qdev_is_realized(DEVICE(s))); s->cfg.fdt =3D fdt; } =20 void versal_sdhci_plug_card(Versal *s, int sd_idx, BlockBackend *blk); +void versal_efuse_attach_drive(Versal *s, BlockBackend *blk); =20 int versal_get_num_can(VersalVersion version); int versal_get_num_sdhci(VersalVersion version); =20 /* Memory-map and IRQ definitions. Copied a subset from diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 5801598da7c..b6c49dafe09 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -190,45 +190,10 @@ static void fdt_add_bbram_node(VersalVirt *s) 2, MM_PMC_BBRAM_CTRL_SIZE); qemu_fdt_setprop(s->fdt, name, "compatible", compat, sizeof(compat)); g_free(name); } =20 -static void fdt_add_efuse_ctrl_node(VersalVirt *s) -{ - const char compat[] =3D TYPE_XLNX_VERSAL_EFUSE_CTRL; - const char interrupt_names[] =3D "pmc_efuse"; - char *name =3D g_strdup_printf("/pmc_efuse@%x", MM_PMC_EFUSE_CTRL); - - qemu_fdt_add_subnode(s->fdt, name); - - qemu_fdt_setprop_cells(s->fdt, name, "interrupts", - GIC_FDT_IRQ_TYPE_SPI, VERSAL_EFUSE_IRQ, - GIC_FDT_IRQ_FLAGS_LEVEL_HI); - qemu_fdt_setprop(s->fdt, name, "interrupt-names", - interrupt_names, sizeof(interrupt_names)); - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", - 2, MM_PMC_EFUSE_CTRL, - 2, MM_PMC_EFUSE_CTRL_SIZE); - qemu_fdt_setprop(s->fdt, name, "compatible", compat, sizeof(compat)); - g_free(name); -} - -static void fdt_add_efuse_cache_node(VersalVirt *s) -{ - const char compat[] =3D TYPE_XLNX_VERSAL_EFUSE_CACHE; - char *name =3D g_strdup_printf("/xlnx_pmc_efuse_cache@%x", - MM_PMC_EFUSE_CACHE); - - qemu_fdt_add_subnode(s->fdt, name); - - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", - 2, MM_PMC_EFUSE_CACHE, - 2, MM_PMC_EFUSE_CACHE_SIZE); - qemu_fdt_setprop(s->fdt, name, "compatible", compat, sizeof(compat)); - g_free(name); -} - static void fdt_nop_memory_nodes(void *fdt, Error **errp) { Error *err =3D NULL; char **node_path; int n =3D 0; @@ -391,19 +356,19 @@ static void bbram_attach_drive(XlnxBBRam *dev) if (blk) { qdev_prop_set_drive(DEVICE(dev), "drive", blk); } } =20 -static void efuse_attach_drive(XlnxEFuse *dev) +static void efuse_attach_drive(VersalVirt *s) { DriveInfo *dinfo; BlockBackend *blk; =20 dinfo =3D drive_get_by_index(IF_PFLASH, 1); blk =3D dinfo ? blk_by_legacy_dinfo(dinfo) : NULL; if (blk) { - qdev_prop_set_drive(DEVICE(dev), "drive", blk); + versal_efuse_attach_drive(&s->soc, blk); } } =20 static void sd_plug_card(VersalVirt *s, int idx, DriveInfo *di) { @@ -481,12 +446,10 @@ static void versal_virt_init(MachineState *machine) =20 fdt_add_gic_nodes(s); fdt_add_timer_nodes(s); fdt_add_rtc_node(s); fdt_add_bbram_node(s); - fdt_add_efuse_ctrl_node(s); - fdt_add_efuse_cache_node(s); fdt_add_cpu_nodes(s, psci_conduit); fdt_add_clk_node(s, "/old-clk125", 125000000, s->phandle.clk_125Mhz); fdt_add_clk_node(s, "/old-clk25", 25000000, s->phandle.clk_25Mhz); =20 /* Make the APU cpu address space visible to virtio and other @@ -496,11 +459,11 @@ static void versal_virt_init(MachineState *machine) =20 /* Attach bbram backend, if given */ bbram_attach_drive(&s->soc.pmc.bbram); =20 /* Attach efuse backend, if given */ - efuse_attach_drive(&s->soc.pmc.efuse); + efuse_attach_drive(s); =20 /* Plug SD cards */ for (i =3D 0; i < versal_get_num_sdhci(VERSAL_VER_VERSAL); i++) { sd_plug_card(s, i, drive_get(IF_SD, 0, i)); } diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 87b3b2c65e1..7aaa8dda077 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -31,10 +31,11 @@ #include "hw/sd/sdhci.h" #include "hw/net/cadence_gem.h" #include "hw/dma/xlnx-zdma.h" #include "hw/misc/xlnx-versal-xramc.h" #include "hw/usb/xlnx-usb-subsystem.h" +#include "hw/nvram/xlnx-versal-efuse.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") #define GEM_REVISION 0x40070106 =20 @@ -86,10 +87,16 @@ typedef struct VersalMap { uint64_t xhci; uint64_t ctrl; int irq; } usb[2]; size_t num_usb; + + struct VersalEfuseMap { + uint64_t ctrl; + uint64_t cache; + int irq; + } efuse; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { .uart[0] =3D { 0xff000000, 18 }, .uart[1] =3D { 0xff010000, 19 }, @@ -117,10 +124,12 @@ static const VersalMap VERSAL_MAP =3D { .irq =3D 79, }, =20 .usb[0] =3D { .xhci =3D 0xfe200000, .ctrl =3D 0xff9d0000, .irq =3D 22 = }, .num_usb =3D 1, + + .efuse =3D { .ctrl =3D 0xf1240000, .cache =3D 0xf1250000, .irq =3D 139= }, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { [VERSAL_VER_VERSAL] =3D &VERSAL_MAP, }; @@ -750,46 +759,45 @@ static void versal_create_bbram(Versal *s, qemu_irq *= pic) sysbus_mmio_get_region(sbd, 0)); sysbus_connect_irq(sbd, 0, qdev_get_gpio_in(DEVICE(&s->pmc.apb_irq_orgate), 1)= ); } =20 -static void versal_realize_efuse_part(Versal *s, Object *dev, hwaddr base) +static void versal_create_efuse(Versal *s, + const struct VersalEfuseMap *map) { - SysBusDevice *part =3D SYS_BUS_DEVICE(dev); + DeviceState *bits; + DeviceState *ctrl; + DeviceState *cache; =20 - object_property_set_link(OBJECT(part), "efuse", - OBJECT(&s->pmc.efuse), &error_abort); + ctrl =3D qdev_new(TYPE_XLNX_VERSAL_EFUSE_CTRL); + cache =3D qdev_new(TYPE_XLNX_VERSAL_EFUSE_CACHE); + bits =3D qdev_new(TYPE_XLNX_EFUSE); =20 - sysbus_realize(part, &error_abort); - memory_region_add_subregion(&s->mr_ps, base, - sysbus_mmio_get_region(part, 0)); -} + qdev_prop_set_uint32(bits, "efuse-nr", 3); + qdev_prop_set_uint32(bits, "efuse-size", 8192); =20 -static void versal_create_efuse(Versal *s, qemu_irq *pic) -{ - Object *bits =3D OBJECT(&s->pmc.efuse); - Object *ctrl =3D OBJECT(&s->pmc.efuse_ctrl); - Object *cache =3D OBJECT(&s->pmc.efuse_cache); + object_property_add_child(OBJECT(s), "efuse", OBJECT(bits)); + qdev_realize_and_unref(bits, NULL, &error_abort); =20 - object_initialize_child(OBJECT(s), "efuse-ctrl", &s->pmc.efuse_ctrl, - TYPE_XLNX_VERSAL_EFUSE_CTRL); + object_property_set_link(OBJECT(ctrl), "efuse", OBJECT(bits), &error_a= bort); =20 - object_initialize_child(OBJECT(s), "efuse-cache", &s->pmc.efuse_cache, - TYPE_XLNX_VERSAL_EFUSE_CACHE); + object_property_set_link(OBJECT(cache), "efuse", OBJECT(bits), + &error_abort); =20 - object_initialize_child_with_props(ctrl, "xlnx-efuse@0", bits, - sizeof(s->pmc.efuse), - TYPE_XLNX_EFUSE, &error_abort, - "efuse-nr", "3", - "efuse-size", "8192", - NULL); + object_property_add_child(OBJECT(s), "efuse-cache", OBJECT(cache)); + sysbus_realize_and_unref(SYS_BUS_DEVICE(cache), &error_abort); =20 - qdev_realize(DEVICE(bits), NULL, &error_abort); - versal_realize_efuse_part(s, ctrl, MM_PMC_EFUSE_CTRL); - versal_realize_efuse_part(s, cache, MM_PMC_EFUSE_CACHE); + object_property_add_child(OBJECT(s), "efuse-ctrl", OBJECT(ctrl)); + sysbus_realize_and_unref(SYS_BUS_DEVICE(ctrl), &error_abort); =20 - sysbus_connect_irq(SYS_BUS_DEVICE(ctrl), 0, pic[VERSAL_EFUSE_IRQ]); + memory_region_add_subregion(&s->mr_ps, map->ctrl, + sysbus_mmio_get_region(SYS_BUS_DEVICE(ctrl= ), + 0)); + memory_region_add_subregion(&s->mr_ps, map->cache, + sysbus_mmio_get_region(SYS_BUS_DEVICE(cach= e), + 0)); + versal_sysbus_connect_irq(s, SYS_BUS_DEVICE(ctrl), 0, map->irq); } =20 static void versal_create_pmc_iou_slcr(Versal *s, qemu_irq *pic) { SysBusDevice *sbd; @@ -1259,15 +1267,16 @@ static void versal_realize(DeviceState *dev, Error = **errp) =20 for (i =3D 0; i < map->num_usb; i++) { versal_create_usb(s, &map->usb[i]); } =20 + versal_create_efuse(s, &map->efuse); + versal_create_pmc_apb_irq_orgate(s, pic); versal_create_rtc(s, pic); versal_create_trng(s, pic); versal_create_bbram(s, pic); - versal_create_efuse(s, pic); versal_create_pmc_iou_slcr(s, pic); versal_create_ospi(s, pic); versal_create_crl(s, pic); versal_create_cfu(s, pic); versal_map_ddr(s); @@ -1298,10 +1307,23 @@ void versal_sdhci_plug_card(Versal *s, int sd_idx, = BlockBackend *blk) qdev_prop_set_drive_err(card, "drive", blk, &error_fatal); qdev_realize_and_unref(card, qdev_get_child_bus(DEVICE(sdhci), "sd-bus= "), &error_fatal); } =20 +void versal_efuse_attach_drive(Versal *s, BlockBackend *blk) +{ + DeviceState *efuse; + + efuse =3D DEVICE(versal_get_child(s, "efuse")); + + if (efuse =3D=3D NULL) { + return; + } + + qdev_prop_set_drive(efuse, "drive", blk); +} + int versal_get_num_can(VersalVersion version) { const VersalMap *map =3D VERSION_TO_MAP[version]; =20 return map->num_canfd; --=20 2.50.1 From nobody Sun Sep 21 20:11:36 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757672174; cv=pass; d=zohomail.com; s=zohoarc; b=fekntmKhBODX9o+eoaUpO0SKcn8TzQtHeqP+pVbkYmPp2SvKMUuaCoNp0YGHFOksaoBK+rsuziDYThWD5lH3cCdwXTHPpK7TypN68jFbH+5/A9VsGfyVuzLJ2k7EciJziYH53M0JY/OZoLO1uiKBaEzfzEKe8bdImQXCmZ5mnbM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757672174; 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=X542wgyej7cmRr+0JGFeEHs1iGzwcKaNfStnxB6UduE=; b=b0J5QzK3GTTQmapbPAgjqn6lXgVfI6QTP9LLIVyS8Tf98GOCg4hu49g8D6Ii8dA82eEDg9sX9v+KyR8qUQqfOZ5ekM0jV4O2sY2A8M10v3J2q2/ZG70mW2BJFLKZEu1XxPu310LLZUCCShXTKFcbOCDCQprfA0WVP7r74tywVsY= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757672174582312.52339061215946; Fri, 12 Sep 2025 03:16:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0cn-00074L-15; Fri, 12 Sep 2025 06:03:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cU-00063K-RZ; Fri, 12 Sep 2025 06:03:06 -0400 Received: from mail-bn8nam12on2062d.outbound.protection.outlook.com ([2a01:111:f403:2418::62d] helo=NAM12-BN8-obe.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 1ux0cP-0001IQ-SH; Fri, 12 Sep 2025 06:03:05 -0400 Received: from DM6PR03CA0060.namprd03.prod.outlook.com (2603:10b6:5:100::37) by DS0PR12MB8320.namprd12.prod.outlook.com (2603:10b6:8:f8::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:02:52 +0000 Received: from DS3PEPF000099E1.namprd04.prod.outlook.com (2603:10b6:5:100:cafe::9b) by DM6PR03CA0060.outlook.office365.com (2603:10b6:5:100::37) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.17 via Frontend Transport; Fri, 12 Sep 2025 10:02:52 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099E1.mail.protection.outlook.com (10.167.17.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:02:51 +0000 Received: from SATLEXMB06.amd.com (10.181.40.147) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:41 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB06.amd.com (10.181.40.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:01:41 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:01:39 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=c7EMDIPiuGbVOZT1/8qoAVqnZSqCwoEsXhKZLe36apNNDm3HXhaf6E4w4BvdNF082/iABbAy8H82VjlYoPaNuqZNXTY9oZd2P2Vc4rY/SX1sJG7wtd0OYZDUPtECHIWAbs5SfqiObenAlGMy3FzUqJ0Q1GfSirdB0miAWJmz8Wwiv1L4G8o96RcDKF0wdIk1CxqvYcqu9Jwxen2pV0HTPbyq0elc2aJ1ZnSzxDgz1atakz6lWm+RKaNRNPu3dnjDwakAN1qjAiF69NJA4L7C2ZTuKNMDpTglj8Vk7R2Qst54RBIKRd56P7W3cjlQW6v2j7YaYslD8CuQ+BGKvvPGKQ== 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=X542wgyej7cmRr+0JGFeEHs1iGzwcKaNfStnxB6UduE=; b=gJB7pt9ZHzxi99gxkB4ShQZLY/pV0pL0wyHOihIjjm2Vx4V3chV2iwk25/lHgJJgcUC+6CsXmh0F55l8RcJZpR3fVE89UMS8GoPXCGFSWH+U4yXpLHwhGSVFXKQkLuLbhX9CIKKtQGvko/0WafrrymiERfnuhD9Vcyyer71Y2fmwSJZiw5s2VdWQiCAV+6TaPVirCMt6EBk7BNnQAS5NIDuiUlDwJiwU80FDOnM7myhE5InxFX963fczV0XXqS4ynSyOgp/4oEXw5GJpS6ZZrxVk9NmnGx8NSeuSwBzM5iEFnah3wNQApu2wi3w2B1nIKLy2m1EeAvAaRsXcPZ+jpw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=X542wgyej7cmRr+0JGFeEHs1iGzwcKaNfStnxB6UduE=; b=Ay7cq0jUwT1y5upsp/GKbDHLq3IoO+vQy4XNhGcmLru1Z4MOiCkLtgbGyfI1EufESn0Daul4alAwD9N0F7fR3ysv60mGBxi/0k5Si/ovD44NvHrmqo0t7vQJSRg51z4wG6BdQiU30yS8/w1vHBY13HYoSjI4anJlMJ8/cUl7+pw= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 11/47] hw/arm/xlnx-versal: ospi: refactor creation Date: Fri, 12 Sep 2025 12:00:20 +0200 Message-ID: <20250912100059.103997-12-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099E1:EE_|DS0PR12MB8320:EE_ X-MS-Office365-Filtering-Correlation-Id: b876ff36-843f-4915-6f5b-08ddf1e38944 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|82310400026|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?rJtaQOmoczmxMerOjWaYHHSZjmWVT5cCOGVZDV/CnHzUfAPkxu3H1JFxNIcZ?= =?us-ascii?Q?ZSqsstM6YB2CLqSC/ApFg/LcBRZaDteahKug6HZHTA7EPwnN7qrJZVDDJTLg?= =?us-ascii?Q?AA9ood14yj9io0ybINmhR9C7idj1Yu+ZrA7Y8nzxq1+DYFaQ9rIvx0/C8hMq?= =?us-ascii?Q?L+DF84NA4X5oWA4+Wq1eoT2ckhLPOXlYV6fUZhLesbybOXFdPhw/+aanOmll?= =?us-ascii?Q?o59i9syw/iW7pktgsWd/CWYei5DqYpJtTrK3IM0gRFkYwkdAKv2WcAViqW5p?= =?us-ascii?Q?tw4+ac13TpgbcSjLTxHn4bWMGSWXGJpQf8pPPNTukZgcfLY8FlIzHXUFQjTX?= =?us-ascii?Q?JZNokHIa8jQNHP0vgBTgy9Id/d7OU0rLunc7Wo9iDeGz5zeJYVbTZa0U24to?= =?us-ascii?Q?nKhrVD1OGlYdiuhSTo0FuD48P9gH4gMhj6sh/hWTkJrP6RbsfDNa/AVbLUgT?= =?us-ascii?Q?ZGQzJhG6063W8hPdDb2jZE82/c7LyF+8J8hGyrDXjFyZwZG7GE+38XtvY/UJ?= =?us-ascii?Q?Vch7SEX2BMSlYLTc7dqKQZqEMC0RsPDhBmkeQkBvxPhVBjFCLsOQZUGir87e?= =?us-ascii?Q?n3EULsIDO0TuLkYMB8x7tCdY3F40QP5ZwKPnjEcrFDZemqPnJQdADaw3GP5A?= =?us-ascii?Q?eZPDFRRjILaVKTqYEgjYySgk8yy8wBxxAeYLkit9pjZe6lLAy4NA3CJvSuiB?= =?us-ascii?Q?75DoAPqCdFcqTPkzC8fl8oUT6YDWjSMPxmHkt8m7jEBSn7E6PdNxXfOHi6IW?= =?us-ascii?Q?H8s3NOwP+agXy2bVf7G66sM0la2yTh48nGr0VHbiL65AJJSwQ8ia3YduyjoH?= =?us-ascii?Q?UJZ3QyAINwv/MsiDbVWDcbFGtKmZBjPVfWog9kU2XT5rEkaGJ9mqTEN/vhwW?= =?us-ascii?Q?lGfe0Zo16OMYcZaQi/kOPv3jkpPXdzn72Pj8a6UGttqEitQD7phRM3w7MUuU?= =?us-ascii?Q?bEIS5AYJky1xnS8k6024Asn0R8nERTUUf+vxlownAXOjzBTfAxFR1Kt+6mwL?= =?us-ascii?Q?jbs5ttzeO12ktUqCh8Z5h1lUukm3T/5E0epeji8towxNOmSwjHbj9A/4kgid?= =?us-ascii?Q?vXQaAEE9EIJFF13a7jvex6IWQbCqdu98SnfGFGDVzbHQMKmN/4lqnyWlYHJl?= =?us-ascii?Q?JR7Ic6oqlgpHRDSAGCIa7000OX/SoDL42pUTekOahLH/pgh2yBOeCexdSYz3?= =?us-ascii?Q?nr1BoF7JApgXaUp77Hbx4VT3tyDSNiz6gt+Ay8Pw6rD+GHc513SOX9+ZgR78?= =?us-ascii?Q?lY/C7z3GpeNzZJ5NGV2xx1KQRU5k6skmK2g+wKLORBeaBuj+CgiCqPxXa+oz?= =?us-ascii?Q?+67V8Yr+W66R7KHtMf2lK9ITL7z9lrmyHMo/OfUZMbhR5QSHMdYYjplfef/s?= =?us-ascii?Q?BtAYFHBOaTYSalD9KDsOvaqfrHymnwRq/Cz9dZH5pnVYXBqbkpjo8xFcNIVg?= =?us-ascii?Q?9xcyfj/WDwN6l0NPZedmudzWSkxMiPN54kaye/NjOqNFKUCPX/smNGP4qDcU?= =?us-ascii?Q?u0l/I0EzmiZf3lxWbC4Z8t0aCiYS/+6M4Y1E?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(82310400026)(1800799024)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:02:51.8509 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b876ff36-843f-4915-6f5b-08ddf1e38944 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099E1.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8320 Received-SPF: permerror client-ip=2a01:111:f403:2418::62d; envelope-from=Luc.Michel@amd.com; helo=NAM12-BN8-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757672175478116600 Content-Type: text/plain; charset="utf-8" Refactor the OSPI controller creation using the VersalMap structure. Note that the connection to the PMC IOU SLCR is removed for now and will be re-added by next commits. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/arm/xlnx-versal.h | 12 +-- hw/arm/xlnx-versal-virt.c | 41 ++++------ hw/arm/xlnx-versal.c | 142 ++++++++++++++++++++--------------- 3 files changed, 98 insertions(+), 97 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 79ca9b13321..b7ef255d6fd 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -18,12 +18,10 @@ #include "hw/or-irq.h" #include "hw/intc/arm_gicv3.h" #include "hw/rtc/xlnx-zynqmp-rtc.h" #include "qom/object.h" #include "hw/nvram/xlnx-bbram.h" -#include "hw/ssi/xlnx-versal-ospi.h" -#include "hw/dma/xlnx_csu_dma.h" #include "hw/misc/xlnx-versal-crl.h" #include "hw/misc/xlnx-versal-pmc-iou-slcr.h" #include "hw/misc/xlnx-versal-trng.h" #include "net/can_emu.h" #include "hw/misc/xlnx-versal-cfu.h" @@ -86,18 +84,10 @@ struct Versal { =20 /* The Platform Management Controller subsystem. */ struct { struct { XlnxVersalPmcIouSlcr slcr; - - struct { - XlnxVersalOspi ospi; - XlnxCSUDMA dma_src; - XlnxCSUDMA dma_dst; - MemoryRegion linear_mr; - OrIRQState irq_orgate; - } ospi; } iou; =20 XlnxZynqMPRTC rtc; XlnxVersalTRng trng; XlnxBBRam bbram; @@ -134,10 +124,12 @@ static inline void versal_set_fdt(Versal *s, void *fd= t) s->cfg.fdt =3D fdt; } =20 void versal_sdhci_plug_card(Versal *s, int sd_idx, BlockBackend *blk); void versal_efuse_attach_drive(Versal *s, BlockBackend *blk); +void versal_ospi_create_flash(Versal *s, int flash_idx, const char *flash_= mdl, + BlockBackend *blk); =20 int versal_get_num_can(VersalVersion version); int versal_get_num_sdhci(VersalVersion version); =20 /* Memory-map and IRQ definitions. Copied a subset from diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index b6c49dafe09..a948e24aea0 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -46,12 +46,12 @@ struct VersalVirt { =20 CanBusState **canbus; =20 struct { bool secure; + char *ospi_model; } cfg; - char *ospi_model; }; =20 static void fdt_create(VersalVirt *s) { MachineClass *mc =3D MACHINE_GET_CLASS(s); @@ -379,19 +379,19 @@ static void sd_plug_card(VersalVirt *s, int idx, Driv= eInfo *di) =20 static char *versal_get_ospi_model(Object *obj, Error **errp) { VersalVirt *s =3D XLNX_VERSAL_VIRT_MACHINE(obj); =20 - return g_strdup(s->ospi_model); + return g_strdup(s->cfg.ospi_model); } =20 static void versal_set_ospi_model(Object *obj, const char *value, Error **= errp) { VersalVirt *s =3D XLNX_VERSAL_VIRT_MACHINE(obj); =20 - g_free(s->ospi_model); - s->ospi_model =3D g_strdup(value); + g_free(s->cfg.ospi_model); + s->cfg.ospi_model =3D g_strdup(value); } =20 =20 static void versal_virt_init(MachineState *machine) { @@ -480,42 +480,31 @@ static void versal_virt_init(MachineState *machine) s->binfo.dtb_limit =3D 0x1000000; } arm_load_kernel(&s->soc.fpd.apu.cpu[0], machine, &s->binfo); =20 for (i =3D 0; i < XLNX_VERSAL_NUM_OSPI_FLASH; i++) { - BusState *spi_bus; - DeviceState *flash_dev; ObjectClass *flash_klass; - qemu_irq cs_line; DriveInfo *dinfo =3D drive_get(IF_MTD, 0, i); + BlockBackend *blk; + const char *mdl; =20 - spi_bus =3D qdev_get_child_bus(DEVICE(&s->soc.pmc.iou.ospi), "spi0= "); - - if (s->ospi_model) { - flash_klass =3D object_class_by_name(s->ospi_model); + if (s->cfg.ospi_model) { + flash_klass =3D object_class_by_name(s->cfg.ospi_model); if (!flash_klass || object_class_is_abstract(flash_klass) || !object_class_dynamic_cast(flash_klass, TYPE_M25P80)) { error_report("'%s' is either abstract or" - " not a subtype of m25p80", s->ospi_model); + " not a subtype of m25p80", s->cfg.ospi_model); exit(1); } + mdl =3D s->cfg.ospi_model; + } else { + mdl =3D "mt35xu01g"; } =20 - flash_dev =3D qdev_new(s->ospi_model ? s->ospi_model : "mt35xu01g"= ); - - if (dinfo) { - qdev_prop_set_drive_err(flash_dev, "drive", - blk_by_legacy_dinfo(dinfo), &error_fat= al); - } - qdev_prop_set_uint8(flash_dev, "cs", i); - qdev_realize_and_unref(flash_dev, spi_bus, &error_fatal); - - cs_line =3D qdev_get_gpio_in_named(flash_dev, SSI_GPIO_CS, 0); - - sysbus_connect_irq(SYS_BUS_DEVICE(&s->soc.pmc.iou.ospi), - i + 1, cs_line); + blk =3D dinfo ? blk_by_legacy_dinfo(dinfo) : NULL; + versal_ospi_create_flash(&s->soc, i, mdl, blk); } } =20 static void versal_virt_machine_instance_init(Object *obj) { @@ -540,11 +529,11 @@ static void versal_virt_machine_instance_init(Object = *obj) =20 static void versal_virt_machine_finalize(Object *obj) { VersalVirt *s =3D XLNX_VERSAL_VIRT_MACHINE(obj); =20 - g_free(s->ospi_model); + g_free(s->cfg.ospi_model); g_free(s->canbus); } =20 static void versal_virt_machine_class_init(ObjectClass *oc, const void *da= ta) { diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 7aaa8dda077..4a70cb79bf9 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -32,10 +32,11 @@ #include "hw/net/cadence_gem.h" #include "hw/dma/xlnx-zdma.h" #include "hw/misc/xlnx-versal-xramc.h" #include "hw/usb/xlnx-usb-subsystem.h" #include "hw/nvram/xlnx-versal-efuse.h" +#include "hw/ssi/xlnx-versal-ospi.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") #define GEM_REVISION 0x40070106 =20 @@ -93,10 +94,19 @@ typedef struct VersalMap { struct VersalEfuseMap { uint64_t ctrl; uint64_t cache; int irq; } efuse; + + struct VersalOspiMap { + uint64_t ctrl; + uint64_t dac; + uint64_t dac_sz; + uint64_t dma_src; + uint64_t dma_dst; + int irq; + } ospi; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { .uart[0] =3D { 0xff000000, 18 }, .uart[1] =3D { 0xff010000, 19 }, @@ -126,10 +136,17 @@ static const VersalMap VERSAL_MAP =3D { =20 .usb[0] =3D { .xhci =3D 0xfe200000, .ctrl =3D 0xff9d0000, .irq =3D 22 = }, .num_usb =3D 1, =20 .efuse =3D { .ctrl =3D 0xf1240000, .cache =3D 0xf1250000, .irq =3D 139= }, + + .ospi =3D { + .ctrl =3D 0xf1010000, + .dac =3D 0xc0000000, .dac_sz =3D 0x20000000, + .dma_src =3D 0xf1011000, .dma_dst =3D 0xf1011800, + .irq =3D 124, + }, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { [VERSAL_VER_VERSAL] =3D &VERSAL_MAP, }; @@ -813,99 +830,78 @@ static void versal_create_pmc_iou_slcr(Versal *s, qem= u_irq *pic) =20 sysbus_connect_irq(sbd, 0, qdev_get_gpio_in(DEVICE(&s->pmc.apb_irq_orgate), 2)= ); } =20 -static void versal_create_ospi(Versal *s, qemu_irq *pic) +static DeviceState *versal_create_ospi(Versal *s, + const struct VersalOspiMap *map) { SysBusDevice *sbd; MemoryRegion *mr_dac; - qemu_irq ospi_mux_sel; - DeviceState *orgate; + DeviceState *dev, *dma_dst, *dma_src, *orgate; + MemoryRegion *linear_mr =3D g_new(MemoryRegion, 1); =20 - memory_region_init(&s->pmc.iou.ospi.linear_mr, OBJECT(s), - "versal-ospi-linear-mr" , MM_PMC_OSPI_DAC_SIZE); + dev =3D qdev_new(TYPE_XILINX_VERSAL_OSPI); + object_property_add_child(OBJECT(s), "ospi", OBJECT(dev)); =20 - object_initialize_child(OBJECT(s), "versal-ospi", &s->pmc.iou.ospi.osp= i, - TYPE_XILINX_VERSAL_OSPI); + memory_region_init(linear_mr, OBJECT(dev), "linear-mr", map->dac_sz); =20 - mr_dac =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->pmc.iou.ospi.ospi= ), 1); - memory_region_add_subregion(&s->pmc.iou.ospi.linear_mr, 0x0, mr_dac); + mr_dac =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 1); + memory_region_add_subregion(linear_mr, 0x0, mr_dac); =20 /* Create the OSPI destination DMA */ - object_initialize_child(OBJECT(s), "versal-ospi-dma-dst", - &s->pmc.iou.ospi.dma_dst, - TYPE_XLNX_CSU_DMA); + dma_dst =3D qdev_new(TYPE_XLNX_CSU_DMA); + object_property_add_child(OBJECT(dev), "dma-dst-dev", OBJECT(dma_dst)); + object_property_set_link(OBJECT(dma_dst), "dma", + OBJECT(get_system_memory()), &error_abort); =20 - object_property_set_link(OBJECT(&s->pmc.iou.ospi.dma_dst), - "dma", OBJECT(get_system_memory()), - &error_abort); + sbd =3D SYS_BUS_DEVICE(dma_dst); + sysbus_realize_and_unref(sbd, &error_fatal); =20 - sbd =3D SYS_BUS_DEVICE(&s->pmc.iou.ospi.dma_dst); - sysbus_realize(sbd, &error_fatal); - - memory_region_add_subregion(&s->mr_ps, MM_PMC_OSPI_DMA_DST, + memory_region_add_subregion(&s->mr_ps, map->dma_dst, sysbus_mmio_get_region(sbd, 0)); =20 /* Create the OSPI source DMA */ - object_initialize_child(OBJECT(s), "versal-ospi-dma-src", - &s->pmc.iou.ospi.dma_src, - TYPE_XLNX_CSU_DMA); + dma_src =3D qdev_new(TYPE_XLNX_CSU_DMA); + object_property_add_child(OBJECT(dev), "dma-src-dev", OBJECT(dma_src)); =20 - object_property_set_bool(OBJECT(&s->pmc.iou.ospi.dma_src), "is-dst", - false, &error_abort); + object_property_set_bool(OBJECT(dma_src), "is-dst", false, &error_abor= t); =20 - object_property_set_link(OBJECT(&s->pmc.iou.ospi.dma_src), - "dma", OBJECT(mr_dac), &error_abort); - - object_property_set_link(OBJECT(&s->pmc.iou.ospi.dma_src), - "stream-connected-dma", - OBJECT(&s->pmc.iou.ospi.dma_dst), + object_property_set_link(OBJECT(dma_src), "dma", OBJECT(mr_dac), &error_abort); =20 - sbd =3D SYS_BUS_DEVICE(&s->pmc.iou.ospi.dma_src); - sysbus_realize(sbd, &error_fatal); + object_property_set_link(OBJECT(dma_src), "stream-connected-dma", + OBJECT(dma_dst), &error_abort); =20 - memory_region_add_subregion(&s->mr_ps, MM_PMC_OSPI_DMA_SRC, + sbd =3D SYS_BUS_DEVICE(dma_src); + sysbus_realize_and_unref(sbd, &error_fatal); + + memory_region_add_subregion(&s->mr_ps, map->dma_src, sysbus_mmio_get_region(sbd, 0)); =20 /* Realize the OSPI */ - object_property_set_link(OBJECT(&s->pmc.iou.ospi.ospi), "dma-src", - OBJECT(&s->pmc.iou.ospi.dma_src), &error_abor= t); + object_property_set_link(OBJECT(dev), "dma-src", + OBJECT(dma_src), &error_abort); =20 - sbd =3D SYS_BUS_DEVICE(&s->pmc.iou.ospi.ospi); - sysbus_realize(sbd, &error_fatal); + sbd =3D SYS_BUS_DEVICE(dev); + sysbus_realize_and_unref(sbd, &error_fatal); =20 - memory_region_add_subregion(&s->mr_ps, MM_PMC_OSPI, + memory_region_add_subregion(&s->mr_ps, map->ctrl, sysbus_mmio_get_region(sbd, 0)); =20 - memory_region_add_subregion(&s->mr_ps, MM_PMC_OSPI_DAC, - &s->pmc.iou.ospi.linear_mr); - - /* ospi_mux_sel */ - ospi_mux_sel =3D qdev_get_gpio_in_named(DEVICE(&s->pmc.iou.ospi.ospi), - "ospi-mux-sel", 0); - qdev_connect_gpio_out_named(DEVICE(&s->pmc.iou.slcr), "ospi-mux-sel", = 0, - ospi_mux_sel); + memory_region_add_subregion(&s->mr_ps, map->dac, + linear_mr); =20 /* OSPI irq */ - object_initialize_child(OBJECT(s), "ospi-irq-orgate", - &s->pmc.iou.ospi.irq_orgate, TYPE_OR_IRQ); - object_property_set_int(OBJECT(&s->pmc.iou.ospi.irq_orgate), - "num-lines", NUM_OSPI_IRQ_LINES, &error_fatal); + orgate =3D create_or_gate(s, OBJECT(dev), "irq-orgate", NUM_OSPI_IRQ_L= INES, + map->irq); =20 - orgate =3D DEVICE(&s->pmc.iou.ospi.irq_orgate); - qdev_realize(orgate, NULL, &error_fatal); + sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(orgate, 0)= ); + sysbus_connect_irq(SYS_BUS_DEVICE(dma_src), 0, qdev_get_gpio_in(orgate= , 1)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma_dst), 0, qdev_get_gpio_in(orgate= , 2)); =20 - sysbus_connect_irq(SYS_BUS_DEVICE(&s->pmc.iou.ospi.ospi), 0, - qdev_get_gpio_in(orgate, 0)); - sysbus_connect_irq(SYS_BUS_DEVICE(&s->pmc.iou.ospi.dma_src), 0, - qdev_get_gpio_in(orgate, 1)); - sysbus_connect_irq(SYS_BUS_DEVICE(&s->pmc.iou.ospi.dma_dst), 0, - qdev_get_gpio_in(orgate, 2)); - - qdev_connect_gpio_out(orgate, 0, pic[VERSAL_OSPI_IRQ]); + return dev; } =20 static void versal_create_cfu(Versal *s, qemu_irq *pic) { SysBusDevice *sbd; @@ -1268,17 +1264,17 @@ static void versal_realize(DeviceState *dev, Error = **errp) for (i =3D 0; i < map->num_usb; i++) { versal_create_usb(s, &map->usb[i]); } =20 versal_create_efuse(s, &map->efuse); + versal_create_ospi(s, &map->ospi); =20 versal_create_pmc_apb_irq_orgate(s, pic); versal_create_rtc(s, pic); versal_create_trng(s, pic); versal_create_bbram(s, pic); versal_create_pmc_iou_slcr(s, pic); - versal_create_ospi(s, pic); versal_create_crl(s, pic); versal_create_cfu(s, pic); versal_map_ddr(s); versal_unimp(s); =20 @@ -1320,10 +1316,34 @@ void versal_efuse_attach_drive(Versal *s, BlockBack= end *blk) } =20 qdev_prop_set_drive(efuse, "drive", blk); } =20 +void versal_ospi_create_flash(Versal *s, int flash_idx, const char *flash_= mdl, + BlockBackend *blk) +{ + BusState *spi_bus; + DeviceState *flash, *ospi; + qemu_irq cs_line; + + ospi =3D DEVICE(versal_get_child(s, "ospi")); + spi_bus =3D qdev_get_child_bus(ospi, "spi0"); + + flash =3D qdev_new(flash_mdl); + + if (blk) { + qdev_prop_set_drive_err(flash, "drive", blk, &error_fatal); + } + qdev_prop_set_uint8(flash, "cs", flash_idx); + qdev_realize_and_unref(flash, spi_bus, &error_fatal); + + cs_line =3D qdev_get_gpio_in_named(flash, SSI_GPIO_CS, 0); + + sysbus_connect_irq(SYS_BUS_DEVICE(ospi), + flash_idx + 1, cs_line); +} + int versal_get_num_can(VersalVersion version) { const VersalMap *map =3D VERSION_TO_MAP[version]; =20 return map->num_canfd; --=20 2.50.1 From nobody Sun Sep 21 20:11:36 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671412; cv=pass; d=zohomail.com; s=zohoarc; b=Rcas7GZOFCdJ+NvI2dpCX3/QAEptu4zaeiCFSPLZseX0OYLzgT3sFpIjTtnJbSi3RDvnjU15xzYQF/Xmfxhx+jz54EymTjCP37oVBYF4zDXrmwGxx86bA89ZkmDzQJ8VEuBNyh8cjQQNeiUGb71Ye5QoiK9VRmrJs13TjLArCz8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671412; 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=Cw8nG9vMwM7PfM3ofoe5KOFyd++8YGJnSVhvg6gjOHI=; b=mJF/WdKd9ZNv9xH3Pf8VwOnQSROAgbd8ESeP8yCF3Xe01EWovLLsBiTZ2n+6LTD85dHSPHNi2Xb7FvXdFoNv+yDht/bTWhyJHebC7mLZIYD7nT+VDBfv0LSH/I3i9b5ivjr4SREnykttJpfspWvaGQSdM7G97Tc7AsVh5MiJw7w= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671412097758.214846438473; Fri, 12 Sep 2025 03:03:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0cW-0006AY-Ek; Fri, 12 Sep 2025 06:03:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cQ-0005s8-Ib; Fri, 12 Sep 2025 06:03:03 -0400 Received: from mail-dm6nam04on2062e.outbound.protection.outlook.com ([2a01:111:f403:2409::62e] helo=NAM04-DM6-obe.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 1ux0cL-0001IL-N9; Fri, 12 Sep 2025 06:03:02 -0400 Received: from DM6PR14CA0072.namprd14.prod.outlook.com (2603:10b6:5:18f::49) by PH7PR12MB5903.namprd12.prod.outlook.com (2603:10b6:510:1d7::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:02:52 +0000 Received: from DS3PEPF000099DC.namprd04.prod.outlook.com (2603:10b6:5:18f:cafe::8c) by DM6PR14CA0072.outlook.office365.com (2603:10b6:5:18f::49) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.18 via Frontend Transport; Fri, 12 Sep 2025 10:02:52 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099DC.mail.protection.outlook.com (10.167.17.198) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:02:52 +0000 Received: from SATLEXMB06.amd.com (10.181.40.147) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:43 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB06.amd.com (10.181.40.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:01:43 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:01:41 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pb7KD31fl0ZN1JQYFoVPrYSLgUqzLnWs+HiRYwIwDB8s+UNFmW96wm9FDUDYHBZjXkoEvjCz8gt040/nuoemayW4SWhM5e2NSZHv1TuKuBZJS+Lsarj4uJX7Q9GtNGmXRo3EhcRDeQYMJmfFlRrsAuLQQGQDMst8QaGMKdA6sfbHHsQQQNZ1O+R4cBvoTsICGCa1T156HcB2nfyZeRIusb5LeGkkRwwmL7t7BuShYQmX6Vh82cpbLnVUj273D9fsN2FdCrGSRrpRWyjhG2XpHjrXyT+LcXdGM7SI9UPzyKJxzf2dFM3mkLIqPsILbQgbapYbFsQf/JnUbdB2AABeJw== 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=Cw8nG9vMwM7PfM3ofoe5KOFyd++8YGJnSVhvg6gjOHI=; b=N9WKgE9x6/ITSxKnLuSDMDl9t15tCbbw2EmyyXOHbsWQp31ygoVsFRFztGkYEluFT3Xr/O5ydRQlxzHhshzreFdZtK9DKhvsL9HMW9PDUZt6NueYgon+CjqdIQuAqKzHEeDUGB7uU5yg9n/hNwG0kqAptJGlN5nOpk8A9A4UShF5HiCmCbBjyZAL8jWbALQPpeOdqdPcx/6bnsy0hot/4DGTvzWDHlnHEMdh0JpywOeA3g7VYdO5srHBmtvMgbRraoKvXNbeYI4xM27wIHaim+RtNEs9hyqxaEfSAjv8DJf1hgpIvnUdwTiXHBf9nZHYDDRsLFkwACSFfKu2upuWdQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Cw8nG9vMwM7PfM3ofoe5KOFyd++8YGJnSVhvg6gjOHI=; b=mvev3F2uFUfZhpCaXXqkMe9Xj4S3Hgq5WheEEUfzrc7sjZ6d3y4A++++NgtY1WCbfQZKY7D56Pwrd73njhN7si+m7klBZG/6zL/Z454m3XRQ4BuIUzih+vMVGp1whQID+RA9SKHosezl3CNtHUBi4jvVqs0nwLe8uCzVLVanuZo= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 12/47] hw/arm/xlnx-versal: VersalMap: add support for OR'ed IRQs Date: Fri, 12 Sep 2025 12:00:21 +0200 Message-ID: <20250912100059.103997-13-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099DC:EE_|PH7PR12MB5903:EE_ X-MS-Office365-Filtering-Correlation-Id: 4d4b1a61-5183-4724-d823-08ddf1e38994 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|376014|36860700013; X-Microsoft-Antispam-Message-Info: =?utf-8?B?cTd6QXBqZ0xvSFp1VGgvQkN0TmZMU3JvMm40YWYrSUo4N0NxRVZxWjBHTHFZ?= =?utf-8?B?MUhuWjhiVDVQZ2J3VmRKOUQ3aG0ySUYyMGhYcmk0VGwzMTBBR2cra2hkb1Nj?= =?utf-8?B?SktMa3JrbjJadjJLeTRrNlJ4dVlXMnM5UXJPS0xaaVhTK1B6eHhGZmZNVWRl?= =?utf-8?B?akM2R1hJWHhyMElwZFJGcUtRQUN0RkMzRTdBS21yTEwyMlMvdHJ2ZTFpSzhU?= =?utf-8?B?a2FQNFJvWkhYaUx5cWxaWHd1dlZCQnZEUWFjblhEYnVwQjBsVjNaQ3ZFR242?= =?utf-8?B?NndrODB5TlNZSjJ3MHlBVGJpQ2VrakRZQ1N1L1pRbHhvMUlzdWxDOWIxTUo1?= =?utf-8?B?dkV2NjRUMi9LOG45NkJTV0pyTmQ5SHBvbTFRaDAwNzAwK01OcnduRXk0V0J3?= =?utf-8?B?VDE5ZUZYYXhsMTRqclArZ1cyR0JwTTJoZnlPdEpnbmdMVzdtK0hZMFpveWhx?= =?utf-8?B?RFI3S0VaS3VIRjlLaTVWdnVsV3FJNCtLdm9JaGNSRFhBUjA1RVFYU3FxeWZs?= =?utf-8?B?Y205YzByd0lBWFRieEZLK1BIK1liQlRybW1MYldVY1NLWEdHODllK0I5b1ky?= =?utf-8?B?QldOaUlhOVFxdWk5ODI4enMxa1JHdG53UXR4bnFDQldOK2NaaFFsK1NKN1BS?= =?utf-8?B?ZWlvV3paU3R3S3pOU1F0L0xEMm5LUVZwNlFwVlg2SXhMUjNrVkJVaDFpL2xi?= =?utf-8?B?SGU4N0d2N1hKUW5scit6ZjZaaVFGR08wN0ppaWtpM0QvMzdwbUZhQ3NkSDFF?= =?utf-8?B?Y3p1K0NNbDBpT2Y1TUZZUTdWYmtDTC80cWZmd1pYcjJDVHc4YnBvSDJUd1RN?= =?utf-8?B?VXVYdmRUalg1LzVvV3hLaE5ta0ZUYzJwaHZBY3NOSkdrUTF6am40eXliMWp2?= =?utf-8?B?ZW03VUlUdS9NOWhwR1k2d0ovT1ZBVkxDajEzUTc2SnVaU3BtUUptSUJVUDlv?= =?utf-8?B?RlBGV0ZQMjhaSi91THJ6V3RMR0QweU5sYUh6c3Y4ZEg3eDh5ZU5acDRYbGti?= =?utf-8?B?UGYvamlqVFNyYmlTNmwzemJTck9ra3pnM01pbmRTcEZ6S29hMW5Hcld5RGVR?= =?utf-8?B?bEZ4d2dHNFJaU09uTW8wTC8xQnY5MWJMVGxVUk1VWitXeTVoSFFZOGZKOFNE?= =?utf-8?B?cmlSNS9yWGYwakFqOEZIUS8wVzMvUXFVMjZtRkNpbWdJRE83dFArSlRVRDZG?= =?utf-8?B?VHUxSG1McEI0NGlHbkFTcnlZb2RGNmsxNnZpN2xYNXNudkUyYXExQ1dhVDcz?= =?utf-8?B?TkZEY0YxRUJnY3daNHpvQW12WVVySmtSdWgvUFhCRzFzSWJwblkxVjRQSnRl?= =?utf-8?B?ZlMwQVptYmZab3FDZndzTUdRRTFwRlBSM2NINGV3YjJTenlRRUNnclM5Ulla?= =?utf-8?B?dVl4WU9iaXpSMWFpRWV1UCtWeWliR1lEUWVsUGR6T3JqMlVGZlYxYzhsK3Ay?= =?utf-8?B?WG4xRTQ4SU14YUFlWDRIZHU2Vmg5eXQ0aFhOMDQ3YWY4T0p2eXJVc2xyb2JQ?= =?utf-8?B?U1ZoZUt5Qmsxc3lySElVc0xmRFU0bUpFV0ttT3BkeVVpNXF4S082V1Njdlc4?= =?utf-8?B?NklwWFdtcklnU1RGOFp5V1VJdnF0SEkzMm5tV1JPZ1htY1JLRkU3ZHM4VkJo?= =?utf-8?B?WDJraVJFSkMrckRTKzJTc1Q5cnJ1cTdaTmw1RlVJZTlIUnBqTDZodEp5MWpy?= =?utf-8?B?N1JQV3picFZEdFd2TkxIdUdQeWJTYlhiTTVHOXJJUjM3NHpsRjJLWU15YVRa?= =?utf-8?B?K1pYSVFmMmxBYko2WUNtTVF4cWQvMVVFbFFLZ1Q5SE9ERVByenR3Zk5idkY4?= =?utf-8?B?TElabWw2NS92TlM2cmNhYnhBT1kzNlMxaXp6MmgwMW44WUxOeHFEQ3NMZFU0?= =?utf-8?B?UzR5WVQrdHMzbTdJQy8zZXQ3RGJ3UDN0M1pTWEtaajFKOG12NVRFWW9ueDI2?= =?utf-8?B?TEh5WFRUaHg1RHJUKy8zTGI0Zk01SlVLaWNLOU5wL3JUYnFWdDFnajNjdTl2?= =?utf-8?B?YkRiemZjRTZrc0hzSmdveWFpL2xsUXN4TzhNQ1QreEJVUHdnUERHQmFWNWtj?= =?utf-8?Q?JyV7iq?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(1800799024)(376014)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:02:52.3784 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4d4b1a61-5183-4724-d823-08ddf1e38994 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099DC.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5903 Received-SPF: permerror client-ip=2a01:111:f403:2409::62e; envelope-from=Luc.Michel@amd.com; helo=NAM04-DM6-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671413289116600 Improve the IRQ index in the VersalMap structure to turn it into a descriptor: - the lower 16 bits still represent the IRQ index - bit 18 is used to indicate a shared IRQ connected to a OR gate - bits 19 to 22 indicate the index on the OR gate. This allows to share an IRQ among multiple devices. An OR gate is created to connect the devices to the actual IRQ pin. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/arm/xlnx-versal.c | 63 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 4a70cb79bf9..ab769f66a72 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -41,10 +41,21 @@ #define GEM_REVISION 0x40070106 =20 #define VERSAL_NUM_PMC_APB_IRQS 18 #define NUM_OSPI_IRQ_LINES 3 =20 +/* + * IRQ descriptor to catch the following cases: + * - Multiple devices can connect to the same IRQ. They are OR'ed togeth= er. + */ +FIELD(VERSAL_IRQ, IRQ, 0, 16) +FIELD(VERSAL_IRQ, ORED, 18, 1) +FIELD(VERSAL_IRQ, OR_IDX, 19, 4) /* input index on the IRQ OR gate */ + +#define OR_IRQ(irq, or_idx) \ + (R_VERSAL_IRQ_ORED_MASK | ((or_idx) << R_VERSAL_IRQ_OR_IDX_SHIFT) | (i= rq)) + typedef struct VersalSimplePeriphMap { uint64_t addr; int irq; } VersalSimplePeriphMap; =20 @@ -172,13 +183,57 @@ static inline Object *versal_get_child_idx(Versal *s,= const char *child, g_autofree char *n =3D g_strdup_printf("%s[%zu]", child, idx); =20 return versal_get_child(s, n); } =20 +/* + * When the R_VERSAL_IRQ_ORED flag is set on an IRQ descriptor, this funct= ion is + * used to return the corresponding or gate input IRQ. The or gate is crea= ted if + * not already existant. + * + * Or gates are placed under the /soc/irq-or-gates QOM container. + */ +static qemu_irq versal_get_irq_or_gate_in(Versal *s, int irq_idx, + qemu_irq target_irq) +{ + Object *container =3D versal_get_child(s, "irq-or-gates"); + DeviceState *dev; + g_autofree char *name; + int idx, or_idx; + + idx =3D FIELD_EX32(irq_idx, VERSAL_IRQ, IRQ); + or_idx =3D FIELD_EX32(irq_idx, VERSAL_IRQ, OR_IDX); + + name =3D g_strdup_printf("irq[%d]", idx); + dev =3D DEVICE(object_resolve_path_at(container, name)); + + if (dev =3D=3D NULL) { + dev =3D qdev_new(TYPE_OR_IRQ); + object_property_add_child(container, name, OBJECT(dev)); + qdev_prop_set_uint16(dev, "num-lines", 1 << R_VERSAL_IRQ_OR_IDX_LE= NGTH); + qdev_realize_and_unref(dev, NULL, &error_abort); + qdev_connect_gpio_out(dev, 0, target_irq); + } + + return qdev_get_gpio_in(dev, or_idx); +} + static qemu_irq versal_get_irq(Versal *s, int irq_idx) { - return qdev_get_gpio_in(DEVICE(&s->fpd.apu.gic), irq_idx); + qemu_irq irq; + bool ored; + + ored =3D FIELD_EX32(irq_idx, VERSAL_IRQ, ORED); + + irq =3D qdev_get_gpio_in(DEVICE(&s->fpd.apu.gic), + FIELD_EX32(irq_idx, VERSAL_IRQ, IRQ)); + + if (ored) { + irq =3D versal_get_irq_or_gate_in(s, irq_idx, irq); + } + + return irq; } =20 static void versal_sysbus_connect_irq(Versal *s, SysBusDevice *sbd, int sbd_idx, int irq_idx) { @@ -1215,10 +1270,11 @@ static uint32_t fdt_add_clk_node(Versal *s, const c= har *name, =20 static void versal_realize(DeviceState *dev, Error **errp) { Versal *s =3D XLNX_VERSAL_BASE(dev); qemu_irq pic[XLNX_VERSAL_NR_IRQS]; + Object *container; const VersalMap *map =3D versal_get_map(s); size_t i; =20 if (s->cfg.fdt =3D=3D NULL) { int fdt_size; @@ -1229,10 +1285,15 @@ static void versal_realize(DeviceState *dev, Error = **errp) s->phandle.clk_25mhz =3D fdt_add_clk_node(s, "/clk25", 25 * 1000 * 100= 0); s->phandle.clk_125mhz =3D fdt_add_clk_node(s, "/clk125", 125 * 1000 * = 1000); =20 versal_create_apu_cpus(s); versal_create_apu_gic(s, pic); + + container =3D object_new(TYPE_CONTAINER); + object_property_add_child(OBJECT(s), "irq-or-gates", container); + object_unref(container); + versal_create_rpu_cpus(s); =20 for (i =3D 0; i < map->num_uart; i++) { versal_create_uart(s, &map->uart[i], i); } --=20 2.50.1 From nobody Sun Sep 21 20:11:36 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671509; cv=pass; d=zohomail.com; s=zohoarc; b=TC50NDuYYXT1VkUrPX8mJVm5zl/ZBlr6VppzKxRoyeNmxVd+tgwHeNuF+l5CabWRxn1g+oVsMZlz1cF7i7T9t0NSFfJpXPFeZ8nMBKVCau2Qh197ieb/UML+KenbuRSxtKaZyn4203VnpUztbUW/wLRKydmIqil1odqBRlnyLSw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671509; 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=bhJhJyukg6KiugcAfVREZrJO9aBMKQ9oXhatpPcXTi4=; b=bv4n7rmGZtGEtfxTZo4E/XK7nFcVKnWIHrl5jCGDHZlRY92e+S6+OmLDAstx4fdfuQ7Nzk2C6nRVR+Zcvo3wrXZMAX0E9w2i21sXDUvwAgL5AyUZWHx85JOete6xl0thvKe8NeIGE3zp4m8FQLlhvvIfKrPfJzFxdF6mSj24yQQ= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175767150973498.33125046997804; Fri, 12 Sep 2025 03:05:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0cf-0006iR-91; Fri, 12 Sep 2025 06:03:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cT-0005zy-AT; Fri, 12 Sep 2025 06:03:05 -0400 Received: from mail-dm6nam10on20612.outbound.protection.outlook.com ([2a01:111:f403:2413::612] helo=NAM10-DM6-obe.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 1ux0cN-0001IR-0f; Fri, 12 Sep 2025 06:03:05 -0400 Received: from DM6PR02CA0064.namprd02.prod.outlook.com (2603:10b6:5:177::41) by CH2PR12MB4136.namprd12.prod.outlook.com (2603:10b6:610:a4::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:02:52 +0000 Received: from DS1PEPF0001709D.namprd05.prod.outlook.com (2603:10b6:5:177:cafe::70) by DM6PR02CA0064.outlook.office365.com (2603:10b6:5:177::41) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.18 via Frontend Transport; Fri, 12 Sep 2025 10:02:53 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS1PEPF0001709D.mail.protection.outlook.com (10.167.18.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:02:52 +0000 Received: from satlexmb10.amd.com (10.181.42.219) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:45 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb10.amd.com (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:44 -0700 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:01:43 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Jbq5A4ju/EzLbDWhaUmJqz6/n3Ka+cx0uSbvTEgv1psk17MGy972yiUjK24Su9ReVitv6VxUmMBfKe9MXMRzXEt6YP7PA1RUAzqOQCbNmD027evm124rCK9kPxvlYkhQWO0/6i1vJvwiu92WNeOWNEr8jnoNM7kcYTXdukiadzlVWmoIRY+4WAX9RcooKZCOfMckgen1Q9f0Ndo694LECTMJBbb399VFe387AmAhe74QLQyU+yFHm3mgpIjeQdPGdI11Lxn6BCB6JtUBRdlGrek1PUPOZNYvlWj6fG9BQKJvVoY26mtdpwqVP8PlV76peeXCO4tTRoZZz592oFUnKA== 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=bhJhJyukg6KiugcAfVREZrJO9aBMKQ9oXhatpPcXTi4=; b=WlzlGrTyYEw5QRxcLCUcZ/KQa+GCFJLSUYnL4HYxfmRM1321BcE/QKa5MiG6ZfNU4DBmdxg48oNqCd71gu/0zw/e8VcQESYfLpFEqwT+BKno+PcZ1EYbDoYCVPlUrLsLd6HEVpjllJeL4YQveOUHwynX1huuhw8+aommnUOEqH6iePLFxg0q+Y7KUL4h0PnS8OnP0L+7+ku/w7F9ZgSZrBSL4Y6kkckHixMeOBI45onauj/Z9yS9jak0BPoUOcMpFnRnaumRzz5wFNiOE8yEzb5anIcWep4fHnV5R6Mlk5jzcFRtcQyVogjiL0wOfUnhdCzBJoRgxhj0vtwHX7yCkg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bhJhJyukg6KiugcAfVREZrJO9aBMKQ9oXhatpPcXTi4=; b=D0toL4bl4KkI5JiV9fj6tzvbhEBN3VdlF8JKb0t6YNvh5AY6fmd+pBvyFrTTbSfwZrTTnHDcX0r0UgSGQLlDK88cKMIvyI6TJncOx9naHrI/2ZV/XOlCjL/nSYeZU4cno2LqsZWn7jkgAuuxxAy2I5UdMhHdttF3R6DrAHh7nLU= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 13/47] hw/arm/xlnx-versal: PMC IOU SCLR: refactor creation Date: Fri, 12 Sep 2025 12:00:22 +0200 Message-ID: <20250912100059.103997-14-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0001709D:EE_|CH2PR12MB4136:EE_ X-MS-Office365-Filtering-Correlation-Id: a55ecd11-cf24-4512-f868-08ddf1e389cf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|82310400026|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?UODGpRvnreGrTgcqilB5ZzgR1u6fUvJGFK/J/7fZmodiVqCQObYxTL9cn7kj?= =?us-ascii?Q?/jUNZo4MEhPsB3edikPBtLDQsvk57GNHKrXK5Vv01AUAVHaYNTiIGzzA/b3H?= =?us-ascii?Q?rem2yetk2zAU0wxZ9QN/AWRjhLQoBnPsofpjoZJH+kQoabbn3Nv7Z+ctfS7e?= =?us-ascii?Q?5B8/CJ0jIULYOzDO8vBQ7RK6KSZrSruKLqt5xyOKsTqjJFTPD9LMLQmOHrUU?= =?us-ascii?Q?wiH2Q00xqKI0Dz4OsXbccsVI4zmLFUkGdVslZiOdbKzHDsdIPKBNrrckR7mO?= =?us-ascii?Q?3Lt9Szl8j6EWyNNu8T7effTbaWGJuxL5Oqvlu2F2ukYzMN2IN0F02Qty1/+c?= =?us-ascii?Q?7r1F51mnxZ5bMJ4eD16dpSxdXvtil7M8+6iIU5tSkYh4FR4bAf7hUUEP6bjp?= =?us-ascii?Q?K/7smRFllEYcQjEK5xX92W3Wy5H2IuOfSKQmbzvRgZVjHqp6ny3OfoVasRxq?= =?us-ascii?Q?pRZAP0rWDcM1lWMNyDDqrYCM82a7/crMgcr2TEQh8pRZJGyNg1yd9d9/8NVX?= =?us-ascii?Q?nBFBFgm/DYARmf191V1n48ereshVnXs4h4ndppNiajSv9kQRqysGafBMpdcG?= =?us-ascii?Q?P35vQi73RTf8WjH72kr2SkytdCtmq2/8/kOc4J2a5+fKSzjrYDEU8pM8rbO3?= =?us-ascii?Q?CoXSgCHMrkwPVjnHkIpeaeOsen5p3LMQv0g38NPAILc7XGJfFdPDIVwQ3DYI?= =?us-ascii?Q?7ONWfDWKgOEOnZh4hh2eAYswsvA/gLz9RUGhxoPb6MeLqxkRt4lt/SSulEyq?= =?us-ascii?Q?TCMHJjwlHUX0HaHa5PaoV6IeVtG2skPTNZDDTygu24kvuWrUYVE92Gau7dUT?= =?us-ascii?Q?VmvV1mygze+5kXph8K62wDWT85uHOexCqmGOX2NuMV17i0s/6NI192N5J34U?= =?us-ascii?Q?fyOsOus73J6+lTSictd8cgAp7p+PVy+NRmDCj3eaOLnldTLnvOvWqbix/9b0?= =?us-ascii?Q?wlktg99OAHatCsaEn5n2u9jeGNE6UgPAo2JXeF5lPbyIAzmnY+Vz+dBlYws2?= =?us-ascii?Q?w/OQ56vZA7ZciL/7fbyV8Eh9A7B3V2F+mGVXEhS0mO1KeWyiEQRL95t6YrEP?= =?us-ascii?Q?RxDDISFrgJfoXMNvao0neUM6d05TcflldEXUCvkUns6VOXLSrMxU5mgsB5Ns?= =?us-ascii?Q?LVoZxpBzr854wJg3aJmON2gs2VylCmmSiId32KXOgLI5hedkEFdbPivD0gqc?= =?us-ascii?Q?7ePULF7Ao45xVR9Nm+imtgvh4FgeoQMIyzIvbCA3c8fVRVHXSoFPhLsQIqsN?= =?us-ascii?Q?gEkCZz2qRkeB4U0qfm8qzIK9F8wVb5+teQIklGS7/BljCsFwYkoP4Rw5bny3?= =?us-ascii?Q?/aUbr6HBWTAjebYiXtPayAL8xinGl92VUMgV9zXerQuO8x5R8VXUX5HrvC+g?= =?us-ascii?Q?AKJlXo7x/vtxsWnrDV/JAZBxOyMEN2t5qMLr1ypk9lhpjIvTftqqmpaBUGgO?= =?us-ascii?Q?roRFfeXR9qh3YF/gK1tZbd9Qe0bcysPYZq9Ry+tXlTrIyv5YQl1BHgKv810M?= =?us-ascii?Q?L6WnopOz/lAtJ2NZ8Y9MtzabHGdLpIjznvXV?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(36860700013)(82310400026)(1800799024)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:02:52.7662 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a55ecd11-cf24-4512-f868-08ddf1e389cf X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0001709D.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4136 Received-SPF: permerror client-ip=2a01:111:f403:2413::612; envelope-from=Luc.Michel@amd.com; helo=NAM10-DM6-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671510547116600 Content-Type: text/plain; charset="utf-8" Refactor the PMC IOU SLCR device creation using the VersalMap structure. This is the first user of a shared IRQ using an OR gate. The OSPI controller is reconnected to the SLCR. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/arm/xlnx-versal.h | 5 ---- hw/arm/xlnx-versal.c | 48 +++++++++++++++++++++--------------- 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index b7ef255d6fd..78442e6c2c5 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -19,11 +19,10 @@ #include "hw/intc/arm_gicv3.h" #include "hw/rtc/xlnx-zynqmp-rtc.h" #include "qom/object.h" #include "hw/nvram/xlnx-bbram.h" #include "hw/misc/xlnx-versal-crl.h" -#include "hw/misc/xlnx-versal-pmc-iou-slcr.h" #include "hw/misc/xlnx-versal-trng.h" #include "net/can_emu.h" #include "hw/misc/xlnx-versal-cfu.h" #include "hw/misc/xlnx-versal-cframe-reg.h" #include "target/arm/cpu.h" @@ -82,14 +81,10 @@ struct Versal { XlnxVersalCRL crl; } lpd; =20 /* The Platform Management Controller subsystem. */ struct { - struct { - XlnxVersalPmcIouSlcr slcr; - } iou; - XlnxZynqMPRTC rtc; XlnxVersalTRng trng; XlnxBBRam bbram; XlnxVersalCFUAPB cfu_apb; XlnxVersalCFUFDRO cfu_fdro; diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index ab769f66a72..ed242857efd 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -33,10 +33,11 @@ #include "hw/dma/xlnx-zdma.h" #include "hw/misc/xlnx-versal-xramc.h" #include "hw/usb/xlnx-usb-subsystem.h" #include "hw/nvram/xlnx-versal-efuse.h" #include "hw/ssi/xlnx-versal-ospi.h" +#include "hw/misc/xlnx-versal-pmc-iou-slcr.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") #define GEM_REVISION 0x40070106 =20 @@ -114,10 +115,12 @@ typedef struct VersalMap { uint64_t dac_sz; uint64_t dma_src; uint64_t dma_dst; int irq; } ospi; + + VersalSimplePeriphMap pmc_iou_slcr; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { .uart[0] =3D { 0xff000000, 18 }, .uart[1] =3D { 0xff010000, 19 }, @@ -154,10 +157,12 @@ static const VersalMap VERSAL_MAP =3D { .ctrl =3D 0xf1010000, .dac =3D 0xc0000000, .dac_sz =3D 0x20000000, .dma_src =3D 0xf1011000, .dma_dst =3D 0xf1011800, .irq =3D 124, }, + + .pmc_iou_slcr =3D { 0xf1060000, OR_IRQ(121, 0) }, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { [VERSAL_VER_VERSAL] =3D &VERSAL_MAP, }; @@ -868,25 +873,28 @@ static void versal_create_efuse(Versal *s, sysbus_mmio_get_region(SYS_BUS_DEVICE(cach= e), 0)); versal_sysbus_connect_irq(s, SYS_BUS_DEVICE(ctrl), 0, map->irq); } =20 -static void versal_create_pmc_iou_slcr(Versal *s, qemu_irq *pic) +static DeviceState *versal_create_pmc_iou_slcr(Versal *s, + const VersalSimplePeriphMap= *map) { SysBusDevice *sbd; + DeviceState *dev; =20 - object_initialize_child(OBJECT(s), "versal-pmc-iou-slcr", &s->pmc.iou.= slcr, - TYPE_XILINX_VERSAL_PMC_IOU_SLCR); + dev =3D qdev_new(TYPE_XILINX_VERSAL_PMC_IOU_SLCR); + object_property_add_child(OBJECT(s), "pmc-iou-slcr", OBJECT(dev)); =20 - sbd =3D SYS_BUS_DEVICE(&s->pmc.iou.slcr); - sysbus_realize(sbd, &error_fatal); + sbd =3D SYS_BUS_DEVICE(dev); + sysbus_realize_and_unref(sbd, &error_fatal); =20 - memory_region_add_subregion(&s->mr_ps, MM_PMC_PMC_IOU_SLCR, + memory_region_add_subregion(&s->mr_ps, map->addr, sysbus_mmio_get_region(sbd, 0)); =20 - sysbus_connect_irq(sbd, 0, - qdev_get_gpio_in(DEVICE(&s->pmc.apb_irq_orgate), 2)= ); + versal_sysbus_connect_irq(s, sbd, 0, map->irq); + + return dev; } =20 static DeviceState *versal_create_ospi(Versal *s, const struct VersalOspiMap *map) { @@ -1208,10 +1216,11 @@ static void versal_unimp_irq_parity_imr(void *opaqu= e, int n, int level) "is not yet implemented\n"); } =20 static void versal_unimp(Versal *s) { + DeviceState *slcr; qemu_irq gpio_in; =20 versal_unimp_area(s, "psm", &s->mr_ps, MM_PSM_START, MM_PSM_END - MM_PSM_START); versal_unimp_area(s, "crf", &s->mr_ps, @@ -1230,27 +1239,22 @@ static void versal_unimp(Versal *s) qdev_init_gpio_in_named(DEVICE(s), versal_unimp_qspi_ospi_mux_sel, "qspi-ospi-mux-sel-dummy", 1); qdev_init_gpio_in_named(DEVICE(s), versal_unimp_irq_parity_imr, "irq-parity-imr-dummy", 1); =20 + slcr =3D DEVICE(versal_get_child(s, "pmc-iou-slcr")); gpio_in =3D qdev_get_gpio_in_named(DEVICE(s), "sd-emmc-sel-dummy", 0); - qdev_connect_gpio_out_named(DEVICE(&s->pmc.iou.slcr), "sd-emmc-sel", 0, - gpio_in); + qdev_connect_gpio_out_named(slcr, "sd-emmc-sel", 0, gpio_in); =20 gpio_in =3D qdev_get_gpio_in_named(DEVICE(s), "sd-emmc-sel-dummy", 1); - qdev_connect_gpio_out_named(DEVICE(&s->pmc.iou.slcr), "sd-emmc-sel", 1, - gpio_in); + qdev_connect_gpio_out_named(slcr, "sd-emmc-sel", 1, gpio_in); =20 gpio_in =3D qdev_get_gpio_in_named(DEVICE(s), "qspi-ospi-mux-sel-dummy= ", 0); - qdev_connect_gpio_out_named(DEVICE(&s->pmc.iou.slcr), - "qspi-ospi-mux-sel", 0, - gpio_in); + qdev_connect_gpio_out_named(slcr, "qspi-ospi-mux-sel", 0, gpio_in); =20 gpio_in =3D qdev_get_gpio_in_named(DEVICE(s), "irq-parity-imr-dummy", = 0); - qdev_connect_gpio_out_named(DEVICE(&s->pmc.iou.slcr), - SYSBUS_DEVICE_GPIO_IRQ, 0, - gpio_in); + qdev_connect_gpio_out_named(slcr, SYSBUS_DEVICE_GPIO_IRQ, 0, gpio_in); } =20 static uint32_t fdt_add_clk_node(Versal *s, const char *name, unsigned int freq_hz) { @@ -1269,10 +1273,11 @@ static uint32_t fdt_add_clk_node(Versal *s, const c= har *name, } =20 static void versal_realize(DeviceState *dev, Error **errp) { Versal *s =3D XLNX_VERSAL_BASE(dev); + DeviceState *slcr, *ospi; qemu_irq pic[XLNX_VERSAL_NR_IRQS]; Object *container; const VersalMap *map =3D versal_get_map(s); size_t i; =20 @@ -1325,17 +1330,20 @@ static void versal_realize(DeviceState *dev, Error = **errp) for (i =3D 0; i < map->num_usb; i++) { versal_create_usb(s, &map->usb[i]); } =20 versal_create_efuse(s, &map->efuse); - versal_create_ospi(s, &map->ospi); + ospi =3D versal_create_ospi(s, &map->ospi); + slcr =3D versal_create_pmc_iou_slcr(s, &map->pmc_iou_slcr); =20 + qdev_connect_gpio_out_named(slcr, "ospi-mux-sel", 0, + qdev_get_gpio_in_named(ospi, + "ospi-mux-sel", 0)); versal_create_pmc_apb_irq_orgate(s, pic); versal_create_rtc(s, pic); versal_create_trng(s, pic); versal_create_bbram(s, pic); - versal_create_pmc_iou_slcr(s, pic); versal_create_crl(s, pic); versal_create_cfu(s, pic); versal_map_ddr(s); versal_unimp(s); =20 --=20 2.50.1 From nobody Sun Sep 21 20:11:36 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671505; cv=pass; d=zohomail.com; s=zohoarc; b=X/QZwnMfoFb0kbrIboeVvktvWXBCXbGujK7mBfzrjn8vctDMA4UPsV7Nqz92Zoz5fcvctMwNoFL+HGISdkmCKPAOBYOtCNULfDQKwb0VRgqoAGKPR8tfRoOxcTh51M3lpCGyuDq+9JSmX86nycUS9hEd3yLWsJPIw0ygyNny5BI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671505; 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=6ZbrJOCJ5wDIm3I1jIoN2m3n20KrRWwUkRr8SfR4hS4=; b=RmDmTvvsUO7Ym3+MXU8rEND8tvR7viOrR0rjfub2vdRe58kCCNtdGPB96fDheNt4k9B1JB9xrfwiWNRqewzzV5ad7o5g1AKvLxZLKGt7m30mg1OBn401W9iiaU/yNu/KNZpwLb1ibmgW7SlagfmpqZ9LZeMLGhUeKBaOMECCank= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671505511945.6606243357987; Fri, 12 Sep 2025 03:05:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0cd-0006Yb-LY; Fri, 12 Sep 2025 06:03:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cY-0006KX-BA; Fri, 12 Sep 2025 06:03:10 -0400 Received: from mail-dm6nam11on20602.outbound.protection.outlook.com ([2a01:111:f403:2415::602] helo=NAM11-DM6-obe.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 1ux0cQ-0001JL-3l; Fri, 12 Sep 2025 06:03:09 -0400 Received: from DS7PR05CA0037.namprd05.prod.outlook.com (2603:10b6:8:2f::24) by SJ0PR12MB6927.namprd12.prod.outlook.com (2603:10b6:a03:483::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:02:53 +0000 Received: from DS1PEPF00017096.namprd05.prod.outlook.com (2603:10b6:8:2f:cafe::3e) by DS7PR05CA0037.outlook.office365.com (2603:10b6:8:2f::24) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9137.7 via Frontend Transport; Fri, 12 Sep 2025 10:02:46 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS1PEPF00017096.mail.protection.outlook.com (10.167.18.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:02:53 +0000 Received: from satlexmb10.amd.com (10.181.42.219) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:46 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb10.amd.com (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:46 -0700 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:01:45 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Kz2P6xgQb4UZySer4VlZI3NHDu+srEDu+Vy+anbP9BfevnH25Ppg5atP3oq1+zJzu3ihwSKOcz4Vpo1oRb7ZHD6bmccseLHO58H0WiexLYlhMJFrEVb73Ets131QJeFPz1/pfIbWrSTxtyaq7JaQFOkPBr0vigSFrzJXOmuS4+0n4Qz+V/GYvki04Z3hBUHIAnVkI0lr3jBgnD5pc/SM2dlPRTZPdBnE1U/K10yxE2LMEDcOuiBspnyZgODGYAdFhUwL8UbcCAFr/uSvQrMJtW5Kqj+J9UMwSQfXAHPnNwzfCt2Sss84+clWw0nfSl3NWAajuAsEUlm+K1jQZjsFZQ== 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=6ZbrJOCJ5wDIm3I1jIoN2m3n20KrRWwUkRr8SfR4hS4=; b=pubt/K9nz8NQe5jiT+VeDmB+XjoCRW9Z9usHbkUXgLF6FtGa1z8Vb0lPXtM1DvF/cRq1B9FmlWkR+lNcTrdQPtF/DevzSDlPz65S0HjSH3ZA3upTGTUe6tJMiDgB4PvO2F+iTZWkY6mOyA5aO0B6nui//JczAVZzs5CnGcMl2MNtnWSd25L3Jp6Pr5jrWMpbjWbSSN/Ehj+lcz5cjoO6YgHN8QYub+pplrd+sAg9rIYGVOSqxisNv59l2GS4hTv6rKTLi4hYmNgi2TtEbcYcm2X8Kd77UGPI+rPu5jLxMoIDnTe2ChOnKhLxgENnvsoSsX81fYzRxha/aXj7dkFw+A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6ZbrJOCJ5wDIm3I1jIoN2m3n20KrRWwUkRr8SfR4hS4=; b=z5tr4kuTqfzx90D2nRiXDFfgkMQd6XVACeuovFRktxIXUi39ddKNHpFJ7M1OVFyPMRFhSd3hxw/fXmzmdfZlSwN8tlhLxSaOe/IRu7oe/vAMS70Kt90vtBgo/oeOwEsvP7XfBFdcbfIKK09vN4jtn4khQ8sKvWKMOnMjvuBA7ns= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 14/47] hw/arm/xlnx-versal: bbram: refactor creation Date: Fri, 12 Sep 2025 12:00:23 +0200 Message-ID: <20250912100059.103997-15-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF00017096:EE_|SJ0PR12MB6927:EE_ X-MS-Office365-Filtering-Correlation-Id: 0b89bb81-ec11-4264-4dc8-08ddf1e38a06 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|82310400026|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?lqDlix2jgi7QFYOv6gQKUZvK07F5XamefiO4OsJyoedS1nOXstCRhYi6KkyR?= =?us-ascii?Q?Zj4HWUzy9x39IuWpTfaE0mkRn+sTooQnllCVt7etygS5zVit7hqluwBUyVe9?= =?us-ascii?Q?BYWnhVBBsRLuZmWXx/V6XFCuCMqYD0JpQM5gzLs/1fem2S7ZqUZ3Vf4LXInH?= =?us-ascii?Q?sbE618lreFlBRdxFI16fAu83uhci+1ObEthdcjGRKBKHid00tWXMywr87lQW?= =?us-ascii?Q?3RCGESaCb8L6ORm5YveLFx6pCBgxpjRQOjUg7qi9p01lWlXUMxQN7W/GszOR?= =?us-ascii?Q?GyboXVbosmSb5HijO3hQargludu+vKAhcMW9kqBp8FNyA4mGp5Cs2dVpPjSE?= =?us-ascii?Q?roAM1VSN20C48jAeqndTX8iokGnoTrhzqhMDmg3xIJWDGrc1UILbcYIVWu0v?= =?us-ascii?Q?9yroq25VipaEIKxZjeaIIra32e4+OrKFhl5nFeKNd4cCj+EXvtcLYcCGd0L7?= =?us-ascii?Q?k1HF2Va4WwZLpUKH1auqqB/xpYGAPL1wGOGs8YbseraUJOIw9V+1n8ZRAqXC?= =?us-ascii?Q?ocRXFvvsklaUSQj0LCZKqNS5lUsFYQ5GyLUI4dUEkxVHiPoOQOqcJfqOAxqL?= =?us-ascii?Q?lANB5d7IhPysOax0wmOABjic8k7/c805zbJ9G6sUmd5s/iAA8P8XseXX+0JJ?= =?us-ascii?Q?9fH/HYJpsgJVhfiFf+DB1y4yZxBicnjQYKByEpu+QAck2P3tHUt941TcRFqa?= =?us-ascii?Q?x7Wv0NG0bKTzeoguhSw6oN9ps47SY4OOP62rT1Vk3WUMjt2Ywuo2Ju4XElfA?= =?us-ascii?Q?S2kjna3Fcks48xL7UTpzVJFeEVJlbZuPvLESo73EUk2Y5CUrh5LC+Oh8SOTz?= =?us-ascii?Q?ygCd5RQRYv16UG/or+Jme/yJ7h8VRNZLWfemld/VTCidoE19AdmDiwxbM1fa?= =?us-ascii?Q?Qsl8zQgu50w7R6Y9Te1JrcRAfy62EVRqFC0/OgE59IKz5ErscRTpbc0eDCD3?= =?us-ascii?Q?9VF+Q/c6u0K2uVd5zJ5BJkmxfrdUvaMb9C30XrrRfF4TORMVO8CW6pZ/9ag4?= =?us-ascii?Q?6+SIxsGIbUyU9TSZYickjDu9FYedxG/HHB/BQ4AFFlzDIir3UHscPxr3W0h0?= =?us-ascii?Q?lzhs2KDmua3amCBGw5qqXS6vS+RMUtvEjuyiLm27B0MENXF+nX8b5/8Yrl1N?= =?us-ascii?Q?Dpjyzx3VQ4O/rqjOTR2qyXsBMZSi2tmO7yZIxbMAO6mfxyLnPcBCV3s/CFDK?= =?us-ascii?Q?jSYxEKimk3YdmlRuoB5YWaQtDe8sqoGIlUxvyKYfch7bSsJi1p6lX7C7Jl09?= =?us-ascii?Q?Z1MFSEBTsgZs9FCDbP8YsxUOdpCLUkvX10yikle62l4/u37ykWd44i6Y40sR?= =?us-ascii?Q?UmaM7+dHqQPb6BDgMRJldVg32SRvClI3rlc6UkVQguMc98sgSJu2hWDbFo+G?= =?us-ascii?Q?wPsvvJfizx3yIawZ79jhi8tKYzh0Z3+EzeklPX+LYkZLcTXKWfqEXO84ti3n?= =?us-ascii?Q?HJISZD77rrUmuWKPgzNJTKsL9KJKm/50Bgcxev6jajenuqq+y7KsGXTbRNKh?= =?us-ascii?Q?gpecK1YXpRtz7nCmpa+iJFbuyivs2IZhXMqs?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(36860700013)(82310400026)(1800799024)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:02:53.1204 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0b89bb81-ec11-4264-4dc8-08ddf1e38a06 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF00017096.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB6927 Received-SPF: permerror client-ip=2a01:111:f403:2415::602; envelope-from=Luc.Michel@amd.com; helo=NAM11-DM6-obe.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, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671506467116600 Content-Type: text/plain; charset="utf-8" Refactor the BBRAM device creation using the VersalMap structure. Note that the corresponding FDT node is removed. It does not correspond to any real node in standard Versal DTBs. No matching drivers exist for it. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/arm/xlnx-versal.h | 3 +-- hw/arm/xlnx-versal-virt.c | 27 +++--------------------- hw/arm/xlnx-versal.c | 41 +++++++++++++++++++++++++----------- 3 files changed, 33 insertions(+), 38 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 78442e6c2c5..9adce02f8a9 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -17,11 +17,10 @@ #include "hw/cpu/cluster.h" #include "hw/or-irq.h" #include "hw/intc/arm_gicv3.h" #include "hw/rtc/xlnx-zynqmp-rtc.h" #include "qom/object.h" -#include "hw/nvram/xlnx-bbram.h" #include "hw/misc/xlnx-versal-crl.h" #include "hw/misc/xlnx-versal-trng.h" #include "net/can_emu.h" #include "hw/misc/xlnx-versal-cfu.h" #include "hw/misc/xlnx-versal-cframe-reg.h" @@ -83,11 +82,10 @@ struct Versal { =20 /* The Platform Management Controller subsystem. */ struct { XlnxZynqMPRTC rtc; XlnxVersalTRng trng; - XlnxBBRam bbram; XlnxVersalCFUAPB cfu_apb; XlnxVersalCFUFDRO cfu_fdro; XlnxVersalCFUSFR cfu_sfr; XlnxVersalCFrameReg cframe[XLNX_VERSAL_NR_CFRAME]; XlnxVersalCFrameBcastReg cframe_bcast; @@ -119,10 +117,11 @@ static inline void versal_set_fdt(Versal *s, void *fd= t) s->cfg.fdt =3D fdt; } =20 void versal_sdhci_plug_card(Versal *s, int sd_idx, BlockBackend *blk); void versal_efuse_attach_drive(Versal *s, BlockBackend *blk); +void versal_bbram_attach_drive(Versal *s, BlockBackend *blk); void versal_ospi_create_flash(Versal *s, int flash_idx, const char *flash_= mdl, BlockBackend *blk); =20 int versal_get_num_can(VersalVersion version); int versal_get_num_sdhci(VersalVersion version); diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index a948e24aea0..f766a3e1027 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -170,30 +170,10 @@ static void fdt_add_rtc_node(VersalVirt *s) 2, MM_PMC_RTC, 2, MM_PMC_RTC_SIZE); qemu_fdt_setprop(s->fdt, name, "compatible", compat, sizeof(compat)); g_free(name); } =20 -static void fdt_add_bbram_node(VersalVirt *s) -{ - const char compat[] =3D TYPE_XLNX_BBRAM; - const char interrupt_names[] =3D "bbram-error"; - char *name =3D g_strdup_printf("/bbram@%x", MM_PMC_BBRAM_CTRL); - - qemu_fdt_add_subnode(s->fdt, name); - - qemu_fdt_setprop_cells(s->fdt, name, "interrupts", - GIC_FDT_IRQ_TYPE_SPI, VERSAL_PMC_APB_IRQ, - GIC_FDT_IRQ_FLAGS_LEVEL_HI); - qemu_fdt_setprop(s->fdt, name, "interrupt-names", - interrupt_names, sizeof(interrupt_names)); - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", - 2, MM_PMC_BBRAM_CTRL, - 2, MM_PMC_BBRAM_CTRL_SIZE); - qemu_fdt_setprop(s->fdt, name, "compatible", compat, sizeof(compat)); - g_free(name); -} - static void fdt_nop_memory_nodes(void *fdt, Error **errp) { Error *err =3D NULL; char **node_path; int n =3D 0; @@ -344,19 +324,19 @@ static void create_virtio_regions(VersalVirt *s) qemu_fdt_setprop_string(s->fdt, name, "compatible", "virtio,mmio"); g_free(name); } } =20 -static void bbram_attach_drive(XlnxBBRam *dev) +static void bbram_attach_drive(VersalVirt *s) { DriveInfo *dinfo; BlockBackend *blk; =20 dinfo =3D drive_get_by_index(IF_PFLASH, 0); blk =3D dinfo ? blk_by_legacy_dinfo(dinfo) : NULL; if (blk) { - qdev_prop_set_drive(DEVICE(dev), "drive", blk); + versal_bbram_attach_drive(&s->soc, blk); } } =20 static void efuse_attach_drive(VersalVirt *s) { @@ -445,22 +425,21 @@ static void versal_virt_init(MachineState *machine) create_virtio_regions(s); =20 fdt_add_gic_nodes(s); fdt_add_timer_nodes(s); fdt_add_rtc_node(s); - fdt_add_bbram_node(s); fdt_add_cpu_nodes(s, psci_conduit); fdt_add_clk_node(s, "/old-clk125", 125000000, s->phandle.clk_125Mhz); fdt_add_clk_node(s, "/old-clk25", 25000000, s->phandle.clk_25Mhz); =20 /* Make the APU cpu address space visible to virtio and other * modules unaware of multiple address-spaces. */ memory_region_add_subregion_overlap(get_system_memory(), 0, &s->soc.fpd.apu.mr, 0); =20 /* Attach bbram backend, if given */ - bbram_attach_drive(&s->soc.pmc.bbram); + bbram_attach_drive(s); =20 /* Attach efuse backend, if given */ efuse_attach_drive(s); =20 /* Plug SD cards */ diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index ed242857efd..dcf84f722f4 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -34,10 +34,11 @@ #include "hw/misc/xlnx-versal-xramc.h" #include "hw/usb/xlnx-usb-subsystem.h" #include "hw/nvram/xlnx-versal-efuse.h" #include "hw/ssi/xlnx-versal-ospi.h" #include "hw/misc/xlnx-versal-pmc-iou-slcr.h" +#include "hw/nvram/xlnx-bbram.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") #define GEM_REVISION 0x40070106 =20 @@ -117,10 +118,11 @@ typedef struct VersalMap { uint64_t dma_dst; int irq; } ospi; =20 VersalSimplePeriphMap pmc_iou_slcr; + VersalSimplePeriphMap bbram; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { .uart[0] =3D { 0xff000000, 18 }, .uart[1] =3D { 0xff010000, 19 }, @@ -159,10 +161,11 @@ static const VersalMap VERSAL_MAP =3D { .dma_src =3D 0xf1011000, .dma_dst =3D 0xf1011800, .irq =3D 124, }, =20 .pmc_iou_slcr =3D { 0xf1060000, OR_IRQ(121, 0) }, + .bbram =3D { 0xf11f0000, OR_IRQ(121, 1) }, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { [VERSAL_VER_VERSAL] =3D &VERSAL_MAP, }; @@ -818,26 +821,25 @@ static void versal_create_xrams(Versal *s, const stru= ct VersalXramMap *map) =20 sysbus_connect_irq(sbd, 0, qdev_get_gpio_in(or, i)); } } =20 -static void versal_create_bbram(Versal *s, qemu_irq *pic) +static void versal_create_bbram(Versal *s, + const VersalSimplePeriphMap *map) { + DeviceState *dev; SysBusDevice *sbd; =20 - object_initialize_child_with_props(OBJECT(s), "bbram", &s->pmc.bbram, - sizeof(s->pmc.bbram), TYPE_XLNX_BBR= AM, - &error_fatal, - "crc-zpads", "0", - NULL); - sbd =3D SYS_BUS_DEVICE(&s->pmc.bbram); + dev =3D qdev_new(TYPE_XLNX_BBRAM); + sbd =3D SYS_BUS_DEVICE(dev); =20 - sysbus_realize(sbd, &error_fatal); - memory_region_add_subregion(&s->mr_ps, MM_PMC_BBRAM_CTRL, + object_property_add_child(OBJECT(s), "bbram", OBJECT(dev)); + qdev_prop_set_uint32(dev, "crc-zpads", 0); + sysbus_realize_and_unref(sbd, &error_abort); + memory_region_add_subregion(&s->mr_ps, map->addr, sysbus_mmio_get_region(sbd, 0)); - sysbus_connect_irq(sbd, 0, - qdev_get_gpio_in(DEVICE(&s->pmc.apb_irq_orgate), 1)= ); + versal_sysbus_connect_irq(s, sbd, 0, map->irq); } =20 static void versal_create_efuse(Versal *s, const struct VersalEfuseMap *map) { @@ -1336,14 +1338,16 @@ static void versal_realize(DeviceState *dev, Error = **errp) slcr =3D versal_create_pmc_iou_slcr(s, &map->pmc_iou_slcr); =20 qdev_connect_gpio_out_named(slcr, "ospi-mux-sel", 0, qdev_get_gpio_in_named(ospi, "ospi-mux-sel", 0)); + + versal_create_bbram(s, &map->bbram); + versal_create_pmc_apb_irq_orgate(s, pic); versal_create_rtc(s, pic); versal_create_trng(s, pic); - versal_create_bbram(s, pic); versal_create_crl(s, pic); versal_create_cfu(s, pic); versal_map_ddr(s); versal_unimp(s); =20 @@ -1385,10 +1389,23 @@ void versal_efuse_attach_drive(Versal *s, BlockBack= end *blk) } =20 qdev_prop_set_drive(efuse, "drive", blk); } =20 +void versal_bbram_attach_drive(Versal *s, BlockBackend *blk) +{ + DeviceState *bbram; + + bbram =3D DEVICE(versal_get_child(s, "bbram")); + + if (bbram =3D=3D NULL) { + return; + } + + qdev_prop_set_drive(bbram, "drive", blk); +} + void versal_ospi_create_flash(Versal *s, int flash_idx, const char *flash_= mdl, BlockBackend *blk) { BusState *spi_bus; DeviceState *flash, *ospi; --=20 2.50.1 From nobody Sun Sep 21 20:11:36 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671583; cv=pass; d=zohomail.com; s=zohoarc; b=nmGTLYoGjt5fYOxkFxEkQACRU8G2AMAQ1EJ7JRrCpEv1gEYkSR33qe9Ldqmd5RhVb6rPOC27lp0nAPrO4rHt8s5L1KVqxUulLf9Ga8Pyh37d+omHjZkj5r3IVek7FW8ainouQEZYA8RJK/imP/QjrV8O/7XFK8IvNcY4K9sCo3Y= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671583; 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=zKGT9RU/umwOU2DhGKD0vY48nQyWPMO7c5Ds6Oou8jQ=; b=n2pMuslyHPVtoGKcj4ws+pMFAd0q3PbH1jFJOvEvwPVqtMUlppLKUJ1VEPww2vorVa2A0Pll0ZQBWgWQE9JSOy6JGvAn/C/F2yblttj206SCVN3+8JSCosGwed/kmPRBbM5lYb/Xfhqrc/uHv1MdtCHImtaJ6pU9zZBdJd+NbRg= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671583523343.4052709335307; Fri, 12 Sep 2025 03:06:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0cg-0006l1-HA; Fri, 12 Sep 2025 06:03:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cU-00062H-6O; Fri, 12 Sep 2025 06:03:06 -0400 Received: from mail-mw2nam10on20617.outbound.protection.outlook.com ([2a01:111:f403:2412::617] helo=NAM10-MW2-obe.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 1ux0cN-0001IW-T8; Fri, 12 Sep 2025 06:03:04 -0400 Received: from DM6PR14CA0051.namprd14.prod.outlook.com (2603:10b6:5:18f::28) by BL3PR12MB9050.namprd12.prod.outlook.com (2603:10b6:208:3b9::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:02:53 +0000 Received: from DS3PEPF000099DC.namprd04.prod.outlook.com (2603:10b6:5:18f:cafe::4d) by DM6PR14CA0051.outlook.office365.com (2603:10b6:5:18f::28) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.17 via Frontend Transport; Fri, 12 Sep 2025 10:02:53 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099DC.mail.protection.outlook.com (10.167.17.198) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:02:53 +0000 Received: from SATLEXMB05.amd.com (10.181.40.146) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:48 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB05.amd.com (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:01:48 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:01:46 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fMtDe7eLcKvE0O7iUIojJ05XfW83mnptOx5PYRG+taBAcT6Uo5tuXJrPuTXu7xrtec81k1SxZsWmIKsxtcj8ddMLZCyPvI2nYhn3PbOF5bWrhT0vZk8Bya9J6aSrkvlZ5ZmrVgKBL4TAE1MLkgQBpU5joJPBHhZ6Y3ZO98HFvIDPNsPes/+Kuop25PFQO7Aaqg0+u92nz8kNSHXYRiY/DS6krPqf2YHE8RiAv2961LVXXdDJQbDSFjhcMdpziJpaKrmW/3QuBGsm0SLJdH5aYMbAl5v+iQdg/IaJI1Y9gTDY/x5SGuRKvByhlBOy7w87gOFObGOVwS9cZB+UmUBJNg== 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=zKGT9RU/umwOU2DhGKD0vY48nQyWPMO7c5Ds6Oou8jQ=; b=UmLZmFoqytPb92AwvF4EIeHzFIjGxx0wc6vTwFihyms6ivS+TCaDjj/22FFhVuxKFVlK355tkpolgGSFoAz9lFhZam8byiwOfXLvnVL1Qk8bd6BIWulibtuYs7hDoY1Kf1khHxaj0WEiN0ovu5AmsVGHi//gV4YaI/9yiB3/S5vA7pPqdq3RlTVkzb49N+F5MVLn0J5TrWQOHdMfHaxmxuQ/5y7rh3eNmtKBtkkuPIKvDmKKSsU00+OxXeqNsSG5TS9rPKdTN/Z2BB5K0ucvyJqSYnicGtLqSSuBIL5UQudVvw7zxShzprbggQFHLa8sUsMQQ7l+hqdbhzXvDqe5Zw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zKGT9RU/umwOU2DhGKD0vY48nQyWPMO7c5Ds6Oou8jQ=; b=fOq3dPhulmMe+7zATNXWxMxiLGa9RsG1R8bjD3jlFT0YGjSOKPveUv1pVRSsHB5I89vvM3grkMD9anu4fVtVqLDBhVhs1qf+TSvvmclgrk8v089N2SEijsnZDmkltjBLp921nkPvtTvVQVC2pQsAxlGwMQIMUeVFeUpanuSxbr0= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 15/47] hw/arm/xlnx-versal: trng: refactor creation Date: Fri, 12 Sep 2025 12:00:24 +0200 Message-ID: <20250912100059.103997-16-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: None (SATLEXMB05.amd.com: luc.michel@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099DC:EE_|BL3PR12MB9050:EE_ X-MS-Office365-Filtering-Correlation-Id: b1a3828f-e542-420c-73fb-08ddf1e38a25 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|376014|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?8ilCKrgcHP+IG7HCYHUGdqN+tQ2emKF7uyPnqIh/uxN3XbkslgH1j5o7niab?= =?us-ascii?Q?FNPl/rStjJbeni8DirIEkqIpvBiSkpEJDt3P2krunYdHUKZsAzR0waoAFRpV?= =?us-ascii?Q?iHHs+/k9yuo2T8WuZisKtw8+Y8mFAChx4fC9EU4b0wIl9sjj920xko5Xi4d2?= =?us-ascii?Q?zjfPJCcSj1p0cZI19RBcARt2dxWPbBY+CDAisANqo5ycaMSSGJXEHU7hePko?= =?us-ascii?Q?1AUKFSThYcL7AMdsPYeNrq9W2FkVMOTQOho00sg1iIM3elEJ3r/bRH7BpNnm?= =?us-ascii?Q?MWFZJeP10fNaxV7TwgW6XEe2rfyc070YzUeGhNve6Vxq+bBg67rFYLW6UYex?= =?us-ascii?Q?b3w/EUTuO0qyNswlnqt1XoEjeSm70DkhXOKKpdU0nlUC0Pu+surLL0mbXZBp?= =?us-ascii?Q?adXcxp10ZpwZgMpJeCVDiSUQIb/lL/c2IEPcmqrF0BOxoGGSZDMEntd//rDY?= =?us-ascii?Q?SMM1ZTO5vDQxvl8L5YspKXiKHQfp8i94NCyO0P561WUuIANlIu9q2Bb2Igsm?= =?us-ascii?Q?Z1W4wgrh3O6fn+HcxfZooVltTedfWkf1QTccIltCCeYpXHab7JJpLCpLtBS0?= =?us-ascii?Q?TFBFwrddVkAxXwy/NB891UctST4q14cX1+IsLf5joU/FpGwhL8OWzWjjgKlE?= =?us-ascii?Q?hs/1bPxFckQW5N3IqlF3qcZuls6+su74TCsfZuKGeZuPRhHlN+jNJVG0COey?= =?us-ascii?Q?ZsTvibv1EAHkjHgswcVls75xovdwSmmoV7WWPmR+EzuOzpG0ACsXVjdmC0uO?= =?us-ascii?Q?FthnICAzW8etZShz3ovlcpdzlnizndBq05OdjqN+yFTu0FioX6aU0XcBaNP2?= =?us-ascii?Q?8Y0Xt0sH6m7OC77X/iSK6sUcV1ckbxCqmgtJ/CVLC/wsj6DmPVaQ2GuWEcDX?= =?us-ascii?Q?uHTZpYSdVw/mkh0T61W1RtiWWQ8E8W21R1m0wvQEbdcch7sLnwSqTrvrAncj?= =?us-ascii?Q?nAnywYy3VIzj8rlcA9UVErpX6eXjDY3V1bw3vb37nvfMP2hy3auw6K4W94ao?= =?us-ascii?Q?PX5uDO1IkgsaeZFP0ChgEmVAjfKjcVjDXmgOD7xOSXIsK1n36QO/VCulCPep?= =?us-ascii?Q?evlkfQT7+X9FwUFL1KpXx2lzZx058lzd6QhK/KPTqXX3xHKtHQnaOVyw5ThF?= =?us-ascii?Q?qDYgYEJoLKPexiZetek2IL9fTOlNUeN2pdNsIEYk9LkgOTl7pyYMRI0eEaXe?= =?us-ascii?Q?kcAmegre5VTJz2rE3cQ0Jat5Yn/l4vMZbGyJNyJejWPULvbrw5k2cLMq5bxE?= =?us-ascii?Q?ujo1LwMtRkMi3WwtZALYJr9ubWTlzv9SPFguZYEKSfBgi3Dzgibi+08tQOnG?= =?us-ascii?Q?0aGIHzNb915a0BPSYxfDiFM50/88jr8Oe8xTl0AGAZRW5ZMqVMuSuJeHfGlr?= =?us-ascii?Q?jvP5Hj1UGYIfo4JvHEwqs2nUJnMtMvvTAEEdPUZOn/I/fcAW56qSi5I+xYGh?= =?us-ascii?Q?j8KhoMLf1qzISGKotIbYPtaHg5l4qNFNwr5rpM7ugqz0vPZFDGtIYxd8pTUL?= =?us-ascii?Q?SMrHuSMMHNOIPwmFwtidzZKTodlCUn9TwtSz?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(1800799024)(376014)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:02:53.3262 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b1a3828f-e542-420c-73fb-08ddf1e38a25 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099DC.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR12MB9050 Received-SPF: permerror client-ip=2a01:111:f403:2412::617; envelope-from=Luc.Michel@amd.com; helo=NAM10-MW2-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671585460116600 Content-Type: text/plain; charset="utf-8" Refactor the TRNG device creation using the VersalMap structure. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/arm/xlnx-versal.h | 2 -- hw/arm/xlnx-versal.c | 18 ++++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 9adce02f8a9..bba96201d37 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -18,11 +18,10 @@ #include "hw/or-irq.h" #include "hw/intc/arm_gicv3.h" #include "hw/rtc/xlnx-zynqmp-rtc.h" #include "qom/object.h" #include "hw/misc/xlnx-versal-crl.h" -#include "hw/misc/xlnx-versal-trng.h" #include "net/can_emu.h" #include "hw/misc/xlnx-versal-cfu.h" #include "hw/misc/xlnx-versal-cframe-reg.h" #include "target/arm/cpu.h" #include "hw/arm/xlnx-versal-version.h" @@ -81,11 +80,10 @@ struct Versal { } lpd; =20 /* The Platform Management Controller subsystem. */ struct { XlnxZynqMPRTC rtc; - XlnxVersalTRng trng; XlnxVersalCFUAPB cfu_apb; XlnxVersalCFUFDRO cfu_fdro; XlnxVersalCFUSFR cfu_sfr; XlnxVersalCFrameReg cframe[XLNX_VERSAL_NR_CFRAME]; XlnxVersalCFrameBcastReg cframe_bcast; diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index dcf84f722f4..5054f4146f1 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -35,10 +35,11 @@ #include "hw/usb/xlnx-usb-subsystem.h" #include "hw/nvram/xlnx-versal-efuse.h" #include "hw/ssi/xlnx-versal-ospi.h" #include "hw/misc/xlnx-versal-pmc-iou-slcr.h" #include "hw/nvram/xlnx-bbram.h" +#include "hw/misc/xlnx-versal-trng.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") #define GEM_REVISION 0x40070106 =20 @@ -119,10 +120,11 @@ typedef struct VersalMap { int irq; } ospi; =20 VersalSimplePeriphMap pmc_iou_slcr; VersalSimplePeriphMap bbram; + VersalSimplePeriphMap trng; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { .uart[0] =3D { 0xff000000, 18 }, .uart[1] =3D { 0xff010000, 19 }, @@ -162,10 +164,11 @@ static const VersalMap VERSAL_MAP =3D { .irq =3D 124, }, =20 .pmc_iou_slcr =3D { 0xf1060000, OR_IRQ(121, 0) }, .bbram =3D { 0xf11f0000, OR_IRQ(121, 1) }, + .trng =3D { 0xf1230000, 141 }, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { [VERSAL_VER_VERSAL] =3D &VERSAL_MAP, }; @@ -778,23 +781,22 @@ static void versal_create_rtc(Versal *s, qemu_irq *pi= c) */ sysbus_connect_irq(sbd, 1, qdev_get_gpio_in(DEVICE(&s->pmc.apb_irq_orgate), 0)= ); } =20 -static void versal_create_trng(Versal *s, qemu_irq *pic) +static void versal_create_trng(Versal *s, const VersalSimplePeriphMap *map) { SysBusDevice *sbd; MemoryRegion *mr; =20 - object_initialize_child(OBJECT(s), "trng", &s->pmc.trng, - TYPE_XLNX_VERSAL_TRNG); - sbd =3D SYS_BUS_DEVICE(&s->pmc.trng); - sysbus_realize(sbd, &error_fatal); + sbd =3D SYS_BUS_DEVICE(qdev_new(TYPE_XLNX_VERSAL_TRNG)); + object_property_add_child(OBJECT(s), "trng", OBJECT(sbd)); + sysbus_realize_and_unref(sbd, &error_abort); =20 mr =3D sysbus_mmio_get_region(sbd, 0); - memory_region_add_subregion(&s->mr_ps, MM_PMC_TRNG, mr); - sysbus_connect_irq(sbd, 0, pic[VERSAL_TRNG_IRQ]); + memory_region_add_subregion(&s->mr_ps, map->addr, mr); + versal_sysbus_connect_irq(s, sbd, 0, map->irq); } =20 static void versal_create_xrams(Versal *s, const struct VersalXramMap *map) { SysBusDevice *sbd; @@ -1340,14 +1342,14 @@ static void versal_realize(DeviceState *dev, Error = **errp) qdev_connect_gpio_out_named(slcr, "ospi-mux-sel", 0, qdev_get_gpio_in_named(ospi, "ospi-mux-sel", 0)); =20 versal_create_bbram(s, &map->bbram); + versal_create_trng(s, &map->trng); =20 versal_create_pmc_apb_irq_orgate(s, pic); versal_create_rtc(s, pic); - versal_create_trng(s, pic); versal_create_crl(s, pic); versal_create_cfu(s, pic); versal_map_ddr(s); versal_unimp(s); =20 --=20 2.50.1 From nobody Sun Sep 21 20:11:36 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671422; cv=pass; d=zohomail.com; s=zohoarc; b=Xmicdtx05z44hMwe94VXkuZl/lc9zLDulIis/lPLOlFlNA7exGdNmijO5hBMn1IbYip1b5u+G651v0smDAF+g3WynHmyNWYJINYYjDm/TgBf3Ybf0/WJLECUu1LjyJwPF/rBuhPsUQgBs//edo/730+8xaBI3sFO3mjyt3B+sas= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671422; 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=XdK4djylWJtOyWU9sVPMd58hL6JoBk2qhvRM8X24ZYA=; b=j0jl29rRUYEbR9SdiB3yBFcUxoYYE0oJBJSaQRllzye/8vDFne873V8Xb29z0puiP7Auns4JsF+nOzdU+DnXL5dD5Qsdl2jvCl7sl6uj2PrlonKSQRt4frz6cU/zH+CdEtIQE5hZ9C79MbW5/+k2cg0IWaZ/WyvFXA5lJsZP+9M= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671422349249.90479167370881; Fri, 12 Sep 2025 03:03:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0cd-0006c5-3P; Fri, 12 Sep 2025 06:03:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cY-0006KY-BU; Fri, 12 Sep 2025 06:03:10 -0400 Received: from mail-mw2nam10on2062a.outbound.protection.outlook.com ([2a01:111:f403:2412::62a] helo=NAM10-MW2-obe.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 1ux0cR-0001JY-0R; Fri, 12 Sep 2025 06:03:08 -0400 Received: from DS7PR03CA0123.namprd03.prod.outlook.com (2603:10b6:5:3b4::8) by BL1PR12MB5874.namprd12.prod.outlook.com (2603:10b6:208:396::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:02:54 +0000 Received: from DS3PEPF000099DE.namprd04.prod.outlook.com (2603:10b6:5:3b4:cafe::f5) by DS7PR03CA0123.outlook.office365.com (2603:10b6:5:3b4::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.16 via Frontend Transport; Fri, 12 Sep 2025 10:02:54 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099DE.mail.protection.outlook.com (10.167.17.200) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:02:53 +0000 Received: from satlexmb10.amd.com (10.181.42.219) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:50 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb10.amd.com (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:50 -0700 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:01:48 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mvlbgw5ib79MhkcgnF1+OL2wg1MbpAq7T9TNn8dv/nr5vrwVR2r4eUJftJbraubMdIooLAT7SwDalMSMmy2Ua3Ns67/3fP6nlEs21s5ExS/B2Bh5mdhvb6A7JyMuxQ1wua9o1kQjfGMm6d2+D1t4/snQbnsdNM3Bn+br62h/XqK+FJjWP9vnDRrD+edEjueRkp7NgBXGlDCxvIIaEgNZbDFZdNiUjJUi78acxVpIfJiyjH3gnIZBKgYnMljH3AIU8qFA5Cf31kYqKq3GgdzkLJ5BNYeniNdOsSP6B/RGZFbDR7FyMHVqe7wJoVuNc/0lLE4JBWDIwaFa26bB113foA== 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=XdK4djylWJtOyWU9sVPMd58hL6JoBk2qhvRM8X24ZYA=; b=uS84mpQ+WlH91bVf9oihHQVrRbPfdDZroQ3fkI+/qcwkFYJGpFUqpyN9h7jS5c+HWGLSYnizedkwpopnoTWEYRUlVFNeoZ9ECAr9BRN51WjFpOztdBIn5I36pGpwi1HGI5xJMQ6arBgCEHLAbmJp2cy0rSE2Y2LmyCo8cTQS/2KwyqZYm8zhRjav6/y0X9DusNPOVzSbsIIGqrWyGDLc9cXc+UGaDpGWH+VRCTw8niJN48IEqypJHydiidkz3Pm5gxE0ay3Mdus+819vF77gK3nGtxPzWT+xnDueIfCNraWEiCG8XqknBmSu9wAXw0ko+05loTnxbvA27ti93MvhOw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XdK4djylWJtOyWU9sVPMd58hL6JoBk2qhvRM8X24ZYA=; b=V9/3LWwwY3wzYpiUSTB6L6dscBOHmTJkMXLtUWB8CaSFbmB64G18xRpFvHIfFah73AQMfCxReVsbI5kdFFsYQzPga0UyP7crllqEGUYiuAGosGZge9d+Oapji2daZI8UJbmBT8yFFuC3ieO7s7S8KEzwjNupMW9t6s+BpPpGEqU= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 16/47] hw/arm/xlnx-versal: rtc: refactor creation Date: Fri, 12 Sep 2025 12:00:25 +0200 Message-ID: <20250912100059.103997-17-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099DE:EE_|BL1PR12MB5874:EE_ X-MS-Office365-Filtering-Correlation-Id: c55534f5-d445-4f84-5b4c-08ddf1e38a70 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|1800799024|82310400026|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?pVBKyM9V75GuHf8QAWjBLZ6RRFKWuX1ZY/vwfP4i5i1bzUE1gj0HGo8qqpoU?= =?us-ascii?Q?cL4ib37YV2zsGd9Xmz1J74lIcC5Mz0S68pCW0ReWja8bqm30KcuSdEHqM4qV?= =?us-ascii?Q?5ZiGtY714o7k1XagkrthFojLxOHTE6Qclbtd/0L0U5o7uPE7O//778OG/lsN?= =?us-ascii?Q?2AdhyfvXic5TyxFd8SlgiRpTnvO/vXA//n7s3jPwfk2WF6yR68/WSZFaKaDw?= =?us-ascii?Q?txY0RxZxd3cc7XGnuNK5flFYkloUO2v7Lv3d67g/ymy37roaqYcuNHYkPYSG?= =?us-ascii?Q?7PVQBUFkV+MJDTU7470kpSxMjtITCKSh5n+HGn+I2Z2Ib4xuj1rhurTA5bsC?= =?us-ascii?Q?XVQYEbBSZ5p7jwp/Jem9UrPCwnAfBJ6VunNHlaB9dI3gFS4NosGACpwr1lIz?= =?us-ascii?Q?qy2+3LQgxZGgOPOohZXLr3XoIjRnluOMpO79tWEreLJI4BDyb1MWa0SMJTdH?= =?us-ascii?Q?Kquu025TsTNuWTy9oiLwjts3irdg+QGnXJsrZMlymzMj9o7FHYslHHYaw1NE?= =?us-ascii?Q?aIH6mRfCWeQEU9ofGnQi208W3OZ/9rrapVlW4WUzVABQY0zcgso6fI03xVak?= =?us-ascii?Q?c6l0MV7A/yOEVeNWe6vDhEvFhwCdx3Aofa71wj/vOF5n0M/nO6nxylxPkO9k?= =?us-ascii?Q?gHhfsKrCKie6ExTERGH0AbMLFyl34aEPd8NmNwgwTE6SvvUwPMn5JxXe4jQY?= =?us-ascii?Q?QHlUAECmlU9F64dx9YBcuVGnVPsiYEy6iL9YtzPU0SiYEW6ntXStUsB7VdFI?= =?us-ascii?Q?ahC9T0oszYGWgH9hT6rKRS+kNGOHq408TnH+1zMHyMV/i2OCNSbrjF8Zx64f?= =?us-ascii?Q?Efd4kBumesbwf8fq2K0t34oR/GxDrJowwuxZW1RcDiBfPH7keAa/ZWH8IjWS?= =?us-ascii?Q?5jfZidpBpxaVMh8a4ahMyybRU9rxUsvGpJ+/kTcjW0dhVMUZKfmfEUQHqld3?= =?us-ascii?Q?E3RzZZbeNjPaxPqY43BelVIxvKH8AFx1fAAQ1d1ulYzF1oG06rUHjrzhPaJM?= =?us-ascii?Q?zVsSn1zwY8CEwB79nd943EzAWblQ86bG3klBaSPD/x/R04VYkOTG3JkbnJnX?= =?us-ascii?Q?v02tOgBrPRY52iPREDfeA0hd7LEI6yMwQv/Mx9ZWgsyhRRAbn8rn5q3tstYG?= =?us-ascii?Q?/RBKuaIeRo83H6cq0dj0oNUyk9gLP0bqAd482+tyKnOvV17Qi9GaoTuXGFKB?= =?us-ascii?Q?oapOlEsdVVqtcRISuFMbsn7ZfYWdZNsDmGaayOcUkUsZXsmCnzoDCsgoYQnc?= =?us-ascii?Q?XwQqPBZp8yerZRFZbWYKDWUzXoRNB6P+Q2EawdtFOxg7MExY6yU82IJI+w1k?= =?us-ascii?Q?Iz3oylEk94tUmZqvcRos8hSurfxp3ra/XOohiKU1PPiMvdUFl8gS2FjhAfDo?= =?us-ascii?Q?LZpfb1GyUuQy087MPF97GCbl9xdj6FRUdlnfZ6orQU68qnwJw40vJPEEHB65?= =?us-ascii?Q?vEIgF1Qjb8Moxm5avTFPW/M3dhdBDW3JuaH5ggR/fBpFnOXrg1FsNdJqjNLs?= =?us-ascii?Q?jxkrtTxXnll6weS1Rqfr04BhLqbgcM8EBHW5?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(36860700013)(1800799024)(82310400026)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:02:53.8159 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c55534f5-d445-4f84-5b4c-08ddf1e38a70 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099DE.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5874 Received-SPF: permerror client-ip=2a01:111:f403:2412::62a; envelope-from=Luc.Michel@amd.com; helo=NAM10-MW2-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671423207116600 Content-Type: text/plain; charset="utf-8" Refactor the RTC device creation using the VersalMap structure. The sysbus IRQ output 0 (APB IRQ) is connected instead of the output 1 (addr error IRQ). This does not change the current behaviour since the RTC model does not implement those IRQs anyway. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/arm/xlnx-versal.h | 2 -- hw/arm/xlnx-versal-virt.c | 22 -------------------- hw/arm/xlnx-versal.c | 40 ++++++++++++++++++++++++++++-------- 3 files changed, 31 insertions(+), 33 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index bba96201d37..abdbed15689 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -15,11 +15,10 @@ =20 #include "hw/sysbus.h" #include "hw/cpu/cluster.h" #include "hw/or-irq.h" #include "hw/intc/arm_gicv3.h" -#include "hw/rtc/xlnx-zynqmp-rtc.h" #include "qom/object.h" #include "hw/misc/xlnx-versal-crl.h" #include "net/can_emu.h" #include "hw/misc/xlnx-versal-cfu.h" #include "hw/misc/xlnx-versal-cframe-reg.h" @@ -79,11 +78,10 @@ struct Versal { XlnxVersalCRL crl; } lpd; =20 /* The Platform Management Controller subsystem. */ struct { - XlnxZynqMPRTC rtc; XlnxVersalCFUAPB cfu_apb; XlnxVersalCFUFDRO cfu_fdro; XlnxVersalCFUSFR cfu_sfr; XlnxVersalCFrameReg cframe[XLNX_VERSAL_NR_CFRAME]; XlnxVersalCFrameBcastReg cframe_bcast; diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index f766a3e1027..d96f3433929 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -149,31 +149,10 @@ static void fdt_add_timer_nodes(VersalVirt *s) GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_NS_EL2_IRQ, irqflags); qemu_fdt_setprop(s->fdt, "/timer", "compatible", compat, sizeof(compat)); } =20 -static void fdt_add_rtc_node(VersalVirt *s) -{ - const char compat[] =3D "xlnx,zynqmp-rtc"; - const char interrupt_names[] =3D "alarm\0sec"; - char *name =3D g_strdup_printf("/rtc@%x", MM_PMC_RTC); - - qemu_fdt_add_subnode(s->fdt, name); - - qemu_fdt_setprop_cells(s->fdt, name, "interrupts", - GIC_FDT_IRQ_TYPE_SPI, VERSAL_RTC_ALARM_IRQ, - GIC_FDT_IRQ_FLAGS_LEVEL_HI, - GIC_FDT_IRQ_TYPE_SPI, VERSAL_RTC_SECONDS_IRQ, - GIC_FDT_IRQ_FLAGS_LEVEL_HI); - qemu_fdt_setprop(s->fdt, name, "interrupt-names", - interrupt_names, sizeof(interrupt_names)); - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", - 2, MM_PMC_RTC, 2, MM_PMC_RTC_SIZE); - qemu_fdt_setprop(s->fdt, name, "compatible", compat, sizeof(compat)); - g_free(name); -} - static void fdt_nop_memory_nodes(void *fdt, Error **errp) { Error *err =3D NULL; char **node_path; int n =3D 0; @@ -424,11 +403,10 @@ static void versal_virt_init(MachineState *machine) sysbus_realize(SYS_BUS_DEVICE(&s->soc), &error_fatal); create_virtio_regions(s); =20 fdt_add_gic_nodes(s); fdt_add_timer_nodes(s); - fdt_add_rtc_node(s); fdt_add_cpu_nodes(s, psci_conduit); fdt_add_clk_node(s, "/old-clk125", 125000000, s->phandle.clk_125Mhz); fdt_add_clk_node(s, "/old-clk25", 25000000, s->phandle.clk_25Mhz); =20 /* Make the APU cpu address space visible to virtio and other diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 5054f4146f1..2f1507a1bf3 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -36,10 +36,11 @@ #include "hw/nvram/xlnx-versal-efuse.h" #include "hw/ssi/xlnx-versal-ospi.h" #include "hw/misc/xlnx-versal-pmc-iou-slcr.h" #include "hw/nvram/xlnx-bbram.h" #include "hw/misc/xlnx-versal-trng.h" +#include "hw/rtc/xlnx-zynqmp-rtc.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") #define GEM_REVISION 0x40070106 =20 @@ -121,10 +122,16 @@ typedef struct VersalMap { } ospi; =20 VersalSimplePeriphMap pmc_iou_slcr; VersalSimplePeriphMap bbram; VersalSimplePeriphMap trng; + + struct VersalRtcMap { + VersalSimplePeriphMap map; + int alarm_irq; + int second_irq; + } rtc; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { .uart[0] =3D { 0xff000000, 18 }, .uart[1] =3D { 0xff010000, 19 }, @@ -165,10 +172,14 @@ static const VersalMap VERSAL_MAP =3D { }, =20 .pmc_iou_slcr =3D { 0xf1060000, OR_IRQ(121, 0) }, .bbram =3D { 0xf11f0000, OR_IRQ(121, 1) }, .trng =3D { 0xf1230000, 141 }, + .rtc =3D { + { 0xf12a0000, OR_IRQ(121, 2) }, + .alarm_irq =3D 142, .second_irq =3D 143 + }, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { [VERSAL_VER_VERSAL] =3D &VERSAL_MAP, }; @@ -760,29 +771,40 @@ static void versal_create_pmc_apb_irq_orgate(Versal *= s, qemu_irq *pic) "num-lines", VERSAL_NUM_PMC_APB_IRQS, &error_f= atal); qdev_realize(orgate, NULL, &error_fatal); qdev_connect_gpio_out(orgate, 0, pic[VERSAL_PMC_APB_IRQ]); } =20 -static void versal_create_rtc(Versal *s, qemu_irq *pic) +static void versal_create_rtc(Versal *s, const struct VersalRtcMap *map) { SysBusDevice *sbd; MemoryRegion *mr; + g_autofree char *node; + const char compatible[] =3D "xlnx,zynqmp-rtc"; + const char interrupt_names[] =3D "alarm\0sec"; =20 - object_initialize_child(OBJECT(s), "rtc", &s->pmc.rtc, - TYPE_XLNX_ZYNQMP_RTC); - sbd =3D SYS_BUS_DEVICE(&s->pmc.rtc); - sysbus_realize(sbd, &error_fatal); + sbd =3D SYS_BUS_DEVICE(qdev_new(TYPE_XLNX_ZYNQMP_RTC)); + object_property_add_child(OBJECT(s), "rtc", OBJECT(sbd)); + sysbus_realize_and_unref(sbd, &error_abort); =20 mr =3D sysbus_mmio_get_region(sbd, 0); - memory_region_add_subregion(&s->mr_ps, MM_PMC_RTC, mr); + memory_region_add_subregion(&s->mr_ps, map->map.addr, mr); =20 /* * TODO: Connect the ALARM and SECONDS interrupts once our RTC model * supports them. */ - sysbus_connect_irq(sbd, 1, - qdev_get_gpio_in(DEVICE(&s->pmc.apb_irq_orgate), 0)= ); + versal_sysbus_connect_irq(s, sbd, 0, map->map.irq); + + node =3D versal_fdt_add_simple_subnode(s, "/rtc", map->map.addr, 0x100= 00, + compatible, sizeof(compatible)); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "interrupts", + GIC_FDT_IRQ_TYPE_SPI, map->alarm_irq, + GIC_FDT_IRQ_FLAGS_LEVEL_HI, + GIC_FDT_IRQ_TYPE_SPI, map->second_irq, + GIC_FDT_IRQ_FLAGS_LEVEL_HI); + qemu_fdt_setprop(s->cfg.fdt, node, "interrupt-names", + interrupt_names, sizeof(interrupt_names)); } =20 static void versal_create_trng(Versal *s, const VersalSimplePeriphMap *map) { SysBusDevice *sbd; @@ -1343,13 +1365,13 @@ static void versal_realize(DeviceState *dev, Error = **errp) qdev_get_gpio_in_named(ospi, "ospi-mux-sel", 0)); =20 versal_create_bbram(s, &map->bbram); versal_create_trng(s, &map->trng); + versal_create_rtc(s, &map->rtc); =20 versal_create_pmc_apb_irq_orgate(s, pic); - versal_create_rtc(s, pic); versal_create_crl(s, pic); versal_create_cfu(s, pic); versal_map_ddr(s); versal_unimp(s); =20 --=20 2.50.1 From nobody Sun Sep 21 20:11:36 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757672004; cv=pass; d=zohomail.com; s=zohoarc; b=b8mHLyY4WJiXJ63LyXXA9iUkSBXGgdR6bYleAQC+usNZ+UX6+Mt3IyoGcLvdxebgdHQI28E8JC0Jutv168Qv4SCU2iYgPwWkkN4bzV0cnSaACwFKlqWZbScuM+VzhP2jE9MQNufk1kFCPGJuCjSL5pGvNvASBvT8uu3lqra4DxA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757672004; 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=XRqe0GL3uduT1AJNG7BSAWPV9QkxuXKPYvTn1GjK7AA=; b=nqI4KA/NEbG5EZ0eLi0RUL3iiC1xrH/dDJG+84IFGJYZHlHZqQFEHhHmUBct5zysnPZ25JcUlMqvi7U/cEx1Iz6vPoG2yaiSfWo77Lwai0OVTZfUVpko5kk8Ft117vEapeUb1oStTUfPMiRhLA4PzwgQNus9/IZfUmxN3zlTFsw= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757672004980594.1324786802526; Fri, 12 Sep 2025 03:13:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0cj-0006ui-AS; Fri, 12 Sep 2025 06:03:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cg-0006l5-9Q; Fri, 12 Sep 2025 06:03:18 -0400 Received: from mail-dm6nam11on2060f.outbound.protection.outlook.com ([2a01:111:f403:2415::60f] helo=NAM11-DM6-obe.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 1ux0cU-0001Jy-2A; Fri, 12 Sep 2025 06:03:18 -0400 Received: from DS7PR03CA0060.namprd03.prod.outlook.com (2603:10b6:5:3b5::35) by IA4PR12MB9809.namprd12.prod.outlook.com (2603:10b6:208:54f::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:02:54 +0000 Received: from DS1PEPF0001709A.namprd05.prod.outlook.com (2603:10b6:5:3b5:cafe::24) by DS7PR03CA0060.outlook.office365.com (2603:10b6:5:3b5::35) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.16 via Frontend Transport; Fri, 12 Sep 2025 10:02:53 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS1PEPF0001709A.mail.protection.outlook.com (10.167.18.104) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:02:53 +0000 Received: from SATLEXMB05.amd.com (10.181.40.146) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:52 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB05.amd.com (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:01:51 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:01:50 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rgs9AQQgBwK9a+0YqaOgKCXA9ogPVYACZrEEQBTjuE5Kotm4Dh5rEBVv9S+6QoA5P4w9SuMkFIZo4DHI3KqEPlg1BGr7DcOUNG7oD1oQUaDEsUaXb+7wDVTaf/EGfI4OyPNY8T05MoV1B7d0zwTUHN4F051kSzIfutCByH0w4SejJ3LovDhZqq9rADHaYUyvYAbIiBjm30eS+xG6xVoVbXMRu22fXtmsbRdf64Tg1/CGuKGn/U+J9Y3GiH3s7ymrG0rLl6X2wXv+uwQZJHc1i4oU7dHGZkALSKraNNh4XnDXoFf4QXhLOb4DoC8Jcp8UPYSEEiovYge0jv3lW8viCg== 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=XRqe0GL3uduT1AJNG7BSAWPV9QkxuXKPYvTn1GjK7AA=; b=QQ2cKc84R9pbcuaI0sVyOoW1BRY8Dw8W1juf+yCpdIth6AeMV/xnWkVFUTyrKh5QA0u/SuOP9SmIIe19cQjt7igslxp2/fBEn7Apqgpm1x1g3pH5/gIp6CfVHVskRrCAzhEieSTDBJ7gkUViDcIJknGMnuIG0Dip/A8F8gtNoijIFkTZq90Mja3SAGltVrthdp2c/nl5jgN0eVywjV0mwVCUnFZYs3InGyYSkh3pvMUEJmcf4jvX+yFylrFtMoH/ArwWI/swT3cT1xE1ua7zH3b1W+fO00itVb4kJQy9xGh/WNbMC8VQUEcT6gsjyKAj/bg/S88kHUtmbqMJvgGtEQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XRqe0GL3uduT1AJNG7BSAWPV9QkxuXKPYvTn1GjK7AA=; b=zyykHOVgsp+uaHCUycxAlghkW8oFwUurGgW69uCVAZHG0ibR9F9EoOdT6GZ3AYEGxZViqUQC3hAbLJsq/fdIQCvXK6sWYhPfOB33VuBKCVltK/gaeC1EG3hzni5kkccTnJ11t8iohhkT/9KQPy8eMNbAQzjc8rheiqVwJWyh0OY= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 17/47] hw/arm/xlnx-versal: cfu: refactor creation Date: Fri, 12 Sep 2025 12:00:26 +0200 Message-ID: <20250912100059.103997-18-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: None (SATLEXMB05.amd.com: luc.michel@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0001709A:EE_|IA4PR12MB9809:EE_ X-MS-Office365-Filtering-Correlation-Id: e4c2792e-ca6d-4a03-933f-08ddf1e38a6e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|82310400026|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?qVXKI1FiWjLAEoLr16enTtmGvALVgTKYGUSHizj/Ro/82y/8SJPw2azmMMqJ?= =?us-ascii?Q?0Pv0mAcxg7sefOfMxHf44otzDnYC/qjIKfXP0YvZtJbnFgI48+c+GGAuJj7p?= =?us-ascii?Q?Bs+F3crjbh8sgbV9/oCknultBlXiovzXZLvsDJxOqMbkEHnWVMjEupvD0nQZ?= =?us-ascii?Q?2bxmC2B8IrOnfFQw8QiglpV3LzkD4qIKP5K2n1bUVlrSIu1uqEIKEAmRfWoy?= =?us-ascii?Q?CtWpjytjErSpK1HPKceJssA9NOfHJXTWQvDaqzY0rWU21zC/X4P4PMlqHaAM?= =?us-ascii?Q?PmWESXT/0jMhmOmA6hdH/LK3Y8Jy5SVUQR/ADugW6vU2gfDLsgkCrHPCw2zd?= =?us-ascii?Q?osX2MS/tSixOXlPRZOs8Dod3V6inGf8gEdbsSgtyWHF2Hztm2Ul/YpdGEEMV?= =?us-ascii?Q?zrOH8OOJvnHJzd/FRuE8taTRYWESaHVhNU2QOUGO0ojq3g7MGTY+9QECxIZb?= =?us-ascii?Q?V21+wknRJasmhHzLMep/LXmvy1J2Tb5f1lagx6QujJX4gOYDobRvNf45NKU/?= =?us-ascii?Q?xzms27tCALzInY8BtJI+TucaISeCqD1re/yXnDD4bknkA0LKULFXuGM4QsQt?= =?us-ascii?Q?rtThZDSkpzgfSfaV/tnB61Q/kb0BwzhSSP2bmsXI4oPod6xuE0okj4VYUja/?= =?us-ascii?Q?KPt3FVpXyvsySEhlNBXV38r8wXQwCv4G3kCk3Q5cyaX4cNeb+S+WBquYn0wH?= =?us-ascii?Q?1/oRRsezz/trgMEb2PedhjutIi+G8WCS+o50HCiNHicP8PQ9+3WAeuzdhDtO?= =?us-ascii?Q?86oX02hwTW3Jjq+y0hjAMu3Vkcwk9mPGLKl2ds52rlnTvkZzKWI0bgvF9f7M?= =?us-ascii?Q?fCM89y8UHh+00kPilBpfK6XGv1/pOdd98xMFs/Ij6aYbsUlAI5sa7u8nkb3P?= =?us-ascii?Q?dvWNRBT8iLSegBTYsRzAJ8O8cTLS1MqSBCED1qLCE0e6tDKluuJgrALKflfD?= =?us-ascii?Q?JK2DTQg+HcBOanFVqyaD3Ic9HKQ04mhVqAJeDekJrz2NiIq853GghMHKQ3Zh?= =?us-ascii?Q?Lbe4jyg02yYLkNJMM5G5939Uq9oSegxEFnNegY3ZqdGTyoOI4DENso2IoiUO?= =?us-ascii?Q?MdEuF0xVIUXmwKgroPtt1RVXEKkaY0v6h/GWXSsMc5rvhPaJ+7ngqkmxcwi3?= =?us-ascii?Q?5tX9aN3uckowao8y8eOaDpJahCi+RPDWdCmijM8BKIp+hapkq0nOVOYoKOy6?= =?us-ascii?Q?CGLqfwxV8FY9hp6yNWdUwNnfCDraFVF9+5+1Jlysx+Wn6d41TaRk4TTRi40b?= =?us-ascii?Q?Yx3kZSsGZqfmB8gjt2Ss3BkLJPxVgu+dLuDmUMoVTbPllVT8O1YaXq2Vn8WK?= =?us-ascii?Q?OmrL6/n+MaAuZWE+z9/mNnWAHLJ0JEw2MhKUEHwl7nIPR8XfSrcHclV6BzD4?= =?us-ascii?Q?biSdWqSh/qyFzra56clGI51/qO41cIN+inCRub9kznDaX0bZ3oAvSqhQD2rQ?= =?us-ascii?Q?VMAPzZdd3HW2R1UCucw1qxVAjiJPk+1+Vo2hc0FNC/WOjq3pqlRDwVxUYP0q?= =?us-ascii?Q?94IRyY8xUeVtGa3BFpLBYV2s9ydDBsXGDicP?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(1800799024)(82310400026)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:02:53.8058 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e4c2792e-ca6d-4a03-933f-08ddf1e38a6e X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0001709A.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA4PR12MB9809 Received-SPF: permerror client-ip=2a01:111:f403:2415::60f; envelope-from=Luc.Michel@amd.com; helo=NAM11-DM6-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757672007024116600 Content-Type: text/plain; charset="utf-8" Refactor the CFU device creation using the VersalMap structure. All users of the APB IRQ OR gate have now been converted. The OR gate device can be dropped. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/arm/xlnx-versal.h | 14 -- hw/arm/xlnx-versal.c | 258 ++++++++++++++++------------------- 2 files changed, 115 insertions(+), 157 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index abdbed15689..5a685aea6d4 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -13,17 +13,14 @@ #ifndef XLNX_VERSAL_H #define XLNX_VERSAL_H =20 #include "hw/sysbus.h" #include "hw/cpu/cluster.h" -#include "hw/or-irq.h" #include "hw/intc/arm_gicv3.h" #include "qom/object.h" #include "hw/misc/xlnx-versal-crl.h" #include "net/can_emu.h" -#include "hw/misc/xlnx-versal-cfu.h" -#include "hw/misc/xlnx-versal-cframe-reg.h" #include "target/arm/cpu.h" #include "hw/arm/xlnx-versal-version.h" =20 #define TYPE_XLNX_VERSAL_BASE "xlnx-versal-base" OBJECT_DECLARE_TYPE(Versal, VersalClass, XLNX_VERSAL_BASE) @@ -76,21 +73,10 @@ struct Versal { } rpu; =20 XlnxVersalCRL crl; } lpd; =20 - /* The Platform Management Controller subsystem. */ - struct { - XlnxVersalCFUAPB cfu_apb; - XlnxVersalCFUFDRO cfu_fdro; - XlnxVersalCFUSFR cfu_sfr; - XlnxVersalCFrameReg cframe[XLNX_VERSAL_NR_CFRAME]; - XlnxVersalCFrameBcastReg cframe_bcast; - - OrIRQState apb_irq_orgate; - } pmc; - struct { uint32_t clk_25mhz; uint32_t clk_125mhz; } phandle; =20 diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 2f1507a1bf3..9e96c6541b8 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -37,10 +37,13 @@ #include "hw/ssi/xlnx-versal-ospi.h" #include "hw/misc/xlnx-versal-pmc-iou-slcr.h" #include "hw/nvram/xlnx-bbram.h" #include "hw/misc/xlnx-versal-trng.h" #include "hw/rtc/xlnx-zynqmp-rtc.h" +#include "hw/misc/xlnx-versal-cfu.h" +#include "hw/misc/xlnx-versal-cframe-reg.h" +#include "hw/or-irq.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") #define GEM_REVISION 0x40070106 =20 @@ -128,10 +131,28 @@ typedef struct VersalMap { struct VersalRtcMap { VersalSimplePeriphMap map; int alarm_irq; int second_irq; } rtc; + + struct VersalCfuMap { + uint64_t cframe_base; + uint64_t cframe_stride; + uint64_t cfu_fdro; + uint64_t cframe_bcast_reg; + uint64_t cframe_bcast_fdri; + uint64_t cfu_apb; + uint64_t cfu_stream; + uint64_t cfu_stream_2; + uint64_t cfu_sfr; + int cfu_apb_irq; + int cframe_irq; + size_t num_cframe; + struct VersalCfuCframeCfg { + uint32_t blktype_frames[7]; + } cframe_cfg[15]; + } cfu; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { .uart[0] =3D { 0xff000000, 18 }, .uart[1] =3D { 0xff010000, 19 }, @@ -176,10 +197,26 @@ static const VersalMap VERSAL_MAP =3D { .trng =3D { 0xf1230000, 141 }, .rtc =3D { { 0xf12a0000, OR_IRQ(121, 2) }, .alarm_irq =3D 142, .second_irq =3D 143 }, + + .cfu =3D { + .cframe_base =3D 0xf12d0000, .cframe_stride =3D 0x1000, + .cframe_bcast_reg =3D 0xf12ee000, .cframe_bcast_fdri =3D 0xf12ef00= 0, + .cfu_apb =3D 0xf12b0000, .cfu_sfr =3D 0xf12c1000, + .cfu_stream =3D 0xf12c0000, .cfu_stream_2 =3D 0xf1f80000, + .cfu_fdro =3D 0xf12c2000, + .cfu_apb_irq =3D 120, .cframe_irq =3D OR_IRQ(121, 3), + .num_cframe =3D 15, + .cframe_cfg =3D { + { { 34111, 3528, 12800, 11, 5, 1, 1 } }, + { { 38498, 3841, 15361, 13, 7, 3, 1 } }, + { { 38498, 3841, 15361, 13, 7, 3, 1 } }, + { { 38498, 3841, 15361, 13, 7, 3, 1 } }, + }, + }, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { [VERSAL_VER_VERSAL] =3D &VERSAL_MAP, }; @@ -750,31 +787,10 @@ static void versal_create_sdhci(Versal *s, qemu_fdt_setprop_cells(s->cfg.fdt, node, "interrupts", GIC_FDT_IRQ_TYPE_SPI, map->irq, GIC_FDT_IRQ_FLAGS_LEVEL_HI); } =20 -static void versal_create_pmc_apb_irq_orgate(Versal *s, qemu_irq *pic) -{ - DeviceState *orgate; - - /* - * The VERSAL_PMC_APB_IRQ is an 'or' of the interrupts from the follow= ing - * models: - * - RTC - * - BBRAM - * - PMC SLCR - * - CFRAME regs (input 3 - 17 to the orgate) - */ - object_initialize_child(OBJECT(s), "pmc-apb-irq-orgate", - &s->pmc.apb_irq_orgate, TYPE_OR_IRQ); - orgate =3D DEVICE(&s->pmc.apb_irq_orgate); - object_property_set_int(OBJECT(orgate), - "num-lines", VERSAL_NUM_PMC_APB_IRQS, &error_f= atal); - qdev_realize(orgate, NULL, &error_fatal); - qdev_connect_gpio_out(orgate, 0, pic[VERSAL_PMC_APB_IRQ]); -} - static void versal_create_rtc(Versal *s, const struct VersalRtcMap *map) { SysBusDevice *sbd; MemoryRegion *mr; g_autofree char *node; @@ -989,158 +1005,115 @@ static DeviceState *versal_create_ospi(Versal *s, sysbus_connect_irq(SYS_BUS_DEVICE(dma_dst), 0, qdev_get_gpio_in(orgate= , 2)); =20 return dev; } =20 -static void versal_create_cfu(Versal *s, qemu_irq *pic) +static void versal_create_cfu(Versal *s, const struct VersalCfuMap *map) { SysBusDevice *sbd; - DeviceState *dev; + Object *container; + DeviceState *cfu_fdro, *cfu_apb, *cfu_sfr, *cframe_bcast; + DeviceState *cframe_irq_or; int i; - const struct { + + container =3D object_new(TYPE_CONTAINER); + object_property_add_child(OBJECT(s), "cfu", container); + object_unref(container); + + /* CFU FDRO */ + cfu_fdro =3D qdev_new(TYPE_XLNX_VERSAL_CFU_FDRO); + object_property_add_child(container, "cfu-fdro", OBJECT(cfu_fdro)); + sbd =3D SYS_BUS_DEVICE(cfu_fdro); + + sysbus_realize_and_unref(sbd, &error_fatal); + memory_region_add_subregion(&s->mr_ps, map->cfu_fdro, + sysbus_mmio_get_region(sbd, 0)); + + /* cframe bcast */ + cframe_bcast =3D qdev_new(TYPE_XLNX_VERSAL_CFRAME_BCAST_REG); + object_property_add_child(container, "cframe-bcast", OBJECT(cframe_bca= st)); + + /* CFU APB */ + cfu_apb =3D qdev_new(TYPE_XLNX_VERSAL_CFU_APB); + object_property_add_child(container, "cfu-apb", OBJECT(cfu_apb)); + + /* IRQ or gate for cframes */ + cframe_irq_or =3D qdev_new(TYPE_OR_IRQ); + object_property_add_child(container, "cframe-irq-or-gate", + OBJECT(cframe_irq_or)); + qdev_prop_set_uint16(cframe_irq_or, "num-lines", map->num_cframe); + qdev_realize_and_unref(cframe_irq_or, NULL, &error_abort); + versal_qdev_connect_gpio_out(s, cframe_irq_or, 0, map->cframe_irq); + + /* cframe reg */ + for (i =3D 0; i < map->num_cframe; i++) { uint64_t reg_base; uint64_t fdri_base; - } cframe_addr[] =3D { - { MM_PMC_CFRAME0_REG, MM_PMC_CFRAME0_FDRI }, - { MM_PMC_CFRAME1_REG, MM_PMC_CFRAME1_FDRI }, - { MM_PMC_CFRAME2_REG, MM_PMC_CFRAME2_FDRI }, - { MM_PMC_CFRAME3_REG, MM_PMC_CFRAME3_FDRI }, - { MM_PMC_CFRAME4_REG, MM_PMC_CFRAME4_FDRI }, - { MM_PMC_CFRAME5_REG, MM_PMC_CFRAME5_FDRI }, - { MM_PMC_CFRAME6_REG, MM_PMC_CFRAME6_FDRI }, - { MM_PMC_CFRAME7_REG, MM_PMC_CFRAME7_FDRI }, - { MM_PMC_CFRAME8_REG, MM_PMC_CFRAME8_FDRI }, - { MM_PMC_CFRAME9_REG, MM_PMC_CFRAME9_FDRI }, - { MM_PMC_CFRAME10_REG, MM_PMC_CFRAME10_FDRI }, - { MM_PMC_CFRAME11_REG, MM_PMC_CFRAME11_FDRI }, - { MM_PMC_CFRAME12_REG, MM_PMC_CFRAME12_FDRI }, - { MM_PMC_CFRAME13_REG, MM_PMC_CFRAME13_FDRI }, - { MM_PMC_CFRAME14_REG, MM_PMC_CFRAME14_FDRI }, - }; - const struct { - uint32_t blktype0_frames; - uint32_t blktype1_frames; - uint32_t blktype2_frames; - uint32_t blktype3_frames; - uint32_t blktype4_frames; - uint32_t blktype5_frames; - uint32_t blktype6_frames; - } cframe_cfg[] =3D { - [0] =3D { 34111, 3528, 12800, 11, 5, 1, 1 }, - [1] =3D { 38498, 3841, 15361, 13, 7, 3, 1 }, - [2] =3D { 38498, 3841, 15361, 13, 7, 3, 1 }, - [3] =3D { 38498, 3841, 15361, 13, 7, 3, 1 }, - }; + DeviceState *dev; + g_autofree char *prop_name; + size_t j; =20 - /* CFU FDRO */ - object_initialize_child(OBJECT(s), "cfu-fdro", &s->pmc.cfu_fdro, - TYPE_XLNX_VERSAL_CFU_FDRO); - sbd =3D SYS_BUS_DEVICE(&s->pmc.cfu_fdro); + dev =3D qdev_new(TYPE_XLNX_VERSAL_CFRAME_REG); + object_property_add_child(container, "cframe[*]", OBJECT(dev)); =20 - sysbus_realize(sbd, &error_fatal); - memory_region_add_subregion(&s->mr_ps, MM_PMC_CFU_FDRO, - sysbus_mmio_get_region(sbd, 0)); + sbd =3D SYS_BUS_DEVICE(dev); =20 - /* CFRAME REG */ - for (i =3D 0; i < ARRAY_SIZE(s->pmc.cframe); i++) { - g_autofree char *name =3D g_strdup_printf("cframe%d", i); + for (j =3D 0; j < ARRAY_SIZE(map->cframe_cfg[i].blktype_frames); j= ++) { + g_autofree char *blktype_prop_name; =20 - object_initialize_child(OBJECT(s), name, &s->pmc.cframe[i], - TYPE_XLNX_VERSAL_CFRAME_REG); - - sbd =3D SYS_BUS_DEVICE(&s->pmc.cframe[i]); - dev =3D DEVICE(&s->pmc.cframe[i]); - - if (i < ARRAY_SIZE(cframe_cfg)) { - object_property_set_int(OBJECT(dev), "blktype0-frames", - cframe_cfg[i].blktype0_frames, - &error_abort); - object_property_set_int(OBJECT(dev), "blktype1-frames", - cframe_cfg[i].blktype1_frames, - &error_abort); - object_property_set_int(OBJECT(dev), "blktype2-frames", - cframe_cfg[i].blktype2_frames, - &error_abort); - object_property_set_int(OBJECT(dev), "blktype3-frames", - cframe_cfg[i].blktype3_frames, - &error_abort); - object_property_set_int(OBJECT(dev), "blktype4-frames", - cframe_cfg[i].blktype4_frames, - &error_abort); - object_property_set_int(OBJECT(dev), "blktype5-frames", - cframe_cfg[i].blktype5_frames, - &error_abort); - object_property_set_int(OBJECT(dev), "blktype6-frames", - cframe_cfg[i].blktype6_frames, + blktype_prop_name =3D g_strdup_printf("blktype%zu-frames", j); + object_property_set_int(OBJECT(dev), blktype_prop_name, + map->cframe_cfg[i].blktype_frames[j], &error_abort); } + object_property_set_link(OBJECT(dev), "cfu-fdro", - OBJECT(&s->pmc.cfu_fdro), &error_fatal); + OBJECT(cfu_fdro), &error_abort); =20 - sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_abort); =20 - memory_region_add_subregion(&s->mr_ps, cframe_addr[i].reg_base, + reg_base =3D map->cframe_base + i * map->cframe_stride * 2; + fdri_base =3D reg_base + map->cframe_stride; + memory_region_add_subregion(&s->mr_ps, reg_base, sysbus_mmio_get_region(sbd, 0)); - memory_region_add_subregion(&s->mr_ps, cframe_addr[i].fdri_base, + memory_region_add_subregion(&s->mr_ps, fdri_base, sysbus_mmio_get_region(sbd, 1)); - sysbus_connect_irq(sbd, 0, - qdev_get_gpio_in(DEVICE(&s->pmc.apb_irq_orgate), - 3 + i)); - } - - /* CFRAME BCAST */ - object_initialize_child(OBJECT(s), "cframe_bcast", &s->pmc.cframe_bcas= t, - TYPE_XLNX_VERSAL_CFRAME_BCAST_REG); + sysbus_connect_irq(sbd, 0, qdev_get_gpio_in(cframe_irq_or, i)); =20 - sbd =3D SYS_BUS_DEVICE(&s->pmc.cframe_bcast); - dev =3D DEVICE(&s->pmc.cframe_bcast); - - for (i =3D 0; i < ARRAY_SIZE(s->pmc.cframe); i++) { - g_autofree char *propname =3D g_strdup_printf("cframe%d", i); - object_property_set_link(OBJECT(dev), propname, - OBJECT(&s->pmc.cframe[i]), &error_fatal); + prop_name =3D g_strdup_printf("cframe%d", i); + object_property_set_link(OBJECT(cframe_bcast), prop_name, + OBJECT(dev), &error_abort); + object_property_set_link(OBJECT(cfu_apb), prop_name, + OBJECT(dev), &error_abort); } =20 - sysbus_realize(sbd, &error_fatal); - - memory_region_add_subregion(&s->mr_ps, MM_PMC_CFRAME_BCAST_REG, + sbd =3D SYS_BUS_DEVICE(cframe_bcast); + sysbus_realize_and_unref(sbd, &error_abort); + memory_region_add_subregion(&s->mr_ps, map->cframe_bcast_reg, sysbus_mmio_get_region(sbd, 0)); - memory_region_add_subregion(&s->mr_ps, MM_PMC_CFRAME_BCAST_FDRI, + memory_region_add_subregion(&s->mr_ps, map->cframe_bcast_fdri, sysbus_mmio_get_region(sbd, 1)); =20 - /* CFU APB */ - object_initialize_child(OBJECT(s), "cfu-apb", &s->pmc.cfu_apb, - TYPE_XLNX_VERSAL_CFU_APB); - sbd =3D SYS_BUS_DEVICE(&s->pmc.cfu_apb); - dev =3D DEVICE(&s->pmc.cfu_apb); - - for (i =3D 0; i < ARRAY_SIZE(s->pmc.cframe); i++) { - g_autofree char *propname =3D g_strdup_printf("cframe%d", i); - object_property_set_link(OBJECT(dev), propname, - OBJECT(&s->pmc.cframe[i]), &error_fatal); - } - - sysbus_realize(sbd, &error_fatal); - memory_region_add_subregion(&s->mr_ps, MM_PMC_CFU_APB, + sbd =3D SYS_BUS_DEVICE(cfu_apb); + sysbus_realize_and_unref(sbd, &error_fatal); + memory_region_add_subregion(&s->mr_ps, map->cfu_apb, sysbus_mmio_get_region(sbd, 0)); - memory_region_add_subregion(&s->mr_ps, MM_PMC_CFU_STREAM, + memory_region_add_subregion(&s->mr_ps, map->cfu_stream, sysbus_mmio_get_region(sbd, 1)); - memory_region_add_subregion(&s->mr_ps, MM_PMC_CFU_STREAM_2, + memory_region_add_subregion(&s->mr_ps, map->cfu_stream_2, sysbus_mmio_get_region(sbd, 2)); - sysbus_connect_irq(sbd, 0, pic[VERSAL_CFU_IRQ_0]); + versal_sysbus_connect_irq(s, sbd, 0, map->cfu_apb_irq); =20 /* CFU SFR */ - object_initialize_child(OBJECT(s), "cfu-sfr", &s->pmc.cfu_sfr, - TYPE_XLNX_VERSAL_CFU_SFR); + cfu_sfr =3D qdev_new(TYPE_XLNX_VERSAL_CFU_SFR); + object_property_add_child(container, "cfu-sfr", OBJECT(cfu_sfr)); + sbd =3D SYS_BUS_DEVICE(cfu_sfr); =20 - sbd =3D SYS_BUS_DEVICE(&s->pmc.cfu_sfr); - - object_property_set_link(OBJECT(&s->pmc.cfu_sfr), - "cfu", OBJECT(&s->pmc.cfu_apb), &error_abort); - - sysbus_realize(sbd, &error_fatal); - memory_region_add_subregion(&s->mr_ps, MM_PMC_CFU_SFR, + object_property_set_link(OBJECT(cfu_sfr), + "cfu", OBJECT(cfu_apb), &error_abort); + sysbus_realize_and_unref(sbd, &error_fatal); + memory_region_add_subregion(&s->mr_ps, map->cfu_sfr, sysbus_mmio_get_region(sbd, 0)); } =20 static void versal_create_crl(Versal *s, qemu_irq *pic) { @@ -1366,14 +1339,13 @@ static void versal_realize(DeviceState *dev, Error = **errp) "ospi-mux-sel", 0)); =20 versal_create_bbram(s, &map->bbram); versal_create_trng(s, &map->trng); versal_create_rtc(s, &map->rtc); + versal_create_cfu(s, &map->cfu); =20 - versal_create_pmc_apb_irq_orgate(s, pic); versal_create_crl(s, pic); - versal_create_cfu(s, pic); versal_map_ddr(s); versal_unimp(s); =20 /* Create the On Chip Memory (OCM). */ memory_region_init_ram(&s->lpd.mr_ocm, OBJECT(s), "ocm", --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671624; cv=pass; d=zohomail.com; s=zohoarc; b=JeP1ANKT/a6QFByJBPILt3MmDwq1obRfVUqEOSQ/iNo4aoPOYzpp9M3GObw4Hg35OvRLFTNkGUVgcsprXCM95+No8VpEeV4aPXWCXNeayzlO8UswpF17+msm+thXYMQ2ObwsZWEeFXeXZDAXkhJ2bogLacl4MjdNl4wi2udPg3I= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671624; 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=iupsSuxYjctGt1yGelVSdg9rUT5o+j9thWZDSyxhdJY=; b=gCdRDP/w38lO9F5ggum1OrJzLx6R22UH0pA46lHhZJx1CCis3ia3AKe5NEiA+5MBEAZaip91zlr9+nuc44tOJnOS9432/TQDoJ+8IxppxmjIy5dHb0mhj2vJzFYun5rTe3sL7ebKzkQwl9mRMwoE4+kuGrHDROUdYoQURzANZMU= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671624336213.4197539532213; Fri, 12 Sep 2025 03:07:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0cq-0007BU-CK; Fri, 12 Sep 2025 06:03:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cZ-0006P1-Lk; Fri, 12 Sep 2025 06:03:11 -0400 Received: from mail-dm6nam11on20613.outbound.protection.outlook.com ([2a01:111:f403:2415::613] helo=NAM11-DM6-obe.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 1ux0cS-0001J5-AA; Fri, 12 Sep 2025 06:03:11 -0400 Received: from DM6PR02CA0048.namprd02.prod.outlook.com (2603:10b6:5:177::25) by SN7PR12MB8819.namprd12.prod.outlook.com (2603:10b6:806:32a::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:02:54 +0000 Received: from DS1PEPF0001709D.namprd05.prod.outlook.com (2603:10b6:5:177:cafe::79) by DM6PR02CA0048.outlook.office365.com (2603:10b6:5:177::25) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.17 via Frontend Transport; Fri, 12 Sep 2025 10:02:54 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS1PEPF0001709D.mail.protection.outlook.com (10.167.18.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:02:54 +0000 Received: from SATLEXMB05.amd.com (10.181.40.146) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:54 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB05.amd.com (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:01:53 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:01:52 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eU1nn5rJnTb0zW4XIkmLAcR82+2A7oCe7lLdgSgNmRHiafMkCItXNMbERWxK7W8f5A4ypvwDlVXDqwSuWSVlPPIZ1OKw9tDo97jKZMmW9J9zRkl2L1wWlDZR+UIc0+e2tYEILsNDE10h9L9PzmRYnngVKfRoJtYu/qWeRCQfvEiNBCIzFL4VbhdL4474tGUuhQteHzLdP8H2VS1WwBJjlN7bwuA2P9mWW5fCwNikfVjcwUjcD4PjDqdCGoInnnAJMAJtEDsl94o6wZZpsyVTuzjU+WYbqfnpudmL8QdC4+5u7SuuowwDhEZWgxCedw638tvddlgOL44yV6umAG0Ecg== 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=iupsSuxYjctGt1yGelVSdg9rUT5o+j9thWZDSyxhdJY=; b=IFQ/E5Vuhr7/2amyGrQw8l5MHoXUo5ts082BBtazVrvsGI6uUGKJ0fU2NnrG0mWYkY8y/BMLDJzQANzYliP3Eaa64wU0VFP4eEEf4ioEzfixSTXO47UStG5tAJ+yh01A8aWrD6FpKx7FfBfdMQuahVi01JybTsfVWQpHsbkzzTLGqgXgIXOW0/ohQ+Kl7N9v0woqSrW2xKaprA8GpnNu0FUlZDmrALJWFlaDoQ0W4nkdX/DalctXEJFMN3VFRI1P/vqGmJ7qA9nprLekiBDNQpgAnWJ241HPwQz7zRjNcWafMbM8Dqyi4+FfCS6gdgnSBvS0xz1LPmkAA3LkWMlniQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iupsSuxYjctGt1yGelVSdg9rUT5o+j9thWZDSyxhdJY=; b=1pK5kuLWdty1Q9rMlv072h/AZCSaQpEUzmWzeD0pe+fVGoTigqNwAhL2s8rNPr5fa6PF7TQLwx2+UupbTgir/rcMXwxTb/Q7W9wBuljjNumxrJUiwK8ucFGNSeJultQM8CqwTc+MZXlqklZmPfziDJ7QOxiLifqvOKwBRA8LmS4= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 18/47] hw/arm/xlnx-versal: crl: refactor creation Date: Fri, 12 Sep 2025 12:00:27 +0200 Message-ID: <20250912100059.103997-19-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: None (SATLEXMB05.amd.com: luc.michel@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0001709D:EE_|SN7PR12MB8819:EE_ X-MS-Office365-Filtering-Correlation-Id: 734caec6-05ec-41fe-55a0-08ddf1e38a90 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|36860700013|82310400026|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?jXh4pO9Q0Khkp9j4PYGmS2giEl5WZLBCtiWOIh3cfcG6KjQe2HKQovJMRNSu?= =?us-ascii?Q?mTeZVuhfWeLCcNuhZwELJ7u5OFa2OCqwiqKwNrTeuwPkAiSnFbgkUpNZKnfS?= =?us-ascii?Q?UvTO7TK5gX4wW928e6Cr43E3wfvtx7qg1V5cINoXGHZeJNYKiWCER+//yJCR?= =?us-ascii?Q?z0iPsLwkYy2+IPMuiu5A6kl3mtYVVpgi2r9mq+VuZzhP2BeTO78fHXIzI8Bb?= =?us-ascii?Q?eG7n5CqXkRLh88Nn9F7rwqBeeBjnrq7CqDxrA30vf9suumS1+9RcBiZzqyzG?= =?us-ascii?Q?9oKutFT428mjSlmi7JYUfjuAoJI/UdTGQTj4Sikf0wNotnvxa1FgIieDrHlf?= =?us-ascii?Q?vbh7oAgweCmmcJ9/FNJJP4q2Xa8/o0/nRAav6LFPbo3vhF2NoPWVair9B6ac?= =?us-ascii?Q?yNGiEhQl+6fBKLM4asssyuWsEqzfy0w4MR4NoUXooqNbp98YGsguDqjQkfz1?= =?us-ascii?Q?1HDKUTsSda5/R6mp6RF0QA/5ZzCZAlsMzFDeNUgR5AdukwwAKhjiYfK+gd3J?= =?us-ascii?Q?Ybwwtscd1+/EgpepDsCGIfgcRXNQ87BjtdXzdCPxCdce5DcRabBlsMfr3nSS?= =?us-ascii?Q?BtrIUw0hl0qVhDayhKnXpJDX/Hch6WrBAlklZ5DMyJF0AdREqeflgFQSsgKE?= =?us-ascii?Q?b8hHM/XAmgHH8xKIhm6qz/2qFxNr67Am8mNZg9ln77wFCpE0vt/JjeowLIvW?= =?us-ascii?Q?1yOoKm1J7mbFtocd2hEXRRUbmMoDg16qMKTTZOL8DA8IOFvku5aXPsrSfsXv?= =?us-ascii?Q?Bv8n2v7Rda1RJZemWH1GyFwmUm+7+gsV+8XokZ+cudylT0UGiaRgoHuVa6DQ?= =?us-ascii?Q?wmwggRbYGuzGkpIBhYIrEOQKSCPqieb3lX8oKh1dJCUkXfXGZGUuEEPtLeCy?= =?us-ascii?Q?6DzkkOYUaUXMNaDMgce0mwp60yTknFs1hCmflWDKRxCFjfHC3JFwEy8zWK25?= =?us-ascii?Q?Vs8u/UadirHn0GTRLYeU19TvGQmtb37AXYU1VsiTXUuYf1eQgaBPIdhjPxJB?= =?us-ascii?Q?N0/HAlmYf1umKFqZ3p0O+V9dqs6HIQ1Ohv/vQhtTiW3x2moWM53BiQgyZPdA?= =?us-ascii?Q?oaZpBklMW2usiXzlWtFTiMF6RYOXjiEWUs3mTLIuvZLMEIn8KQYw5I0+RTOe?= =?us-ascii?Q?H9umHtnanmCpcRq/7ALuJYc/sAOFJDfM/Muv1JZtYGDRRqk4kf7+so4rEKIL?= =?us-ascii?Q?UO6drSm3/q9jZdTrnZTbs9IpofGg8Tull/f6YY3vn94nhFPHouWaJJIzyRhC?= =?us-ascii?Q?BghuBzN2nTEt+Fd3Em2v4fjPWvIncZ1QBqN8Ik46iX0s7ypLhu1prLgI1mH5?= =?us-ascii?Q?JVunLzkohHDT6UbQ6Kq+IP9y4/ff0S/jVI51fbv7CQv/jBJaTT5F5dwfUM0D?= =?us-ascii?Q?uctxW50sISfeTP1Pg1sfUnldwAZHQR8xBHd4Jkylfl/f7zUJfSQCLIpTHS+N?= =?us-ascii?Q?4Y4rja+/vlOWf+Hwb632zOgqoWVrUdKMvLnZSmvdCnHAE6W4p1YOpCTx1SlW?= =?us-ascii?Q?Y9rc4tfke5U6jv7R/tn/SIKaJwCUIgHZe8CI?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(36860700013)(82310400026)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:02:54.0270 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 734caec6-05ec-41fe-55a0-08ddf1e38a90 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0001709D.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB8819 Received-SPF: permerror client-ip=2a01:111:f403:2415::613; envelope-from=Luc.Michel@amd.com; helo=NAM11-DM6-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671625814116600 Content-Type: text/plain; charset="utf-8" Refactor the CRL device creation using the VersalMap structure. The connections to the RPU CPUs are temporarily removed and will be reintroduced with next refactoring commits. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/arm/xlnx-versal.h | 3 --- hw/arm/xlnx-versal.c | 36 +++++++++++++++++++----------------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 5a685aea6d4..d3ce13e69de 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -15,11 +15,10 @@ =20 #include "hw/sysbus.h" #include "hw/cpu/cluster.h" #include "hw/intc/arm_gicv3.h" #include "qom/object.h" -#include "hw/misc/xlnx-versal-crl.h" #include "net/can_emu.h" #include "target/arm/cpu.h" #include "hw/arm/xlnx-versal-version.h" =20 #define TYPE_XLNX_VERSAL_BASE "xlnx-versal-base" @@ -69,12 +68,10 @@ struct Versal { MemoryRegion mr_ps_alias; =20 CPUClusterState cluster; ARMCPU cpu[XLNX_VERSAL_NR_RCPUS]; } rpu; - - XlnxVersalCRL crl; } lpd; =20 struct { uint32_t clk_25mhz; uint32_t clk_125mhz; diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 9e96c6541b8..e1f93dbb09c 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -40,10 +40,11 @@ #include "hw/misc/xlnx-versal-trng.h" #include "hw/rtc/xlnx-zynqmp-rtc.h" #include "hw/misc/xlnx-versal-cfu.h" #include "hw/misc/xlnx-versal-cframe-reg.h" #include "hw/or-irq.h" +#include "hw/misc/xlnx-versal-crl.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") #define GEM_REVISION 0x40070106 =20 @@ -149,10 +150,12 @@ typedef struct VersalMap { size_t num_cframe; struct VersalCfuCframeCfg { uint32_t blktype_frames[7]; } cframe_cfg[15]; } cfu; + + VersalSimplePeriphMap crl; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { .uart[0] =3D { 0xff000000, 18 }, .uart[1] =3D { 0xff010000, 19 }, @@ -213,10 +216,12 @@ static const VersalMap VERSAL_MAP =3D { { { 38498, 3841, 15361, 13, 7, 3, 1 } }, { { 38498, 3841, 15361, 13, 7, 3, 1 } }, { { 38498, 3841, 15361, 13, 7, 3, 1 } }, }, }, + + .crl =3D { 0xff5e0000, 10 }, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { [VERSAL_VER_VERSAL] =3D &VERSAL_MAP, }; @@ -1113,31 +1118,28 @@ static void versal_create_cfu(Versal *s, const stru= ct VersalCfuMap *map) sysbus_realize_and_unref(sbd, &error_fatal); memory_region_add_subregion(&s->mr_ps, map->cfu_sfr, sysbus_mmio_get_region(sbd, 0)); } =20 -static void versal_create_crl(Versal *s, qemu_irq *pic) +static inline void versal_create_crl(Versal *s) { - SysBusDevice *sbd; - int i; + const VersalMap *map; + const char *crl_class; + DeviceState *dev; =20 - object_initialize_child(OBJECT(s), "crl", &s->lpd.crl, - TYPE_XLNX_VERSAL_CRL); - sbd =3D SYS_BUS_DEVICE(&s->lpd.crl); + map =3D versal_get_map(s); =20 - for (i =3D 0; i < ARRAY_SIZE(s->lpd.rpu.cpu); i++) { - g_autofree gchar *name =3D g_strdup_printf("cpu_r5[%d]", i); + crl_class =3D TYPE_XLNX_VERSAL_CRL; + dev =3D qdev_new(crl_class); + object_property_add_child(OBJECT(s), "crl", OBJECT(dev)); =20 - object_property_set_link(OBJECT(&s->lpd.crl), - name, OBJECT(&s->lpd.rpu.cpu[i]), - &error_abort); - } + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_abort); =20 - sysbus_realize(sbd, &error_fatal); - memory_region_add_subregion(&s->mr_ps, MM_CRL, - sysbus_mmio_get_region(sbd, 0)); - sysbus_connect_irq(sbd, 0, pic[VERSAL_CRL_IRQ]); + memory_region_add_subregion(&s->mr_ps, map->crl.addr, + sysbus_mmio_get_region(SYS_BUS_DEVICE(dev)= , 0)); + + versal_sysbus_connect_irq(s, SYS_BUS_DEVICE(dev), 0, map->crl.irq); } =20 /* This takes the board allocated linear DDR memory and creates aliases * for each split DDR range/aperture on the Versal address map. */ @@ -1340,12 +1342,12 @@ static void versal_realize(DeviceState *dev, Error = **errp) =20 versal_create_bbram(s, &map->bbram); versal_create_trng(s, &map->trng); versal_create_rtc(s, &map->rtc); versal_create_cfu(s, &map->cfu); + versal_create_crl(s); =20 - versal_create_crl(s, pic); versal_map_ddr(s); versal_unimp(s); =20 /* Create the On Chip Memory (OCM). */ memory_region_init_ram(&s->lpd.mr_ocm, OBJECT(s), "ocm", --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671472; cv=pass; d=zohomail.com; s=zohoarc; b=TwDe6Qi9ZoxPXsLePiia0xWMUj/ITsrJZVD6OqxbdpUWJaJ5Cz4WJm38ppL4KX7ZtJI+pLG2wJj1AP79L9E7Mji1MkE8XZ/5VGwChRwh9iXoQzepsFW2txEXr4vYnEnd8+Ja/0iGU9Uk4T8wfyJcTq3YfjKyJ8BF/NtRYQ6/lMw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671472; 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=ds7h21BEEGXM/4NSZSC59n64L+9wPH8mU1Sq/POlW2w=; b=D6MofGQberp0cAue3UEux7cqFDM0Jzluar7/DjqfE45s8d3o2j+Wm47m1NwNsW/UPQ7q5ZGgk6SQwDuck/XKXOgwwpo6cThSqLfrYV29sd4Lc4DxWc3NowF8AAt6X1gw/YgSgSwYqgACMtJuartnOzDqdsJu4L4C9zqiJHO96ac= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671471987994.9937523298087; Fri, 12 Sep 2025 03:04:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0co-00078a-Qy; Fri, 12 Sep 2025 06:03:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0ce-0006cP-3G; Fri, 12 Sep 2025 06:03:16 -0400 Received: from mail-dm3nam02on20630.outbound.protection.outlook.com ([2a01:111:f403:2405::630] helo=NAM02-DM3-obe.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 1ux0cT-0001Ju-U3; Fri, 12 Sep 2025 06:03:14 -0400 Received: from DM6PR03CA0064.namprd03.prod.outlook.com (2603:10b6:5:100::41) by IA0PR12MB7556.namprd12.prod.outlook.com (2603:10b6:208:43c::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:02:54 +0000 Received: from DS3PEPF000099E1.namprd04.prod.outlook.com (2603:10b6:5:100:cafe::a8) by DM6PR03CA0064.outlook.office365.com (2603:10b6:5:100::41) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.17 via Frontend Transport; Fri, 12 Sep 2025 10:02:54 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099E1.mail.protection.outlook.com (10.167.17.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:02:54 +0000 Received: from satlexmb10.amd.com (10.181.42.219) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:55 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb10.amd.com (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:55 -0700 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:01:54 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ob8LLYeyeyb+uT+MZNABdLRq+b+NocLQ86tmePzsGJ308DE9cnMkN4R/xGB5PR2fXc+b+xs5RlYQrBrU7VXH0NjQiwD+cIb2TTap69tyy3LDdJVzqM+MOQEN6zO4wZJJqbkTb9IcuvXpxUgYk65Q+RJ7OLIm5q/kAz5QB6UKFLsk/wGPYEpDGea/NC0Q5b2rx7TZreswTG5BHEk591vXGjWsjIucm8/PpCP5vJI70UKFXugnWycLY1ewbY1SeLB2XqRHQJkJpqsQB5YuTHHGLsADABsA8vRLgyhYGF4u+HRGfqpQ58viy8AidKQYuHYoYbtJ2g9W4qFRONTc8uDA5Q== 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=ds7h21BEEGXM/4NSZSC59n64L+9wPH8mU1Sq/POlW2w=; b=jefxkHhw07DuAdhznOvrXQ2gpg/P1qI3r7bedCYaxZTC7jCWX02YQJJqQNuvM39sZWPAB6Y61edMLG0nf9Xt6eqdqxG5/tildmV6eaPJy4nC/RAbQYs3t8euioDw+Ai3lA+mQjJWvwnnnxxLKIZBJ7OU93SdHQzO+NjaxDG5hX2r4rOGzCmyNLSS+gi7KsvmgsqGMPPJPU8OmGC4U8XIve9XnEfdZD8u8BJ83NJ0yrSbWq2DjHeIp14mbnoW6YqgQN/vbIb2SE69Dv8NDbG2YncdLDbFWCfvvXQlITxaRYNxOfBV5vUBNQE7vHJGhcEQcIV1ZFRJIeEiSxx3rCXY+g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ds7h21BEEGXM/4NSZSC59n64L+9wPH8mU1Sq/POlW2w=; b=KELsGmdyoIpjxW/hLBY7IyzGAhZ4flooRpr1jx3RQ+K/Lof6PjIEQ9PHx7t1/Mobs/0cWmMu5PlPnRRu3GvDMZAO9WrxaWFvEhFt4S5bRz0QJfpvRItgkqu21c0KNCjv0cmgAy4BxQDj4w2EYbd1jXDJ59YNyODxjHiU9ayOs2o= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 19/47] hw/arm/xlnx-versal-virt: virtio: refactor creation Date: Fri, 12 Sep 2025 12:00:28 +0200 Message-ID: <20250912100059.103997-20-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099E1:EE_|IA0PR12MB7556:EE_ X-MS-Office365-Filtering-Correlation-Id: 4bf08da5-ab55-43ef-d450-08ddf1e38aff X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|36860700013|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?YJi+HnsSwvd7Gdk1WrOJU+JKSsg3BAQmwGHhF//ubWvi+xYKxHRE7G3T9qaR?= =?us-ascii?Q?vMvC5+kq9leks7YIdS3fG/0wrUydq9pIbZKNTgtxtUoumpkqyqHa1MUpgh0y?= =?us-ascii?Q?jMG/fRrd6/OJaaUwmiNdDiuwR36zroAWG2L2ne/0w2VjfGFXhELiueExy6wU?= =?us-ascii?Q?X3QwQWtlk43dzjLyh8Wu4ENpicef2a7Yqkg6dHJjMPP5fPcVP7kL+jTP7RBG?= =?us-ascii?Q?jf5UF6kx9oGsEG1BAFpR9NpNf9mNlh+Tg5XRtguq9ZtlKNcRpp2WvmCByZjB?= =?us-ascii?Q?1sstg2LA/LI8n4PnkswLn5oFdxmfR4li5k9JRUZ8Nuzguoxg4/1L2hBA1o31?= =?us-ascii?Q?XJov1iWcUevW4aKDNYxreI80yl/2n1N35aYgWe8VAP/Jm/h0IEz3QZjQNZZD?= =?us-ascii?Q?DcY9nSYtSBy14f5yK5uLhVwLyOzc5LqfQzguScy0u/IYnecD7aGwFLg4QR5d?= =?us-ascii?Q?cu4kLna+jCyqwDM92VvqLoUvV2vsBiBe5wbuPfGW0ZTxlGFOEp1ctnHC0xf5?= =?us-ascii?Q?b+d9/Yc1ccGiTQRNTGGGVcYZ5ptUeBVXJBZgX8PVqx7b3gdeSCXl4/HKcSA1?= =?us-ascii?Q?YoKQGkxN9WiF9tE9Xa1QnN7V8M0/O888/1NWrRToj6YPpxOJeKhcE3+UFRHR?= =?us-ascii?Q?V580rnv+OoBsmVmGN4RoxaykzhKEBFzg+swGJ79a2k0eJppHtsoQ3tKcgLO6?= =?us-ascii?Q?r9R/8xvimkT+MynoL1cdODbT3ly2kiTNrfAaokXUmTNNVCtjBkn0WI0u6iwu?= =?us-ascii?Q?btXKC1OIexi6NPh5eeqKFf4zGxTLoWGz0/Op5D1MRhmIKUM3bmOK84RIqLU0?= =?us-ascii?Q?jC+z8uB8bhGrAapeMS9g99n53PEGYgTNGAzXZO2VRnflqrUCH+9jX9LG/bby?= =?us-ascii?Q?n233BMnGsxL5F0bSNI6lkA0tGCxIXiE5EhS4o/LsoR+g49S9KILZ/lVMkKN5?= =?us-ascii?Q?eZWXvZmpCl2F7yrqOEAKLzP/nLSnpJnGZWA70qt+BpeqSQb858NmdaRswQyD?= =?us-ascii?Q?A7R5aw9rXAs6fO/rJfw20Qp/BiaynkLz0UhiMh9Ro58fox0EtA4ZYmot5weI?= =?us-ascii?Q?Ls1bOE8f/2EzxdziV0ccmNiPO0f4LrMFIl5/v6i8U30rrJRTXeYUy9CdWvTl?= =?us-ascii?Q?NA0oK8UAJxTMS/m3vHFTSQxmzXYXltScxtxUD4kbTHF+0j33A2ytgwrhOiA/?= =?us-ascii?Q?M/uLsod7JdY77TekvWCmavbbs57ItqolDGeOnnnV9Ggpyq3nmyqCOPK4gFyu?= =?us-ascii?Q?arVVJqIIllxYCtaKPX7g8kJWyNOHHzyy5Y3jIdbNeGHHuPxZSlb8aM4kgI+z?= =?us-ascii?Q?DH05TQOtcWXIv+4zL3KmH2QbeHolY+cM9qF7ntEtYQYcxCvu1rOniFm8nlMu?= =?us-ascii?Q?VEaFAQ0OuPWiAsYNrMPIP/HPQVG40izXS78qbEt8t3wPoHJStOWPGxMre8xR?= =?us-ascii?Q?Yl1YlqXQJJOeNg5cqh20Bvn16H0uxDMtRnBtGs+yIYocUAym3RJm+qIviGau?= =?us-ascii?Q?fS8RGIi9sl6rp2ZvEeD214Kikwhy2Z1rvSq/?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(1800799024)(36860700013)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:02:54.7576 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4bf08da5-ab55-43ef-d450-08ddf1e38aff X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099E1.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB7556 Received-SPF: permerror client-ip=2a01:111:f403:2405::630; envelope-from=Luc.Michel@amd.com; helo=NAM02-DM3-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671473815116600 Content-Type: text/plain; charset="utf-8" Refactor the creation of virtio devices. Use the accessors provided by the Versal SoC to retrieve the reserved MMIO and IRQ space. Those are defined in the VersalMap structure. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/arm/xlnx-versal.h | 3 +++ hw/arm/xlnx-versal-virt.c | 31 ++++++++++++------------------- hw/arm/xlnx-versal.c | 26 ++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 19 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index d3ce13e69de..af47acb288f 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -100,10 +100,13 @@ void versal_sdhci_plug_card(Versal *s, int sd_idx, Bl= ockBackend *blk); void versal_efuse_attach_drive(Versal *s, BlockBackend *blk); void versal_bbram_attach_drive(Versal *s, BlockBackend *blk); void versal_ospi_create_flash(Versal *s, int flash_idx, const char *flash_= mdl, BlockBackend *blk); =20 +qemu_irq versal_get_reserved_irq(Versal *s, int idx, int *dtb_idx); +hwaddr versal_get_reserved_mmio_addr(Versal *s); + int versal_get_num_can(VersalVersion version); int versal_get_num_sdhci(VersalVersion version); =20 /* Memory-map and IRQ definitions. Copied a subset from * auto-generated files. */ diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index d96f3433929..b981d012558 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -269,41 +269,34 @@ static void create_virtio_regions(VersalVirt *s) { int virtio_mmio_size =3D 0x200; int i; =20 for (i =3D 0; i < NUM_VIRTIO_TRANSPORT; i++) { - char *name =3D g_strdup_printf("virtio%d", i); - hwaddr base =3D MM_TOP_RSVD + i * virtio_mmio_size; - int irq =3D VERSAL_RSVD_IRQ_FIRST + i; + hwaddr base =3D versal_get_reserved_mmio_addr(&s->soc) + + i * virtio_mmio_size; + g_autofree char *node =3D g_strdup_printf("/virtio_mmio@%" PRIx64,= base); + int dtb_irq; MemoryRegion *mr; DeviceState *dev; qemu_irq pic_irq; =20 - pic_irq =3D qdev_get_gpio_in(DEVICE(&s->soc.fpd.apu.gic), irq); + pic_irq =3D versal_get_reserved_irq(&s->soc, i, &dtb_irq); dev =3D qdev_new("virtio-mmio"); - object_property_add_child(OBJECT(&s->soc), name, OBJECT(dev)); + object_property_add_child(OBJECT(s), "virtio-mmio[*]", OBJECT(dev)= ); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic_irq); mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); memory_region_add_subregion(&s->soc.mr_ps, base, mr); - g_free(name); - } =20 - for (i =3D 0; i < NUM_VIRTIO_TRANSPORT; i++) { - hwaddr base =3D MM_TOP_RSVD + i * virtio_mmio_size; - int irq =3D VERSAL_RSVD_IRQ_FIRST + i; - char *name =3D g_strdup_printf("/virtio_mmio@%" PRIx64, base); - - qemu_fdt_add_subnode(s->fdt, name); - qemu_fdt_setprop(s->fdt, name, "dma-coherent", NULL, 0); - qemu_fdt_setprop_cells(s->fdt, name, "interrupts", - GIC_FDT_IRQ_TYPE_SPI, irq, + qemu_fdt_add_subnode(s->fdt, node); + qemu_fdt_setprop(s->fdt, node, "dma-coherent", NULL, 0); + qemu_fdt_setprop_cells(s->fdt, node, "interrupts", + GIC_FDT_IRQ_TYPE_SPI, dtb_irq, GIC_FDT_IRQ_FLAGS_EDGE_LO_HI); - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", + qemu_fdt_setprop_sized_cells(s->fdt, node, "reg", 2, base, 2, virtio_mmio_size); - qemu_fdt_setprop_string(s->fdt, name, "compatible", "virtio,mmio"); - g_free(name); + qemu_fdt_setprop_string(s->fdt, node, "compatible", "virtio,mmio"); } } =20 static void bbram_attach_drive(VersalVirt *s) { diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index e1f93dbb09c..1e4229c7670 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -152,10 +152,17 @@ typedef struct VersalMap { uint32_t blktype_frames[7]; } cframe_cfg[15]; } cfu; =20 VersalSimplePeriphMap crl; + + /* reserved MMIO/IRQ space that can safely be used for virtio devices = */ + struct VersalReserved { + uint64_t mmio_start; + int irq_start; + int irq_num; + } reserved; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { .uart[0] =3D { 0xff000000, 18 }, .uart[1] =3D { 0xff010000, 19 }, @@ -218,10 +225,12 @@ static const VersalMap VERSAL_MAP =3D { { { 38498, 3841, 15361, 13, 7, 3, 1 } }, }, }, =20 .crl =3D { 0xff5e0000, 10 }, + + .reserved =3D { 0xa0000000, 111, 8 }, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { [VERSAL_VER_VERSAL] =3D &VERSAL_MAP, }; @@ -1424,10 +1433,27 @@ void versal_ospi_create_flash(Versal *s, int flash_= idx, const char *flash_mdl, =20 sysbus_connect_irq(SYS_BUS_DEVICE(ospi), flash_idx + 1, cs_line); } =20 +qemu_irq versal_get_reserved_irq(Versal *s, int idx, int *dtb_idx) +{ + const VersalMap *map =3D versal_get_map(s); + + g_assert(idx < map->reserved.irq_num); + + *dtb_idx =3D map->reserved.irq_start + idx; + return versal_get_irq(s, *dtb_idx); +} + +hwaddr versal_get_reserved_mmio_addr(Versal *s) +{ + const VersalMap *map =3D versal_get_map(s); + + return map->reserved.mmio_start; +} + int versal_get_num_can(VersalVersion version) { const VersalMap *map =3D VERSION_TO_MAP[version]; =20 return map->num_canfd; --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757672045; cv=pass; d=zohomail.com; s=zohoarc; b=cLxiYvn2m3vChAajDENt/k0c22R55RyvrCwkY08tRJNyjWQu+utTij5aKR7kgZ3uFHxqQaB+UmDcBe3YrORHRsU6M5v5tAGrtYaC9Yz6afwdarqW9pZmWSW3uwNDunoyE+eBc9NmkBvJrZX0nFWzNOTgY9D5LIwo+7qM86Sq3O0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757672045; 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=WQ4E9nGbV07zWGO/tHjGPUGTntu9m6Z6SLdhvFXbIb8=; b=fN/Dqg4D0f78QAQ1t2F7HHTdQ1p4E4/3l21wxA9SPPchIJaetWspyiyYP6MIdy3sNu/5kbcg1nVkVrr/M1RqfEcASXEP8u1zqYnqrGJJgEcx2LEo+1s0zrcv2ij43LoCZIcL9Lcdj5Dsv7wquzACN7RxVnys6LTL7v7kF+CpF+A= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757672045507690.918773681112; Fri, 12 Sep 2025 03:14:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0cy-0007Ok-Pr; Fri, 12 Sep 2025 06:03:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cf-0006kg-Q7; Fri, 12 Sep 2025 06:03:17 -0400 Received: from mail-dm6nam11on20619.outbound.protection.outlook.com ([2a01:111:f403:2415::619] helo=NAM11-DM6-obe.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 1ux0cT-0001Jz-Sl; Fri, 12 Sep 2025 06:03:16 -0400 Received: from DS7PR03CA0134.namprd03.prod.outlook.com (2603:10b6:5:3b4::19) by SA1PR12MB9547.namprd12.prod.outlook.com (2603:10b6:806:45a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:02:55 +0000 Received: from DS3PEPF000099DE.namprd04.prod.outlook.com (2603:10b6:5:3b4:cafe::cb) by DS7PR03CA0134.outlook.office365.com (2603:10b6:5:3b4::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.17 via Frontend Transport; Fri, 12 Sep 2025 10:02:55 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099DE.mail.protection.outlook.com (10.167.17.200) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:02:55 +0000 Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:57 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:01:57 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:01:55 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JPrJ2geZuysKonXhriPcov807eAFVoL4uFI9Ln/jmkB9a0HBRhPETw96wkz9UwIpZ9l3Zr8Sa+0q3QsWS3y1YQPW5+WHk13s6cJwYvISQ/2FcF/ynCN56NlUJgSI/rkYeuvLFtdwUMQZ8PmfDIhudlfA90NhaGT/LBIMpGO1yqraZS6vuZuGpbsNcnSDfCEXjVNLbIu+jXBQaXasB8UQ+VI6AxVRNxf09qwGjJRMEzy8oKbRmxgx2bk0bFooyUljktNA1403IGry83gVHOb2NqUyIsjYrAkNfI9+HN2Q4KVE+BRpL3c30vQmHJSxHKwVLLst7XQK3OoAVysZqYjJEQ== 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=WQ4E9nGbV07zWGO/tHjGPUGTntu9m6Z6SLdhvFXbIb8=; b=NuYJeflVsuuTiDonoiQ8nItd6q3anAQUSiYPwWIkTOKLRRhAy9Kv6JTazYYXtFzUCn6kA8972WFE3Ss2KbaXPN1A+pXIQH0XGnWAQejuewYOcYvRjPBFLlle6+F1rXQk0sD7OQ+k5ecKUkL6z9QVSTXreggwbDd8kK3Hr4x96leejtGprnLwXYOqqrvepHDsU084zbPJfwqWU2x4LNXFmMTmTNeNaoVCEw9pMJZBDTEvKhppp/tbXLT6XdgPOBg3tUjTQnDI/rbXthJTgGtUcCyB4hYUWC44sRpGeKKKeNVPMpkB1w0C2HIjxYSCzgt8+HWuUho0Z8NfWrHXjcO3ig== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WQ4E9nGbV07zWGO/tHjGPUGTntu9m6Z6SLdhvFXbIb8=; b=MtKG02oEibyiHF1KIr4Pu0vOYCT5ZxV5ixeoF+/py6lMulPgPcJW6ge/2JVj5ZerT+R3Qs17IDb5Y9egFCHK1uA/DY9vJOrjjV1OtLvrKEc8D+2AM586PgWj0j33X+2ypEZXh0YN40YvUVdYYbOamCll/feaPNOMuGHwYks85mA= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 20/47] hw/arm/xlnx-versal: refactor CPU cluster creation Date: Fri, 12 Sep 2025 12:00:29 +0200 Message-ID: <20250912100059.103997-21-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: None (SATLEXMB04.amd.com: luc.michel@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099DE:EE_|SA1PR12MB9547:EE_ X-MS-Office365-Filtering-Correlation-Id: 617b01ce-5cb0-45f2-52b2-08ddf1e38b44 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|376014|36860700013; X-Microsoft-Antispam-Message-Info: =?utf-8?B?ejVCelJoeHlVZld1V3dEVllQQ09xNDZXQXBZakhLalVKWnhlUHFLbXJ4OU1r?= =?utf-8?B?Z3Y4UHVXWm90alN4UWlXODJWVm4xMTNnekJhVmRYVzdPYzZvUmZUZ0UvcU9i?= =?utf-8?B?SmM4MWRyZEMza0UxSVJRcFp4RmtXbmEvNmZkRDUzV2s4TFZsUjhuYU9aWlJw?= =?utf-8?B?NStoRVNmakl2QkxZREdGdHN0b0FzcU9ETzJVdUNIZ2hRK2YyZjBEalQ1R25C?= =?utf-8?B?MkhnSjRXRkdwakpwdDVrVnJLQ3VhU0Z3ZG5pb1J4MDU1ZlZ6VjJNY1N3M0Fk?= =?utf-8?B?SS94ZWI3MTRMQjhjQ24rWEZjUjdxdEUySWZYcVRnWURtbzR3dlRoeGhJM3My?= =?utf-8?B?UytYRmNLZ3ZNNWR5SnJLOXg1NCtlS1l0MTU2N0pYL2Y4VVZDMUhzYnRlOXdQ?= =?utf-8?B?NTI5NTF1MUhSeUtVZ0VsQ1V4dHgwb2dnOFp0ZnhSV0trek5vYVhjZU4wb25F?= =?utf-8?B?ODR5NUh4UERJQWYxS3NLYUdCMk9xQ0dLZjJRY1h2cWVDZ0lTVlZ6SXpOWUla?= =?utf-8?B?V2FENnhTbU40NkwzRjU2bWJuN0JwdHhvcDhCRmVlcm9DRjdEVGdwSmIzQlVp?= =?utf-8?B?eis3Y2xjRUUrWkRiWVFveVIwRWc4TFRLRjRCVUVCQVJDd2JmdjhPNHBuM0k5?= =?utf-8?B?bHNTZVdvRHNFODVjL0hFYTQ0dFdoeFVFMjdUcDdBdE5XTGQ4NTJNQnZEN2RT?= =?utf-8?B?bDhqODhmSGNwaUxmcWJjWGtVTGtrMWdDdTIyMXFEanRyd1BETExvN0h0azhC?= =?utf-8?B?Myt3d2FOZHk2UDhlNDRBakxRbVZscE9kUENPSVdBTjV2dDF0VXR2OHpzd2NK?= =?utf-8?B?T1JIQ05ocklDeUFYWFA4ay96bjdkc2lmdXNWVGdjbjhIdW9qUnJWQWFtbFhm?= =?utf-8?B?Nm5YTHNlTXNlRDdJUVVLbXFQc1BuVnQvYXFMcVJiRFN4ejBUNCsrMW5jdDFo?= =?utf-8?B?emdJbzNzZy8xOHRKT0FmenMxQWxMckJzMG9aWGIzM2cxMnpEcFR2VDRISXF6?= =?utf-8?B?S01pM0NqdE1qRnFNdHQyZU9lNFNIeldNSHB0a1Joc3hEeXlTbkVaTFMwd3da?= =?utf-8?B?bWZZcGJlQkt4eUxUb2RiZ0xUV1FRY2Rpd3JVUTFUd1lKeTI3Wlp1b1hiYldi?= =?utf-8?B?d3o5VS9LNlc3Q0dLR0szWHJ4eHZFdlRZbzk2Q1BMclFYMG1OdWJCSGJsL2VZ?= =?utf-8?B?clRRbnU4QlIveTdnMDhJRW5FbEZkWEs1VENPbzVjQkV3MTI3TEtoNDBrYnJW?= =?utf-8?B?eUZLQ2xSN3hzWUZhTmxETUYyejhWUGRPZnlUWXdkWGdybEthWkw2V2NRbVd4?= =?utf-8?B?Wmx0L0UybEFVYVVDYTlNeUo0TmgwRExXYWVMYUpCWnZHWHNoQ2lTYzhtb3NJ?= =?utf-8?B?b0w2dG84UUlTaDdYU2ZoajFiRys4NjZMTDRtMUFIdXVveDdyeHNvbWZJeTM3?= =?utf-8?B?Q0k0a1FKTkY3RnRIb21JY0VtcVFnQXhWbVY5TXh5a3NuMWx5eXF1cC9DekpC?= =?utf-8?B?WXQ1bThveWFRS2xiZ2lMMUZQckdLTlcwejd0Uy90aEdHbGdHU29zSGFaaSsw?= =?utf-8?B?bVh5bkJyRGVaUWU5M0tlQVhrZlhhUFhka0FkY3BHNFk3b1EzS200VHcrUEJo?= =?utf-8?B?dDRjVjhHUVh3NU5nVUlRdEJMTmhrMDcrdGNXc25VWGZCYmRiZHRVNXJOVnho?= =?utf-8?B?dFp4ZmJkQjh2Ulc0SVo1WEJTeUh2ZkNyR3VmaDBvZ1J1MVQ2ZFZ1S0Q3VTds?= =?utf-8?B?WHh2RldHb3ZwRnZiaENZRysvSXlKN29UeGxYL1BGZnRBWGtlUjBnaWh3L1Vl?= =?utf-8?B?YndNTnRoS1ZnRTlaUCt5Y3ZTUEE1a1ZEaSs4Vi96dEkrQjVLc09YSVlOWEhJ?= =?utf-8?B?YS9IZ1FkVzdJTWYvRVRwaStMQ0U1MGovK1d6R2ljRTl2OGZBS0dyNDI1UlQ0?= =?utf-8?B?OE9TY1QxRU8yMTF3ZEsvbGN5eWFpdU1UU282TVFvMk1hVUNLUktqa1RNa1lp?= =?utf-8?B?ckdEN0F1RkNHUWxUd3RENllqTTNFY3hQT2sxZHo0N0hyMnV2dk1heVduVytR?= =?utf-8?Q?mrxFB4?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(1800799024)(376014)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:02:55.2068 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 617b01ce-5cb0-45f2-52b2-08ddf1e38b44 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099DE.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB9547 Received-SPF: permerror client-ip=2a01:111:f403:2415::619; envelope-from=Luc.Michel@amd.com; helo=NAM11-DM6-obe.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1, SPF_HELO_PASS=-0.001, T_SPF_TEMPERROR=0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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 @amd.com) X-ZM-MESSAGEID: 1757672047915116600 Refactor the CPU cluster creation using the VersalMap structure. There is no functional change. The clusters properties are now described in the VersalMap structure. For now only the APU is converted. The RPU will be taken care of by next commits. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/arm/xlnx-versal.h | 12 +- hw/arm/xlnx-versal-virt.c | 80 +------- hw/arm/xlnx-versal.c | 352 ++++++++++++++++++++++++++--------- 3 files changed, 275 insertions(+), 169 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index af47acb288f..9d9ccfb0014 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -13,11 +13,10 @@ #ifndef XLNX_VERSAL_H #define XLNX_VERSAL_H =20 #include "hw/sysbus.h" #include "hw/cpu/cluster.h" -#include "hw/intc/arm_gicv3.h" #include "qom/object.h" #include "net/can_emu.h" #include "target/arm/cpu.h" #include "hw/arm/xlnx-versal-version.h" =20 @@ -41,19 +40,10 @@ OBJECT_DECLARE_TYPE(Versal, VersalClass, XLNX_VERSAL_BA= SE) struct Versal { /*< private >*/ SysBusDevice parent_obj; =20 /*< public >*/ - struct { - struct { - MemoryRegion mr; - CPUClusterState cluster; - ARMCPU cpu[XLNX_VERSAL_NR_ACPUS]; - GICv3State gic; - } apu; - } fpd; - MemoryRegion mr_ps; =20 struct { /* 4 ranges to access DDR. */ MemoryRegion mr_ddr_ranges[4]; @@ -73,10 +63,11 @@ struct Versal { } lpd; =20 struct { uint32_t clk_25mhz; uint32_t clk_125mhz; + uint32_t gic; } phandle; =20 struct { MemoryRegion *mr_ddr; CanBusState **canbus; @@ -94,10 +85,11 @@ static inline void versal_set_fdt(Versal *s, void *fdt) { g_assert(!qdev_is_realized(DEVICE(s))); s->cfg.fdt =3D fdt; } =20 +DeviceState *versal_get_boot_cpu(Versal *s); void versal_sdhci_plug_card(Versal *s, int sd_idx, BlockBackend *blk); void versal_efuse_attach_drive(Versal *s, BlockBackend *blk); void versal_bbram_attach_drive(Versal *s, BlockBackend *blk); void versal_ospi_create_flash(Versal *s, int flash_idx, const char *flash_= mdl, BlockBackend *blk); diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index b981d012558..27594f78c8f 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -36,11 +36,10 @@ struct VersalVirt { Versal soc; =20 void *fdt; int fdt_size; struct { - uint32_t gic; uint32_t clk_125Mhz; uint32_t clk_25Mhz; } phandle; struct arm_boot_info binfo; =20 @@ -61,22 +60,18 @@ static void fdt_create(VersalVirt *s) error_report("create_device_tree() failed"); exit(1); } =20 /* Allocate all phandles. */ - s->phandle.gic =3D qemu_fdt_alloc_phandle(s->fdt); s->phandle.clk_25Mhz =3D qemu_fdt_alloc_phandle(s->fdt); s->phandle.clk_125Mhz =3D qemu_fdt_alloc_phandle(s->fdt); =20 /* Create /chosen node for load_dtb. */ qemu_fdt_add_subnode(s->fdt, "/chosen"); qemu_fdt_add_subnode(s->fdt, "/aliases"); =20 /* Header */ - qemu_fdt_setprop_cell(s->fdt, "/", "interrupt-parent", s->phandle.gic); - qemu_fdt_setprop_cell(s->fdt, "/", "#size-cells", 0x2); - qemu_fdt_setprop_cell(s->fdt, "/", "#address-cells", 0x2); qemu_fdt_setprop_string(s->fdt, "/", "model", mc->desc); qemu_fdt_setprop_string(s->fdt, "/", "compatible", "xlnx-versal-virt"); } =20 static void fdt_add_clk_node(VersalVirt *s, const char *name, @@ -88,71 +83,10 @@ static void fdt_add_clk_node(VersalVirt *s, const char = *name, qemu_fdt_setprop_cell(s->fdt, name, "#clock-cells", 0x0); qemu_fdt_setprop_string(s->fdt, name, "compatible", "fixed-clock"); qemu_fdt_setprop(s->fdt, name, "u-boot,dm-pre-reloc", NULL, 0); } =20 -static void fdt_add_cpu_nodes(VersalVirt *s, uint32_t psci_conduit) -{ - int i; - - qemu_fdt_add_subnode(s->fdt, "/cpus"); - qemu_fdt_setprop_cell(s->fdt, "/cpus", "#size-cells", 0x0); - qemu_fdt_setprop_cell(s->fdt, "/cpus", "#address-cells", 1); - - for (i =3D XLNX_VERSAL_NR_ACPUS - 1; i >=3D 0; i--) { - char *name =3D g_strdup_printf("/cpus/cpu@%d", i); - ARMCPU *armcpu =3D ARM_CPU(qemu_get_cpu(i)); - - qemu_fdt_add_subnode(s->fdt, name); - qemu_fdt_setprop_cell(s->fdt, name, "reg", - arm_cpu_mp_affinity(armcpu)); - if (psci_conduit !=3D QEMU_PSCI_CONDUIT_DISABLED) { - qemu_fdt_setprop_string(s->fdt, name, "enable-method", "psci"); - } - qemu_fdt_setprop_string(s->fdt, name, "device_type", "cpu"); - qemu_fdt_setprop_string(s->fdt, name, "compatible", - armcpu->dtb_compatible); - g_free(name); - } -} - -static void fdt_add_gic_nodes(VersalVirt *s) -{ - char *nodename; - - nodename =3D g_strdup_printf("/gic@%x", MM_GIC_APU_DIST_MAIN); - qemu_fdt_add_subnode(s->fdt, nodename); - qemu_fdt_setprop_cell(s->fdt, nodename, "phandle", s->phandle.gic); - qemu_fdt_setprop_cells(s->fdt, nodename, "interrupts", - GIC_FDT_IRQ_TYPE_PPI, VERSAL_GIC_MAINT_IRQ, - GIC_FDT_IRQ_FLAGS_LEVEL_HI); - qemu_fdt_setprop(s->fdt, nodename, "interrupt-controller", NULL, 0); - qemu_fdt_setprop_sized_cells(s->fdt, nodename, "reg", - 2, MM_GIC_APU_DIST_MAIN, - 2, MM_GIC_APU_DIST_MAIN_SIZE, - 2, MM_GIC_APU_REDIST_0, - 2, MM_GIC_APU_REDIST_0_SIZE); - qemu_fdt_setprop_cell(s->fdt, nodename, "#interrupt-cells", 3); - qemu_fdt_setprop_string(s->fdt, nodename, "compatible", "arm,gic-v3"); - g_free(nodename); -} - -static void fdt_add_timer_nodes(VersalVirt *s) -{ - const char compat[] =3D "arm,armv8-timer"; - uint32_t irqflags =3D GIC_FDT_IRQ_FLAGS_LEVEL_HI; - - qemu_fdt_add_subnode(s->fdt, "/timer"); - qemu_fdt_setprop_cells(s->fdt, "/timer", "interrupts", - GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_S_EL1_IRQ, irqflags, - GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_NS_EL1_IRQ, irqflags, - GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_VIRT_IRQ, irqflags, - GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_NS_EL2_IRQ, irqflags); - qemu_fdt_setprop(s->fdt, "/timer", "compatible", - compat, sizeof(compat)); -} - static void fdt_nop_memory_nodes(void *fdt, Error **errp) { Error *err =3D NULL; char **node_path; int n =3D 0; @@ -394,20 +328,18 @@ static void versal_virt_init(MachineState *machine) fdt_create(s); versal_set_fdt(&s->soc, s->fdt); sysbus_realize(SYS_BUS_DEVICE(&s->soc), &error_fatal); create_virtio_regions(s); =20 - fdt_add_gic_nodes(s); - fdt_add_timer_nodes(s); - fdt_add_cpu_nodes(s, psci_conduit); fdt_add_clk_node(s, "/old-clk125", 125000000, s->phandle.clk_125Mhz); fdt_add_clk_node(s, "/old-clk25", 25000000, s->phandle.clk_25Mhz); =20 - /* Make the APU cpu address space visible to virtio and other - * modules unaware of multiple address-spaces. */ - memory_region_add_subregion_overlap(get_system_memory(), - 0, &s->soc.fpd.apu.mr, 0); + /* + * Map the SoC address space onto system memory. This will allow virti= o and + * other modules unaware of multiple address-spaces to work. + */ + memory_region_add_subregion(get_system_memory(), 0, &s->soc.mr_ps); =20 /* Attach bbram backend, if given */ bbram_attach_drive(s); =20 /* Attach efuse backend, if given */ @@ -427,11 +359,11 @@ static void versal_virt_init(MachineState *machine) /* Some boot-loaders (e.g u-boot) don't like blobs at address 0 (N= ULL). * Offset things by 4K. */ s->binfo.loader_start =3D 0x1000; s->binfo.dtb_limit =3D 0x1000000; } - arm_load_kernel(&s->soc.fpd.apu.cpu[0], machine, &s->binfo); + arm_load_kernel(ARM_CPU(versal_get_boot_cpu(&s->soc)), machine, &s->bi= nfo); =20 for (i =3D 0; i < XLNX_VERSAL_NUM_OSPI_FLASH; i++) { ObjectClass *flash_klass; DriveInfo *dinfo =3D drive_get(IF_MTD, 0, i); BlockBackend *blk; diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 1e4229c7670..56ec03a8b9a 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -41,10 +41,11 @@ #include "hw/rtc/xlnx-zynqmp-rtc.h" #include "hw/misc/xlnx-versal-cfu.h" #include "hw/misc/xlnx-versal-cframe-reg.h" #include "hw/or-irq.h" #include "hw/misc/xlnx-versal-crl.h" +#include "hw/intc/arm_gicv3_common.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") #define GEM_REVISION 0x40070106 =20 @@ -65,11 +66,38 @@ FIELD(VERSAL_IRQ, OR_IDX, 19, 4) /* input index on the = IRQ OR gate */ typedef struct VersalSimplePeriphMap { uint64_t addr; int irq; } VersalSimplePeriphMap; =20 +typedef struct VersalGicMap { + int version; + uint64_t dist; + uint64_t redist; + size_t num_irq; +} VersalGicMap; + +enum StartPoweredOffMode { + SPO_SECONDARIES, + SPO_ALL, +}; + +typedef struct VersalCpuClusterMap { + VersalGicMap gic; + + const char *name; + const char *cpu_model; + size_t num_core; + size_t num_cluster; + uint32_t qemu_cluster_id; + bool dtb_expose; + + enum StartPoweredOffMode start_powered_off; +} VersalCpuClusterMap; + typedef struct VersalMap { + VersalCpuClusterMap apu; + VersalSimplePeriphMap uart[2]; size_t num_uart; =20 VersalSimplePeriphMap canfd[4]; size_t num_canfd; @@ -162,10 +190,26 @@ typedef struct VersalMap { int irq_num; } reserved; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { + .apu =3D { + .name =3D "apu", + .cpu_model =3D ARM_CPU_TYPE_NAME("cortex-a72"), + .num_cluster =3D 1, + .num_core =3D 2, + .qemu_cluster_id =3D 0, + .start_powered_off =3D SPO_SECONDARIES, + .dtb_expose =3D true, + .gic =3D { + .version =3D 3, + .dist =3D 0xf9000000, + .redist =3D 0xf9080000, + .num_irq =3D 192, + }, + }, + .uart[0] =3D { 0xff000000, 18 }, .uart[1] =3D { 0xff010000, 19 }, .num_uart =3D 2, =20 .canfd[0] =3D { 0xff060000, 20 }, @@ -292,15 +336,16 @@ static qemu_irq versal_get_irq_or_gate_in(Versal *s, = int irq_idx, =20 static qemu_irq versal_get_irq(Versal *s, int irq_idx) { qemu_irq irq; bool ored; + DeviceState *gic; =20 ored =3D FIELD_EX32(irq_idx, VERSAL_IRQ, ORED); =20 - irq =3D qdev_get_gpio_in(DEVICE(&s->fpd.apu.gic), - FIELD_EX32(irq_idx, VERSAL_IRQ, IRQ)); + gic =3D DEVICE(versal_get_child_idx(s, "apu-gic", 0)); + irq =3D qdev_get_gpio_in(gic, FIELD_EX32(irq_idx, VERSAL_IRQ, IRQ)); =20 if (ored) { irq =3D versal_get_irq_or_gate_in(s, irq_idx, irq); } =20 @@ -373,111 +418,243 @@ static inline DeviceState *create_or_gate(Versal *s= , Object *parent, versal_qdev_connect_gpio_out(s, or, 0, irq_idx); =20 return or; } =20 -static void versal_create_apu_cpus(Versal *s) +static MemoryRegion *create_cpu_mr(Versal *s, DeviceState *cluster, + const VersalCpuClusterMap *map) { - int i; + MemoryRegion *mr, *root_alias; + char *name; =20 - object_initialize_child(OBJECT(s), "apu-cluster", &s->fpd.apu.cluster, - TYPE_CPU_CLUSTER); - qdev_prop_set_uint32(DEVICE(&s->fpd.apu.cluster), "cluster-id", 0); + mr =3D g_new(MemoryRegion, 1); + name =3D g_strdup_printf("%s-mr", map->name); + memory_region_init(mr, OBJECT(cluster), name, UINT64_MAX); + g_free(name); =20 - for (i =3D 0; i < ARRAY_SIZE(s->fpd.apu.cpu); i++) { - Object *obj; + root_alias =3D g_new(MemoryRegion, 1); + name =3D g_strdup_printf("ps-alias-for-%s", map->name); + memory_region_init_alias(root_alias, OBJECT(cluster), name, + &s->mr_ps, 0, UINT64_MAX); + g_free(name); + memory_region_add_subregion(mr, 0, root_alias); =20 - object_initialize_child(OBJECT(&s->fpd.apu.cluster), - "apu-cpu[*]", &s->fpd.apu.cpu[i], - XLNX_VERSAL_ACPU_TYPE); - obj =3D OBJECT(&s->fpd.apu.cpu[i]); - if (i) { - /* Secondary CPUs start in powered-down state */ - object_property_set_bool(obj, "start-powered-off", true, - &error_abort); - } - - object_property_set_int(obj, "core-count", ARRAY_SIZE(s->fpd.apu.c= pu), - &error_abort); - object_property_set_link(obj, "memory", OBJECT(&s->fpd.apu.mr), - &error_abort); - qdev_realize(DEVICE(obj), NULL, &error_fatal); - } - - qdev_realize(DEVICE(&s->fpd.apu.cluster), NULL, &error_fatal); + return mr; } =20 -static void versal_create_apu_gic(Versal *s, qemu_irq *pic) +static DeviceState *versal_create_gic(Versal *s, + const VersalCpuClusterMap *map, + MemoryRegion *mr, + size_t num_cpu) { - static const uint64_t addrs[] =3D { - MM_GIC_APU_DIST_MAIN, - MM_GIC_APU_REDIST_0 - }; - SysBusDevice *gicbusdev; - DeviceState *gicdev; + DeviceState *dev; + SysBusDevice *sbd; QList *redist_region_count; - int nr_apu_cpus =3D ARRAY_SIZE(s->fpd.apu.cpu); - int i; + g_autofree char *node =3D NULL; + g_autofree char *name =3D NULL; + const char compatible[] =3D "arm,gic-v3"; =20 - object_initialize_child(OBJECT(s), "apu-gic", &s->fpd.apu.gic, - gicv3_class_name()); - gicbusdev =3D SYS_BUS_DEVICE(&s->fpd.apu.gic); - gicdev =3D DEVICE(&s->fpd.apu.gic); - qdev_prop_set_uint32(gicdev, "revision", 3); - qdev_prop_set_uint32(gicdev, "num-cpu", nr_apu_cpus); - qdev_prop_set_uint32(gicdev, "num-irq", XLNX_VERSAL_NR_IRQS + 32); + dev =3D qdev_new(gicv3_class_name()); + name =3D g_strdup_printf("%s-gic[*]", map->name); + object_property_add_child(OBJECT(s), name, OBJECT(dev)); + sbd =3D SYS_BUS_DEVICE(dev); + qdev_prop_set_uint32(dev, "revision", 3); + qdev_prop_set_uint32(dev, "num-cpu", num_cpu); + qdev_prop_set_uint32(dev, "num-irq", map->gic.num_irq + 32); =20 redist_region_count =3D qlist_new(); - qlist_append_int(redist_region_count, nr_apu_cpus); - qdev_prop_set_array(gicdev, "redist-region-count", redist_region_count= ); + qlist_append_int(redist_region_count, num_cpu); + qdev_prop_set_array(dev, "redist-region-count", redist_region_count); =20 - qdev_prop_set_bit(gicdev, "has-security-extensions", true); + qdev_prop_set_bit(dev, "has-security-extensions", true); + object_property_set_link(OBJECT(dev), "sysmem", OBJECT(mr), &error_abo= rt); =20 - sysbus_realize(SYS_BUS_DEVICE(&s->fpd.apu.gic), &error_fatal); + sysbus_realize_and_unref(sbd, &error_fatal); =20 - for (i =3D 0; i < ARRAY_SIZE(addrs); i++) { - MemoryRegion *mr; + memory_region_add_subregion(mr, map->gic.dist, + sysbus_mmio_get_region(sbd, 0)); + memory_region_add_subregion(mr, map->gic.redist, + sysbus_mmio_get_region(sbd, 1)); =20 - mr =3D sysbus_mmio_get_region(gicbusdev, i); - memory_region_add_subregion(&s->fpd.apu.mr, addrs[i], mr); + if (map->dtb_expose) { + node =3D versal_fdt_add_subnode(s, "/gic", map->gic.dist, compatib= le, + sizeof(compatible)); + qemu_fdt_setprop_cell(s->cfg.fdt, node, "phandle", s->phandle.gic); + qemu_fdt_setprop_cell(s->cfg.fdt, node, "#interrupt-cells", 3); + qemu_fdt_setprop_sized_cells(s->cfg.fdt, node, "reg", + 2, map->gic.dist, + 2, 0x10000, + 2, map->gic.redist, + 2, GICV3_REDIST_SIZE * num_cpu); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "interrupts", + GIC_FDT_IRQ_TYPE_PPI, VERSAL_GIC_MAINT_IRQ, + GIC_FDT_IRQ_FLAGS_LEVEL_HI); + qemu_fdt_setprop(s->cfg.fdt, node, "interrupt-controller", NULL, 0= ); } =20 - for (i =3D 0; i < nr_apu_cpus; i++) { - DeviceState *cpudev =3D DEVICE(&s->fpd.apu.cpu[i]); - int ppibase =3D XLNX_VERSAL_NR_IRQS + i * GIC_INTERNAL + GIC_NR_SG= IS; - qemu_irq maint_irq; - int ti; - /* Mapping from the output timer irq lines from the CPU to the - * GIC PPI inputs. - */ - const int timer_irq[] =3D { - [GTIMER_PHYS] =3D VERSAL_TIMER_NS_EL1_IRQ, - [GTIMER_VIRT] =3D VERSAL_TIMER_VIRT_IRQ, - [GTIMER_HYP] =3D VERSAL_TIMER_NS_EL2_IRQ, - [GTIMER_SEC] =3D VERSAL_TIMER_S_EL1_IRQ, - }; + return dev; +} =20 +static void connect_gic_to_cpu(const VersalCpuClusterMap *map, + DeviceState *gic, DeviceState *cpu, size_t = idx, + size_t num_cpu) +{ + SysBusDevice *sbd =3D SYS_BUS_DEVICE(gic); + int ppibase =3D map->gic.num_irq + idx * GIC_INTERNAL + GIC_NR_SGIS; + int ti; + bool has_gtimer; + /* + * Mapping from the output timer irq lines from the CPU to the + * GIC PPI inputs. + */ + const int timer_irq[] =3D { + [GTIMER_PHYS] =3D VERSAL_TIMER_NS_EL1_IRQ, + [GTIMER_VIRT] =3D VERSAL_TIMER_VIRT_IRQ, + [GTIMER_HYP] =3D VERSAL_TIMER_NS_EL2_IRQ, + [GTIMER_SEC] =3D VERSAL_TIMER_S_EL1_IRQ, + }; + + has_gtimer =3D arm_feature(&ARM_CPU(cpu)->env, ARM_FEATURE_GENERIC_TIM= ER); + + if (has_gtimer) { for (ti =3D 0; ti < ARRAY_SIZE(timer_irq); ti++) { - qdev_connect_gpio_out(cpudev, ti, - qdev_get_gpio_in(gicdev, + qdev_connect_gpio_out(cpu, ti, + qdev_get_gpio_in(gic, ppibase + timer_irq[ti]= )); } - maint_irq =3D qdev_get_gpio_in(gicdev, - ppibase + VERSAL_GIC_MAINT_IRQ); - qdev_connect_gpio_out_named(cpudev, "gicv3-maintenance-interrupt", + } + + if (map->gic.version =3D=3D 3) { + qemu_irq maint_irq; + + maint_irq =3D qdev_get_gpio_in(gic, + ppibase + VERSAL_GIC_MAINT_IRQ); + qdev_connect_gpio_out_named(cpu, "gicv3-maintenance-interrupt", 0, maint_irq); - sysbus_connect_irq(gicbusdev, i, qdev_get_gpio_in(cpudev, ARM_CPU_= IRQ)); - sysbus_connect_irq(gicbusdev, i + nr_apu_cpus, - qdev_get_gpio_in(cpudev, ARM_CPU_FIQ)); - sysbus_connect_irq(gicbusdev, i + 2 * nr_apu_cpus, - qdev_get_gpio_in(cpudev, ARM_CPU_VIRQ)); - sysbus_connect_irq(gicbusdev, i + 3 * nr_apu_cpus, - qdev_get_gpio_in(cpudev, ARM_CPU_VFIQ)); } =20 - for (i =3D 0; i < XLNX_VERSAL_NR_IRQS; i++) { - pic[i] =3D qdev_get_gpio_in(gicdev, i); + sysbus_connect_irq(sbd, idx, qdev_get_gpio_in(cpu, ARM_CPU_IRQ)); + sysbus_connect_irq(sbd, idx + num_cpu, + qdev_get_gpio_in(cpu, ARM_CPU_FIQ)); + sysbus_connect_irq(sbd, idx + 2 * num_cpu, + qdev_get_gpio_in(cpu, ARM_CPU_VIRQ)); + sysbus_connect_irq(sbd, idx + 3 * num_cpu, + qdev_get_gpio_in(cpu, ARM_CPU_VFIQ)); +} + +static inline void versal_create_and_connect_gic(Versal *s, + const VersalCpuClusterMap= *map, + MemoryRegion *mr, + DeviceState **cpus, + size_t num_cpu) +{ + DeviceState *gic; + size_t i; + + gic =3D versal_create_gic(s, map, mr, num_cpu); + + for (i =3D 0; i < num_cpu; i++) { + connect_gic_to_cpu(map, gic, cpus[i], i, num_cpu); + } +} + +static DeviceState *versal_create_cpu(Versal *s, + const VersalCpuClusterMap *map, + DeviceState *qemu_cluster, + MemoryRegion *cpu_mr, + size_t cluster_idx, + size_t core_idx) +{ + DeviceState *cpu =3D qdev_new(map->cpu_model); + ARMCPU *arm_cpu =3D ARM_CPU(cpu); + Object *obj =3D OBJECT(cpu); + bool start_off; + size_t idx =3D cluster_idx * map->num_core + core_idx; + g_autofree char *name; + g_autofree char *node =3D NULL; + + start_off =3D map->start_powered_off =3D=3D SPO_ALL + || ((map->start_powered_off =3D=3D SPO_SECONDARIES) + && (cluster_idx || core_idx)); + + name =3D g_strdup_printf("%s[*]", map->name); + object_property_add_child(OBJECT(qemu_cluster), name, obj); + object_property_set_bool(obj, "start-powered-off", start_off, + &error_abort); + qdev_prop_set_int32(cpu, "core-count", map->num_core); + object_property_set_link(obj, "memory", OBJECT(cpu_mr), &error_abort); + qdev_realize_and_unref(cpu, NULL, &error_fatal); + + if (!map->dtb_expose) { + return cpu; + } + + node =3D versal_fdt_add_subnode(s, "/cpus/cpu", idx, + arm_cpu->dtb_compatible, + strlen(arm_cpu->dtb_compatible) + 1); + qemu_fdt_setprop_cell(s->cfg.fdt, node, "reg", + arm_cpu_mp_affinity(arm_cpu) & ARM64_AFFINITY_MA= SK); + qemu_fdt_setprop_string(s->cfg.fdt, node, "device_type", "cpu"); + qemu_fdt_setprop_string(s->cfg.fdt, node, "enable-method", "psci"); + + return cpu; +} + +static void versal_create_cpu_cluster(Versal *s, const VersalCpuClusterMap= *map) +{ + size_t i, j; + DeviceState *cluster; + MemoryRegion *mr; + char *name; + g_autofree DeviceState **cpus; + const char compatible[] =3D "arm,armv8-timer"; + bool has_gtimer; + + cluster =3D qdev_new(TYPE_CPU_CLUSTER); + name =3D g_strdup_printf("%s-cluster", map->name); + object_property_add_child(OBJECT(s), name, OBJECT(cluster)); + g_free(name); + qdev_prop_set_uint32(cluster, "cluster-id", map->qemu_cluster_id); + + mr =3D create_cpu_mr(s, cluster, map); + + cpus =3D g_new(DeviceState *, map->num_cluster * map->num_core); + + if (map->dtb_expose) { + qemu_fdt_add_subnode(s->cfg.fdt, "/cpus"); + qemu_fdt_setprop_cell(s->cfg.fdt, "/cpus", "#size-cells", 0); + qemu_fdt_setprop_cell(s->cfg.fdt, "/cpus", "#address-cells", 1); + } + + for (i =3D 0; i < map->num_cluster; i++) { + for (j =3D 0; j < map->num_core; j++) { + DeviceState *cpu =3D versal_create_cpu(s, map, cluster, mr, i,= j); + + cpus[i * map->num_core + j] =3D cpu; + } + + } + + qdev_realize_and_unref(cluster, NULL, &error_fatal); + + versal_create_and_connect_gic(s, map, mr, cpus, + map->num_cluster * map->num_core); + + has_gtimer =3D arm_feature(&ARM_CPU(cpus[0])->env, ARM_FEATURE_GENERIC= _TIMER); + if (map->dtb_expose && has_gtimer) { + qemu_fdt_add_subnode(s->cfg.fdt, "/timer"); + qemu_fdt_setprop_cells(s->cfg.fdt, "/timer", "interrupts", + GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_S_EL1_IR= Q, + GIC_FDT_IRQ_FLAGS_LEVEL_HI, + GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_NS_EL1_I= RQ, + GIC_FDT_IRQ_FLAGS_LEVEL_HI, + GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_VIRT_IRQ, + GIC_FDT_IRQ_FLAGS_LEVEL_HI, + GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_NS_EL2_I= RQ, + GIC_FDT_IRQ_FLAGS_LEVEL_HI); + qemu_fdt_setprop(s->cfg.fdt, "/timer", "compatible", + compatible, sizeof(compatible)); } } =20 static void versal_create_rpu_cpus(Versal *s) { @@ -1284,11 +1461,10 @@ static uint32_t fdt_add_clk_node(Versal *s, const c= har *name, =20 static void versal_realize(DeviceState *dev, Error **errp) { Versal *s =3D XLNX_VERSAL_BASE(dev); DeviceState *slcr, *ospi; - qemu_irq pic[XLNX_VERSAL_NR_IRQS]; Object *container; const VersalMap *map =3D versal_get_map(s); size_t i; =20 if (s->cfg.fdt =3D=3D NULL) { @@ -1297,18 +1473,21 @@ static void versal_realize(DeviceState *dev, Error = **errp) s->cfg.fdt =3D create_device_tree(&fdt_size); } =20 s->phandle.clk_25mhz =3D fdt_add_clk_node(s, "/clk25", 25 * 1000 * 100= 0); s->phandle.clk_125mhz =3D fdt_add_clk_node(s, "/clk125", 125 * 1000 * = 1000); - - versal_create_apu_cpus(s); - versal_create_apu_gic(s, pic); + s->phandle.gic =3D qemu_fdt_alloc_phandle(s->cfg.fdt); =20 container =3D object_new(TYPE_CONTAINER); object_property_add_child(OBJECT(s), "irq-or-gates", container); object_unref(container); =20 + qemu_fdt_setprop_cell(s->cfg.fdt, "/", "interrupt-parent", s->phandle.= gic); + qemu_fdt_setprop_cell(s->cfg.fdt, "/", "#size-cells", 0x2); + qemu_fdt_setprop_cell(s->cfg.fdt, "/", "#address-cells", 0x2); + + versal_create_cpu_cluster(s, &map->apu); versal_create_rpu_cpus(s); =20 for (i =3D 0; i < map->num_uart; i++) { versal_create_uart(s, &map->uart[i], i); } @@ -1361,15 +1540,19 @@ static void versal_realize(DeviceState *dev, Error = **errp) /* Create the On Chip Memory (OCM). */ memory_region_init_ram(&s->lpd.mr_ocm, OBJECT(s), "ocm", MM_OCM_SIZE, &error_fatal); =20 memory_region_add_subregion_overlap(&s->mr_ps, MM_OCM, &s->lpd.mr_ocm,= 0); - memory_region_add_subregion_overlap(&s->fpd.apu.mr, 0, &s->mr_ps, 0); memory_region_add_subregion_overlap(&s->lpd.rpu.mr, 0, &s->lpd.rpu.mr_ps_alias, 0); } =20 +DeviceState *versal_get_boot_cpu(Versal *s) +{ + return DEVICE(versal_get_child_idx(s, "apu-cluster/apu", 0)); +} + void versal_sdhci_plug_card(Versal *s, int sd_idx, BlockBackend *blk) { DeviceState *sdhci, *card; =20 sdhci =3D DEVICE(versal_get_child_idx(s, "sdhci", sd_idx)); @@ -1469,11 +1652,10 @@ int versal_get_num_sdhci(VersalVersion version) static void versal_base_init(Object *obj) { Versal *s =3D XLNX_VERSAL_BASE(obj); size_t i, num_can; =20 - memory_region_init(&s->fpd.apu.mr, obj, "mr-apu", UINT64_MAX); memory_region_init(&s->lpd.rpu.mr, obj, "mr-rpu", UINT64_MAX); memory_region_init(&s->mr_ps, obj, "mr-ps-switch", UINT64_MAX); memory_region_init_alias(&s->lpd.rpu.mr_ps_alias, OBJECT(s), "mr-rpu-ps-alias", &s->mr_ps, 0, UINT64_MAX); =20 --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757672156; cv=pass; d=zohomail.com; s=zohoarc; b=ZHVuOu16wg2j9cmsFyZXWtlPy3wiB7MeqL8MhX4JhIixpGAvszaVM7CGsWllq88CGUVwlhvZcvnix7ji516f143ZgVjEdcKP5GcB84pi4DGFSALTYXMV66TdLSw4KBPJWF2A6Ct0Xe8X7jAY54V9MFaqMcpTZ9PS+lAM/+pjq6s= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757672156; 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=OPOcHkjD7eHofjf4RdSl3J7zMguZ0bXdxdI4fSZeZNE=; b=IPrMbRVU9g1wWpnwaC/G0HF2ujvyJ3bsO1By7NgHonncjowQ+9KWe/DeOG2ie0ZG75ihcbEUVjmLRT7CoV/TAATiwt+G3YMTAI16mIoVg7tcx4yRoUFloTLwJx0V+aZXQIwE4QKorrolkHUsy0J6ISTpp2XXWraRRfAXKtTm458= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757672156734548.7200796906326; Fri, 12 Sep 2025 03:15:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0dV-0007tN-KR; Fri, 12 Sep 2025 06:04:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cb-0006UJ-Bx; Fri, 12 Sep 2025 06:03:13 -0400 Received: from mail-bn7nam10on20624.outbound.protection.outlook.com ([2a01:111:f403:2009::624] helo=NAM10-BN7-obe.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 1ux0cQ-0001JS-QR; Fri, 12 Sep 2025 06:03:13 -0400 Received: from DM6PR02CA0047.namprd02.prod.outlook.com (2603:10b6:5:177::24) by IA1PR12MB7662.namprd12.prod.outlook.com (2603:10b6:208:425::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:02:54 +0000 Received: from DS1PEPF0001709D.namprd05.prod.outlook.com (2603:10b6:5:177:cafe::7f) by DM6PR02CA0047.outlook.office365.com (2603:10b6:5:177::24) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.16 via Frontend Transport; Fri, 12 Sep 2025 10:02:55 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS1PEPF0001709D.mail.protection.outlook.com (10.167.18.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:02:54 +0000 Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:01:59 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:01:59 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:01:57 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mPfulumnXgf1dhsg/OUP2BAlxuYdgoChLi8JC5M6NNKT5RsUdlstHdrj55Z8y0imPuDYL9zepINl9/joR6y5E6v3kMqb7w2KrjrGni5lTZE5LfKUI2r26i3zYGrTDS9xMk8apwBVWFiyeHdqe4+p1cihjub3a21jLKfAmdk4jxqKfxNDLNYcAk3Gg8Q/rqQBazefO9jQIJNE74pI0RmvsOfNSWEpBHt0NZoiZvFp171HrzwV/MHv9v4j5JaydLfxrIIOHELPndx19ZGLGCcbY5Lwwfw9Z31wZVmQd85bahtHqaFLb0U3Z3/rd0qJSouVq65wm28Ss1hbtWVUI2rcaw== 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=OPOcHkjD7eHofjf4RdSl3J7zMguZ0bXdxdI4fSZeZNE=; b=pdx7Gw9aRVoRfF9a34jjOwzVJ4mnEIotb/1cWh0wVdD4E1Dg+QlYPMS92dMJ7wHbI7SRlR090dXCYGBmKOtHEB+ZBqJXa+TOl03mZvF1I1YTzoJ82ROtEuY4SH4tKHT4A0SUEQEn99shh2SteSt3RfJK2yADJW9DtMfjXJQEw/Jyzn4vC1hIS38wqpx6cqDxH2WvSpCGAu4oD2X4JsScwBSfJ+sPMxzQwXJTi27nkFq+7RWoQX2JvurQpgpfRINPSL2zuY8/4VurUlLUVrCLY263vPRB1kGCjaTT17os7gOzejlpGwPNVmbn56nLnbwOFICdxv2nABwitdyC0wnQhw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OPOcHkjD7eHofjf4RdSl3J7zMguZ0bXdxdI4fSZeZNE=; b=fE9cNqWkPRKFv/q6K7fPzIK5K7D6YJrWFCi5ApcONTkzE24ND63ItPQctHm5IyM9hKR4wt60Beqdfg9VqPKG3XNWcpTo5/OY9TF0/9MwU+2h7b0OpPw92ArbQyburyz840h7FfwrqWw/866eUEvMAzvOWE9ITZ4yErlieOlLen8= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 21/47] hw/arm/xlnx-versal: add the mp_affinity property to the CPU mapping Date: Fri, 12 Sep 2025 12:00:30 +0200 Message-ID: <20250912100059.103997-22-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: None (SATLEXMB04.amd.com: luc.michel@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0001709D:EE_|IA1PR12MB7662:EE_ X-MS-Office365-Filtering-Correlation-Id: 53d8ffdf-e2e4-457f-f841-08ddf1e38ac7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|36860700013|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ClBO6Y9vSB7TUTTnnK/G0AhISIqM8WOUg0K8JO66brcnXw7NrXhgKQKgQv6d?= =?us-ascii?Q?/ig8w4JqzoME4I/N18fHO1iwI2T2QuAExqdJLTbIpw1PENipsh36rAYJcwTf?= =?us-ascii?Q?J3wSD26KSh3A/3EqyTdYad+a+hjGLtBYY5TWFkInJgYPLuFIAtC4Oz6RncsW?= =?us-ascii?Q?Unpb6qXWIqv+LChJXS2sKAjfK8cgOhz8Cws1aZAUeL92eCiy6TcI1Z/2N5ri?= =?us-ascii?Q?hdbcPUIVP/8AlRTjBtY+S2rsGibf0UZSC32UGdb2dVjixAFgLQbWg9Q5838o?= =?us-ascii?Q?Q2wkXN9P+pXWA1FFfnFBhyUz19FO1b/rlL32U6nbEEvEi6ZjqAQ+XJ7ahcGV?= =?us-ascii?Q?IfHTtv7Lyr7ewxQuKEW3vQtUN51msRu4OKqgDKUiWp+njXzW0WGmFmEmwEPj?= =?us-ascii?Q?kNCS5Za4PpHaY4BQ3F+dlSd6AyBUy60o/PNqW2MuyjatCZVNIIHDgO7e+cdz?= =?us-ascii?Q?FFaWaenm79j34fuOPF84gQRzchqEypEu00VRcwgID0I8BC5HWzfuqaDmbv4a?= =?us-ascii?Q?KSj74nqG1u2llUyyThvnk5EXDQGTex5LMcJBAgNsDJ+OZeXOXFBiD9/N7IJM?= =?us-ascii?Q?HPMqOhsVgrc8McaX4yCaHduQ5+Ns6wj5O8z29Je5qou5xNwtoxygWB1DZr9z?= =?us-ascii?Q?GBZHAPKoqhsndIPesuabBf87qN5QkEvUea+8duebbQMiW4kQPahiUpX5sL9Y?= =?us-ascii?Q?y7lvw4bYe5r4fmcuytXmsZ2hSaFmIk9RcB43weMcPmxWqRBpTiAx/ZnLfnaB?= =?us-ascii?Q?/6hKpv94mQY5CJOnEsiBN/Y7S+yavDb/shnruAcJUGGWElIcdyt71q9IKK2m?= =?us-ascii?Q?Oi2h6KUGkfQqgLt1RW6iPgKK3BCP1h2Ha6YCOjEZ04sicB06ChlWbXTDi9Mb?= =?us-ascii?Q?W/j802jZRsQZXrdCHeQYoEiWed01n8D7FRF1ECzU6xOJ3HRQXnd1UOYcWykV?= =?us-ascii?Q?kFoYvefrQYC8P0JX1fST0byO2rNOBMU3oRDppBaiPQw/Y1ggExrKyT2pxyyT?= =?us-ascii?Q?5VFlRLjWxpHcXtdgpUlVG3g3XrE+KTmMS2WVUsCd0PH4rbOprpSMc5W9Sz5U?= =?us-ascii?Q?o68w0LVCnuq6veuJvAPINBwkmsUsUMpyH7Radw51RHboFQK5Jh7C+1rkA+4B?= =?us-ascii?Q?XosbI2onqRPcYYjUci/qO9GCdBizCaP5zSPFWobR65wmNAGpxr33oG+VOQa2?= =?us-ascii?Q?Sw8pxWbdq2uiCEHys9WzLla34s5T/D6q2AyuijSG1XjJ8m1nUWWX9l1Ty0J/?= =?us-ascii?Q?oJK8xusj6T2r50qXO/maXlWQIltgrXk0lOKKhPNINMY51ITD7Ij7r+Gu1RgT?= =?us-ascii?Q?VxP8jkoms6hp9yn7fv21tCrIcj45fCrveC5vZHT43MYvT1903T1UMLYAuUtX?= =?us-ascii?Q?780H5oiqfH7WSLWcVMGpN1/TMkAxyggAac28nG53/Kxhw5BztaTk5BF9mYCQ?= =?us-ascii?Q?+veXxlAO2bQh4/Inp8mShElvUZd3UU56izb4jKtb8+U/gDtEfGVuDPH8icd6?= =?us-ascii?Q?JzkaMbTB6pnCFBsBQmy28Dh9dVYZuYumqtwU?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(1800799024)(36860700013)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:02:54.3912 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 53d8ffdf-e2e4-457f-f841-08ddf1e38ac7 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0001709D.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB7662 Received-SPF: permerror client-ip=2a01:111:f403:2009::624; envelope-from=Luc.Michel@amd.com; helo=NAM10-BN7-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757672158914116600 Content-Type: text/plain; charset="utf-8" Add a way to configure the MP affinity value of the CPUs given their core and cluster IDs. For the Versal APU CPUs, the MP affinity value is given by the core ID in Aff0. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- hw/arm/xlnx-versal.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 56ec03a8b9a..f4b9f419728 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -88,10 +88,16 @@ typedef struct VersalCpuClusterMap { size_t num_core; size_t num_cluster; uint32_t qemu_cluster_id; bool dtb_expose; =20 + struct { + uint64_t base; + uint64_t core_shift; + uint64_t cluster_shift; + } mp_affinity; + enum StartPoweredOffMode start_powered_off; } VersalCpuClusterMap; =20 typedef struct VersalMap { VersalCpuClusterMap apu; @@ -196,10 +202,14 @@ static const VersalMap VERSAL_MAP =3D { .name =3D "apu", .cpu_model =3D ARM_CPU_TYPE_NAME("cortex-a72"), .num_cluster =3D 1, .num_core =3D 2, .qemu_cluster_id =3D 0, + .mp_affinity =3D { + .core_shift =3D ARM_AFF0_SHIFT, + .cluster_shift =3D ARM_AFF1_SHIFT, + }, .start_powered_off =3D SPO_SECONDARIES, .dtb_expose =3D true, .gic =3D { .version =3D 3, .dist =3D 0xf9000000, @@ -565,23 +575,29 @@ static DeviceState *versal_create_cpu(Versal *s, size_t core_idx) { DeviceState *cpu =3D qdev_new(map->cpu_model); ARMCPU *arm_cpu =3D ARM_CPU(cpu); Object *obj =3D OBJECT(cpu); + uint64_t affinity; bool start_off; size_t idx =3D cluster_idx * map->num_core + core_idx; g_autofree char *name; g_autofree char *node =3D NULL; =20 + affinity =3D map->mp_affinity.base; + affinity |=3D (cluster_idx & 0xff) << map->mp_affinity.cluster_shift; + affinity |=3D (core_idx & 0xff) << map->mp_affinity.core_shift; + start_off =3D map->start_powered_off =3D=3D SPO_ALL || ((map->start_powered_off =3D=3D SPO_SECONDARIES) && (cluster_idx || core_idx)); =20 name =3D g_strdup_printf("%s[*]", map->name); object_property_add_child(OBJECT(qemu_cluster), name, obj); object_property_set_bool(obj, "start-powered-off", start_off, &error_abort); + qdev_prop_set_uint64(cpu, "mp-affinity", affinity); qdev_prop_set_int32(cpu, "core-count", map->num_core); object_property_set_link(obj, "memory", OBJECT(cpu_mr), &error_abort); qdev_realize_and_unref(cpu, NULL, &error_fatal); =20 if (!map->dtb_expose) { --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757672055; cv=pass; d=zohomail.com; s=zohoarc; b=ebRx87AApzNUntoj7g83AlOw0LtZ//pLt8S9fGerLhVKs8QpqWP9QZ2Bjk8h2P9zYumyj9F18JTMZ15UML4UheOGCsyIGrBedNVHM0EYPurzY4HaxE/ekCfLeuxt/UX1s7Ro1By8T6Oct3F1H+kPypeERN98soMejYztxxX70UU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757672055; 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=tCaC1NyJ8OtdfxLQmh5A3qWRwVBllGPm0oIyLSO0p6Y=; b=E9wwi5cwj3n0W1kyRhnjs6E3RxusVRnGMBV7s74VdOOsicbs8O0QV4BAESMcVWkmaMt2TzQwTB6SzrEcU2cP31wXwgX6isIyZ2T6I7nxAyMyo55QmIOjWC4g3a16f7Y6YhbQ8KAUYccaYaCUk0zmkpnF3pqrHznBf11Z1hqYuMA= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757672055241498.95214528020153; Fri, 12 Sep 2025 03:14:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0da-0008E5-By; Fri, 12 Sep 2025 06:04:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cd-0006do-R3; Fri, 12 Sep 2025 06:03:15 -0400 Received: from mail-dm6nam10on20606.outbound.protection.outlook.com ([2a01:111:f403:2413::606] helo=NAM10-DM6-obe.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 1ux0cU-0001K5-Iu; Fri, 12 Sep 2025 06:03:15 -0400 Received: from DM6PR03CA0053.namprd03.prod.outlook.com (2603:10b6:5:100::30) by PH7PR12MB5927.namprd12.prod.outlook.com (2603:10b6:510:1da::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:02:56 +0000 Received: from DS3PEPF000099E1.namprd04.prod.outlook.com (2603:10b6:5:100:cafe::e9) by DM6PR03CA0053.outlook.office365.com (2603:10b6:5:100::30) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.16 via Frontend Transport; Fri, 12 Sep 2025 10:02:55 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099E1.mail.protection.outlook.com (10.167.17.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:02:55 +0000 Received: from satlexmb10.amd.com (10.181.42.219) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:01 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb10.amd.com (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:00 -0700 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:01:59 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nUHGur6vIORykdZYhg7XjNpo/f9AIHULkdQ9IL0DW1f0A18r2qIcF5O+7+Ncxxehwx094aLC+/L05vKTZ1K5cgs7IXf5w26g8CaOOrVQqevrsKGwZir3loka7Hf17BqwojMlswhmhrCukRKq+8UgNJtRT8K6cGFetPknXIcjZEJfVvAo0opdYF36IQoSPTP2H6gc2m95JydrjTuzWpMPBNDnwld/bO0/a4z36q4cjmxkHQ50miV61wgXqhVIDMkv8gUbJ/YEurmw9TYXvK6eBneO25uFvO1Kfcphh6OaPmK5psAS/OpLx6SOMn6aXH5gOQbopDvYwpy5YSKrMxmxqg== 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=tCaC1NyJ8OtdfxLQmh5A3qWRwVBllGPm0oIyLSO0p6Y=; b=lGrrD6BzcHeBSQP3sjXZsDJ2H6idrR46po6kxx9QmogArDAwuf9jferCVEOY+JJOoKrhR72ztvCNaOruJYL3EQR/G6yWHyR6R8zTu3vUsT0KxxpWC8pHvSefR0lrn7PeiQ4KSETzQylnMOxCGEoZ8G4n1wquOvF3spcwNnCvflXGP9lUi+PGAWxGnspRKOjx/kxjQv503qoy8XimDk5PcZKifMd78Y6Xa1YdBLeQjz51xUwZppT4XyfHzidjqwi2AlwxzbQ6X7xf7W+gj+DXmASPpZY6lMsVWlvbRM/Yis1cYpHTYcamgYwNGGHx86P9DuH3RJQbyd8txIrJ/4LzQQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tCaC1NyJ8OtdfxLQmh5A3qWRwVBllGPm0oIyLSO0p6Y=; b=y4WL+yvOeGLJcPMJbF86IROrFI2OmkziGao7uIkRBQfoFX9Xew5y04uyZ8wUKJVrsWp72ZxuymqCijlyMK7o41LXk4FYk51Y24JklWvVjpEjE7rYCPpZcWFW6ZTWk004/YDryNgv/pDQBeyqhbX1k+GhCuXMNBTFRQtmwXZC44Q= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 22/47] hw/arm/xlnx-versal: instantiate the GIC ITS in the APU Date: Fri, 12 Sep 2025 12:00:31 +0200 Message-ID: <20250912100059.103997-23-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099E1:EE_|PH7PR12MB5927:EE_ X-MS-Office365-Filtering-Correlation-Id: b6c73192-d556-472f-c71a-08ddf1e38b77 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|376014|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Yt9W32iRUgdYrUm9JNpKzoHx+jZZmHIHC1VsBWea6wx93yTLRnXCJcmnNwBw?= =?us-ascii?Q?50ZcJjivzGNUsxJyrYmOIYkjATeGub7kM24715TQUQBG5gj9GrqP3U0H/37T?= =?us-ascii?Q?ejj8gVgriQqX/dhhV0GQrKfE7TZ7SYCQDSF33KpkF7ChswzPH7kSHc4uoUec?= =?us-ascii?Q?YbQjDNHwW2ZDrG69Im6klMJp7ZqJ8gUZs9UjPMDL8jCqbj3kEcdfnOHu941S?= =?us-ascii?Q?GRoJ5M4JHlHGtFiEmWE+hXeDrUBsCB8X9mERKhLrECq0zC4JykDbd6skG656?= =?us-ascii?Q?9+4yJIJDCGSnA0RgpRA3gDVsUui0uz8i0AnTcjLdbRVicBdUJYjEcTbStf4K?= =?us-ascii?Q?CcZZUcZ29zRsEtunGHikZcVZoseJzwQ0/oihp62aA+orlsEFg1NLLTdevnu3?= =?us-ascii?Q?Y7OPZPQeC47YOBNQvkb9//7oEMzHIgGw6wLsWf5i2MDxjEGQz79/3gJo3qFX?= =?us-ascii?Q?GfvyguHpW1D4fDmxpg6n3i6x2/ZABkHyEhJBQOxiSV0g49fthVshBro8R9Fy?= =?us-ascii?Q?3oP3tgY/9gu6c2kd0T9ACOvpCNceQNLP2LM3WRGD24GS+1ip6SEuUEHqseKG?= =?us-ascii?Q?IKF6W6d298anYDA8BpLYyWN+7nmmFmVYUOFGp0Xn9Zu5Lv5lfxnnJThd5NL5?= =?us-ascii?Q?+ZMcqWICgNdJVIuOeCGpLPJBzCXEOeb/ynypxIPFXsz63OKTIDjJXaB669Sm?= =?us-ascii?Q?fRaZnFpUz02vkdVCJsqC608RNh8+nskjD0noS1MaaCyiSj82p3FI57ziKJnO?= =?us-ascii?Q?dGU+yYm//csPGUl9z8/fykPKjFPKFY3B5u7tTREiMMA9fuDnBYX7aFdoYEY8?= =?us-ascii?Q?Kb4MDW5A/xBEEFrhCRSsIsb4xBwLuxXQu/WmRuCRQXC2EE9yeIyLV21TJ3z6?= =?us-ascii?Q?xds3gP4VcqWhOYz+d8huBwGS1RN3pbvsX3os2iHurqghRVmGbC/vSRvCcTi7?= =?us-ascii?Q?4bcykNGpQGLsUUx4bcVyoqF7kbX09d34Zg+LF0YMxxSrJblI9um7+EdD/EqV?= =?us-ascii?Q?Q3b8SKSWsKF/L22vCVAPF3F5+GX0On30ZHG/h4YyLdu4tQEVytkeyVTT/g60?= =?us-ascii?Q?6Db/oFy1xkbOsO77UBZH/m1RSwc2lb9QhxoZep2Pm8Ns3+ugwQgDOf4H/zaL?= =?us-ascii?Q?KAUykSPWW2rbx/d0HrRheCfiLKRSwN7QZX+HxDJlKA6FZrzFzqDBRZJoQls5?= =?us-ascii?Q?orEZZVnINkwopMT6v3m7wbaYLQGY+HhZyz6BW/lsEdSnkbjxVvU+E8UPDUOk?= =?us-ascii?Q?fjsvR0r9dSafagjjwzhxc9gkoqZV7Tc44oX4yT8F+5MYYxM8Dire9DSKeEbT?= =?us-ascii?Q?bVsAN6+bD6pHJnOcJrZjDqw/CLN9lyurmZCZ98Rn/5w1jflcny29/dD+GHZD?= =?us-ascii?Q?E3DanGbdKBwvmFiZg518pCwDPomC4UHA8/yH4WydcAEOAWlY++Rmo8TUPYod?= =?us-ascii?Q?K+/3W5YrNoNhyDrYiKUuKa4QX81s8z4uVxSLByitX98HY3o9BucQYHMG0N8l?= =?us-ascii?Q?BGPd2XfYo4XXbbvbv5nCWu8FkCN5LMcf2cyS?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(376014)(1800799024)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:02:55.5431 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b6c73192-d556-472f-c71a-08ddf1e38b77 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099E1.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5927 Received-SPF: permerror client-ip=2a01:111:f403:2413::606; envelope-from=Luc.Michel@amd.com; helo=NAM10-DM6-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757672055778116600 Content-Type: text/plain; charset="utf-8" Add the instance of the GIC ITS in the APU. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- hw/arm/xlnx-versal.c | 50 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index f4b9f419728..6252e0742c4 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -42,10 +42,11 @@ #include "hw/misc/xlnx-versal-cfu.h" #include "hw/misc/xlnx-versal-cframe-reg.h" #include "hw/or-irq.h" #include "hw/misc/xlnx-versal-crl.h" #include "hw/intc/arm_gicv3_common.h" +#include "hw/intc/arm_gicv3_its_common.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") #define GEM_REVISION 0x40070106 =20 @@ -70,11 +71,13 @@ typedef struct VersalSimplePeriphMap { =20 typedef struct VersalGicMap { int version; uint64_t dist; uint64_t redist; + uint64_t its; size_t num_irq; + bool has_its; } VersalGicMap; =20 enum StartPoweredOffMode { SPO_SECONDARIES, SPO_ALL, @@ -213,10 +216,12 @@ static const VersalMap VERSAL_MAP =3D { .gic =3D { .version =3D 3, .dist =3D 0xf9000000, .redist =3D 0xf9080000, .num_irq =3D 192, + .has_its =3D true, + .its =3D 0xf9020000, }, }, =20 .uart[0] =3D { 0xff000000, 18 }, .uart[1] =3D { 0xff010000, 19 }, @@ -449,10 +454,52 @@ static MemoryRegion *create_cpu_mr(Versal *s, DeviceS= tate *cluster, memory_region_add_subregion(mr, 0, root_alias); =20 return mr; } =20 +static void versal_create_gic_its(Versal *s, + const VersalCpuClusterMap *map, + DeviceState *gic, + MemoryRegion *mr, + char *gic_node) +{ + DeviceState *dev; + SysBusDevice *sbd; + g_autofree char *node_pat =3D NULL, *node =3D NULL; + const char compatible[] =3D "arm,gic-v3-its"; + + if (!map->gic.has_its) { + return; + } + + dev =3D qdev_new(TYPE_ARM_GICV3_ITS); + sbd =3D SYS_BUS_DEVICE(dev); + + object_property_add_child(OBJECT(gic), "its", OBJECT(dev)); + object_property_set_link(OBJECT(dev), "parent-gicv3", OBJECT(gic), + &error_abort); + + sysbus_realize_and_unref(sbd, &error_abort); + + memory_region_add_subregion(mr, map->gic.its, + sysbus_mmio_get_region(sbd, 0)); + + if (!map->dtb_expose) { + return; + } + + qemu_fdt_setprop(s->cfg.fdt, gic_node, "ranges", NULL, 0); + qemu_fdt_setprop_cell(s->cfg.fdt, gic_node, "#address-cells", 2); + qemu_fdt_setprop_cell(s->cfg.fdt, gic_node, "#size-cells", 2); + + node_pat =3D g_strdup_printf("%s/its", gic_node); + node =3D versal_fdt_add_simple_subnode(s, node_pat, map->gic.its, 0x20= 000, + compatible, sizeof(compatible)); + qemu_fdt_setprop(s->cfg.fdt, node, "msi-controller", NULL, 0); + qemu_fdt_setprop_cell(s->cfg.fdt, node, "#msi-cells", 1); +} + static DeviceState *versal_create_gic(Versal *s, const VersalCpuClusterMap *map, MemoryRegion *mr, size_t num_cpu) { @@ -474,10 +521,11 @@ static DeviceState *versal_create_gic(Versal *s, redist_region_count =3D qlist_new(); qlist_append_int(redist_region_count, num_cpu); qdev_prop_set_array(dev, "redist-region-count", redist_region_count); =20 qdev_prop_set_bit(dev, "has-security-extensions", true); + qdev_prop_set_bit(dev, "has-lpi", map->gic.has_its); object_property_set_link(OBJECT(dev), "sysmem", OBJECT(mr), &error_abo= rt); =20 sysbus_realize_and_unref(sbd, &error_fatal); =20 memory_region_add_subregion(mr, map->gic.dist, @@ -499,10 +547,12 @@ static DeviceState *versal_create_gic(Versal *s, GIC_FDT_IRQ_TYPE_PPI, VERSAL_GIC_MAINT_IRQ, GIC_FDT_IRQ_FLAGS_LEVEL_HI); qemu_fdt_setprop(s->cfg.fdt, node, "interrupt-controller", NULL, 0= ); } =20 + versal_create_gic_its(s, map, dev, mr, node); + return dev; } =20 static void connect_gic_to_cpu(const VersalCpuClusterMap *map, DeviceState *gic, DeviceState *cpu, size_t = idx, --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757672409; cv=pass; d=zohomail.com; s=zohoarc; b=bS9lrRco/tp1g92n/DaoSqT82m/ezwOx+UJ9birmJ577w7xrds8WLJb8O6hz34/naJX1plYbOW22USG7mnvRoqPjEp4hRJCIrRGZGPZcvxJs16u0gzfXNphOfTUUSZHBNVR7VU+Kfd/k/IMzbGCXvhpHwSVMOuajcQT5bCuISEE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757672409; 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=pL0HLo6fgkjZuzfK6SKgZyWYR+8hr7wJ4lMUO/Evj+M=; b=I3ZBoOOZr0P/9AUK5/c2zCtr9xLViloYaaNfE8h24QxHVcdf7hjEN+9WIFTFZQCaiq/KWhQdQnO0PFsCLThz5bHTJEZEPrrY8gFUlOei6gyvE78UVeTBdSpfuxv/boFtLvKqs4jSG7vdV0/+FKsCaPCBUSJZSHIuk4h2Ri0D+UM= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757672409952777.6648708803831; Fri, 12 Sep 2025 03:20:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0e6-0000M0-DS; Fri, 12 Sep 2025 06:04:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cf-0006jf-Fx; Fri, 12 Sep 2025 06:03:17 -0400 Received: from mail-sn1nam02on20604.outbound.protection.outlook.com ([2a01:111:f403:2406::604] helo=NAM02-SN1-obe.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 1ux0cT-0001KI-9u; Fri, 12 Sep 2025 06:03:17 -0400 Received: from DS7PR05CA0023.namprd05.prod.outlook.com (2603:10b6:5:3b9::28) by DM6PR12MB4482.namprd12.prod.outlook.com (2603:10b6:5:2a8::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:02:59 +0000 Received: from DS3PEPF000099DF.namprd04.prod.outlook.com (2603:10b6:5:3b9:cafe::8e) by DS7PR05CA0023.outlook.office365.com (2603:10b6:5:3b9::28) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9137.7 via Frontend Transport; Fri, 12 Sep 2025 10:02:59 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099DF.mail.protection.outlook.com (10.167.17.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:02:59 +0000 Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:03 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:02:02 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:01 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FzmV2Zgc+wey9KK1vI616i7Blm43BE1A8V4X6AO0cvHynUjuI7Vrm8FpIj7NHzV+T0W0mxIPaO83Gl7iSpm+CIVvJYMnywt60rdP2BQzMgExiLgYy2ssKKyqz8WbWhj8ZZnaTRpujiWMO5JSG7yvrQYq//pi7uD/oKywVFyxAk/2/PqJpcnsQ5vyCpnUZMuDzL6a0XXx4BcxnKA1zjWczUW1J37lXzWeaXJZoauxowrU9UN3Wvo3oPKqT2I24TFUtKilTqtwLB2j7ZMdl23KIZWEyY7NJM9cqPgXcJqiMhUIn4/zhyap1r86Fk4aIpbJKlvDy9CpAQdoYxeeo+tUWg== 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=pL0HLo6fgkjZuzfK6SKgZyWYR+8hr7wJ4lMUO/Evj+M=; b=J8r2FT8Tyv+40WydSphpj9lybLBUwpONNrvc0roUCaUcuQtJcKrVjabT2OEZTWBfHlcVrvKUDoVH/SMtvs6G1kN6ZlmTSS2Nd6L+qIGnZ4ledS5AFP6+L7GLvEyZyCSVug+ZgVvo1hIx/XBUaWaUySIh6XNsaOP4msFprnZYH5i/4Zpg6bZy9IuwKEwW1/h770h7MKzbEQr5obXuTbHH66PIpP5VlCJhWl6cBKtNVrTKMPXmu1gfo1UtrOETEIGMofPh6+NGIWA2DS4LtkbfmMZlWtkIvf0mXqFc/p+L0l1pmQw1gHD/XeHsNGNzNk4yZ3bk+WQSfA5rTXE26VndhA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pL0HLo6fgkjZuzfK6SKgZyWYR+8hr7wJ4lMUO/Evj+M=; b=uWtEC5h3h2yGr/ECBJL3ES/Kj9FXbZk2e+c3Mz+mnd0HMoz5lXF4qjnkz8QLvuEGcCOm/xZ6oN3tHjSOrEJKCayv4ZW2D3hDl8Ddh2NXUee3Fk2MLH8y+ShZfiPyW2SLj4Y+pjRTezj6CCvjRjepj9nSu+YEja5aPY88hU8BZCg= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Francisco Iglesias , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Alistair Francis" , Frederic Konrad , Sai Pavan Boddu , Luc Michel Subject: [PATCH v5 23/47] hw/intc/arm_gicv3: Introduce a 'first-cpu-index' property Date: Fri, 12 Sep 2025 12:00:32 +0200 Message-ID: <20250912100059.103997-24-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: None (SATLEXMB04.amd.com: luc.michel@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099DF:EE_|DM6PR12MB4482:EE_ X-MS-Office365-Filtering-Correlation-Id: af1fb954-faa6-4f10-63e7-08ddf1e38dbe X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|376014|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?X0VapExJY7u6wknGPEBeJhA4YhQt6ijxWeyGblHXs6s6ZQjTUnbkX2eD8BAy?= =?us-ascii?Q?UJPvbBEO9BL4st+S4QOR9SNDVewdN6f9PnOCR4E5vePl2TTTWM/Ddl3Hn43M?= =?us-ascii?Q?zMi/JgKr8Mr4T0a+2fK1esBNfRBwCXs++fodhYkCJd5xyis8Xx1WXYvC6hOZ?= =?us-ascii?Q?diYlsskUQz5vevC7t5Gl+JTgyTebqlTxGwNAujl26QQgPnXv5VwRpAykJ+im?= =?us-ascii?Q?bowB/tjHKh/goHSP0ToSeMmp1L/yP4MYCg4TNLDN4XiGiTsy2ap3GxggnCmG?= =?us-ascii?Q?/4xyi2/qEH1ltdpDM9EwVmg0XihXHVawu7Y2aiCyfsBpBjAoKsuDJlaNwisf?= =?us-ascii?Q?xSt6dDyH2PDA/q+k4+tckk9bKjCpu5Khwrq9t4nAg5pRXRItqTt5btL/lbN+?= =?us-ascii?Q?Wd0ENYAXJXJF92m2PAf43w0d664S99ZKOIIDT9GmRWkNRLz3+wQO3ok2I96O?= =?us-ascii?Q?86d6yY3z0+D8dFO1vt68mi3OL2TXPh3ZzjOkRjeu4VppHo2YHixPaWle8cRl?= =?us-ascii?Q?R8M54npKE0GOGh9R/NYfN+LzTEB3Yzuu/Ak5ti5xNfss6x2ZtYwPXIzAKG54?= =?us-ascii?Q?30TeEGJKVljec7xyfhcftcEcSW8Og4Mpp/vDO8wlrdlkBcV0VY5lmfdx/LUg?= =?us-ascii?Q?+yD+5cvebROg0H8aX2bdXuwePlau371dqRZkxAcTOF09nxf/ODYXg5pvIz5c?= =?us-ascii?Q?q3l14t7HDlsJ8vB370LNPicbH0Orw4LWHMLAdOdjqg4ZhP1mx6/1j5buhuPI?= =?us-ascii?Q?uDhvM+gQ9dJJyJiVLxHxJIQ+FOkUDnKo9r5ltfcnoJiru4LHk2hHnMfK6Nkm?= =?us-ascii?Q?c40EfRz9KJynudT1dYMindCWUEeC/PIxgmJQDjtqkQzQWb/QwwAvka0LuisF?= =?us-ascii?Q?o1BSeqqYr/uqlLMb2J8IMnc4mkRGwVIsiAcjROAXQcVhRe9MtKyDJrjc2J9i?= =?us-ascii?Q?a3SmD1MujC+2zg+HfwLTsgAHlLH/F+NZaMIHjVmQl4lRXj9JsonJey0HaT30?= =?us-ascii?Q?2CKoqJL4JoeMICox2u+Y7UBhTLyP9q+h2DLolh35S9WJMklOSsJDkaXnPIXC?= =?us-ascii?Q?MhCKvUJrzm7OsHjXQgRIlPdX2iuvC0jPD0HJZW84lOU9DfZYVOWPhp0YzSa9?= =?us-ascii?Q?ykNTqX8yFuZiAeBIGz8NjxuwgQXkRc3PGJ7ElKeInQmwpFDHxyKxkgnL216D?= =?us-ascii?Q?TjCR+XYakAAM5/aHlQZYbdHNOO4EVfdqWOVFE18snBE86cf5djKgN7dB+n5S?= =?us-ascii?Q?0PiW6Z+/BzFaoOiUhAdOiy7ciQVPbJehQ1pI9hp95cJBnr4YJfI2xJfDK/ts?= =?us-ascii?Q?jj0MZttdQ2Mutz3xuIh/9fkJ9TSX7IW/H4dqsss54QMG4no4au1ZTgTTdsB9?= =?us-ascii?Q?MnSB5pjh0/VahQ4ERIuce/knDyUqTw1vDBO/DDdjMCIitC+b8JK1wdXwpaQg?= =?us-ascii?Q?2DFFpC0bW4xn2h36a2koClkdsKk0y8tUQwF7YFhmIdyjroWbDe68SmMxpDR0?= =?us-ascii?Q?WJGnInYYdfT/69FsV3VQfrz4I70k9Wukwsse?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(1800799024)(376014)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:02:59.3621 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: af1fb954-faa6-4f10-63e7-08ddf1e38dbe X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099DF.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4482 Received-SPF: permerror client-ip=2a01:111:f403:2406::604; envelope-from=Luc.Michel@amd.com; helo=NAM02-SN1-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757672411246116600 Content-Type: text/plain; charset="utf-8" From: Francisco Iglesias Introduce a 'first-cpu-index' property for specifying the first QEMU CPU connected to the GICv3. This makes it possible to have multiple instances of the GICv3 connected to different CPU clusters. For KVM, mark this property has unsupported. It probably does not make much sense as it is intented to be used to model non-SMP systems. Signed-off-by: Luc Michel Signed-off-by: Francisco Iglesias Reviewed-by: Sai Pavan Boddu Reviewed-by: Peter Maydell --- include/hw/intc/arm_gicv3_common.h | 1 + hw/intc/arm_gicv3_common.c | 3 ++- hw/intc/arm_gicv3_cpuif.c | 2 +- hw/intc/arm_gicv3_kvm.c | 6 ++++++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/include/hw/intc/arm_gicv3_common.h b/include/hw/intc/arm_gicv3= _common.h index 572d971d22c..38aa1961c50 100644 --- a/include/hw/intc/arm_gicv3_common.h +++ b/include/hw/intc/arm_gicv3_common.h @@ -227,10 +227,11 @@ struct GICv3State { MemoryRegion iomem_dist; /* Distributor */ GICv3RedistRegion *redist_regions; /* Redistributor Regions */ uint32_t *redist_region_count; /* redistributor count within each regi= on */ uint32_t nb_redist_regions; /* number of redist regions */ =20 + uint32_t first_cpu_idx; uint32_t num_cpu; uint32_t num_irq; uint32_t revision; uint32_t maint_irq; bool lpi_enable; diff --git a/hw/intc/arm_gicv3_common.c b/hw/intc/arm_gicv3_common.c index e438d8c042d..2d0df6da86c 100644 --- a/hw/intc/arm_gicv3_common.c +++ b/hw/intc/arm_gicv3_common.c @@ -434,11 +434,11 @@ static void arm_gicv3_common_realize(DeviceState *dev= , Error **errp) } =20 s->cpu =3D g_new0(GICv3CPUState, s->num_cpu); =20 for (i =3D 0; i < s->num_cpu; i++) { - CPUState *cpu =3D qemu_get_cpu(i); + CPUState *cpu =3D qemu_get_cpu(s->first_cpu_idx + i); uint64_t cpu_affid; =20 s->cpu[i].cpu =3D cpu; s->cpu[i].gic =3D s; /* Store GICv3CPUState in CPUARMState gicv3state pointer */ @@ -620,10 +620,11 @@ static const Property arm_gicv3_common_properties[] = =3D { DEFINE_PROP_BOOL("force-8-bit-prio", GICv3State, force_8bit_prio, 0), DEFINE_PROP_ARRAY("redist-region-count", GICv3State, nb_redist_regions, redist_region_count, qdev_prop_uint32, uint32_t), DEFINE_PROP_LINK("sysmem", GICv3State, dma, TYPE_MEMORY_REGION, MemoryRegion *), + DEFINE_PROP_UINT32("first-cpu-index", GICv3State, first_cpu_idx, 0), }; =20 static void arm_gicv3_common_class_init(ObjectClass *klass, const void *da= ta) { DeviceClass *dc =3D DEVICE_CLASS(klass); diff --git a/hw/intc/arm_gicv3_cpuif.c b/hw/intc/arm_gicv3_cpuif.c index 4b4cf091570..1af7690b958 100644 --- a/hw/intc/arm_gicv3_cpuif.c +++ b/hw/intc/arm_gicv3_cpuif.c @@ -3022,11 +3022,11 @@ void gicv3_init_cpuif(GICv3State *s) * registers with the CPU */ int i; =20 for (i =3D 0; i < s->num_cpu; i++) { - ARMCPU *cpu =3D ARM_CPU(qemu_get_cpu(i)); + ARMCPU *cpu =3D ARM_CPU(qemu_get_cpu(s->first_cpu_idx + i)); GICv3CPUState *cs =3D &s->cpu[i]; =20 /* * If the CPU doesn't define a GICv3 configuration, probably becau= se * in real hardware it doesn't have one, then we use default values diff --git a/hw/intc/arm_gicv3_kvm.c b/hw/intc/arm_gicv3_kvm.c index 0cd14d78a75..9829e2146da 100644 --- a/hw/intc/arm_gicv3_kvm.c +++ b/hw/intc/arm_gicv3_kvm.c @@ -819,10 +819,16 @@ static void kvm_arm_gicv3_realize(DeviceState *dev, E= rror **errp) if (s->nmi_support) { error_setg(errp, "NMI is not supported with the in-kernel GIC"); return; } =20 + if (s->first_cpu_idx !=3D 0) { + error_setg(errp, "Non-zero first-cpu-idx is unsupported with the " + "in-kernel GIC"); + return; + } + gicv3_init_irqs_and_mmio(s, kvm_arm_gicv3_set_irq, NULL); =20 for (i =3D 0; i < s->num_cpu; i++) { ARMCPU *cpu =3D ARM_CPU(qemu_get_cpu(i)); =20 --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671903; cv=pass; d=zohomail.com; s=zohoarc; b=aD6SOWG1xXy6KXTkugmDl/5gfhAAtaNAow09pgRoYd11Ecn1srKYwMyfM8n/wb3t0e5NLO3w1gEch+PClvRCnAMNaQbQvLIpIKjJIy1pKnlo+HhOIymGQ9/5733CzByiUj5qsdXAdCy6QJffCSOZ+SG8DryuGsPuvpuTKqRrfVo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671903; 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=gqgxBZAO8511gKWwPke67wknb/3x0Dt+P+73rMdb1Yk=; b=Fxi2b4JVET8R31LaWflVwBgDkWSyEMf9W5YgOIPma98EF8oYdJdX8yVH/RGeDelA/ffEvzPjN29h1+2U4cGlPv43YTlsXOWIqqJZsMcK2DKgtx8btXflzF0KLmh2CRjEdiM3j+597aUe5qFp1Qf5tyk9jt7U1LrkPcebidKFTbU= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671903127919.4241026008801; Fri, 12 Sep 2025 03:11:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0eG-0000zf-5l; Fri, 12 Sep 2025 06:04:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0ci-0006u6-Tn; Fri, 12 Sep 2025 06:03:20 -0400 Received: from mail-co1nam11on20606.outbound.protection.outlook.com ([2a01:111:f403:2416::606] helo=NAM11-CO1-obe.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 1ux0cV-0001LE-Ed; Fri, 12 Sep 2025 06:03:20 -0400 Received: from DS2PEPF00004561.namprd21.prod.outlook.com (2603:10b6:f:fc00::505) by IA0PPF80FB91A80.namprd12.prod.outlook.com (2603:10b6:20f:fc04::bd5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.18; Fri, 12 Sep 2025 10:03:01 +0000 Received: from DS1PEPF00017098.namprd05.prod.outlook.com (2603:10b6:2c:400:0:1007:0:6) by DS2PEPF00004561.outlook.office365.com (2603:10b6:f:fc00::505) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9137.7 via Frontend Transport; Fri, 12 Sep 2025 10:03:01 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS1PEPF00017098.mail.protection.outlook.com (10.167.18.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:01 +0000 Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:04 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:02:04 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:02 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UBztXX7DSXWE2ZBiQPpioK3WolpEprZGW4UaepwJTwxVBLHkYbDqkM5tKsPJJ/n5RSTznBciC4elt58q1BHeuzWGrkFJS+0Os9/aRsj//Ez1bMc2WsRE0A6bkZFqVhOZqr4jgkBivcrHc/aMorhOi3vgBZqpt/t3l3rPnG034SocGvJqBws0LqLJpuj7/MszxoDCCQ0hnHdgaPlXpI5DQiMMu3k6p34TacM7v1BB2nkRcoH5qsrg4q/OQFiKFF2Z6N0JZDungoYteBvte6qzqY+nRQNRh7WkMLpF4mm2DWPF2StymsxgwR3c1I0RuxHK3ZCefKmG3qvyN00gfuspDg== 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=gqgxBZAO8511gKWwPke67wknb/3x0Dt+P+73rMdb1Yk=; b=u+lm229wPq82EgLR0A3Z8iXpRGtOcKtuMkaEv3Xbq/jt5GoGuSWSbC4JGzRLYPCFvzsyjzMiepGwGok1wDzel+VLP2D59XkozgrxElvVSS5K/lHW75yxRz6+yfrgt3Krs+ohnYmFi2vOFHaaTaYCG9xX++Gk8/csWbvaO/C6pLtOwBV2IPA58lDNBDBnJG1ie8f0csabLUGhSm/Z1KmQ6ccpWgrkh5w3CXpbIwDMYb6JEUyLv9waRijlOlp0JYGQADn1DlKvdePQQYvfONw+HzcDcrWK1dJ7HbuvKobUjiywyFgSttzPJ1NsKNyELz+VzOi7EHdDkYnGcnIKSK1uWA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gqgxBZAO8511gKWwPke67wknb/3x0Dt+P+73rMdb1Yk=; b=a4hAoYtH5JDg+WCSaBaNyL+25vWP5Tu2us1sLBN4E04JKKdewDTSU+NXG0Hbj7ss63RgENJUQfMkAWs3Eh6vpK/DaWepEXfij69hfedDp9gjtLiR9+DA+cq3NZYa6WaCmISDCirRPGjEkkTabn3cXe1/83dLOdlcQH74heIDEEU= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 24/47] hw/arm/xlnx-versal: add support for multiple GICs Date: Fri, 12 Sep 2025 12:00:33 +0200 Message-ID: <20250912100059.103997-25-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: None (SATLEXMB04.amd.com: luc.michel@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF00017098:EE_|IA0PPF80FB91A80:EE_ X-MS-Office365-Filtering-Correlation-Id: 7206afe7-9087-4024-f0a1-08ddf1e38ec4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|82310400026|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?X4ihRSpBCw+xrdDGHXG/NVDFj5TYnH0PsvjDhsZm3Zx1CZ8ZYHgw19hEWtY1?= =?us-ascii?Q?6fDT/vVCls6kqwdO784rLXOCO1Mp0acjpnKzaR/z2Ibzpc85e5CF4RLgz7lB?= =?us-ascii?Q?kb7UysrwMZqjX2toUgol5UV0t+9Qw7HGZWcGSKIbHVcvfcWwBU/RV1sWjQqD?= =?us-ascii?Q?+/rvKCg9gP/N41yQhf8vRRWLcSWEMMrfOjNb+M+4pnCOxVu6UKSrHQYQMK5o?= =?us-ascii?Q?++4zmTvQvuxfQ2KYo1buhLc+Pmjxt2b3dAiV8616Na+nZDcD5EDGu18QexbK?= =?us-ascii?Q?CIvmkgqaM6Cr9tkPOxq62CDdpdzo2j/9UfkMnRTIyb15+Wfoa70uZ+Dk7WeV?= =?us-ascii?Q?nt93Qb6dKrgkYvkDEMmEpZtPKRn3JzurAuDgDtT04Yse5OtyPY83A/6sQEg4?= =?us-ascii?Q?o40JgGUma+Z3WB2XNtDfcRvavbKwZN06hp2eVXDiFUOEhSW8f3b1xy+7hPVz?= =?us-ascii?Q?WRln4gHrhiU5Yx+yR6Ik6wj6CSppprs3aNe91MNKfb/ahvIAHIw4mJXxYpQK?= =?us-ascii?Q?bvlQePxsQv5da6q7fx1rbeJyLm+vMbLtw2sV2HiLUmIj8tjsEUeEotwJaM/A?= =?us-ascii?Q?2I74PzMTfzoC37j673JicC+zG3bLFIt0kJhNo9PfCVwO0ji7rSCkORPD8wID?= =?us-ascii?Q?2uv/qq7ShDWcjaUlyChGjAQac8rgOmZDgXWbix7ANaX7+pnPiR2jz5w3ZYo0?= =?us-ascii?Q?ON6vuEbV2GehYkRw9rvUhgOGgTq1jFcYmgDfVAM9ge9hK/h3BqG66OjBZP9G?= =?us-ascii?Q?TBwZnCTJ6DInjAWUT/JwQiDhhNC0j5o/OI7kloQymUldAjTZWK/xHbFogiUA?= =?us-ascii?Q?zZFmE7zfQPLz67osi3LBXgmMXVVBdq/agDgIerUtTsdTUwqDPWHEF5mC7K8P?= =?us-ascii?Q?b8Ar3qLqtyS35jLu6K4rXxghPrlqiRRfbH+3eAGNuGWFNIqQJ7vGnWvEI4Cn?= =?us-ascii?Q?RNsffWWLe0fYc75YRmlDdiB6e7xUnyRl+TNaevAiYfqKmjlBEB2uxMTi1JTy?= =?us-ascii?Q?ueLUOt7mZuGNMYaWjuiGaaGsy80rxvdCTZyx+pOKzCU5KgYfT0uGGLNogoSV?= =?us-ascii?Q?7dTPIvjxZe+ARfc3DjZb5CJSEVdllA0M9dJdSy1iFbsYqJT2HQ6I9qjJR9Dr?= =?us-ascii?Q?Q/m2JC2ZnjAYKh68JtIfIaY7hY1EdnxCPZd3GRvPW1TW09Q3D1TIVDVjM1ly?= =?us-ascii?Q?XxPyvthP0t5IflBzWb7TG7aM9R2GEzy/jjDWTR/jtekFvsfB7G0yncHml8rp?= =?us-ascii?Q?NbvhJ7xtubf8pg3QDnG70EhOqbHoa5hMLfkJfv4gFWzxKdmn6kvDoEFM7Bx1?= =?us-ascii?Q?SnbdSTCMS07eEKlj8jLuhKn/OcJhOjAGtx8vhkJVcmY3A2kf6d5hmHnm3loq?= =?us-ascii?Q?SsQrvJszRqdkzbQxi6DIoqYioU5pWhk9qMevjaKFdQ63xgQueIgJzO/X47F4?= =?us-ascii?Q?ab9PLyaBPaa5CB2wtFZU21j3an/7FNuxyhgy/J5jZ3E3lp5yziPktJ0ruvku?= =?us-ascii?Q?QGHoCSdLe4esMvN3XZKLDqL/UamWZPZQiBet?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(1800799024)(82310400026)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:01.0825 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7206afe7-9087-4024-f0a1-08ddf1e38ec4 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF00017098.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PPF80FB91A80 Received-SPF: permerror client-ip=2a01:111:f403:2416::606; envelope-from=Luc.Michel@amd.com; helo=NAM11-CO1-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671903894116600 Content-Type: text/plain; charset="utf-8" The Versal SoC contains two GICs: one GICv3 in the APU and one GICv2 in the RPU (currently not instantiated). To prepare for the GICv2 instantiation, add support for multiple GICs when connecting interrupts. When a GIC is created, the first-cpu-index property is set on it, and a pointer to the GIC is stored in the intc array. When connecting an IRQ, a TYPE_SPLIT_IRQ device is created with its num-lines property set to the number of GICs in the SoC. The split device is used to fan out the IRQ to all the GICs. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/arm/xlnx-versal.h | 1 + hw/arm/xlnx-versal.c | 56 +++++++++++++++++++++++++++++++++--- 2 files changed, 53 insertions(+), 4 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 9d9ccfb0014..984f9f2ccdd 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -40,10 +40,11 @@ OBJECT_DECLARE_TYPE(Versal, VersalClass, XLNX_VERSAL_BA= SE) struct Versal { /*< private >*/ SysBusDevice parent_obj; =20 /*< public >*/ + GArray *intc; MemoryRegion mr_ps; =20 struct { /* 4 ranges to access DDR. */ MemoryRegion mr_ddr_ranges[4]; diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 6252e0742c4..1c79a3aa047 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -43,10 +43,11 @@ #include "hw/misc/xlnx-versal-cframe-reg.h" #include "hw/or-irq.h" #include "hw/misc/xlnx-versal-crl.h" #include "hw/intc/arm_gicv3_common.h" #include "hw/intc/arm_gicv3_its_common.h" +#include "hw/core/split-irq.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") #define GEM_REVISION 0x40070106 =20 @@ -315,10 +316,47 @@ static inline Object *versal_get_child_idx(Versal *s,= const char *child, g_autofree char *n =3D g_strdup_printf("%s[%zu]", child, idx); =20 return versal_get_child(s, n); } =20 +/* + * The SoC embeds multiple GICs. They all receives the same IRQ lines at t= he + * same index. This function creates a TYPE_SPLIT_IRQ device to fan out the + * given IRQ input to all the GICs. + * + * The TYPE_SPLIT_IRQ devices lie in the /soc/irq-splits QOM container + */ +static qemu_irq versal_get_gic_irq(Versal *s, int irq_idx) +{ + DeviceState *split; + Object *container =3D versal_get_child(s, "irq-splits"); + int idx =3D FIELD_EX32(irq_idx, VERSAL_IRQ, IRQ); + g_autofree char *name =3D g_strdup_printf("irq[%d]", idx); + + split =3D DEVICE(object_resolve_path_at(container, name)); + + if (split =3D=3D NULL) { + size_t i; + + split =3D qdev_new(TYPE_SPLIT_IRQ); + qdev_prop_set_uint16(split, "num-lines", s->intc->len); + object_property_add_child(container, name, OBJECT(split)); + qdev_realize_and_unref(split, NULL, &error_abort); + + for (i =3D 0; i < s->intc->len; i++) { + DeviceState *gic; + + gic =3D g_array_index(s->intc, DeviceState *, i); + qdev_connect_gpio_out(split, i, qdev_get_gpio_in(gic, idx)); + } + } else { + g_assert(FIELD_EX32(irq_idx, VERSAL_IRQ, ORED)); + } + + return qdev_get_gpio_in(split, 0); +} + /* * When the R_VERSAL_IRQ_ORED flag is set on an IRQ descriptor, this funct= ion is * used to return the corresponding or gate input IRQ. The or gate is crea= ted if * not already existant. * @@ -351,16 +389,14 @@ static qemu_irq versal_get_irq_or_gate_in(Versal *s, = int irq_idx, =20 static qemu_irq versal_get_irq(Versal *s, int irq_idx) { qemu_irq irq; bool ored; - DeviceState *gic; =20 ored =3D FIELD_EX32(irq_idx, VERSAL_IRQ, ORED); =20 - gic =3D DEVICE(versal_get_child_idx(s, "apu-gic", 0)); - irq =3D qdev_get_gpio_in(gic, FIELD_EX32(irq_idx, VERSAL_IRQ, IRQ)); + irq =3D versal_get_gic_irq(s, irq_idx); =20 if (ored) { irq =3D versal_get_irq_or_gate_in(s, irq_idx, irq); } =20 @@ -499,10 +535,11 @@ static void versal_create_gic_its(Versal *s, } =20 static DeviceState *versal_create_gic(Versal *s, const VersalCpuClusterMap *map, MemoryRegion *mr, + int first_cpu_idx, size_t num_cpu) { DeviceState *dev; SysBusDevice *sbd; QList *redist_region_count; @@ -523,10 +560,11 @@ static DeviceState *versal_create_gic(Versal *s, qdev_prop_set_array(dev, "redist-region-count", redist_region_count); =20 qdev_prop_set_bit(dev, "has-security-extensions", true); qdev_prop_set_bit(dev, "has-lpi", map->gic.has_its); object_property_set_link(OBJECT(dev), "sysmem", OBJECT(mr), &error_abo= rt); + qdev_prop_set_uint32(dev, "first-cpu-index", first_cpu_idx); =20 sysbus_realize_and_unref(sbd, &error_fatal); =20 memory_region_add_subregion(mr, map->gic.dist, sysbus_mmio_get_region(sbd, 0)); @@ -549,10 +587,12 @@ static DeviceState *versal_create_gic(Versal *s, qemu_fdt_setprop(s->cfg.fdt, node, "interrupt-controller", NULL, 0= ); } =20 versal_create_gic_its(s, map, dev, mr, node); =20 + g_array_append_val(s->intc, dev); + return dev; } =20 static void connect_gic_to_cpu(const VersalCpuClusterMap *map, DeviceState *gic, DeviceState *cpu, size_t = idx, @@ -606,13 +646,15 @@ static inline void versal_create_and_connect_gic(Vers= al *s, MemoryRegion *mr, DeviceState **cpus, size_t num_cpu) { DeviceState *gic; + int first_cpu_idx; size_t i; =20 - gic =3D versal_create_gic(s, map, mr, num_cpu); + first_cpu_idx =3D CPU(cpus[0])->cpu_index; + gic =3D versal_create_gic(s, map, mr, first_cpu_idx, num_cpu); =20 for (i =3D 0; i < num_cpu; i++) { connect_gic_to_cpu(map, gic, cpus[i], i, num_cpu); } } @@ -1541,10 +1583,14 @@ static void versal_realize(DeviceState *dev, Error = **errp) =20 s->phandle.clk_25mhz =3D fdt_add_clk_node(s, "/clk25", 25 * 1000 * 100= 0); s->phandle.clk_125mhz =3D fdt_add_clk_node(s, "/clk125", 125 * 1000 * = 1000); s->phandle.gic =3D qemu_fdt_alloc_phandle(s->cfg.fdt); =20 + container =3D object_new(TYPE_CONTAINER); + object_property_add_child(OBJECT(s), "irq-splits", container); + object_unref(container); + container =3D object_new(TYPE_CONTAINER); object_property_add_child(OBJECT(s), "irq-or-gates", container); object_unref(container); =20 qemu_fdt_setprop_cell(s->cfg.fdt, "/", "interrupt-parent", s->phandle.= gic); @@ -1722,10 +1768,11 @@ static void versal_base_init(Object *obj) =20 memory_region_init(&s->lpd.rpu.mr, obj, "mr-rpu", UINT64_MAX); memory_region_init(&s->mr_ps, obj, "mr-ps-switch", UINT64_MAX); memory_region_init_alias(&s->lpd.rpu.mr_ps_alias, OBJECT(s), "mr-rpu-ps-alias", &s->mr_ps, 0, UINT64_MAX); + s->intc =3D g_array_new(false, false, sizeof(DeviceState *)); =20 num_can =3D versal_get_map(s)->num_canfd; s->cfg.canbus =3D g_new0(CanBusState *, num_can); =20 for (i =3D 0; i < num_can; i++) { @@ -1739,10 +1786,11 @@ static void versal_base_init(Object *obj) =20 static void versal_base_finalize(Object *obj) { Versal *s =3D XLNX_VERSAL_BASE(obj); =20 + g_array_free(s->intc, true); g_free(s->cfg.canbus); } =20 static const Property versal_properties[] =3D { DEFINE_PROP_LINK("ddr", Versal, cfg.mr_ddr, TYPE_MEMORY_REGION, --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757672249; cv=pass; d=zohomail.com; s=zohoarc; b=UHHNwf4uVtIYSVPDki2ijGxCsf3z9hBFnNOczmF66302bOBfBzqcyC+r437wZaQcqnWKOFWzowWNwHQbfOoUERT5bQ0DuQv5Wzt1XjasS4fcmXpEREGJNCw5AjxhbEzuLtZyRUMUiZQ+SXvlRjc1FVj9G/WCWKigU+TJnhvGwa4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757672249; 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=dUokdPI+Nu5pddVZi7wMvKWlqmEOmDDER/Si15Y8W0o=; b=J+/gaWn+LtBwOnfFcZ8Zn/ZGh9r9NB69NDA8GA8LC+kdumrAFl0WO4wgcNoSQoF+kkV/uBmjiN4wz1MN4fIz0TXVj7dOUym66BuwA62bSb7sbXzyqElmqdI9CYKS/UlnRdzsWDoaP4bdcp1lJeZQ+yZ3MkAh5sGqvrWUFGe7QYw= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17576722493771000.7457782535507; Fri, 12 Sep 2025 03:17:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0df-0008Q6-37; Fri, 12 Sep 2025 06:04:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cz-0007QN-IS; Fri, 12 Sep 2025 06:03:37 -0400 Received: from mail-co1nam11on20628.outbound.protection.outlook.com ([2a01:111:f403:2416::628] helo=NAM11-CO1-obe.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 1ux0ce-0001Mb-Ox; Fri, 12 Sep 2025 06:03:28 -0400 Received: from DM6PR02CA0041.namprd02.prod.outlook.com (2603:10b6:5:177::18) by SJ0PR12MB6710.namprd12.prod.outlook.com (2603:10b6:a03:44c::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:03:05 +0000 Received: from DS1PEPF0001709B.namprd05.prod.outlook.com (2603:10b6:5:177:cafe::4) by DM6PR02CA0041.outlook.office365.com (2603:10b6:5:177::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.18 via Frontend Transport; Fri, 12 Sep 2025 10:03:05 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS1PEPF0001709B.mail.protection.outlook.com (10.167.18.105) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:05 +0000 Received: from SATLEXMB05.amd.com (10.181.40.146) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:06 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB05.amd.com (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:02:06 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:04 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=I1VTBMkDMA5O8MhvehyXitpixwxiM9PI3Q0rXIGa5HBuG9+K47+8ZWpEqNfp1x039HNED5NmkLKtWNDas/fpHT47b47B4pOoS/RP8gi3ZMHHvAU9qyEgyxEVi7rbUrpXiY9wQW6hIgOi6QaaZTbczTHLDTJvKHkx+b4xwjA0RfM99YX6q134odgdKinwyDlTfez6ZtD5k29H5Lr7Ih9Hn6dsj34V5AGpTQ0yN/HvYbuy/3Y7pp4Nu+EvSPGs1V5bOCzG+Ui+uxq5JSZ/Lp/fwVllU1lPMVAxzkqjc7qEs42gmSKVb+hA7XHef7zXkxOdxWYj4HLr6f0LUJExoGHx7w== 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=dUokdPI+Nu5pddVZi7wMvKWlqmEOmDDER/Si15Y8W0o=; b=Q68OWeGBQlH80lFmMpHpo3Gz1KWGn0Ul/K8+Gj9jrd6Lepte+JR7DjUI0549mzUH0+BJGC5ji/vNhwkGydl/hTstkC0XBO5D0EO/SU9QpUmgFq9PZMNgLf9oKFrVxY4Q1H/sb8OzbOxC7O9EVQt24FKs6t6E4h+kd+7GoUaumehsQl9sSFigAfWljXdYUX4PHbwgr2ai9Op6+Fdo32e1GS0GEWvWji8B2s0xtgjpQjrleygFmcabOk14ziOpKj9ACrVGjlt8cf1C3mwrIuJ9EyhzlUjd8vxT7NtengoBfdm7UyPWQsn3ex/N8DQwxEqONdS20lhF3z3NJpIboWqOFw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dUokdPI+Nu5pddVZi7wMvKWlqmEOmDDER/Si15Y8W0o=; b=z4zswzmVq7CwAEsq4SkHJwmlV62Px9OH0S2+InpcAXMerB5JwtCYuVi8AKu+OA19T2nJjZ9OtqC03OKdgyK5UkRF1B2Yk6YAEUTYsSE5IelRoUTgYgOaaNzcNhwO9iSlQszgFQ9SQBNNSXeB54KwiMWYOovoNrwVGpDtqogVeFs= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 25/47] hw/arm/xlnx-versal: add support for GICv2 Date: Fri, 12 Sep 2025 12:00:34 +0200 Message-ID: <20250912100059.103997-26-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: None (SATLEXMB05.amd.com: luc.michel@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0001709B:EE_|SJ0PR12MB6710:EE_ X-MS-Office365-Filtering-Correlation-Id: 6a4ef4d7-8573-48b9-efd2-08ddf1e39138 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|82310400026|376014|1800799024|30052699003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Ail3KYb0hXsWWA4iTYuFVukAGlG+mzIwF7XLCO/mvy43sy60h9cAQKzBltMU?= =?us-ascii?Q?g7cT7EPZs7B4RIlerrFbC+bx+dHt+JUOqneykM+RxKLmdM9360yu491jfSRf?= =?us-ascii?Q?gcUEOQcN+X2tIP+46kBm/maKfK5HrXKTkJ8yqnQukwOb5p2dfhOJb1OPN0Wq?= =?us-ascii?Q?4wI14oIkJIl0tlEPF/1c5rS99xgHf3vDdUQ1QhBMYCsFoNkbLfekMTj51yUO?= =?us-ascii?Q?vQaOoXHA5bMmpazybwLwAL2kB925dVPHTr6qcCsGpPL25D1A/YcHabM/enpz?= =?us-ascii?Q?pqfutCa7/tM3b1t0hHDgn2eCVj6nH+eQF1ZBZh3UVg3G2Mn9CBYmUoGhbU6J?= =?us-ascii?Q?xywm3Q9FdonGkLp8w893lkz892AcrxLQyttipvZaA5LlbV+UOWcIO2ah0afL?= =?us-ascii?Q?PEh4SXeXQcFTiN5zOq8r5r8H7fuUcbryWUBfdrtMVv0TVuNclcAOkNAQARZz?= =?us-ascii?Q?ocM9Jk7H+ogjO7p4tH+5nggNqxsT2xDPw4HbsQsQwDZpsXT8/vYGv1p1tFUs?= =?us-ascii?Q?J+sjWAXKha4qSoD5BsM3vU1Dgfq9+qudf6sRxCXAKKnPpavwglgWP9WkiRuG?= =?us-ascii?Q?sxyuAOYOabG4RrouXopFzLfPWiK+t4YEcJHyx8QfwUZZ9sTG/rrcIkcPh5x9?= =?us-ascii?Q?P8KDaQlf/8f/5MUMx8CozX/B2NMulVp5HVoqDNKCsJUhcmuMRukJNoL9u3Wi?= =?us-ascii?Q?bMq4YqgEb3mv55k3NpGrrqBJE4pqB+anE5g8wriOqpyKQz7rdY1Yk5GR46wv?= =?us-ascii?Q?46h7htNgaWmPM54Rhr1V2PfghuBSUN8B5ARmOLEvrvleFvqz/YIy4ksHXStU?= =?us-ascii?Q?N+dnrZxoo42Mvk0RXzOvHWg5wYOj+/PdrEMNNlmtWNmE6CZA/xHvUNxJjSHz?= =?us-ascii?Q?4EuiqAW3m0Qm8QK68bcd6Hsz/9vac//yhmPELlWzLmahHlOCQi6MIUOr194a?= =?us-ascii?Q?KH8T287lMiNh6YUMmBcoEBxnOMMQ4qS0/7sobikKWfl27oHOP4WZ4g741SHv?= =?us-ascii?Q?SbJdjCAU+3vfYHB0BkL4jhut7GIdevANyfMAn1lN6BbvAmff9H6PduJgA65q?= =?us-ascii?Q?dch7S1znoO2KIccy8xX47PGiiesQmU/TvsEM45LlQANvlJxvRBjP9y2r4Zus?= =?us-ascii?Q?YAdBefU73apjQhOIAxaGPP4fC1H5lzdJAKmWERo/xpnS13tqDaJTIH765yfs?= =?us-ascii?Q?wV2gThbewhOZmn9VsUgWoQtb7Z9qqCpBh4qV8qyUVzTRDfHpPQiZHZFf7d1r?= =?us-ascii?Q?jG44k5ycKNLUW5xKYBNLnjFGW70jRIj2gzWwYthu+ldQfPPf5ipo2KvqEOW9?= =?us-ascii?Q?Xg1dsR2knU+CHhhN2J5ug/GK1Ibs+s0pomanD4A7jsvRh00VEBDvFIw7uOO3?= =?us-ascii?Q?dxJC8XecgsClTuk4+PqgwiKuigQrMO/uIerYjU3i6Q+srkwM3nJDnRBpEsoD?= =?us-ascii?Q?SQB62fGlA2Nr/T+IXne99UFXSPUByMpO7STzVMbzn6HvuTdl0kWjsP+fh/iT?= =?us-ascii?Q?YqM4puTA1nHVsm/api8iW88z8Jk7ft1oXmB4?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(36860700013)(82310400026)(376014)(1800799024)(30052699003); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:05.1974 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6a4ef4d7-8573-48b9-efd2-08ddf1e39138 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0001709B.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB6710 Received-SPF: permerror client-ip=2a01:111:f403:2416::628; envelope-from=Luc.Michel@amd.com; helo=NAM11-CO1-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757672250193116600 Content-Type: text/plain; charset="utf-8" Add support for GICv2 instantiation in the Versal SoC. This is in preparation for the RPU refactoring. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- hw/arm/xlnx-versal.c | 82 +++++++++++++++++++++++++++++++++----------- 1 file changed, 62 insertions(+), 20 deletions(-) diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 1c79a3aa047..d5dbbe10a6d 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -43,10 +43,11 @@ #include "hw/misc/xlnx-versal-cframe-reg.h" #include "hw/or-irq.h" #include "hw/misc/xlnx-versal-crl.h" #include "hw/intc/arm_gicv3_common.h" #include "hw/intc/arm_gicv3_its_common.h" +#include "hw/intc/arm_gic.h" #include "hw/core/split-irq.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") #define GEM_REVISION 0x40070106 @@ -72,10 +73,11 @@ typedef struct VersalSimplePeriphMap { =20 typedef struct VersalGicMap { int version; uint64_t dist; uint64_t redist; + uint64_t cpu_iface; uint64_t its; size_t num_irq; bool has_its; } VersalGicMap; =20 @@ -501,10 +503,14 @@ static void versal_create_gic_its(Versal *s, DeviceState *dev; SysBusDevice *sbd; g_autofree char *node_pat =3D NULL, *node =3D NULL; const char compatible[] =3D "arm,gic-v3-its"; =20 + if (map->gic.version !=3D 3) { + return; + } + if (!map->gic.has_its) { return; } =20 dev =3D qdev_new(TYPE_ARM_GICV3_ITS); @@ -540,49 +546,85 @@ static DeviceState *versal_create_gic(Versal *s, int first_cpu_idx, size_t num_cpu) { DeviceState *dev; SysBusDevice *sbd; - QList *redist_region_count; g_autofree char *node =3D NULL; g_autofree char *name =3D NULL; - const char compatible[] =3D "arm,gic-v3"; + const char gicv3_compat[] =3D "arm,gic-v3"; + const char gicv2_compat[] =3D "arm,cortex-a15-gic"; + + switch (map->gic.version) { + case 2: + dev =3D qdev_new(gic_class_name()); + break; + + case 3: + dev =3D qdev_new(gicv3_class_name()); + break; + + default: + g_assert_not_reached(); + } =20 - dev =3D qdev_new(gicv3_class_name()); name =3D g_strdup_printf("%s-gic[*]", map->name); object_property_add_child(OBJECT(s), name, OBJECT(dev)); sbd =3D SYS_BUS_DEVICE(dev); - qdev_prop_set_uint32(dev, "revision", 3); + qdev_prop_set_uint32(dev, "revision", map->gic.version); qdev_prop_set_uint32(dev, "num-cpu", num_cpu); qdev_prop_set_uint32(dev, "num-irq", map->gic.num_irq + 32); - - redist_region_count =3D qlist_new(); - qlist_append_int(redist_region_count, num_cpu); - qdev_prop_set_array(dev, "redist-region-count", redist_region_count); - qdev_prop_set_bit(dev, "has-security-extensions", true); - qdev_prop_set_bit(dev, "has-lpi", map->gic.has_its); - object_property_set_link(OBJECT(dev), "sysmem", OBJECT(mr), &error_abo= rt); qdev_prop_set_uint32(dev, "first-cpu-index", first_cpu_idx); =20 + if (map->gic.version =3D=3D 3) { + QList *redist_region_count; + + redist_region_count =3D qlist_new(); + qlist_append_int(redist_region_count, num_cpu); + qdev_prop_set_array(dev, "redist-region-count", redist_region_coun= t); + qdev_prop_set_bit(dev, "has-lpi", map->gic.has_its); + object_property_set_link(OBJECT(dev), "sysmem", OBJECT(mr), + &error_abort); + + } + sysbus_realize_and_unref(sbd, &error_fatal); =20 memory_region_add_subregion(mr, map->gic.dist, sysbus_mmio_get_region(sbd, 0)); - memory_region_add_subregion(mr, map->gic.redist, - sysbus_mmio_get_region(sbd, 1)); + + if (map->gic.version =3D=3D 3) { + memory_region_add_subregion(mr, map->gic.redist, + sysbus_mmio_get_region(sbd, 1)); + } else { + memory_region_add_subregion(mr, map->gic.cpu_iface, + sysbus_mmio_get_region(sbd, 1)); + } =20 if (map->dtb_expose) { - node =3D versal_fdt_add_subnode(s, "/gic", map->gic.dist, compatib= le, - sizeof(compatible)); + if (map->gic.version =3D=3D 3) { + node =3D versal_fdt_add_subnode(s, "/gic", map->gic.dist, + gicv3_compat, + sizeof(gicv3_compat)); + qemu_fdt_setprop_sized_cells(s->cfg.fdt, node, "reg", + 2, map->gic.dist, + 2, 0x10000, + 2, map->gic.redist, + 2, GICV3_REDIST_SIZE * num_cpu); + } else { + node =3D versal_fdt_add_subnode(s, "/gic", map->gic.dist, + gicv2_compat, + sizeof(gicv2_compat)); + qemu_fdt_setprop_sized_cells(s->cfg.fdt, node, "reg", + 2, map->gic.dist, + 2, 0x1000, + 2, map->gic.cpu_iface, + 2, 0x1000); + } + qemu_fdt_setprop_cell(s->cfg.fdt, node, "phandle", s->phandle.gic); qemu_fdt_setprop_cell(s->cfg.fdt, node, "#interrupt-cells", 3); - qemu_fdt_setprop_sized_cells(s->cfg.fdt, node, "reg", - 2, map->gic.dist, - 2, 0x10000, - 2, map->gic.redist, - 2, GICV3_REDIST_SIZE * num_cpu); qemu_fdt_setprop_cells(s->cfg.fdt, node, "interrupts", GIC_FDT_IRQ_TYPE_PPI, VERSAL_GIC_MAINT_IRQ, GIC_FDT_IRQ_FLAGS_LEVEL_HI); qemu_fdt_setprop(s->cfg.fdt, node, "interrupt-controller", NULL, 0= ); } --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757672236; cv=pass; d=zohomail.com; s=zohoarc; b=f+fbS1bbLG8UIB9aecWnSc0Toqw1JdzViLe/C55D/pNbevB0OU78w5F/LALpUj/UTC6l/cyrEpwFlcehp8asJNgoaUoCa/bFuknVQQ+KQ1732sq/AA+tXaM47YS0W5fSSLyBM8llIJgDM47+lWiAAgM7yUjbcljQoiHQWltgFdM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757672236; 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=4OwnP3ttvheDT5nRkgcsnBZxU9o9bGOr7xUV8lP2A0o=; b=mgqvWFKOsQe9k5Hcfe/pSSsZV5744/htMhR7q9hKgMLvihWu9kizkfzKpPNGlYTVS+NHlNFEupa+qUSTMOXl5cwrdRBCYuUuekdanUTBTi+0nv3BQTMsEdkWWGw63hUK4yH7K4WheW+K51Pyl8lCYcmYokW0Ax6efQt2faLCd/I= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757672236793840.2719823944989; Fri, 12 Sep 2025 03:17:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0el-0002T9-8B; Fri, 12 Sep 2025 06:05:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cz-0007Qe-N8; Fri, 12 Sep 2025 06:03:37 -0400 Received: from mail-dm6nam04on20629.outbound.protection.outlook.com ([2a01:111:f403:2409::629] helo=NAM04-DM6-obe.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 1ux0cc-0001Mo-11; Fri, 12 Sep 2025 06:03:30 -0400 Received: from DS7P220CA0005.NAMP220.PROD.OUTLOOK.COM (2603:10b6:8:1ca::7) by SA3PR12MB8811.namprd12.prod.outlook.com (2603:10b6:806:312::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:03:03 +0000 Received: from DS3PEPF000099DB.namprd04.prod.outlook.com (2603:10b6:8:1ca:cafe::bf) by DS7P220CA0005.outlook.office365.com (2603:10b6:8:1ca::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.18 via Frontend Transport; Fri, 12 Sep 2025 10:03:10 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099DB.mail.protection.outlook.com (10.167.17.197) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:03 +0000 Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:08 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb09.amd.com (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:07 -0700 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:06 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YKasEA3Fkm1hSDtzBN7QHXFMDAWlkW6UfDPLU12tJf9ymIzec3qUY2EYSBB/tJ5iH2Rw4OQqVxLMDftEYEvfEwDwbeZUapehAkLzHPWrfLhLV8G6tdqsb7uzhaN3rPG9RrkrZEhDowk6xc+ZtjqbkgvSyydCOkVcweNTUS95wN/IFhCki3P3UoSqVZMeZ4kvsqDIJLX6dhlo8LT9/3+eQwEREBrvJJs4IKTitZ8VnrifR8RXaah7qM5L1ziRi318ye0PnNj5vrAlcnIhBKBGrsqa2fd0NaSSgdLOnbFOuqBrgw0qmHAOYiF+zb8KGiN9KEBNvbco+y15H0ujm1W7MQ== 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=4OwnP3ttvheDT5nRkgcsnBZxU9o9bGOr7xUV8lP2A0o=; b=nMfvmjjEdFGIGHBP7KKcdiRd463eCvC3XVyDA4Emb5tMcQSfzvkH9p1gVJQgkRXAPerB6r8KS9cnTK4Jkn+kN8DYNsq9Jz0JjE02+PiQQYOhboPpU7qi8UC9nlS4nb8tYlgERDyG5V+pOf+TkH7AF3teO4iTaUNMEasEwigihog8wVk+BJYtEEpJAR5i2AJJ0EMsVb66BdYchcHXYjgMGRybnKcQ41JrOHMb3iVeRtXoVJ0Zl5MpGD0eX2i4o4CUT4tt9vWlDnEzBeJHKufZC5+7YpNPje6Yub1Lkcu3gWfttcuQ9TCBSW8I8qXTfdWjwNcH700SLvpKQ2FqEAkNzw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4OwnP3ttvheDT5nRkgcsnBZxU9o9bGOr7xUV8lP2A0o=; b=QQF/d9vBSNZeena19ZcI1IB/Z9NdxZBzeD98gTCEtyc/6ruX3gDXNI+wucQzTH43IMwoBs12hJAKO9R2AB5Fa5b8O4IeSZ57NlhGdYThoK4WbnebIQxVOTnfpWKFNMXfZGlIlao4zYxRKXcFaswuehJfUbtLufwQkmuHD8SeinA= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 26/47] hw/arm/xlnx-versal: rpu: refactor creation Date: Fri, 12 Sep 2025 12:00:35 +0200 Message-ID: <20250912100059.103997-27-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099DB:EE_|SA3PR12MB8811:EE_ X-MS-Office365-Filtering-Correlation-Id: cc86f600-0c4d-47cd-670a-08ddf1e39055 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|82310400026|30052699003|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Eesz94w2QAi3LOjclvC2MXimBro+hdTPjj31r1pzkQeY+CvS5zz9dWzLruRP?= =?us-ascii?Q?Z/uIreV/FKzMdHOf7+RjMV7k8kHK4Emy+TVTba8sjqaLKFVufNoKFkJpURp0?= =?us-ascii?Q?vGSgCTIoNlEv6iJMEBhpZmjazFJuvmsRIhpcuxOH0LMGZBs7CBdh5r3xWOyM?= =?us-ascii?Q?R/H0eZUwY8ocXm5zb0YCjW/ZbeY/vV3rnlQKwokHw6IoORNORn+B+7VVLqo/?= =?us-ascii?Q?xdwS+GThVr+GVz4P1FHlx0a2mhxLx+ml6EmFCFPKvXPuNiNX4fKaFDhkvkgQ?= =?us-ascii?Q?tg0SfBszxGcR/1CDV1Y9O3WdejARqg/uQr+bjrbq5pj0JA/ddYQDe1/sb6sm?= =?us-ascii?Q?E9tdpAjc2Whf4Gl+FilbJS6asrak0dbk7+ye9xakrU+reaE3pSpI1xxhR6EG?= =?us-ascii?Q?S8uJRPesmTG6gBUYCyQJdMlgEYQx4B6SUsh+/iw3EqGaZ+NT6RFIgbqGoTDu?= =?us-ascii?Q?wt8HCAlLrFnkI7xUkGgWEEIO7EbnkkpOzj2O5wyIUlffKZhpIXnz+AEth/dR?= =?us-ascii?Q?imjQ6VRvJRVhazJWpc+UpqHJ5GaUaNsspNd54Xpwx13of1NtdqtpT5rELaNC?= =?us-ascii?Q?DO5dm24wEz8dfW+u7xxKrWvMfb4iHIEiP+KYq+vdPDmC69xA3euRWa5rqU+i?= =?us-ascii?Q?unyVg0SMto3HSfsbUAwJFx3B737pGBQ0rn520g/2E4HYcJvtbimdCCYvkUhP?= =?us-ascii?Q?ZxFH7XjhwjzqWh8oH2i7xi8nezjLE5NcL81hrEg4TRQKEjpL0VggypoZl66f?= =?us-ascii?Q?28BSn2duJ/6mI2w4muT9cTabjPFa4S3RzeioKiRLjDix76RjhIn50uVaACAr?= =?us-ascii?Q?AoARHkIiCJcG0eG4t1ML57hqJ2tGpEaz7tf0ZK2oJSwu4lJVHoV8dQZXqqZu?= =?us-ascii?Q?7dczjoiXRQHJ8lCa5yzaN95iR6nOzSzIjikxgi6gONCZp2Nh9Tz+MuRQtExv?= =?us-ascii?Q?mwtJUo8i64QUiL2OpALd01IOHVliLmIs76WWLnshspPeLQXcOF41X/GhkXAG?= =?us-ascii?Q?pPudxjpnSw8uDGJ+feBGEPz/7zxsoxgk9sYeIetcHkPLfxrXaAJnQgO/pDMM?= =?us-ascii?Q?OaaqVVDlKl8hOV4iyKunUaohN4K9QtRfvzXfCr00l0MNxRerYBeqFHNTWVam?= =?us-ascii?Q?hzgKVX3hrwwRQ5kyindt88BpDBD+JyqEl8x7M91GaUUHiDLUOZ0NfC02TLuY?= =?us-ascii?Q?h9+e3w87SiBbS/i1sxuUUYvn4UEthoDHX6kDT0MctQLVOCWAAJwPg/tsYgDm?= =?us-ascii?Q?ENsaXB5NM3ePbucMseXClTUdsSM0G5MQIOJ5nNcx6i5UQ42/426+3V6AUJMm?= =?us-ascii?Q?pF212why0BjXSTADHSfPQmMV/onwITmuhSP4Ivz412K/KZBkCAxoNwOhVtkw?= =?us-ascii?Q?lWuLrCxnX0AZ6hhlFvOojuosgYwgDl2TgCMZ7JKP0tInHy0ml7C+OoqBOghj?= =?us-ascii?Q?9RLC3NreZcb/4BhsETbh1YrGq130kND9MiXgFj4c/kKPsXxrW3/vdoBkIsr6?= =?us-ascii?Q?gp7LfWA/LXbeexRZZZtjAhNW3QjPJPhT4Yfo?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(1800799024)(82310400026)(30052699003)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:03.7066 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cc86f600-0c4d-47cd-670a-08ddf1e39055 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099DB.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB8811 Received-SPF: permerror client-ip=2a01:111:f403:2409::629; envelope-from=Luc.Michel@amd.com; helo=NAM04-DM6-obe.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, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01 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: 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 @amd.com) X-ZM-MESSAGEID: 1757672237884116600 Content-Type: text/plain; charset="utf-8" Refactor the RPU cluster creation using the VersalMap structure. This effectively instantiate the RPU GICv2 which was not instantiated before. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/arm/xlnx-versal.h | 11 ------- hw/arm/xlnx-versal-virt.c | 1 + hw/arm/xlnx-versal.c | 60 +++++++++++++++--------------------- 3 files changed, 26 insertions(+), 46 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 984f9f2ccdd..0a91ec7ae36 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -12,14 +12,12 @@ =20 #ifndef XLNX_VERSAL_H #define XLNX_VERSAL_H =20 #include "hw/sysbus.h" -#include "hw/cpu/cluster.h" #include "qom/object.h" #include "net/can_emu.h" -#include "target/arm/cpu.h" #include "hw/arm/xlnx-versal-version.h" =20 #define TYPE_XLNX_VERSAL_BASE "xlnx-versal-base" OBJECT_DECLARE_TYPE(Versal, VersalClass, XLNX_VERSAL_BASE) =20 @@ -50,19 +48,10 @@ struct Versal { MemoryRegion mr_ddr_ranges[4]; } noc; =20 struct { MemoryRegion mr_ocm; - - /* Real-time Processing Unit. */ - struct { - MemoryRegion mr; - MemoryRegion mr_ps_alias; - - CPUClusterState cluster; - ARMCPU cpu[XLNX_VERSAL_NR_RCPUS]; - } rpu; } lpd; =20 struct { uint32_t clk_25mhz; uint32_t clk_125mhz; diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 27594f78c8f..5958e712519 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -22,10 +22,11 @@ #include "hw/qdev-properties.h" #include "hw/arm/xlnx-versal.h" #include "hw/arm/boot.h" #include "target/arm/multiprocessing.h" #include "qom/object.h" +#include "target/arm/cpu.h" =20 #define TYPE_XLNX_VERSAL_VIRT_MACHINE MACHINE_TYPE_NAME("xlnx-versal-virt") OBJECT_DECLARE_SIMPLE_TYPE(VersalVirt, XLNX_VERSAL_VIRT_MACHINE) =20 #define XLNX_VERSAL_NUM_OSPI_FLASH 4 diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index d5dbbe10a6d..54d4b28c7b7 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -45,10 +45,12 @@ #include "hw/misc/xlnx-versal-crl.h" #include "hw/intc/arm_gicv3_common.h" #include "hw/intc/arm_gicv3_its_common.h" #include "hw/intc/arm_gic.h" #include "hw/core/split-irq.h" +#include "target/arm/cpu.h" +#include "hw/cpu/cluster.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") #define GEM_REVISION 0x40070106 =20 @@ -105,10 +107,11 @@ typedef struct VersalCpuClusterMap { enum StartPoweredOffMode start_powered_off; } VersalCpuClusterMap; =20 typedef struct VersalMap { VersalCpuClusterMap apu; + VersalCpuClusterMap rpu; =20 VersalSimplePeriphMap uart[2]; size_t num_uart; =20 VersalSimplePeriphMap canfd[4]; @@ -224,10 +227,31 @@ static const VersalMap VERSAL_MAP =3D { .has_its =3D true, .its =3D 0xf9020000, }, }, =20 + .rpu =3D { + .name =3D "rpu", + .cpu_model =3D ARM_CPU_TYPE_NAME("cortex-r5f"), + .num_cluster =3D 1, + .num_core =3D 2, + .qemu_cluster_id =3D 1, + .mp_affinity =3D { + .base =3D 0x100, + .core_shift =3D ARM_AFF0_SHIFT, + .cluster_shift =3D ARM_AFF1_SHIFT, + }, + .start_powered_off =3D SPO_ALL, + .dtb_expose =3D false, + .gic =3D { + .version =3D 2, + .dist =3D 0xf9000000, + .cpu_iface =3D 0xf9001000, + .num_irq =3D 192, + }, + }, + .uart[0] =3D { 0xff000000, 18 }, .uart[1] =3D { 0xff010000, 19 }, .num_uart =3D 2, =20 .canfd[0] =3D { 0xff060000, 20 }, @@ -804,39 +828,10 @@ static void versal_create_cpu_cluster(Versal *s, cons= t VersalCpuClusterMap *map) qemu_fdt_setprop(s->cfg.fdt, "/timer", "compatible", compatible, sizeof(compatible)); } } =20 -static void versal_create_rpu_cpus(Versal *s) -{ - int i; - - object_initialize_child(OBJECT(s), "rpu-cluster", &s->lpd.rpu.cluster, - TYPE_CPU_CLUSTER); - qdev_prop_set_uint32(DEVICE(&s->lpd.rpu.cluster), "cluster-id", 1); - - for (i =3D 0; i < ARRAY_SIZE(s->lpd.rpu.cpu); i++) { - Object *obj; - - object_initialize_child(OBJECT(&s->lpd.rpu.cluster), - "rpu-cpu[*]", &s->lpd.rpu.cpu[i], - XLNX_VERSAL_RCPU_TYPE); - obj =3D OBJECT(&s->lpd.rpu.cpu[i]); - object_property_set_bool(obj, "start-powered-off", true, - &error_abort); - - object_property_set_int(obj, "mp-affinity", 0x100 | i, &error_abor= t); - object_property_set_int(obj, "core-count", ARRAY_SIZE(s->lpd.rpu.c= pu), - &error_abort); - object_property_set_link(obj, "memory", OBJECT(&s->lpd.rpu.mr), - &error_abort); - qdev_realize(DEVICE(obj), NULL, &error_fatal); - } - - qdev_realize(DEVICE(&s->lpd.rpu.cluster), NULL, &error_fatal); -} - static void versal_create_uart(Versal *s, const VersalSimplePeriphMap *map, int chardev_idx) { DeviceState *dev; @@ -1638,11 +1633,11 @@ static void versal_realize(DeviceState *dev, Error = **errp) qemu_fdt_setprop_cell(s->cfg.fdt, "/", "interrupt-parent", s->phandle.= gic); qemu_fdt_setprop_cell(s->cfg.fdt, "/", "#size-cells", 0x2); qemu_fdt_setprop_cell(s->cfg.fdt, "/", "#address-cells", 0x2); =20 versal_create_cpu_cluster(s, &map->apu); - versal_create_rpu_cpus(s); + versal_create_cpu_cluster(s, &map->rpu); =20 for (i =3D 0; i < map->num_uart; i++) { versal_create_uart(s, &map->uart[i], i); } =20 @@ -1694,12 +1689,10 @@ static void versal_realize(DeviceState *dev, Error = **errp) /* Create the On Chip Memory (OCM). */ memory_region_init_ram(&s->lpd.mr_ocm, OBJECT(s), "ocm", MM_OCM_SIZE, &error_fatal); =20 memory_region_add_subregion_overlap(&s->mr_ps, MM_OCM, &s->lpd.mr_ocm,= 0); - memory_region_add_subregion_overlap(&s->lpd.rpu.mr, 0, - &s->lpd.rpu.mr_ps_alias, 0); } =20 DeviceState *versal_get_boot_cpu(Versal *s) { return DEVICE(versal_get_child_idx(s, "apu-cluster/apu", 0)); @@ -1806,14 +1799,11 @@ int versal_get_num_sdhci(VersalVersion version) static void versal_base_init(Object *obj) { Versal *s =3D XLNX_VERSAL_BASE(obj); size_t i, num_can; =20 - memory_region_init(&s->lpd.rpu.mr, obj, "mr-rpu", UINT64_MAX); memory_region_init(&s->mr_ps, obj, "mr-ps-switch", UINT64_MAX); - memory_region_init_alias(&s->lpd.rpu.mr_ps_alias, OBJECT(s), - "mr-rpu-ps-alias", &s->mr_ps, 0, UINT64_MAX); s->intc =3D g_array_new(false, false, sizeof(DeviceState *)); =20 num_can =3D versal_get_map(s)->num_canfd; s->cfg.canbus =3D g_new0(CanBusState *, num_can); =20 --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671818; cv=pass; d=zohomail.com; s=zohoarc; b=XgJBfT1WrvCJxXSvZUobNIIeihKo2ByHnnBSA1vgbMU/3cdIX7vZ/710YRsBYiM4P0kvyWemiIHLBC83cEyTh2gMuJOZWBg3r43Ey3Ny+x/Qg4vyE6r6bMNp5pMs9/TadN0A+3JKYzxqS9ZGRspX0JLgI3pdmksWfAT+STVYGMs= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671818; 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=dcnibzl2Qkc+1gDz1LWowSgx5cfNpsozcpjReNmWX2A=; b=oBay0XK7g5aSPkSZXH1WdwazNnFcw1/rVohUNfiibBSQERzdA4ly9QDgMHJrDyAJxnHANGNZYMW57C+cONoTM9hGPu9eaaIsK4tcvfmY7EJMY97Qs2MDPxVUo1zBiButTbgYsS/rzOOVubWID1e5u59h6bmXX7iIhlw6YuGVyvQ= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671818796534.2305889468643; Fri, 12 Sep 2025 03:10:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0eE-0000tP-Bm; Fri, 12 Sep 2025 06:04:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cz-0007Pe-61; Fri, 12 Sep 2025 06:03:37 -0400 Received: from mail-bn8nam11on2060e.outbound.protection.outlook.com ([2a01:111:f403:2414::60e] helo=NAM11-BN8-obe.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 1ux0cb-0001Ls-SR; Fri, 12 Sep 2025 06:03:30 -0400 Received: from DS7P220CA0007.NAMP220.PROD.OUTLOOK.COM (2603:10b6:8:1ca::14) by DM4PR12MB6256.namprd12.prod.outlook.com (2603:10b6:8:a3::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.18; Fri, 12 Sep 2025 10:03:04 +0000 Received: from DS3PEPF000099DB.namprd04.prod.outlook.com (2603:10b6:8:1ca:cafe::c) by DS7P220CA0007.outlook.office365.com (2603:10b6:8:1ca::14) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.18 via Frontend Transport; Fri, 12 Sep 2025 10:03:04 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099DB.mail.protection.outlook.com (10.167.17.197) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:04 +0000 Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:10 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb09.amd.com (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:09 -0700 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:08 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FBnun2BLi+mdRf1I0mJdQjUJSa/HabWylKNp3OGg2AKy3OuGcTxgrivo6tb9qBFCknvzVjpo78NfxAJNajqVAT47rVBwHNf9JY4ToYFbD1f4vYzZX7yuB+K8tO2KU5ULBMS61cKeafLFyk5qb0UnTGvBgWCLG2U8P+7dTTik8+CJiCQjPhTAi/YijijlsqL0Zu7c2+v54Ju9cyAStTyes0HyOEZPqcBjuzojHsc9+IaRp8WpG8s4VEO5FNh1iKjfzb44rBWA5Ei0EzjU/PtpQj20/EZThB6bpNhVxnRHEGFcyiN3syAgrOXvgr65y+YK9ZAV73bURJPJYYh+p6+P6w== 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=dcnibzl2Qkc+1gDz1LWowSgx5cfNpsozcpjReNmWX2A=; b=OOaXrmTne4Jmx2vRyd9gt1IKZMg9XwY1XcwAeAKRoieC5hOGPWALAueLaUiOdcWYukTNm1t9HePncW8lVONWp3h4OQz/a31/XLe3YlzBJHHMiMAseY34DTGwg9mvZIqubBo4kOpGWxtl/3wtH3DBcQ8VmA7NlAoVvFfpQicjk9IekKTOBbmSlGGIQvKHNxoz5kOtnJ5tdhcqbEUbBIMBkTlRTo1eprE7ho1MVcvEMmPLUIY0YJz7KFpjPeRnWfw22RQehHe+OPLQUOBt3Dea53VJQB7E/g5TS/Da8z8sHqEPpBdiN4lQhOmp2zioQbKuA+n/Ivt5SOL3XO5suwTyoA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dcnibzl2Qkc+1gDz1LWowSgx5cfNpsozcpjReNmWX2A=; b=ReTPGmffPJ3a7naWg4dqB15Wa7L0gZRqXzRXj/SukKpnlsXlCjQKo6saMIPTSI3WQ3i2skzD6LDWZMj4NsN4tAv0VhzgcCO5qJriEigAy/3rs0azFXujCLVLeePVzLtqpHBbiZVXX6jYNhOTb4/o73oPWnkhz0gEzpushz22sOg= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 27/47] hw/arm/xlnx-versal: ocm: refactor creation Date: Fri, 12 Sep 2025 12:00:36 +0200 Message-ID: <20250912100059.103997-28-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099DB:EE_|DM4PR12MB6256:EE_ X-MS-Office365-Filtering-Correlation-Id: febaca07-0ced-4b8d-c5ef-08ddf1e390a6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|376014|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ZsZoNDFaTmDdWLUsG9xxj2uvsQcv/49D/CpBOYVPaToLggWHI82+5kMdBknh?= =?us-ascii?Q?f0ClVe2BSjHvH5iwb/Mf+yz6S4tH9mh3Re80/Tbp7XzcHaKyEX+scRU6/zd0?= =?us-ascii?Q?vt+faOb3SpB4RWJxr46PGVH7/whPZ54651ghukuXD7mB76Kvm3rdWeqpP/nv?= =?us-ascii?Q?e84anpdikdkM6BpojvyhLd1CaGOq6vh5NqaW34l9q6NbkMahqx1aAi6NG5ZF?= =?us-ascii?Q?rFQZIdw0xNu8Xp/FeTBNMOvvTTxCALRMNlHBQdLa7L0qzGVd/yJoKw3D24pw?= =?us-ascii?Q?Z+jxglIkMdcIhMnU6HCJXqK5QdMZEbFdI9loheHC5hZcc5o5uECkLlodopsC?= =?us-ascii?Q?pOtLvEr1048qhGfBpx3VoxVKjXq492yveWngXkCKe7xiGWRclJLShPahoXDl?= =?us-ascii?Q?kApOjrVllbKAViJcRuZD7QtODDzz6ObXHYkEukoa0yL5MUuSnP0mNj5PmUYa?= =?us-ascii?Q?JSkjzbk4mZrXghbApA5sSi5yXs+dA7iu6lxKTVTHtUKrgB7qCmBm/3V2VjUa?= =?us-ascii?Q?S3HsjOS6S14kfYTEKxKeJJkz8BK90CwrM8LSgd77o7TXhZGd5jrQy4qQGAOx?= =?us-ascii?Q?XuLkWUJtTM6rQLnrNBs6SXeL5XgNKbIB3WF34cY4vEDC4DEv8/0nXCMSn5Ns?= =?us-ascii?Q?IQRWTQg2MjrZ1dUOHygl40hksKM7APYSHtV6+NXkdttOqMJhbxsNStDk254W?= =?us-ascii?Q?09AmWjho1YEk8ukpu/rhmBuFHMv18FELcIL/zsMU/YEbiXE4nFQ7alR7E5yF?= =?us-ascii?Q?wvb/HZxWwwTzXcICbPEtw62CiSMe/n8rBSl8KROIPFLKRqawhHpPzshvqKlS?= =?us-ascii?Q?VS47jS5m4k6soxsjAgAZgfD+BdOSU8Mw7cFSJaci0noeSbfyx7WidEtdCTHg?= =?us-ascii?Q?udL1X0KU9pB+2IpGyct6NBqr7n4NYUENaMI5CZxFFgxlviw8uVINas4Ulpi4?= =?us-ascii?Q?FeqPb4fLTK9oINsg72BJNCCD+xIUSlFJXWiQPRrq8bUUPtdYJfrbni7fGZ/x?= =?us-ascii?Q?v8uU/5kfVyvssiLKM49+BWziamhcaZDqo9znFXp5m4Q49cx/7xPdAgoix4hW?= =?us-ascii?Q?15y29jaKRaK+SA3pxafEYivK8umZLam69WMYvU5k9PuddvXOo3w2I0LVUvzw?= =?us-ascii?Q?8BIamN2UAnviX0ZEigqOqjlFpkd5i4y21Y97gZpqmAdzVCHtoDnQsUf984Yd?= =?us-ascii?Q?sUhqtFbngvuDoBvj6n/EXxf34rDOo2RqLfwAY82SIux1OSD8+Vj6PICp4r69?= =?us-ascii?Q?atvWRpoB15oVrmX+jakkMosOejd9mTftdtgJo28eShrSlr2gHpNUOhAhAcjr?= =?us-ascii?Q?1W08UjIRc/d5B2J46ME1CI1glF2FdbMaErIuE4BfkRwvOHfqf2bragvNZT7z?= =?us-ascii?Q?eQ0RaGLO1Lgu03w/eXU9PWZH9O7XcLzD0UOS2+FceYxB+NWqC3pxqcg+PERd?= =?us-ascii?Q?5DlvZOeoRo2mxnz9PbsmEP5UkiOpk0bZQpNDW7EDZ80Ba3y8bYUJY/wiDwuy?= =?us-ascii?Q?J3YVV5PVG461h+p3qBOuUQnBdGmTu7b8IZpi?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(376014)(36860700013)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:04.2382 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: febaca07-0ced-4b8d-c5ef-08ddf1e390a6 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099DB.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6256 Received-SPF: permerror client-ip=2a01:111:f403:2414::60e; envelope-from=Luc.Michel@amd.com; helo=NAM11-BN8-obe.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: 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 @amd.com) X-ZM-MESSAGEID: 1757671820903116600 Content-Type: text/plain; charset="utf-8" Refactor the OCM creation using the VersalMap structure. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/arm/xlnx-versal.h | 4 ---- hw/arm/xlnx-versal.c | 20 ++++++++++++++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 0a91ec7ae36..e1d6e545495 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -46,14 +46,10 @@ struct Versal { struct { /* 4 ranges to access DDR. */ MemoryRegion mr_ddr_ranges[4]; } noc; =20 - struct { - MemoryRegion mr_ocm; - } lpd; - struct { uint32_t clk_25mhz; uint32_t clk_125mhz; uint32_t gic; } phandle; diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 54d4b28c7b7..207d55c062a 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -71,10 +71,15 @@ FIELD(VERSAL_IRQ, OR_IDX, 19, 4) /* input index on the = IRQ OR gate */ typedef struct VersalSimplePeriphMap { uint64_t addr; int irq; } VersalSimplePeriphMap; =20 +typedef struct VersalMemMap { + uint64_t addr; + uint64_t size; +} VersalMemMap; + typedef struct VersalGicMap { int version; uint64_t dist; uint64_t redist; uint64_t cpu_iface; @@ -106,10 +111,12 @@ typedef struct VersalCpuClusterMap { =20 enum StartPoweredOffMode start_powered_off; } VersalCpuClusterMap; =20 typedef struct VersalMap { + VersalMemMap ocm; + VersalCpuClusterMap apu; VersalCpuClusterMap rpu; =20 VersalSimplePeriphMap uart[2]; size_t num_uart; @@ -205,10 +212,15 @@ typedef struct VersalMap { int irq_num; } reserved; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { + .ocm =3D { + .addr =3D 0xfffc0000, + .size =3D 0x40000, + }, + .apu =3D { .name =3D "apu", .cpu_model =3D ARM_CPU_TYPE_NAME("cortex-a72"), .num_cluster =3D 1, .num_core =3D 2, @@ -1606,10 +1618,11 @@ static uint32_t fdt_add_clk_node(Versal *s, const c= har *name, =20 static void versal_realize(DeviceState *dev, Error **errp) { Versal *s =3D XLNX_VERSAL_BASE(dev); DeviceState *slcr, *ospi; + MemoryRegion *ocm; Object *container; const VersalMap *map =3D versal_get_map(s); size_t i; =20 if (s->cfg.fdt =3D=3D NULL) { @@ -1685,14 +1698,13 @@ static void versal_realize(DeviceState *dev, Error = **errp) =20 versal_map_ddr(s); versal_unimp(s); =20 /* Create the On Chip Memory (OCM). */ - memory_region_init_ram(&s->lpd.mr_ocm, OBJECT(s), "ocm", - MM_OCM_SIZE, &error_fatal); - - memory_region_add_subregion_overlap(&s->mr_ps, MM_OCM, &s->lpd.mr_ocm,= 0); + ocm =3D g_new(MemoryRegion, 1); + memory_region_init_ram(ocm, OBJECT(s), "ocm", map->ocm.size, &error_fa= tal); + memory_region_add_subregion_overlap(&s->mr_ps, map->ocm.addr, ocm, 0); } =20 DeviceState *versal_get_boot_cpu(Versal *s) { return DEVICE(versal_get_child_idx(s, "apu-cluster/apu", 0)); --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757672200; cv=pass; d=zohomail.com; s=zohoarc; b=ALYxbj31Y5ffKQZSFGwMpvJec+FQ03QSppal053Riq3Seo9zzUe10DXPX+4j+wqt7hO5GDrUVkAjeEjVh6Ziq0pcjjH3oUUgv7psAFEelL29+5CbLuqTCQiE4aOgKJP4FBa2UVssDCB1BbHpyNDdbnSVg69j++nRm6yivRXIYNM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757672200; 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=JqW9JZhzEw5I9CQzO3LREAfcJX48F0Qsf7nC4SXM6RE=; b=YkQgX5bywyrTdYRxm3OSg6TZYB5hdlgrk2UIxi1ngBzNwVIRcI1mFyqEdZWFyAunc3tR8lzWUegbhojiaXEyczn95DVf2H5hNy6NNYs07tCoxQZaieSi6g7s0yGX9R7W8s+ExQ9d/+Gbnx3jjBPp1Q/o1M46VjjBX7+o8eIqygI= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175767220060696.22465061867638; Fri, 12 Sep 2025 03:16:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0df-0008QW-7i; Fri, 12 Sep 2025 06:04:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0ck-0006wi-Eu; Fri, 12 Sep 2025 06:03:22 -0400 Received: from mail-bn8nam12on20630.outbound.protection.outlook.com ([2a01:111:f403:2418::630] helo=NAM12-BN8-obe.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 1ux0cZ-0001Lj-DQ; Fri, 12 Sep 2025 06:03:22 -0400 Received: from DS7P220CA0007.NAMP220.PROD.OUTLOOK.COM (2603:10b6:8:1ca::14) by DM4PR12MB5964.namprd12.prod.outlook.com (2603:10b6:8:6b::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:03:04 +0000 Received: from DS3PEPF000099DB.namprd04.prod.outlook.com (2603:10b6:8:1ca:cafe::27) by DS7P220CA0007.outlook.office365.com (2603:10b6:8:1ca::14) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.18 via Frontend Transport; Fri, 12 Sep 2025 10:03:04 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099DB.mail.protection.outlook.com (10.167.17.197) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:04 +0000 Received: from SATLEXMB05.amd.com (10.181.40.146) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:11 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB05.amd.com (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:02:11 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:10 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=at5lsFOoFLENBhLGN6Ws5c1UcCHWgU2TAJLK4RqgJKCFuRb1hxgFGL2BR1QBKUMpBNl25XeYQtFwrcpTr++qF646tty2XwBM/REgEfYLHvy3b5itI6Y+1UWL03OeL/UZWARBHt5RB8Vs4aXOuQN9mLFHKCSJvYVUhZG6exJ87lnXFMbfKKFEtG+oYTcvOtP70RMC60nTeTtVZWa+9JDcMTz3UiX4IT8CcFXJiYhF7VyBIwPV5xcCtK/hQqPfx5KgQ4AO7lODzlNyenG9uwxpQXDvmsM6DMaZwz/c27UbUIoetc+ULvxYrW/upTa/np0pZfl+MFTfMC+bly7Gf3UAOA== 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=JqW9JZhzEw5I9CQzO3LREAfcJX48F0Qsf7nC4SXM6RE=; b=AhVHlHdo66MmjysSgU9lq9OdYayIXrf8qclK/4McYixbJ8nwrCjtJyO3mtdJFZUDEJxDti8p07v+msbRF7jk7SHZtHKcGOgwJs07eHc3mPAlSJDVh/sSVC2aFiGG99S7ztM8SXqAOTKRFqws8IfFuN8UW62D1ShitTy4VUqiDbPmQFDlmlOjGN5/Zpa72eNsDtU1z+f38YTzWKeAq8O01sWtmWMLY++p8l3T26sJabBr4SGQtTfoZWKpB6hfkbzbJo3Hkvtr2GGmllBEWhMnCnDndYz2TM2PMmc6ViHuXOvJqJXrj652bDZAiNkwc/Cg5z6xXsgD9aPJC1vKi7N65Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JqW9JZhzEw5I9CQzO3LREAfcJX48F0Qsf7nC4SXM6RE=; b=x3L6GTfDTfP1rAgHXnIuuWJJ8nP33ghD8+dLloh+/uE2h1Wjq8q+xc230yOmRsKAqYp6Sg5z+8gyHSAOfVAqOcJw0jHKKmMrXijBtTt1oCNdA3O8qbvzqtbtEZJJFmcfa4ayE/LSULP7huxom/PDvyMQNlg9IE48CehidXYjaJM= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 28/47] hw/arm/xlnx-versal: ddr: refactor creation Date: Fri, 12 Sep 2025 12:00:37 +0200 Message-ID: <20250912100059.103997-29-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: None (SATLEXMB05.amd.com: luc.michel@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099DB:EE_|DM4PR12MB5964:EE_ X-MS-Office365-Filtering-Correlation-Id: 03b7e545-12c9-4768-a71a-08ddf1e390dc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|82310400026|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?uZIjKtWewDK7aZ41QwDUiKBBz9BUuUiIfs/oQwQU3qx7uCweE11+j4SxxHkZ?= =?us-ascii?Q?P8mgSEobRddGzpMOwnULM8jnh7YPvcQe3EN0oDEdRKns9CfJeFYuxbWaWefX?= =?us-ascii?Q?LE3EsKLv7xlTQP7bQlusaZmPm/rGyrbvROhHymUcEaV46je4LJvmBMsBDYyM?= =?us-ascii?Q?Ee+Ns4LMbO8GjqTYpiBgP9HkHLmejJWgPbJD+OszBSdx0tg6nh1hJ8+o5OqL?= =?us-ascii?Q?Y09fGJA7CdrX0bcL7M43xsTjeLAwcXzpJQpoaXrZSXFRk6z2KsXJ209YucJR?= =?us-ascii?Q?rCaX/A6o2YyrCNlEFFjRMkMM3NxGO09yHHom1BXwW9wG8YE3fySORXu2gZJp?= =?us-ascii?Q?iRofJhM3EPz8uAhF7TiA9NFeK2Bg5Pdlo7pkat2f7HIAQWYjqIsw1+hyr+K7?= =?us-ascii?Q?c/oZcMQxEQyTzj5ZztdaBo6idxbwiYYo5+bdVrTw6Nyd3z8cgXLKez0hPGuS?= =?us-ascii?Q?lJuVgn/1gRpPtroPLdqAE4MTmcxO/PfeR+cCRi43i9KdnP8thcKc9vtWJbVl?= =?us-ascii?Q?BIC59ijDzgu5Pxtz2PjfLzPrjNzkGU1PRXXyb/0xVjPimegv1+YffxxJXhwa?= =?us-ascii?Q?3PM39rzGckIIC5NFGDQvN1pIwJ9zK4ywvZYd31n4mVz7UUh+RVL5IstP4aJp?= =?us-ascii?Q?IxyyKkgwmkdEVDrE1aVN0wFw700IJ8SsB+rnAUDTPUg/Q7qWvUpj57MqeC5R?= =?us-ascii?Q?84CrnJKJ6vvhMQXvpWuCkzPT3Pe+Td3PgBZBDBwTYV2DORhaV4GGQ0cORegH?= =?us-ascii?Q?0hfaEBXIW3+E79krZKDzjUrup09zZ8v7EZSgpEnGu6NUSxSq5JPfLvA3sC37?= =?us-ascii?Q?iNoKTacUqHAVTmXAvXZLbe35QGE8tr8bJb5KGSx0UWihWQ0PPzAlGbWRfn1Q?= =?us-ascii?Q?N2iwygVOBgZjPo9uhTYJcQsFQClzcme/Aha7KPoGcKrRXy23FuECzb0gE5GN?= =?us-ascii?Q?dQ9PL5WcT6YhCuity2d8gb3jb6wxFYPrwrBV44a4w99RYGz+YOJmS6+hvdqH?= =?us-ascii?Q?XZUkgp2+YAm/i4RhRwn8o5vd81dXDCVBIM1KqM5enwlwVfKDE09D1B5OKY/N?= =?us-ascii?Q?JSSgKxkMKKb0OnWufJsi4WDIfnps/aB1e9v3KynoKe5KleBf0I4B/5m67HK2?= =?us-ascii?Q?4GpN/iBJXMf5rw87MBFe+Jwwnv++yj3WXJBAJbGR7hhDeiq1IIfLPhJNWG+W?= =?us-ascii?Q?5qKAaR5d4pvaIUJcHrdneVOFL1ceXuK//s4m4tAfgtoNZrXGAXUJtD+eszwl?= =?us-ascii?Q?F49Mbn/hb7iHTkyVmf/WKvFvSQ3tpSyTz3DNhF/fmGmKyYsYkSK/wX58JuH8?= =?us-ascii?Q?xWkAmbKfgBJJVnpltR5QAqpBzI2IOsE6TfmhCBjzZxrkLWYPCuPDL8lNVbVm?= =?us-ascii?Q?509g08EpR01HapK2gLtzh+Dbt6eTQU59w/5UYRReYlcOukZPWUXjjbfEU5/K?= =?us-ascii?Q?wLXtcGwBAw5/65WQlKkdpHCx3bKvNYzGWjWcEgzV2PY3+4d/UIZ0CcQlwnZu?= =?us-ascii?Q?b9o5kCwsPpA2FxKVvGwW8kM2Ng2eU2Kb5IcK?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(82310400026)(1800799024)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:04.5924 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 03b7e545-12c9-4768-a71a-08ddf1e390dc X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099DB.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5964 Received-SPF: permerror client-ip=2a01:111:f403:2418::630; envelope-from=Luc.Michel@amd.com; helo=NAM12-BN8-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757672201851116600 Content-Type: text/plain; charset="utf-8" Refactor the DDR aperture regions creation using the VersalMap structure. Device creation and FDT node creation are split into two functions because the later must happen during ARM virtual bootloader modify_dtb callback. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/arm/xlnx-versal.h | 7 +--- hw/arm/xlnx-versal-virt.c | 79 +----------------------------------- hw/arm/xlnx-versal.c | 73 ++++++++++++++++++++++----------- 3 files changed, 53 insertions(+), 106 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index e1d6e545495..39bc414c85c 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -41,15 +41,10 @@ struct Versal { =20 /*< public >*/ GArray *intc; MemoryRegion mr_ps; =20 - struct { - /* 4 ranges to access DDR. */ - MemoryRegion mr_ddr_ranges[4]; - } noc; - struct { uint32_t clk_25mhz; uint32_t clk_125mhz; uint32_t gic; } phandle; @@ -71,10 +66,12 @@ static inline void versal_set_fdt(Versal *s, void *fdt) { g_assert(!qdev_is_realized(DEVICE(s))); s->cfg.fdt =3D fdt; } =20 +void versal_fdt_add_memory_nodes(Versal *s, uint64_t ram_size); + DeviceState *versal_get_boot_cpu(Versal *s); void versal_sdhci_plug_card(Versal *s, int sd_idx, BlockBackend *blk); void versal_efuse_attach_drive(Versal *s, BlockBackend *blk); void versal_bbram_attach_drive(Versal *s, BlockBackend *blk); void versal_ospi_create_flash(Versal *s, int flash_idx, const char *flash_= mdl, diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 5958e712519..ad7b3135a67 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -104,92 +104,17 @@ static void fdt_nop_memory_nodes(void *fdt, Error **e= rrp) n++; } g_strfreev(node_path); } =20 -static void fdt_add_memory_nodes(VersalVirt *s, void *fdt, uint64_t ram_si= ze) -{ - /* Describes the various split DDR access regions. */ - static const struct { - uint64_t base; - uint64_t size; - } addr_ranges[] =3D { - { MM_TOP_DDR, MM_TOP_DDR_SIZE }, - { MM_TOP_DDR_2, MM_TOP_DDR_2_SIZE }, - { MM_TOP_DDR_3, MM_TOP_DDR_3_SIZE }, - { MM_TOP_DDR_4, MM_TOP_DDR_4_SIZE } - }; - uint64_t mem_reg_prop[8] =3D {0}; - uint64_t size =3D ram_size; - Error *err =3D NULL; - char *name; - int i; - - fdt_nop_memory_nodes(fdt, &err); - if (err) { - error_report_err(err); - return; - } - - name =3D g_strdup_printf("/memory@%x", MM_TOP_DDR); - for (i =3D 0; i < ARRAY_SIZE(addr_ranges) && size; i++) { - uint64_t mapsize; - - mapsize =3D size < addr_ranges[i].size ? size : addr_ranges[i].siz= e; - - mem_reg_prop[i * 2] =3D addr_ranges[i].base; - mem_reg_prop[i * 2 + 1] =3D mapsize; - size -=3D mapsize; - } - qemu_fdt_add_subnode(fdt, name); - qemu_fdt_setprop_string(fdt, name, "device_type", "memory"); - - switch (i) { - case 1: - qemu_fdt_setprop_sized_cells(fdt, name, "reg", - 2, mem_reg_prop[0], - 2, mem_reg_prop[1]); - break; - case 2: - qemu_fdt_setprop_sized_cells(fdt, name, "reg", - 2, mem_reg_prop[0], - 2, mem_reg_prop[1], - 2, mem_reg_prop[2], - 2, mem_reg_prop[3]); - break; - case 3: - qemu_fdt_setprop_sized_cells(fdt, name, "reg", - 2, mem_reg_prop[0], - 2, mem_reg_prop[1], - 2, mem_reg_prop[2], - 2, mem_reg_prop[3], - 2, mem_reg_prop[4], - 2, mem_reg_prop[5]); - break; - case 4: - qemu_fdt_setprop_sized_cells(fdt, name, "reg", - 2, mem_reg_prop[0], - 2, mem_reg_prop[1], - 2, mem_reg_prop[2], - 2, mem_reg_prop[3], - 2, mem_reg_prop[4], - 2, mem_reg_prop[5], - 2, mem_reg_prop[6], - 2, mem_reg_prop[7]); - break; - default: - g_assert_not_reached(); - } - g_free(name); -} - static void versal_virt_modify_dtb(const struct arm_boot_info *binfo, void *fdt) { VersalVirt *s =3D container_of(binfo, VersalVirt, binfo); =20 - fdt_add_memory_nodes(s, fdt, binfo->ram_size); + fdt_nop_memory_nodes(s->fdt, &error_abort); + versal_fdt_add_memory_nodes(&s->soc, binfo->ram_size); } =20 static void *versal_virt_get_dtb(const struct arm_boot_info *binfo, int *fdt_size) { diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 207d55c062a..f7680cc1254 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -113,10 +113,15 @@ typedef struct VersalCpuClusterMap { } VersalCpuClusterMap; =20 typedef struct VersalMap { VersalMemMap ocm; =20 + struct VersalDDRMap { + VersalMemMap chan[4]; + size_t num_chan; + } ddr; + VersalCpuClusterMap apu; VersalCpuClusterMap rpu; =20 VersalSimplePeriphMap uart[2]; size_t num_uart; @@ -217,10 +222,18 @@ static const VersalMap VERSAL_MAP =3D { .ocm =3D { .addr =3D 0xfffc0000, .size =3D 0x40000, }, =20 + .ddr =3D { + .chan[0] =3D { .addr =3D 0x0, .size =3D 2 * GiB }, + .chan[1] =3D { .addr =3D 0x800000000ull, .size =3D 32 * GiB }, + .chan[2] =3D { .addr =3D 0xc00000000ull, .size =3D 256 * GiB }, + .chan[3] =3D { .addr =3D 0x10000000000ull, .size =3D 734 * GiB }, + .num_chan =3D 4, + }, + .apu =3D { .name =3D "apu", .cpu_model =3D ARM_CPU_TYPE_NAME("cortex-a72"), .num_cluster =3D 1, .num_core =3D 2, @@ -1481,50 +1494,62 @@ static inline void versal_create_crl(Versal *s) sysbus_mmio_get_region(SYS_BUS_DEVICE(dev)= , 0)); =20 versal_sysbus_connect_irq(s, SYS_BUS_DEVICE(dev), 0, map->crl.irq); } =20 -/* This takes the board allocated linear DDR memory and creates aliases +/* + * This takes the board allocated linear DDR memory and creates aliases * for each split DDR range/aperture on the Versal address map. */ -static void versal_map_ddr(Versal *s) +static void versal_map_ddr(Versal *s, const struct VersalDDRMap *map) { uint64_t size =3D memory_region_size(s->cfg.mr_ddr); - /* Describes the various split DDR access regions. */ - static const struct { - uint64_t base; - uint64_t size; - } addr_ranges[] =3D { - { MM_TOP_DDR, MM_TOP_DDR_SIZE }, - { MM_TOP_DDR_2, MM_TOP_DDR_2_SIZE }, - { MM_TOP_DDR_3, MM_TOP_DDR_3_SIZE }, - { MM_TOP_DDR_4, MM_TOP_DDR_4_SIZE } - }; uint64_t offset =3D 0; int i; =20 - assert(ARRAY_SIZE(addr_ranges) =3D=3D ARRAY_SIZE(s->noc.mr_ddr_ranges)= ); - for (i =3D 0; i < ARRAY_SIZE(addr_ranges) && size; i++) { - char *name; + for (i =3D 0; i < map->num_chan && size; i++) { uint64_t mapsize; + MemoryRegion *alias; + + mapsize =3D MIN(size, map->chan[i].size); =20 - mapsize =3D size < addr_ranges[i].size ? size : addr_ranges[i].siz= e; - name =3D g_strdup_printf("noc-ddr-range%d", i); /* Create the MR alias. */ - memory_region_init_alias(&s->noc.mr_ddr_ranges[i], OBJECT(s), - name, s->cfg.mr_ddr, - offset, mapsize); + alias =3D g_new(MemoryRegion, 1); + memory_region_init_alias(alias, OBJECT(s), "noc-ddr-range", + s->cfg.mr_ddr, offset, mapsize); =20 /* Map it onto the NoC MR. */ - memory_region_add_subregion(&s->mr_ps, addr_ranges[i].base, - &s->noc.mr_ddr_ranges[i]); + memory_region_add_subregion(&s->mr_ps, map->chan[i].addr, alias); offset +=3D mapsize; size -=3D mapsize; - g_free(name); } } =20 +void versal_fdt_add_memory_nodes(Versal *s, uint64_t size) +{ + const struct VersalDDRMap *map =3D &versal_get_map(s)->ddr; + g_autofree char *node; + g_autofree uint64_t *reg; + int i; + + reg =3D g_new(uint64_t, map->num_chan * 2); + + for (i =3D 0; i < map->num_chan && size; i++) { + uint64_t mapsize; + + mapsize =3D MIN(size, map->chan[i].size); + + reg[i * 2] =3D cpu_to_be64(map->chan[i].addr); + reg[i * 2 + 1] =3D cpu_to_be64(mapsize); + + size -=3D mapsize; + } + + node =3D versal_fdt_add_subnode(s, "/memory", 0, "memory", sizeof("mem= ory")); + qemu_fdt_setprop(s->cfg.fdt, node, "reg", reg, sizeof(uint64_t) * i * = 2); +} + static void versal_unimp_area(Versal *s, const char *name, MemoryRegion *mr, hwaddr base, hwaddr size) { DeviceState *dev =3D qdev_new(TYPE_UNIMPLEMENTED_DEVICE); @@ -1694,11 +1719,11 @@ static void versal_realize(DeviceState *dev, Error = **errp) versal_create_trng(s, &map->trng); versal_create_rtc(s, &map->rtc); versal_create_cfu(s, &map->cfu); versal_create_crl(s); =20 - versal_map_ddr(s); + versal_map_ddr(s, &map->ddr); versal_unimp(s); =20 /* Create the On Chip Memory (OCM). */ ocm =3D g_new(MemoryRegion, 1); memory_region_init_ram(ocm, OBJECT(s), "ocm", map->ocm.size, &error_fa= tal); --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757672204; cv=pass; d=zohomail.com; s=zohoarc; b=UicuyZiMt1noZlfIm6oSCv/Em0V0tWyoXXaN3VcWyb8A9JEGFwarnOi8bmddIym3LBEZfTjxnfNgskblMBUQrdyUdMUh5bUfTKVi0B8nIf/8m4JrbIzD+Y9JGZe89KGLLuSGTEjksumCwIZEgHz0GYS19tr0AAUIj78jWi2Wdi0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757672204; 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=dIL0n5YlaHa6E/6Kbc9pgtwwgxEUw2e0B47y4Uu+xbs=; b=bmDYGJbzGhEYFnHjTPsLEIencThk0yEBYxV1lyDxjqkC1SaU2gTxspmSKTjDUJhKqvFkyIgqOCc9oTzunk/0CW0qZNQsOmsc6wjxO/9xBNjBKsabtEECUjQgQjAzb0yMQjHd8lxVMTURS7XfeR4ZRblZXPJhALpqNcui4TZI09g= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757672204149310.1004988023211; Fri, 12 Sep 2025 03:16:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0dV-0007tA-KV; Fri, 12 Sep 2025 06:04:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0ci-0006u7-Ty; Fri, 12 Sep 2025 06:03:20 -0400 Received: from mail-dm6nam11on20613.outbound.protection.outlook.com ([2a01:111:f403:2415::613] helo=NAM11-DM6-obe.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 1ux0cY-0001Lz-A8; Fri, 12 Sep 2025 06:03:20 -0400 Received: from DS7P220CA0012.NAMP220.PROD.OUTLOOK.COM (2603:10b6:8:1ca::9) by MN2PR12MB4336.namprd12.prod.outlook.com (2603:10b6:208:1df::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:03:05 +0000 Received: from DS3PEPF000099DB.namprd04.prod.outlook.com (2603:10b6:8:1ca:cafe::98) by DS7P220CA0012.outlook.office365.com (2603:10b6:8:1ca::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.18 via Frontend Transport; Fri, 12 Sep 2025 10:03:05 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099DB.mail.protection.outlook.com (10.167.17.197) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:05 +0000 Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:13 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:02:13 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:11 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aHJs45czZUrQYPTu2liBJDB/vXheNFMwiGT6lFSd+2Xu2ZQoI+3lV12UyS+mJpQLxVn+iYv8p4UCuOZQRBMoblzK1wlE2JkG/+7voptILrF2ABdgWVlvNg2xvqJjcrllwnCTVPA/w/B0X6S/hiYmw3+YIGKI0aT4oCn5oS2/svWwJ55arS3fApMFGoZWBuizV1A42qYlNCttsmzmsMpXO/9G3dYDEPFJZs2qbb36VbO2aOcV2V7NWuMmvPo7WZryPbEhJ8Bm5KD/iGDMj69brymRkyy7mh+nmwOdX3kfk0zxH0r+Kt+keWcLRbOHdYtVdofu9v7nmbF7qCzAEG5fQA== 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=dIL0n5YlaHa6E/6Kbc9pgtwwgxEUw2e0B47y4Uu+xbs=; b=P8Nmvy+ohnaOBs5yqj+OUY8CnYI8zeQEXiL6P0oa4rN3sFJwPqZLm9Ul9Gj3DpobQ4xq/CQozxdLMbiLZx3M+RPw2z5cRdFwQ6ChvV984c9U84CumseB5dQA2qF33tT0lalS6PRjFkeevh/Z60+p1V0M2Pb11ovsUWNyjO9L++2X8al+nFekzcZ85mIcj+OGgBG4bsBK2x+9fBhzyJH8360yq3eYyHbfwZuA3RR1v60MLddvORTSc7BVGStq6tBgIEqO7+PrJpsJMUkNc1IPekMUkJJTKovz5O8tv4sHzYl5XvwgcPCEWTubKkV7vIMtEoqb0YQGbiSgUcBjxkfDAg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dIL0n5YlaHa6E/6Kbc9pgtwwgxEUw2e0B47y4Uu+xbs=; b=CHQ2IwM0wig1R8GMJdlctRQfVjdhdtH91w4f61csibIcN0ngcfLXX/LG0ZfQpMCJTIWjRxIJcRNq53DdPDC7y3qcDTfO/7tTd5X5Rtw3KkaUBc2Vy6cMKF978LDnvslPo7/RnGw9fuCGOZulT6yKRGVcbnOelfchP5877bzPPXY= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 29/47] hw/arm/xlnx-versal: add the versal_get_num_cpu accessor Date: Fri, 12 Sep 2025 12:00:38 +0200 Message-ID: <20250912100059.103997-30-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: None (SATLEXMB04.amd.com: luc.michel@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099DB:EE_|MN2PR12MB4336:EE_ X-MS-Office365-Filtering-Correlation-Id: 4fab1994-888b-4cfe-e660-08ddf1e39150 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|376014|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?tNLYRqB/bBxs9CdrO9LDUS4G0RzUJhvFbvt9YDIboefN7GoJzFjjLnDgZR97?= =?us-ascii?Q?M+Vw+nmklSej52/dbiwzRx7iWB/km0sQjwfoJ0SzaCYDCao49Pybap16eguv?= =?us-ascii?Q?6ygBA8kC87+/Pn6VGttGHfH3cgtwTQ84dVudCvyE8Nr88DgFK5qCUTQ4SJ2S?= =?us-ascii?Q?X4rXMMUxqj/Xbrbtdf9qOSYuW+cuiLLQT0tGvQ20m8GGS7yvioHsSn4rW8Ml?= =?us-ascii?Q?ITI0RAHIy38643Ug4r2N2bZrG4XyLR3Gu0rRUpt15+59fMQ2hmO5ZyoGw3yY?= =?us-ascii?Q?uYloc/6GsMdCgsCj0qY/jM7mvGHRVswDmao8YmA5uM+W5fgBkUWZ6vOOy8u/?= =?us-ascii?Q?cBG/6wBa4lodr/s6oFJ0/TAxsqmBW8hOCF25nGeVDwDLYbrV8Au2+H9RRAeo?= =?us-ascii?Q?uwSP4OPGDUqagoIQAMEd9LFYcfmynhGlIoRPY8CgsSsbmvW3fLYj/UeauGOy?= =?us-ascii?Q?ZDY9mzHl7tvt89HT/3yBsbrRxU4DoNxAB41KPy7nKxkLf4wfMatLKgA/3DHs?= =?us-ascii?Q?iLZGOE/W8M5DFZ88Jwz2mignvFJdOHGr1Frn571M/O0MK4tIVM/YpHrRL93B?= =?us-ascii?Q?8NuTwHvDQNOssFgZjpD+j8GvmM1q+PcnCYNnfthUqyg120nF/0yxSGNU9pC+?= =?us-ascii?Q?4otdM1lNgc8ojEDzwb2IO8m/7JOVZdHZEg2iQsy71Z5oDQmKbG632EePf8+Q?= =?us-ascii?Q?W+oeW6R97rcv7qs73cHiQv57oRvwRpG9EEHrbiEDXt2GiuyIfoVYtVaRqjee?= =?us-ascii?Q?+8r2c2mpawIV8dLZkV4AzAWN13eqjCuKiGhCsos9WnnVdMubK3GY3JnehCcV?= =?us-ascii?Q?ya2gr4DY1s7vIJUzZI4GbgabMYfNiKXmnoKp5kCdA0d7jdD/WaI67mmDeaCi?= =?us-ascii?Q?tv+gNZS2lUmwnMIOJ03ULLg8FQ//3IEnWucOHwoQAPzwfBO0nKqVYkWY6uQP?= =?us-ascii?Q?XtSNGSmXIZ0TgeJf4Irs4oBfPhbuTF+/TJiFKhJvJEgQuw6KuuLkmVNWxQt7?= =?us-ascii?Q?bN/bz+XmORocjCGmkbCrSbRDDj/DFujy692heAM2wEruFus9ChjIZca7haZz?= =?us-ascii?Q?46TvcB1jR2IGY9/E+tuIpsEWaEpr2LC9l3ADeQGAP99GG2Mvj892nYbM0YUn?= =?us-ascii?Q?KSoXLpvaXVh5k/Q4f1JyM0iz1tsKhpFfuQDldQ/DUPwXT8z7VbyjiiIi0698?= =?us-ascii?Q?519lH/yuABGxMqGsnScjSH7eAyQJnrJBrGa3LGW/fo8PZT2wu82TyMN4BtMY?= =?us-ascii?Q?b4aLkUIuBeIhQ7r/HP5j2ziPOkI9bUs7x3xbMHhrTjfFzSaQSPfHb7rCLImD?= =?us-ascii?Q?i5JmY2SYTg9bqreICuBZR9V5DE6bf8DSpnyO15F7ZO8b1V7EacdXfRVINI4p?= =?us-ascii?Q?TiqOeRRdRR8PX0IgePdLzb6kmoIwjTmhcg1eMrFqvmjRTRSRBPEzmX1gps3c?= =?us-ascii?Q?Wi2QwjO9+c06UUJieTzRwoa2XIli99fdbxYnoTPFjjA/vOIsscvt5dFFgw9Z?= =?us-ascii?Q?Lxnv7a9NZznCSSO+rcNbCdIgrYlxFhwvJJ90?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(376014)(36860700013)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:05.3541 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4fab1994-888b-4cfe-e660-08ddf1e39150 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099DB.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4336 Received-SPF: permerror client-ip=2a01:111:f403:2415::613; envelope-from=Luc.Michel@amd.com; helo=NAM11-DM6-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757672205498116600 Content-Type: text/plain; charset="utf-8" Add the versal_get_num_cpu accessor to the Versal SoC to retrieve the number of CPUs in the SoC. Use it in the xlnx-versal-virt machine. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/arm/xlnx-versal.h | 1 + hw/arm/xlnx-versal-virt.c | 7 ++++--- hw/arm/xlnx-versal.c | 8 ++++++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 39bc414c85c..7bdf6dab629 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -78,10 +78,11 @@ void versal_ospi_create_flash(Versal *s, int flash_idx,= const char *flash_mdl, BlockBackend *blk); =20 qemu_irq versal_get_reserved_irq(Versal *s, int idx, int *dtb_idx); hwaddr versal_get_reserved_mmio_addr(Versal *s); =20 +int versal_get_num_cpu(VersalVersion version); int versal_get_num_can(VersalVersion version); int versal_get_num_sdhci(VersalVersion version); =20 /* Memory-map and IRQ definitions. Copied a subset from * auto-generated files. */ diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index ad7b3135a67..274a7ef9889 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -344,16 +344,17 @@ static void versal_virt_machine_finalize(Object *obj) } =20 static void versal_virt_machine_class_init(ObjectClass *oc, const void *da= ta) { MachineClass *mc =3D MACHINE_CLASS(oc); + int num_cpu =3D versal_get_num_cpu(VERSAL_VER_VERSAL); =20 mc->desc =3D "Xilinx Versal Virtual development board"; mc->init =3D versal_virt_init; - mc->min_cpus =3D XLNX_VERSAL_NR_ACPUS + XLNX_VERSAL_NR_RCPUS; - mc->max_cpus =3D XLNX_VERSAL_NR_ACPUS + XLNX_VERSAL_NR_RCPUS; - mc->default_cpus =3D XLNX_VERSAL_NR_ACPUS + XLNX_VERSAL_NR_RCPUS; + mc->min_cpus =3D num_cpu; + mc->max_cpus =3D num_cpu; + mc->default_cpus =3D num_cpu; mc->no_cdrom =3D true; mc->auto_create_sdcard =3D true; mc->default_ram_id =3D "ddr"; object_class_property_add_str(oc, "ospi-flash", versal_get_ospi_model, versal_set_ospi_model); diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index f7680cc1254..940233aad06 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -1817,10 +1817,18 @@ hwaddr versal_get_reserved_mmio_addr(Versal *s) const VersalMap *map =3D versal_get_map(s); =20 return map->reserved.mmio_start; } =20 +int versal_get_num_cpu(VersalVersion version) +{ + const VersalMap *map =3D VERSION_TO_MAP[version]; + + return map->apu.num_cluster * map->apu.num_core + + map->rpu.num_cluster * map->rpu.num_core; +} + int versal_get_num_can(VersalVersion version) { const VersalMap *map =3D VERSION_TO_MAP[version]; =20 return map->num_canfd; --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757672246; cv=pass; d=zohomail.com; s=zohoarc; b=BlEOzV0Czm4RWpoMSdBJE2LDX04MF2fUoE+TJDhaGFdQon5TNLeRc224zSt8FQ99kkgKilDs7sMePd+b5aadopGlU7tSFp1DiZJbuMk3/qGtod4lW382X+EpKHUJua+U92KQrs21EXNo4QbR9HDztzwwRBvxk07easXsK5ySxfE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757672246; 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=YBlpqEA3wqODgHWKPG4DGJ7QeWvSNPNqcZZuv1kj/NQ=; b=XOWGykIWS8JcphuPPZzigfB44qJ4Uscu260mNhyY60OOYFu6ANH2zMVugGZVZ4yjTilA1GAwFxbT4zzKC9iQ+XYmSpFDC6dT0FS1aiy7TamYuAASQapCC3lp++KTSoC6JYPRqO7lGLfkB0cK5b86Qo5cGQuTBBkH8ev2kNYFEO0= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757672246206520.2749009865538; Fri, 12 Sep 2025 03:17:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0eG-00016a-AT; Fri, 12 Sep 2025 06:04:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cz-0007R6-Rr; Fri, 12 Sep 2025 06:03:37 -0400 Received: from mail-bn8nam11on20625.outbound.protection.outlook.com ([2a01:111:f403:2414::625] helo=NAM11-BN8-obe.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 1ux0cf-0001N0-75; Fri, 12 Sep 2025 06:03:36 -0400 Received: from DS2PEPF0000455C.namprd21.prod.outlook.com (2603:10b6:f:fc00::514) by PH7PR12MB9103.namprd12.prod.outlook.com (2603:10b6:510:2f5::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:03:07 +0000 Received: from DS1PEPF00017098.namprd05.prod.outlook.com (2603:10b6:2c:400:0:1007:0:6) by DS2PEPF0000455C.outlook.office365.com (2603:10b6:f:fc00::514) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9137.7 via Frontend Transport; Fri, 12 Sep 2025 10:03:06 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS1PEPF00017098.mail.protection.outlook.com (10.167.18.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:06 +0000 Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:15 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:02:14 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:13 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mfOZnT2ZRbvzEk91bz/+0H7awOrvUXnpSZFdPYamSetCosxxQSNTgD9NOnEKGJOabZGNzk9614VT8vp7pIY8LQtt+DrYDXeV3bGRP+eV4cYjlB5t+s4tW3OHq1VGZyREPzdWcIs2g0/a/3yhNap8XdhJoSXjuNyIDv3yUKdZ+/YKOxCIMTcbrqZtP9jIxbRonxbzmq1qkjQiIWTO7k2XVTiEd44E0Qs4ifF69cIegwO6mjCHya5l9QotIT3pcvkWckSx/mWdnfL3qXE/Se5MBVCWBJbhN/Yq6MftXWCBE2b7y0gQKyF0iFotD/VR86wSShoHgQZQsJMMSie2guEf8g== 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=YBlpqEA3wqODgHWKPG4DGJ7QeWvSNPNqcZZuv1kj/NQ=; b=IRZSZl6HkqY3QDw/LYF2GPpbnAdk0YAQd9Zc8uCqIn4uqkOz/JHGU9ftwi6fq9oecrhCSqmnv0osNy8jUcjSYWLPEVz5RLAHSxjsuqIEuJStka8vChgMWmjAoDHHNIRGEeKKUqClOVok9EEHOBXHYH+qtBLRRFDiOoaWkr+cuccu1Tonu+6LmTbkf2uEBXKGel/Mcm+t2Jgn+iWf+6/IEiQZ2OX9054ghCNz9hjQIYP/E6mo7cgU5iU3tdybkL7TVFhCQN0U1F1nBick2lfOOtQUAuDgDrzJgCoeICiM0xioBA55YWsozAiaI0WTrl4lagtPrKuR5ObkuOfG7xTgBw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YBlpqEA3wqODgHWKPG4DGJ7QeWvSNPNqcZZuv1kj/NQ=; b=rZG+KIVt51Bb5HqdQbDv8h1B9KiLWXMQgBWQ0TzE75PRLgFjjlYd8E6CRAhSVHazzE42yr4d3T6+5I4+/sTBWVCKP6EITIbmN0nZ5oEkahfIV9OeDd2ZfF8yR3dngSREjjdTyvdMmeVonA33R0chrS097CF+4D7Uj0ck5mPnBBw= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 30/47] hw/misc/xlnx-versal-crl: remove unnecessary include directives Date: Fri, 12 Sep 2025 12:00:39 +0200 Message-ID: <20250912100059.103997-31-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: None (SATLEXMB04.amd.com: luc.michel@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF00017098:EE_|PH7PR12MB9103:EE_ X-MS-Office365-Filtering-Correlation-Id: a48ef7d6-fb94-495d-51f2-08ddf1e3923f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|1800799024|82310400026|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?8dfhtHaOIEPLMdU5/BDNXMPwSFF1d8ZYS5pr6gAz0jY25Y4VxfvNtY3pLPAy?= =?us-ascii?Q?8cM8O7YvKAmC6/tQ7VFC1wBp37wdCqtEcSkZ3bJHzFI/FF9Ohi9nUXlX2vgD?= =?us-ascii?Q?O5Q773d4hnfL2bxdrT3UmUqVYF5oPE7zOjD5Cvpfq1RuIdluuLMherOaWG+S?= =?us-ascii?Q?PwfrlUyLGeA/hqvkyOdZZ/OGLfCtArXxRedwVIhRXUf7INiur/OvGsrZQpAF?= =?us-ascii?Q?L6X5dUOX4PUUsianwxa9UqL6r7+CHGxD3yoiexqLohrFQTPUT1pGMNEPrN5I?= =?us-ascii?Q?Ulf7qBdnDWAyahxSItZHWDS2pac4GG6csWbHKcsq/cGx/ZSQFhS9w+Je09ev?= =?us-ascii?Q?h/LOUHLcpEevscbbTVNp1wHHHS1zCho5kq8yDGG/gjE4xry0yIiQKvHck2AS?= =?us-ascii?Q?uIpDfJgAHpefd2reJajEeaeGgsuNVug+bEMbo1IZau6B176Mz9Sr301eXV0j?= =?us-ascii?Q?gHWxhR7PneaX/S9CW9WQvCe2W0nNkOBFpHPQa92oAY0ubn9KAEqonNQRBJGX?= =?us-ascii?Q?CA+njKTIrGnKJBAgak+irsLk0vmlFMxsMfBa2l08zEFpAilPX3UkrIQhpxI0?= =?us-ascii?Q?RNwMpfRLgmsme+AfMHL3R4bEtictMIHEADnmjpOsy5gxOIIHAPrSHnW3RZT4?= =?us-ascii?Q?59291nl9oaC4RJUoL1NPeNd4dsNOt+7l0DGtjt0MsPq/idIkWgSUlKU8oGEQ?= =?us-ascii?Q?ER35DWExYqfO4HjfxKX0hMm2mjb3Cq+HgiVRp00KC0vSsfuoO5BeC5PApYw7?= =?us-ascii?Q?yWUsbD+biQmIG8QYQGPwtGC/2kHs1BCtQLNM/PeN4ap336iZqgUMmNUOYYjz?= =?us-ascii?Q?gKxxAxOegFgmHIGB02WlQPCLANCL1Ze8+vCqX4aJ9KZfuYo/M6ktDnItAABl?= =?us-ascii?Q?XNURNC5Yxw0vM+RmTd4EdWjTazesR9emBjd0IA25yCEmZCaz8Ralj3mzB9+w?= =?us-ascii?Q?VfB+9ROoQ8f5cawh0IZ4ghIpt8pVJu3EHJDenHMoev+o6OPZ78cGBbDluyef?= =?us-ascii?Q?Od4cQZrZ3MhEwowfZs97xwjfy05hXVYqfV69S7sPasptatGWfENL6Gli2nKJ?= =?us-ascii?Q?XALmuPjXSzDlbEHTbptsXO3icfWEPbJqVMg5pdemanWlWJPQb186km7/Uz2w?= =?us-ascii?Q?Xx5+vSoSLT5A/eSjVjmWb100mhKH22gXa3FcSYb43S7blemfZZ/Ski/odeCq?= =?us-ascii?Q?oL01WOh6h8iGylZLW5Q4ZNRqiJweFqOuCxNsaFKAupbG1wz/pNf4Uc+sJKOx?= =?us-ascii?Q?E6Hjvez6T4jIAo1DvfOhWpDx/ZXPMdyWGTf9tQJho79sK5Mf2R1aJQNYMoUS?= =?us-ascii?Q?nUcBmihw19GAMujgvNob3kJAoKKyY4RsDm49Wehvojsv6veRwSRHtai/xkE8?= =?us-ascii?Q?tbX/bvYSHVUOp/8iANd1Mnr6bHckjkCvcH1NKIuE2L4sKvQBnHsPdxhvJUCf?= =?us-ascii?Q?j0n7L6sLu0UObcJRTTOaAntpg6cKirQOUiUW0LDOv+Z+8uXv6glvZMpINsSg?= =?us-ascii?Q?VVuqJRR1wzs1A1Ro8iLFmqqjPXFEIdICkBIF?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(36860700013)(1800799024)(82310400026)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:06.9175 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a48ef7d6-fb94-495d-51f2-08ddf1e3923f X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF00017098.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB9103 Received-SPF: permerror client-ip=2a01:111:f403:2414::625; envelope-from=Luc.Michel@amd.com; helo=NAM11-BN8-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757672248110116600 Content-Type: text/plain; charset="utf-8" Drop unused include directives from xlnx-versal-crl.c Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- hw/misc/xlnx-versal-crl.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/hw/misc/xlnx-versal-crl.c b/hw/misc/xlnx-versal-crl.c index 08ff2fcc24f..f288545967a 100644 --- a/hw/misc/xlnx-versal-crl.c +++ b/hw/misc/xlnx-versal-crl.c @@ -1,18 +1,15 @@ /* * QEMU model of the Clock-Reset-LPD (CRL). * - * Copyright (c) 2022 Advanced Micro Devices, Inc. + * Copyright (c) 2022-2025 Advanced Micro Devices, Inc. * SPDX-License-Identifier: GPL-2.0-or-later * * Written by Edgar E. Iglesias */ =20 #include "qemu/osdep.h" -#include "qapi/error.h" -#include "qemu/log.h" -#include "qemu/bitops.h" #include "migration/vmstate.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" #include "hw/irq.h" #include "hw/register.h" --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757672261; cv=pass; d=zohomail.com; s=zohoarc; b=LuENV568mQI5wTEA3sEC3YDOnb4xa1qzKjUQV/9g24ELPJtpKrVFC29LBTEdGBnx8gwYP/cL5kSKaZ6R8v+jYfDkPYfwBJLt/zCGe4qzRmHwP2Fwwihll90KwzYM/mtbYzA5MmQfylugD4LtAaWeLy1UbWxmGLLt5cExakSblv4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757672261; 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=fhURXWJrmzS4o6rjkeYbUxI08a1CVOmSBNr7j+KMV2U=; b=kglzyRHdemWLlVyYKjDKwATX3lK8nlhOrDyJ1JPCjk7sA3Yivw4bEV5g5p0j+/XKzKBcWuvtEuhDLIQsvRsj8eZ5m5rntya4BPkO5rGICUQbGQB4/BFgYlKJ1elbl+rdpXbfLlgDVMF1bOVhQDxmfboi2t8W77KsD/UuKZ0iYIg= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757672261764100.64948738570581; Fri, 12 Sep 2025 03:17:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0eI-0001J6-8l; Fri, 12 Sep 2025 06:04:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cz-0007R9-Tc; Fri, 12 Sep 2025 06:03:37 -0400 Received: from mail-dm6nam11on20613.outbound.protection.outlook.com ([2a01:111:f403:2415::613] helo=NAM11-DM6-obe.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 1ux0cj-0001Lz-QR; Fri, 12 Sep 2025 06:03:37 -0400 Received: from DS7P220CA0012.NAMP220.PROD.OUTLOOK.COM (2603:10b6:8:1ca::9) by MN2PR12MB4336.namprd12.prod.outlook.com (2603:10b6:208:1df::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:03:11 +0000 Received: from DS3PEPF000099DB.namprd04.prod.outlook.com (2603:10b6:8:1ca:cafe::9b) by DS7P220CA0012.outlook.office365.com (2603:10b6:8:1ca::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.18 via Frontend Transport; Fri, 12 Sep 2025 10:03:11 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099DB.mail.protection.outlook.com (10.167.17.197) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:11 +0000 Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:17 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:02:16 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:15 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bJaMVjbxqlQevBGkty7gCF/MLxvd19Qe8z0m7cHCEb/7vs/8joaFAEZKBSUgzmGTXwA+aRsu7zjMICnnwbI2iHVLayVGBnI0rQMviN5PHH7b4x/ClwVotfpMxJ4daGwTOPvjbizPplz7q8osxIr0Iu0dkTkmcqLJiwRT4aE5JsHKOD8AFZKzMcCJVHGzO0XnYCawSZiuKVkRXSFADwFM3CtHXcYjYtvllhvTd4h5TvGFUYzmXCPwaE5G03VzD87KxMO23SJA6DG3PLYhicWh+j/dUWHA+h+JSWDxAtV32HWQHYWiqqqfKidHve+cXQbl25uH69yG7vyYLAzStVIGmQ== 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=fhURXWJrmzS4o6rjkeYbUxI08a1CVOmSBNr7j+KMV2U=; b=xn4CTRZeQMKNDWGFTvuUO0oN7r6B9SLXvf7SjJmACwJfxHYtHUPryNO7R2Gf/Mf2dKVJIvyKBcEoeciDmTE26vbB7Qbl7tsHboGdRBcKQz0IaD7o3lrF/cLD7Bc9rL/V7eWFDIfSAtjwb5uylNM/Uq0Lo8/BYWCTEmIbBQqR5mXQbLfAUDKdPQAdO38R/uuROCTLAhYWLvFCx+caszDyMdwqMsnzYCFAM0KVTro+cBAq4V75imucYVVM4SrYhrt1M+I4SHgHaqx5FufY2JYltTW81P8U69DvBTcldZ+GJFJnp3UmV1mqapSQ6NNUTOyXwzx2sDVFf3upe4S5P1vvqg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fhURXWJrmzS4o6rjkeYbUxI08a1CVOmSBNr7j+KMV2U=; b=enJ6e7OF+vO1Uq6l7nOI4qcCZN/1pJcuokXSwpIh6BwA2paJleqrEfPkRgax978D0NFq+AiHPR7aPl0fLFzdpBsbNBfDRm4h2Yxc7uBdKMe4CHc+6JJ+tZa2DRJg06FoVqDC880H5jK3RbpLn4/u4YA6v9i31IzFGzEOQ6JCuzs= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 31/47] hw/misc/xlnx-versal-crl: split into base/concrete classes Date: Fri, 12 Sep 2025 12:00:40 +0200 Message-ID: <20250912100059.103997-32-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: None (SATLEXMB04.amd.com: luc.michel@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099DB:EE_|MN2PR12MB4336:EE_ X-MS-Office365-Filtering-Correlation-Id: be39645f-f5fc-4e39-8185-08ddf1e394bf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|376014|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?p8kgX9ql/8a7XzBJSgA+AX0pN0bdujUmwSVp4vrbDGkHXaRD2DqQbZosRMSS?= =?us-ascii?Q?SMRU6Z+ZV5m1OxfxSAtEo6IpJ8iSMpEKcysLnHmsOZ7J6TpCdSzcM1nioLxF?= =?us-ascii?Q?UQGTzeZKmQDw6F0DsLY/jPSlkwGvO0WnPyfi9uAXI7OsrSCui7geBpwGvIwP?= =?us-ascii?Q?S/b1AsfcvTt6w9yqmY1RKky98SFhfpdKRi8vjOBLkg9zf9nh4fFT64RtOFot?= =?us-ascii?Q?rgwV+bHEhwcU79u+nXMZyZwXrO7/iDRuU+0rTxqpAd/U7zd10MvY5DC95IwE?= =?us-ascii?Q?iOjWEI92ReHcSdUNSDr9KpODe9ZiYu3OpS7pgKxzsdTP4IaDhkTkT1O9RI7U?= =?us-ascii?Q?LqJzNPa+IctHRhxONMxL9d73olP5xFM3QjPJ97U2ls6wsWAfdlFuN1dR/u2d?= =?us-ascii?Q?2vw6dNdTQ51k+t3KLjI8GZ/N6o0WN21qLMYzleoO79z2N4gkVyX6fEMlpvjX?= =?us-ascii?Q?GgfPTolYQG7bd62HsRyrybGmaj+TUXEkZdF6TxLE33Ygvpaj/I5AsCfaGMmq?= =?us-ascii?Q?blMjz7Toh/6XXHSoNbiISrW/RJsmKsWkRtXw5oIr3alNYP4A1CLzZ++35/0v?= =?us-ascii?Q?/P8uXez9AVVBvWByJ/72fKCbpwfbCmuctCiAqxTyAKk37QzYsxI7WuIjClu8?= =?us-ascii?Q?vx1hp1EyFz1IxX56QoTZfKmk4WSOuyB3OWFkZv+sFWyw6WsUQE2MZ5LjUQ72?= =?us-ascii?Q?fIbC0e0X0x+GVciIHAEmwhbT2DXZao04LffNvVlUZhtsuPy1dPfN11CHjbs6?= =?us-ascii?Q?jZqzjl7MK4xaBOoIuxyt1ZXIvDxcA3JbGTO44q1fpQtVaIz07RCSCgVE+xlX?= =?us-ascii?Q?yLx/zRth6eDmkLb2XG2z6ZHdtGGfhTjLl5PoNisXoJWCnLATX61pa7X8kNwu?= =?us-ascii?Q?raM9S1UDnFxJ4DZlQRsZPy35ebCZFPMmsahS286JEzvr4j/GYzLV8mNSlWBY?= =?us-ascii?Q?yPMRsUepcg3AnJUSHurFOR1yZ3YhQ4ephP9598VJ2/HCYnD/a73mskHyqlb7?= =?us-ascii?Q?WO2jePtyPdMW1UANXiEZEMiL57YwMDUKdLRt0Et17QSo3em6bXKAH/+/Qs3y?= =?us-ascii?Q?YWIwD3fEGWoDZf8cSORWHn9tUFNtPUt/sdkMD4A42kLV9oFjSyKet1AmhQXt?= =?us-ascii?Q?W7pBE15o6wKKJrF5C7/p6l1jdGcD4SL7M4SboqUgyu8fEjtn8Mwy2ggsd2TW?= =?us-ascii?Q?M0OLpw16Fyr9tZThzWRh/jRPCTuAFSDnzxVHR9RsaNkyNWNIqpzJGvEV6Eum?= =?us-ascii?Q?ZhAG5NukdFKuEyrwW5f1wCoXtq7vexB92/935fYiB8cbDsXOAxsB+feASZ7p?= =?us-ascii?Q?Px+P2nelnEgPzlZN3ZqnvcI7F8SwSCCFDCkNDbYNGx/AC67YYAD/qlGez1A7?= =?us-ascii?Q?doTogbPZf5WKaovqxXFA3Jxvtx3M8nAJyavIoJvlusa9t3Dxmc9+jbZjv6c6?= =?us-ascii?Q?Om8SaGVp25EIZXpBxsnD0RzfseLp8Gj35oSMk9kHEn90/YeZya3rbV1h2J4c?= =?us-ascii?Q?d9aj22bNQFR4v/PTEfAcAuXXHfoOUHgJP7oH?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(376014)(36860700013)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:11.1123 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: be39645f-f5fc-4e39-8185-08ddf1e394bf X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099DB.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4336 Received-SPF: permerror client-ip=2a01:111:f403:2415::613; envelope-from=Luc.Michel@amd.com; helo=NAM11-DM6-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757672262331116600 Content-Type: text/plain; charset="utf-8" Split the TYPE_XLNX_VERSAL_CRL type into base and concrete classes. This is in preparation for the versal2 version of the CRL. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/misc/xlnx-versal-crl.h | 31 ++++++++++++++++++-- hw/misc/xlnx-versal-crl.c | 48 +++++++++++++++++++------------ 2 files changed, 58 insertions(+), 21 deletions(-) diff --git a/include/hw/misc/xlnx-versal-crl.h b/include/hw/misc/xlnx-versa= l-crl.h index dba6d3585d1..2b39d203a67 100644 --- a/include/hw/misc/xlnx-versal-crl.h +++ b/include/hw/misc/xlnx-versal-crl.h @@ -1,21 +1,27 @@ /* * QEMU model of the Clock-Reset-LPD (CRL). * * Copyright (c) 2022 Xilinx Inc. + * Copyright (c) 2025 Advanced Micro Devices, Inc. * SPDX-License-Identifier: GPL-2.0-or-later * * Written by Edgar E. Iglesias */ #ifndef HW_MISC_XLNX_VERSAL_CRL_H #define HW_MISC_XLNX_VERSAL_CRL_H =20 #include "hw/sysbus.h" #include "hw/register.h" #include "target/arm/cpu-qom.h" +#include "hw/arm/xlnx-versal-version.h" =20 +#define TYPE_XLNX_VERSAL_CRL_BASE "xlnx-versal-crl-base" #define TYPE_XLNX_VERSAL_CRL "xlnx-versal-crl" + +OBJECT_DECLARE_TYPE(XlnxVersalCRLBase, XlnxVersalCRLBaseClass, + XLNX_VERSAL_CRL_BASE) OBJECT_DECLARE_SIMPLE_TYPE(XlnxVersalCRL, XLNX_VERSAL_CRL) =20 REG32(ERR_CTRL, 0x0) FIELD(ERR_CTRL, SLVERR_ENABLE, 0, 1) REG32(IR_STATUS, 0x4) @@ -214,22 +220,43 @@ REG32(PSM_RST_MODE, 0x370) =20 #define CRL_R_MAX (R_PSM_RST_MODE + 1) =20 #define RPU_MAX_CPU 2 =20 -struct XlnxVersalCRL { +struct XlnxVersalCRLBase { SysBusDevice parent_obj; + + RegisterInfoArray *reg_array; + uint32_t *regs; +}; + +struct XlnxVersalCRLBaseClass { + SysBusDeviceClass parent_class; +}; + +struct XlnxVersalCRL { + XlnxVersalCRLBase parent_obj; qemu_irq irq; =20 struct { ARMCPU *cpu_r5[RPU_MAX_CPU]; DeviceState *adma[8]; DeviceState *uart[2]; DeviceState *gem[2]; DeviceState *usb; } cfg; =20 - RegisterInfoArray *reg_array; uint32_t regs[CRL_R_MAX]; RegisterInfo regs_info[CRL_R_MAX]; }; + +static inline const char *xlnx_versal_crl_class_name(VersalVersion ver) +{ + switch (ver) { + case VERSAL_VER_VERSAL: + return TYPE_XLNX_VERSAL_CRL; + default: + g_assert_not_reached(); + } +} + #endif diff --git a/hw/misc/xlnx-versal-crl.c b/hw/misc/xlnx-versal-crl.c index f288545967a..be89e0da40d 100644 --- a/hw/misc/xlnx-versal-crl.c +++ b/hw/misc/xlnx-versal-crl.c @@ -296,21 +296,21 @@ static const RegisterAccessInfo crl_regs_info[] =3D { .reset =3D 0x1, .rsvd =3D 0xf8, } }; =20 -static void crl_reset_enter(Object *obj, ResetType type) +static void versal_crl_reset_enter(Object *obj, ResetType type) { XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(obj); unsigned int i; =20 for (i =3D 0; i < ARRAY_SIZE(s->regs_info); ++i) { register_reset(&s->regs_info[i]); } } =20 -static void crl_reset_hold(Object *obj, ResetType type) +static void versal_crl_reset_hold(Object *obj, ResetType type) { XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(obj); =20 crl_update_irq(s); } @@ -323,24 +323,26 @@ static const MemoryRegionOps crl_ops =3D { .min_access_size =3D 4, .max_access_size =3D 4, }, }; =20 -static void crl_init(Object *obj) +static void versal_crl_init(Object *obj) { XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(obj); + XlnxVersalCRLBase *xvcb =3D XLNX_VERSAL_CRL_BASE(obj); SysBusDevice *sbd =3D SYS_BUS_DEVICE(obj); int i; =20 - s->reg_array =3D + xvcb->reg_array =3D register_init_block32(DEVICE(obj), crl_regs_info, ARRAY_SIZE(crl_regs_info), s->regs_info, s->regs, &crl_ops, XLNX_VERSAL_CRL_ERR_DEBUG, CRL_R_MAX * 4); - sysbus_init_mmio(sbd, &s->reg_array->mem); + xvcb->regs =3D s->regs; + sysbus_init_mmio(sbd, &xvcb->reg_array->mem); sysbus_init_irq(sbd, &s->irq); =20 for (i =3D 0; i < ARRAY_SIZE(s->cfg.cpu_r5); ++i) { object_property_add_link(obj, "cpu_r5[*]", TYPE_ARM_CPU, (Object **)&s->cfg.cpu_r5[i], @@ -375,45 +377,53 @@ static void crl_init(Object *obj) OBJ_PROP_LINK_STRONG); } =20 static void crl_finalize(Object *obj) { - XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(obj); + XlnxVersalCRLBase *s =3D XLNX_VERSAL_CRL_BASE(obj); register_finalize_block(s->reg_array); } =20 -static const VMStateDescription vmstate_crl =3D { +static const VMStateDescription vmstate_versal_crl =3D { .name =3D TYPE_XLNX_VERSAL_CRL, .version_id =3D 1, .minimum_version_id =3D 1, .fields =3D (const VMStateField[]) { VMSTATE_UINT32_ARRAY(regs, XlnxVersalCRL, CRL_R_MAX), VMSTATE_END_OF_LIST(), } }; =20 -static void crl_class_init(ObjectClass *klass, const void *data) +static void versal_crl_class_init(ObjectClass *klass, const void *data) { - ResettableClass *rc =3D RESETTABLE_CLASS(klass); DeviceClass *dc =3D DEVICE_CLASS(klass); + ResettableClass *rc =3D RESETTABLE_CLASS(klass); =20 - dc->vmsd =3D &vmstate_crl; - - rc->phases.enter =3D crl_reset_enter; - rc->phases.hold =3D crl_reset_hold; + dc->vmsd =3D &vmstate_versal_crl; + rc->phases.enter =3D versal_crl_reset_enter; + rc->phases.hold =3D versal_crl_reset_hold; } =20 -static const TypeInfo crl_info =3D { - .name =3D TYPE_XLNX_VERSAL_CRL, +static const TypeInfo crl_base_info =3D { + .name =3D TYPE_XLNX_VERSAL_CRL_BASE, .parent =3D TYPE_SYS_BUS_DEVICE, - .instance_size =3D sizeof(XlnxVersalCRL), - .class_init =3D crl_class_init, - .instance_init =3D crl_init, + .instance_size =3D sizeof(XlnxVersalCRLBase), + .class_size =3D sizeof(XlnxVersalCRLBaseClass), .instance_finalize =3D crl_finalize, + .abstract =3D true, +}; + +static const TypeInfo versal_crl_info =3D { + .name =3D TYPE_XLNX_VERSAL_CRL, + .parent =3D TYPE_XLNX_VERSAL_CRL_BASE, + .instance_size =3D sizeof(XlnxVersalCRL), + .instance_init =3D versal_crl_init, + .class_init =3D versal_crl_class_init, }; =20 static void crl_register_types(void) { - type_register_static(&crl_info); + type_register_static(&crl_base_info); + type_register_static(&versal_crl_info); } =20 type_init(crl_register_types) --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671650; cv=pass; d=zohomail.com; s=zohoarc; b=LyVlcQEmm6n7RWdzacWUHXwDCPJFNFjrExoZ+Yq6HkwIuNEEkuKS36rAcC4W3IvN8d9cdWBNSDLr785l8TmjFZ6yO4GPvzsoWoMQKp3uqKUvKCMk6fK2od5IjL1Sy19JWc7P4yrMagRIswsaUXT1/L0gTnnAZOnicl+kmsJOsTc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671650; 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=NaPwMaxYjsvuCLseexlKTnPDDWI4RS1hvw+UxcCNeRo=; b=R0J1Eyvy8FrfmnhFGH2xEuPzXEwONvcedZ2lzQhgAI1yiGeQQxTxQPMQexx08ByD4EQDxQspewt5hQnYR8k/yo2jTLDFvpfYEI9dQB9u/+iQZ1B/N6mqKHqDg70wRH/1zQAXcIhWmTkRKahMnhv+QOuzzeCaKpA5gcc2IUWQ6qE= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671650451789.190192902733; Fri, 12 Sep 2025 03:07:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0eY-0001qY-9H; Fri, 12 Sep 2025 06:05:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cz-0007Pd-6k; Fri, 12 Sep 2025 06:03:37 -0400 Received: from mail-dm6nam12on20618.outbound.protection.outlook.com ([2a01:111:f403:2417::618] helo=NAM12-DM6-obe.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 1ux0cb-0001MW-WA; Fri, 12 Sep 2025 06:03:29 -0400 Received: from DM6PR02CA0061.namprd02.prod.outlook.com (2603:10b6:5:177::38) by LV3PR12MB9095.namprd12.prod.outlook.com (2603:10b6:408:1a6::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:03:08 +0000 Received: from DS1PEPF0001709B.namprd05.prod.outlook.com (2603:10b6:5:177:cafe::46) by DM6PR02CA0061.outlook.office365.com (2603:10b6:5:177::38) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.17 via Frontend Transport; Fri, 12 Sep 2025 10:03:08 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS1PEPF0001709B.mail.protection.outlook.com (10.167.18.105) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:07 +0000 Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:18 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb09.amd.com (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:18 -0700 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:17 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=g8PMdmlB94q4MF0jKV23QG/C4nQFZ/PAlLAzHtvxJn8TvlLzQU7/Qpq4nlnGVBeYmZoSK8qhHNwvBt7qIwTBjrDF3Xr+ODhjo4yuo6R+RgeML1jSaFpbdCnGj78DLHrnwCK+PAbnH7ehLy5HtCa7l5I+NmUsr+UpK2Abfk2WkCtuwo1f5B9cZa49nlKEYeXEjm2DMJlKn1cGitcSjYo1EFE5NRK0GigV61fseUrHTGh2sdbHJyNmG8MX4wQLeYfOKmCS/r9THIhQGmP1jrvA/zPcwGjM6Mvb+e81RQcoyi2VIeTw07nLVh5vISdETlvghG584JZQPkOR5QOHKMq/7Q== 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=NaPwMaxYjsvuCLseexlKTnPDDWI4RS1hvw+UxcCNeRo=; b=QhnNQ5VRGgopVSslQMavFydwXWelaX4/IaLPJYXrT5jggiEKKiem9a9qBqHeUpCx0r4XrxQEnJewI07i17cf5Mr+s4diJ+Q28u12IS6JSQakZ+Odq02jvUie38U28u3S7GIfj/TgYoP2dT/ggWgrV6XwrubgR9FxtQEDaiNWFXwzEuQB3vbwS77VL6BmEGWT0BZjwDqdLKXVM8iLWTc6qNsGxkXnyr8Yszwj7u/8ZBgiKm/d8Hj9rt5Xcqge+PwGZRH2tNiBfIGcDYn5LaAtd4NX+tYfjXofTV6etkkok9uu9ZmmqMNJg2uafdDPGVU94ubxg33TBjjBxnnhVhQbBw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NaPwMaxYjsvuCLseexlKTnPDDWI4RS1hvw+UxcCNeRo=; b=v1EKVEOv7S/04QAKD10CIIjWcguuJ2LyqDbcfaDlwwOsbqot56CaF66AFBIG2pEN6SBy/3nRVYMysB2JxG4ea4dp24yMYluYYWpF6NcJqGfyaQJbUGrPNiO0ebwMS/kMSiwxlOCvQoE7or2bQzLEKbbUpxpjrF1W2DAoO10ceKI= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 32/47] hw/misc/xlnx-versal-crl: refactor device reset logic Date: Fri, 12 Sep 2025 12:00:41 +0200 Message-ID: <20250912100059.103997-33-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0001709B:EE_|LV3PR12MB9095:EE_ X-MS-Office365-Filtering-Correlation-Id: d7cef44c-b119-43a3-ef56-08ddf1e392da X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|82310400026|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?t4KSkSQ7CNkAu36nfEiz9DSrAl0gdc+12B1on3Asvkjq/o+7NAu6Wtxq3I+H?= =?us-ascii?Q?Y0FkVEqxkjMmfaWmefFoYAwAmWK+KBSEpLOJViR/wWwwIVOCs5JOCWyfdqFK?= =?us-ascii?Q?Wa5b54k9ZmEPeIrezU89RVxRZ6OWucKgjCUbjCgFh/aXsdllUwG5unhYVPtv?= =?us-ascii?Q?Fqu0VMkvvayNQMseqXwIwAolHEpiKmMCwJ1pPd9+Tp5FhTJub713MHzBcfh4?= =?us-ascii?Q?Vsg/Gbq0QmEqhORZAPD7tyr5CORnCxzpzXYtjkOyK/Qmzp+fkIy7VsnloJ5Q?= =?us-ascii?Q?Ev+lkTBNnm0ZHgcDkYmgaNN32+IAWzGb8mZ8+Dt0lnBwRGACMa1h+7oHrhca?= =?us-ascii?Q?6gXGw7kiFygSsJLMTl5Qzb1MAAgIyZU+t4K9vVcKiCIC/rakzq/IDTUwTkzQ?= =?us-ascii?Q?iv/iYv6XGXL+pd3wFGVV7cSXNL+T8s8OLvm1H0lAfmOe5CrWtoUP+52iq0E+?= =?us-ascii?Q?t3y3j90zxcRN0RGvIuC7GQ5Sx6YosXsAiWnPb3iE1RoG8Sx8iNRTD5hGfLdM?= =?us-ascii?Q?TBfSTuQMzEOsgtXuJZCgnSmW28u+UW4BcZ4ACopc5Df5NCAISI+v+04IEsXr?= =?us-ascii?Q?TgWL8ZWrEsxVaZYv+Hsxw4oApqrjIn6A60fMK5jU/oRNoxgGyS9yxOi/jI0C?= =?us-ascii?Q?NhNecezKYvkaVxurGYD4ZNqSpv/Rvhqw33XHlm+lnewZESzPRfM/rh3fzh9m?= =?us-ascii?Q?lGbY/6pQVK4MSu70QQcH14pLOePqpNDQFnvof7+9PILad2t52yYN8HKbcirn?= =?us-ascii?Q?0u2C5bjlFgtOoPSMx9hbprpQ7KxnEjOJG8jJyEqHXp7kuw+UPLOPMqEnOR41?= =?us-ascii?Q?zn+WT/9iDprhnb8kgs7cM/0z8a08hzpUr7xS8fcuey91evXn3mbO5hII4ye7?= =?us-ascii?Q?vv0LcN+YMTVmzbGg9RIoRx3t5e3Kx8MPZvTfpYqFFwCWWuM0C9nddJ4JM/jp?= =?us-ascii?Q?zWqqZm40MXJiOxR0E8iF88GYw4MVx98v6hGa5PHQ594rP9hbGqVGNO/OGbQl?= =?us-ascii?Q?MKETu8dNBjuh6mQSBJ5SzxIFg4G83x1+sbIHK4yaenhGISodk9OU/CbdTAzC?= =?us-ascii?Q?OTqtR+5JGACq+TXij7STdbn99Eu5D9zIILeRmBnt2jpaou34vo4YB3V50G9I?= =?us-ascii?Q?XEMzzc9uXX7m11JzopxQdjrl8mjgu4DTIftnVj1pVlcoJpgBqwTy2+J+D1CI?= =?us-ascii?Q?kMjUuGjtXK/L3Pe4sVMR9e5xJlUX24BoWk0Nr9UiXqlUoMxhM84GuzJGIzQh?= =?us-ascii?Q?SLVo/AHhmNlLKf8kqCIp6MhYPCeNbZQLrZ1zhBZa9dfH+eMDTFPtMxhjcST6?= =?us-ascii?Q?mqG4q1OJNMBhs89q8UtdUUcI//R5xiR2P/gKDL/PGWzZtkcPdTr+3wCsO10r?= =?us-ascii?Q?MGdyOEexS9o/0qog5VUCIbBbNKMTovrgkYcIoYB1vasEippwYIfW3e9fnmAn?= =?us-ascii?Q?J+ofbDfxZUp213GME/XEpwLCpDunbvhMXjf9Scr8StWG3+n09ay+PixBIsxV?= =?us-ascii?Q?7TmkDqm0EaTorOJTBZMbj/iRUm5KgxPSUfl9?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(1800799024)(82310400026)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:07.9359 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d7cef44c-b119-43a3-ef56-08ddf1e392da X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0001709B.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR12MB9095 Received-SPF: permerror client-ip=2a01:111:f403:2417::618; envelope-from=Luc.Michel@amd.com; helo=NAM12-DM6-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671652286116600 Content-Type: text/plain; charset="utf-8" Refactor the device reset logic to have a common register write callback for all the devices. This uses a decode function to map the register address to the actual peripheral to reset. This refactoring changes the CPU property name from cpu_r5[*] to rpu[*] to ease with the connections in the Versal SoC. It also fixes a bug where the gem device pointer was mapped to the usb link property. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/misc/xlnx-versal-crl.h | 8 +- hw/misc/xlnx-versal-crl.c | 163 ++++++++++++++++-------------- 2 files changed, 92 insertions(+), 79 deletions(-) diff --git a/include/hw/misc/xlnx-versal-crl.h b/include/hw/misc/xlnx-versa= l-crl.h index 2b39d203a67..7e50a95ad3c 100644 --- a/include/hw/misc/xlnx-versal-crl.h +++ b/include/hw/misc/xlnx-versal-crl.h @@ -218,33 +218,33 @@ REG32(PSM_RST_MODE, 0x370) FIELD(PSM_RST_MODE, WAKEUP, 2, 1) FIELD(PSM_RST_MODE, RST_MODE, 0, 2) =20 #define CRL_R_MAX (R_PSM_RST_MODE + 1) =20 -#define RPU_MAX_CPU 2 - struct XlnxVersalCRLBase { SysBusDevice parent_obj; =20 RegisterInfoArray *reg_array; uint32_t *regs; }; =20 struct XlnxVersalCRLBaseClass { SysBusDeviceClass parent_class; + + DeviceState ** (*decode_periph_rst)(XlnxVersalCRLBase *s, hwaddr, size= _t *); }; =20 struct XlnxVersalCRL { XlnxVersalCRLBase parent_obj; qemu_irq irq; =20 struct { - ARMCPU *cpu_r5[RPU_MAX_CPU]; + DeviceState *rpu[2]; DeviceState *adma[8]; DeviceState *uart[2]; DeviceState *gem[2]; - DeviceState *usb; + DeviceState *usb[1]; } cfg; =20 uint32_t regs[CRL_R_MAX]; RegisterInfo regs_info[CRL_R_MAX]; }; diff --git a/hw/misc/xlnx-versal-crl.c b/hw/misc/xlnx-versal-crl.c index be89e0da40d..6225a92e0bd 100644 --- a/hw/misc/xlnx-versal-crl.c +++ b/hw/misc/xlnx-versal-crl.c @@ -53,94 +53,103 @@ static uint64_t crl_disable_prew(RegisterInfo *reg, ui= nt64_t val64) s->regs[R_IR_MASK] |=3D val; crl_update_irq(s); return 0; } =20 -static void crl_reset_dev(XlnxVersalCRL *s, DeviceState *dev, - bool rst_old, bool rst_new) +static DeviceState **versal_decode_periph_rst(XlnxVersalCRLBase *s, + hwaddr addr, size_t *count) { - device_cold_reset(dev); -} + size_t idx; + XlnxVersalCRL *xvc =3D XLNX_VERSAL_CRL(s); =20 -static void crl_reset_cpu(XlnxVersalCRL *s, ARMCPU *armcpu, - bool rst_old, bool rst_new) -{ - if (rst_new) { - arm_set_cpu_off(arm_cpu_mp_affinity(armcpu)); - } else { - arm_set_cpu_on_and_reset(arm_cpu_mp_affinity(armcpu)); - } -} + *count =3D 1; =20 -#define REGFIELD_RESET(type, s, reg, f, new_val, dev) { \ - bool old_f =3D ARRAY_FIELD_EX32((s)->regs, reg, f); \ - bool new_f =3D FIELD_EX32(new_val, reg, f); \ - \ - /* Detect edges. */ \ - if (dev && old_f !=3D new_f) { \ - crl_reset_ ## type(s, dev, old_f, new_f); \ - } \ -} + switch (addr) { + case A_RST_CPU_R5: + return xvc->cfg.rpu; =20 -static uint64_t crl_rst_r5_prew(RegisterInfo *reg, uint64_t val64) -{ - XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(reg->opaque); + case A_RST_ADMA: + /* A single register fans out to all DMA reset inputs */ + *count =3D ARRAY_SIZE(xvc->cfg.adma); + return xvc->cfg.adma; =20 - REGFIELD_RESET(cpu, s, RST_CPU_R5, RESET_CPU0, val64, s->cfg.cpu_r5[0]= ); - REGFIELD_RESET(cpu, s, RST_CPU_R5, RESET_CPU1, val64, s->cfg.cpu_r5[1]= ); - return val64; -} + case A_RST_UART0 ... A_RST_UART1: + idx =3D (addr - A_RST_UART0) / sizeof(uint32_t); + return xvc->cfg.uart + idx; =20 -static uint64_t crl_rst_adma_prew(RegisterInfo *reg, uint64_t val64) -{ - XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(reg->opaque); - int i; + case A_RST_GEM0 ... A_RST_GEM1: + idx =3D (addr - A_RST_GEM0) / sizeof(uint32_t); + return xvc->cfg.gem + idx; + + case A_RST_USB0: + return xvc->cfg.usb; =20 - /* A single register fans out to all ADMA reset inputs. */ - for (i =3D 0; i < ARRAY_SIZE(s->cfg.adma); i++) { - REGFIELD_RESET(dev, s, RST_ADMA, RESET, val64, s->cfg.adma[i]); + default: + /* invalid or unimplemented */ + return NULL; } - return val64; } =20 -static uint64_t crl_rst_uart0_prew(RegisterInfo *reg, uint64_t val64) +static uint64_t crl_rst_cpu_prew(RegisterInfo *reg, uint64_t val64) { - XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(reg->opaque); + XlnxVersalCRLBase *s =3D XLNX_VERSAL_CRL_BASE(reg->opaque); + XlnxVersalCRLBaseClass *xvcbc =3D XLNX_VERSAL_CRL_BASE_GET_CLASS(s); + DeviceState **dev; + size_t i, count; =20 - REGFIELD_RESET(dev, s, RST_UART0, RESET, val64, s->cfg.uart[0]); - return val64; -} + dev =3D xvcbc->decode_periph_rst(s, reg->access->addr, &count); =20 -static uint64_t crl_rst_uart1_prew(RegisterInfo *reg, uint64_t val64) -{ - XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(reg->opaque); + for (i =3D 0; i < 2; i++) { + bool prev, new; + uint64_t aff; =20 - REGFIELD_RESET(dev, s, RST_UART1, RESET, val64, s->cfg.uart[1]); - return val64; -} + prev =3D extract32(s->regs[reg->access->addr / 4], i, 1); + new =3D extract32(val64, i, 1); =20 -static uint64_t crl_rst_gem0_prew(RegisterInfo *reg, uint64_t val64) -{ - XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(reg->opaque); + if (prev =3D=3D new) { + continue; + } =20 - REGFIELD_RESET(dev, s, RST_GEM0, RESET, val64, s->cfg.gem[0]); - return val64; -} + aff =3D arm_cpu_mp_affinity(ARM_CPU(dev[i])); =20 -static uint64_t crl_rst_gem1_prew(RegisterInfo *reg, uint64_t val64) -{ - XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(reg->opaque); + if (new) { + arm_set_cpu_off(aff); + } else { + arm_set_cpu_on_and_reset(aff); + } + } =20 - REGFIELD_RESET(dev, s, RST_GEM1, RESET, val64, s->cfg.gem[1]); return val64; } =20 -static uint64_t crl_rst_usb_prew(RegisterInfo *reg, uint64_t val64) +static uint64_t crl_rst_dev_prew(RegisterInfo *reg, uint64_t val64) { - XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(reg->opaque); + XlnxVersalCRLBase *s =3D XLNX_VERSAL_CRL_BASE(reg->opaque); + XlnxVersalCRLBaseClass *xvcbc =3D XLNX_VERSAL_CRL_BASE_GET_CLASS(s); + DeviceState **dev; + bool prev, new; + size_t i, count; + + dev =3D xvcbc->decode_periph_rst(s, reg->access->addr, &count); + + if (dev =3D=3D NULL) { + return val64; + } + + prev =3D s->regs[reg->access->addr / 4] & 0x1; + new =3D val64 & 0x1; + + if (prev =3D=3D new) { + return val64; + } + + for (i =3D 0; i < count; i++) { + if (dev[i]) { + device_cold_reset(dev[i]); + } + } =20 - REGFIELD_RESET(dev, s, RST_USB0, RESET, val64, s->cfg.usb); return val64; } =20 static const RegisterAccessInfo crl_regs_info[] =3D { { .name =3D "ERR_CTRL", .addr =3D A_ERR_CTRL, @@ -242,31 +251,31 @@ static const RegisterAccessInfo crl_regs_info[] =3D { .reset =3D 0x3c00, .rsvd =3D 0xfdfc00f8, },{ .name =3D "RST_CPU_R5", .addr =3D A_RST_CPU_R5, .reset =3D 0x17, .rsvd =3D 0x8, - .pre_write =3D crl_rst_r5_prew, + .pre_write =3D crl_rst_cpu_prew, },{ .name =3D "RST_ADMA", .addr =3D A_RST_ADMA, .reset =3D 0x1, - .pre_write =3D crl_rst_adma_prew, + .pre_write =3D crl_rst_dev_prew, },{ .name =3D "RST_GEM0", .addr =3D A_RST_GEM0, .reset =3D 0x1, - .pre_write =3D crl_rst_gem0_prew, + .pre_write =3D crl_rst_dev_prew, },{ .name =3D "RST_GEM1", .addr =3D A_RST_GEM1, .reset =3D 0x1, - .pre_write =3D crl_rst_gem1_prew, + .pre_write =3D crl_rst_dev_prew, },{ .name =3D "RST_SPARE", .addr =3D A_RST_SPARE, .reset =3D 0x1, },{ .name =3D "RST_USB0", .addr =3D A_RST_USB0, .reset =3D 0x1, - .pre_write =3D crl_rst_usb_prew, + .pre_write =3D crl_rst_dev_prew, },{ .name =3D "RST_UART0", .addr =3D A_RST_UART0, .reset =3D 0x1, - .pre_write =3D crl_rst_uart0_prew, + .pre_write =3D crl_rst_dev_prew, },{ .name =3D "RST_UART1", .addr =3D A_RST_UART1, .reset =3D 0x1, - .pre_write =3D crl_rst_uart1_prew, + .pre_write =3D crl_rst_dev_prew, },{ .name =3D "RST_SPI0", .addr =3D A_RST_SPI0, .reset =3D 0x1, },{ .name =3D "RST_SPI1", .addr =3D A_RST_SPI1, .reset =3D 0x1, },{ .name =3D "RST_CAN0", .addr =3D A_RST_CAN0, @@ -341,13 +350,13 @@ static void versal_crl_init(Object *obj) CRL_R_MAX * 4); xvcb->regs =3D s->regs; sysbus_init_mmio(sbd, &xvcb->reg_array->mem); sysbus_init_irq(sbd, &s->irq); =20 - for (i =3D 0; i < ARRAY_SIZE(s->cfg.cpu_r5); ++i) { - object_property_add_link(obj, "cpu_r5[*]", TYPE_ARM_CPU, - (Object **)&s->cfg.cpu_r5[i], + for (i =3D 0; i < ARRAY_SIZE(s->cfg.rpu); ++i) { + object_property_add_link(obj, "rpu[*]", TYPE_ARM_CPU, + (Object **)&s->cfg.rpu[i], qdev_prop_allow_set_link_before_realize, OBJ_PROP_LINK_STRONG); } =20 for (i =3D 0; i < ARRAY_SIZE(s->cfg.adma); ++i) { @@ -369,14 +378,16 @@ static void versal_crl_init(Object *obj) (Object **)&s->cfg.gem[i], qdev_prop_allow_set_link_before_realize, OBJ_PROP_LINK_STRONG); } =20 - object_property_add_link(obj, "usb", TYPE_DEVICE, - (Object **)&s->cfg.gem[i], - qdev_prop_allow_set_link_before_realize, - OBJ_PROP_LINK_STRONG); + for (i =3D 0; i < ARRAY_SIZE(s->cfg.usb); ++i) { + object_property_add_link(obj, "usb[*]", TYPE_DEVICE, + (Object **)&s->cfg.usb[i], + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG); + } } =20 static void crl_finalize(Object *obj) { XlnxVersalCRLBase *s =3D XLNX_VERSAL_CRL_BASE(obj); @@ -394,15 +405,17 @@ static const VMStateDescription vmstate_versal_crl = =3D { }; =20 static void versal_crl_class_init(ObjectClass *klass, const void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); + XlnxVersalCRLBaseClass *xvcc =3D XLNX_VERSAL_CRL_BASE_CLASS(klass); ResettableClass *rc =3D RESETTABLE_CLASS(klass); =20 dc->vmsd =3D &vmstate_versal_crl; rc->phases.enter =3D versal_crl_reset_enter; rc->phases.hold =3D versal_crl_reset_hold; + xvcc->decode_periph_rst =3D versal_decode_periph_rst; } =20 static const TypeInfo crl_base_info =3D { .name =3D TYPE_XLNX_VERSAL_CRL_BASE, .parent =3D TYPE_SYS_BUS_DEVICE, --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671709; cv=pass; d=zohomail.com; s=zohoarc; b=Scj5FnkFMq7lFzJ5Y7CoAEmzjCWw+8Dj+ajTWoeQ72pvg+jRkn5xF7VW0TeXmmb+NMC3rrbhVJgkUnMQA375ruth9066dN0cf+loUbuRBNq7egwqjFYAvalaX3HiCmzZPNsWJLWpBIMvcM0H38oTgcFqibqm21LEUpve+yvgxfo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671709; 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=9SrLEqEjQUaDOwqgTE5xnngqS3BaUTNZ/2FiQUIsXNs=; b=I9vEl/wX0EhMHUP91ZhQdoz0BQxqdvrDcVZ6Cga92rzV9B71Q9C3HzkbO4r9rKS1J782F+10082hk8HgvYq8Jnk2y0OubcL+ovf7cRQcQNQ6TnwUG16a9XiVvZ/2QVSVYkdO4RFpyQPWky39ToJd1G06WufaLkvjI4FJrX7O96Q= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671709680114.88578306142574; Fri, 12 Sep 2025 03:08:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0eE-0000vW-DA; Fri, 12 Sep 2025 06:04:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cz-0007R4-RV; Fri, 12 Sep 2025 06:03:37 -0400 Received: from mail-bn8nam04on2060f.outbound.protection.outlook.com ([2a01:111:f403:2408::60f] helo=NAM04-BN8-obe.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 1ux0ci-0001O1-9t; Fri, 12 Sep 2025 06:03:36 -0400 Received: from DS7PR05CA0003.namprd05.prod.outlook.com (2603:10b6:5:3b9::8) by IA1PR12MB8310.namprd12.prod.outlook.com (2603:10b6:208:3ff::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:03:13 +0000 Received: from DS3PEPF000099DF.namprd04.prod.outlook.com (2603:10b6:5:3b9:cafe::d2) by DS7PR05CA0003.outlook.office365.com (2603:10b6:5:3b9::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9137.7 via Frontend Transport; Fri, 12 Sep 2025 10:03:12 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099DF.mail.protection.outlook.com (10.167.17.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:12 +0000 Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:20 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb09.amd.com (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:20 -0700 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:18 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=prFGm+VtoLRN0fZmMljF9/cwlhEui0pY6cu9d1WWZYZaxCtPWvuv+3gBuEVMAt7rz32nakCTfrHaJROcHmaKG7C2GP13kmmqOvopswlVx/iScfc0jdpTBq1CZBu1Y5EZiSTuareKJz8K0hkzBsP3Djmp4zd3243uiF2PjaYfk8nbrQ2CXWRuU4N2JcwtfcCjgO86VWbTMJSHhjrl6kXhu3G9DZWyjLiGXZRy559cSp9uW6EJ7inWpW/3mMW1P/A9x1hhzCtbfA128ZB66LClUuVkN7RgqGE2ojS8/Br92LnVng6sewNUmDGX781C54Sr6Fb7BBjkcDpfLtkO0osTSg== 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=9SrLEqEjQUaDOwqgTE5xnngqS3BaUTNZ/2FiQUIsXNs=; b=bpgfTLWi2xsQqjqbNsTEvL3zExMFksejIbHkhw3spnk7YhNcTjCvqg+S2T6BN4QQo5KgW1YeFhypZQYYBT6gpr0joutcVuCRylkjcuG6Vxmh/ahJF6hrnAqc9qDfknowegnuA/vvXiYioFbH8gPMZ0OacE3x/azTXglGPNGnqTUOXEa7iClfhNkJ8lMhgxDf4ORtt1Fgo82+cQ+CsWw4HFsqH9CjYFoxiEPK5R1GSk291M2JRodMHs6Dzbrhnk2uGuXAQ1+J9mIBaT6Qzer8Hvg3s6qheUoNS8y76+OU1ZVU4S7Jn8ArDJnDIyPe1+zcnlaoaQpMWin4iTEmRog8Sg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9SrLEqEjQUaDOwqgTE5xnngqS3BaUTNZ/2FiQUIsXNs=; b=p1flHHj05l0OjRBEsK8mQCavZnzfvb4nKICOIS+SmrO0iNyUFhB2+ET+uFScu9Ct9cxHGilyfWAhRrWqcW7pnY+WlMMtHRE3PN/ZJzOBB7mn0CUY17h9GuCtsqTk/9oJADZLyRF9CBVoUh3LZpI2a6Ix77q5asKdOmUUe2zPXDg= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 33/47] hw/arm/xlnx-versal: reconnect the CRL to the other devices Date: Fri, 12 Sep 2025 12:00:42 +0200 Message-ID: <20250912100059.103997-34-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099DF:EE_|IA1PR12MB8310:EE_ X-MS-Office365-Filtering-Correlation-Id: b92beb1c-bc01-4e73-5c27-08ddf1e395ba X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|376014|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?kewcmHPmo5xM+GSEmt/FXVxyy2b5VmrNrKsg7Pvod8o9609oruU1aRgx4FZ2?= =?us-ascii?Q?bkZSp2k9lPUXgPO++DUGm2epsSWrbM+OMANzwTkAad/9fWx02D1Y62jbtMk4?= =?us-ascii?Q?ivYCcBloZns40f+gVuVw7En8I8M0dwJK6/esmxkBkIh2hCQT5fOwvymnPPBi?= =?us-ascii?Q?fFiKeoFyYXzUwc162LRxdeDt07pGrvAMUZwQAM5AtO1kAm8N/oUH1ZfO6d0J?= =?us-ascii?Q?xJWLHR4ZTT5qe+pA5hUsTfu+z78opVSQefOWsSyViXmCGPeO3Vt3ecDTqxGY?= =?us-ascii?Q?3xphTRf4ePeGtSTQ9zlZ9tom9LrFI36XxznHg5WCQ6MQIwMwkKuamMbLUvfM?= =?us-ascii?Q?lhwntNQzJtB1crscUiJzkrvl7BnjijSVslwXPqw9bzwh6mIRyJvBlyixHpQ2?= =?us-ascii?Q?uStvYApIQozd5NmdnFvdoXrX1IMSrDHmRdGPWZQZlbnPQm/fvdxA8oeAywVb?= =?us-ascii?Q?B4RlmHQt+/TubqVYvg0NNHX3zUcWRc0yy3DKlqMAST4MAIxtMUYtw9J9m6m3?= =?us-ascii?Q?yD7rM/Z5vLkpji2hVKL5uG/f2mHziWwHPWU8vodY0qwciXd68svlBsQ45XBw?= =?us-ascii?Q?LeKH5kwyjMdN6Y07aEPVeWdtf7feb97HNSJKzVNvaoFZ5+rKfZ8aIRVVzOoU?= =?us-ascii?Q?IsMuNBkcjplFFUgJlwhLc0cxVbkzPh78kAsk2GnH/L+m7mctB5NnvjCqZqj1?= =?us-ascii?Q?cdyRMAO8IrJcbyyuzaOylV6/1YgyidFqR0vZ/mmBtD8yT70jjVxBSrhKzady?= =?us-ascii?Q?EWjN+G2y/Sp8BCro46qNhUCQGD/141ZjIccPO0TipUh5QRywTvbtU/2MtIEv?= =?us-ascii?Q?72qmhrE60cmXijSgjVwXKdbQb5Z/E3TICjwh7IipJubH78qKH9J12Px9CWmD?= =?us-ascii?Q?WNPQqZU7R4dDSfS/Ydnzkco4jpYegrx1S4lH7beDIaR3pVdg4IQsXKEtzUF2?= =?us-ascii?Q?oHn69e0yOCrx0LgY3bqNqedLV4fMaU6Qh5WCYGXpOsCWhvjJqWGciHNCYxhB?= =?us-ascii?Q?tgiCBVBi1YwTN/ETOm5yucJB/B6HjfVth6FReta9kRlIiel9gOQRUtcsAS+z?= =?us-ascii?Q?4nivXNYVWtlpI5NksYGyutRGJPpd1KKHwM9gBCvNZlbutsul7bbygfo4hSTU?= =?us-ascii?Q?0xe4vLMHi1zjMw1ZoVFBUzcZoq3Ua72r470nZG1l7RA6X13eLT6SRMj71SfX?= =?us-ascii?Q?zMCIa6PPlbXfVrU4fpVrb09oNUyZUfGiLogT4OXvuIM3BAbJWjxaj3ybAnje?= =?us-ascii?Q?IhsxWq8SrRillN4qb6FSvMj8KOe5vSFLPbN/KRbcWR1tbWK7RAZnZEhI56Po?= =?us-ascii?Q?F6ODphyzB2tlc1gLCQuD8fxrh46MVeMD7jmcggWVwLONX23ADFVG4KgSnlg1?= =?us-ascii?Q?17aLuS03s7h+DdKAKegnKEiZx6qO7UMAZ9XkcZs+Ze1au6Amr83btJ4iNBZ5?= =?us-ascii?Q?GE+HMniTcm5fKp9rrqNsDa8FQRL71F5rqdIDV4AJj+yJuHVnMejDuwFN7J1E?= =?us-ascii?Q?CGfKWo2V6xQKJiop0ZmPgDWxVhx3LZ9jzto4?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(1800799024)(376014)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:12.7569 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b92beb1c-bc01-4e73-5c27-08ddf1e395ba X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099DF.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8310 Received-SPF: permerror client-ip=2a01:111:f403:2408::60f; envelope-from=Luc.Michel@amd.com; helo=NAM04-BN8-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671711487116600 Content-Type: text/plain; charset="utf-8" The CRL connects to various devices through link properties to be able to reset them. The connections were dropped during the SoC refactoring. Reintroduce them now. Rely on the QOM tree to retrieve the devices to connect. The component parts of the device names are chosen to match the properties on the CRL. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- hw/arm/xlnx-versal.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 940233aad06..02119d13533 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -1474,21 +1474,50 @@ static void versal_create_cfu(Versal *s, const stru= ct VersalCfuMap *map) sysbus_realize_and_unref(sbd, &error_fatal); memory_region_add_subregion(&s->mr_ps, map->cfu_sfr, sysbus_mmio_get_region(sbd, 0)); } =20 +static inline void crl_connect_dev(Object *crl, Object *dev) +{ + const char *prop =3D object_get_canonical_path_component(dev); + + /* The component part of the device path matches the CRL property name= */ + object_property_set_link(crl, prop, dev, &error_abort); +} + +static inline void crl_connect_dev_by_name(Versal *s, Object *crl, + const char *name, size_t num) +{ + size_t i; + + for (i =3D 0; i < num; i++) { + Object *dev =3D versal_get_child_idx(s, name, i); + + crl_connect_dev(crl, dev); + } +} + static inline void versal_create_crl(Versal *s) { const VersalMap *map; const char *crl_class; DeviceState *dev; + Object *obj; =20 map =3D versal_get_map(s); =20 crl_class =3D TYPE_XLNX_VERSAL_CRL; dev =3D qdev_new(crl_class); - object_property_add_child(OBJECT(s), "crl", OBJECT(dev)); + obj =3D OBJECT(dev); + object_property_add_child(OBJECT(s), "crl", obj); + + crl_connect_dev_by_name(s, obj, "rpu-cluster/rpu", + map->rpu.num_cluster * map->rpu.num_core); + crl_connect_dev_by_name(s, obj, map->zdma[0].name, map->zdma[0].num_ch= an); + crl_connect_dev_by_name(s, obj, "uart", map->num_uart); + crl_connect_dev_by_name(s, obj, "gem", map->num_gem); + crl_connect_dev_by_name(s, obj, "usb", map->num_usb); =20 sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_abort); =20 memory_region_add_subregion(&s->mr_ps, map->crl.addr, sysbus_mmio_get_region(SYS_BUS_DEVICE(dev)= , 0)); --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671781; cv=pass; d=zohomail.com; s=zohoarc; b=DLoYFqCpTxoZqSCc15y6V1JF4aJvs98A8nHt8vLONCOkisGUWw3VXq+PrNuNRqS+MdfdyKaKUh+PQbQGu1IaXA66KyE78dXJ6PQka+tGxrB+GvuzcDrcabptVXRLYbdyBKzndrz6LukFEPWJbmaa4bjtC/J0e3H2vCzHzb30N9s= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671781; 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=LO0EplAPYeJKgny8GNcZa61N3Z7o1rRfoBDwlY/lBWk=; b=M7/4T8eh5TQ36YumknqRB+2l1NZDzcNsS9C89it79o46YZBSiAZOWkh5UMDCzvZMXT2x+EBnWKWQ1AcVBiEr6JTMkVZWo6+It8NS3a+RMciZmMNws7AG6P0qKC6v3mAj49e1neLliz3VszVUvDrHpB9rCZCxq4Gmp8BBuM8NMEE= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671781112513.1406540954894; Fri, 12 Sep 2025 03:09:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0en-0002Xz-68; Fri, 12 Sep 2025 06:05:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cz-0007R5-TX; Fri, 12 Sep 2025 06:03:37 -0400 Received: from mail-mw2nam12on2061a.outbound.protection.outlook.com ([2a01:111:f403:200a::61a] helo=NAM12-MW2-obe.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 1ux0cf-0001NW-Ro; Fri, 12 Sep 2025 06:03:37 -0400 Received: from DM6PR02CA0044.namprd02.prod.outlook.com (2603:10b6:5:177::21) by CH3PR12MB8727.namprd12.prod.outlook.com (2603:10b6:610:173::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.18; Fri, 12 Sep 2025 10:03:10 +0000 Received: from DS1PEPF0001709B.namprd05.prod.outlook.com (2603:10b6:5:177:cafe::f5) by DM6PR02CA0044.outlook.office365.com (2603:10b6:5:177::21) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.17 via Frontend Transport; Fri, 12 Sep 2025 10:03:10 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS1PEPF0001709B.mail.protection.outlook.com (10.167.18.105) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:10 +0000 Received: from SATLEXMB05.amd.com (10.181.40.146) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:22 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB05.amd.com (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:02:22 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:20 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=OQk0VS6gbAuUZRxGqa/Gda1XWLLah1OHatgmnxsPKnLlGCrJvZIl5HEIIA1QVD60ZMKGQ1PkRE8oNRxh/gR3WVSIRGathkuPN8qfuu8xj1NAtoMatg4HtRrMj5DLSRHQz0FqewK5/u9wStgXI4CXYtEl3iNEzuy1TzgKN/3P8Fz/gBJTvFlY7+PPFoipof5hE7mCu3pzEZCethLLKVdGj4lxxecIXOzX+hVRMqBGvHsmVTS4KaqDJw0LnlL3YGq7NJoM0tJwwynNXvEHvG1oBnG5wricetFXSBXSf49FwAq+Wv0g5z8oN007Wz951ODMSm6vEWdLvVCltbTdC9YyHQ== 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=LO0EplAPYeJKgny8GNcZa61N3Z7o1rRfoBDwlY/lBWk=; b=D4AKXNRngxF+IZc9HNI/+0iyd2Gki+D3dDlyzDqygwc1vRMdVRsv/jiCsWsfubwLAdGbxpqkCWimYdjWmekMHC8sWFektq25RN2d3c6oXZHuXUzgQUq8Qmz9MlCsALZUDlilOo5cOq8EnmqehD1Qa7Q+i0qEpH59KFKkKI9qupS65aqVLA1juddh0QfH9svIwoitu+vKldyBPcaZPYrMu47mqEsl04NEJoaHNuOAiW2KTa2lSasQmtb8Vt9U1ORSu3ouDKt0v7L1lHm2+irzivJ9+epvGv9B3oloriNvB8uqZbHHuF1xUV6R7xO5wCmp+tYwIwnL26MQYClpIZdc5w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LO0EplAPYeJKgny8GNcZa61N3Z7o1rRfoBDwlY/lBWk=; b=sYJglkpsVv7+7cgj5cdz0KsgSQqlbzgir6YUoCeyLn05ntVXY7fY9Pg9VhCzdMtjXFIEraiutWkDbRf40sTVjTOLbtc8oQYxGPThV6t86bBuTCN0NNiQNUpiDqo/TB98A8N6WCudo/r55ZjKqgzpYqyjVKb7E7o6i0ru2/fBBh8= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 34/47] hw/arm/xlnx-versal: use hw/arm/bsa.h for timer IRQ indices Date: Fri, 12 Sep 2025 12:00:43 +0200 Message-ID: <20250912100059.103997-35-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: None (SATLEXMB05.amd.com: luc.michel@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0001709B:EE_|CH3PR12MB8727:EE_ X-MS-Office365-Filtering-Correlation-Id: d0e670b5-01bb-4cbd-9226-08ddf1e39481 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|82310400026|376014|36860700013; X-Microsoft-Antispam-Message-Info: =?utf-8?B?eWQ1LzFIRG11RXFUdkgvN0JvdGhBbTBsVVMySWxHRmpMSHdmTVpMVTJxdVJF?= =?utf-8?B?Z090YUczbmUwOVRQOXU0Mm5NVkRwTmw0WGxweWFxclFqbm5MK2w5K2JIRXhl?= =?utf-8?B?aWt5ZzVPVXNnN2F5S2pkTHZ1ZjhaUWFkMUI0YjJNdXFXb2NVSTFsT1c3T3NM?= =?utf-8?B?SmJNOW5mZGV2RlNUTVZJdG1DNlFXMTZ5UHRwTEZqQjdvUFRVSUFjaHZ6Tk9E?= =?utf-8?B?YkltWUp0N0owV1ZqaFA2cUlMSCtUbzZSelh2Z0VXVVg1dWZxUEwrSEJibjQy?= =?utf-8?B?RlZWMkprYTk1dHBPS0VqbGVBMGhUMkk3cDlDQnFaTTRBd0xUNjVRTk9QUmE5?= =?utf-8?B?V0orREt0Y3pNR2VDaHFNaHZuN3NUMmU0c0xxd1pxYVF3NEhPVS9XMXZ6Nkc5?= =?utf-8?B?aUpNZ3hjeDFDWldXcEN0RDdkMlFiSlk2djhqZms5K1UvaTNUM2hlajYwY3Zy?= =?utf-8?B?OG4vZVdkclByVkhnUzNadW5UckdHSU9lZVpnakwwWHRTdlArdHRDK0tuK1h2?= =?utf-8?B?cFpQMXBkM2dZeWs4M25ISk5PVVFMYXVEb201aElNNmgzTHp4a2hMUXA4YUtC?= =?utf-8?B?V3AwME0vbDlTd2xiVStPYXloSmovUUZiYkxEaTJDekZVMHc1WEQ5LzY2UTJH?= =?utf-8?B?eHRlMXIxL2hlUWY5NitBWm1xMncvUzV5M2lMVklLNEppZkNiNmRRdGFrSi9J?= =?utf-8?B?N09YdmlReDQzb1kzdDNEYWZJb2JCVXAvNUVld00wK0VQM29FSnZiMWwwd3Jm?= =?utf-8?B?VmZBUlhQK0pWb0c0VUVsZHh4T2JtV1MwWWRGWnVrL0NDNkV2UUhJWUlWeFhn?= =?utf-8?B?WGxLdVoyZkhqSC9QaFNrQTI3NEFxeGRROHBqS0ZDZFFkN3NFYXlOaE1JOTFv?= =?utf-8?B?ZHlCblhKNHZLMlJqWHlRbUdmRUplYW5ORzl4T0NnTklnOTlBVlF4NlZnQTJs?= =?utf-8?B?Q2FPeFhNcllURnhaeDNCaE5oR1pEYjRocWxpU3ZJWFc3bFZHY0YyYUcxRHNF?= =?utf-8?B?disyUlVOMEdsRWY3VzZVdHdvU2Z1dVZja3QrQ1pGOG14L0dnMUtTVGE2NExj?= =?utf-8?B?U2xQb1QyaytFdGlrNlYrc21jbDYrdnlwdHlGQklNeVRqbEExN2hPdFMySStz?= =?utf-8?B?UVFYMmhCejlwUGFyY3JpZ2pCeFBkTERGeTN5c1A3RmsrQXBYZlFtbmZMYk1J?= =?utf-8?B?RGZBZ3d2MDh1TDBFeStPT0F6czRDdHBTc29XKzFadWtPNllFaW54ZlFuc2oz?= =?utf-8?B?LzR2c3EzTTkrT3dNSGQ3U0RkdTY4RmUzYWtDSkx5T2lsc0lwdEVxMFJDQUMx?= =?utf-8?B?YmF0dFB1UllwWlQ4NGtnOS92NGs3b0E5UlN1eVpleXVneXRzcFNuYWFqeFVu?= =?utf-8?B?ZkNQbFlRRXlWNFg3K0g0ZGZqdjk2eUJrT3U2djhNYXhQYjFuNnN0M2YycTQr?= =?utf-8?B?T2huWk1MdVVianNHd2N6MWFZZTQ5UHVQa1E2M2pZdGZRUWNVRjRPTVh6d3lI?= =?utf-8?B?SUVGdzVYek0rM2NWd08wNXJPeDl5L3dMK0Z0R0ZZK25mYVdGdG0xRnFzY2lW?= =?utf-8?B?VXczZ1YxMXQwQi9DbWI3Z2dZMStNbVRoT1pNbUhzemtaVjYzdDlnSU93YnRj?= =?utf-8?B?NHBJa0Z5TTJxbG1FOUI0MFFnR0hNazB3SWFZdGprRWNlcVZQMjV6Y3dtNTho?= =?utf-8?B?YThkbjd6c0QwdmhJcitrWEZZU3cwckpWUndMWGVMTkhuZzVhRE9kT2lGbGdJ?= =?utf-8?B?aGRHMDJJTXdkMFFXMWljaW04K1JKU2V2N21kZytBWlZ0U3NGeUM1N1N6RnRV?= =?utf-8?B?ODhYM2xJWkFIYldHZGpJdm9JWURyMzR3NVVGMUNWWDh1d2orNkJIbnZMOVli?= =?utf-8?B?OThFaTZEOWx6bGptTUJvQmRSaVZJeG1uSE5yVXd1dE1pUUtpcXBEcnFkMU1p?= =?utf-8?B?dVR4d2xpa2N4dm8ySEI2RmhQZlY3eFhNS24veklRMW85UmpuS0ZpcXk1U3FY?= =?utf-8?B?am9nbld3TC8wRFhmcmRqTEtKUVVJT2FxU2gveWVwSDhQaTUrZ0xjeW5POXJH?= =?utf-8?Q?c8aKXJ?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(1800799024)(82310400026)(376014)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:10.7053 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d0e670b5-01bb-4cbd-9226-08ddf1e39481 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0001709B.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8727 Received-SPF: permerror client-ip=2a01:111:f403:200a::61a; envelope-from=Luc.Michel@amd.com; helo=NAM12-MW2-obe.outbound.protection.outlook.com X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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 @amd.com) X-ZM-MESSAGEID: 1757671782382116600 Use the bsa.h header for ARM timer and maintainance IRQ indices instead of redefining our owns. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/arm/xlnx-versal.h | 6 ------ hw/arm/xlnx-versal.c | 28 +++++++++++++++++----------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 7bdf6dab629..da0260b83de 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -85,16 +85,10 @@ int versal_get_num_can(VersalVersion version); int versal_get_num_sdhci(VersalVersion version); =20 /* Memory-map and IRQ definitions. Copied a subset from * auto-generated files. */ =20 -#define VERSAL_GIC_MAINT_IRQ 9 -#define VERSAL_TIMER_VIRT_IRQ 11 -#define VERSAL_TIMER_S_EL1_IRQ 13 -#define VERSAL_TIMER_NS_EL1_IRQ 14 -#define VERSAL_TIMER_NS_EL2_IRQ 10 - #define VERSAL_CRL_IRQ 10 #define VERSAL_UART0_IRQ_0 18 #define VERSAL_UART1_IRQ_0 19 #define VERSAL_CANFD0_IRQ_0 20 #define VERSAL_CANFD1_IRQ_0 21 diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 02119d13533..3ccd8a88205 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -47,10 +47,11 @@ #include "hw/intc/arm_gicv3_its_common.h" #include "hw/intc/arm_gic.h" #include "hw/core/split-irq.h" #include "target/arm/cpu.h" #include "hw/cpu/cluster.h" +#include "hw/arm/bsa.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") #define GEM_REVISION 0x40070106 =20 @@ -671,11 +672,12 @@ static DeviceState *versal_create_gic(Versal *s, } =20 qemu_fdt_setprop_cell(s->cfg.fdt, node, "phandle", s->phandle.gic); qemu_fdt_setprop_cell(s->cfg.fdt, node, "#interrupt-cells", 3); qemu_fdt_setprop_cells(s->cfg.fdt, node, "interrupts", - GIC_FDT_IRQ_TYPE_PPI, VERSAL_GIC_MAINT_IRQ, + GIC_FDT_IRQ_TYPE_PPI, + INTID_TO_PPI(ARCH_GIC_MAINT_IRQ), GIC_FDT_IRQ_FLAGS_LEVEL_HI); qemu_fdt_setprop(s->cfg.fdt, node, "interrupt-controller", NULL, 0= ); } =20 versal_create_gic_its(s, map, dev, mr, node); @@ -696,14 +698,14 @@ static void connect_gic_to_cpu(const VersalCpuCluster= Map *map, /* * Mapping from the output timer irq lines from the CPU to the * GIC PPI inputs. */ const int timer_irq[] =3D { - [GTIMER_PHYS] =3D VERSAL_TIMER_NS_EL1_IRQ, - [GTIMER_VIRT] =3D VERSAL_TIMER_VIRT_IRQ, - [GTIMER_HYP] =3D VERSAL_TIMER_NS_EL2_IRQ, - [GTIMER_SEC] =3D VERSAL_TIMER_S_EL1_IRQ, + [GTIMER_PHYS] =3D INTID_TO_PPI(ARCH_TIMER_NS_EL1_IRQ), + [GTIMER_VIRT] =3D INTID_TO_PPI(ARCH_TIMER_VIRT_IRQ), + [GTIMER_HYP] =3D INTID_TO_PPI(ARCH_TIMER_NS_EL2_IRQ), + [GTIMER_SEC] =3D INTID_TO_PPI(ARCH_TIMER_S_EL1_IRQ), }; =20 has_gtimer =3D arm_feature(&ARM_CPU(cpu)->env, ARM_FEATURE_GENERIC_TIM= ER); =20 if (has_gtimer) { @@ -714,13 +716,13 @@ static void connect_gic_to_cpu(const VersalCpuCluster= Map *map, } } =20 if (map->gic.version =3D=3D 3) { qemu_irq maint_irq; + int maint_idx =3D ppibase + INTID_TO_PPI(ARCH_GIC_MAINT_IRQ); =20 - maint_irq =3D qdev_get_gpio_in(gic, - ppibase + VERSAL_GIC_MAINT_IRQ); + maint_irq =3D qdev_get_gpio_in(gic, maint_idx); qdev_connect_gpio_out_named(cpu, "gicv3-maintenance-interrupt", 0, maint_irq); } =20 sysbus_connect_irq(sbd, idx, qdev_get_gpio_in(cpu, ARM_CPU_IRQ)); @@ -840,17 +842,21 @@ static void versal_create_cpu_cluster(Versal *s, cons= t VersalCpuClusterMap *map) =20 has_gtimer =3D arm_feature(&ARM_CPU(cpus[0])->env, ARM_FEATURE_GENERIC= _TIMER); if (map->dtb_expose && has_gtimer) { qemu_fdt_add_subnode(s->cfg.fdt, "/timer"); qemu_fdt_setprop_cells(s->cfg.fdt, "/timer", "interrupts", - GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_S_EL1_IR= Q, + GIC_FDT_IRQ_TYPE_PPI, + INTID_TO_PPI(ARCH_TIMER_S_EL1_IRQ), GIC_FDT_IRQ_FLAGS_LEVEL_HI, - GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_NS_EL1_I= RQ, + GIC_FDT_IRQ_TYPE_PPI, + INTID_TO_PPI(ARCH_TIMER_NS_EL1_IRQ), GIC_FDT_IRQ_FLAGS_LEVEL_HI, - GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_VIRT_IRQ, + GIC_FDT_IRQ_TYPE_PPI, + INTID_TO_PPI(ARCH_TIMER_VIRT_IRQ), GIC_FDT_IRQ_FLAGS_LEVEL_HI, - GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_NS_EL2_I= RQ, + GIC_FDT_IRQ_TYPE_PPI, + INTID_TO_PPI(ARCH_TIMER_NS_EL2_IRQ), GIC_FDT_IRQ_FLAGS_LEVEL_HI); qemu_fdt_setprop(s->cfg.fdt, "/timer", "compatible", compatible, sizeof(compatible)); } } --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671821; cv=pass; d=zohomail.com; s=zohoarc; b=YzB0tf/HEVmemZMqBtoIO3X63pRJoTkx8uGjPcIeO6xpxaSE3YPviFWCEGv45PJkpMjdeVt51LMp44TsmQ+ZtZ1aK+AwplHD64s9f9ZFiPuJ29/bq8BKqK4qCEaVYnX1jcOno4NLhmAbvfPzQ2EXV4DkLRDGo8f/PT+BTHMe+ek= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671821; 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=QaWkNGObTXaXuCEHGfCj30fF7P+5yfmBtOqY6p7gJlo=; b=PhxDaZgaUudRereLqNcaWv2Z+w4n4cjQvVTAOuXH/XVAjYBEGijS7FFsCtvEYmJhcwhh6Q+Io7iGzLTBIAMRTj0taMYdIjnLzSsuhdZ4dZ9h7JBo6L3obz8XAsk+dj+kvwXraVZ5AkPC48mN+AMgq2qgFwXdkodwcyNxn2lMr+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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671821927792.5184641190359; Fri, 12 Sep 2025 03:10:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0eA-0000Oa-HF; Fri, 12 Sep 2025 06:04:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cz-0007R8-Ta; Fri, 12 Sep 2025 06:03:37 -0400 Received: from mail-dm6nam12on2061b.outbound.protection.outlook.com ([2a01:111:f403:2417::61b] helo=NAM12-DM6-obe.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 1ux0ck-0001O8-JL; Fri, 12 Sep 2025 06:03:37 -0400 Received: from DM6PR02CA0040.namprd02.prod.outlook.com (2603:10b6:5:177::17) by CH1PPF2D39B31FF.namprd12.prod.outlook.com (2603:10b6:61f:fc00::60a) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:03:11 +0000 Received: from DS1PEPF0001709B.namprd05.prod.outlook.com (2603:10b6:5:177:cafe::52) by DM6PR02CA0040.outlook.office365.com (2603:10b6:5:177::17) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.17 via Frontend Transport; Fri, 12 Sep 2025 10:03:11 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS1PEPF0001709B.mail.protection.outlook.com (10.167.18.105) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:11 +0000 Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:24 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb09.amd.com (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:23 -0700 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:22 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EePO8Dci0JFnbzLMFAI+te2OyXKy10CbagVO3vp/h5BQDIy22+0GezkWAJ+u7RLo6nc4RgmqqqzlnmkBNXIiXesQiAFouSu/5wYzVSQHCN6ppXXNBSTym0hTN2yMC+LeAN3lQ0t4WNaC8HspT+5p9FMcXYbAFvQIqMFX48kowaC/cRTPke1DF4gzISP9/VGxu1okndDd60HjClxBHeU6iEIOtQksEA07XrFHVhSnqWdW+zKAxhb/GFQBDWCocZ9rcRUl/g4wrf+SD8aojKO5WUPgr/7AJLKoDPFvxdFoUUyL7bTnKUKgz7X0Qr0995h8xvWt1Wwz80rveD56n8QwQg== 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=QaWkNGObTXaXuCEHGfCj30fF7P+5yfmBtOqY6p7gJlo=; b=heIzBRtwT1pKt4P3x7HyV1wUawY7oJC7o9A96GApUXocK5YsoX23+kssKd+LWW1ahyEmTwENxOWHyzesERaaif4C5/JsHh291sDTUJTWT7VWCRpCYIRIOCvj7KD3ii1Wzg6L96i0sAzENGPzs9deQPi6krVrvGhBI4i5Z7AfBaNYU4YU6bCWok1cmwKjWW2m9SovEHq8/cWoKxdHEGLghlwoUwRWuM5o9jHAXCz8/rJgtD2dxX5UxNMEuDl0IEZ8zDDfwPKVlNSMeFqCDMgTpQa6MNNJ4MdPNuk6UzEpIJFYjnaUAMiw4xgDYQb16dcLUniebZgFOeCyix/riBDWeg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QaWkNGObTXaXuCEHGfCj30fF7P+5yfmBtOqY6p7gJlo=; b=1qlB6h9DkDK7RA4CKIOR0eiTQxPHxV3flVSkvc+0VNw+9Xjh4Bn+C+MauhGGfA5nQ+5mObdaS9Tgyx6wgZZUsWOx5k/Nnhrca7qgqliaX940D0M17JALOnnY4Md1RYLL2FCXYlA0YSSU+d7hQ2NPSWPeKiqu0RTe7nvmJsLnpEU= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 35/47] hw/arm/xlnx-versal: tidy up Date: Fri, 12 Sep 2025 12:00:44 +0200 Message-ID: <20250912100059.103997-36-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0001709B:EE_|CH1PPF2D39B31FF:EE_ X-MS-Office365-Filtering-Correlation-Id: 5282f7d8-1745-4292-f5c4-08ddf1e39516 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|36860700013|376014|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?5qElqbUEsF9nWh1UVyd9UlT1UO/w4Nhf6qtYPF8oJdJAFSuie3hwHcVgCzct?= =?us-ascii?Q?3XHYV1e1tv0MTcN4ZL9GmeyVO+5hQi6fatPdLxgDfqBYV/njW7LN9VMYTVSA?= =?us-ascii?Q?LrvTtGfzw+UjsmBayzCnkig+ppJOraRSSZHkO8eopZv1AZoAplhFV7i3kEjd?= =?us-ascii?Q?K077mMl+Um4X4OnKTndS46FoYQA7kW5806yJwRvJ1VXFFzy4SL2vy9J6c26e?= =?us-ascii?Q?2yBiaAS5zeRzU1eB2wG9t66vt495Axc7jlS05B1ys/ETuNKCAbjHn3pT/VKO?= =?us-ascii?Q?F351UnSXRzZJ+Nluy7hKzwn0QcmBQBGYRUxJ91HtwWLOYPNV2opCmmbq/9Gc?= =?us-ascii?Q?6kfqUfLElAfx8rGQpnQPvGJEf91VboFnAmLw/mKWkSEIAbIkOsC+IlRwpERj?= =?us-ascii?Q?UvouBU47nme3OGGFAKO1zEKDFmG96w2CUlLo3Fg2zvOrk/qkjbTcjhalVFgk?= =?us-ascii?Q?lmSSD2Wmn0HaRId7k/hICSv4YUXF4VCv80/AwFEL+MyA7oByPSAISg9JhJ4w?= =?us-ascii?Q?0qWyArcThfd/Q8JwohLw/MzbTqurFgfZ+m7K9bluOIUtiFUlMjnX6NZTuSO2?= =?us-ascii?Q?Fb1x1zqBglL93TBTWMe2pxC5TaiTzo9Y2oY8C+++VzzOwOFasZN7VLX9G6tO?= =?us-ascii?Q?f2Rii+xneZ0z6uV7Nyp+vGL0AuRxOKgWsQLqTbO8pz/608E03kwS/uri95Oe?= =?us-ascii?Q?L5SJ1SdP1/wV8UFE6ZafmqPPOaJu9rZ/KEslMfJ9bd8yCw1wFm9cvmlcaQWi?= =?us-ascii?Q?couioYxy77DEC988vyNmTRBvtxoaTeePPhDPxv3X74G8ZjlDKU/UVR4cD0K7?= =?us-ascii?Q?/zbM+w1lQZDb6+LgDVzfRyHcsRgzvmq1dKLeupSU9NXMbY/Rt1RuT0WRs8Hi?= =?us-ascii?Q?mZlSoA+Cz9tUt+5wQLYpRzQubbuJtgCDpD8Knyxmyx0E3wekLTizL8U6x6bG?= =?us-ascii?Q?o6wbwhORhwGnMlVfZcDM7E7kOVvARXESfUhODxMq6gSVcubCy3ixHTrMK1Fr?= =?us-ascii?Q?ystDIFO5QQoaEj4O38GcklzdiBGRXVQoFNvpK6+8WcCgGvuCcIIwt4z408G4?= =?us-ascii?Q?UE+F5M80ZsODgLlKyMwB0X41fXZmraWt4cWm41hnzz4EUS3rn8gKk23YxOEA?= =?us-ascii?Q?FDeSSjHIZUizSCoN+Vmk6XhTk+HOA+2dTqVLNMi3/Uey6vmnyHkL/Tl6jWX9?= =?us-ascii?Q?6CceBmJ7ct8gMsWHkEEbFDHPR/446DJdiGHusKINdeU30j8yN6PWJX2Zi6v0?= =?us-ascii?Q?V3k3wyNdCA7Rn31U0TkBNvWx5geqCtfLpYD+oyuZCG1KNWrOX4P/uVHqvy25?= =?us-ascii?Q?41NiInus0yvJTAc9gTG9/UYpfW8p/z5vVPstsjXaZxwVZOv/5Wr3bdnwoTjk?= =?us-ascii?Q?sPMYaNZptgZrO+fVo9Tf1AJs6waMsf3oblMCbXYejUVgXXtlsz3xoZu6xISr?= =?us-ascii?Q?NCgxHYM5lpKgNwqmKZzzxqcpkhtxjIDTFo727uwJ7E12bHt7wsL8jmoy0eT3?= =?us-ascii?Q?J0o3w1hUmXHf6cwYeltwKBLzWlyAueVFhfkk?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(1800799024)(36860700013)(376014)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:11.6848 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5282f7d8-1745-4292-f5c4-08ddf1e39516 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0001709B.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH1PPF2D39B31FF Received-SPF: permerror client-ip=2a01:111:f403:2417::61b; envelope-from=Luc.Michel@amd.com; helo=NAM12-DM6-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671822705116600 Content-Type: text/plain; charset="utf-8" Remove now unused macros in xlnx-versal.[ch]. Those macros have been replaced by the VersalMap structure that serves as a central description for the SoC. The ones still in use in the versal_unimp function are inlined. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/arm/xlnx-versal.h | 204 ----------------------------------- hw/arm/xlnx-versal.c | 28 ++--- 2 files changed, 7 insertions(+), 225 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index da0260b83de..b6cc71f7209 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -21,22 +21,10 @@ #define TYPE_XLNX_VERSAL_BASE "xlnx-versal-base" OBJECT_DECLARE_TYPE(Versal, VersalClass, XLNX_VERSAL_BASE) =20 #define TYPE_XLNX_VERSAL "xlnx-versal" =20 -#define XLNX_VERSAL_NR_ACPUS 2 -#define XLNX_VERSAL_NR_RCPUS 2 -#define XLNX_VERSAL_NR_UARTS 2 -#define XLNX_VERSAL_NR_GEMS 2 -#define XLNX_VERSAL_NR_ADMAS 8 -#define XLNX_VERSAL_NR_SDS 2 -#define XLNX_VERSAL_NR_XRAM 4 -#define XLNX_VERSAL_NR_IRQS 192 -#define XLNX_VERSAL_NR_CANFD 2 -#define XLNX_VERSAL_CANFD_REF_CLK (24 * 1000 * 1000) -#define XLNX_VERSAL_NR_CFRAME 15 - struct Versal { /*< private >*/ SysBusDevice parent_obj; =20 /*< public >*/ @@ -82,198 +70,6 @@ hwaddr versal_get_reserved_mmio_addr(Versal *s); =20 int versal_get_num_cpu(VersalVersion version); int versal_get_num_can(VersalVersion version); int versal_get_num_sdhci(VersalVersion version); =20 -/* Memory-map and IRQ definitions. Copied a subset from - * auto-generated files. */ - -#define VERSAL_CRL_IRQ 10 -#define VERSAL_UART0_IRQ_0 18 -#define VERSAL_UART1_IRQ_0 19 -#define VERSAL_CANFD0_IRQ_0 20 -#define VERSAL_CANFD1_IRQ_0 21 -#define VERSAL_USB0_IRQ_0 22 -#define VERSAL_GEM0_IRQ_0 56 -#define VERSAL_GEM0_WAKE_IRQ_0 57 -#define VERSAL_GEM1_IRQ_0 58 -#define VERSAL_GEM1_WAKE_IRQ_0 59 -#define VERSAL_ADMA_IRQ_0 60 -#define VERSAL_XRAM_IRQ_0 79 -#define VERSAL_CFU_IRQ_0 120 -#define VERSAL_PMC_APB_IRQ 121 -#define VERSAL_OSPI_IRQ 124 -#define VERSAL_SD0_IRQ_0 126 -#define VERSAL_EFUSE_IRQ 139 -#define VERSAL_TRNG_IRQ 141 -#define VERSAL_RTC_ALARM_IRQ 142 -#define VERSAL_RTC_SECONDS_IRQ 143 - -/* Architecturally reserved IRQs suitable for virtualization. */ -#define VERSAL_RSVD_IRQ_FIRST 111 -#define VERSAL_RSVD_IRQ_LAST 118 - -#define MM_TOP_RSVD 0xa0000000U -#define MM_TOP_RSVD_SIZE 0x4000000 -#define MM_GIC_APU_DIST_MAIN 0xf9000000U -#define MM_GIC_APU_DIST_MAIN_SIZE 0x10000 -#define MM_GIC_APU_REDIST_0 0xf9080000U -#define MM_GIC_APU_REDIST_0_SIZE 0x80000 - -#define MM_UART0 0xff000000U -#define MM_UART0_SIZE 0x10000 -#define MM_UART1 0xff010000U -#define MM_UART1_SIZE 0x10000 - -#define MM_CANFD0 0xff060000U -#define MM_CANFD0_SIZE 0x10000 -#define MM_CANFD1 0xff070000U -#define MM_CANFD1_SIZE 0x10000 - -#define MM_GEM0 0xff0c0000U -#define MM_GEM0_SIZE 0x10000 -#define MM_GEM1 0xff0d0000U -#define MM_GEM1_SIZE 0x10000 - -#define MM_ADMA_CH0 0xffa80000U -#define MM_ADMA_CH0_SIZE 0x10000 - -#define MM_OCM 0xfffc0000U -#define MM_OCM_SIZE 0x40000 - -#define MM_XRAM 0xfe800000 -#define MM_XRAMC 0xff8e0000 -#define MM_XRAMC_SIZE 0x10000 - -#define MM_USB2_CTRL_REGS 0xFF9D0000 -#define MM_USB2_CTRL_REGS_SIZE 0x10000 - -#define MM_USB_0 0xFE200000 -#define MM_USB_0_SIZE 0x10000 - -#define MM_TOP_DDR 0x0 -#define MM_TOP_DDR_SIZE 0x80000000U -#define MM_TOP_DDR_2 0x800000000ULL -#define MM_TOP_DDR_2_SIZE 0x800000000ULL -#define MM_TOP_DDR_3 0xc000000000ULL -#define MM_TOP_DDR_3_SIZE 0x4000000000ULL -#define MM_TOP_DDR_4 0x10000000000ULL -#define MM_TOP_DDR_4_SIZE 0xb780000000ULL - -#define MM_PSM_START 0xffc80000U -#define MM_PSM_END 0xffcf0000U - -#define MM_CRL 0xff5e0000U -#define MM_CRL_SIZE 0x300000 -#define MM_IOU_SCNTR 0xff130000U -#define MM_IOU_SCNTR_SIZE 0x10000 -#define MM_IOU_SCNTRS 0xff140000U -#define MM_IOU_SCNTRS_SIZE 0x10000 -#define MM_FPD_CRF 0xfd1a0000U -#define MM_FPD_CRF_SIZE 0x140000 -#define MM_FPD_FPD_APU 0xfd5c0000 -#define MM_FPD_FPD_APU_SIZE 0x100 - -#define MM_PMC_PMC_IOU_SLCR 0xf1060000 -#define MM_PMC_PMC_IOU_SLCR_SIZE 0x10000 - -#define MM_PMC_OSPI 0xf1010000 -#define MM_PMC_OSPI_SIZE 0x10000 - -#define MM_PMC_OSPI_DAC 0xc0000000 -#define MM_PMC_OSPI_DAC_SIZE 0x20000000 - -#define MM_PMC_OSPI_DMA_DST 0xf1011800 -#define MM_PMC_OSPI_DMA_SRC 0xf1011000 - -#define MM_PMC_SD0 0xf1040000U -#define MM_PMC_SD0_SIZE 0x10000 -#define MM_PMC_BBRAM_CTRL 0xf11f0000 -#define MM_PMC_BBRAM_CTRL_SIZE 0x00050 -#define MM_PMC_EFUSE_CTRL 0xf1240000 -#define MM_PMC_EFUSE_CTRL_SIZE 0x00104 -#define MM_PMC_EFUSE_CACHE 0xf1250000 -#define MM_PMC_EFUSE_CACHE_SIZE 0x00C00 - -#define MM_PMC_CFU_APB 0xf12b0000 -#define MM_PMC_CFU_APB_SIZE 0x10000 -#define MM_PMC_CFU_STREAM 0xf12c0000 -#define MM_PMC_CFU_STREAM_SIZE 0x1000 -#define MM_PMC_CFU_SFR 0xf12c1000 -#define MM_PMC_CFU_SFR_SIZE 0x1000 -#define MM_PMC_CFU_FDRO 0xf12c2000 -#define MM_PMC_CFU_FDRO_SIZE 0x1000 -#define MM_PMC_CFU_STREAM_2 0xf1f80000 -#define MM_PMC_CFU_STREAM_2_SIZE 0x40000 - -#define MM_PMC_CFRAME0_REG 0xf12d0000 -#define MM_PMC_CFRAME0_REG_SIZE 0x1000 -#define MM_PMC_CFRAME0_FDRI 0xf12d1000 -#define MM_PMC_CFRAME0_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME1_REG 0xf12d2000 -#define MM_PMC_CFRAME1_REG_SIZE 0x1000 -#define MM_PMC_CFRAME1_FDRI 0xf12d3000 -#define MM_PMC_CFRAME1_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME2_REG 0xf12d4000 -#define MM_PMC_CFRAME2_REG_SIZE 0x1000 -#define MM_PMC_CFRAME2_FDRI 0xf12d5000 -#define MM_PMC_CFRAME2_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME3_REG 0xf12d6000 -#define MM_PMC_CFRAME3_REG_SIZE 0x1000 -#define MM_PMC_CFRAME3_FDRI 0xf12d7000 -#define MM_PMC_CFRAME3_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME4_REG 0xf12d8000 -#define MM_PMC_CFRAME4_REG_SIZE 0x1000 -#define MM_PMC_CFRAME4_FDRI 0xf12d9000 -#define MM_PMC_CFRAME4_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME5_REG 0xf12da000 -#define MM_PMC_CFRAME5_REG_SIZE 0x1000 -#define MM_PMC_CFRAME5_FDRI 0xf12db000 -#define MM_PMC_CFRAME5_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME6_REG 0xf12dc000 -#define MM_PMC_CFRAME6_REG_SIZE 0x1000 -#define MM_PMC_CFRAME6_FDRI 0xf12dd000 -#define MM_PMC_CFRAME6_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME7_REG 0xf12de000 -#define MM_PMC_CFRAME7_REG_SIZE 0x1000 -#define MM_PMC_CFRAME7_FDRI 0xf12df000 -#define MM_PMC_CFRAME7_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME8_REG 0xf12e0000 -#define MM_PMC_CFRAME8_REG_SIZE 0x1000 -#define MM_PMC_CFRAME8_FDRI 0xf12e1000 -#define MM_PMC_CFRAME8_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME9_REG 0xf12e2000 -#define MM_PMC_CFRAME9_REG_SIZE 0x1000 -#define MM_PMC_CFRAME9_FDRI 0xf12e3000 -#define MM_PMC_CFRAME9_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME10_REG 0xf12e4000 -#define MM_PMC_CFRAME10_REG_SIZE 0x1000 -#define MM_PMC_CFRAME10_FDRI 0xf12e5000 -#define MM_PMC_CFRAME10_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME11_REG 0xf12e6000 -#define MM_PMC_CFRAME11_REG_SIZE 0x1000 -#define MM_PMC_CFRAME11_FDRI 0xf12e7000 -#define MM_PMC_CFRAME11_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME12_REG 0xf12e8000 -#define MM_PMC_CFRAME12_REG_SIZE 0x1000 -#define MM_PMC_CFRAME12_FDRI 0xf12e9000 -#define MM_PMC_CFRAME12_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME13_REG 0xf12ea000 -#define MM_PMC_CFRAME13_REG_SIZE 0x1000 -#define MM_PMC_CFRAME13_FDRI 0xf12eb000 -#define MM_PMC_CFRAME13_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME14_REG 0xf12ec000 -#define MM_PMC_CFRAME14_REG_SIZE 0x1000 -#define MM_PMC_CFRAME14_FDRI 0xf12ed000 -#define MM_PMC_CFRAME14_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME_BCAST_REG 0xf12ee000 -#define MM_PMC_CFRAME_BCAST_REG_SIZE 0x1000 -#define MM_PMC_CFRAME_BCAST_FDRI 0xf12ef000 -#define MM_PMC_CFRAME_BCAST_FDRI_SIZE 0x1000 - -#define MM_PMC_CRP 0xf1260000U -#define MM_PMC_CRP_SIZE 0x10000 -#define MM_PMC_RTC 0xf12a0000 -#define MM_PMC_RTC_SIZE 0x10000 -#define MM_PMC_TRNG 0xf1230000 -#define MM_PMC_TRNG_SIZE 0x10000 #endif diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 3ccd8a88205..19ef169e11a 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -16,11 +16,10 @@ #include "qobject/qlist.h" #include "qemu/module.h" #include "hw/sysbus.h" #include "net/net.h" #include "system/system.h" -#include "hw/arm/boot.h" #include "hw/misc/unimp.h" #include "hw/arm/xlnx-versal.h" #include "qemu/log.h" #include "target/arm/cpu-qom.h" #include "target/arm/gtimer.h" @@ -49,17 +48,10 @@ #include "hw/core/split-irq.h" #include "target/arm/cpu.h" #include "hw/cpu/cluster.h" #include "hw/arm/bsa.h" =20 -#define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") -#define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") -#define GEM_REVISION 0x40070106 - -#define VERSAL_NUM_PMC_APB_IRQS 18 -#define NUM_OSPI_IRQ_LINES 3 - /* * IRQ descriptor to catch the following cases: * - Multiple devices can connect to the same IRQ. They are OR'ed togeth= er. */ FIELD(VERSAL_IRQ, IRQ, 0, 16) @@ -1362,11 +1354,11 @@ static DeviceState *versal_create_ospi(Versal *s, =20 memory_region_add_subregion(&s->mr_ps, map->dac, linear_mr); =20 /* OSPI irq */ - orgate =3D create_or_gate(s, OBJECT(dev), "irq-orgate", NUM_OSPI_IRQ_L= INES, + orgate =3D create_or_gate(s, OBJECT(dev), "irq-orgate", 3, map->irq); =20 sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(orgate, 0)= ); sysbus_connect_irq(SYS_BUS_DEVICE(dma_src), 0, qdev_get_gpio_in(orgate= , 1)); sysbus_connect_irq(SYS_BUS_DEVICE(dma_dst), 0, qdev_get_gpio_in(orgate= , 2)); @@ -1623,22 +1615,16 @@ static void versal_unimp_irq_parity_imr(void *opaqu= e, int n, int level) static void versal_unimp(Versal *s) { DeviceState *slcr; qemu_irq gpio_in; =20 - versal_unimp_area(s, "psm", &s->mr_ps, - MM_PSM_START, MM_PSM_END - MM_PSM_START); - versal_unimp_area(s, "crf", &s->mr_ps, - MM_FPD_CRF, MM_FPD_CRF_SIZE); - versal_unimp_area(s, "apu", &s->mr_ps, - MM_FPD_FPD_APU, MM_FPD_FPD_APU_SIZE); - versal_unimp_area(s, "crp", &s->mr_ps, - MM_PMC_CRP, MM_PMC_CRP_SIZE); - versal_unimp_area(s, "iou-scntr", &s->mr_ps, - MM_IOU_SCNTR, MM_IOU_SCNTR_SIZE); - versal_unimp_area(s, "iou-scntr-seucre", &s->mr_ps, - MM_IOU_SCNTRS, MM_IOU_SCNTRS_SIZE); + versal_unimp_area(s, "psm", &s->mr_ps, 0xffc80000, 0x70000); + versal_unimp_area(s, "crf", &s->mr_ps, 0xfd1a0000, 0x140000); + versal_unimp_area(s, "apu", &s->mr_ps, 0xfd5c0000, 0x100); + versal_unimp_area(s, "crp", &s->mr_ps, 0xf1260000, 0x10000); + versal_unimp_area(s, "iou-scntr", &s->mr_ps, 0xff130000, 0x10000); + versal_unimp_area(s, "iou-scntr-seucre", &s->mr_ps, 0xff140000, 0x1000= 0); =20 qdev_init_gpio_in_named(DEVICE(s), versal_unimp_sd_emmc_sel, "sd-emmc-sel-dummy", 2); qdev_init_gpio_in_named(DEVICE(s), versal_unimp_qspi_ospi_mux_sel, "qspi-ospi-mux-sel-dummy", 1); --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757672087; cv=pass; d=zohomail.com; s=zohoarc; b=ffTUA5KiL54vm6T/h23owcYYIXnFvXRfuyzSQj7AVE+HXiHUP4pXrU7WHfGLkg7dS1hUmQ/CANN0qvvA3PfveWXqs3jgAy4PxOPLB6mZsFQgvDkOGaKiNA4jtsIXFiyC8z74+ybaryjgL7P9r8fJ9ql4p4qr2Yv84tObkaC8/Ec= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757672087; 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=fk5gW7Ej6loUhsO6Ixi4opZvN4M2rrqbJnW9PH5/Ebo=; b=PERXD6TprBk+CtluKRZFWf8CPH75yGG2pRS7NXQ+KTMltAYwdznCv8U9aLVjta6QJFWSF9clO1rWjvjS/XHQLr+WnAB8nHQcoGvbM8BAhwtfLqOCGxouBVB3YZTaMisvHP0xcrr+Bq5jX2maj21vIL6QaJOfzeR8eWiVqUarC9U= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757672087366943.8936029787158; Fri, 12 Sep 2025 03:14:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0ek-0002Qg-Rk; Fri, 12 Sep 2025 06:05:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0d3-0007X2-Ku; Fri, 12 Sep 2025 06:03:50 -0400 Received: from mail-mw2nam12on20628.outbound.protection.outlook.com ([2a01:111:f403:200a::628] helo=NAM12-MW2-obe.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 1ux0cl-0001OK-6c; Fri, 12 Sep 2025 06:03:40 -0400 Received: from DS7P220CA0011.NAMP220.PROD.OUTLOOK.COM (2603:10b6:8:1ca::16) by SA1PR12MB8987.namprd12.prod.outlook.com (2603:10b6:806:386::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:03:13 +0000 Received: from DS3PEPF000099DB.namprd04.prod.outlook.com (2603:10b6:8:1ca:cafe::a4) by DS7P220CA0011.outlook.office365.com (2603:10b6:8:1ca::16) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.18 via Frontend Transport; Fri, 12 Sep 2025 10:03:13 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099DB.mail.protection.outlook.com (10.167.17.197) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:13 +0000 Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:25 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb09.amd.com (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:25 -0700 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:24 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CxyVR6IzUnzBhAW0P8ZwUdvZU/BYaWKQhfQYj1Ot3ZzPuWJw+UjmawWJ/Np3y2O+Xgdy2oUCc5clccLKEnINOvfnvggenUgnh6XgOg/qC+F5kqm5AM8rzyDgTyKW1Xxs55dIumNo4b7eOyPmKISj+GzndM9RHWA5/YO+pi39isvsM9oDBze93wfadRccjN573ofGL+1n1++TODGPGgmXSM9w/WExZd6tAThr3wH+QY+O0bjABZaHGZRBoZK3GwLk6u9Nhl7f/J7IyBRGp7zIzobEE3Z7phBekWXpsOBcFZ+pm+hwlAKboifnF9OIKFYzGWqzFjFgmx5djNIK/wBtvA== 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=fk5gW7Ej6loUhsO6Ixi4opZvN4M2rrqbJnW9PH5/Ebo=; b=fHBoiPmESFPCcnmHW0I/+qG8lk1RNQddSGx2Op9VT2BN1swekvtNaG36sG2Sb76S7fuFRhy4ib8z/lVJMLg9NfpWttt+dTUs/YtGFbDpNWZaPrGIrmLOKqW3Nnh3r3k/2TPedQZNpn4iJXH/xgAYGpIc3jOXpN3Q5W363sBvCZLoytKIXfC1wx/fJgEoF1ocQsycOwze/wF194eb9V8Nf4hVFccdhz3Qc7gkezSRsVhYqWxeX/5T7llLs9ST7ssWkO+oCVSqCXUojEarLORISiL/F1rnnKt9GQ6aWqjkoeIYMXYo5ogHOe6qqa3arFFOYwdPRl7Fqc6dAVyE9aTuDA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fk5gW7Ej6loUhsO6Ixi4opZvN4M2rrqbJnW9PH5/Ebo=; b=1eE/G576Pej9KJjIhTunEtmutbIxDpHN8e0lMMfDnNfimmK12114rt6rgPT6zMw+TNZLqZdr3RyooOMQnj0VfKHAr7pRkz4JCxUSxGcyOTCZ48+ggF8H5r5N+/UZqInCGjG5fhCETUQi0rrEhxNdL0Rc1w/ffr9PzG70pH+uung= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 36/47] hw/misc/xlnx-versal-crl: add the versal2 version Date: Fri, 12 Sep 2025 12:00:45 +0200 Message-ID: <20250912100059.103997-37-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099DB:EE_|SA1PR12MB8987:EE_ X-MS-Office365-Filtering-Correlation-Id: 013733b2-fc64-43b9-f06d-08ddf1e39639 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|36860700013|376014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?YVEzV0tWOGZYa2xDZ3VudDdYT2kwOXNINC8rM3Q3bFV1bjRRV3pYVUs2Rzhy?= =?utf-8?B?WG9iZGlKeHNoRlFTVEF5bUhVeWQveXVQakpHQjFmMnZDLzhDZzhFejFCRk1V?= =?utf-8?B?bkZKZW1lVmRISGNuN3FlOEVwbzFrTVpBdXdiZTNZUkh1MkxDOVBDZWFBcWxz?= =?utf-8?B?d28rMG80cmFXZmNoZlhZMjZEdlM1Y2pJYXlGMVZIR044WkpYWCtaaXcxLzNN?= =?utf-8?B?M2ZmQXQ1RGlEajBYOFpVRU1KN2ZQYUVXZUVQdXNwMUxKaGgreVFKNmJVaW9O?= =?utf-8?B?VFNwNGRrRGxSZkplblFKZ2l2bUlZQ1FlRFNqRXp3eGYwQ1JlQzZDSWRnMk5s?= =?utf-8?B?SWpFRnhwRXdsc2U1MTZSK1B3MlYrQjNqa2w0N1NUTklpVzVlY0Z0dE1LMklz?= =?utf-8?B?aFluckVBVHpoRE1qTkdiRVRYbkFhZVZERDk0NEFQbUxHc3BlMDZWWEU1Nkwr?= =?utf-8?B?OE5oVFRsNmt6WFNHYnYvd3RETmZtNm5lR2pSSHp4OEh0MVVtZjc3SElkamZy?= =?utf-8?B?UHdoSzAraU9Jc29BSHJKVUNjRXZCM0IyaTI4bUhna2E2WjhGK2xlWGwwSUNE?= =?utf-8?B?c0I1bHVTdWFuMzBCVFVvTmtucGMrVmRLZW9zQnBCd1QydVk2Y09Nc0NwUGVX?= =?utf-8?B?TU5tN3R4QXF5MjAvV09jaG5ZV2NMNXQvOHlKWHBwOUhBWkV4TWQzZWtRRE9B?= =?utf-8?B?c0JUQnI0dHFiZEZwa0syRmZSVG1lU3hva252RDJsaDNFYm5YbG5XU0txVWtK?= =?utf-8?B?cjBXcXJuU1JVMWlOd3JvSFUwL0JTL2dKVzZpNGE3b2V2bHIzSGdzcUNjelV4?= =?utf-8?B?VFFjU0E3VG9BTmxsRnlLREQvNGZ4NXo2TEhOZ2Z6YmdTSEgzQmZMZlIvQ01O?= =?utf-8?B?S3BJQ2ZhWjdSVmRIRE12dFRJdDNuNVZUNDI4ay9ZRElYeDhCcDBaNHBKMXl2?= =?utf-8?B?OGt6cUpJWEE2NldIUFNDU0xYTGptL3FPTlNEYzY3TGFiVEZVbGx5eWQ3Ynhw?= =?utf-8?B?aWhkR1hhQjhnemFOTXdQYS9QM1JSNG9TVzdPNm1IdGd5NCtYRFZWUHpFZmZW?= =?utf-8?B?QWZEc1M2eS9FVUFZN0EweTg0T2N4T3phekpkTlVKR0JJRXBTalYwcjVTQnlr?= =?utf-8?B?NWVReVFqbzg2MTAwNlNBUFB1TGVuWlM4WTNMR3Q0b0NrMHJEWVJqVnZZUmtJ?= =?utf-8?B?bzlGVENVdG1Odm5TNVZicU9aUDNFWVNUSndkbDF1NTdsQ2ZaUU1aMWFxd2pS?= =?utf-8?B?ZGs3enRiYnhacHJGckJMUnExT2JrSUFuRXdiUjJ0WVJwcUQzRWM1SGNNMys5?= =?utf-8?B?eCtyWTJIaDZTeE03VlJUb0FTSVRuSFFsQWZicmgvdnNtV0dvaVc5eG9tQTh6?= =?utf-8?B?TzhOTFNWTm56OGtaSmt3MnNEY3ArK3g2K1hjNlRFSHljYW5vV3NBdWJLV2xJ?= =?utf-8?B?ajUvckViNjUxVkVBa3BJenBqQWdwWC9CbHVJTGFvaCtQYndTMTFxTGx5RFV3?= =?utf-8?B?MXI4eDN2YzZuR2lBaE8zZWY0OUF4MGFJVzhubkZKYWdOQzhOMlNwdWlxcEEv?= =?utf-8?B?WUtrNHkyYVVaMHhPR2NzYUxaMEI1WmVJUDhNTmh4bGlmSXFUeDFYK1VubTRS?= =?utf-8?B?RHFJZjB2bWYydG51YUsvRFBFY1ZpSTcrdHE3TVFNY3dOa09jTkFYekZOUmhr?= =?utf-8?B?clh3bVRSR1lyekJCcWNBNjg3RkszdGxiT2xsWnIxSTdEK1NPUzgveE5OK2hP?= =?utf-8?B?c0ZXenVOWFR1YldPN1FnUWFHcUQvM1pTVk4yNWNrWkZzWEVZMENEdVh2dUxR?= =?utf-8?B?Q2xRWkM4U25NQXRiRlVvTGxQNUZkQXpKeXoyYW5YVjlDUFE3cnZxQVNmOGdt?= =?utf-8?B?cHFhN1l2YkdBb3FGdWpnc2pZSXlkcEFRQ2hzcnZpT1Eyelo3QlJmUUtsWnpC?= =?utf-8?B?Wm9nSndMQmJsTlNWZFlsRGMwMVRFVDh5VDl2OEJDbGFwSU5YSDRoUFgyWGdH?= =?utf-8?B?RHZWa0dTblFNbTVQbjNmbTRqaWNQajYrUVFXSTE5Ynp0aW1tc05qbEZPTEJN?= =?utf-8?Q?h6V9MG?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(1800799024)(36860700013)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:13.5920 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 013733b2-fc64-43b9-f06d-08ddf1e39639 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099DB.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB8987 Received-SPF: permerror client-ip=2a01:111:f403:200a::628; envelope-from=Luc.Michel@amd.com; helo=NAM12-MW2-obe.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, DKIMWL_WL_HIGH=-0.001, 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, UPPERCASE_50_75=0.008 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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 @amd.com) X-ZM-MESSAGEID: 1757672088072116600 Add the versal2 version of the CRL device. For the implemented part, it is similar to the versal version but drives reset line of more devices. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/arm/xlnx-versal-version.h | 1 + include/hw/misc/xlnx-versal-crl.h | 329 ++++++++++++++++++++++ hw/misc/xlnx-versal-crl.c | 392 +++++++++++++++++++++++++++ 3 files changed, 722 insertions(+) diff --git a/include/hw/arm/xlnx-versal-version.h b/include/hw/arm/xlnx-ver= sal-version.h index c4307d1304a..5b6b6e57a57 100644 --- a/include/hw/arm/xlnx-versal-version.h +++ b/include/hw/arm/xlnx-versal-version.h @@ -8,8 +8,9 @@ #ifndef HW_ARM_XLNX_VERSAL_VERSION_H #define HW_ARM_XLNX_VERSAL_VERSION_H =20 typedef enum VersalVersion { VERSAL_VER_VERSAL, + VERSAL_VER_VERSAL2, } VersalVersion; =20 #endif diff --git a/include/hw/misc/xlnx-versal-crl.h b/include/hw/misc/xlnx-versa= l-crl.h index 7e50a95ad3c..f6b8694ebea 100644 --- a/include/hw/misc/xlnx-versal-crl.h +++ b/include/hw/misc/xlnx-versal-crl.h @@ -15,14 +15,16 @@ #include "target/arm/cpu-qom.h" #include "hw/arm/xlnx-versal-version.h" =20 #define TYPE_XLNX_VERSAL_CRL_BASE "xlnx-versal-crl-base" #define TYPE_XLNX_VERSAL_CRL "xlnx-versal-crl" +#define TYPE_XLNX_VERSAL2_CRL "xlnx-versal2-crl" =20 OBJECT_DECLARE_TYPE(XlnxVersalCRLBase, XlnxVersalCRLBaseClass, XLNX_VERSAL_CRL_BASE) OBJECT_DECLARE_SIMPLE_TYPE(XlnxVersalCRL, XLNX_VERSAL_CRL) +OBJECT_DECLARE_SIMPLE_TYPE(XlnxVersal2CRL, XLNX_VERSAL2_CRL) =20 REG32(ERR_CTRL, 0x0) FIELD(ERR_CTRL, SLVERR_ENABLE, 0, 1) REG32(IR_STATUS, 0x4) FIELD(IR_STATUS, ADDR_DECODE_ERR, 0, 1) @@ -218,10 +220,318 @@ REG32(PSM_RST_MODE, 0x370) FIELD(PSM_RST_MODE, WAKEUP, 2, 1) FIELD(PSM_RST_MODE, RST_MODE, 0, 2) =20 #define CRL_R_MAX (R_PSM_RST_MODE + 1) =20 +REG32(VERSAL2_ERR_CTRL, 0x0) +REG32(VERSAL2_WPROT, 0x1c) + FIELD(VERSAL2_WPROT, ACTIVE, 0, 1) +REG32(VERSAL2_RPLL_CTRL, 0x40) + FIELD(VERSAL2_RPLL_CTRL, POST_SRC, 24, 3) + FIELD(VERSAL2_RPLL_CTRL, PRE_SRC, 20, 3) + FIELD(VERSAL2_RPLL_CTRL, CLKOUTDIV, 16, 2) + FIELD(VERSAL2_RPLL_CTRL, FBDIV, 8, 8) + FIELD(VERSAL2_RPLL_CTRL, BYPASS, 3, 1) + FIELD(VERSAL2_RPLL_CTRL, RESET, 0, 1) +REG32(VERSAL2_RPLL_CFG, 0x44) + FIELD(VERSAL2_RPLL_CFG, LOCK_DLY, 25, 7) + FIELD(VERSAL2_RPLL_CFG, LOCK_CNT, 13, 10) + FIELD(VERSAL2_RPLL_CFG, LFHF, 10, 2) + FIELD(VERSAL2_RPLL_CFG, CP, 5, 4) + FIELD(VERSAL2_RPLL_CFG, RES, 0, 4) +REG32(VERSAL2_FLXPLL_CTRL, 0x50) + FIELD(VERSAL2_FLXPLL_CTRL, POST_SRC, 24, 3) + FIELD(VERSAL2_FLXPLL_CTRL, PRE_SRC, 20, 3) + FIELD(VERSAL2_FLXPLL_CTRL, CLKOUTDIV, 16, 2) + FIELD(VERSAL2_FLXPLL_CTRL, FBDIV, 8, 8) + FIELD(VERSAL2_FLXPLL_CTRL, BYPASS, 3, 1) + FIELD(VERSAL2_FLXPLL_CTRL, RESET, 0, 1) +REG32(VERSAL2_FLXPLL_CFG, 0x54) + FIELD(VERSAL2_FLXPLL_CFG, LOCK_DLY, 25, 7) + FIELD(VERSAL2_FLXPLL_CFG, LOCK_CNT, 13, 10) + FIELD(VERSAL2_FLXPLL_CFG, LFHF, 10, 2) + FIELD(VERSAL2_FLXPLL_CFG, CP, 5, 4) + FIELD(VERSAL2_FLXPLL_CFG, RES, 0, 4) +REG32(VERSAL2_PLL_STATUS, 0x60) + FIELD(VERSAL2_PLL_STATUS, FLXPLL_STABLE, 3, 1) + FIELD(VERSAL2_PLL_STATUS, RPLL_STABLE, 2, 1) + FIELD(VERSAL2_PLL_STATUS, FLXPLL_LOCK, 1, 1) + FIELD(VERSAL2_PLL_STATUS, RPLL_LOCK, 0, 1) +REG32(VERSAL2_RPLL_TO_XPD_CTRL, 0x100) + FIELD(VERSAL2_RPLL_TO_XPD_CTRL, DIVISOR0, 8, 10) +REG32(VERSAL2_LPX_TOP_SWITCH_CTRL, 0x104) + FIELD(VERSAL2_LPX_TOP_SWITCH_CTRL, CLKACT_ADMA, 26, 1) + FIELD(VERSAL2_LPX_TOP_SWITCH_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_LPX_TOP_SWITCH_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_LPX_TOP_SWITCH_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_LPX_LSBUS_CLK_CTRL, 0x108) + FIELD(VERSAL2_LPX_LSBUS_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_LPX_LSBUS_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_LPX_LSBUS_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_RPU_CLK_CTRL, 0x10c) + FIELD(VERSAL2_RPU_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_RPU_CLK_CTRL, CLKACT_CLUSTERE, 24, 1) + FIELD(VERSAL2_RPU_CLK_CTRL, CLKACT_CLUSTERD, 23, 1) + FIELD(VERSAL2_RPU_CLK_CTRL, CLKACT_CLUSTERC, 22, 1) + FIELD(VERSAL2_RPU_CLK_CTRL, CLKACT_CLUSTERB, 21, 1) + FIELD(VERSAL2_RPU_CLK_CTRL, CLKACT_CLUSTERA, 20, 1) + FIELD(VERSAL2_RPU_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_RPU_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_OCM_CLK_CTRL, 0x120) + FIELD(VERSAL2_OCM_CLK_CTRL, CLKACT_OCM3, 24, 1) + FIELD(VERSAL2_OCM_CLK_CTRL, CLKACT_OCM2, 23, 1) + FIELD(VERSAL2_OCM_CLK_CTRL, CLKACT_OCM1, 22, 1) + FIELD(VERSAL2_OCM_CLK_CTRL, CLKACT_OCM0, 21, 1) +REG32(VERSAL2_IOU_SWITCH_CLK_CTRL, 0x124) + FIELD(VERSAL2_IOU_SWITCH_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_IOU_SWITCH_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_IOU_SWITCH_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_GEM0_REF_CTRL, 0x128) + FIELD(VERSAL2_GEM0_REF_CTRL, CLKACT_RX, 27, 1) + FIELD(VERSAL2_GEM0_REF_CTRL, CLKACT_TX, 26, 1) + FIELD(VERSAL2_GEM0_REF_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_GEM0_REF_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_GEM0_REF_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_GEM1_REF_CTRL, 0x12c) + FIELD(VERSAL2_GEM1_REF_CTRL, CLKACT_RX, 27, 1) + FIELD(VERSAL2_GEM1_REF_CTRL, CLKACT_TX, 26, 1) + FIELD(VERSAL2_GEM1_REF_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_GEM1_REF_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_GEM1_REF_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_GEM_TSU_REF_CLK_CTRL, 0x130) + FIELD(VERSAL2_GEM_TSU_REF_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_GEM_TSU_REF_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_GEM_TSU_REF_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_USB0_BUS_REF_CLK_CTRL, 0x134) + FIELD(VERSAL2_USB0_BUS_REF_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_USB0_BUS_REF_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_USB0_BUS_REF_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_USB1_BUS_REF_CLK_CTRL, 0x138) + FIELD(VERSAL2_USB1_BUS_REF_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_USB1_BUS_REF_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_USB1_BUS_REF_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_UART0_REF_CLK_CTRL, 0x13c) + FIELD(VERSAL2_UART0_REF_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_UART0_REF_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_UART0_REF_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_UART1_REF_CLK_CTRL, 0x140) + FIELD(VERSAL2_UART1_REF_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_UART1_REF_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_UART1_REF_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_SPI0_REF_CLK_CTRL, 0x144) + FIELD(VERSAL2_SPI0_REF_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_SPI0_REF_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_SPI0_REF_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_SPI1_REF_CLK_CTRL, 0x148) + FIELD(VERSAL2_SPI1_REF_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_SPI1_REF_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_SPI1_REF_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_CAN0_REF_2X_CTRL, 0x14c) + FIELD(VERSAL2_CAN0_REF_2X_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_CAN0_REF_2X_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_CAN0_REF_2X_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_CAN1_REF_2X_CTRL, 0x150) + FIELD(VERSAL2_CAN1_REF_2X_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_CAN1_REF_2X_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_CAN1_REF_2X_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_CAN2_REF_2X_CTRL, 0x154) + FIELD(VERSAL2_CAN2_REF_2X_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_CAN2_REF_2X_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_CAN2_REF_2X_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_CAN3_REF_2X_CTRL, 0x158) + FIELD(VERSAL2_CAN3_REF_2X_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_CAN3_REF_2X_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_CAN3_REF_2X_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_I3C0_REF_CTRL, 0x15c) + FIELD(VERSAL2_I3C0_REF_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_I3C0_REF_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_I3C0_REF_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_I3C1_REF_CTRL, 0x160) + FIELD(VERSAL2_I3C1_REF_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_I3C1_REF_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_I3C1_REF_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_I3C2_REF_CTRL, 0x164) + FIELD(VERSAL2_I3C2_REF_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_I3C2_REF_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_I3C2_REF_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_I3C3_REF_CTRL, 0x168) + FIELD(VERSAL2_I3C3_REF_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_I3C3_REF_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_I3C3_REF_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_I3C4_REF_CTRL, 0x16c) + FIELD(VERSAL2_I3C4_REF_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_I3C4_REF_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_I3C4_REF_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_I3C5_REF_CTRL, 0x170) + FIELD(VERSAL2_I3C5_REF_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_I3C5_REF_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_I3C5_REF_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_I3C6_REF_CTRL, 0x174) + FIELD(VERSAL2_I3C6_REF_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_I3C6_REF_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_I3C6_REF_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_I3C7_REF_CTRL, 0x178) + FIELD(VERSAL2_I3C7_REF_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_I3C7_REF_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_I3C7_REF_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_DBG_LPX_CTRL, 0x17c) + FIELD(VERSAL2_DBG_LPX_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_DBG_LPX_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_DBG_LPX_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_TIMESTAMP_REF_CTRL, 0x180) + FIELD(VERSAL2_TIMESTAMP_REF_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_TIMESTAMP_REF_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_TIMESTAMP_REF_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_SAFETY_CHK, 0x184) +REG32(VERSAL2_ASU_CLK_CTRL, 0x188) + FIELD(VERSAL2_ASU_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_ASU_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_DBG_TSTMP_CLK_CTRL, 0x18c) + FIELD(VERSAL2_DBG_TSTMP_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_DBG_TSTMP_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_DBG_TSTMP_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_MMI_TOPSW_CLK_CTRL, 0x190) + FIELD(VERSAL2_MMI_TOPSW_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_MMI_TOPSW_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_MMI_TOPSW_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_WWDT_PLL_CLK_CTRL, 0x194) + FIELD(VERSAL2_WWDT_PLL_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_WWDT_PLL_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_RCLK_CTRL, 0x1a0) + FIELD(VERSAL2_RCLK_CTRL, CLKACT, 8, 6) + FIELD(VERSAL2_RCLK_CTRL, SELECT, 0, 6) +REG32(VERSAL2_RST_RPU_A, 0x310) + FIELD(VERSAL2_RST_RPU_A, TOPRESET, 16, 1) + FIELD(VERSAL2_RST_RPU_A, CORE1_POR, 9, 1) + FIELD(VERSAL2_RST_RPU_A, CORE0_POR, 8, 1) + FIELD(VERSAL2_RST_RPU_A, CORE1_RESET, 1, 1) + FIELD(VERSAL2_RST_RPU_A, CORE0_RESET, 0, 1) +REG32(VERSAL2_RST_RPU_B, 0x314) + FIELD(VERSAL2_RST_RPU_B, TOPRESET, 16, 1) + FIELD(VERSAL2_RST_RPU_B, CORE1_POR, 9, 1) + FIELD(VERSAL2_RST_RPU_B, CORE0_POR, 8, 1) + FIELD(VERSAL2_RST_RPU_B, CORE1_RESET, 1, 1) + FIELD(VERSAL2_RST_RPU_B, CORE0_RESET, 0, 1) +REG32(VERSAL2_RST_RPU_C, 0x318) + FIELD(VERSAL2_RST_RPU_C, TOPRESET, 16, 1) + FIELD(VERSAL2_RST_RPU_C, CORE1_POR, 9, 1) + FIELD(VERSAL2_RST_RPU_C, CORE0_POR, 8, 1) + FIELD(VERSAL2_RST_RPU_C, CORE1_RESET, 1, 1) + FIELD(VERSAL2_RST_RPU_C, CORE0_RESET, 0, 1) +REG32(VERSAL2_RST_RPU_D, 0x31c) + FIELD(VERSAL2_RST_RPU_D, TOPRESET, 16, 1) + FIELD(VERSAL2_RST_RPU_D, CORE1_POR, 9, 1) + FIELD(VERSAL2_RST_RPU_D, CORE0_POR, 8, 1) + FIELD(VERSAL2_RST_RPU_D, CORE1_RESET, 1, 1) + FIELD(VERSAL2_RST_RPU_D, CORE0_RESET, 0, 1) +REG32(VERSAL2_RST_RPU_E, 0x320) + FIELD(VERSAL2_RST_RPU_E, TOPRESET, 16, 1) + FIELD(VERSAL2_RST_RPU_E, CORE1_POR, 9, 1) + FIELD(VERSAL2_RST_RPU_E, CORE0_POR, 8, 1) + FIELD(VERSAL2_RST_RPU_E, CORE1_RESET, 1, 1) + FIELD(VERSAL2_RST_RPU_E, CORE0_RESET, 0, 1) +REG32(VERSAL2_RST_RPU_GD_0, 0x324) + FIELD(VERSAL2_RST_RPU_GD_0, RESET, 1, 1) + FIELD(VERSAL2_RST_RPU_GD_0, TOP_RESET, 0, 1) +REG32(VERSAL2_RST_RPU_GD_1, 0x328) + FIELD(VERSAL2_RST_RPU_GD_1, RESET, 1, 1) + FIELD(VERSAL2_RST_RPU_GD_1, TOP_RESET, 0, 1) +REG32(VERSAL2_RST_ASU_GD, 0x32c) + FIELD(VERSAL2_RST_ASU_GD, RESET, 1, 1) + FIELD(VERSAL2_RST_ASU_GD, TOP_RESET, 0, 1) +REG32(VERSAL2_RST_ADMA, 0x334) + FIELD(VERSAL2_RST_ADMA, RESET, 0, 1) +REG32(VERSAL2_RST_SDMA, 0x338) + FIELD(VERSAL2_RST_SDMA, RESET, 0, 1) +REG32(VERSAL2_RST_GEM0, 0x33c) + FIELD(VERSAL2_RST_GEM0, RESET, 0, 1) +REG32(VERSAL2_RST_GEM1, 0x340) + FIELD(VERSAL2_RST_GEM1, RESET, 0, 1) +REG32(VERSAL2_RST_USB0, 0x348) + FIELD(VERSAL2_RST_USB0, RESET, 0, 1) +REG32(VERSAL2_RST_USB1, 0x34c) + FIELD(VERSAL2_RST_USB1, RESET, 0, 1) +REG32(VERSAL2_RST_UART0, 0x350) + FIELD(VERSAL2_RST_UART0, RESET, 0, 1) +REG32(VERSAL2_RST_UART1, 0x354) + FIELD(VERSAL2_RST_UART1, RESET, 0, 1) +REG32(VERSAL2_RST_SPI0, 0x358) + FIELD(VERSAL2_RST_SPI0, RESET, 0, 1) +REG32(VERSAL2_RST_SPI1, 0x35c) + FIELD(VERSAL2_RST_SPI1, RESET, 0, 1) +REG32(VERSAL2_RST_CAN0, 0x360) + FIELD(VERSAL2_RST_CAN0, RESET, 0, 1) +REG32(VERSAL2_RST_CAN1, 0x364) + FIELD(VERSAL2_RST_CAN1, RESET, 0, 1) +REG32(VERSAL2_RST_CAN2, 0x368) + FIELD(VERSAL2_RST_CAN2, RESET, 0, 1) +REG32(VERSAL2_RST_CAN3, 0x36c) + FIELD(VERSAL2_RST_CAN3, RESET, 0, 1) +REG32(VERSAL2_RST_I3C0, 0x374) + FIELD(VERSAL2_RST_I3C0, RESET, 0, 1) +REG32(VERSAL2_RST_I3C1, 0x378) + FIELD(VERSAL2_RST_I3C1, RESET, 0, 1) +REG32(VERSAL2_RST_I3C2, 0x37c) + FIELD(VERSAL2_RST_I3C2, RESET, 0, 1) +REG32(VERSAL2_RST_I3C3, 0x380) + FIELD(VERSAL2_RST_I3C3, RESET, 0, 1) +REG32(VERSAL2_RST_I3C4, 0x384) + FIELD(VERSAL2_RST_I3C4, RESET, 0, 1) +REG32(VERSAL2_RST_I3C5, 0x388) + FIELD(VERSAL2_RST_I3C5, RESET, 0, 1) +REG32(VERSAL2_RST_I3C6, 0x38c) + FIELD(VERSAL2_RST_I3C6, RESET, 0, 1) +REG32(VERSAL2_RST_I3C7, 0x390) + FIELD(VERSAL2_RST_I3C7, RESET, 0, 1) +REG32(VERSAL2_RST_DBG_LPX, 0x398) + FIELD(VERSAL2_RST_DBG_LPX, RESET_HSDP, 1, 1) + FIELD(VERSAL2_RST_DBG_LPX, RESET, 0, 1) +REG32(VERSAL2_RST_GPIO, 0x39c) + FIELD(VERSAL2_RST_GPIO, RESET, 0, 1) +REG32(VERSAL2_RST_TTC, 0x3a0) + FIELD(VERSAL2_RST_TTC, TTC7_RESET, 7, 1) + FIELD(VERSAL2_RST_TTC, TTC6_RESET, 6, 1) + FIELD(VERSAL2_RST_TTC, TTC5_RESET, 5, 1) + FIELD(VERSAL2_RST_TTC, TTC4_RESET, 4, 1) + FIELD(VERSAL2_RST_TTC, TTC3_RESET, 3, 1) + FIELD(VERSAL2_RST_TTC, TTC2_RESET, 2, 1) + FIELD(VERSAL2_RST_TTC, TTC1_RESET, 1, 1) + FIELD(VERSAL2_RST_TTC, TTC0_RESET, 0, 1) +REG32(VERSAL2_RST_TIMESTAMP, 0x3a4) + FIELD(VERSAL2_RST_TIMESTAMP, RESET, 0, 1) +REG32(VERSAL2_RST_SWDT0, 0x3a8) + FIELD(VERSAL2_RST_SWDT0, RESET, 0, 1) +REG32(VERSAL2_RST_SWDT1, 0x3ac) + FIELD(VERSAL2_RST_SWDT1, RESET, 0, 1) +REG32(VERSAL2_RST_SWDT2, 0x3b0) + FIELD(VERSAL2_RST_SWDT2, RESET, 0, 1) +REG32(VERSAL2_RST_SWDT3, 0x3b4) + FIELD(VERSAL2_RST_SWDT3, RESET, 0, 1) +REG32(VERSAL2_RST_SWDT4, 0x3b8) + FIELD(VERSAL2_RST_SWDT4, RESET, 0, 1) +REG32(VERSAL2_RST_IPI, 0x3bc) + FIELD(VERSAL2_RST_IPI, RESET, 0, 1) +REG32(VERSAL2_RST_SYSMON, 0x3c0) + FIELD(VERSAL2_RST_SYSMON, CFG_RST, 0, 1) +REG32(VERSAL2_ASU_MB_RST_MODE, 0x3c4) + FIELD(VERSAL2_ASU_MB_RST_MODE, WAKEUP, 2, 1) + FIELD(VERSAL2_ASU_MB_RST_MODE, RST_MODE, 0, 2) +REG32(VERSAL2_FPX_TOPSW_MUX_CTRL, 0x3c8) + FIELD(VERSAL2_FPX_TOPSW_MUX_CTRL, SELECT, 0, 1) +REG32(VERSAL2_RST_FPX, 0x3d0) + FIELD(VERSAL2_RST_FPX, SRST, 1, 1) + FIELD(VERSAL2_RST_FPX, POR, 0, 1) +REG32(VERSAL2_RST_MMI, 0x3d4) + FIELD(VERSAL2_RST_MMI, POR, 0, 1) +REG32(VERSAL2_RST_OCM, 0x3d8) + FIELD(VERSAL2_RST_OCM, RESET_OCM3, 3, 1) + FIELD(VERSAL2_RST_OCM, RESET_OCM2, 2, 1) + FIELD(VERSAL2_RST_OCM, RESET_OCM1, 1, 1) + FIELD(VERSAL2_RST_OCM, RESET_OCM0, 0, 1) + +#define VERSAL2_CRL_R_MAX (R_VERSAL2_RST_OCM + 1) + struct XlnxVersalCRLBase { SysBusDevice parent_obj; =20 RegisterInfoArray *reg_array; uint32_t *regs; @@ -247,15 +557,34 @@ struct XlnxVersalCRL { =20 uint32_t regs[CRL_R_MAX]; RegisterInfo regs_info[CRL_R_MAX]; }; =20 +struct XlnxVersal2CRL { + XlnxVersalCRLBase parent_obj; + + struct { + DeviceState *rpu[10]; + DeviceState *adma[8]; + DeviceState *sdma[8]; + DeviceState *uart[2]; + DeviceState *gem[2]; + DeviceState *usb[2]; + DeviceState *can[4]; + } cfg; + + RegisterInfo regs_info[VERSAL2_CRL_R_MAX]; + uint32_t regs[VERSAL2_CRL_R_MAX]; +}; + static inline const char *xlnx_versal_crl_class_name(VersalVersion ver) { switch (ver) { case VERSAL_VER_VERSAL: return TYPE_XLNX_VERSAL_CRL; + case VERSAL_VER_VERSAL2: + return TYPE_XLNX_VERSAL2_CRL; default: g_assert_not_reached(); } } =20 diff --git a/hw/misc/xlnx-versal-crl.c b/hw/misc/xlnx-versal-crl.c index 6225a92e0bd..10e6af002ba 100644 --- a/hw/misc/xlnx-versal-crl.c +++ b/hw/misc/xlnx-versal-crl.c @@ -81,10 +81,55 @@ static DeviceState **versal_decode_periph_rst(XlnxVersa= lCRLBase *s, return xvc->cfg.gem + idx; =20 case A_RST_USB0: return xvc->cfg.usb; =20 + default: + /* invalid or unimplemented */ + g_assert_not_reached(); + } +} + +static DeviceState **versal2_decode_periph_rst(XlnxVersalCRLBase *s, + hwaddr addr, size_t *count) +{ + size_t idx; + XlnxVersal2CRL *xvc =3D XLNX_VERSAL2_CRL(s); + + *count =3D 1; + + switch (addr) { + case A_VERSAL2_RST_RPU_A ... A_VERSAL2_RST_RPU_E: + idx =3D (addr - A_VERSAL2_RST_RPU_A) / sizeof(uint32_t); + idx *=3D 2; /* two RPUs per RST_RPU_x registers */ + return xvc->cfg.rpu + idx; + + case A_VERSAL2_RST_ADMA: + /* A single register fans out to all DMA reset inputs */ + *count =3D ARRAY_SIZE(xvc->cfg.adma); + return xvc->cfg.adma; + + case A_VERSAL2_RST_SDMA: + *count =3D ARRAY_SIZE(xvc->cfg.sdma); + return xvc->cfg.sdma; + + case A_VERSAL2_RST_UART0 ... A_VERSAL2_RST_UART1: + idx =3D (addr - A_VERSAL2_RST_UART0) / sizeof(uint32_t); + return xvc->cfg.uart + idx; + + case A_VERSAL2_RST_GEM0 ... A_VERSAL2_RST_GEM1: + idx =3D (addr - A_VERSAL2_RST_GEM0) / sizeof(uint32_t); + return xvc->cfg.gem + idx; + + case A_VERSAL2_RST_USB0 ... A_VERSAL2_RST_USB1: + idx =3D (addr - A_VERSAL2_RST_USB0) / sizeof(uint32_t); + return xvc->cfg.usb + idx; + + case A_VERSAL2_RST_CAN0 ... A_VERSAL2_RST_CAN3: + idx =3D (addr - A_VERSAL2_RST_CAN0) / sizeof(uint32_t); + return xvc->cfg.can + idx; + default: /* invalid or unimplemented */ return NULL; } } @@ -305,20 +350,270 @@ static const RegisterAccessInfo crl_regs_info[] =3D { .reset =3D 0x1, .rsvd =3D 0xf8, } }; =20 +static const RegisterAccessInfo versal2_crl_regs_info[] =3D { + { .name =3D "ERR_CTRL", .addr =3D A_VERSAL2_ERR_CTRL, + .reset =3D 0x1, + },{ .name =3D "WPROT", .addr =3D A_VERSAL2_WPROT, + },{ .name =3D "RPLL_CTRL", .addr =3D A_VERSAL2_RPLL_CTRL, + .reset =3D 0x24809, + .rsvd =3D 0xf88c00f6, + },{ .name =3D "RPLL_CFG", .addr =3D A_VERSAL2_RPLL_CFG, + .reset =3D 0x7e5dcc6c, + .rsvd =3D 0x1801210, + },{ .name =3D "FLXPLL_CTRL", .addr =3D A_VERSAL2_FLXPLL_CTRL, + .reset =3D 0x24809, + .rsvd =3D 0xf88c00f6, + },{ .name =3D "FLXPLL_CFG", .addr =3D A_VERSAL2_FLXPLL_CFG, + .reset =3D 0x7e5dcc6c, + .rsvd =3D 0x1801210, + },{ .name =3D "PLL_STATUS", .addr =3D A_VERSAL2_PLL_STATUS, + .reset =3D 0xf, + .rsvd =3D 0xf0, + .ro =3D 0xf, + },{ .name =3D "RPLL_TO_XPD_CTRL", .addr =3D A_VERSAL2_RPLL_TO_XPD_CTR= L, + .reset =3D 0x2000100, + .rsvd =3D 0xfdfc00ff, + },{ .name =3D "LPX_TOP_SWITCH_CTRL", .addr =3D A_VERSAL2_LPX_TOP_SWIT= CH_CTRL, + .reset =3D 0xe000300, + .rsvd =3D 0xf1fc00f8, + },{ .name =3D "LPX_LSBUS_CLK_CTRL", .addr =3D A_VERSAL2_LPX_LSBUS_CLK= _CTRL, + .reset =3D 0x2000800, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "RPU_CLK_CTRL", .addr =3D A_VERSAL2_RPU_CLK_CTRL, + .reset =3D 0x3f00300, + .rsvd =3D 0xfc0c00f8, + },{ .name =3D "OCM_CLK_CTRL", .addr =3D A_VERSAL2_OCM_CLK_CTRL, + .reset =3D 0x1e00000, + .rsvd =3D 0xfe1fffff, + },{ .name =3D "IOU_SWITCH_CLK_CTRL", .addr =3D A_VERSAL2_IOU_SWITCH_C= LK_CTRL, + .reset =3D 0x2000500, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "GEM0_REF_CTRL", .addr =3D A_VERSAL2_GEM0_REF_CTRL, + .reset =3D 0xe000a00, + .rsvd =3D 0xf1fc00f8, + },{ .name =3D "GEM1_REF_CTRL", .addr =3D A_VERSAL2_GEM1_REF_CTRL, + .reset =3D 0xe000a00, + .rsvd =3D 0xf1fc00f8, + },{ .name =3D "GEM_TSU_REF_CLK_CTRL", .addr =3D A_VERSAL2_GEM_TSU_REF= _CLK_CTRL, + .reset =3D 0x300, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "USB0_BUS_REF_CLK_CTRL", + .addr =3D A_VERSAL2_USB0_BUS_REF_CLK_CTRL, + .reset =3D 0x2001900, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "USB1_BUS_REF_CLK_CTRL", + .addr =3D A_VERSAL2_USB1_BUS_REF_CLK_CTRL, + .reset =3D 0x2001900, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "UART0_REF_CLK_CTRL", .addr =3D A_VERSAL2_UART0_REF_CLK= _CTRL, + .reset =3D 0xc00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "UART1_REF_CLK_CTRL", .addr =3D A_VERSAL2_UART1_REF_CLK= _CTRL, + .reset =3D 0xc00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "SPI0_REF_CLK_CTRL", .addr =3D A_VERSAL2_SPI0_REF_CLK_C= TRL, + .reset =3D 0x600, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "SPI1_REF_CLK_CTRL", .addr =3D A_VERSAL2_SPI1_REF_CLK_C= TRL, + .reset =3D 0x600, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "CAN0_REF_2X_CTRL", .addr =3D A_VERSAL2_CAN0_REF_2X_CTR= L, + .reset =3D 0xc00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "CAN1_REF_2X_CTRL", .addr =3D A_VERSAL2_CAN1_REF_2X_CTR= L, + .reset =3D 0xc00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "CAN2_REF_2X_CTRL", .addr =3D A_VERSAL2_CAN2_REF_2X_CTR= L, + .reset =3D 0xc00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "CAN3_REF_2X_CTRL", .addr =3D A_VERSAL2_CAN3_REF_2X_CTR= L, + .reset =3D 0xc00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "I3C0_REF_CTRL", .addr =3D A_VERSAL2_I3C0_REF_CTRL, + .reset =3D 0x2000c00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "I3C1_REF_CTRL", .addr =3D A_VERSAL2_I3C1_REF_CTRL, + .reset =3D 0x2000c00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "I3C2_REF_CTRL", .addr =3D A_VERSAL2_I3C2_REF_CTRL, + .reset =3D 0x2000c00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "I3C3_REF_CTRL", .addr =3D A_VERSAL2_I3C3_REF_CTRL, + .reset =3D 0x2000c00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "I3C4_REF_CTRL", .addr =3D A_VERSAL2_I3C4_REF_CTRL, + .reset =3D 0x2000c00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "I3C5_REF_CTRL", .addr =3D A_VERSAL2_I3C5_REF_CTRL, + .reset =3D 0x2000c00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "I3C6_REF_CTRL", .addr =3D A_VERSAL2_I3C6_REF_CTRL, + .reset =3D 0x2000c00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "I3C7_REF_CTRL", .addr =3D A_VERSAL2_I3C7_REF_CTRL, + .reset =3D 0x2000c00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "DBG_LPX_CTRL", .addr =3D A_VERSAL2_DBG_LPX_CTRL, + .reset =3D 0x300, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "TIMESTAMP_REF_CTRL", .addr =3D A_VERSAL2_TIMESTAMP_REF= _CTRL, + .reset =3D 0x2000c00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "SAFETY_CHK", .addr =3D A_VERSAL2_SAFETY_CHK, + },{ .name =3D "ASU_CLK_CTRL", .addr =3D A_VERSAL2_ASU_CLK_CTRL, + .reset =3D 0x2000f04, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "DBG_TSTMP_CLK_CTRL", .addr =3D A_VERSAL2_DBG_TSTMP_CLK= _CTRL, + .reset =3D 0x300, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "MMI_TOPSW_CLK_CTRL", .addr =3D A_VERSAL2_MMI_TOPSW_CLK= _CTRL, + .reset =3D 0x2000300, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "WWDT_PLL_CLK_CTRL", .addr =3D A_VERSAL2_WWDT_PLL_CLK_C= TRL, + .reset =3D 0xc00, + .rsvd =3D 0xfffc00f8, + },{ .name =3D "RCLK_CTRL", .addr =3D A_VERSAL2_RCLK_CTRL, + .rsvd =3D 0xc040, + },{ .name =3D "RST_RPU_A", .addr =3D A_VERSAL2_RST_RPU_A, + .reset =3D 0x10303, + .rsvd =3D 0xfffefcfc, + .pre_write =3D crl_rst_cpu_prew, + },{ .name =3D "RST_RPU_B", .addr =3D A_VERSAL2_RST_RPU_B, + .reset =3D 0x10303, + .rsvd =3D 0xfffefcfc, + .pre_write =3D crl_rst_cpu_prew, + },{ .name =3D "RST_RPU_C", .addr =3D A_VERSAL2_RST_RPU_C, + .reset =3D 0x10303, + .rsvd =3D 0xfffefcfc, + .pre_write =3D crl_rst_cpu_prew, + },{ .name =3D "RST_RPU_D", .addr =3D A_VERSAL2_RST_RPU_D, + .reset =3D 0x10303, + .rsvd =3D 0xfffefcfc, + .pre_write =3D crl_rst_cpu_prew, + },{ .name =3D "RST_RPU_E", .addr =3D A_VERSAL2_RST_RPU_E, + .reset =3D 0x10303, + .rsvd =3D 0xfffefcfc, + .pre_write =3D crl_rst_cpu_prew, + },{ .name =3D "RST_RPU_GD_0", .addr =3D A_VERSAL2_RST_RPU_GD_0, + .reset =3D 0x3, + },{ .name =3D "RST_RPU_GD_1", .addr =3D A_VERSAL2_RST_RPU_GD_1, + .reset =3D 0x3, + },{ .name =3D "RST_ASU_GD", .addr =3D A_VERSAL2_RST_ASU_GD, + .reset =3D 0x3, + },{ .name =3D "RST_ADMA", .addr =3D A_VERSAL2_RST_ADMA, + .reset =3D 0x1, + .pre_write =3D crl_rst_dev_prew, + },{ .name =3D "RST_SDMA", .addr =3D A_VERSAL2_RST_SDMA, + .pre_write =3D crl_rst_dev_prew, + .reset =3D 0x1, + },{ .name =3D "RST_GEM0", .addr =3D A_VERSAL2_RST_GEM0, + .reset =3D 0x1, + .pre_write =3D crl_rst_dev_prew, + },{ .name =3D "RST_GEM1", .addr =3D A_VERSAL2_RST_GEM1, + .reset =3D 0x1, + .pre_write =3D crl_rst_dev_prew, + },{ .name =3D "RST_USB0", .addr =3D A_VERSAL2_RST_USB0, + .reset =3D 0x1, + .pre_write =3D crl_rst_dev_prew, + },{ .name =3D "RST_USB1", .addr =3D A_VERSAL2_RST_USB1, + .reset =3D 0x1, + .pre_write =3D crl_rst_dev_prew, + },{ .name =3D "RST_UART0", .addr =3D A_VERSAL2_RST_UART0, + .reset =3D 0x1, + .pre_write =3D crl_rst_dev_prew, + },{ .name =3D "RST_UART1", .addr =3D A_VERSAL2_RST_UART1, + .reset =3D 0x1, + .pre_write =3D crl_rst_dev_prew, + },{ .name =3D "RST_SPI0", .addr =3D A_VERSAL2_RST_SPI0, + .reset =3D 0x1, + },{ .name =3D "RST_SPI1", .addr =3D A_VERSAL2_RST_SPI1, + .reset =3D 0x1, + },{ .name =3D "RST_CAN0", .addr =3D A_VERSAL2_RST_CAN0, + .reset =3D 0x1, + .pre_write =3D crl_rst_dev_prew, + },{ .name =3D "RST_CAN1", .addr =3D A_VERSAL2_RST_CAN1, + .reset =3D 0x1, + .pre_write =3D crl_rst_dev_prew, + },{ .name =3D "RST_CAN2", .addr =3D A_VERSAL2_RST_CAN2, + .reset =3D 0x1, + .pre_write =3D crl_rst_dev_prew, + },{ .name =3D "RST_CAN3", .addr =3D A_VERSAL2_RST_CAN3, + .reset =3D 0x1, + .pre_write =3D crl_rst_dev_prew, + },{ .name =3D "RST_I3C0", .addr =3D A_VERSAL2_RST_I3C0, + .reset =3D 0x1, + },{ .name =3D "RST_I3C1", .addr =3D A_VERSAL2_RST_I3C1, + .reset =3D 0x1, + },{ .name =3D "RST_I3C2", .addr =3D A_VERSAL2_RST_I3C2, + .reset =3D 0x1, + },{ .name =3D "RST_I3C3", .addr =3D A_VERSAL2_RST_I3C3, + .reset =3D 0x1, + },{ .name =3D "RST_I3C4", .addr =3D A_VERSAL2_RST_I3C4, + .reset =3D 0x1, + },{ .name =3D "RST_I3C5", .addr =3D A_VERSAL2_RST_I3C5, + .reset =3D 0x1, + },{ .name =3D "RST_I3C6", .addr =3D A_VERSAL2_RST_I3C6, + .reset =3D 0x1, + },{ .name =3D "RST_I3C7", .addr =3D A_VERSAL2_RST_I3C7, + .reset =3D 0x1, + },{ .name =3D "RST_DBG_LPX", .addr =3D A_VERSAL2_RST_DBG_LPX, + .reset =3D 0x3, + .rsvd =3D 0xfc, + },{ .name =3D "RST_GPIO", .addr =3D A_VERSAL2_RST_GPIO, + .reset =3D 0x1, + },{ .name =3D "RST_TTC", .addr =3D A_VERSAL2_RST_TTC, + .reset =3D 0xff, + },{ .name =3D "RST_TIMESTAMP", .addr =3D A_VERSAL2_RST_TIMESTAMP, + .reset =3D 0x1, + },{ .name =3D "RST_SWDT0", .addr =3D A_VERSAL2_RST_SWDT0, + .reset =3D 0x1, + },{ .name =3D "RST_SWDT1", .addr =3D A_VERSAL2_RST_SWDT1, + .reset =3D 0x1, + },{ .name =3D "RST_SWDT2", .addr =3D A_VERSAL2_RST_SWDT2, + .reset =3D 0x1, + },{ .name =3D "RST_SWDT3", .addr =3D A_VERSAL2_RST_SWDT3, + .reset =3D 0x1, + },{ .name =3D "RST_SWDT4", .addr =3D A_VERSAL2_RST_SWDT4, + .reset =3D 0x1, + },{ .name =3D "RST_IPI", .addr =3D A_VERSAL2_RST_IPI, + },{ .name =3D "RST_SYSMON", .addr =3D A_VERSAL2_RST_SYSMON, + },{ .name =3D "ASU_MB_RST_MODE", .addr =3D A_VERSAL2_ASU_MB_RST_MODE, + .reset =3D 0x1, + .rsvd =3D 0xf8, + },{ .name =3D "FPX_TOPSW_MUX_CTRL", .addr =3D A_VERSAL2_FPX_TOPSW_MUX= _CTRL, + .reset =3D 0x1, + },{ .name =3D "RST_FPX", .addr =3D A_VERSAL2_RST_FPX, + .reset =3D 0x3, + },{ .name =3D "RST_MMI", .addr =3D A_VERSAL2_RST_MMI, + .reset =3D 0x1, + },{ .name =3D "RST_OCM", .addr =3D A_VERSAL2_RST_OCM, + } +}; + static void versal_crl_reset_enter(Object *obj, ResetType type) { XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(obj); unsigned int i; =20 for (i =3D 0; i < ARRAY_SIZE(s->regs_info); ++i) { register_reset(&s->regs_info[i]); } } =20 +static void versal2_crl_reset_enter(Object *obj, ResetType type) +{ + XlnxVersal2CRL *s =3D XLNX_VERSAL2_CRL(obj); + size_t i; + + for (i =3D 0; i < VERSAL2_CRL_R_MAX; ++i) { + register_reset(&s->regs_info[i]); + } +} + static void versal_crl_reset_hold(Object *obj, ResetType type) { XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(obj); =20 crl_update_irq(s); @@ -386,10 +681,77 @@ static void versal_crl_init(Object *obj) qdev_prop_allow_set_link_before_realize, OBJ_PROP_LINK_STRONG); } } =20 +static void versal2_crl_init(Object *obj) +{ + XlnxVersal2CRL *s =3D XLNX_VERSAL2_CRL(obj); + XlnxVersalCRLBase *xvcb =3D XLNX_VERSAL_CRL_BASE(obj); + SysBusDevice *sbd =3D SYS_BUS_DEVICE(obj); + size_t i; + + xvcb->reg_array =3D register_init_block32(DEVICE(obj), versal2_crl_reg= s_info, + ARRAY_SIZE(versal2_crl_regs_in= fo), + s->regs_info, s->regs, + &crl_ops, + XLNX_VERSAL_CRL_ERR_DEBUG, + VERSAL2_CRL_R_MAX * 4); + xvcb->regs =3D s->regs; + + sysbus_init_mmio(sbd, &xvcb->reg_array->mem); + + for (i =3D 0; i < ARRAY_SIZE(s->cfg.rpu); ++i) { + object_property_add_link(obj, "rpu[*]", TYPE_ARM_CPU, + (Object **)&s->cfg.rpu[i], + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG); + } + + for (i =3D 0; i < ARRAY_SIZE(s->cfg.adma); ++i) { + object_property_add_link(obj, "adma[*]", TYPE_DEVICE, + (Object **)&s->cfg.adma[i], + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG); + } + + for (i =3D 0; i < ARRAY_SIZE(s->cfg.sdma); ++i) { + object_property_add_link(obj, "sdma[*]", TYPE_DEVICE, + (Object **)&s->cfg.sdma[i], + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG); + } + + for (i =3D 0; i < ARRAY_SIZE(s->cfg.uart); ++i) { + object_property_add_link(obj, "uart[*]", TYPE_DEVICE, + (Object **)&s->cfg.uart[i], + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG); + } + + for (i =3D 0; i < ARRAY_SIZE(s->cfg.gem); ++i) { + object_property_add_link(obj, "gem[*]", TYPE_DEVICE, + (Object **)&s->cfg.gem[i], + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG); + } + + for (i =3D 0; i < ARRAY_SIZE(s->cfg.usb); ++i) { + object_property_add_link(obj, "usb[*]", TYPE_DEVICE, + (Object **)&s->cfg.usb[i], + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG); + } + + for (i =3D 0; i < ARRAY_SIZE(s->cfg.can); ++i) { + object_property_add_link(obj, "can[*]", TYPE_DEVICE, + (Object **)&s->cfg.can[i], + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG); + } +} + static void crl_finalize(Object *obj) { XlnxVersalCRLBase *s =3D XLNX_VERSAL_CRL_BASE(obj); register_finalize_block(s->reg_array); } @@ -402,10 +764,20 @@ static const VMStateDescription vmstate_versal_crl = =3D { VMSTATE_UINT32_ARRAY(regs, XlnxVersalCRL, CRL_R_MAX), VMSTATE_END_OF_LIST(), } }; =20 +static const VMStateDescription vmstate_versal2_crl =3D { + .name =3D TYPE_XLNX_VERSAL2_CRL, + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (const VMStateField[]) { + VMSTATE_UINT32_ARRAY(regs, XlnxVersal2CRL, VERSAL2_CRL_R_MAX), + VMSTATE_END_OF_LIST(), + } +}; + static void versal_crl_class_init(ObjectClass *klass, const void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); XlnxVersalCRLBaseClass *xvcc =3D XLNX_VERSAL_CRL_BASE_CLASS(klass); ResettableClass *rc =3D RESETTABLE_CLASS(klass); @@ -414,10 +786,21 @@ static void versal_crl_class_init(ObjectClass *klass,= const void *data) rc->phases.enter =3D versal_crl_reset_enter; rc->phases.hold =3D versal_crl_reset_hold; xvcc->decode_periph_rst =3D versal_decode_periph_rst; } =20 +static void versal2_crl_class_init(ObjectClass *klass, const void *data) +{ + XlnxVersalCRLBaseClass *xvcc =3D XLNX_VERSAL_CRL_BASE_CLASS(klass); + DeviceClass *dc =3D DEVICE_CLASS(klass); + ResettableClass *rc =3D RESETTABLE_CLASS(klass); + + dc->vmsd =3D &vmstate_versal2_crl; + rc->phases.enter =3D versal2_crl_reset_enter; + xvcc->decode_periph_rst =3D versal2_decode_periph_rst; +} + static const TypeInfo crl_base_info =3D { .name =3D TYPE_XLNX_VERSAL_CRL_BASE, .parent =3D TYPE_SYS_BUS_DEVICE, .instance_size =3D sizeof(XlnxVersalCRLBase), .class_size =3D sizeof(XlnxVersalCRLBaseClass), @@ -431,12 +814,21 @@ static const TypeInfo versal_crl_info =3D { .instance_size =3D sizeof(XlnxVersalCRL), .instance_init =3D versal_crl_init, .class_init =3D versal_crl_class_init, }; =20 +static const TypeInfo versal2_crl_info =3D { + .name =3D TYPE_XLNX_VERSAL2_CRL, + .parent =3D TYPE_XLNX_VERSAL_CRL_BASE, + .instance_size =3D sizeof(XlnxVersal2CRL), + .instance_init =3D versal2_crl_init, + .class_init =3D versal2_crl_class_init, +}; + static void crl_register_types(void) { type_register_static(&crl_base_info); type_register_static(&versal_crl_info); + type_register_static(&versal2_crl_info); } =20 type_init(crl_register_types) --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757672314; cv=pass; d=zohomail.com; s=zohoarc; b=BfTl5TH4Mx1iTKmk2XSlLJm+rnfNzibzZsKgzNFtwBSi/uQMgz284SZB3MypoxQZuwcMwk2g6crTSA3oy8D/Q28x644eleevg/RCoMq00/WV7QwKwsPGOj3H6zpRB5Yu/RmsvC8WTCtR1zK24YbyGJubxyQok8+ONxsV/hgxlDk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757672314; 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=E7SGNdH8vHvR+Rf/xGFqc1DtTA23qavHN6QD1fw2rMg=; b=ZX5dMyRUOIUVHo/aKpNAm3BrL5Brc6V2/8svOZ5pXz1kIhHFN37pkgcg8YPM/9A6IbDfPDs+JKh+N2gyd9/2W8VRKebtqQxWyGic/nRVI+siIFp+4oS7x34jfURz15SNINeaeGg8lmc+dW5xPIQzcFOaNxT5oqhFMDW4E4NfTfA= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757672314097784.1740346209472; Fri, 12 Sep 2025 03:18:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0eq-0002qP-RV; Fri, 12 Sep 2025 06:05:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cz-0007RA-Ui; Fri, 12 Sep 2025 06:03:37 -0400 Received: from mail-dm6nam12on20618.outbound.protection.outlook.com ([2a01:111:f403:2417::618] helo=NAM12-DM6-obe.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 1ux0ci-0001OT-Bu; Fri, 12 Sep 2025 06:03:37 -0400 Received: from CH0P220CA0013.NAMP220.PROD.OUTLOOK.COM (2603:10b6:610:ef::9) by IA1PR12MB6163.namprd12.prod.outlook.com (2603:10b6:208:3e9::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:03:14 +0000 Received: from DS3PEPF000099E0.namprd04.prod.outlook.com (2603:10b6:610:ef:cafe::89) by CH0P220CA0013.outlook.office365.com (2603:10b6:610:ef::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.17 via Frontend Transport; Fri, 12 Sep 2025 10:03:14 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099E0.mail.protection.outlook.com (10.167.17.203) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:14 +0000 Received: from SATLEXMB05.amd.com (10.181.40.146) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:27 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB05.amd.com (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:02:27 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:25 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XbAWetEe1c5rS2YkckjBp01CaMEvsO7/1DjUeCKypyLTAb9UTeJCVh6sKo84ijHq53njzgV0uqFUnY9odea85XwwIqYwTQ7oT5EGInmnPfY6FK+qT7FSc87YMK4S48/ODvbiRkli9qeYxU1TcXxEbh/ymFzQlnQ8P3gZABwMImREX9UvkTPKUGhxIWwNrdkY3CiC2f3zlQy3GVE4/kmX4FL5/AVL6udMpbA90PBoXEuY9re7SOIg4NJEjSpkcdGb7xxawlcSPnc0GpiXuw+UPSY9ogiSMUfppXAU7PQLLB4FOZ++73rsiapsHpHZBbgpCuuSZGi5+/oG5WA/XJG8uA== 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=E7SGNdH8vHvR+Rf/xGFqc1DtTA23qavHN6QD1fw2rMg=; b=lRfGFhRrcOBDfszVuL4zTYWj60e1Dx0NuHOY8shQqIFjfFhMyNHEs9S25LL1pl7j3nmlXnNvDxI2eS/7NOJ5c+KwPVRUI99Cc029cRg8zsZgEsMFwqzM8CAmuRmFaomPzUL0qJezgJva6VVBK4qPTnXziZO/HV9JZX1S/H2CxogmqMSe5uw/YnvCFkodB4Ht32+LhhkwVEya661ihW9laFp6vSdu+PVDtWdB46se5BPXZlqF9+jS2CjauZvVf+qYJui/Lkn1D1oQ7jd+4PRyCSZHlrIlpg9jlnE0opJJ3BSuIK7OJD6LMhRWpHylcUqkhIPQ7N+uAqCaZVkadkXBHA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=E7SGNdH8vHvR+Rf/xGFqc1DtTA23qavHN6QD1fw2rMg=; b=PNsEIPsx7rhlF1VRzZyggWnZoISxQwJL9AE5cMuCw3NFNh4+mlPoOaIXrnCRiR4CGkA85yxdKDSy1KN0ehCO3p/2ZCQsxaQ07EUs2caUVWgt5xbzKW0SZazZTQ3k63C52BdsljKoVy+JkU1pHiNJcpH5fNmCzfXx/AjkVRJj8g4= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 37/47] hw/arm/xlnx-versal: add a per_cluster_gic switch to VersalCpuClusterMap Date: Fri, 12 Sep 2025 12:00:46 +0200 Message-ID: <20250912100059.103997-38-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: None (SATLEXMB05.amd.com: luc.michel@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099E0:EE_|IA1PR12MB6163:EE_ X-MS-Office365-Filtering-Correlation-Id: 80d3a025-3fe0-4f60-e01a-08ddf1e39694 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|36860700013|376014|82310400026; X-Microsoft-Antispam-Message-Info: =?utf-8?B?b1JMLzQyMzhwV1g5MDBEcE5rYXBWQU5JNzNBaVN1cmpOaXltSjcxMWRWRHda?= =?utf-8?B?ZzV6SmJiWWU1S0kzNG1QTjVhUm5BTzM1Yk5ydlhKVjJlZ2h5Q0xqY1JaT2sx?= =?utf-8?B?N3ZBNU5PWmRIeDJ6eFJPUFpMZkRmOWVkSWJYaDZ4WHNnNFh6eHdib3R6dVI5?= =?utf-8?B?VGdYMElFMDJPT2dDM2lTcDNmaUU5ODJWNTBBbVU1K1h3VENrTk00R0VIWSt0?= =?utf-8?B?bkxVZ2tpcHNGcXZuOHZLN1BPbXg4K1JkT0RoSkxMMjlsZjc2ZllVR0YwSWJE?= =?utf-8?B?eTRCd2J0VXJ3bm1NZlNmWk9KT2ZsOG52dGVFaEt5NEVTeDNiQm4zZHUzSWVV?= =?utf-8?B?R2xiYkwxNXBhT2h4eFBIYTNyeGJzUWE0THBYdit0ZkF3L0trWm5RcmxrK0xG?= =?utf-8?B?SUh2L3BRMXpGQUxYOXF0NlZLSjdLZWx6UXhaWnBVcUxpSjRleE5WZUlweWx6?= =?utf-8?B?VkFBcTY1QmJQN3NSMWlVdXQzanhRU2xWZXV0QS8vbXNVcVhTSk9jL0RFazBD?= =?utf-8?B?MGhDOVNLeG0vV2cwb2JtUEJncHJkQ29acW1rSnZobmVGTUpaM3VqSDVpWkps?= =?utf-8?B?RFI4ZnJZaDUwYWticlI4UktCMXYzalhtQW11a0VnTzcwOU1PWnpTaFRBN25m?= =?utf-8?B?SUFnc1Ftck5DSHZoVTArRkhPOS9sblJoU2xocUlNMThTNDFNKzFBeWQ1UGxF?= =?utf-8?B?RXZFbFVSVDRQWkZzNE9pQkRnQ3lsSUpmOU1OWDF0Q3J2U2NnV05MU2RqYlI5?= =?utf-8?B?WDRtUUVJd2xHWmc4MTh0T25WSEtNdS8rRi84NDU4bDU2eEtsVnpUeHZmbDZV?= =?utf-8?B?bEVobml0WXZoaFhGZFlIVVVzc3pwV1ZBRUJkYkZ5dnJWb3lXZGZ1Tm1MZENz?= =?utf-8?B?NXk1WitDSE1WeWZXcFRBNGRoc05mRkVXNWFHZjluVWtaWTZqSCtYc1ZQSll6?= =?utf-8?B?aU5teHdjWGJoc0hCcmc1bjdoTG91MmlyTEluWVJnOXZNbjhpUEdzVzIwTDFP?= =?utf-8?B?dk1ySTBRZGMyb0hMNTFIYlVSd3BmcTh5ck9TZkh4dlpIRi9tZ0lScHFoZEFU?= =?utf-8?B?cUhoalhtdjkrM2ppeTAydDZyeFZReTF1L1lhTWwrTmtNN3FrdHpINWlwSllU?= =?utf-8?B?ZVE2blZYSUgvdzRIbHFETGx4UkdMN1hBNWVEbndlNmZrZ2tDa3lOL1lqRjRu?= =?utf-8?B?djdGVnVDZCs0Y0JmVjR1Ry9HcElFTzdJcHVJSWN1Nnp3TmVrRXg2c2NHcjAz?= =?utf-8?B?L01aeWlTSnUyZmw4NHFTMWJLbFJ6YkRHY04xZWtKUWdiQTl1UFY2bGVJZ3dz?= =?utf-8?B?bnd4YVFXdVk2RUlZNHBHd2NXZ2JvMm0vMDd1ZURPY0taMVlHcWdsT1RsWGVV?= =?utf-8?B?ZFlObTVjSVl4S1EwamtSejN2THF3bDdNK0htbU5tWjJjMFFidG5QVFZTdGNq?= =?utf-8?B?ZllWcldNaUpiMjllQUo3a3NRK2ZBT3M5dXRqRlBZSEdmbmpBR0pCb1N4REpJ?= =?utf-8?B?OEdydzB5OGxWeTFNMEpHc2ltZ0ltWk51MnFPQTM2NU5rU1czdkUxanRFMEJS?= =?utf-8?B?QlVxVy95akdSdzZMVjVvMm1tZ2tTcFJLd2lhY2JQbUxxNGJtYVNFSHhsdk5p?= =?utf-8?B?czQ1RWFkWmZhd0d4MVp1VmJVdFJGZFVqRnhzbkN6VXBXdi9VTVVla1plQjJU?= =?utf-8?B?T1hYTFFZbHdSMGwzcXVzOXkrWFllY3dYQk56bE9iUVZGSXQwbW5xQU4wNzMz?= =?utf-8?B?aUNOV1E1SXRHUndTS21PdEFPWHNyUUFNZElDOFEraXdHRnQvRi9Vd0RudzRz?= =?utf-8?B?bFUxNVNaRi9jaXc4N2EyamY5dTQ2MlRMWG8yL0cxUFFwSjNMRlI5aDdyQXBU?= =?utf-8?B?MHk2a20vN3JuRG5zcm0wakhIVkl2bHI5SlM5dXlYRWZJMW5LbDdDTUhBY0Fy?= =?utf-8?B?VEJHRmhXZnpiSEVYYjB4ZEtPSzQ2a2xoL3dkWUFhZklUcEFTTTVlck5teXky?= =?utf-8?B?aDY3RHFHTVFiMmdGeDNKTDZZdmRJS3RYVE13aG0zNDlZZUtuWTZEYktGVUZH?= =?utf-8?Q?RkGEU7?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(1800799024)(36860700013)(376014)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:14.1882 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 80d3a025-3fe0-4f60-e01a-08ddf1e39694 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099E0.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB6163 Received-SPF: permerror client-ip=2a01:111:f403:2417::618; envelope-from=Luc.Michel@amd.com; helo=NAM12-DM6-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757672315251116600 Add the per_cluster_gic switch to the VersalCpuClusterMap structure. When set, this indicates that a GIC instance should by created per-cluster instead of globally for the whole RPU or APU. This is in preparation for versal2. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/arm/xlnx-versal.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 19ef169e11a..bf474bdf37d 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -86,10 +86,15 @@ enum StartPoweredOffMode { SPO_ALL, }; =20 typedef struct VersalCpuClusterMap { VersalGicMap gic; + /* + * true: one GIC per cluster. + * false: one GIC for all CPUs + */ + bool per_cluster_gic; =20 const char *name; const char *cpu_model; size_t num_core; size_t num_cluster; @@ -823,16 +828,22 @@ static void versal_create_cpu_cluster(Versal *s, cons= t VersalCpuClusterMap *map) DeviceState *cpu =3D versal_create_cpu(s, map, cluster, mr, i,= j); =20 cpus[i * map->num_core + j] =3D cpu; } =20 + if (map->per_cluster_gic) { + versal_create_and_connect_gic(s, map, mr, &cpus[i * map->num_c= ore], + map->num_core); + } } =20 qdev_realize_and_unref(cluster, NULL, &error_fatal); =20 - versal_create_and_connect_gic(s, map, mr, cpus, - map->num_cluster * map->num_core); + if (!map->per_cluster_gic) { + versal_create_and_connect_gic(s, map, mr, cpus, + map->num_cluster * map->num_core); + } =20 has_gtimer =3D arm_feature(&ARM_CPU(cpus[0])->env, ARM_FEATURE_GENERIC= _TIMER); if (map->dtb_expose && has_gtimer) { qemu_fdt_add_subnode(s->cfg.fdt, "/timer"); qemu_fdt_setprop_cells(s->cfg.fdt, "/timer", "interrupts", --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671591; cv=pass; d=zohomail.com; s=zohoarc; b=csJy+YmakET6Ha95fDFCoYQ393VE28Tyzc9eHl7ECfTdizO4zmkAzycQ1K0ndOs8BeLTy4xqoTFDPiMEKrNJYvuwGJcHzkQRG21aA9E8acIKCV+nFmWnGEIGXcyhMvgaP0lJeJB2SUQL+lO/ch3MHeH1EN0ENSrAfffNGwbrMFw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671591; 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=/jnUuYnGZsm3ArRPefWeeMNDQPdajweP+a3dfiA44Yc=; b=nqXovEOC7IuUqS/vLp/efWhjpuqrTYxhNGW1Kxy1H6Cq9AyPb8mN4w7ctXZkhMSN8mKZ8KRj+6o5SfhnsTzFLUBod8rsAKRWVnj0aQ78Wu0OZYE/hYbYVFZ3wlvV9/QF00J51p87FF0zAoZ3gIyU4WkJtlbSPt6pDqZZV9KMCT0= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671591272733.41038792402; Fri, 12 Sep 2025 03:06:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0eJ-0001Ja-GQ; Fri, 12 Sep 2025 06:05:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cz-0007R7-Ti; Fri, 12 Sep 2025 06:03:37 -0400 Received: from mail-bn1nam02on2062b.outbound.protection.outlook.com ([2a01:111:f403:2407::62b] helo=NAM02-BN1-obe.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 1ux0cg-0001Ne-76; Fri, 12 Sep 2025 06:03:36 -0400 Received: from DM6PR02CA0059.namprd02.prod.outlook.com (2603:10b6:5:177::36) by CH3PR12MB9283.namprd12.prod.outlook.com (2603:10b6:610:1cd::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.18; Fri, 12 Sep 2025 10:03:13 +0000 Received: from DS1PEPF0001709B.namprd05.prod.outlook.com (2603:10b6:5:177:cafe::c9) by DM6PR02CA0059.outlook.office365.com (2603:10b6:5:177::36) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.17 via Frontend Transport; Fri, 12 Sep 2025 10:03:13 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS1PEPF0001709B.mail.protection.outlook.com (10.167.18.105) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:12 +0000 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:29 -0700 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:27 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Azz3YrdKMCisoGv9q8VFpK1aRQ8xfOQ92cTygktjivdDcdD0H+jnwLQ2O3nqod6oNjiZBD9dYSDC3TN+I9TSnm7c62jTocjxSXuTepCzjMUMYllxKG9f1TIxWV6K1XSX52e/rWuAhcvEGSC8K1NR1yonYPEbbHX9PIvnA2n/f1l6UJwSdpBtFog7ENtAPBcSQKj34aPgeCOPp8V4+MX5sNUtvH6oxomcMIFOTK0WCERYj0iu5S0+kkh1WwVbDwMghHoAHlhZAuD0stdbkjQMahrFp+xbMxW45qeJpf5BvOHtDHsW9ZP03xgMsTAt14t2GGFjNSORz9K/6cGsUVW4qg== 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=/jnUuYnGZsm3ArRPefWeeMNDQPdajweP+a3dfiA44Yc=; b=nXrpPtedLE1lSNaIDaLFjex/cEi+UCf17kGtPFnsCLVFwMBW6SJ6GKKjymGvl687dLNMKOsiS6OZ6tatqSdXZ5Frttnl6xGC3hJNHxA6UL5jlypw4EC1+FKUyKrunl2Cq1oPuzpJoMmc+nz3do+qvXl6iXLLWfjt1aSNJqh6O6JePC58dA4UCFEGRBqboNsU9uWhksCbZrwkxJateYDpLgcuKzEPpOUzFOt75SJntMQve9lIshYVIpmjPB+XVeJGSS/dKO017PchZv066bAFkeHFsY02RNo+DscL1TLxAUFsu07ykmU/CALGgqMt/jRKxZXAPbCoONXm5hBJe4UYbA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/jnUuYnGZsm3ArRPefWeeMNDQPdajweP+a3dfiA44Yc=; b=O95fKyIYm8jYQdb1T386RY0VhIcR9+toNqwwAUCosIYAqDPDZDXyWI5aZRzU2NJpm2O0aklknZGp4dUfw1LuFzHtx1e2zdTCliv08WyIFfdzcFKEtm3IeuDeJ64bsmZYPjh9gLqRssllImMwPeQ3JNcqX40krw8/H8Xxwua7JXQ= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 38/47] hw/arm/xlnx-versal: add the target field in IRQ descriptor Date: Fri, 12 Sep 2025 12:00:47 +0200 Message-ID: <20250912100059.103997-39-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0001709B:EE_|CH3PR12MB9283:EE_ X-MS-Office365-Filtering-Correlation-Id: 3cea645c-3214-4bb4-729a-08ddf1e395d9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|36860700013|1800799024|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?F6RlRrpqqVOH8X9flIor02s9lGm/UCZSAzpB0n4ToYy62TD59YU6miLOw/Pz?= =?us-ascii?Q?EYpunyLfK7JBGzGX1QSP9MBTHmtlRE8w6SYtNJPjk+NMD9p/+7izeA2vAwCm?= =?us-ascii?Q?KPCZEs2dRFMVBE0dfUdxNveWSLNxtuFquzlq5biJtLnV/GAZCIW6mlfBTyfG?= =?us-ascii?Q?UtWYISfsZeGPBCOP8lE2TlIlO9LO0DVeCWiWjpz6w+T3vs0gCkZ/z67UCrTJ?= =?us-ascii?Q?thkP3yRnEJDdOD2u19OubP/wvLJxVhRNb5EHJuDTPiREY4oX2ICACLWNY7iV?= =?us-ascii?Q?+eyGpS/o+Em2P+jZElt74QXJfapi8H4t8EKT3EMbtWNmF5o0bJunimSyZLSE?= =?us-ascii?Q?AUzIHyQYCa3KEzzObt+4u6hPhfzQXaJvqcsekUKGx0yO4UnCiQfslaigWjaX?= =?us-ascii?Q?cuOhzgNpvPrjoTeaC6wcgOV42rDmCBN8b6P+hxe4lRj9VFQ/VIr+kPxX3yiX?= =?us-ascii?Q?X6vP4XcgjORsZ/YPLK3tL0Lq+HfXe/QQYRxgMDSNPwGibyMZ+ZAafpPr6RRN?= =?us-ascii?Q?cAGpOBlO2Z0ZEGrMScFGymq1Knxcxq0Rt0v6Dk2yHB+y1hfaCYFYUvlg32TO?= =?us-ascii?Q?47SU+kfcLqVdqiAuA+dnE6urylOgb//ddxExM7gWYP4awtoa1jA0NdcuTNZ5?= =?us-ascii?Q?HWqTr7avLsr6Zo6hF1ED8ELbSskja+bxPGQHN8a5zAHOqyF3yT9RH061BT/a?= =?us-ascii?Q?iLCaNO+pRA986wvu9Y1uztWfCeQHThjAi2dp8BfEwv324+yAzxwBvcNPqd5E?= =?us-ascii?Q?/jhQO6K5ysgJMLJeBBY+FuJah8g6kXJRsoq7xaF3aLIvFOK6uvndZPvKrHrw?= =?us-ascii?Q?r2QeS/453MXdPvomZr0g80nW1rHU/QFoHsd/rpukt37kIuxjMcMK3ykJH7wC?= =?us-ascii?Q?UD4A7Uar5A0QN4uwK6sDnKZwhK0pFYgFph58CVuW6H/Kq/zh9pcNwiSbNVEP?= =?us-ascii?Q?CdDxowgCStPSzsDmC2kSx3mdasT9vGEekt/ZmuUVOGHNi9D7Y/kvQX57j3ND?= =?us-ascii?Q?Yt7UaQScQot7iiLdxcOmOZHEV6fncNg3PZ8wXVUA4QaO80TesxS6K3NlY9HG?= =?us-ascii?Q?e+rnisXKf7NT3l0ktzLzt47oL51wPxwc5d8CjMVNlX24ubUiHe/YkEpPkTFj?= =?us-ascii?Q?LrCaoPZd7PYDJIGrxEUuo8bEr+oFfqOmdWyqpF23ryLcQeCflDm1ocDf6OQV?= =?us-ascii?Q?WNAs5yCTvIWqokVRa//qxnPOSkUIIrqAV+9trTXCdlOMgiRo8H1hWQl2yD6X?= =?us-ascii?Q?I7OjN+jpIZzdn9g/GieJcZgVC5dWnpP5LF/gmqrx1pl1u0yZsGGFzHpIZBty?= =?us-ascii?Q?RH1y10tV7dlE1JTzn94mqxYV32e7iWbY7dIENu7F3yrqMU9RBLbcEG/DQPGm?= =?us-ascii?Q?QDh5TzO+piTRX3UFO4QG1Fhe7XnCLiTQEL8nU/sk9WQLp/mnKhWZKb4+lE6A?= =?us-ascii?Q?2JlJOx9re2iA9KS71AW/RGYeqfvPv1bNbmtXzPjl+P1UKq0NpuYDx7qOkcUt?= =?us-ascii?Q?37LDShXnHtF+K4jgA+NUrQYQFZgl2i/cRAmh?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(36860700013)(1800799024)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:12.9592 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3cea645c-3214-4bb4-729a-08ddf1e395d9 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0001709B.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9283 Received-SPF: permerror client-ip=2a01:111:f403:2407::62b; envelope-from=Luc.Michel@amd.com; helo=NAM02-BN1-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671593504116600 Content-Type: text/plain; charset="utf-8" Add the target field in the IRQ descriptor. This allows to target an IRQ to another IRQ controller than the GIC(s). Other supported targets are the PMC PPU1 CPU interrupt controller and the EAM (Error management) device. Those two devices are currently not implemented so IRQs targeting those will be left unconnected. This is in preparation for versal2. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- hw/arm/xlnx-versal.c | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index bf474bdf37d..d92d8117498 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -50,18 +50,30 @@ #include "hw/cpu/cluster.h" #include "hw/arm/bsa.h" =20 /* * IRQ descriptor to catch the following cases: + * - An IRQ can either connect to the GICs, to the PPU1 intc, or the the= EAM * - Multiple devices can connect to the same IRQ. They are OR'ed togeth= er. */ FIELD(VERSAL_IRQ, IRQ, 0, 16) +FIELD(VERSAL_IRQ, TARGET, 16, 2) FIELD(VERSAL_IRQ, ORED, 18, 1) FIELD(VERSAL_IRQ, OR_IDX, 19, 4) /* input index on the IRQ OR gate */ =20 +typedef enum VersalIrqTarget { + IRQ_TARGET_GIC, + IRQ_TARGET_PPU1, + IRQ_TARGET_EAM, +} VersalIrqTarget; + +#define PPU1_IRQ(irq) ((IRQ_TARGET_PPU1 << R_VERSAL_IRQ_TARGET_SHIFT) | (i= rq)) +#define EAM_IRQ(irq) ((IRQ_TARGET_EAM << R_VERSAL_IRQ_TARGET_SHIFT) | (irq= )) #define OR_IRQ(irq, or_idx) \ (R_VERSAL_IRQ_ORED_MASK | ((or_idx) << R_VERSAL_IRQ_OR_IDX_SHIFT) | (i= rq)) +#define PPU1_OR_IRQ(irq, or_idx) \ + ((IRQ_TARGET_PPU1 << R_VERSAL_IRQ_TARGET_SHIFT) | OR_IRQ(irq, or_idx)) =20 typedef struct VersalSimplePeriphMap { uint64_t addr; int irq; } VersalSimplePeriphMap; @@ -412,19 +424,27 @@ static qemu_irq versal_get_gic_irq(Versal *s, int irq= _idx) * Or gates are placed under the /soc/irq-or-gates QOM container. */ static qemu_irq versal_get_irq_or_gate_in(Versal *s, int irq_idx, qemu_irq target_irq) { + static const char *TARGET_STR[] =3D { + [IRQ_TARGET_GIC] =3D "gic", + [IRQ_TARGET_PPU1] =3D "ppu1", + [IRQ_TARGET_EAM] =3D "eam", + }; + + VersalIrqTarget target; Object *container =3D versal_get_child(s, "irq-or-gates"); DeviceState *dev; g_autofree char *name; int idx, or_idx; =20 idx =3D FIELD_EX32(irq_idx, VERSAL_IRQ, IRQ); or_idx =3D FIELD_EX32(irq_idx, VERSAL_IRQ, OR_IDX); + target =3D FIELD_EX32(irq_idx, VERSAL_IRQ, TARGET); =20 - name =3D g_strdup_printf("irq[%d]", idx); + name =3D g_strdup_printf("%s-irq[%d]", TARGET_STR[target], idx); dev =3D DEVICE(object_resolve_path_at(container, name)); =20 if (dev =3D=3D NULL) { dev =3D qdev_new(TYPE_OR_IRQ); object_property_add_child(container, name, OBJECT(dev)); @@ -436,16 +456,33 @@ static qemu_irq versal_get_irq_or_gate_in(Versal *s, = int irq_idx, return qdev_get_gpio_in(dev, or_idx); } =20 static qemu_irq versal_get_irq(Versal *s, int irq_idx) { + VersalIrqTarget target; qemu_irq irq; bool ored; =20 + target =3D FIELD_EX32(irq_idx, VERSAL_IRQ, TARGET); ored =3D FIELD_EX32(irq_idx, VERSAL_IRQ, ORED); =20 - irq =3D versal_get_gic_irq(s, irq_idx); + switch (target) { + case IRQ_TARGET_EAM: + /* EAM not implemented */ + return NULL; + + case IRQ_TARGET_PPU1: + /* PPU1 CPU not implemented */ + return NULL; + + case IRQ_TARGET_GIC: + irq =3D versal_get_gic_irq(s, irq_idx); + break; + + default: + g_assert_not_reached(); + } =20 if (ored) { irq =3D versal_get_irq_or_gate_in(s, irq_idx, irq); } =20 --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671905; cv=pass; d=zohomail.com; s=zohoarc; b=WN6EacMBFywmnlgFlAPurqFYA/W/O0I7nTlfGqdCLVwsCMrC/ktLO3bbEjhPnFxkCsqcHGptwPkhKEdRvXg7rL+UL3Mvi9kDOFpo3RBpcm25n85tMmkHEXjiEWnWE08Uq8YlNIC5aWR/hsDl+Yonut04ekRHtF4DBa1+znQiKEw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671905; 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=cHkshJdCJjxqNbcRe5gxxtRRz2fbQXsiswImNqOPJCY=; b=SGMHYvnydp0VBkiB2NeXNt7GOg2WhcBYmiU8AD+r9136At5Fq5IT2zhXxFUEsoAR/gKuW/ox94JTl/ilnsx7XRYJhJetSVNG+M8IXODCiAdgY5ukoq3XlJrTJMAvKRlLiZjecZROavqC8weIkTSXGgx+qHlpi+DjR7yrz+SXFNQ= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671905270801.0096251882286; Fri, 12 Sep 2025 03:11:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0ej-0002DH-5W; Fri, 12 Sep 2025 06:05:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0cz-0007Qm-NG; Fri, 12 Sep 2025 06:03:37 -0400 Received: from mail-mw2nam10on20624.outbound.protection.outlook.com ([2a01:111:f403:2412::624] helo=NAM10-MW2-obe.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 1ux0cj-0001O2-GM; Fri, 12 Sep 2025 06:03:36 -0400 Received: from CH5PR02CA0007.namprd02.prod.outlook.com (2603:10b6:610:1ed::29) by IA0PR12MB8838.namprd12.prod.outlook.com (2603:10b6:208:483::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:03:15 +0000 Received: from DS3PEPF000099D7.namprd04.prod.outlook.com (2603:10b6:610:1ed:cafe::25) by CH5PR02CA0007.outlook.office365.com (2603:10b6:610:1ed::29) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.17 via Frontend Transport; Fri, 12 Sep 2025 10:03:15 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS3PEPF000099D7.mail.protection.outlook.com (10.167.17.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:14 +0000 Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:31 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:02:30 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:29 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZngXcdoXMXbzf6+v96CaapKPRafizkc8N19CAAtVII2/JLo5z9GoP32X/ucPXXSRd4bx3DBu2liXXvaPJwt8D5Kd8bKeUjnD8Q4gMF/TpQoL6vgvEx5lYl3dCVMUcaWdK21WBpHYtNmI51r/mcggHfykn0gfoVxa36gK8HR8KFFE6TY88VS9Mk+vQ0sbOxgpIjkjtfeUDtJQyCgp3/4CYttjLdE+e0cmxijlpUPj+CTGc5madiREapQPdCClSiPG+TSVifX1Riw96mGxjR/LmVICMCgDcWE+SB+sBiwGws3xnksAYQzZPPe51B+RGk4gG4ZXtxwdKbz45NHg39JItw== 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=cHkshJdCJjxqNbcRe5gxxtRRz2fbQXsiswImNqOPJCY=; b=fsAYrNh2vk7/FHg9g49MAit/RZhvhR/HNWyv4Ing3IjnJDhTuhADw2Lj7kTfCsS6mn4P3ZBall+qOVpH5dE5ZKs5qESaGJJLe0tUUxq6dIdl20ePGFzVwREt1FW6Y4qMj2ZKYq4kyz+sTTXILD1TcP71p89QWfMjosopV8YstvYDEXYXwiFTZLk8+RM9JEiEFQ1rF85gEhAYIBG3668IJisEfE8IbW1vvNb6F3l5RHNslKo0Q2kThSkU2IPIvv7s7g1g+a2kjVHimvK7ugb0mN7IOx2sDqxP6G/Zc6Q68NQ089kpI00r3irgUFBMfgpEFB4porrsjPTAq8f2tCMC1g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cHkshJdCJjxqNbcRe5gxxtRRz2fbQXsiswImNqOPJCY=; b=kZWKvGnZRb7HOub+ms46CZnpd6/BS2buMGgEYSso9wnXELotH3JuINdcXMAiM30lZA+MLU7XKPkeHnwQuPhql+E3OTMkGDOkObnoHR6WNrqgq/uZ/aMsvXzYOKsbSrqZaaMSlsS51HjTK5FVZdBxE4vVCpEgiyveOiSMvLIdr4Y= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 39/47] target/arm/tcg/cpu64: add the cortex-a78ae CPU Date: Fri, 12 Sep 2025 12:00:48 +0200 Message-ID: <20250912100059.103997-40-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: None (SATLEXMB04.amd.com: luc.michel@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099D7:EE_|IA0PR12MB8838:EE_ X-MS-Office365-Filtering-Correlation-Id: 9a6a7b4c-54a4-4f57-8e3b-08ddf1e396ed X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|36860700013|376014|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?y/yoYI/TVmyR02c42ZoiaAABLQF12ogB6uC75oE7/hK9ZbIbl2DkBld9xVPF?= =?us-ascii?Q?or/4Quy/qECKn0fg8s9ELsHC0p9wzPKqRws8Jly98/GGP5yJpFfk0thwgI+u?= =?us-ascii?Q?6RwCjRjmMryBn0JVoGQJrCV6iq2JagIdOHGNZmYNcyFDFRPU15JWf/sYZEoh?= =?us-ascii?Q?YAJXV9yImwWb+R8xeN4R8DsxbQwHOQeNPkqIXXZL9xtzOBkJ6md3FtlDd+Ks?= =?us-ascii?Q?LZIV17us1gfV1rzKZskJPC0kAfCmybHUvnGCSjrCWaK2jLIv2B/ztGJY/Lt1?= =?us-ascii?Q?RabLDA/XKDNOoWEyt4AZeWg5VAyhN4iSBvf248Fsg4KmgO65UJfkJ+aICfLP?= =?us-ascii?Q?Jh+5GQCnzvzxUyqwoAV6iOVKqPV3wh4V3acFmdUioMZKND5QmrJETfkeXhhg?= =?us-ascii?Q?6M4A4/4pdGEYyy2Y8umE4KULy1ruVl846MIG7bPa9yS73nPogls1O4zunq7N?= =?us-ascii?Q?QrjgeaHDXPRdluGaYw+/ByHGuf3xkhrpHg96E0WnMbosfHTPjrKVgkIPEshK?= =?us-ascii?Q?+I6HoQXEtgHrupVnwz6UnkcQMRZllmXd47f2HI3A/tsAFhovZ0PMkD7hQWDU?= =?us-ascii?Q?lovTyYkYGOFuAvVwDBbG0yB+/aEr9W2DLLR86QZC1zxhimb/juHsGwaFbPWI?= =?us-ascii?Q?RwrAZAiRx1CWv/mGBtPVhAP0a9VVXVjJVTccPtY3tj5SkJ3lSfw2KsUTb2Yg?= =?us-ascii?Q?cYtdryklpt1jRlDnUVZ0pBICUXqLM/YnnVczsO3iahscqhDO1sc46e/MiG91?= =?us-ascii?Q?gsaC3UHUCE/4cnH7iS4bvCjF4gqaRFDAr50csDZIm1e4Y/vh7shtHueNzP5q?= =?us-ascii?Q?/aAw5yXvlAvdsO28e5IL0qFRHWSDxfDpg0tdhlRreUkAJuM01ao6olQ1R7pt?= =?us-ascii?Q?UbzvbgZ6cRuBcfTFVsHk3qntsedodylxNIG5GIRzgoFaFm6LJmEvlOcLFvff?= =?us-ascii?Q?14Kf1s1cgTnJv/RKSf/IOstTbYnDMcXyX1TuWig7vuWVzjTjPlThCi12lTlb?= =?us-ascii?Q?1OnVUiFWCe5CsluV/qvNW+xz4HmNizW+MSVyBRD9hQOwrucsSoYj9MTgPW2x?= =?us-ascii?Q?04kiil2hBkqdXS4MDZbKi4/wTS0/aBl6HZy6JugmlfwiY6WN8u/xjLJ2pcnF?= =?us-ascii?Q?+Ma2NAZ7EH8CsZJYJzonpYczCUiO1YFLsmBZtIbbR8d+TYyQyJYlIAp3qhV2?= =?us-ascii?Q?RvMnO9rkhYQ5XF9Su5vjJZpjFpf7CT4xboMFlxCv/c1mSGMc1sD+IFm9+9Nh?= =?us-ascii?Q?iYBDmwpwnk+1wmb3P2FSJbUKYklkXELANBuBR/kmaoysKVFkCCRzrcSo+OVn?= =?us-ascii?Q?LvYT6I3S8KbPn0ccFGgv9wfWCG09Mzt/iq+6C8gnM2k+LsjjaF6VbQ0AVnhe?= =?us-ascii?Q?YK7p3GtVgSFNGlZQ5wyJHG45ka6Hc48B/bJWi73Zprh+fbykLZZqwtCZkUUk?= =?us-ascii?Q?hpmZ8gvr5XwJA/v7M7U9u5FpTvm2YCNFFVnObMYMeF8PZPCz1u52My+m7NtQ?= =?us-ascii?Q?lydjN//s3OWEOXHCBDZosFFHNrGZsS9pcyGp?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(1800799024)(36860700013)(376014)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:14.7691 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9a6a7b4c-54a4-4f57-8e3b-08ddf1e396ed X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099D7.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB8838 Received-SPF: permerror client-ip=2a01:111:f403:2412::624; envelope-from=Luc.Michel@amd.com; helo=NAM10-MW2-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671905720116600 Content-Type: text/plain; charset="utf-8" Add support for the ARM Cortex-A78AE CPU. Signed-off-by: Luc Michel Reviewed-by: Peter Maydell --- target/arm/tcg/cpu64.c | 78 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index b8b1981e702..81b95923b4b 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -404,10 +404,83 @@ static void aarch64_a76_initfn(Object *obj) =20 /* From D5.1 AArch64 PMU register summary */ cpu->isar.reset_pmcr_el0 =3D 0x410b3000; } =20 +static void aarch64_a78ae_initfn(Object *obj) +{ + ARMCPU *cpu =3D ARM_CPU(obj); + ARMISARegisters *isar =3D &cpu->isar; + + cpu->dtb_compatible =3D "arm,cortex-a78ae"; + set_feature(&cpu->env, ARM_FEATURE_V8); + set_feature(&cpu->env, ARM_FEATURE_NEON); + set_feature(&cpu->env, ARM_FEATURE_GENERIC_TIMER); + set_feature(&cpu->env, ARM_FEATURE_AARCH64); + set_feature(&cpu->env, ARM_FEATURE_EL2); + set_feature(&cpu->env, ARM_FEATURE_EL3); + set_feature(&cpu->env, ARM_FEATURE_PMU); + + /* Ordered by 3.2.4 AArch64 registers by functional group */ + SET_IDREG(isar, CLIDR, 0x82000023); + cpu->ctr =3D 0x9444c004; + cpu->dcz_blocksize =3D 4; + SET_IDREG(isar, ID_AA64DFR0, 0x0000000110305408ull); + SET_IDREG(isar, ID_AA64ISAR0, 0x0010100010211120ull); + SET_IDREG(isar, ID_AA64ISAR1, 0x0000000001200031ull); + SET_IDREG(isar, ID_AA64MMFR0, 0x0000000000101125ull); + SET_IDREG(isar, ID_AA64MMFR1, 0x0000000010212122ull); + SET_IDREG(isar, ID_AA64MMFR2, 0x0000000100001011ull); + SET_IDREG(isar, ID_AA64PFR0, 0x1100000010111112ull); /* GIC filled in = later */ + SET_IDREG(isar, ID_AA64PFR1, 0x0000000000000010ull); + SET_IDREG(isar, ID_AFR0, 0x00000000); + SET_IDREG(isar, ID_DFR0, 0x04010088); + SET_IDREG(isar, ID_ISAR0, 0x02101110); + SET_IDREG(isar, ID_ISAR1, 0x13112111); + SET_IDREG(isar, ID_ISAR2, 0x21232042); + SET_IDREG(isar, ID_ISAR3, 0x01112131); + SET_IDREG(isar, ID_ISAR4, 0x00010142); + SET_IDREG(isar, ID_ISAR5, 0x01011121); + SET_IDREG(isar, ID_ISAR6, 0x00000010); + SET_IDREG(isar, ID_MMFR0, 0x10201105); + SET_IDREG(isar, ID_MMFR1, 0x40000000); + SET_IDREG(isar, ID_MMFR2, 0x01260000); + SET_IDREG(isar, ID_MMFR3, 0x02122211); + SET_IDREG(isar, ID_MMFR4, 0x00021110); + SET_IDREG(isar, ID_PFR0, 0x10010131); + SET_IDREG(isar, ID_PFR1, 0x00010000); /* GIC filled in later */ + SET_IDREG(isar, ID_PFR2, 0x00000011); + cpu->midr =3D 0x410fd423; /* r0p3 */ + cpu->revidr =3D 0; + + /* From 3.2.33 CCSIDR_EL1 */ + /* 64KB L1 dcache */ + cpu->ccsidr[0] =3D make_ccsidr(CCSIDR_FORMAT_LEGACY, 4, 64, 64 * KiB, = 7); + /* 64KB L1 icache */ + cpu->ccsidr[1] =3D make_ccsidr(CCSIDR_FORMAT_LEGACY, 4, 64, 64 * KiB, = 2); + /* 512KB L2 cache */ + cpu->ccsidr[2] =3D make_ccsidr(CCSIDR_FORMAT_LEGACY, 8, 64, 512 * KiB,= 7); + + /* From 3.2.118 SCTLR_EL3 */ + cpu->reset_sctlr =3D 0x30c50838; + + /* From 3.4.23 ICH_VTR_EL2 */ + cpu->gic_num_lrs =3D 4; + cpu->gic_vpribits =3D 5; + cpu->gic_vprebits =3D 5; + /* From 3.4.8 ICC_CTLR_EL3 */ + cpu->gic_pribits =3D 5; + + /* From 3.5.1 AdvSIMD AArch64 register summary */ + cpu->isar.mvfr0 =3D 0x10110222; + cpu->isar.mvfr1 =3D 0x13211111; + cpu->isar.mvfr2 =3D 0x00000043; + + /* From 5.5.1 AArch64 PMU register summary */ + cpu->isar.reset_pmcr_el0 =3D 0x41223000; +} + static void aarch64_a64fx_initfn(Object *obj) { ARMCPU *cpu =3D ARM_CPU(obj); ARMISARegisters *isar =3D &cpu->isar; =20 @@ -1318,10 +1391,15 @@ void aarch64_max_tcg_initfn(Object *obj) static const ARMCPUInfo aarch64_cpus[] =3D { { .name =3D "cortex-a35", .initfn =3D aarch64_a35_initfn }, { .name =3D "cortex-a55", .initfn =3D aarch64_a55_initfn }, { .name =3D "cortex-a72", .initfn =3D aarch64_a72_initfn }, { .name =3D "cortex-a76", .initfn =3D aarch64_a76_initfn }, + /* + * The Cortex-A78AE differs slightly from the plain Cortex-A78. We don= 't + * currently model the latter. + */ + { .name =3D "cortex-a78ae", .initfn =3D aarch64_a78ae_initfn }, { .name =3D "cortex-a710", .initfn =3D aarch64_a710_initfn }, { .name =3D "a64fx", .initfn =3D aarch64_a64fx_initfn }, { .name =3D "neoverse-n1", .initfn =3D aarch64_neoverse_n1_init= fn }, { .name =3D "neoverse-v1", .initfn =3D aarch64_neoverse_v1_init= fn }, { .name =3D "neoverse-n2", .initfn =3D aarch64_neoverse_n2_init= fn }, --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671712; cv=pass; d=zohomail.com; s=zohoarc; b=BAhP58d3BHSBcIBJZAuI60Fm3GIBr0BOH6r2hK8n++iy69cpp9UTFTnmB6oFEndKriAGyVW/UVRWLG5C2tX+LENb9sAX3o79ECHJLuSYZ3R7y824FaJNPosGQ9jjso228bI0yIt4nhFO/CFJ0azXk8cFVrz7zSAG3jyDLr6BqT0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671712; 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=Ghty1zXGI5EOZT+vpZ0NGOQxSDbMW7ScFFJoTVx5hGY=; b=NgJWy10WAPBR3B54aFThDzf1lea1UIkYo88baFXuarg4+X0Bs4y1V0bdvyBigOWT20BI7qhSjqmZFCcc/xk0y8yp4GPtGivi55/i4OTYZVj6eMefgJJE77b39ihRfhMrXptKQ74GiAbqQSYQaR4bbILeAm/ordudtziX45aOtbo= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671712115789.4877523706559; Fri, 12 Sep 2025 03:08:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0es-0002qz-Cr; Fri, 12 Sep 2025 06:05:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0dB-0007jN-NU; Fri, 12 Sep 2025 06:03:58 -0400 Received: from mail-bn8nam11on20617.outbound.protection.outlook.com ([2a01:111:f403:2414::617] helo=NAM11-BN8-obe.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 1ux0cq-0001Pa-FB; Fri, 12 Sep 2025 06:03:43 -0400 Received: from CH5PR02CA0010.namprd02.prod.outlook.com (2603:10b6:610:1ed::22) by DM4PR12MB7552.namprd12.prod.outlook.com (2603:10b6:8:10c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:03:16 +0000 Received: from DS3PEPF000099D7.namprd04.prod.outlook.com (2603:10b6:610:1ed:cafe::19) by CH5PR02CA0010.outlook.office365.com (2603:10b6:610:1ed::22) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.17 via Frontend Transport; Fri, 12 Sep 2025 10:03:16 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS3PEPF000099D7.mail.protection.outlook.com (10.167.17.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:16 +0000 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:32 -0700 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:31 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=deDNGWj3qRCcWqUyglVA0lJdeLXdU+GKIfn3sg3xBwXDPVLodc8mFPROJ96hBrqM2sJHlxJGOtDkfvU/wBkMxhl275BlUYjbTwbLEe+KCHGDamLPZvA/VfW3iA/4AcsIa0orDRPALbhtx+JkdqmHCJFp9EwwKId6YtmrrnmqT9AvzYcZvzVGdOXtVfEZX5HEY0/WbqxV8T8Ciqxtxt9BDYSE35nKRWfFst4aOVN8nwD/nFJiC9Sd1nmzCxkCad0MMbtGqLQw06JowaJTFgkPlSISMx00m/G75iSQfZkADs4woyAT6YtpC9AiBNG9Ll/uTOghBaqqLvIoZom1frT2jA== 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=Ghty1zXGI5EOZT+vpZ0NGOQxSDbMW7ScFFJoTVx5hGY=; b=WbUYRpoiTG3TbXIKMUgqPwpYj02uGZtcnhnjZufIV337LZwClPRr0BS2V65TjTA5TlQiWYSfEUG6WSTlGYze2qHk65RDTU1Z9JCWu1JR+rVAdw7QCmNwgtB2zzOQYHmxBIAxOH0PCcRprtTCro7AOO9UUQFXRJFOSsZMeDhNbWWvzY7G9M7fcLf6jWxSzni3Il8TbyAqs+Jea9d5jQIcO5zozDGi1VgpVckp9uOjp/IdcJcPpu4kfgW+pTBi3xgO3bpDLAh5+ui6IwR+BbPwN3DpnwU1Yn/I0doS1ZyAiEjuZIOP+aITkboapLt6DmJPWh2QwpAyyAAZaPnMCdrXKg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ghty1zXGI5EOZT+vpZ0NGOQxSDbMW7ScFFJoTVx5hGY=; b=n5vZ5x9kn9vC4BX/M+2/NhEShfz9uV8vDp69JcJZe5lsyD1GB5DQTFLfWygiKPX6HixD0Ohg0CPy7JJs6LrRRae893HJkUih7bQWbvj0pE6uhe9Y4TkBG1sR/dL94ix8iayyO/ZnBVxJz1OhIz/goVX2wDQsWVL8NYr+QcmDgcY= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 40/47] hw/arm/xlnx-versal: add versal2 SoC Date: Fri, 12 Sep 2025 12:00:49 +0200 Message-ID: <20250912100059.103997-41-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099D7:EE_|DM4PR12MB7552:EE_ X-MS-Office365-Filtering-Correlation-Id: c92bf071-3ebb-4e80-b4e0-08ddf1e397cd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|36860700013|376014|82310400026; X-Microsoft-Antispam-Message-Info: =?utf-8?B?bURtdUk0bWdlclFiT1lHaUdMQTYyTXhaZktZMGxtQ1NERkp2QWVyeXJqMVk1?= =?utf-8?B?ZGoyZFRDb3czaVZqL3NMR0V3OGRvSEoxR0JHUUEwbmdwOVN0WUJ6anh6aU9l?= =?utf-8?B?dWZhc0lhYXBrRUtGUk5MMmVqaXQ4eC9mUWh6MFVScEEvQTNCaXdSYnlWR05Z?= =?utf-8?B?TzdUdDlSc1drWTErZG1VRWF6MTIwQTBKUmVhWmhHbFlBaEVkTHNkaHVXNmpa?= =?utf-8?B?ekpJT1lXSHVZNlNha2FQYzdRTExyN3VRd1E3enNLVkhCaHE4MXYrdzVqMjdu?= =?utf-8?B?a1RsQk4rMkxseDgvSS8zcDdBT3kweHRQVldtZmZRelAyTDFkNlRGSzdlb3Ew?= =?utf-8?B?ZUlxeHVWOTA5QlJYRjNrL1JyNy9tNDJXSTk0cFNDQ21qSCtaMUlEYWloVFVt?= =?utf-8?B?UVJscEJ1OUkra0QzQ2tiaWo2VGdGV0ZLanp0MmM5ZFBjQXNFVTNodEg3TjZv?= =?utf-8?B?ejRoWlZMQm5rU1ZueHJGRU1CV09LNmswUjBCQXZTNmc5RVV6WlJSb3F3dmJN?= =?utf-8?B?UXRVRk00NW9TNTN1NHpOVHpReHhBaDdoZFVwRHNhQk1oNFFTZm15WjNWVlpU?= =?utf-8?B?K280WXNaTVN1RjlmS3pvUmdsckNHTS9nVkR2ampJM2ZlS2JxV08xcnFmNjlj?= =?utf-8?B?NkdTcU00Nkl5c0Z3c1RnekFGdWFXRkZiZExyelBLdjl0WXoyWDdHV2tnYUJl?= =?utf-8?B?eDFhWDV4U0pKUXdiY3MwRUFGMlBGU1BodTJ0QiszNjErdDlkOUZ6a3BjcWFC?= =?utf-8?B?QzAzSGpsa05sUnJ5QWxHcU9ZOGNkSUczWFlyTmFuUTNEaWZOS2J2UWhhUkRL?= =?utf-8?B?SEJONk9UU1l2R0RpSEpDRlVkNzRXQm1IaVlnRlJnMGEyaUxLS2tOZjQraEhK?= =?utf-8?B?VVVTaTQ0VVN4a1pVcjVMdzNMbUdFVHQwQ2RubFFuYlZ3L1BPTXZBVmdaenhl?= =?utf-8?B?R0krakZNdTEyR1ROS3NNSFB5dndlSjc4YXFkMWhmVXRFaDFXUi9selZmRkF6?= =?utf-8?B?ZGk0YUFjUjJXcXlOQmUxUkZLZVJkejhJMTRrekI4ZWRmUFJPdGxYT2I2RVBh?= =?utf-8?B?UEdGL1pHazQ2OGFpa2x3aStVeVpZUTVpR0hGazdrU0hDMVJqVVBHR0tHY292?= =?utf-8?B?UzV4OHNLVCtVSlFqdzhsSnlCdVNQdi85Q3BPR0tER3dSSTBCTU1ZTTZEWkJ3?= =?utf-8?B?b20zSkdmaHlLMzZyaFZpclNLVXkyUzB1MkhNWkZES1lrZVZUODRwaGZUNjg2?= =?utf-8?B?djlMNy80R0ErS0xEWVRjbzVKMUIzWDBrbkZlcXRnQlhNWk9FSDJxaURTTlI5?= =?utf-8?B?Nlgxd1JLUVM3UG9aSStNSlhORytabFYyZ3FPUlJaMnJNVDRTMjlqR3dGc2dC?= =?utf-8?B?eUoyMGp1Z3lhejhXYkFqK1ltNVhrTmphM0YvRS9KY2xYNlhpSERvWGY0OFZ1?= =?utf-8?B?MWtzRXhRRzNaUnljeGd0Y2sxVVpsSHM0WXBvV3pvTnJlS1hkNDRWaGJTZ1Bl?= =?utf-8?B?cnFkT3VkWllUZ1N6UnZIQlJ0MFh6RGNMQmxudEF1WmJBMFZZazdoeTY0R05v?= =?utf-8?B?YU5hRGRVcjVoTzFQMFhZYWVmbi9pKzFsdnhzNnJ6NUo3SDkrOUV1eWdBNmJD?= =?utf-8?B?czNvNFJNOGVwUkZGak85bjA2RlI0c2NDYnFGSFhzVjhxbjFEWWR1RzVRdUpX?= =?utf-8?B?VlkrNkg2S3FqR2trbFJLSk51VnYxN2gyMllidEYyTWVENHprdm51N1diNkZj?= =?utf-8?B?UVpDWWNCSG1DTHpEL0Nhc3ZQU24yNVNJd1FaSVVLRXZ2RmNLK0Z1M0pTb2sw?= =?utf-8?B?Um9jZ0psM1hzZExNK0RaN0hHL1c0WUc0bVdTNnNMN2lBdllSdGZpZXNMZmxQ?= =?utf-8?B?akJlaE54M0ltMk9nRE8yNVpSYkFSUGF3NGlXZFZER0lad21wTEQ5dk10MDg0?= =?utf-8?B?UGpacStJMU9yMW51bmt2ZENTN3EyY01WOWFGdTlPZFduTDRYa0ZWRkhnTjZS?= =?utf-8?B?dmw0dDZuU3VTUzJod01BdVJvQ1ppNHVYODNaY0ZTTjNBNnpMaDVFcTNkZDl6?= =?utf-8?Q?0vbwsa?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(1800799024)(36860700013)(376014)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:16.2380 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c92bf071-3ebb-4e80-b4e0-08ddf1e397cd X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099D7.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB7552 Received-SPF: permerror client-ip=2a01:111:f403:2414::617; envelope-from=Luc.Michel@amd.com; helo=NAM11-BN8-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671713494116600 Add the Versal Gen 2 (versal2) version of the Versal SoC family. This version embeds up to 8 Cortex-A78AE cores (split into 4 clusters) and 10 Cortex-R52 cores (split into 5 clusters). The similarities between versal and versal2 in term of architecture allow to reuse the VersalMap structure to almost fully describe the implemented parts of versal2. The versal2 eFuse device differs quite a lot from the versal one and is left as future work. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/arm/xlnx-versal.h | 17 ++- hw/arm/xlnx-versal.c | 207 ++++++++++++++++++++++++++++++++--- 2 files changed, 209 insertions(+), 15 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index b6cc71f7209..e1fb1f4cf5b 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -1,7 +1,7 @@ /* - * Model of the Xilinx Versal + * AMD/Xilinx Versal family SoC model. * * Copyright (c) 2018 Xilinx Inc. * Copyright (c) 2025 Advanced Micro Devices, Inc. * Written by Edgar E. Iglesias * @@ -20,10 +20,11 @@ =20 #define TYPE_XLNX_VERSAL_BASE "xlnx-versal-base" OBJECT_DECLARE_TYPE(Versal, VersalClass, XLNX_VERSAL_BASE) =20 #define TYPE_XLNX_VERSAL "xlnx-versal" +#define TYPE_XLNX_VERSAL2 "xlnx-versal2" =20 struct Versal { /*< private >*/ SysBusDevice parent_obj; =20 @@ -70,6 +71,20 @@ hwaddr versal_get_reserved_mmio_addr(Versal *s); =20 int versal_get_num_cpu(VersalVersion version); int versal_get_num_can(VersalVersion version); int versal_get_num_sdhci(VersalVersion version); =20 +static inline const char *versal_get_class(VersalVersion version) +{ + switch (version) { + case VERSAL_VER_VERSAL: + return TYPE_XLNX_VERSAL; + + case VERSAL_VER_VERSAL2: + return TYPE_XLNX_VERSAL2; + + default: + g_assert_not_reached(); + } +} + #endif diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index d92d8117498..6820ea1e28c 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -1,7 +1,7 @@ /* - * Xilinx Versal SoC model. + * AMD/Xilinx Versal family SoC model. * * Copyright (c) 2018 Xilinx Inc. * Copyright (c) 2025 Advanced Micro Devices, Inc. * Written by Edgar E. Iglesias * @@ -350,12 +350,128 @@ static const VersalMap VERSAL_MAP =3D { .crl =3D { 0xff5e0000, 10 }, =20 .reserved =3D { 0xa0000000, 111, 8 }, }; =20 +static const VersalMap VERSAL2_MAP =3D { + .ocm =3D { + .addr =3D 0xbbe00000, + .size =3D 2 * MiB, + }, + + .ddr =3D { + .chan[0] =3D { .addr =3D 0x0, .size =3D 2046 * MiB }, + .chan[1] =3D { .addr =3D 0x800000000ull, .size =3D 32 * GiB }, + .chan[2] =3D { .addr =3D 0xc00000000ull, .size =3D 256 * GiB }, + .chan[3] =3D { .addr =3D 0x10000000000ull, .size =3D 734 * GiB }, + .num_chan =3D 4, + }, + + .apu =3D { + .name =3D "apu", + .cpu_model =3D ARM_CPU_TYPE_NAME("cortex-a78ae"), + .num_cluster =3D 4, + .num_core =3D 2, + .qemu_cluster_id =3D 0, + .mp_affinity =3D { + .base =3D 0x0, /* TODO: the MT bit should be set */ + .core_shift =3D ARM_AFF1_SHIFT, + .cluster_shift =3D ARM_AFF2_SHIFT, + }, + .start_powered_off =3D SPO_SECONDARIES, + .dtb_expose =3D true, + .gic =3D { + .version =3D 3, + .dist =3D 0xe2000000, + .redist =3D 0xe2060000, + .num_irq =3D 544, + .has_its =3D true, + .its =3D 0xe2040000, + }, + }, + + .rpu =3D { + .name =3D "rpu", + .cpu_model =3D ARM_CPU_TYPE_NAME("cortex-r52"), + .num_cluster =3D 5, + .num_core =3D 2, + .qemu_cluster_id =3D 1, + .mp_affinity =3D { + .core_shift =3D ARM_AFF0_SHIFT, + .cluster_shift =3D ARM_AFF1_SHIFT, + }, + .start_powered_off =3D SPO_ALL, + .dtb_expose =3D false, + .per_cluster_gic =3D true, + .gic =3D { + .version =3D 3, + .dist =3D 0x0, + .redist =3D 0x100000, + .num_irq =3D 288, + }, + }, + + .uart[0] =3D { 0xf1920000, 25 }, + .uart[1] =3D { 0xf1930000, 26 }, + .num_uart =3D 2, + + .canfd[0] =3D { 0xf19e0000, 27 }, + .canfd[1] =3D { 0xf19f0000, 28 }, + .canfd[2] =3D { 0xf1a00000, 95 }, + .canfd[3] =3D { 0xf1a10000, 96 }, + .num_canfd =3D 4, + + .gem[0] =3D { { 0xf1a60000, 39 }, 2, "rgmii-id", 1000 }, + .gem[1] =3D { { 0xf1a70000, 41 }, 2, "rgmii-id", 1000 }, + .gem[2] =3D { { 0xed920000, 164 }, 4, "usxgmii", 10000 }, /* MMI 10Gb = GEM */ + .num_gem =3D 3, + + .zdma[0] =3D { "adma", { 0xebd00000, 72 }, 8, 0x10000, 1 }, + .zdma[1] =3D { "sdma", { 0xebd80000, 112 }, 8, 0x10000, 1 }, + .num_zdma =3D 2, + + .usb[0] =3D { .xhci =3D 0xf1b00000, .ctrl =3D 0xf1ee0000, .irq =3D 29 = }, + .usb[1] =3D { .xhci =3D 0xf1c00000, .ctrl =3D 0xf1ef0000, .irq =3D 34 = }, + .num_usb =3D 2, + + .efuse =3D { .ctrl =3D 0xf1240000, .cache =3D 0xf1250000, .irq =3D 230= }, + + .ospi =3D { + .ctrl =3D 0xf1010000, + .dac =3D 0xc0000000, .dac_sz =3D 0x20000000, + .dma_src =3D 0xf1011000, .dma_dst =3D 0xf1011800, + .irq =3D 216, + }, + + .sdhci[0] =3D { 0xf1040000, 218 }, + .sdhci[1] =3D { 0xf1050000, 220 }, /* eMMC */ + .num_sdhci =3D 2, + + .pmc_iou_slcr =3D { 0xf1060000, 222 }, + .bbram =3D { 0xf11f0000, PPU1_OR_IRQ(18, 0) }, + .crl =3D { 0xeb5e0000 }, + .trng =3D { 0xf1230000, 233 }, + .rtc =3D { + { 0xf12a0000, PPU1_OR_IRQ(18, 1) }, + .alarm_irq =3D 200, .second_irq =3D 201 + }, + + .cfu =3D { + .cframe_base =3D 0xf12d0000, .cframe_stride =3D 0x1000, + .cframe_bcast_reg =3D 0xf12ee000, .cframe_bcast_fdri =3D 0xf12ef00= 0, + .cfu_apb =3D 0xf12b0000, .cfu_sfr =3D 0xf12c1000, + .cfu_stream =3D 0xf12c0000, .cfu_stream_2 =3D 0xf1f80000, + .cfu_fdro =3D 0xf12c2000, + .cfu_apb_irq =3D 235, .cframe_irq =3D EAM_IRQ(7), + }, + + .reserved =3D { 0xf5e00000, 270, 8 }, +}; + static const VersalMap *VERSION_TO_MAP[] =3D { [VERSAL_VER_VERSAL] =3D &VERSAL_MAP, + [VERSAL_VER_VERSAL2] =3D &VERSAL2_MAP, }; =20 static inline VersalVersion versal_get_version(Versal *s) { return XLNX_VERSAL_BASE_GET_CLASS(s)->version; @@ -1292,10 +1408,15 @@ static void versal_create_efuse(Versal *s, { DeviceState *bits; DeviceState *ctrl; DeviceState *cache; =20 + if (versal_get_version(s) !=3D VERSAL_VER_VERSAL) { + /* TODO for versal2 */ + return; + } + ctrl =3D qdev_new(TYPE_XLNX_VERSAL_EFUSE_CTRL); cache =3D qdev_new(TYPE_XLNX_VERSAL_EFUSE_CACHE); bits =3D qdev_new(TYPE_XLNX_EFUSE); =20 qdev_prop_set_uint32(bits, "efuse-nr", 3); @@ -1543,34 +1664,47 @@ static inline void crl_connect_dev_by_name(Versal *= s, Object *crl, } =20 static inline void versal_create_crl(Versal *s) { const VersalMap *map; + VersalVersion ver; const char *crl_class; DeviceState *dev; + size_t num_gem; Object *obj; =20 map =3D versal_get_map(s); + ver =3D versal_get_version(s); =20 - crl_class =3D TYPE_XLNX_VERSAL_CRL; + crl_class =3D xlnx_versal_crl_class_name(ver); dev =3D qdev_new(crl_class); obj =3D OBJECT(dev); object_property_add_child(OBJECT(s), "crl", obj); =20 + /* + * The 3rd GEM controller on versal2 is in the MMI subsystem. + * Its reset line is not connected to the CRL. Consider only the first= two + * ones. + */ + num_gem =3D ver =3D=3D VERSAL_VER_VERSAL2 ? 2 : map->num_gem; + crl_connect_dev_by_name(s, obj, "rpu-cluster/rpu", map->rpu.num_cluster * map->rpu.num_core); crl_connect_dev_by_name(s, obj, map->zdma[0].name, map->zdma[0].num_ch= an); crl_connect_dev_by_name(s, obj, "uart", map->num_uart); - crl_connect_dev_by_name(s, obj, "gem", map->num_gem); + crl_connect_dev_by_name(s, obj, "gem", num_gem); crl_connect_dev_by_name(s, obj, "usb", map->num_usb); =20 sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_abort); =20 memory_region_add_subregion(&s->mr_ps, map->crl.addr, sysbus_mmio_get_region(SYS_BUS_DEVICE(dev)= , 0)); =20 - versal_sysbus_connect_irq(s, SYS_BUS_DEVICE(dev), 0, map->crl.irq); + if (ver =3D=3D VERSAL_VER_VERSAL) { + /* CRL IRQ line has been removed in versal2 */ + versal_sysbus_connect_irq(s, SYS_BUS_DEVICE(dev), 0, map->crl.irq); + } } =20 /* * This takes the board allocated linear DDR memory and creates aliases * for each split DDR range/aperture on the Versal address map. @@ -1658,21 +1792,16 @@ static void versal_unimp_irq_parity_imr(void *opaqu= e, int n, int level) qemu_log_mask(LOG_UNIMP, "PMC SLCR parity interrupt behaviour " "is not yet implemented\n"); } =20 -static void versal_unimp(Versal *s) +static void versal_unimp_common(Versal *s) { DeviceState *slcr; qemu_irq gpio_in; =20 - versal_unimp_area(s, "psm", &s->mr_ps, 0xffc80000, 0x70000); - versal_unimp_area(s, "crf", &s->mr_ps, 0xfd1a0000, 0x140000); - versal_unimp_area(s, "apu", &s->mr_ps, 0xfd5c0000, 0x100); versal_unimp_area(s, "crp", &s->mr_ps, 0xf1260000, 0x10000); - versal_unimp_area(s, "iou-scntr", &s->mr_ps, 0xff130000, 0x10000); - versal_unimp_area(s, "iou-scntr-seucre", &s->mr_ps, 0xff140000, 0x1000= 0); =20 qdev_init_gpio_in_named(DEVICE(s), versal_unimp_sd_emmc_sel, "sd-emmc-sel-dummy", 2); qdev_init_gpio_in_named(DEVICE(s), versal_unimp_qspi_ospi_mux_sel, "qspi-ospi-mux-sel-dummy", 1); @@ -1691,10 +1820,29 @@ static void versal_unimp(Versal *s) =20 gpio_in =3D qdev_get_gpio_in_named(DEVICE(s), "irq-parity-imr-dummy", = 0); qdev_connect_gpio_out_named(slcr, SYSBUS_DEVICE_GPIO_IRQ, 0, gpio_in); } =20 +static void versal_unimp(Versal *s) +{ + versal_unimp_area(s, "psm", &s->mr_ps, 0xffc80000, 0x70000); + versal_unimp_area(s, "crf", &s->mr_ps, 0xfd1a0000, 0x140000); + versal_unimp_area(s, "apu", &s->mr_ps, 0xfd5c0000, 0x100); + versal_unimp_area(s, "iou-scntr", &s->mr_ps, 0xff130000, 0x10000); + versal_unimp_area(s, "iou-scntr-secure", &s->mr_ps, 0xff140000, 0x1000= 0); + + versal_unimp_common(s); +} + +static void versal2_unimp(Versal *s) +{ + versal_unimp_area(s, "fpd-systmr-ctrl", &s->mr_ps, 0xec920000, 0x1000); + versal_unimp_area(s, "crf", &s->mr_ps, 0xec200000, 0x100000); + + versal_unimp_common(s); +} + static uint32_t fdt_add_clk_node(Versal *s, const char *name, unsigned int freq_hz) { uint32_t phandle; =20 @@ -1708,13 +1856,12 @@ static uint32_t fdt_add_clk_node(Versal *s, const c= har *name, qemu_fdt_setprop(s->cfg.fdt, name, "u-boot,dm-pre-reloc", NULL, 0); =20 return phandle; } =20 -static void versal_realize(DeviceState *dev, Error **errp) +static void versal_realize_common(Versal *s) { - Versal *s =3D XLNX_VERSAL_BASE(dev); DeviceState *slcr, *ospi; MemoryRegion *ocm; Object *container; const VersalMap *map =3D versal_get_map(s); size_t i; @@ -1789,18 +1936,33 @@ static void versal_realize(DeviceState *dev, Error = **errp) versal_create_rtc(s, &map->rtc); versal_create_cfu(s, &map->cfu); versal_create_crl(s); =20 versal_map_ddr(s, &map->ddr); - versal_unimp(s); =20 /* Create the On Chip Memory (OCM). */ ocm =3D g_new(MemoryRegion, 1); memory_region_init_ram(ocm, OBJECT(s), "ocm", map->ocm.size, &error_fa= tal); memory_region_add_subregion_overlap(&s->mr_ps, map->ocm.addr, ocm, 0); } =20 +static void versal_realize(DeviceState *dev, Error **errp) +{ + Versal *s =3D XLNX_VERSAL_BASE(dev); + + versal_realize_common(s); + versal_unimp(s); +} + +static void versal2_realize(DeviceState *dev, Error **errp) +{ + Versal *s =3D XLNX_VERSAL_BASE(dev); + + versal_realize_common(s); + versal2_unimp(s); +} + DeviceState *versal_get_boot_cpu(Versal *s) { return DEVICE(versal_get_child_idx(s, "apu-cluster/apu", 0)); } =20 @@ -1945,20 +2107,30 @@ static const Property versal_properties[] =3D { =20 static void versal_base_class_init(ObjectClass *klass, const void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); =20 - dc->realize =3D versal_realize; device_class_set_props(dc, versal_properties); /* No VMSD since we haven't got any top-level SoC state to save. */ } =20 static void versal_class_init(ObjectClass *klass, const void *data) { VersalClass *vc =3D XLNX_VERSAL_BASE_CLASS(klass); + DeviceClass *dc =3D DEVICE_CLASS(klass); =20 vc->version =3D VERSAL_VER_VERSAL; + dc->realize =3D versal_realize; +} + +static void versal2_class_init(ObjectClass *klass, const void *data) +{ + VersalClass *vc =3D XLNX_VERSAL_BASE_CLASS(klass); + DeviceClass *dc =3D DEVICE_CLASS(klass); + + vc->version =3D VERSAL_VER_VERSAL2; + dc->realize =3D versal2_realize; } =20 static const TypeInfo versal_base_info =3D { .name =3D TYPE_XLNX_VERSAL_BASE, .parent =3D TYPE_SYS_BUS_DEVICE, @@ -1974,12 +2146,19 @@ static const TypeInfo versal_info =3D { .name =3D TYPE_XLNX_VERSAL, .parent =3D TYPE_XLNX_VERSAL_BASE, .class_init =3D versal_class_init, }; =20 +static const TypeInfo versal2_info =3D { + .name =3D TYPE_XLNX_VERSAL2, + .parent =3D TYPE_XLNX_VERSAL_BASE, + .class_init =3D versal2_class_init, +}; + static void versal_register_types(void) { type_register_static(&versal_base_info); type_register_static(&versal_info); + type_register_static(&versal2_info); } =20 type_init(versal_register_types); --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671903; cv=pass; d=zohomail.com; s=zohoarc; b=k0fKsL4a3Zqo65uLWtY6l+EFSltsgR4s+u7Ap1/9snHWV0hOEjlz/5kwRRGjEh6cyIke+P2WJwSN1q2QdkyKnxPkRLkgSY+WcQ5GmnXg1V7qo32LoolvyyjvG1vSuum11x/O80anfd3O1pLy26x0Rb995IiohtksLynsznurykA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671903; 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=SktfDzWhS3IuywAHmp5M8whZBLPzShSekk06HCXZaz8=; b=Gg/ohsg90Djr+FpOM4fY8yi1MPaNLr7bDdB3FPZWRzNg5gj9O3wecvntVqq8hKr4/CieLrw2rLY5n9l1MveG0TqRI1ByLj4MtTNrxtoMltRpEGYYbkx5OW0Z52xYAWaZgHu8EgidxSUOTMtXyZ7QBxIWNH6m9oW83SSto58PGiY= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175767190326449.88212690940054; Fri, 12 Sep 2025 03:11:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0eV-0001h4-Dn; Fri, 12 Sep 2025 06:05:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0d3-0007X3-NN; Fri, 12 Sep 2025 06:03:50 -0400 Received: from mail-bn7nam10on20606.outbound.protection.outlook.com ([2a01:111:f403:2009::606] helo=NAM10-BN7-obe.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 1ux0cl-0001Oa-Uc; Fri, 12 Sep 2025 06:03:40 -0400 Received: from CH0P220CA0027.NAMP220.PROD.OUTLOOK.COM (2603:10b6:610:ef::21) by DM4PR12MB9736.namprd12.prod.outlook.com (2603:10b6:8:225::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:03:17 +0000 Received: from DS3PEPF000099E0.namprd04.prod.outlook.com (2603:10b6:610:ef:cafe::21) by CH0P220CA0027.outlook.office365.com (2603:10b6:610:ef::21) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.17 via Frontend Transport; Fri, 12 Sep 2025 10:03:17 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099E0.mail.protection.outlook.com (10.167.17.203) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:17 +0000 Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:34 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb09.amd.com (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:34 -0700 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:32 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CyaOc60Xowdw1gwFpNd+lve//vX/bIDb21vQOIYuaUztDA8C+bQSXdScsY3766BiWzY5Xht7AI374v85RBZCaS3I4CtaroGYVpi/67doPUtNubX91JD1vjFHTgg5mXn+JcAB1z3B8JcWmKDf8+d1bnvBKOTLXAJvRK0Aj23Un1+17KdadsuZ5eLqVzz5ahl3yvymNT+gTq2L2McC6Gn7IHOMiEUDD9D/1wQ2gxwf+kB1Nrh+ODZI7NljGjj5lpNYx+ubhJ3vdZZlUItOx6/cbiDXWqaHcgOwplD/lm2mOE6bkGEZ8z7VL0FXetBvXTkvcRl2W3pVvpitg0sS/73zMQ== 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=SktfDzWhS3IuywAHmp5M8whZBLPzShSekk06HCXZaz8=; b=yuI953yHlY/CpstILxUOC46zNR+SmVSUoO+OIJr5QTVTaBOvugohH0/Qma8Pis4fm4FAxslTOGqqXHkJn9GX6TgVhXZh8es5biw6pGz26RPVGwme61ALzkImsew/+jFNsPUnnWr1eFVEy3P3f57T4dFz+V7PzUimVv/jIzzk3x/vtEX1R/xYwDVtunH5N/AT68cYjR5SclryiWyEz743dCV9VMAu/V6FC7jNzUvKnDVaK76BPa8502lDFtnN31uPQ0n7BdzspTDxK54sAoTc9EXENx3mHxpFQHs/MiLzPycsIXv5Q71dWmngVTThqxjRylJaUGqZ2JLiIl3tonXtmQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SktfDzWhS3IuywAHmp5M8whZBLPzShSekk06HCXZaz8=; b=IHWGi4uJoK6GNWiwUgg3l35ZOFBpDYvrj/OiksyOxskpLWXeWEjn58YgfU54jaokOn9GyDG0sbgvQhSNmapxNzt8bR3k9vQUiT2GizruTjnbNuCuc2OiukWwKDOpyQi1U/mD4OU/4GhYkdvCmq/Acc6c/WADDxsB7xtX/t/Ulyw= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 41/47] hw/arm/xlnx-versal-virt: rename the machine to amd-versal-virt Date: Fri, 12 Sep 2025 12:00:50 +0200 Message-ID: <20250912100059.103997-42-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099E0:EE_|DM4PR12MB9736:EE_ X-MS-Office365-Filtering-Correlation-Id: 38ce6917-4a7e-4c11-99fb-08ddf1e3988a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|36860700013|376014|13003099007; X-Microsoft-Antispam-Message-Info: =?utf-8?B?bTFReUFTK0VkQ09wejNRODZmblVhbzdLUERaSlh0QjFkdWNtVm92SHBVcmp2?= =?utf-8?B?SWZrZmVUTnRpczNiV1dNeDZsbythd3JiWTN2eGdOczVyNmZHZUtScDJhZGxy?= =?utf-8?B?bUduMDhuT0owamhVcXhPaUM2U29rbHlFSEFMZ2toOGY1Q0FTSDVzc0dwM3lW?= =?utf-8?B?VE9YQlB1YXBKUGljYk9JRzRUUmsrc28zWUpKekVCUENXQzNUOEJoanFXblZP?= =?utf-8?B?Rm8xTVBYVVRrQ3BlZzZzZGpLZUE3OWp4MlBIWGZXSUxhL3Y4RjRpejNOeUpi?= =?utf-8?B?SjMzdDYxTkRCR2wvRkRHU3lGUE44enRZZEtEWDZ2eVRWL1l6NDlzRUVwUUgv?= =?utf-8?B?dE1vbmpGSmpmMzFZbUpPbHpkRnNoTkNTQXlkVnhtMm42cnI3a2pQQ05raHRx?= =?utf-8?B?UWRsZU55eVA1eGlSNnNVcUhyNXlIZ0NhMC84dnJ1WWVPcHBjaU01VHYrY1l5?= =?utf-8?B?RlJzVHUzV2plVmJwclBpcm9NUnZzeTdBUU9KMlAyMGxNNVd0VVJkUWJlRzB1?= =?utf-8?B?NFBLazNYTlZpV0VmWFFoV1FIbG1KMEoyVnFnaGVKa3daSzg3SVB3WEVxN3Nv?= =?utf-8?B?b0h5N2prbXR5Y0hPNndtZDg5eU1jSXdMYkRWK1hUc2hVUCtIcGdhYXp2N3dl?= =?utf-8?B?ZjhFZVRXc2FUdFkzVEY5VVJLbDA2c0dLb0ZicjhqdndHZ3ZjWmw0QTF3ZVdD?= =?utf-8?B?dm1WSHVkbE5GRFdSc3k5RkVLMDhLb0tXeHF4WHliUWRZWjdaUUVXYkxtZ1lD?= =?utf-8?B?eXBlRjF0WkNsbzB3bUpvcHVKdUZ0eWZ4Y2xWZy9pWjMzUzNjQ3k5SStObm9j?= =?utf-8?B?NkcvT3FjZCtmZUFqY3BPZlQ4RFRJY3FsbE9janVEdUpaTnR2VDkzU3B0VTJq?= =?utf-8?B?MXlROXl6M09sMDBJUTVBWi93M0VVK1gzbnRYb29rcVYyVE8rdHJiUUV3Nmxv?= =?utf-8?B?Sy84MmZTZEk1NDNZUFJsTWZSYWd3bEtCSVZDVk5nTHlmTWRJUnJyWmxvZHJ4?= =?utf-8?B?UnZCc20yZi9wRDJIaWYyZUh5UWhCdXhIK2NvbnhwQnZpbUpZMXptcFdiZDhI?= =?utf-8?B?KytyaE54djV0VHFCRmlPQVA4RjdQVGhQeWQ3Y2xTS3lyZXVrMmREeE81elcv?= =?utf-8?B?NGFVTHRNcE5seGNhZ1lqc29hNWd1UEEyQXdpZW1xUElocDhoQTNPeStPU1VC?= =?utf-8?B?MDhoV0w2S1htRXpZR3JqTXlYb3hOUXNFbWdvUE5ObE0zeENTODBiMjNyUTdB?= =?utf-8?B?Y0JhMlJ0ckhwMVEwc3hmdHRvNUhYZlNJTFR5a0loYUgvQkt3bnNFVDAwa2tK?= =?utf-8?B?Q0NYbUVnQ0I2SGlwa0tLVU9OeitYWXcram9HRmdDQThkdURRRjJIQlZHbU5Y?= =?utf-8?B?dEpYSUd3b1NrL0F4aVlJTm5NbHhNclVTRWJrN3VHQ0V2eDdqRzR5eFlOTTFv?= =?utf-8?B?U2FUSUhENnhYN1N2RVlKcDAxREVuSlZ1ZzdvOUFqWi81V1pPUEJBQ0ZlSHFR?= =?utf-8?B?SXVYK053TDJBdnl1aTZFZjlEWURLQXlqM1ljM29KVVFDbkg2MzlNdi9QL2F3?= =?utf-8?B?cnJESGpGeUNYd3pldnl2V0t2NUIzRDJFZC9zUTh3aDZBNzdNOUZkMGRMUk5C?= =?utf-8?B?VjVER2pSSmcrZWNxYUIxYW9FYTNHVzQ4SzAwRm1qMDRyMzF3bktDb0NvZU81?= =?utf-8?B?eGdSSmRMWStQRUQrbGs1WCs0L3Yxbk91bjYvaU1BY3doRFJRVGl1eno0bmZP?= =?utf-8?B?Wk13emhlbGZ3U29tSEI1M2xUTnd4QlhpclI5Y2JFWVlBU1huTDdqeHUvL1d2?= =?utf-8?B?a0JlRWZTZC93VVAxdFhGSHVWYnZVeThpZjVRcVVvZDNrMnZQWlo4anB4Szg3?= =?utf-8?B?ZDhtMTIxTnBxOVhDK0UrME5lU1lZZ1VFdkxrb21oYUs5Y2JjcUVRR3FYWWkz?= =?utf-8?B?MjRiNXVBMGdlemhJcWV0MVFieHNwTExmVktVWHhwbXNPb0FqSmV6MkJBUk5T?= =?utf-8?Q?c0VY9pGZne17I9eoMXQ2xdrrwQGOaw=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(1800799024)(36860700013)(376014)(13003099007); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:17.4660 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 38ce6917-4a7e-4c11-99fb-08ddf1e3988a X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099E0.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB9736 Received-SPF: permerror client-ip=2a01:111:f403:2009::606; envelope-from=Luc.Michel@amd.com; helo=NAM10-BN7-obe.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, DKIMWL_WL_HIGH=-0.001, 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, WEIRD_QUOTING=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: 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 @amd.com) X-ZM-MESSAGEID: 1757671904025116600 To align with current branding and ensure coherency with the upcoming versal2 machine, rename the xlnx-versal-virt machine to amd-versal-virt. Keep an alias of the old name to the new one for command-line backward compatibility. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- docs/system/arm/xlnx-versal-virt.rst | 26 +++++++++++--------- hw/arm/xlnx-versal-virt.c | 11 ++++++--- tests/functional/aarch64/test_xlnx_versal.py | 6 ++--- 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/docs/system/arm/xlnx-versal-virt.rst b/docs/system/arm/xlnx-ve= rsal-virt.rst index c5f35f28e4f..2c63fbf519f 100644 --- a/docs/system/arm/xlnx-versal-virt.rst +++ b/docs/system/arm/xlnx-versal-virt.rst @@ -1,21 +1,25 @@ -Xilinx Versal Virt (``xlnx-versal-virt``) -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +AMD Versal Virt (``amd-versal-virt``) +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 -Xilinx Versal is a family of heterogeneous multi-core SoCs +AMD Versal is a family of heterogeneous multi-core SoCs (System on Chip) that combine traditional hardened CPUs and I/O peripherals in a Processing System (PS) with runtime programmable FPGA logic (PL) and an Artificial Intelligence Engine (AIE). =20 +QEMU implements the Versal Series variant of Versal SoCs, with the +``amd-versal-virt`` machine. The alias ``xlnx-versal-virt`` is kept for +backward compatibility. + More details here: -https://www.xilinx.com/products/silicon-devices/acap/versal.html +https://www.amd.com/en/products/adaptive-socs-and-fpgas/versal.html =20 The family of Versal SoCs share a single architecture but come in different parts with different speed grades, amounts of PL and other differences. =20 -The Xilinx Versal Virt board in QEMU is a model of a virtual board +The AMD Versal Virt board in QEMU is a model of a virtual board (does not exist in reality) with a virtual Versal SoC without I/O limitations. Currently, we support the following cores and devices: =20 Implemented CPU cores: =20 @@ -72,11 +76,11 @@ A few examples: =20 Direct Linux boot of a generic ARM64 upstream Linux kernel: =20 .. code-block:: bash =20 - $ qemu-system-aarch64 -M xlnx-versal-virt -m 2G \ + $ qemu-system-aarch64 -M amd-versal-virt -m 2G \ -serial mon:stdio -display none \ -kernel arch/arm64/boot/Image \ -nic user -nic user \ -device virtio-rng-device,bus=3Dvirtio-mmio-bus.0 \ -drive if=3Dnone,index=3D0,file=3Dhd0.qcow2,id=3Dhd0,snapshot \ @@ -85,11 +89,11 @@ Direct Linux boot of a generic ARM64 upstream Linux ker= nel: =20 Direct Linux boot of PetaLinux 2019.2: =20 .. code-block:: bash =20 - $ qemu-system-aarch64 -M xlnx-versal-virt -m 2G \ + $ qemu-system-aarch64 -M amd-versal-virt -m 2G \ -serial mon:stdio -display none \ -kernel petalinux-v2019.2/Image \ -append "rdinit=3D/sbin/init console=3DttyAMA0,115200n8 earlycon=3Dp= l011,mmio,0xFF000000,115200n8" \ -net nic,model=3Dcadence_gem,netdev=3Dnet0 -netdev user,id=3Dnet0 \ -device virtio-rng-device,bus=3Dvirtio-mmio-bus.0,rng=3Drng0 \ @@ -98,11 +102,11 @@ Direct Linux boot of PetaLinux 2019.2: Boot PetaLinux 2019.2 via ARM Trusted Firmware (2018.3 because the 2019.2 version of ATF tries to configure the CCI which we don't model) and U-boot: =20 .. code-block:: bash =20 - $ qemu-system-aarch64 -M xlnx-versal-virt -m 2G \ + $ qemu-system-aarch64 -M amd-versal-virt -m 2G \ -serial stdio -display none \ -device loader,file=3Dpetalinux-v2018.3/bl31.elf,cpu-num=3D0 \ -device loader,file=3Dpetalinux-v2019.2/u-boot.elf \ -device loader,addr=3D0x20000000,file=3Dpetalinux-v2019.2/Image \ -nic user -nic user \ @@ -123,11 +127,11 @@ Run the following at the U-Boot prompt: =20 Boot Linux as DOM0 on Xen via U-Boot: =20 .. code-block:: bash =20 - $ qemu-system-aarch64 -M xlnx-versal-virt -m 4G \ + $ qemu-system-aarch64 -M amd-versal-virt -m 4G \ -serial stdio -display none \ -device loader,file=3Dpetalinux-v2019.2/u-boot.elf,cpu-num=3D0 \ -device loader,addr=3D0x30000000,file=3Dlinux/2018-04-24/xen \ -device loader,addr=3D0x40000000,file=3Dpetalinux-v2019.2/Image \ -nic user -nic user \ @@ -151,11 +155,11 @@ Run the following at the U-Boot prompt: =20 Boot Linux as Dom0 on Xen via ARM Trusted Firmware and U-Boot: =20 .. code-block:: bash =20 - $ qemu-system-aarch64 -M xlnx-versal-virt -m 4G \ + $ qemu-system-aarch64 -M amd-versal-virt -m 4G \ -serial stdio -display none \ -device loader,file=3Dpetalinux-v2018.3/bl31.elf,cpu-num=3D0 \ -device loader,file=3Dpetalinux-v2019.2/u-boot.elf \ -device loader,addr=3D0x30000000,file=3Dlinux/2018-04-24/xen \ -device loader,addr=3D0x40000000,file=3Dpetalinux-v2019.2/Image \ @@ -225,11 +229,11 @@ To use a different index value, N, from default of 1,= add: =20 Thus, a file backend should be used with caution, and 'format=3Dluks' is highly recommended (albeit with usage complexity). =20 Better yet, do not use actual product data when running guest image - on this Xilinx Versal Virt board. + on this AMD Versal Virt board. =20 Using CANFDs for Versal Virt """""""""""""""""""""""""""" Versal CANFD controller is developed based on SocketCAN and QEMU CAN bus implementation. Bus connection and socketCAN connection for each CAN module diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 274a7ef9889..6ef56103a75 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -1,7 +1,7 @@ /* - * Xilinx Versal Virtual board. + * AMD/Xilinx Versal Virtual board. * * Copyright (c) 2018 Xilinx Inc. * Copyright (c) 2025 Advanced Micro Devices, Inc. * Written by Edgar E. Iglesias * @@ -24,11 +24,11 @@ #include "hw/arm/boot.h" #include "target/arm/multiprocessing.h" #include "qom/object.h" #include "target/arm/cpu.h" =20 -#define TYPE_XLNX_VERSAL_VIRT_MACHINE MACHINE_TYPE_NAME("xlnx-versal-virt") +#define TYPE_XLNX_VERSAL_VIRT_MACHINE MACHINE_TYPE_NAME("amd-versal-virt") OBJECT_DECLARE_SIMPLE_TYPE(VersalVirt, XLNX_VERSAL_VIRT_MACHINE) =20 #define XLNX_VERSAL_NUM_OSPI_FLASH 4 =20 struct VersalVirt { @@ -53,10 +53,11 @@ struct VersalVirt { }; =20 static void fdt_create(VersalVirt *s) { MachineClass *mc =3D MACHINE_GET_CLASS(s); + const char versal_compat[] =3D "amd-versal-virt\0xlnx-versal-virt"; =20 s->fdt =3D create_device_tree(&s->fdt_size); if (!s->fdt) { error_report("create_device_tree() failed"); exit(1); @@ -70,11 +71,12 @@ static void fdt_create(VersalVirt *s) qemu_fdt_add_subnode(s->fdt, "/chosen"); qemu_fdt_add_subnode(s->fdt, "/aliases"); =20 /* Header */ qemu_fdt_setprop_string(s->fdt, "/", "model", mc->desc); - qemu_fdt_setprop_string(s->fdt, "/", "compatible", "xlnx-versal-virt"); + qemu_fdt_setprop(s->fdt, "/", "compatible", versal_compat, + sizeof(versal_compat)); } =20 static void fdt_add_clk_node(VersalVirt *s, const char *name, unsigned int freq_hz, uint32_t phandle) { @@ -346,11 +348,12 @@ static void versal_virt_machine_finalize(Object *obj) static void versal_virt_machine_class_init(ObjectClass *oc, const void *da= ta) { MachineClass *mc =3D MACHINE_CLASS(oc); int num_cpu =3D versal_get_num_cpu(VERSAL_VER_VERSAL); =20 - mc->desc =3D "Xilinx Versal Virtual development board"; + mc->desc =3D "AMD Versal Virtual development board"; + mc->alias =3D "xlnx-versal-virt"; mc->init =3D versal_virt_init; mc->min_cpus =3D num_cpu; mc->max_cpus =3D num_cpu; mc->default_cpus =3D num_cpu; mc->no_cdrom =3D true; diff --git a/tests/functional/aarch64/test_xlnx_versal.py b/tests/functiona= l/aarch64/test_xlnx_versal.py index 4b9c49e5d64..95e5c44771f 100755 --- a/tests/functional/aarch64/test_xlnx_versal.py +++ b/tests/functional/aarch64/test_xlnx_versal.py @@ -4,11 +4,11 @@ # # SPDX-License-Identifier: GPL-2.0-or-later =20 from qemu_test import LinuxKernelTest, Asset =20 -class XlnxVersalVirtMachine(LinuxKernelTest): +class AmdVersalVirtMachine(LinuxKernelTest): =20 ASSET_KERNEL =3D Asset( ('http://ports.ubuntu.com/ubuntu-ports/dists/bionic-updates/main/' 'installer-arm64/20101020ubuntu543.19/images/netboot/' 'ubuntu-installer/arm64/linux'), @@ -18,12 +18,12 @@ class XlnxVersalVirtMachine(LinuxKernelTest): ('http://ports.ubuntu.com/ubuntu-ports/dists/bionic-updates/main/' 'installer-arm64/20101020ubuntu543.19/images/netboot/' '/ubuntu-installer/arm64/initrd.gz'), 'e7a5e716b6f516d8be315c06e7331aaf16994fe4222e0e7cfb34bc015698929e') =20 - def test_aarch64_xlnx_versal_virt(self): - self.set_machine('xlnx-versal-virt') + def test_aarch64_amd_versal_virt(self): + self.set_machine('amd-versal-virt') kernel_path =3D self.ASSET_KERNEL.fetch() initrd_path =3D self.ASSET_INITRD.fetch() =20 self.vm.set_console() self.vm.add_args('-m', '2G', --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671744; cv=pass; d=zohomail.com; s=zohoarc; b=lzb3ZR7599flJ2NvLAhuupctgNnzlUVMyNU5Ah87Ti4DvPBnLTYjGyVEG8J6GKIAdVsDvsBylpiQp3hNNanahJ4hDufDOeu3HQWd34AGFFhO99vJ8jmQ+ZRc4N9fDpelUGouXue41BcNxSl/SLscTqUZ7T3BC8nvloCX5IWhrB4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671744; 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=Y8OMNhGInTKENhLDzvtiBamsHFw5alW8aMmoK/MoXxI=; b=iwPXeTT8McKdNxKjLk+TvbiuJsy2iOrcfn8ptTxKQbIFryHbPUjmvJhgtTJqC/JMLeXXmMAxDjeC6g1IMI7BAGgbLEs+U/0HaTekt8eFYeLYjC0ndO4FNybdl0gMe3/TDDYeuCHKGRUuaJz765sT0i+9AJ4H84VXdkoal7VcF4Q= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671744611905.8791460687692; Fri, 12 Sep 2025 03:09:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0eY-0001qZ-AF; Fri, 12 Sep 2025 06:05:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0d3-0007X4-QJ; Fri, 12 Sep 2025 06:03:50 -0400 Received: from mail-bn8nam11on20606.outbound.protection.outlook.com ([2a01:111:f403:2414::606] helo=NAM11-BN8-obe.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 1ux0cn-0001Op-PV; Fri, 12 Sep 2025 06:03:41 -0400 Received: from CH0P220CA0030.NAMP220.PROD.OUTLOOK.COM (2603:10b6:610:ef::28) by SA0PR12MB4430.namprd12.prod.outlook.com (2603:10b6:806:70::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:03:18 +0000 Received: from DS3PEPF000099E0.namprd04.prod.outlook.com (2603:10b6:610:ef:cafe::ea) by CH0P220CA0030.outlook.office365.com (2603:10b6:610:ef::28) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.17 via Frontend Transport; Fri, 12 Sep 2025 10:03:18 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099E0.mail.protection.outlook.com (10.167.17.203) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:17 +0000 Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:36 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:02:36 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:34 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bmQEb1FbsUAn1+rqZFRfVocDeh+HckMVjkVFlONVWuWhNbmE00qv/iV+XS8edFUu7XFreiiXQeYT/ZIevjLVGxNYMJ7AxnITIaAoTvbWImlBrlqEa5H65gOVwVBTwlTKf9wWFAZphmBQy91SfMV5bvhuy1vjpyARrQ5IKOe1tqNnGipreCb2An+1P35JKUU1vucPfsia0OejgEbwZ52yABSBs0mwarJHsLGSpOUVDgl2k+OUlnjd81DG9BzWHjG9qoaj6OIyk08WuBbPOp15JyqH8WAz4NMndm6wmCQyDgHsuVq0LAGDh4XKM7PrmnQvHN/bq/5dJT/8fgc8iIiJoQ== 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=Y8OMNhGInTKENhLDzvtiBamsHFw5alW8aMmoK/MoXxI=; b=i3Gxurplkihagp8W+fSOdNZWIPEpvHNyMHHtrSlDUnOAHZoymq1zUBvkXECwCZzq1VWLLN6aqqTGaquC3Tj/dIcZ+LJSGeKE8sn+pfOUu0wUl+xABHRSicA1vMKI9j/TjwM4JOsPeGPOn6R/MRyHbPsfgW3iD0f+4esA3ECbqmRaJMlvZpcQc/+SYR+M46W6gPBxXvG8QriAVwJ5TxJHIH+/srJA+AVg9xsAiIRAYntHnBVI+JGYXIA9JopTHeNhxGw/Z5DqHh/92DQbhfgbwmLWXMQ3rEo5dL0YAmAjx7HVXjDX1HQ+9GRuqSCCy9NTRDerXsoXpfSWZxk+Rj0E3A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Y8OMNhGInTKENhLDzvtiBamsHFw5alW8aMmoK/MoXxI=; b=GNP9Gawsbe3VzMBRs5BXxpFQDoNIa+wehBEF8Vvwt5Ir6WF2y40R5nUa8WwvTo1aLhcjQBt1IW92vb5SQIVRzw8EpxeAKslYQrzK5tZV5aSOewadbD6MWhSV1B/iU2VNEr2H0/tioJ6gxqk90Id6z/QZ2QjpChSkP2pVDLrwQlU= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 42/47] hw/arm/xlnx-versal-virt: split into base/concrete classes Date: Fri, 12 Sep 2025 12:00:51 +0200 Message-ID: <20250912100059.103997-43-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: None (SATLEXMB04.amd.com: luc.michel@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099E0:EE_|SA0PR12MB4430:EE_ X-MS-Office365-Filtering-Correlation-Id: 57d31082-b6c5-496f-9a3a-08ddf1e398c9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|82310400026|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?uyjTio37pg6ddgflkZXYx63qXEfx/sWU3NJw/Yg3X9r+QdlXZzC+Yy9PV2Z5?= =?us-ascii?Q?dkzIv6Eullvt26S9Mye8huyu/lwF8hwf1+3gwntzPDfszTLzajDk92ArRgfn?= =?us-ascii?Q?HryZPVs9ggBM31tBM66qgSIwV9AS9R/ydbJhGB0RUzIXAhDKhBeKO+pj0tzg?= =?us-ascii?Q?pOFLh+naAFCFD3eF7AfwSXbf3VXl6epLRI9dwMCeMe5krwiTGj/iOkotSI8R?= =?us-ascii?Q?ubBIRNACleSApa/5Agw7FsImd1kPTCZ9/sBvZM7Bn3Lh/BsWgoJYfUX+w0og?= =?us-ascii?Q?7WBT8WomHDmONGdyA5x8WTOUhImvZs7pRJ0Q0TpxusNIRpnfCnUzOxYDvqyc?= =?us-ascii?Q?eQVQZPAZHkw4+S0FZpOv6yfU2UYKK1EMdfw18Y+JVLAv4/XDOKMFQwUC/ajI?= =?us-ascii?Q?t9rpTc9FchIubiNUFzNSY0wn9cnOQUfYQDVT/rp+5mLlvPXH5xmtWNjvz2yT?= =?us-ascii?Q?BkaQ+0tuxFkzpF9IRL1HuAG6jSMLGiBZfAdhLjFEWCBSCzViAr4o+9gsG1Mg?= =?us-ascii?Q?oVhlQc3DV3s+HbKihCYyyKg8U92K0afc1yqCCBpfwzA04FErjAZJNkHLwIeN?= =?us-ascii?Q?eSaj3Ge0qBLSWpov8J6FekduyIpvlp8d7B4OtyYUjZg3ju5o0aEnt7q/avPZ?= =?us-ascii?Q?0r5SusYj54ZVoXRNNCxct3gPS7h+UwqSpD0bdBaKYIrtAjsXkOJvn+1Jm72Z?= =?us-ascii?Q?5k0CEQNsjKpXUjFro8Vg1ih7D28aaSsZ/yXx9qrOML2k1ZkAyZ3mcmcToddf?= =?us-ascii?Q?ZN0Ehx7I9Az/0fFeeAVTbVWUubwxxRcr2K4EMmki6bsUq0LN6b97NF9rv/2H?= =?us-ascii?Q?qjq/lnV3dlk+h7XkUSgpSxWNUFY+Nh+hQlR0bJ66LHmhZJK2SiaDywJ2usia?= =?us-ascii?Q?0R3U3AbGWMuxdbWwmCrc07SVu0hCpwGET0krN3NSNf6ymFPZL5rvYcUVrIlX?= =?us-ascii?Q?Lc9BdslTnykk232bdr2iFiE6VU72cM1e5uA3/gTzXTTdFyeHXnSQsaed2bQX?= =?us-ascii?Q?GEaR2UvSapA936j4bFkmvRRutDsc1/1tvyHsozqVsiWabxutXMdQzmb20ppE?= =?us-ascii?Q?PeiOH2vozewnJ97/C4HShgfiyPUShEJ2wRHHh/utxyXq8wEz8N9XT8O5s7Gl?= =?us-ascii?Q?OdYT/QcXrAlG95pJQPgWZ3jezXTNj3Z5PSSaHdZdqkoWJJz9H4eoBrGoMuFP?= =?us-ascii?Q?QwXv33lKUpPUBhDKCMa5EkFpl21GR04Lq0BZ+0nY2PHbrAaxqqg+BkJ6W0+O?= =?us-ascii?Q?3xrjMa4+AipX91aO2Zm7AKC8T7/xe7eeWH9GuC3UV788B7CxeL2Btadfsva5?= =?us-ascii?Q?CNHahMEG4n3LmbvDK4ipu7El3Dq69YiLWm2m83kNNYnGLeMfl3cX4Txd3LjM?= =?us-ascii?Q?b+ujY5tVSM/B1UkwWzcurFL0/FIVEuMhVXZMdTbx+eNQIJ4GvPr2Y3SH51MV?= =?us-ascii?Q?tE86gwAcC+BDIurE+ZqPn+IcvxeoM5P91T6ChnJVqXtWvGC/ypKsSKainzeK?= =?us-ascii?Q?WUPae1ZW2dXYFRj5go2oWBORdiw9PcJlI6p3?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(1800799024)(82310400026)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:17.8895 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 57d31082-b6c5-496f-9a3a-08ddf1e398c9 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099E0.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB4430 Received-SPF: permerror client-ip=2a01:111:f403:2414::606; envelope-from=Luc.Michel@amd.com; helo=NAM11-BN8-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671745893116600 Content-Type: text/plain; charset="utf-8" Split the xlnx-versal-virt machine type into a base abstract type and a concrete type. There is no functional change. This is in preparation for the versal2 machine. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- hw/arm/xlnx-versal-virt.c | 74 +++++++++++++++++++++++++++------------ 1 file changed, 52 insertions(+), 22 deletions(-) diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 6ef56103a75..f9abb9ed639 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -24,12 +24,15 @@ #include "hw/arm/boot.h" #include "target/arm/multiprocessing.h" #include "qom/object.h" #include "target/arm/cpu.h" =20 +#define TYPE_XLNX_VERSAL_VIRT_BASE_MACHINE \ + MACHINE_TYPE_NAME("amd-versal-virt-base") +OBJECT_DECLARE_TYPE(VersalVirt, VersalVirtClass, XLNX_VERSAL_VIRT_BASE_MAC= HINE) + #define TYPE_XLNX_VERSAL_VIRT_MACHINE MACHINE_TYPE_NAME("amd-versal-virt") -OBJECT_DECLARE_SIMPLE_TYPE(VersalVirt, XLNX_VERSAL_VIRT_MACHINE) =20 #define XLNX_VERSAL_NUM_OSPI_FLASH 4 =20 struct VersalVirt { MachineState parent_obj; @@ -50,10 +53,16 @@ struct VersalVirt { bool secure; char *ospi_model; } cfg; }; =20 +struct VersalVirtClass { + MachineClass parent_class; + + VersalVersion version; +}; + static void fdt_create(VersalVirt *s) { MachineClass *mc =3D MACHINE_GET_CLASS(s); const char versal_compat[] =3D "amd-versal-virt\0xlnx-versal-virt"; =20 @@ -191,27 +200,28 @@ static void sd_plug_card(VersalVirt *s, int idx, Driv= eInfo *di) versal_sdhci_plug_card(&s->soc, idx, blk); } =20 static char *versal_get_ospi_model(Object *obj, Error **errp) { - VersalVirt *s =3D XLNX_VERSAL_VIRT_MACHINE(obj); + VersalVirt *s =3D XLNX_VERSAL_VIRT_BASE_MACHINE(obj); =20 return g_strdup(s->cfg.ospi_model); } =20 static void versal_set_ospi_model(Object *obj, const char *value, Error **= errp) { - VersalVirt *s =3D XLNX_VERSAL_VIRT_MACHINE(obj); + VersalVirt *s =3D XLNX_VERSAL_VIRT_BASE_MACHINE(obj); =20 g_free(s->cfg.ospi_model); s->cfg.ospi_model =3D g_strdup(value); } =20 =20 static void versal_virt_init(MachineState *machine) { - VersalVirt *s =3D XLNX_VERSAL_VIRT_MACHINE(machine); + VersalVirt *s =3D XLNX_VERSAL_VIRT_BASE_MACHINE(machine); + VersalVirtClass *vvc =3D XLNX_VERSAL_VIRT_BASE_MACHINE_GET_CLASS(machi= ne); int psci_conduit =3D QEMU_PSCI_CONDUIT_DISABLED; int i; =20 /* * If the user provides an Operating System to be loaded, we expect th= em @@ -239,15 +249,15 @@ static void versal_virt_init(MachineState *machine) if (machine->kernel_filename) { psci_conduit =3D QEMU_PSCI_CONDUIT_SMC; } =20 object_initialize_child(OBJECT(machine), "xlnx-versal", &s->soc, - TYPE_XLNX_VERSAL); + versal_get_class(vvc->version)); object_property_set_link(OBJECT(&s->soc), "ddr", OBJECT(machine->ram), &error_abort); =20 - for (i =3D 0; i < versal_get_num_can(VERSAL_VER_VERSAL); i++) { + for (i =3D 0; i < versal_get_num_can(vvc->version); i++) { g_autofree char *prop_name =3D g_strdup_printf("canbus%d", i); =20 object_property_set_link(OBJECT(&s->soc), prop_name, OBJECT(s->canbus[i]), &error_abort); @@ -272,11 +282,11 @@ static void versal_virt_init(MachineState *machine) =20 /* Attach efuse backend, if given */ efuse_attach_drive(s); =20 /* Plug SD cards */ - for (i =3D 0; i < versal_get_num_sdhci(VERSAL_VER_VERSAL); i++) { + for (i =3D 0; i < versal_get_num_sdhci(vvc->version); i++) { sd_plug_card(s, i, drive_get(IF_SD, 0, i)); } =20 s->binfo.ram_size =3D machine->ram_size; s->binfo.loader_start =3D 0x0; @@ -316,14 +326,15 @@ static void versal_virt_init(MachineState *machine) } } =20 static void versal_virt_machine_instance_init(Object *obj) { - VersalVirt *s =3D XLNX_VERSAL_VIRT_MACHINE(obj); + VersalVirt *s =3D XLNX_VERSAL_VIRT_BASE_MACHINE(obj); + VersalVirtClass *vvc =3D XLNX_VERSAL_VIRT_BASE_MACHINE_GET_CLASS(s); size_t i, num_can; =20 - num_can =3D versal_get_num_can(VERSAL_VER_VERSAL); + num_can =3D versal_get_num_can(vvc->version); s->canbus =3D g_new0(CanBusState *, num_can); =20 /* * User can set canbusx properties to can-bus object and optionally co= nnect * to socketcan interface via command line. @@ -337,47 +348,66 @@ static void versal_virt_machine_instance_init(Object = *obj) } } =20 static void versal_virt_machine_finalize(Object *obj) { - VersalVirt *s =3D XLNX_VERSAL_VIRT_MACHINE(obj); + VersalVirt *s =3D XLNX_VERSAL_VIRT_BASE_MACHINE(obj); =20 g_free(s->cfg.ospi_model); g_free(s->canbus); } =20 -static void versal_virt_machine_class_init(ObjectClass *oc, const void *da= ta) +static void versal_virt_machine_class_init_common(ObjectClass *oc) { MachineClass *mc =3D MACHINE_CLASS(oc); - int num_cpu =3D versal_get_num_cpu(VERSAL_VER_VERSAL); + VersalVirtClass *vvc =3D XLNX_VERSAL_VIRT_BASE_MACHINE_CLASS(mc); + int num_cpu =3D versal_get_num_cpu(vvc->version); =20 - mc->desc =3D "AMD Versal Virtual development board"; - mc->alias =3D "xlnx-versal-virt"; - mc->init =3D versal_virt_init; - mc->min_cpus =3D num_cpu; - mc->max_cpus =3D num_cpu; - mc->default_cpus =3D num_cpu; mc->no_cdrom =3D true; mc->auto_create_sdcard =3D true; mc->default_ram_id =3D "ddr"; + mc->min_cpus =3D num_cpu; + mc->max_cpus =3D num_cpu; + mc->default_cpus =3D num_cpu; + mc->init =3D versal_virt_init; + object_class_property_add_str(oc, "ospi-flash", versal_get_ospi_model, versal_set_ospi_model); object_class_property_set_description(oc, "ospi-flash", "Change the OSPI Flash model"); } =20 -static const TypeInfo versal_virt_machine_init_typeinfo =3D { - .name =3D TYPE_XLNX_VERSAL_VIRT_MACHINE, +static void versal_virt_machine_class_init(ObjectClass *oc, const void *da= ta) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + VersalVirtClass *vvc =3D XLNX_VERSAL_VIRT_BASE_MACHINE_CLASS(oc); + + mc->desc =3D "AMD Versal Virtual development board"; + mc->alias =3D "xlnx-versal-virt"; + vvc->version =3D VERSAL_VER_VERSAL; + + versal_virt_machine_class_init_common(oc); +} + +static const TypeInfo versal_virt_base_machine_init_typeinfo =3D { + .name =3D TYPE_XLNX_VERSAL_VIRT_BASE_MACHINE, .parent =3D TYPE_MACHINE, - .class_init =3D versal_virt_machine_class_init, + .class_size =3D sizeof(VersalVirtClass), .instance_init =3D versal_virt_machine_instance_init, .instance_size =3D sizeof(VersalVirt), .instance_finalize =3D versal_virt_machine_finalize, + .abstract =3D true, +}; + +static const TypeInfo versal_virt_machine_init_typeinfo =3D { + .name =3D TYPE_XLNX_VERSAL_VIRT_MACHINE, + .parent =3D TYPE_XLNX_VERSAL_VIRT_BASE_MACHINE, + .class_init =3D versal_virt_machine_class_init, }; =20 static void versal_virt_machine_init_register_types(void) { + type_register_static(&versal_virt_base_machine_init_typeinfo); type_register_static(&versal_virt_machine_init_typeinfo); } =20 type_init(versal_virt_machine_init_register_types) - --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671584; cv=pass; d=zohomail.com; s=zohoarc; b=MT7CieHaPO33xmnNhJMkT3Jkt4UFXObtfLKJhTtErZ5d0DxSVI6ifCgQ4QMXKfMBmmGpV8Iv7EDrHYN4sIHO3LLCQbphlMTJq7TJhMelbuudS3v3jnX45rBifs24v89jb2X0oiJA8XxIGH+ckKD1M9bNhRNeiZvrCdA0iN171fw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671584; 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=4jcHHicCMl1JatyQANWUU8sdxf7EO3amzt7yuyzdCmU=; b=ASbCMZt/uLQFOb41YlaHMVwktyeQDEMpKPfPiTTM3E8hB4cTv9auwy/SdvL23tHjDJUNlcamI6QK64Z4Tt+begBfzr4mz7TyOQdV2jTrXBZWRMo8YLcvespp+7nYjTB/6YX8zRVKjF4soIP4k6iDqG4cpWK0PdsR/T1PPLS7wWc= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671584903944.7029282767825; Fri, 12 Sep 2025 03:06:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0ey-00037R-Sl; Fri, 12 Sep 2025 06:05:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0dD-0007jT-Mc; Fri, 12 Sep 2025 06:04:00 -0400 Received: from mail-mw2nam04on20600.outbound.protection.outlook.com ([2a01:111:f403:240a::600] helo=NAM04-MW2-obe.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 1ux0d0-0001Pf-HX; Fri, 12 Sep 2025 06:03:46 -0400 Received: from CH5PR02CA0008.namprd02.prod.outlook.com (2603:10b6:610:1ed::15) by DS7PR12MB8418.namprd12.prod.outlook.com (2603:10b6:8:e9::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:03:17 +0000 Received: from DS3PEPF000099D7.namprd04.prod.outlook.com (2603:10b6:610:1ed:cafe::a1) by CH5PR02CA0008.outlook.office365.com (2603:10b6:610:1ed::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.17 via Frontend Transport; Fri, 12 Sep 2025 10:03:17 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS3PEPF000099D7.mail.protection.outlook.com (10.167.17.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:17 +0000 Received: from SATLEXMB06.amd.com (10.181.40.147) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:38 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB06.amd.com (10.181.40.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:02:37 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:36 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=f9ZxaiRcpR4Cxp6x74+86JXmUbd/9COznbORIPBoanAnj71hwPy366iA26C572Mb46UJYCTg0tsUtQpFf0bizFofLlmEigc2Lg0Df2cQ4wapfPz0W2cJwaRed2QUbCXWrYA04PiGojSfa4RlbtaGXunCsVzhRhIKx9ICXTdxIVxGsZ340m3sWLSsAlL3hHsWY56ZhcYQW+0J8gfQ6hRVFbhvyVAnQa7/OWLdTa6Ts0PRGzrZdtdvRLI9/rS8KTcJ0oh4S3A0CcwNszHI0HqRfIBzAPMpGbohKfc+dxMzWQC5HhK48OdDIZ99U2ohrEJ0iJ9qkFfreCFNTSG/Z/UOUg== 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=4jcHHicCMl1JatyQANWUU8sdxf7EO3amzt7yuyzdCmU=; b=GW4DGrz+wOg/pwDqm/NZBMB8Rcim9mj9gLGlMNyznav5AmEo3oXU9tqszg6baxukoitv91FWOWqYWXQfqFKdv9C5n+/rQFoxaZN2ATOPT30J//RWu1ke3IvAM4QDk6EN53DpyK1bcuvP6C5sgKCvirE/kag7+bcfJUeYFmoHlzmfJpZOEZiq5pW/hYB7dfKtfCNlxbG/yUeCGB+yH1juweiSziv/udFZ/iOslxAqpkduNR0/zKN7dYhLSzAE4leB75yiq3AY5/viGmrBK1aJwN1moCqscoL0SJeHXmzEAWcLrWbwLAdjSIYEamMcMwfkccQVV8UdMUmplOMRTZeWFw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4jcHHicCMl1JatyQANWUU8sdxf7EO3amzt7yuyzdCmU=; b=1nzo1cP9po/lRkAsP+yWfnxWDg6oogl5Eg5NqnManRZ97rMNZM3beLVX1P9QndcqFUGNDmnfAPf0TspUdVYLty1xGQ2JFwV7XaWXGqfjRt8tjYkMGLO69MDmSgKsMONd6DIG4G9fWsdAP7qeicl4KJe7ArBA98z+1oEdANoUqwc= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 43/47] hw/arm/xlnx-versal-virt: tidy up Date: Fri, 12 Sep 2025 12:00:52 +0200 Message-ID: <20250912100059.103997-44-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099D7:EE_|DS7PR12MB8418:EE_ X-MS-Office365-Filtering-Correlation-Id: 2cf9a19b-d4c5-4eee-6bfb-08ddf1e3988d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|376014|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?DoQcr/FmSrN0X1mnefzr2ijpf2FkkR7rWezq+tzDz4xuZeEhN3YvT/1Q/yXs?= =?us-ascii?Q?F0PjzQWZqzxf4fyC8QRn+NJNpahxi/3ZSFL5N2XZWR+ku009AQV+diTeKV72?= =?us-ascii?Q?mE7vSgfdVDmbmEAyyYdVZywj/tI6j9cNH/28laB/m5eycPR59d2j+qVtFwCT?= =?us-ascii?Q?EV1KWCiVaks6VtNLlwnvaYuuuDc12C7Y80T21VWBmacr4/GJLbUGVg2y19H5?= =?us-ascii?Q?NBBI1xZbbTgWqiO7G6zsbXQgfD8pyQTxb+I2yR7lNVMKY8JMcI9ceP9XgoEO?= =?us-ascii?Q?DK5HPc0Shgu+1ikyT2Ru1LTnqznARD3PvFffIEqr7j98M8pQcN6a7HfmEdDD?= =?us-ascii?Q?FcWbHcFirdpxoIAlBnI3suQWpbr8rCzoQSs1PVxJIbp9Yxks+QDDArl5+J3J?= =?us-ascii?Q?xF7kINDmHyuzVEjLXYo731kLC9Ome7GpejkBxpjibJdx5HzE/RryM7pF5Ra+?= =?us-ascii?Q?4/e0lIoYVbhJxfGeWSJRM50lR+nS+m/RBDaGnAY5XYnA3pdoIVuS2moKtoVL?= =?us-ascii?Q?FtNQxVuxeQpLC2SEZ1vfdc44wTVvJtRrDL669TFwEuTbAqsQUfQsYYV3cZhr?= =?us-ascii?Q?MQGqwmzeeTvXMVJxOCwBo5DulZgovCMx5i75GCN/6QpEJbYaL6yRPDDJTNv/?= =?us-ascii?Q?E8dL4lzDkZs2pj/zBBwEbyaIAzOW94tJ0CGjRD0FxlVidxQT/7elr2+eg5dN?= =?us-ascii?Q?K0b204BO0Mmvtua2qo6FQ77Du5fbyfLkJs/SwbSHHFnegUk+EEdE2rqC781G?= =?us-ascii?Q?Q4bxid0s/3uDuYHwFhnE7ejSTyhK/fiTgjj7VF3/qTxv+wjp6sdX+tFDazVy?= =?us-ascii?Q?yUpEYQu0kOeJRxh6t9z1dUskA/ik95rC3Y2PTexgjTdYyU/aWZdv1L8jQeCw?= =?us-ascii?Q?fiu2icR3WxkTgIJvbM/knbmGm7H84vtPvu3K0ATwE8Rj90Wl7j8ihLVmkCg9?= =?us-ascii?Q?cn8NjjgvaIuYd8r1mw0QtMLXQCgCPm+kXc0klXHKtMt8/JK1Hfmh9n7GgG/K?= =?us-ascii?Q?dI02XsK3N5JLHQb91Ox9j5k2iUOythXxARu98Ls0el+UbetEMLJ8cOlrREWk?= =?us-ascii?Q?eOWujYx1Lx0KevyoAA/xXL7P66jKHCDKry0u0MEij5h0shbnDEL3R0V3K4Uv?= =?us-ascii?Q?ajUOoNs5gbMczqld/UzO+9xVcjQ6044JjzZOcr0gXN5p9uE1HUwtAhdTqeh2?= =?us-ascii?Q?eR1CuuUTs4Mb3xJMMlmjZmvV7Lpnp3C7DShkD0BTMXtlPpe7gBIVzH7nuj3M?= =?us-ascii?Q?8iqmae4yvOe0baMYcgBCmkXiY+sYcBcIt6RVGU1FJtmCYn8mFtZmS85cw9iN?= =?us-ascii?Q?4as6I4sYcE2vbGwrpQyXe71Mf0bTjkUMkRLgdhR4/TZD3w3R7sKBBJBqNE/H?= =?us-ascii?Q?P91cwN24NSMW9XGRhYDvlkwmHTezl2wip7Srl/4S31cckw3FkA/+3ivuulzv?= =?us-ascii?Q?0Nnwx8I0BWBtZDBv8RcTzPJKVTHe8w7rZJPPczRIN1mNN+8VqAcHirKr3T58?= =?us-ascii?Q?ulAK7J0b8UtfVT/2PfblxgJ3x/DwT7hQsK6K?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(376014)(1800799024)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:17.4933 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2cf9a19b-d4c5-4eee-6bfb-08ddf1e3988d X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099D7.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB8418 Received-SPF: permerror client-ip=2a01:111:f403:240a::600; envelope-from=Luc.Michel@amd.com; helo=NAM04-MW2-obe.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, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671585570116600 Content-Type: text/plain; charset="utf-8" Remove now unused clock nodes. They have been replaced by the ones created in the SoC. Remove the unused cfg.secure VersalVirt field. Remove unecessary include directives. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- hw/arm/xlnx-versal-virt.c | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index f9abb9ed639..14c2d5cc924 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -17,14 +17,12 @@ #include "system/address-spaces.h" #include "hw/block/flash.h" #include "hw/boards.h" #include "hw/sysbus.h" #include "hw/arm/fdt.h" -#include "hw/qdev-properties.h" #include "hw/arm/xlnx-versal.h" #include "hw/arm/boot.h" -#include "target/arm/multiprocessing.h" #include "qom/object.h" #include "target/arm/cpu.h" =20 #define TYPE_XLNX_VERSAL_VIRT_BASE_MACHINE \ MACHINE_TYPE_NAME("amd-versal-virt-base") @@ -39,20 +37,15 @@ struct VersalVirt { =20 Versal soc; =20 void *fdt; int fdt_size; - struct { - uint32_t clk_125Mhz; - uint32_t clk_25Mhz; - } phandle; struct arm_boot_info binfo; =20 CanBusState **canbus; =20 struct { - bool secure; char *ospi_model; } cfg; }; =20 struct VersalVirtClass { @@ -70,35 +63,20 @@ static void fdt_create(VersalVirt *s) if (!s->fdt) { error_report("create_device_tree() failed"); exit(1); } =20 - /* Allocate all phandles. */ - s->phandle.clk_25Mhz =3D qemu_fdt_alloc_phandle(s->fdt); - s->phandle.clk_125Mhz =3D qemu_fdt_alloc_phandle(s->fdt); - /* Create /chosen node for load_dtb. */ qemu_fdt_add_subnode(s->fdt, "/chosen"); qemu_fdt_add_subnode(s->fdt, "/aliases"); =20 /* Header */ qemu_fdt_setprop_string(s->fdt, "/", "model", mc->desc); qemu_fdt_setprop(s->fdt, "/", "compatible", versal_compat, sizeof(versal_compat)); } =20 -static void fdt_add_clk_node(VersalVirt *s, const char *name, - unsigned int freq_hz, uint32_t phandle) -{ - qemu_fdt_add_subnode(s->fdt, name); - qemu_fdt_setprop_cell(s->fdt, name, "phandle", phandle); - qemu_fdt_setprop_cell(s->fdt, name, "clock-frequency", freq_hz); - qemu_fdt_setprop_cell(s->fdt, name, "#clock-cells", 0x0); - qemu_fdt_setprop_string(s->fdt, name, "compatible", "fixed-clock"); - qemu_fdt_setprop(s->fdt, name, "u-boot,dm-pre-reloc", NULL, 0); -} - static void fdt_nop_memory_nodes(void *fdt, Error **errp) { Error *err =3D NULL; char **node_path; int n =3D 0; @@ -266,13 +244,10 @@ static void versal_virt_init(MachineState *machine) fdt_create(s); versal_set_fdt(&s->soc, s->fdt); sysbus_realize(SYS_BUS_DEVICE(&s->soc), &error_fatal); create_virtio_regions(s); =20 - fdt_add_clk_node(s, "/old-clk125", 125000000, s->phandle.clk_125Mhz); - fdt_add_clk_node(s, "/old-clk25", 25000000, s->phandle.clk_25Mhz); - /* * Map the SoC address space onto system memory. This will allow virti= o and * other modules unaware of multiple address-spaces to work. */ memory_region_add_subregion(get_system_memory(), 0, &s->soc.mr_ps); --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671780; cv=pass; d=zohomail.com; s=zohoarc; b=aaL0I+W6CdtNGJyxXRBZuVbqfm5SveNGCHY/122hWpv+ndwuzC/KtPbZooIpwS8zD3yR0blM5rXcvhPStPj59EV/KaDqdnCzqkeJ61t3W+V86mpAGgpUt8T/kBoqion7B4Dkg9cOo1cMnyD2NIEtVpa94brCukxigD29KPoK7oE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671780; 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=B/LE4HdhmfZXzyWKS/YZSlEw4Ov9sOTRx7x6dj1mD1U=; b=IpfDURUO9hQl2FAHuoaQkXNhK6l+dcQ2Q2ES5TyvTH8A4U1it3Q/y5/iW9dZPbwGFCxIw2Yz5Zy5H6KpxByFyxvVmnIAAUUJIcpnKdOcIs+Vme5apKJ0jaCkW6OhbanPHI3dxbCgycbWJqoDv+0vUx8di93v6p/TdYqq2YzMW3s= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671780129352.2735815328035; Fri, 12 Sep 2025 03:09:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0eM-0001Xe-3r; Fri, 12 Sep 2025 06:05:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0d4-0007XN-LT; Fri, 12 Sep 2025 06:03:52 -0400 Received: from mail-mw2nam12on2061c.outbound.protection.outlook.com ([2a01:111:f403:200a::61c] helo=NAM12-MW2-obe.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 1ux0co-0001P5-Lf; Fri, 12 Sep 2025 06:03:41 -0400 Received: from CH0P220CA0022.NAMP220.PROD.OUTLOOK.COM (2603:10b6:610:ef::24) by LV2PR12MB5896.namprd12.prod.outlook.com (2603:10b6:408:172::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:03:19 +0000 Received: from DS3PEPF000099E0.namprd04.prod.outlook.com (2603:10b6:610:ef:cafe::c4) by CH0P220CA0022.outlook.office365.com (2603:10b6:610:ef::24) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.18 via Frontend Transport; Fri, 12 Sep 2025 10:03:19 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099E0.mail.protection.outlook.com (10.167.17.203) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:19 +0000 Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:39 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb09.amd.com (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:39 -0700 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:38 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ha7Iy5Y7TNQ+webktMy4JR3OHRBvTRZNfucTsVQiMA6REjnr7/uhlynMLy+iyYQaUvuWi26jSIV3Kcl+HVg1nU7yDCOtLbgMef4i2LlqNNk0otgZ1wziXo9cINkMgLsn+PUlBd7XE4nxO7jG4NHqPCt9NgJC9sa3bdXaVJgI28PbV8LK/rQEsCf3kgLeeVPROjYgqHODKbX3uaZYRK57R+AaLO9l//Gv0aOjzqGYNuC+5bM6dPpxeLH5Gg6oamBp5fVnKOzjSYcXp3kPy6iWDERUyT6X1/l4TWTdK/07LEOa8xWbbNCr1HfmSE1o+7ldG3DfyjFSjIU62afdLRNE0A== 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=B/LE4HdhmfZXzyWKS/YZSlEw4Ov9sOTRx7x6dj1mD1U=; b=G2nQNyfHgjYwvM7SU5Lchk5mtkPS9q9WWX75ycffUkAvL1483Zq6k+e3Qr2Q1DuYTGugXih+zVUfW5x+6E7hT8Zz8sgfpvSwAaVdWLt5+tLW3CQlM4+r28DjdtctMM8FQemtGMu3UJqquj5WTUPSxw9MqoKNF2clAH+ypHXeLKKrZ+mfTG2+mr6PZE6U2ie9nJB2wRbbJoeidxz5gzxSLJrv8+9wUnh+HQKeiRNTMDKePMmAwpcjqAGoTWFN+pAGEAfdpf/aiShd8IbRX6Kq7PfQluwc7jiXAty58rd+Lrdr38/X9lFp35RLRvGq4pUJL5fdwsDm15IST15hxnwPuA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=B/LE4HdhmfZXzyWKS/YZSlEw4Ov9sOTRx7x6dj1mD1U=; b=3aFVFBbsv5GPhh+YkCsCWO00xPBFaD/PtVlYp+1D+OVyU2mavLQqY5HfWUGWFh8Ih3dVPPV5/lDOsegGSny3m5qjBzuFki8ZAdzvTz1e/sn8Q4lIROq0s/984B8FZ2Sj6m+bZ5BMANpBj1kfJqn/GLnoBhU9Q3+X5GC8OnsN8LY= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 44/47] docs/system/arm/xlnx-versal-virt: update supported devices Date: Fri, 12 Sep 2025 12:00:53 +0200 Message-ID: <20250912100059.103997-45-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099E0:EE_|LV2PR12MB5896:EE_ X-MS-Office365-Filtering-Correlation-Id: c7edaf8d-e42d-4605-a5f0-08ddf1e3998a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|376014|1800799024|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?TKgqlww6xhn7B6TZP1/vnGdxe8rsp5I6dbib3MZozOzES+YIjGGluooIZEkv?= =?us-ascii?Q?9FXwf7h/ilNiIxJCNaUmSTGxXPao33ljOv48T4kaMQ3eBfg/0ubzgeJsy6cB?= =?us-ascii?Q?p0WAY55kLLbeyC/82DrR/9OFVuTell/x2YccMfBadmTrfwRZWqvnz/anD4wn?= =?us-ascii?Q?JR+T4bzF/lsNj2j0sS+8lVzfLfKcFmAetg3Ubf1fUdRcPo4j7Kw5LWFszzYo?= =?us-ascii?Q?SZ2ltIJV5p8ysc3IjxguCZXbX0HFCaAkmMLtltw2MjT/+BtocHeYoS17o2G+?= =?us-ascii?Q?g2jNPmj0kFRltvWSBZEHVR9IPM4X8RN9vqts1kVMeOI97g6JpfeIf87+5OBY?= =?us-ascii?Q?QQ87nlpBrouG1uwW55OhccHCrPasXJqIXfx6sSfArINtPeil6p+u1FdQ+cih?= =?us-ascii?Q?lMMd96v1ZkVTreGAdEjnSXtK06b/xi6GwRw+03ppxYK+AWnuk1q9nPi8WK9N?= =?us-ascii?Q?5T5W5BtFlEDTN1/LsvXcLBVlnUdzVVgXzlHX0WN0CMa/cJgFh00vHmifh2G9?= =?us-ascii?Q?b4oe491EfJBlQM6JkOm+s1ESnjpemNrJ59ECCdkzgvfwbCeZ5StyoIsWZewU?= =?us-ascii?Q?eW/pSrrFvpWEK6QIoX1r+t/wHNevWaBqIU+bQE47IZP3nMCWUPZ+LG2tAxDb?= =?us-ascii?Q?5a2MHBI2e+tOvu1wuWVytii68l5DiYZGnx4VF/as5ZW4ViO1SV7QDBEW9oPf?= =?us-ascii?Q?8ijwiv/VEheSZ7rkwRK5F7uchsB9Yf8q2IrMv39wSoCXazxdJ1KvsYCxutkF?= =?us-ascii?Q?zzg58Fpwr107SlXxbLJD7Rl2OUxNjhkllvLOvXOncj2/9pNsExpES7LMQW/Y?= =?us-ascii?Q?YTMRBe++akJUjfJIdndkTYAH+BCaOaNeGL7qOzYY4KANEFV6gjHLnQYMS10a?= =?us-ascii?Q?NVoMf1wrF4nYpDgvdsUY93sxYUaM3NvP+Wg0g4LzAoaxu6g3yk1TL+ldPMsH?= =?us-ascii?Q?Qzvr/EQyWIyqmvDQWPxpEZ6u5wLzHw4dE5df0aP2KmeMig4Ey6x3onC5ck+T?= =?us-ascii?Q?eDXH0g0pbXjWJ/y1zTvLaxJ4i9MKDOck0ItePBJL4lGF/dnreRP38B38BtpP?= =?us-ascii?Q?nvQQe8CjrU4mRg+5LzmcMJZ7dGz58GCt000XdeWItiJRnbA2vnv4yUfx33WL?= =?us-ascii?Q?kaWem5Ny49DnaKZOIOT60SuTVRwH3fN9QDK3FUg/iYADR3HwSB/pcPG+oUqM?= =?us-ascii?Q?vzQZj8NBGIQM0gyDZdvknve0eSCFyYpYhzC0uH92dBLZSXNV7o9B/k+M5O0N?= =?us-ascii?Q?ui6/26YfWuw5FH7y5kt0AG68p5k2D01x7BCDfeclcEUiXvlKB2qjVlThC2eS?= =?us-ascii?Q?MlmlzDO2SQGN1dTHbjF3a0ubt2U8eBWv0mZhFln0+m9ZQLiQ5Osplt9O6KSi?= =?us-ascii?Q?eRu9Fe257y57kExbCukD1ypbptl2CD9LIC9AS/x7aBZnS1OrecLMbDXcRhDo?= =?us-ascii?Q?BGAYc5YmAKrLUrhQH8tA/HAfksIIB0vVjIEajI3W4CrK/8TsdWwunWt/IxSq?= =?us-ascii?Q?2hIkohFOLOi/Guuj7uAodJy+PhRXT28f6aJ1?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(36860700013)(376014)(1800799024)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:19.1545 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c7edaf8d-e42d-4605-a5f0-08ddf1e3998a X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099E0.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5896 Received-SPF: permerror client-ip=2a01:111:f403:200a::61c; envelope-from=Luc.Michel@amd.com; helo=NAM12-MW2-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671782262116600 Content-Type: text/plain; charset="utf-8" Update the list of supported devices in the Versal SoCs. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- docs/system/arm/xlnx-versal-virt.rst | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/system/arm/xlnx-versal-virt.rst b/docs/system/arm/xlnx-ve= rsal-virt.rst index 2c63fbf519f..94c8bacf61a 100644 --- a/docs/system/arm/xlnx-versal-virt.rst +++ b/docs/system/arm/xlnx-versal-virt.rst @@ -21,15 +21,15 @@ The AMD Versal Virt board in QEMU is a model of a virtu= al board (does not exist in reality) with a virtual Versal SoC without I/O limitations. Currently, we support the following cores and devices: =20 Implemented CPU cores: =20 -- 2 ACPUs (ARM Cortex-A72) +- 2 ACPUs (ARM Cortex-A72) with their GICv3 and ITS +- 2 RCPUs (ARM Cortex-R5F) with their GICv2 =20 Implemented devices: =20 -- Interrupt controller (ARM GICv3) - 2 UARTs (ARM PL011) - An RTC (Versal built-in) - 2 GEMs (Cadence MACB Ethernet MACs) - 8 ADMA (Xilinx zDMA) channels - 2 SD Controllers @@ -37,10 +37,13 @@ Implemented devices: - XRAM (4MB of on chip Accelerator RAM) - DDR memory - BBRAM (36 bytes of Battery-backed RAM) - eFUSE (3072 bytes of one-time field-programmable bit array) - 2 CANFDs +- USB controller +- OSPI controller +- TRNG controller =20 QEMU does not yet model any other devices, including the PL and the AI Eng= ine. =20 Other differences between the hardware and the QEMU model: =20 --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757672280; cv=pass; d=zohomail.com; s=zohoarc; b=n6Q4J2pmhiElUx/ehgMVcFM5FhaM5PGOZJBxzSFxqOLIQZ5TSuS1W2qapo2wsJBIazHzIgv8KpWthIhx0V0Sil26zdDLYUUAe9bwS6eWtlJW8VK517UzEunlXhJyTAq910XGEoucZrjizVfDLZDZn0njholCyEnwqrt7a7mQ580= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757672280; 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=RHK8ys2NHiMe5Y74ks2/3+TVAL4SbZHKA/dQxjpvi6s=; b=Z3WDSHp9q2bvB1INhBs4Lzv01ujBbY2qLXsAVqzaLydQI6xcMhVY4wIteIRjAK8COWGWvTAJnq8rh1+EoJ3/mm/8IGWn0ev2qePk8cHOExkBOPX67uEujhTymojJBhwCskWUiTTgciLXF+EMKBTSnR2kM5m4wXjLuKqrydj+YIk= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757672280173189.15379023836124; Fri, 12 Sep 2025 03:18:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0eu-0002xE-9P; Fri, 12 Sep 2025 06:05:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0dB-0007jK-Mq; Fri, 12 Sep 2025 06:03:58 -0400 Received: from mail-mw2nam10on2062f.outbound.protection.outlook.com ([2a01:111:f403:2412::62f] helo=NAM10-MW2-obe.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 1ux0d0-0001Pv-2c; Fri, 12 Sep 2025 06:03:47 -0400 Received: from CH0P220CA0012.NAMP220.PROD.OUTLOOK.COM (2603:10b6:610:ef::18) by DM4PR12MB5987.namprd12.prod.outlook.com (2603:10b6:8:6a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.19; Fri, 12 Sep 2025 10:03:19 +0000 Received: from DS3PEPF000099E0.namprd04.prod.outlook.com (2603:10b6:610:ef:cafe::7d) by CH0P220CA0012.outlook.office365.com (2603:10b6:610:ef::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.17 via Frontend Transport; Fri, 12 Sep 2025 10:03:19 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099E0.mail.protection.outlook.com (10.167.17.203) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:19 +0000 Received: from SATLEXMB06.amd.com (10.181.40.147) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:41 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB06.amd.com (10.181.40.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:02:41 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:39 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bC0DIKDyboqwNzgyzR0dEGAAGTF/UeMHu/c5nm0sWkKcyfF2RdSENpI7Bude/CA3XIjp7KHXqCIeqmAabn6Vj3eLmPJHzohjrrKJwPXpZbStGULm+ha9SyqgFNy2UPbBBePTJWDJ388s+asrlzTHwC/mbTsEmcvn759ZfG+yvKKPhhsGzdD18ddfcWQA85ulLW4uNpM6O5ad/iwkQsNSeXgEy+QWtpQUHZo4k+zHI18mAVsWx52M1yRdw/SS+1BoY5pWLUIMTMWu30nZ4kt19KcV9vVon94eXVy3iJi+Pq/2hQ0qyb7PtafDkOhsJbG34c1pqhQso9E1gnlN5EUFMQ== 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=RHK8ys2NHiMe5Y74ks2/3+TVAL4SbZHKA/dQxjpvi6s=; b=EIX6B42mfFJvr1rkk8wCnNHKIlfxTrjE86h/QRBgSPZFivyoFhkjjzMWoW29BQz7ylojwnSg78dgCjcba3LNn8CNso+gOVbtkcedzEO66F7X89KOlyLKjKrgJe2tPJPBf55se3/aBLRU/bTZShfIwvWtPiOlfnY0iJntGpT1AC2TZr/K6eG1hwxxVRSAmyB2Fre6cPF/zVvjIWVgBN5a1N+oD9H16SB8pjlrNeiJGbpKB2s5ovilVrglpXc5knXNC164xpi8AYluhx1tY9pYvluzvz+8+lhsXzFAfRtmqhprtSF+r8EwM1QPq7K06yfBkfnEMuTTx7WKfYBZJMDx+w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RHK8ys2NHiMe5Y74ks2/3+TVAL4SbZHKA/dQxjpvi6s=; b=bmqzcmINN61umT4VEF8hfz+KQABULqoW5L7thdYprPlWGNtS8M3tnBWaqBsrYDQG7Zac6NCtCy+RXc+GOGVFmAWBzICjsB53cI0MDGnlw9EsJ2BK0XGZZ9SVoZasL8GC8peiyEJiVtO7OF2HScp4dPPd1hzLIkKjZnvbYjIjvUM= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 45/47] docs/system/arm/xlnx-versal-virt: add a note about dumpdtb Date: Fri, 12 Sep 2025 12:00:54 +0200 Message-ID: <20250912100059.103997-46-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099E0:EE_|DM4PR12MB5987:EE_ X-MS-Office365-Filtering-Correlation-Id: 23d42f6e-5295-4cbc-8a45-08ddf1e399d3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|376014|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?t10GhxZ7gvCdOX/u9KfEYfj9LeKCQnS22kNls56sQvqcQOYxtlX8cr3algpf?= =?us-ascii?Q?bUWOENNpBu/8G5UxJrIEwOSg248LvWTAW0dqvooUbJRI2aHIpvQTzhAxGPpD?= =?us-ascii?Q?ecyv2u6dXa1xG23hl38N66akMQKM6oe6QZ0hi9mgfA8jrVTAxyDjfbIhgTt0?= =?us-ascii?Q?u1kiPkKY0VW/kzXMyhJw3oBsbRbsdbYkWkaOJC3eCV3NbEo2SFBCPc8YuxFZ?= =?us-ascii?Q?u2gCUt97wr9KcBB6PLWppHCyaM3pDfuaJ7KXoNsKfZP3h1tA+D+RK5q8E3bJ?= =?us-ascii?Q?mdB2JvyBep7mu8yQzbcjIuuSoC5OYpoZtnDNdcYdq6gq9eR4sUmGCWUoaB+a?= =?us-ascii?Q?CA7cDYSVzYSUv8NGYztr4745OVGnGgUzwhsTK4/UL8B7sepqGpyTtiaIjvhL?= =?us-ascii?Q?hULAXdQ0k6MyRzztERoJtjw+1gKSFizENkpSfuadXhk4XS0niLfrY8b6Xpv6?= =?us-ascii?Q?Vvo6Xc4KWtWymvXa9tG91ER8bFQjwnRLT9n5+nfxgx3mFH+brXgZIktJISsy?= =?us-ascii?Q?kfPCF2LbqaH5AtYWfttLSBeEEPsIKMPEpatL5bMkM1yPYqCuiVy7sUb1WFgO?= =?us-ascii?Q?ruXFFQkTf8i9Pcmz7D9+zWhHBkBfy+clBQnI9bwYqF6nhB9gIVrYVUVpwP8b?= =?us-ascii?Q?BW0MScEJEPE21mRACOph1fwiYXzjtnc7/ZOqfUzPo7KPMA9mIYppjcr6B+K9?= =?us-ascii?Q?p+dnxq9odkiza4ImzHcupVZZ5xg/c7mqD44JwQqH8+fBBEfTUIVS80LwTxrD?= =?us-ascii?Q?wzaTkeMr6VsdtgbUb0EOqwnmiTnCAJR4bR+tL2KYSS//v/rRDwH0jAf5hdFQ?= =?us-ascii?Q?XaEhT+sg/V2ANGBPNGTNXdljOZiTZkUFuZ+iJqIMsU3JrOHrt4z0FEWe1WgX?= =?us-ascii?Q?Ml10rnsMbimYTvyWfFekXfCEQI7NUoZ+D6kImYq4JwdpBrHIuuFcwfp+mSbh?= =?us-ascii?Q?78E7LJyLKUmi6zh5je99mmLvRn13YEeMjw/3UoaTu1zpOMFJ+RVpNlFMgZee?= =?us-ascii?Q?k2m3w9xmCWPvDwR+ARRa60p+/WQrQLFNAiHschdjuDLsydUtM54ztKXY+7hp?= =?us-ascii?Q?tzEFN9Uey5voPSAn0vfins6HpTRwt8hqQ3pTjvpNO3tda/Mo5wC9ZQz2cz5e?= =?us-ascii?Q?k2lhF96lfs/eO5XcK5ldSFOCwSLoFlRFMYy4aRCnPCEj5D5ynDx0C4F1aHH5?= =?us-ascii?Q?0TPKfTg/QCC5l4sG3gilr+APAbFiA7kidS8EzgVcJXafcYt8Qzl2OEHo1DvU?= =?us-ascii?Q?mcBdMauQVnCdWiwmfYGboXm5mPy6GP+/oPIt0lqG/QBib9+STk9fDYyolkFN?= =?us-ascii?Q?rLp8NOa+ET8jdk7lbMcV9D1AV3HZSZbhEdlXuql37nf2r+Q39h/zInbQgAnY?= =?us-ascii?Q?3NxOveG/8LzXoLDeonoVi85FNtF2QSwLvDOgGHhMbeX7GOc7ooQ4vhQp8zxP?= =?us-ascii?Q?jhDF9ikMiteatIZbpCGu+cgTRwd/GU4omzAI0y4EgpPACDNk5v2QwppI0z0Z?= =?us-ascii?Q?6B2j6AqnFWRdQbQ5c3CcGz/ky2bElJ14FlGF?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(376014)(36860700013)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:19.6332 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 23d42f6e-5295-4cbc-8a45-08ddf1e399d3 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099E0.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5987 Received-SPF: permerror client-ip=2a01:111:f403:2412::62f; envelope-from=Luc.Michel@amd.com; helo=NAM10-MW2-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757672280698116600 Content-Type: text/plain; charset="utf-8" Add a note in the DTB section explaining how to dump the generated DTB using the dumpdtb machine option. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- docs/system/arm/xlnx-versal-virt.rst | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/system/arm/xlnx-versal-virt.rst b/docs/system/arm/xlnx-ve= rsal-virt.rst index 94c8bacf61a..5d7fa18592b 100644 --- a/docs/system/arm/xlnx-versal-virt.rst +++ b/docs/system/arm/xlnx-versal-virt.rst @@ -63,11 +63,17 @@ Users can load firmware or boot-loaders with the ``-dev= ice loader`` options. =20 When loading an OS, QEMU generates a DTB and selects an appropriate address where it gets loaded. This DTB will be passed to the kernel in register x0. =20 If there's no ``-kernel`` option, we generate a DTB and place it at 0x1000 -for boot-loaders or firmware to pick it up. +for boot-loaders or firmware to pick it up. To dump and observe the genera= ted +DTB, one can use the ``dumpdtb`` machine option: + +.. code-block:: bash + + $ qemu-system-aarch64 -M amd-versal-virt,dumpdtb=3Dexample.dtb -m 2G + =20 If users want to provide their own DTB, they can use the ``-dtb`` option. These DTBs will have their memory nodes modified to match QEMU's selected ram_size option before they get passed to the kernel or FW. =20 --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671923; cv=pass; d=zohomail.com; s=zohoarc; b=O2SFOePaFvMhHhFwy/tHdnWZUt5j32VQh6UOVo/Xhz9TFpegHmTGDVRuKUd6j7rkxQBCm/L+CBENbTOMHA0pGmv14scSNfLAhBCMkONO2Xp33EJlFvtYuKxAErFnCfKDVGCPH32BkdSzN/VdExyCwx793PUCDekoBwI+xsQ7ksw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671923; 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=pu5j4p6dJPRM6/eTqsWw1L1DWeJN7S2OWIRl2H+MZDw=; b=bya+7pJ3EbqLTEfNykxkM7xEXx+1jeMeIsFcx3S6rUW2q1FSb0415455YEC6KD7P44musmAJ/izxWYirYt/hzkjzH+ibyOTAyx4L5Lvf6k6W2cvDTI5rF33xYSaCf3BqjOOyT55LQ/aIRNS5FuW/VpyWLTPhvgx4X6nQjgFYlfI= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671923947285.60238997252156; Fri, 12 Sep 2025 03:12:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0eu-0002xG-AC; Fri, 12 Sep 2025 06:05:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0dD-0007jU-MO; Fri, 12 Sep 2025 06:03:59 -0400 Received: from mail-dm3nam02on20621.outbound.protection.outlook.com ([2a01:111:f403:2405::621] helo=NAM02-DM3-obe.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 1ux0d1-0001Qa-SA; Fri, 12 Sep 2025 06:03:46 -0400 Received: from CH5PR02CA0003.namprd02.prod.outlook.com (2603:10b6:610:1ed::23) by SJ2PR12MB9244.namprd12.prod.outlook.com (2603:10b6:a03:574::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:03:19 +0000 Received: from DS3PEPF000099D7.namprd04.prod.outlook.com (2603:10b6:610:1ed:cafe::d4) by CH5PR02CA0003.outlook.office365.com (2603:10b6:610:1ed::23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.17 via Frontend Transport; Fri, 12 Sep 2025 10:03:19 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS3PEPF000099D7.mail.protection.outlook.com (10.167.17.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:19 +0000 Received: from satlexmb10.amd.com (10.181.42.219) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:43 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb10.amd.com (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:43 -0700 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:41 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KhA/e7OVo7WtOZdAahzepxUiyof2uaB+vsTuwX9CDP1443tq6vN/t6zaaFCfs5YnaCo6/1pBUQw8l86gbSP8Ybe/TL3e3zos0BqxrcnQ3kDWJ9DPmaSgZCq22JRfbuxi3zqPBa/yN4fX2rfdXosjMe8Y8BKgsoWvU9hhrqelXx81G8h79Zlj4GOhYS7gYImDNcjPbb9olsRXsqxxT6gomRd+n5BA7bUdmc9LhWTIT1p0/XyNTBVy557/R0lHZZhEfmnQ841ZaeTO6MGFd4CLq11G7JpwXHeDyPJmDjYvE/ov6FL85RjWArPFwkfFPn2T58lo/veSeKI3H/XjLqrtRA== 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=pu5j4p6dJPRM6/eTqsWw1L1DWeJN7S2OWIRl2H+MZDw=; b=lLEaayEUrDcX+Cp0DxDhOROMOalcj82mceLy3MKwtOC8U4FVn6t7o73MoEMNpoaymPEe7RznDrpLMg/E1OWqvthay4ZgNQeOgr2kRkB4Ggc7BuKL584i/U53LVKjIbPkkBu3RvIKMY2kIBsquc0EGzcPowSkW/9Ms14JdQs13bPnJoDF5NnWoHu5+lNl4HNgyPbsYMINJrfY+fBP119F5M5Ih0VMGC+y3+tZsSLmyGAkozgc3yzx/o01IbbCUz9Yv537FujtKneHdUz4hrFet545pMZZV//nKBp2bXzBNrbPH8xs4TLR9xaZ6dbXl5kTwaZCd7gBypXtVfS+MNEj+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pu5j4p6dJPRM6/eTqsWw1L1DWeJN7S2OWIRl2H+MZDw=; b=4WRLX27qQEn861YrIIoMbisRE7+Gb4stDx/ESan2Fb5ZlUAAZ5R//eaCIM4OCfHQC2kvw1vm2JKFuL2k6aNopNhyhRuhG/29yJoFr8Oi4gsYcXgN9Kw1HhNcpVPiDvjJdIl8o+7P26ynA0fMuZ12K0/6Gywe3VeusLxwRPb6x6E= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 46/47] hw/arm/xlnx-versal-virt: add the xlnx-versal2-virt machine Date: Fri, 12 Sep 2025 12:00:55 +0200 Message-ID: <20250912100059.103997-47-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099D7:EE_|SJ2PR12MB9244:EE_ X-MS-Office365-Filtering-Correlation-Id: 69a43ea5-9902-4c00-af5c-08ddf1e399af X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|36860700013|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?5KyuBsejxPlkdzkyGnzhjtBQOIFwHAdacLl68VV4jrgpabAAiMtHKzyEnX7c?= =?us-ascii?Q?kKbXmrTJZ3/uGFnS/qqB7hN9WDGJGq7ayOQ/52fC07qROtEE/ab4Hm6vUwPe?= =?us-ascii?Q?OXr5JOLUMERPRXRf2V1L4lN/GiscNXfqK579WeaySV2ZSpbOavUGlu1jwTqx?= =?us-ascii?Q?ZPBXR2x979zcDH5HZMHjv8V1R7qwWYmdVvUh0pMXFROxx0/WG2MoBDU6m85u?= =?us-ascii?Q?A4K1fyOF/8EIEu2skKm17Luqe7Sha6z80NUQhhBmIw+/KBhohAUsW6Aky/oP?= =?us-ascii?Q?A/Hq6T6WKGiKBISdCDRcmOOVbZENnbG5xePnl5m/ZtnWcGFks2UvAmhUpgjN?= =?us-ascii?Q?i0iZU9e5tjKArlZyZXPGU7JE3nLjhD+/BgNmlOFZDspk5AY338QP++EZS4s3?= =?us-ascii?Q?BfK4DgqE6U34JfEO8BTJFW0ouDvGr0zCd3FvSiLkx0ABdW0pfJNKTJfdWeBE?= =?us-ascii?Q?TLacV36wz5ytL2Q+5PVVkrfpNrzujGGtyoesJoZADMtUTiY1bUjJYHWHx+CH?= =?us-ascii?Q?nER5jG8ckQMRfQe0PftfnNuaxArVLTbQo23aXlb8LbgPrYJjvEPZyAs+iyEx?= =?us-ascii?Q?VFRN/BzcxefXrHe68bCltz+HFwhNlTIR736d3MZNFs/aUEnZMKJh/I7e4RwJ?= =?us-ascii?Q?ThYM3zM4e59Qvu3LBZzUQjjjVTeJ3JzTzs4bRTyF8pqzE/bMT569apIHHmdF?= =?us-ascii?Q?AmaPP1HnUY69KTBC9InlDM36+umKJoB2qqJpirz6vCVVjwBsxOG3B/d22WGj?= =?us-ascii?Q?ikVkM8rgGtNWGeDpNEs4GVGawnSlQm8VXZmivt1He/UPqwfUN7CVd76UHQq2?= =?us-ascii?Q?Viz/No/lE/Erh6U6g58UeoFmI2bh9XQot2o5UgN1jaaIZlwuBPmdLzWOY1m2?= =?us-ascii?Q?CAgZ8LxNtd8AHxg6FKqtB3jbWHzbcaLAsgKSgitSC/SFaVGk+ZgUrJo98Q6x?= =?us-ascii?Q?uBZRJDMPN6Fw2UiDXxHcbhRAHyqlUpL1WZoKzm8nogzfz8EH7FnOdFc9JqaG?= =?us-ascii?Q?xrEdX1mY9Np3CqzdHiClQu2Xr1deetcqmdihNpabkhZ7VRApRnjn4Tqik6pQ?= =?us-ascii?Q?VFbFJhDP6Ju7MsFhxv1Lxdy8XOiR5dCfZlsYdny5QRtVxejn/TA/bCFZ7LmX?= =?us-ascii?Q?xsjnlBllPtCWxBJTlzf18bvYg741qh+F651Ut53xMa+DYvBvtV6eOACTXagX?= =?us-ascii?Q?ZX8xMQ1qacgPvFrdcGyT6m7XYLhQk3ugEsATBtC08ZVJR8Ow0+MXKJeqeWIh?= =?us-ascii?Q?KjvrWYESlaaPPm74QJUTasnOll++hbRLLz70yNqLXEqzKdWnGSYedwjwOM8H?= =?us-ascii?Q?hyJjqY33QvX+mSWHYSiQCOn4jYYTijFwJ41rEXBEskvpnAgSzJ4eJ6JCQneY?= =?us-ascii?Q?Y6PccBlC1K6L9wLOR9VsBilYNoCoH0v2kYisxDE+Pw8i+TGVssu1KzgKPo1k?= =?us-ascii?Q?7S3UFMgoqmP1nvjaC8U5RHJvW9hwx/bXUWIll6YPd96OwzP7qX6gXBQ/aBQF?= =?us-ascii?Q?HUBgGBe7kSDBSoCng1N1wMD51AwFE7KpK0nBaALGPjRVyD6Q6V7ovj1t0w?= =?us-ascii?Q?=3D=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(1800799024)(36860700013)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:19.3969 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 69a43ea5-9902-4c00-af5c-08ddf1e399af X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099D7.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB9244 Received-SPF: permerror client-ip=2a01:111:f403:2405::621; envelope-from=Luc.Michel@amd.com; helo=NAM02-DM3-obe.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, DKIMWL_WL_HIGH=-0.001, 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, WEIRD_QUOTING=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: 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 @amd.com) X-ZM-MESSAGEID: 1757671926195116600 Content-Type: text/plain; charset="utf-8" Add the Versal Gen 2 Virtual development machine embedding a versal2 SoC. This machine follows the same principle than the xlnx-versal-virt machine. It creates its own DTB and feeds it to the software payload. This way only implemented devices are exposed to the guest and the user does not need to provide a DTB. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- docs/system/arm/xlnx-versal-virt.rst | 49 ++++++++++++++++++++++++---- hw/arm/xlnx-versal-virt.c | 37 +++++++++++++++++++-- 2 files changed, 76 insertions(+), 10 deletions(-) diff --git a/docs/system/arm/xlnx-versal-virt.rst b/docs/system/arm/xlnx-ve= rsal-virt.rst index 5d7fa18592b..640cc07f808 100644 --- a/docs/system/arm/xlnx-versal-virt.rst +++ b/docs/system/arm/xlnx-versal-virt.rst @@ -1,16 +1,18 @@ -AMD Versal Virt (``amd-versal-virt``) -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +AMD Versal Virt (``amd-versal-virt``, ``amd-versal2-virt``) +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 AMD Versal is a family of heterogeneous multi-core SoCs (System on Chip) that combine traditional hardened CPUs and I/O peripherals in a Processing System (PS) with runtime programmable FPGA logic (PL) and an Artificial Intelligence Engine (AIE). =20 -QEMU implements the Versal Series variant of Versal SoCs, with the -``amd-versal-virt`` machine. The alias ``xlnx-versal-virt`` is kept for -backward compatibility. +QEMU implements the following Versal SoCs variants: + +- Versal (the ``amd-versal-virt`` machine, the alias ``xlnx-versal-virt`` = is + kept for backward compatibility) +- Versal Gen 2 (the ``amd-versal2-virt`` machine) =20 More details here: https://www.amd.com/en/products/adaptive-socs-and-fpgas/versal.html =20 The family of Versal SoCs share a single architecture but come in @@ -19,10 +21,12 @@ other differences. =20 The AMD Versal Virt board in QEMU is a model of a virtual board (does not exist in reality) with a virtual Versal SoC without I/O limitations. Currently, we support the following cores and devices: =20 +Versal +"""""" Implemented CPU cores: =20 - 2 ACPUs (ARM Cortex-A72) with their GICv3 and ITS - 2 RCPUs (ARM Cortex-R5F) with their GICv2 =20 @@ -41,20 +45,42 @@ Implemented devices: - 2 CANFDs - USB controller - OSPI controller - TRNG controller =20 +Versal Gen 2 +"""""""""""" +Implemented CPU cores: + +- 8 ACPUs (ARM Cortex-A78AE) with their GICv3 and ITS +- 10 RCPUs (ARM Cortex-R52) with their GICv3 (one per cluster) + +Implemented devices: + +- 2 UARTs (ARM PL011) +- An RTC (Versal built-in) +- 3 GEMs (Cadence MACB Ethernet MACs) +- 8 ADMA (Xilinx zDMA) channels +- 2 SD Controllers +- OCM (256KB of On Chip Memory) +- DDR memory +- BBRAM (36 bytes of Battery-backed RAM) +- 2 CANFDs +- 2 USB controllers +- OSPI controller +- TRNG controller + QEMU does not yet model any other devices, including the PL and the AI Eng= ine. =20 Other differences between the hardware and the QEMU model: =20 - QEMU allows the amount of DDR memory provided to be specified with the ``-m`` argument. If a DTB is provided on the command line then QEMU will edit it to include suitable entries describing the Versal DDR memory ran= ges. =20 -- QEMU provides 8 virtio-mmio virtio transports; these start at - address ``0xa0000000`` and have IRQs from 111 and upwards. +- QEMU provides 8 virtio-mmio virtio transports. They use reserved memory + regions and IRQ pins to avoid conflicts with real SoC peripherals. =20 Running """"""" If the user provides an Operating System to be loaded, we expect users to use the ``-kernel`` command line option. @@ -212,10 +238,15 @@ To use a different index value, N, from default of 0,= add: =20 -global driver=3Dxlnx.bbram-ctrl,property=3Ddrive-index,value=3DN =20 eFUSE File Backend """""""""""""""""" + +.. note:: + The eFUSE device is not implemented in the Versal Gen 2 QEMU model + yet. + eFUSE can have an optional file backend, which must be a seekable binary file with a size of 3072 bytes or larger. A file with all binary 0s is a 'blank'. =20 To add a file-backend for the eFUSE: @@ -269,5 +300,9 @@ To connect CANFD0 and CANFD1 to host machine's CAN inte= rface can0: =20 .. code-block:: bash =20 -object can-bus,id=3Dcanbus -machine canbus0=3Dcanbus -machine canbus1= =3Dcanbus -object can-host-socketcan,id=3Dcanhost0,if=3Dcan0,canbus=3Dcanbus + +.. note:: + Versal Gen 2 has 4 CAN controllers. ``canbus0`` to ``canbus3`` can + be specified on the command line. diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 14c2d5cc924..149b448546e 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -1,7 +1,7 @@ /* - * AMD/Xilinx Versal Virtual board. + * AMD/Xilinx Versal family Virtual board. * * Copyright (c) 2018 Xilinx Inc. * Copyright (c) 2025 Advanced Micro Devices, Inc. * Written by Edgar E. Iglesias * @@ -27,10 +27,11 @@ #define TYPE_XLNX_VERSAL_VIRT_BASE_MACHINE \ MACHINE_TYPE_NAME("amd-versal-virt-base") OBJECT_DECLARE_TYPE(VersalVirt, VersalVirtClass, XLNX_VERSAL_VIRT_BASE_MAC= HINE) =20 #define TYPE_XLNX_VERSAL_VIRT_MACHINE MACHINE_TYPE_NAME("amd-versal-virt") +#define TYPE_XLNX_VERSAL2_VIRT_MACHINE MACHINE_TYPE_NAME("amd-versal2-virt= ") =20 #define XLNX_VERSAL_NUM_OSPI_FLASH 4 =20 struct VersalVirt { MachineState parent_obj; @@ -55,11 +56,13 @@ struct VersalVirtClass { }; =20 static void fdt_create(VersalVirt *s) { MachineClass *mc =3D MACHINE_GET_CLASS(s); + VersalVirtClass *vvc =3D XLNX_VERSAL_VIRT_BASE_MACHINE_GET_CLASS(s); const char versal_compat[] =3D "amd-versal-virt\0xlnx-versal-virt"; + const char versal2_compat[] =3D "amd-versal2-virt"; =20 s->fdt =3D create_device_tree(&s->fdt_size); if (!s->fdt) { error_report("create_device_tree() failed"); exit(1); @@ -69,12 +72,22 @@ static void fdt_create(VersalVirt *s) qemu_fdt_add_subnode(s->fdt, "/chosen"); qemu_fdt_add_subnode(s->fdt, "/aliases"); =20 /* Header */ qemu_fdt_setprop_string(s->fdt, "/", "model", mc->desc); - qemu_fdt_setprop(s->fdt, "/", "compatible", versal_compat, - sizeof(versal_compat)); + + switch (vvc->version) { + case VERSAL_VER_VERSAL: + qemu_fdt_setprop(s->fdt, "/", "compatible", versal_compat, + sizeof(versal_compat)); + break; + + case VERSAL_VER_VERSAL2: + qemu_fdt_setprop(s->fdt, "/", "compatible", versal2_compat, + sizeof(versal2_compat)); + break; + } } =20 static void fdt_nop_memory_nodes(void *fdt, Error **errp) { Error *err =3D NULL; @@ -361,10 +374,21 @@ static void versal_virt_machine_class_init(ObjectClas= s *oc, const void *data) vvc->version =3D VERSAL_VER_VERSAL; =20 versal_virt_machine_class_init_common(oc); } =20 +static void versal2_virt_machine_class_init(ObjectClass *oc, const void *d= ata) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + VersalVirtClass *vvc =3D XLNX_VERSAL_VIRT_BASE_MACHINE_CLASS(oc); + + mc->desc =3D "AMD Versal Gen 2 Virtual development board"; + vvc->version =3D VERSAL_VER_VERSAL2; + + versal_virt_machine_class_init_common(oc); +} + static const TypeInfo versal_virt_base_machine_init_typeinfo =3D { .name =3D TYPE_XLNX_VERSAL_VIRT_BASE_MACHINE, .parent =3D TYPE_MACHINE, .class_size =3D sizeof(VersalVirtClass), .instance_init =3D versal_virt_machine_instance_init, @@ -377,12 +401,19 @@ static const TypeInfo versal_virt_machine_init_typein= fo =3D { .name =3D TYPE_XLNX_VERSAL_VIRT_MACHINE, .parent =3D TYPE_XLNX_VERSAL_VIRT_BASE_MACHINE, .class_init =3D versal_virt_machine_class_init, }; =20 +static const TypeInfo versal2_virt_machine_init_typeinfo =3D { + .name =3D TYPE_XLNX_VERSAL2_VIRT_MACHINE, + .parent =3D TYPE_XLNX_VERSAL_VIRT_BASE_MACHINE, + .class_init =3D versal2_virt_machine_class_init, +}; + static void versal_virt_machine_init_register_types(void) { type_register_static(&versal_virt_base_machine_init_typeinfo); type_register_static(&versal_virt_machine_init_typeinfo); + type_register_static(&versal2_virt_machine_init_typeinfo); } =20 type_init(versal_virt_machine_init_register_types) --=20 2.50.1 From nobody Sun Sep 21 20:11:37 2025 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=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1757671645; cv=pass; d=zohomail.com; s=zohoarc; b=Jol90nNmDltxeZ1PQCCGLsCqtnKCyN1ZG23BnpqWqIOCdUUYeodmr/Qk1eco4bZePvV1fQUsbD/jGcWLqOOYR99iO0Ro/zuvgPPmIbDacibVYwiHl779PXoglzqxZ1W9lHMYy6d9rF7ZQLtLD3O1ORgba2J9Co3G7hqgmerwsl0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757671645; 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=P7+eehizqazwdB6iHvoGlW3cC+8c34+ZcP6D1D7TWe8=; b=BrMWRkzGe+vho6tcY3nrUSL2tPZKmMbPRIpJgnV2P159dAgf0TQX5bmtOaT7d+bcP2jkipY9h3yvSZMrNBcVigqUqLnE2k0mVOpS2Ln6dqZITi9dy9TYVWX5+zENnKyBSxYURc1Angmw28YKT5bQZxbcxv55JKV5CLpeI76WDX8= 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=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757671645882416.97079424492426; Fri, 12 Sep 2025 03:07:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ux0ew-00032e-78; Fri, 12 Sep 2025 06:05:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ux0dD-0007jV-Me; Fri, 12 Sep 2025 06:04:00 -0400 Received: from mail-bn1nam02on2060c.outbound.protection.outlook.com ([2a01:111:f403:2407::60c] helo=NAM02-BN1-obe.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 1ux0d0-0001Py-3K; Fri, 12 Sep 2025 06:03:46 -0400 Received: from DS7PR05CA0026.namprd05.prod.outlook.com (2603:10b6:5:3b9::31) by IA0PR12MB7775.namprd12.prod.outlook.com (2603:10b6:208:431::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 10:03:20 +0000 Received: from DS3PEPF000099DF.namprd04.prod.outlook.com (2603:10b6:5:3b9:cafe::a4) by DS7PR05CA0026.outlook.office365.com (2603:10b6:5:3b9::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9137.7 via Frontend Transport; Fri, 12 Sep 2025 10:03:20 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF000099DF.mail.protection.outlook.com (10.167.17.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Fri, 12 Sep 2025 10:03:20 +0000 Received: from SATLEXMB03.amd.com (10.181.40.144) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 12 Sep 2025 03:02:45 -0700 Received: from satlexmb08.amd.com (10.181.42.217) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 12 Sep 2025 05:02:44 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 12 Sep 2025 03:02:43 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vCF+inXC995ZUS3VezKVcF/z4XAcvK7zKOPKDa5ISNzG67nCzwFS4HfYkwk8Z9pa8qpuXmnWp/b9rbrJGB+fk/zwXZq31yuzL4GUqUWWG7KsNrIlRZo/RYY/VzH7m6TKGNWlob+eJzwSNia502zUhtbIjha/GsSc1qoEeg9dsHWJJhJucs3JgzdfZMRP0g9YK/3+o4hPeIeNHXqJR43KNvMzMwcXZe2IVFr1teX/NexCS7iWFB6J4yCPidKifuL8hYjdNjPlDqwzpevOmN2tqkrqocXeSX/e9RDoinnqzrZQzphBWAoWHRNhaPgMFc0VQRyIWm4fuHlK0T4lVdPCRA== 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=P7+eehizqazwdB6iHvoGlW3cC+8c34+ZcP6D1D7TWe8=; b=qVJVO+eiRnTTgq97vbirevEOJBW52nH7vY0ynHDrJIXkD5sOPa/R8iuGfD7DkUFTRPKbqylsm9u4FIVKq861UZt9Apr/Ou6UzxyJbwreD3E7K0nA+kJ4PBwVUaWAhRNoUU8Y/eDYnLfTq1h9jlt6qQ0t5L6bCrhCCaStnSR8Ibg+/DCgZiK3ycygu91u0jAQX4zH6QhJsnkGyC3CfrAoTE4Ywk3g7BhJybpAsNN631GLai2//ZoQWH6pTMzSsqzZK0MQ1D3oE07D8ftKLiyToHpDsrk3rxZLHQAP7Dsdw5q5zZY25N9kEvfXILPXiEMv21bvkas3ztRRzsGz8UdRmQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=P7+eehizqazwdB6iHvoGlW3cC+8c34+ZcP6D1D7TWe8=; b=Pl/WD3VMJLq7pxZQcj5YfENX09PGgUEPJjE2ufTfmwqmI/iERMzAMBIMbJzDHhk3vsqyXsQsWF3S7J5qqHt9I51mqBlfqGQ6ATi63DI78Em2A57AkmCT5U+q9WeWm76bjWXZVJhMpwpbcE4KAOsDeU6Fbx1rKz4gD15JiZL6uDs= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH v5 47/47] tests/functional/test_aarch64_xlnx_versal: test the versal2 machine Date: Fri, 12 Sep 2025 12:00:56 +0200 Message-ID: <20250912100059.103997-48-luc.michel@amd.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250912100059.103997-1-luc.michel@amd.com> References: <20250912100059.103997-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: None (SATLEXMB03.amd.com: luc.michel@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099DF:EE_|IA0PR12MB7775:EE_ X-MS-Office365-Filtering-Correlation-Id: 86812469-6a6e-418a-afc6-08ddf1e39a55 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|1800799024|82310400026|376014|13003099007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?foDzt4H5LPcgGlC7eXvTqn5CJYrVlgDDZ+5vKr/uW2doIIj7nGoGyiDsDTiX?= =?us-ascii?Q?lYWvEyCh6mjSWJXLWep7ok0jcEE1/64VykGRdJimslmrj7ZpkdvwSrLUKKwA?= =?us-ascii?Q?9E3nwIAW24hbaeWZ4yBEVS7ZA9Vf9UZJxNzGaHSflu41ZcpyV+N6yqnc15cl?= =?us-ascii?Q?l/mES0xjNLeQtNuydMYJIZK76QHKmC+k8eEtVX0CfMzNDDE/t2VbtDqthoML?= =?us-ascii?Q?ipS9v71volGlN114DLupXamNTPKEniQkKTZGrXGSkdaAG4oTo81tpiNfWrJR?= =?us-ascii?Q?8fqzVJRa+RxD4+9bnpQxmsHhzowxF6pQ9FemDjVWxjR+ad2E4mCcFgIHZ+oB?= =?us-ascii?Q?zZr6GugTtefjs00m2twBn159M8HDZvbrmlO+r0HoU4b0cUWUR2QxYUs1DeAW?= =?us-ascii?Q?ymxlpH1PnHbXj5ZpsVvoJfiaqqjL44jpJXZUxOaQojumtDoqvoEox+n0wn8T?= =?us-ascii?Q?GOtV6sM1JtplsNxBoylL8TX/TGabqNroJG3v0xjAWa8xPx58L/31Ycu6TxWj?= =?us-ascii?Q?MfiLiAl6prfDim0TInVZXOke0or28L48I7lk5G+9Ik7cdoECroRLgPVS6Prw?= =?us-ascii?Q?cP12kHF4WX2v/aMmesr4JNKwDztoLZS/7TedgJxwsVvwC7Tca3Bk3k1uqRCg?= =?us-ascii?Q?jk7JRNQjoeRryR32v+l0SQoQ27AA33pTA7bxNHGYRrrWONw8D+8sCwLzMojA?= =?us-ascii?Q?DmVyxlZpValWR98dqXd2P0phHoA5TjGGRdiGYdxOTjH0K00sTviMrYf6mCCi?= =?us-ascii?Q?afmg+ax0a4StgG7S6AvhN7DE3GCwGuWI4AFd6ctdl4Gv/wwFMvqggHvcpBFi?= =?us-ascii?Q?1MSpxVpfImPly4xvZJEONO4eXRsEBZfT+7D5BPxOkw6PK2HRpkI2fnzF5M3C?= =?us-ascii?Q?8o2O0C6YROPfYg55ZCY68W8Nw41bFOF+EYZa66BVm9JrB/Q5gRLYAmHMBDrh?= =?us-ascii?Q?Y9IATl+gfr56MdvXQA2ZTi39sLsQ0OQ1z6tm7NN+P4GuX6A3MUaqg3txjYK7?= =?us-ascii?Q?Yqu3rnrHktDmQ4TAbhmc87INvwZ4ujUKKowzQDCZClRRwbymC3UV7J0vSCyg?= =?us-ascii?Q?IBsUn9dplxqXYX75JBN4kwW9y20W+pmgrtI3kXfiINhz1+FsKzQCmPpRO1uY?= =?us-ascii?Q?s1SHMxwPtuuGDDQDyDcf7Z9HKN991aMcV4WiTNO9p8c547BUjCHAGcnixArj?= =?us-ascii?Q?oKvI4IybjcbFT5iLWZ8XU2TWYJ6MkNHVXYxMsUynu+cj3mdnokD/rbP+2RPO?= =?us-ascii?Q?8oZrnEqH+Q52qyZFFluH70iDQnnRlFca6vNgFjOmqA/+ZHzw/i3Zsjm79QEG?= =?us-ascii?Q?8aIal9vbhArJxDxaDNshLZzdIawmW4VbyRCxajnk7F4HoxHrMyiUpV2H7lww?= =?us-ascii?Q?mda4axd/WSIguFfONrU0re4MgZLTEYHJJrpmj+mVeQym0fIpK/PIpjx+mF//?= =?us-ascii?Q?Z2KkT+kd/5hf/S3VES9HD/TSQFzOvqnZiXqJ8KRykm69xSDPXSmrbw=3D=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(36860700013)(1800799024)(82310400026)(376014)(13003099007); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2025 10:03:20.4849 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 86812469-6a6e-418a-afc6-08ddf1e39a55 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099DF.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB7775 Received-SPF: permerror client-ip=2a01:111:f403:2407::60c; envelope-from=Luc.Michel@amd.com; helo=NAM02-BN1-obe.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, DKIMWL_WL_HIGH=-0.001, 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: 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 @amd.com) X-ZM-MESSAGEID: 1757671648347116600 Content-Type: text/plain; charset="utf-8" Add a test for the amd-versal2-virt machine using the same command line, kernel, initrd than the ones used for amd-versal-virt. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- tests/functional/aarch64/test_xlnx_versal.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/functional/aarch64/test_xlnx_versal.py b/tests/functiona= l/aarch64/test_xlnx_versal.py index 95e5c44771f..45aa6e1b881 100755 --- a/tests/functional/aarch64/test_xlnx_versal.py +++ b/tests/functional/aarch64/test_xlnx_versal.py @@ -18,12 +18,12 @@ class AmdVersalVirtMachine(LinuxKernelTest): ('http://ports.ubuntu.com/ubuntu-ports/dists/bionic-updates/main/' 'installer-arm64/20101020ubuntu543.19/images/netboot/' '/ubuntu-installer/arm64/initrd.gz'), 'e7a5e716b6f516d8be315c06e7331aaf16994fe4222e0e7cfb34bc015698929e') =20 - def test_aarch64_amd_versal_virt(self): - self.set_machine('amd-versal-virt') + def common_aarch64_amd_versal_virt(self, machine): + self.set_machine(machine) kernel_path =3D self.ASSET_KERNEL.fetch() initrd_path =3D self.ASSET_INITRD.fetch() =20 self.vm.set_console() self.vm.add_args('-m', '2G', @@ -31,7 +31,13 @@ def test_aarch64_amd_versal_virt(self): '-kernel', kernel_path, '-initrd', initrd_path) self.vm.launch() self.wait_for_console_pattern('Checked W+X mappings: passed') =20 + def test_aarch64_amd_versal_virt(self): + self.common_aarch64_amd_versal_virt('amd-versal-virt') + + def test_aarch64_amd_versal2_virt(self): + self.common_aarch64_amd_versal_virt('amd-versal2-virt') + if __name__ =3D=3D '__main__': LinuxKernelTest.main() --=20 2.50.1