From nobody Mon Dec 1 23:34:59 2025 Received: from CH1PR05CU001.outbound.protection.outlook.com (mail-northcentralusazon11010071.outbound.protection.outlook.com [52.101.193.71]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D7EC43064B3; Wed, 26 Nov 2025 01:39:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.193.71 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764121198; cv=fail; b=DftU9/zNsHMSkB+JP7HHrq/UEMAng8VzhZNWTmM6QNhzTwH58erW0iDAUJmgdSoNRMEXJyvcRHm11Oz6FZnyXX6DLXzJfuQfUcH3aKgFkKKpXrTOed2Dv7S0Kt7FXrHfRPx86ehk+f2ssjDAhGI3agjm8xHfPHe3QS4GLWI5/8U= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764121198; c=relaxed/simple; bh=+hmrnjR6rrdQuqSaM16BpTX29C5NE+wWXe1GQ/58THU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=EQt2McFNjU/SAYn9tOfWeYd+55bT2TucdqloqU2rsoLOTK4lfwsuJQzfa7rGpQBLNVxZmH1KtDEVQEIJnbLiSUiOZjFYsdESFe5TVztcEPKTbsIcLRr2Px/gbOKpBD0o1JpQGn46HMXXPgo4z1I4Xf0I72YMCMZdC1GzGBlv43g= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=jMJ5AyFt; arc=fail smtp.client-ip=52.101.193.71 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="jMJ5AyFt" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NMTT8fXcjeydaYRJ1IBTMhx7rm+vDOixCVKRKDAH8+JltC2wj4zjX4Te60YUdbRB/n7GVIL0Eio2sJFjMMBiO9HKuZofZjQi1BSS7FJcp2m2VqpKcXYQzVr9k47BtwRRqi0xk1eFbGCNU0xG6HhtvncFeU64oLQwbBtZBKShjrBLjuI30jDt5v4XLT1py/TGZSZXJOBBGZARJBU5AdU0XJZzAao6srGlqNXgtgLWP4nGn6JoqMxyIqLII+jwqpXrOWFK4tf2Nr5ygfeUGloDuGu19IFlFHGXxW0VDIHC4PxhA+rgXrb/43/MlpqwTfn9OPm1deGeN6R7+/6SY8gpow== 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=nI+puBWEO5bDNmyCHBKbHQ2EaZj291ZuJoePuOZekOk=; b=WW+w8rB7/J08KH8SGK0SuR5HEo4z66hpSItUEZrNa8rh67pAcvubhPEWJch9Mpu4kdhGx8FWyRXgox9phwELiP8xPshk91ol3OoB1iTAlCHaWFPmQnVD9ICNxfVPiaPWZdk+WGHy8cgdpTMdAuezWhpoJdUO3BlwJl9Mer4uWbW5h+eMJVxsHnCH/MhRF2XjYnRx5ksvY3szgj6QCx2n80XhbwwE4DeQanSRFgMUDefyzGFmMyKtPAGXKtl9JAduJ0BsofKOj1ThagqT4xDspmnB2ye0nMzcCFqHjWY/vrAQkavJOPGr+PqwSX/AYaMXls1ETTAbAMf3kiSY4f9+3w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nI+puBWEO5bDNmyCHBKbHQ2EaZj291ZuJoePuOZekOk=; b=jMJ5AyFt4iC5x8T20bmP2dF8fyt3zBGBzgeZL7wG+QIDXD7AULNBUw84tU2uqu/zaCMV10wZ20uLkHBG8qZ+7TatlycEoZkQ1XUHYVAJ6NJWoTp3K1ZVKN6cJy/SUZQ3526/Xy1ONbHVo6qcrH24J/Qo6A3Nq6z0i9FvS+l2siMk6Ow3ywZFvsLVfCIOcpGiqx7VQfzw9nBieE5csntloKqT//gG2eLQbFeggzwUPfrR0DxBs89J20xYlgSymZS7TX9vQ4l3UETK5OWmald7iub8ox5WmMQD7Jsbaog+i+WjlHWDPm2ch8CEjp9M8nhtduIMiy22IV7wbE9DmHscUQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DM3PR12MB9416.namprd12.prod.outlook.com (2603:10b6:0:4b::8) by SA3PR12MB8022.namprd12.prod.outlook.com (2603:10b6:806:307::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.17; Wed, 26 Nov 2025 01:39:40 +0000 Received: from DM3PR12MB9416.namprd12.prod.outlook.com ([fe80::8cdd:504c:7d2a:59c8]) by DM3PR12MB9416.namprd12.prod.outlook.com ([fe80::8cdd:504c:7d2a:59c8%7]) with mapi id 15.20.9343.016; Wed, 26 Nov 2025 01:39:40 +0000 From: John Hubbard To: Danilo Krummrich Cc: Alexandre Courbot , Joel Fernandes , Timur Tabi , Alistair Popple , Edwin Peer , Zhi Wang , David Airlie , Simona Vetter , Bjorn Helgaas , Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross , nouveau@lists.freedesktop.org, rust-for-linux@vger.kernel.org, LKML , John Hubbard Subject: [PATCH v2 1/5] gpu: nova-core: print FB sizes, along with ranges Date: Tue, 25 Nov 2025 17:39:32 -0800 Message-ID: <20251126013936.650678-2-jhubbard@nvidia.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251126013936.650678-1-jhubbard@nvidia.com> References: <20251126013936.650678-1-jhubbard@nvidia.com> X-NVConfidentiality: public Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BY5PR20CA0004.namprd20.prod.outlook.com (2603:10b6:a03:1f4::17) To DM3PR12MB9416.namprd12.prod.outlook.com (2603:10b6:0:4b::8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM3PR12MB9416:EE_|SA3PR12MB8022:EE_ X-MS-Office365-Filtering-Correlation-Id: 6e90ff54-c2fa-4794-6e08-08de2c8caa58 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?FDUHipNU02guThctGx58TL3VBlNpHVJ3qEW98YSoWLralCTP/DOthgKB6R4W?= =?us-ascii?Q?5Q6v++74w8VjhTAWrMv3K1GClY2j1UlkPYN6WTwpOtpJ7Znr5OZMfzJIaaMl?= =?us-ascii?Q?biyMpBd3krsIh3cpPW9vpZCVa5XtkYNUDz7bRLLE+HKfJjno/48Xo+PeWVwm?= =?us-ascii?Q?8reGt8yS5OWbztnGSLGVjBAfsCjDfMfVQpMsISwN83R5msPCgLUP/zaBeuHh?= =?us-ascii?Q?Wu9D4EtRBOTkzzCawLGYphfJiG93Tf+QDnACjuK9GkuFMc7vuOvmcCTDjIts?= =?us-ascii?Q?RqA6EqybpIt2RKJ22GlJzhD3Qq92jLLBcCKwjfQ2o1Xe6IVTocehgZkT1z++?= =?us-ascii?Q?9rFACg75bBMRwmuHVoZLfHyQK/N1O1wyZaIkjxRUhiNu9UR62fUry5XKrTg0?= =?us-ascii?Q?KUewswIPGypqwXr2X0LlHjdFyvokXk4z+eIc1ybhcO/4bd5z8dv+M28RqRsb?= =?us-ascii?Q?FtPkffLrvU8b8dfasNVQEHdgvy1veC0saWrJjNlkn7XoG6glt+MI4/g44nCU?= =?us-ascii?Q?R7X8Ut+8AMQ/cWEMzaDHz+kXAspRtUSgTcBFXdWGQXxsKFvZ749qBLJYi+ys?= =?us-ascii?Q?2TM8uMxzWZ1zlOoyFAEq0UvofTpUdtrHJegLNXhNRPelgn9CyrloKbJaIXrx?= =?us-ascii?Q?KLThkt3vZZ1hYsmdvczNhniUOMa/bizOUI/eHQW0TJ31NZ1tGxMNZTYCHgF5?= =?us-ascii?Q?IJLQER1hUML8uSQPF995kFIWKBAf4+dVoUwD8QCUZw22GgT3VXt5HzQExXGV?= =?us-ascii?Q?Nb/PgXhbXAcMNq3cFAtX9HJ5ydLu3vKY6zIcURlKgiIrWUvRpm/ZuGF9RUZl?= =?us-ascii?Q?g3+S115ENFUmuvjCYIt+ekNdR6IMLaDCpPBcsP3Zp2pOprT6q2LYseuwRUoZ?= =?us-ascii?Q?0kQN0USh92KA82XdN49VW22d9GJz2wL7JRnRPrNGDt0YV/nWA6qoduauTIeB?= =?us-ascii?Q?b97Fd1ZcHgOZnqFRfr88Cg+pTJSXrrPx8+BfHyfhphhqQ/6ehm710jQU3aIM?= =?us-ascii?Q?nnNIupawIg+P+LHkE97XVo6GciED0r7YtmRilaQYuDP/coUizCun7o+8KQnC?= =?us-ascii?Q?bquc0vfx87lraeEikfil2LWbanVen998CgHBQBtRRmGKwGeXDrBFVlIVBZrw?= =?us-ascii?Q?7GJHA09vsN3+joWWdjSUnPgpTyX35uLF9iQRol8MUTR4g86JMmRhHLLKnQKr?= =?us-ascii?Q?IqRKBelHlFJA0ZnaARpeBV9WK2AFM/AHjqLRyGx9CeuIcUIBvzUBLlfnn2ii?= =?us-ascii?Q?WZkWie5S+eWJb7VbxOQNAv0KMMa9f6hb7SAQkPTUFF3mnatfmRdnPJfiDCBz?= =?us-ascii?Q?Z0yJ9O7zjjHnOd0MH5tIz2SMkVL5YJFPItlra/+6gq8GoHCuyXJehjgR3Su+?= =?us-ascii?Q?+njIplWGvQjDyxWBCyUFiu+DX7X+K3D8x/7HDwly1/EgO8UobuNeNXmQgjeK?= =?us-ascii?Q?pWF9g0dLnysiNdXPPoRLIZCpOuAFz2K0?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM3PR12MB9416.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?adzswd7qZfreXnSD9oE28imSpy2hRxAM5f+6zVNDCZA6V2dcd2UWUHDAZ7sw?= =?us-ascii?Q?ZJbd5NoDjQShlug5i8CgV4Y2+qzf7AzviECQkKuWWC9ICuIuVqS1YikukNW0?= =?us-ascii?Q?awKd4jGDutXXshh+N7ZQTs+YwKyWWBp20Ylls973A6PnzhwMs2lI6hSCdPSZ?= =?us-ascii?Q?fIfNAowylOLsSmgRPhjakROFJuje7/r6UhvPddpyWRQXANZn5dsg+E+idnDJ?= =?us-ascii?Q?eVgZjngNmkLRHX2jyH8KeC8i70VXjMnYmI9Q84i58utCY3Uyq8ukXeUEy84v?= =?us-ascii?Q?Omot6VBZSSSqn7Ae2qh2Ej7LceE3x0EStQR7bFojhG4ervyxPeU6BnzEpNjS?= =?us-ascii?Q?SpmMGR08FRUN8BgaTLhU8zYzaekVXx2gCCdvAtbVZ1pn5qCQN8XCG7mpXgul?= =?us-ascii?Q?zVLmxhhLRhQKxNkLzwL3tJXCe/pICDUFW6rl2KgeUpANM4ygrbiYhMIR8Mei?= =?us-ascii?Q?hLU/EYaIv2f9hAzbHkY68F7A5dETkaYIa4FcygAUYbqwPEmaCNOIaDZgrN0f?= =?us-ascii?Q?47oFsni5fWSLdg3pszUsQCk3BJPfIMM6I7/QdK/uXJvc7ukCSa9gE6Gb9VpX?= =?us-ascii?Q?fJ+Suwmank7X7zgexZRSlan8yQzNcXvofa7KYv5YSIVzZLckZmtoYDFSyose?= =?us-ascii?Q?5188Fk3y8TJhqnXpbWXjD+3iov2E0hwYIFbas0g9yKK3tApfLitSdzLzrOi0?= =?us-ascii?Q?CP94ZSxB8CRn7ZWeXgje0fw6my93jUl+Ga9kTtCaMjK9MuPvnd1ajYmAJQ2z?= =?us-ascii?Q?FRMZcAu6nMXObN6WaGHtRHwjEdRIJd59fIuolWQuxeaznERPc2yoqLN7b7yh?= =?us-ascii?Q?9IgfcaTeIf3OJLxU2QOinw2hthPogIc4OC8BWsfpTktm59en9mJMDyIJaMbJ?= =?us-ascii?Q?cIz8yBiG3ntTOV2VcAgvpGSLuOP2+iSqpuCE6M8QrjopAM2z0Gl1Gisd2kdC?= =?us-ascii?Q?zDUOyvNHY3Hw7QuKwaI/yHewBUpOs69oC9MtSRrEV8gLMOAm87yxomt0wSoO?= =?us-ascii?Q?pLJI3cqgfviv9dolarS3DONvcjEhJI2zVfzMuKHCBXM5YiQs7zDb1wp5ZDXN?= =?us-ascii?Q?XlsPCBF8tDn/zeJdnxBgNqlxtWlUoPZME965meyWHBSh7tlI037J/kjWx7vr?= =?us-ascii?Q?t0IaZzBiJ1Z04aOovLugfPlfhkdpOimSdQGlQ7VuiECa5VcEJzneM3V01m4q?= =?us-ascii?Q?cpWJBsYRESZ4lJ2vuqpvP/czaiyNqwpIToOwFc0G3+Qzqly6+Q1OSVe87Bl8?= =?us-ascii?Q?46xTgFodhJJrRayOLBpCBRed6z8Xx9hj2xd0ky7FpMKG+WoJKcFMVS1GAJcz?= =?us-ascii?Q?3e4OQxKt3K72bH5Z4vk5gvBlbZTSa5Fy/ATtTr6T5TNZZ25pEGZb3exBShC4?= =?us-ascii?Q?aCOlD6qCH/Wf6X+AsYZnCudzMsUIKEfRHJltn5Lbon9YgM9yNvdfIY5SYNA4?= =?us-ascii?Q?91OFQazhWmfR5zozt1YITXThnlGHvWA11kLRQ3lhTwNmvtw0rbMq8JfTcey/?= =?us-ascii?Q?93yk9RD2UG3JmfdmGdCFFlLsdnPmTQmz41V3+R/nqYdyc+93whtzk3/x3K9a?= =?us-ascii?Q?ja9IDbQHVotgignSE1OXUgnqdZq0lxyn+s1KWRZu?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6e90ff54-c2fa-4794-6e08-08de2c8caa58 X-MS-Exchange-CrossTenant-AuthSource: DM3PR12MB9416.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Nov 2025 01:39:39.9782 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ICxD1Bkl8zv9plDIDAd0mQkuJRh/X2xJSBjfWDRePtvLbyJEbj9z9zkSyMhYc8UvpucoTkFXgr91z1aKW2CN6Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB8022 Content-Type: text/plain; charset="utf-8" For convenience of the reader: now you can directly see the sizes of each range. It is suprising just how much this helps. Sample output (using an Ampere GA104): NovaCore 0000:e1:00.0: FbLayout { fb: 0x0..0x3ff800000 (16376 MB), vga_workspace: 0x3ff700000..0x3ff800000 (1 MB), frts: 0x3ff600000..0x3ff700000 (1 MB), boot: 0x3ff5fa000..0x3ff600000 (0 MB), elf: 0x3fb960000..0x3ff5f9000 (60 MB), wpr2_heap: 0x3f3900000..0x3fb900000 (128 MB), wpr2: 0x3f3800000..0x3ff700000 (191 MB), heap: 0x3f3700000..0x3f3800000 (1 MB), vf_partition_count: 0x0, } Signed-off-by: John Hubbard --- drivers/gpu/nova-core/fb.rs | 66 +++++++++++++++++++++++++++---------- 1 file changed, 49 insertions(+), 17 deletions(-) diff --git a/drivers/gpu/nova-core/fb.rs b/drivers/gpu/nova-core/fb.rs index 3c9cf151786c..333e952400e6 100644 --- a/drivers/gpu/nova-core/fb.rs +++ b/drivers/gpu/nova-core/fb.rs @@ -1,9 +1,13 @@ // SPDX-License-Identifier: GPL-2.0 =20 -use core::ops::Range; +use core::ops::{ + Deref, + Range, // +}; =20 use kernel::{ device, + fmt, prelude::*, ptr::{ Alignable, @@ -94,26 +98,54 @@ pub(crate) fn unregister(&self, bar: &Bar0) { } } =20 +pub(crate) struct FbRange(Range); + +impl From> for FbRange { + fn from(range: Range) -> Self { + Self(range) + } +} + +impl Deref for FbRange { + type Target =3D Range; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +impl fmt::Debug for FbRange { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let size_mb =3D (self.0.end - self.0.start) >> 20; + f.write_fmt(fmt!( + "{:#x}..{:#x} ({} MB)", + self.0.start, + self.0.end, + size_mb + )) + } +} + /// Layout of the GPU framebuffer memory. /// /// Contains ranges of GPU memory reserved for a given purpose during the = GSP boot process. #[derive(Debug)] pub(crate) struct FbLayout { /// Range of the framebuffer. Starts at `0`. - pub(crate) fb: Range, + pub(crate) fb: FbRange, /// VGA workspace, small area of reserved memory at the end of the fra= mebuffer. - pub(crate) vga_workspace: Range, + pub(crate) vga_workspace: FbRange, /// FRTS range. - pub(crate) frts: Range, + pub(crate) frts: FbRange, /// Memory area containing the GSP bootloader image. - pub(crate) boot: Range, + pub(crate) boot: FbRange, /// Memory area containing the GSP firmware image. - pub(crate) elf: Range, + pub(crate) elf: FbRange, /// WPR2 heap. - pub(crate) wpr2_heap: Range, + pub(crate) wpr2_heap: FbRange, /// WPR2 region range, starting with an instance of `GspFwWprMeta`. - pub(crate) wpr2: Range, - pub(crate) heap: Range, + pub(crate) wpr2: FbRange, + pub(crate) heap: FbRange, pub(crate) vf_partition_count: u8, } =20 @@ -125,7 +157,7 @@ pub(crate) fn new(chipset: Chipset, bar: &Bar0, gsp_fw:= &GspFirmware) -> Result< let fb =3D { let fb_size =3D hal.vidmem_size(bar); =20 - 0..fb_size + FbRange(0..fb_size) }; =20 let vga_workspace =3D { @@ -152,7 +184,7 @@ pub(crate) fn new(chipset: Chipset, bar: &Bar0, gsp_fw:= &GspFirmware) -> Result< } }; =20 - vga_base..fb.end + FbRange(vga_base..fb.end) }; =20 let frts =3D { @@ -160,7 +192,7 @@ pub(crate) fn new(chipset: Chipset, bar: &Bar0, gsp_fw:= &GspFirmware) -> Result< const FRTS_SIZE: u64 =3D usize_as_u64(SZ_1M); let frts_base =3D vga_workspace.start.align_down(FRTS_DOWN_ALI= GN) - FRTS_SIZE; =20 - frts_base..frts_base + FRTS_SIZE + FbRange(frts_base..frts_base + FRTS_SIZE) }; =20 let boot =3D { @@ -168,7 +200,7 @@ pub(crate) fn new(chipset: Chipset, bar: &Bar0, gsp_fw:= &GspFirmware) -> Result< let bootloader_size =3D u64::from_safe_cast(gsp_fw.bootloader.= ucode.size()); let bootloader_base =3D (frts.start - bootloader_size).align_d= own(BOOTLOADER_DOWN_ALIGN); =20 - bootloader_base..bootloader_base + bootloader_size + FbRange(bootloader_base..bootloader_base + bootloader_size) }; =20 let elf =3D { @@ -176,7 +208,7 @@ pub(crate) fn new(chipset: Chipset, bar: &Bar0, gsp_fw:= &GspFirmware) -> Result< let elf_size =3D u64::from_safe_cast(gsp_fw.size); let elf_addr =3D (boot.start - elf_size).align_down(ELF_DOWN_A= LIGN); =20 - elf_addr..elf_addr + elf_size + FbRange(elf_addr..elf_addr + elf_size) }; =20 let wpr2_heap =3D { @@ -185,7 +217,7 @@ pub(crate) fn new(chipset: Chipset, bar: &Bar0, gsp_fw:= &GspFirmware) -> Result< gsp::LibosParams::from_chipset(chipset).wpr_heap_size(chip= set, fb.end); let wpr2_heap_addr =3D (elf.start - wpr2_heap_size).align_down= (WPR2_HEAP_DOWN_ALIGN); =20 - wpr2_heap_addr..(elf.start).align_down(WPR2_HEAP_DOWN_ALIGN) + FbRange(wpr2_heap_addr..(elf.start).align_down(WPR2_HEAP_DOWN_= ALIGN)) }; =20 let wpr2 =3D { @@ -193,13 +225,13 @@ pub(crate) fn new(chipset: Chipset, bar: &Bar0, gsp_f= w: &GspFirmware) -> Result< let wpr2_addr =3D (wpr2_heap.start - u64::from_safe_cast(size_= of::())) .align_down(WPR2_DOWN_ALIGN); =20 - wpr2_addr..frts.end + FbRange(wpr2_addr..frts.end) }; =20 let heap =3D { const HEAP_SIZE: u64 =3D usize_as_u64(SZ_1M); =20 - wpr2.start - HEAP_SIZE..wpr2.start + FbRange(wpr2.start - HEAP_SIZE..wpr2.start) }; =20 Ok(Self { --=20 2.52.0 From nobody Mon Dec 1 23:34:59 2025 Received: from CH1PR05CU001.outbound.protection.outlook.com (mail-northcentralusazon11010071.outbound.protection.outlook.com [52.101.193.71]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5AC2D301027; Wed, 26 Nov 2025 01:39:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.193.71 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764121205; cv=fail; b=fl1r2GR7PwP4fDN8PXqkrWJowhitIsuR9oX2mztt/xwoWstzcHTY0XsO3kOXGtHLfHwXV/Jfrqa+2OjD6Kk75I5HuBFNArzZeVQu0tMNG5j2W/xy2bTM2rkRA5k93TkUWLiM1YXeMHXbPdNgoKHnfFetwnqu4BiymTrDRSvEMaY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764121205; c=relaxed/simple; bh=bGLj9k3NrIBxg0SvRSmXm2jn8ABcS95kTSwGsgAEmMw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=bQr104RRtwKxWSb/NGtAT0hpRBaUk9eP2c1kxetWN2DaAwEOPqVYuC6SqsvgIj7icM62mmnby4CXoPSkvkCVGbpmoEOZDZGXOmCGJpqjbpt8P637Zv0J88p9ZlwVKYQMjtN8FptIZOWNTHOfySNPvtAunnj33PaWotSz52bosMk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=FTxL6rU5; arc=fail smtp.client-ip=52.101.193.71 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="FTxL6rU5" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tXAbzqmv1jWfd8ALKBbkay0Z/kkkjaOr3buunu4749Z1ZUCblH2A5So3wyuVYll3A3QIOgBBV60yyJkm33StZNhARPdGV6nycfDFtgxOeAg9sb9U4JRFzBEWDuwXf18oacEa51n3pyLzU0tyayHat13pk1i6krpXyQfNhY+6kR8H68HMZeL34wExu3fZ8OMHHrjK8pyF3C+Gm985eyrBKbmhNZ29m5N4MqxjH+HvSw4flVMcoB1LlR/7VF6b+HUnVkvVod+3ujIxhLY6FtijwaKLlfsyfrNlCTm/e7nh4LEC9mbfd0MSXlDnNrKFr4ysmefqu91qljIhtDLQeXBSXg== 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=8+P7Y8Xer31zLZMaL0KBtNkDpAvUwi1/CVg/Jt1bYAE=; b=EgqVCr8T+AEAmZW3gVs+l/MchB5C9ux25YVsCipvQAzfiMVOcEteaPMua4WNEuS/YkcLAXWXSw7IU9fbN5K2sVoX5HhkfUE07ARNDau+FREXr5J1Qi0CWF8j7BOXUp1vXG0x9OvQxIFoNbXQdsSMhMN5f546zgSqZOwtxvoB7kWcPYUneCsFR4e9xdNxAq2ADIYa/XDBtJmUrAk8lhVsS26Wq/pt+sSwaxYMDJ/H/1VAkl2ySMXCxk/pF10csCjMLAi8dYWIt+S7sj4v/InGzzc8CSi0WH39nF1PyQ3RDS3pgLuAKgvHnBiL5p7QJpCqOo9bfEhkSUjw5qDbYiPs6g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8+P7Y8Xer31zLZMaL0KBtNkDpAvUwi1/CVg/Jt1bYAE=; b=FTxL6rU5Ibbki+ClU9fGfpN+eKAvBYXqof2TJIjLc2PBdcwlBtq383Gv8Pm33wZ5r7P/rOdhsPPRm8VZCnfOIiIa70W2b698xR39bcp5K+YKaxtTBlKROvgVyOS4Q2BwJYJxDJFaz42GBgdilBB+DATWbjlySyRZmnjX4A+M5H1cTumYN37aSwzP6kmJru127d27EmQ1HdC6RG7FbdTYAKWGtFnQ26pK1RYb12pxB5Yb5hkU6/4b/qSW/Qz/4jhSSBFIiy3z/rPoIgwOtTjTgvaGGa4z8I56wD92Nu4I3JxB46Qggufwsu5oegRFrku4pFGpfoaDQT0jMIi5ZelRow== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DM3PR12MB9416.namprd12.prod.outlook.com (2603:10b6:0:4b::8) by SA3PR12MB8022.namprd12.prod.outlook.com (2603:10b6:806:307::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.17; Wed, 26 Nov 2025 01:39:41 +0000 Received: from DM3PR12MB9416.namprd12.prod.outlook.com ([fe80::8cdd:504c:7d2a:59c8]) by DM3PR12MB9416.namprd12.prod.outlook.com ([fe80::8cdd:504c:7d2a:59c8%7]) with mapi id 15.20.9343.016; Wed, 26 Nov 2025 01:39:41 +0000 From: John Hubbard To: Danilo Krummrich Cc: Alexandre Courbot , Joel Fernandes , Timur Tabi , Alistair Popple , Edwin Peer , Zhi Wang , David Airlie , Simona Vetter , Bjorn Helgaas , Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross , nouveau@lists.freedesktop.org, rust-for-linux@vger.kernel.org, LKML , John Hubbard Subject: [PATCH v2 2/5] gpu: nova-core: add FbRange.len() and use it in boot.rs Date: Tue, 25 Nov 2025 17:39:33 -0800 Message-ID: <20251126013936.650678-3-jhubbard@nvidia.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251126013936.650678-1-jhubbard@nvidia.com> References: <20251126013936.650678-1-jhubbard@nvidia.com> X-NVConfidentiality: public Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ0PR03CA0222.namprd03.prod.outlook.com (2603:10b6:a03:39f::17) To DM3PR12MB9416.namprd12.prod.outlook.com (2603:10b6:0:4b::8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM3PR12MB9416:EE_|SA3PR12MB8022:EE_ X-MS-Office365-Filtering-Correlation-Id: 8614629d-d995-49dc-20a3-08de2c8caaf7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?8QRaNd1Zc2Z6cqUlC8mCtIAxAECVm1BY6/HB28iP3zi+ExmgFbZB5tLziGUE?= =?us-ascii?Q?HrJyiCoR2sSCBaXStzx/j7QiLo/9zecXGYTbwez8E7H+WPZbYYDy6ErUGF+I?= =?us-ascii?Q?4fWJO4dLXF6em1wk2XufGdiTrcgln2HgPxbHk7HTajPfnpfwEspq5GMWOAps?= =?us-ascii?Q?REbAlLLPQxHWY2nyS9ajaRARlDyptUcO8dqYT+W/1Xmqx4o7o3GuLWQO7U24?= =?us-ascii?Q?YS7e0kbGETdvzi0zDMsk9kazdldRTyzxXrZkEkjBV78oeFkfM18i6Py5Rclj?= =?us-ascii?Q?A/6p7a6l6S2zFUaWX3CzyIwKS4Gk0tlr1OGDUP5RfgxtFMIPTQotn+9chJZr?= =?us-ascii?Q?dXLpL2ARmSLiSN0i/5H7DNnoDkfpzbsDVBa1Qk286HAiKN+3k+cv1QsE1M+h?= =?us-ascii?Q?Eei1qz79C5Z1kfqs7bYnY5ky7wSho6qJ9ygxLv4FD7UUh1CqJUOBCvNAKfKj?= =?us-ascii?Q?mUoyehBDlpmFizaNcQyFd9mjGd9H5iS8hbUrIvJrjTI+4K8fv8OvGSf1Z2Nl?= =?us-ascii?Q?uNI4nILOtQqfcnU90ROQojbkV3shrixOBbKqHo5LLK/p7MBsMDyXFTV3/rrY?= =?us-ascii?Q?IRMcXcdEevT5GpfAUwn9VhvHdEjvy1fjRcIT38wMqfa8QDgmddtYT8rcCKmT?= =?us-ascii?Q?7nO1kcnkxCdcILPF8iXPCnjXpCsIy2fHwKsQotSyuNfAX30J6bU16UuochFL?= =?us-ascii?Q?f+jXescbZgVkZKV7KgUF5S3kxR7m+ts9iMofoBT/lJt+pHYAZFfyec9x6NmY?= =?us-ascii?Q?EulX+ZXgGhao/U5IynVRVAcKRuQMmfy05WzOI6CxtrpeNKLGjprqw8VYHFM5?= =?us-ascii?Q?qzmTvGSaRv0BGX/9SJqYknuGFTzw5anXL/65VEjF4bCvmRMUkz75IILUVDGl?= =?us-ascii?Q?lAd+DzkZVtTDwy7GT5l2gMrKFYLTQzRfLqFSrzaGmrenZIuUfYg2EtiJ1dHk?= =?us-ascii?Q?9ko9d9xTG7wVU1C9LBIEMooXLhMNUv+jAqXF6IkTp0SIOdze8Q7BcPdden4+?= =?us-ascii?Q?mK8mk2J6tdZerA+uXqVuHQ791eZRyRMrOwF9p8MLgbNBE9y9p2fbHWLk7cuI?= =?us-ascii?Q?P2+hp0HcCBelZDZ7Xr0VNY8gERuyT4+k9hFYHGgkYPhOk1mkhuxJdPjfaj+K?= =?us-ascii?Q?4id6KTbxSH/v2YvGM1pIO+Kjgj0ZFku8eSOYEcKz0POAyy4c7kapP4UFcNyu?= =?us-ascii?Q?h4bHfHXGJRDOcL6pFbmEryjI+ApUeU4jbbtNDiWPpqBV98b3ETL6yelbKw4U?= =?us-ascii?Q?B4ntXVoAzlXccwLagUMREJApn6Vv0rXyKzSV1sEQZc8m2fHspQF5j9vE/pL2?= =?us-ascii?Q?ywAU08ddSqYVf9izrKGgGSQQzsw2lag+GmU/NnfMZ4tAeZqIgXnOvhduqn2D?= =?us-ascii?Q?XQfOndoaNiKiLatbrrT/U5KTYXwz8eJu1RnIVKURJZc1nLo48IkdQEN7S2fj?= =?us-ascii?Q?lObtRxtqyQQxEPJNGXVodLBgKbvizxc8?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM3PR12MB9416.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?idtXtEOnWroMU0KXRcj3Vx/oBXs3OWA6Wg8nVml376rY4AjUjKLyrmhFPTDX?= =?us-ascii?Q?yX/UyozReZv6f9TscZ9mzauaJ97+wEJe4xYL0CtXjtvZvmGwc9KRHhPimf4+?= =?us-ascii?Q?57HbnkLYP4wpmX8+1bbmF0/2SzLt47jWeAP9fNaX4tEvwmXXW5uA6T3JGU8B?= =?us-ascii?Q?hX1ogiC9nAGcw3gNPMOwM9AOqj678q8kGhGDJ5ZhEniv3sjbrq8QN7L+vpKG?= =?us-ascii?Q?Qhzs/8Dt/9d3gUhLbDP9aklFDFhv7K0bg3fxjrW60nCqrHQUXkKb5B6Ck9tO?= =?us-ascii?Q?MflBuBzsrBXfJ/XijtPa43PaRt02mHdsAp77WGs+Eolxn0cqK8ay0VCNK4LL?= =?us-ascii?Q?h6nv+3MdPI1ScaCi07Oci97YeCe+K0IpHUY1u0DjV8CMUJP4LOATyD8ebdXX?= =?us-ascii?Q?XagO7i0Rp1O8fp11xSawxAABzjWyL3Gs4dpRx9p6bXsyz1M8/iSLXxboUNsz?= =?us-ascii?Q?EqsdTWwtiM4EyNLF0EF/KANj5XCQEK33NOr6mC/oPsM1rhaEa7fHqKQLxQrK?= =?us-ascii?Q?iTy+U/3ogyc2Ea0lCcqi5SGBy9qvf2+xpdqC1qfocy3XXZMt1x1KoqFTAg4J?= =?us-ascii?Q?A/uked1kRTNJQIoydWGAi847FJJH3cS0LyB+Khv+6GynhBaT0nZeFHEBT1cy?= =?us-ascii?Q?DOQAYGq5koqLeI/jR3eKmVCQixa/iFJ/vr8OdKvrRA5Xz+tgBELMo9c5/35T?= =?us-ascii?Q?EAsxHZQvMYJxvbwBVsxzSqzJhYP77ASaHBRP5vybqzRU4EqGEGFr5a1TuudB?= =?us-ascii?Q?ttlsed/6SXD3e5+GsmUAJ3pX8kmJSPQO1IhlgKAM4XnljPDGPHPXooB83CGl?= =?us-ascii?Q?8wOeqeELJ9dpTaI8EBNavbwjT9pfHg2HG7DxdGNR7ad1VxJa03Oql2o1gS/q?= =?us-ascii?Q?ex3/Py/B5fctPTPlL7QMlD7H7KVeZl/BCnrWUc2W5gxnfeyje1yVShPJMJfa?= =?us-ascii?Q?s4Dtn/EOsSNFQenrl/EPWk9XTjtuOQ7x73wENFKxYNXoiXZKl05kc0KMpAOG?= =?us-ascii?Q?0hySkYEMNpJ3oHDQSgLApADHbrWpg4LfuOxDuRIOUV6ihu0sqNWAXG7919Qk?= =?us-ascii?Q?U/s+GC4KCgChYIhmriixKjst0TveKw67aDgwEgW/pqG3DLhOOGdZwkcusknN?= =?us-ascii?Q?nt9omP69CX63lkt4CzgOQjyJ7df65untgEmu5BsUhVaYksTe83L79uPWce0F?= =?us-ascii?Q?+YEUCvfh4OYY+Blgba1UJFc/oiRuW3Y0o/AS+braMQ635sAdb0guAGrBxXnK?= =?us-ascii?Q?B3rwxmgcI1EnJu7G4XGQ9aFZApN9umU/7vZx1GrrLdk+z4iR4ey/l4bZLouG?= =?us-ascii?Q?v9Y5QYMe27NdQWNAC+M7+iaHuhmZQJRnNOd6ZNJqLo+WfuD2uKMrcxeraMnX?= =?us-ascii?Q?TnG+SefR4BxCKbUv1WGj2HUhik54JGyAeOH9XdQQKf72iTgoOR7O8XGVw84n?= =?us-ascii?Q?BT21GehHSU7aO+DavwzVDrtjnvrSRqUXKnLKUf9LmYZOv9USqGLxv2l6mbco?= =?us-ascii?Q?kPCwm55RupkPGDLMZxlIVfrCescbx5CUq9IRrS+3U9pS6ha+OStEZjFPiYoZ?= =?us-ascii?Q?cSafiTDIZFWAl7sIGaoH4jeG1RYwoKaxTB8+HL2p?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8614629d-d995-49dc-20a3-08de2c8caaf7 X-MS-Exchange-CrossTenant-AuthSource: DM3PR12MB9416.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Nov 2025 01:39:41.0550 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: JS5G0R2oa1I9/YP6CV1xgEqCXyQAsJJ4DSr7GFlsn7Hj1RRPxpP38Omht3DK/0P4Mquj3LvHyI7NDBrmWBpmOw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB8022 Content-Type: text/plain; charset="utf-8" A tiny simplification: now that FbLayout uses its own specific FbRange type, add an FbRange.len() method, and use that to (very slightly) simplify the calculation of Frts::frts_size initialization. Suggested-by: Alexandre Courbot Signed-off-by: John Hubbard --- drivers/gpu/nova-core/fb.rs | 6 ++++++ drivers/gpu/nova-core/gsp/boot.rs | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/nova-core/fb.rs b/drivers/gpu/nova-core/fb.rs index 333e952400e6..9fcd915e12e1 100644 --- a/drivers/gpu/nova-core/fb.rs +++ b/drivers/gpu/nova-core/fb.rs @@ -100,6 +100,12 @@ pub(crate) fn unregister(&self, bar: &Bar0) { =20 pub(crate) struct FbRange(Range); =20 +impl FbRange { + pub(crate) fn len(&self) -> u64 { + self.0.end - self.0.start + } +} + impl From> for FbRange { fn from(range: Range) -> Self { Self(range) diff --git a/drivers/gpu/nova-core/gsp/boot.rs b/drivers/gpu/nova-core/gsp/= boot.rs index 54937606b5b0..846064221931 100644 --- a/drivers/gpu/nova-core/gsp/boot.rs +++ b/drivers/gpu/nova-core/gsp/boot.rs @@ -70,7 +70,7 @@ fn run_fwsec_frts( bios, FwsecCommand::Frts { frts_addr: fb_layout.frts.start, - frts_size: fb_layout.frts.end - fb_layout.frts.start, + frts_size: fb_layout.frts.len(), }, )?; =20 --=20 2.52.0 From nobody Mon Dec 1 23:34:59 2025 Received: from BL0PR03CU003.outbound.protection.outlook.com (mail-eastusazon11012003.outbound.protection.outlook.com [52.101.53.3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6E7BB308F07; Wed, 26 Nov 2025 01:40:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.53.3 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764121214; cv=fail; b=Q3v50IATF56H6PfW6FgG6rpzDR3QDg/Ow7OpTS112wM48AR6Xid7xiFdw+RoIQ55o3PdG7BVR6Q3tJTXft7S7gvDIzGMRL3/U0SjBFrLGcAk8Eeo7i6O4Lk088CceQNLbYrM3L4li3tj0s5b37aq8WrUaAB4BSsHZM7/my2icGo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764121214; c=relaxed/simple; bh=JYyn32nJtyJDczF08t5vQo+EyneCvNPWJKSPRMcmO1I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=jHUJZWXoorI2wpBcKxTSNQWSr5mqWgX+YJp0niNq9B16IMT9f+HF9P1PWUTDyhQ/J1OD/eTueLV6JYh1wz2vpbtjUoHIoR7a++rj20OWV2KbEktNAoUMfcxV/K3GBBHTCMHIzsHzLHzmMQalcOZKjku5FYnmpPbq9VbB8TdAVi0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=OCGBBlZ2; arc=fail smtp.client-ip=52.101.53.3 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="OCGBBlZ2" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UwMFYysL4nS63x4K40Xu02jDHAEKXYSxKSvrXRTTZtTqHUBYOUxi8ccDYVHblsvR337c9LXgJwnPeqhnEZ1WO4ed5qE5ZQotTNO0F6ETONYh9H5ty235g2YbU2W6uCzzNOVAMqUoE0bw+PFUyOweBuIM/z5fitIix4Olk+b4ZdEOa7LqRQC1l+JT8kIlXP4k6RJddhp1zaqX1ULbg5isQ25tmBHyncFrb40I21YXCPke41vQPH9Uxm2MQtnrYDaFkSD2P2COXKwAs1DqHIzjSj/Tj7RgWOtQaCkQ8h3FxKCN97raY1mrhgHzTv6BzUsnBa8tgeVauG1pCuNBL7+ZNA== 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=AfjdSBO+v/4XLJu5BvlZmcYRvXV8IXBZi9Xh4nYhziM=; b=oNZCE7m2i0kKzL33GtISkWsg8ceaztXpr9M3Gv9ltZe/Nd6ha9PqdkAuNvCWUMdh++9qNXWPsvd6BWuO6Qa3P6SI1/s5kKJ/EFeEmcMtml9PvZJvf6n8KZVnysn0tEzo1rNb0c5o4iP4ytiNvcTACx2nO6vCK894NHKKH7qQRu4puPkeclJtTJ2gd7vgknpx9ZhR7jyJOAqI1+jMql+vaNx6j67kwmcHfRtenz+yOaqLvxUlZjm0OOspXjxTBfOaLyCmt2AoufUTcn5RU9dRR9J4PFkZLy+XsBP589vPoK3lGlzgQpYSZhEciWiC2Frf/qA7oxH2aTYUhPQ1JrGLyQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AfjdSBO+v/4XLJu5BvlZmcYRvXV8IXBZi9Xh4nYhziM=; b=OCGBBlZ2aY76NV4pepr0esUszsDNJt1JNzgwgX11fnDKJFJOq2iQwIvnbPCBbCFsKTjTuR/mxWV3pW/pBvE/0rx+89GhDrQeMnWdZcCGA3OP3yU/YscqPu3RirsP2LPpYb8AVXpktpMIWSITuC3ud5fll1MuYlP/pX75yGUwk1t1Dq8MvvU05ozGW+1XfkKCgk5G1BKicro6XxWv3J+ezd4YRCe1Qp+LVnv8rG+fXqbuX0xp1SUHBKHY54seFpHYqvHuLAc+jErlLF4Uy5uKtYoCfFXDpe09zkEUaPNhBlluHkrvfu6yp47lLdXFvXmXOZ+w6i8iRP9s3HKxfXwFJQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DM3PR12MB9416.namprd12.prod.outlook.com (2603:10b6:0:4b::8) by SA3PR12MB8022.namprd12.prod.outlook.com (2603:10b6:806:307::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.17; Wed, 26 Nov 2025 01:39:42 +0000 Received: from DM3PR12MB9416.namprd12.prod.outlook.com ([fe80::8cdd:504c:7d2a:59c8]) by DM3PR12MB9416.namprd12.prod.outlook.com ([fe80::8cdd:504c:7d2a:59c8%7]) with mapi id 15.20.9343.016; Wed, 26 Nov 2025 01:39:42 +0000 From: John Hubbard To: Danilo Krummrich Cc: Alexandre Courbot , Joel Fernandes , Timur Tabi , Alistair Popple , Edwin Peer , Zhi Wang , David Airlie , Simona Vetter , Bjorn Helgaas , Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross , nouveau@lists.freedesktop.org, rust-for-linux@vger.kernel.org, LKML , John Hubbard Subject: [PATCH v2 3/5] gpu: nova-core: Hopper/Blackwell: basic GPU identification Date: Tue, 25 Nov 2025 17:39:34 -0800 Message-ID: <20251126013936.650678-4-jhubbard@nvidia.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251126013936.650678-1-jhubbard@nvidia.com> References: <20251126013936.650678-1-jhubbard@nvidia.com> X-NVConfidentiality: public Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BY3PR05CA0054.namprd05.prod.outlook.com (2603:10b6:a03:39b::29) To DM3PR12MB9416.namprd12.prod.outlook.com (2603:10b6:0:4b::8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM3PR12MB9416:EE_|SA3PR12MB8022:EE_ X-MS-Office365-Filtering-Correlation-Id: ccff7293-8715-424c-ec3c-08de2c8cabdf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?+5rQAPzvc5jLILNhppg1ALVm82VLod5nFGydZ3Y33WHmgP/4rzw+dc2R9SU1?= =?us-ascii?Q?3s8lcd/n+qNC7dN1sLBsTqzGc5QacjA0q5otkf85cC8S9HTNm+2ZG2WEQ87r?= =?us-ascii?Q?kudU9Q3zy8ih7OvtQ2g4ZsNNSemxx/cnQCPKNNHG4yGUK/NLIrNBbh3f4bOd?= =?us-ascii?Q?Gl9mY8joLSl+F+r5spdW4pAB+5WGlTon7KWi+zwlIc3T74wGJ1RLvC+Y/34e?= =?us-ascii?Q?kGsMflcP3xsnb80rIif3HR4BQ6mPPSEKcVBUev+FF6cqiB1npZU5R388c8W/?= =?us-ascii?Q?isL3952iB5Xj5pRXycj5kchzEOnM4aBdfOyQPrOIwhp3tZ20mbe/0KvbMhhB?= =?us-ascii?Q?z94JckAwULibNLxMRWx7BzgvVzb5xzGFJz5Ube9pfaMhPfAF3DIJW+LKKk6/?= =?us-ascii?Q?vezCRkgd+mgv3J2iYyJlGkly+Ywaf8isGocGuDKypOLlTDzsf/t++Pk4Dm+p?= =?us-ascii?Q?UmoKbeHXr/eezmBDFKsycpmQCOEnltmK0cWYqwnoZeN5fQeukx28U/FVW4f0?= =?us-ascii?Q?Nh1Cx4oTPykB7C9SEDA2XL4NvBVrWGnsR9lVZVecTJW9DBw2MDWrVWylAQus?= =?us-ascii?Q?0E4wk3rbjtdAyPQB1AMTSz7aXXfkos3zefRtUuVRIxUdohDi1kaDVmPDz/k9?= =?us-ascii?Q?7y/CaISqjg6k4GM2DP5EZKauSerSZM90dYwnbkIulx1DgP+iIOzbyNek7XSu?= =?us-ascii?Q?EoUByUMPl8dwohakqCpQ5TGVuci02QMBVVdikK9Y9qm3YsR7lvoWEdSyWzuo?= =?us-ascii?Q?Yg6bwEe4WbtKRrdrNQjU8qlrzyyhoVATT8Q1k4tM+p2SUo5aYEHAbqqW6BUM?= =?us-ascii?Q?g3VFyVy9pqmyPc0H1/LRAzQe8+fdoBoeABB+fc9XaO/LMS8uavvSMDtaeXCk?= =?us-ascii?Q?EUIipvMDO7JOzq0vrxq6Y7FNs9GGzsbsLvLlXBfss32u5ZRZh/6uOUuRHsDa?= =?us-ascii?Q?DkMXGXQDJAX7NPX3Er5sHei1paF6A89t36j4J8LZ/0QOT3DmWNH8iGuKdhX3?= =?us-ascii?Q?LuFfE5gb7eyR/rgHvmV9TB1zPmxOmKE0j4ec+vxvK0v7wJJjII0ou6v9t8aP?= =?us-ascii?Q?raxp0hZod4pzfCbMEyDOVY0bCFGmgNrdoxDcyItcrPMF2yppQ11sBP9Sl320?= =?us-ascii?Q?nvrNeUgNwTOeXm6sfkbfIhwIuYf3d7+57RdDSo9j3gLvCqoU+9nyyBW6dQmK?= =?us-ascii?Q?S61bgZwoi8bu8Vy3AnpxfteZ+zuUaTxadEOlsJJI2a7kRgyNEeC2xlOhihNz?= =?us-ascii?Q?YCSXqfCN9ukoHiS5Um1V0iH7ErQvjRcOBNffnPzpTkC2h/bLpPoXirfVBg8W?= =?us-ascii?Q?RVi2h4+5mZNIyWS6bHR8+qn3plE62adpf5oc96QAjUI1tjmIBUJ+UA6SUv+O?= =?us-ascii?Q?OAZEwm21OKEDnpxJq0RV3tdui15oLqZSWjDQ1H53fYf1kprdIrqXehgzCVAZ?= =?us-ascii?Q?GAY6KHXKFR/x5CmtC0T8mJZKrsD5KnoF?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM3PR12MB9416.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?1JZYPyTzWuV+QTZ630ZSF2c3QjHmQK1HkZXjMjystXYpr+UkaEHCmBi6B6iI?= =?us-ascii?Q?wigNjcZuggqw/BcMmXiaFTvxUGlNuLE6U4yrLsOkl3/irRu0DpnzAlDURG0N?= =?us-ascii?Q?PYP0Frp0VfqdAJNkHPjp/Z5GMOgX53xrVG1sALBxlDS+TaCNpalHJHA1kl/U?= =?us-ascii?Q?zCYwLyyGp0eT0THZNxr2f78N16QLvnvhxCj/5g37O+rmIFjxtQVwXBdAWXz0?= =?us-ascii?Q?KYRZ9JmIckLspCe9l///vlaD0qOYemwpqio3xfpcazO0nCuchtDTktlvB299?= =?us-ascii?Q?1SBEi6+7cPvZjStcZIZLoyvXV7udwOhUTr9is8gvbMdzXinVFUSO/MdeEafQ?= =?us-ascii?Q?ictVQHpJ5QUjqTIY/UkNRp0fSe/Itmns3f+leKHmDy5stUL1cbNrprqN/WKK?= =?us-ascii?Q?ygdIPUW8k+qxfhUUu9vrod3uhKMr2Xm9YmDL5rhN6BOBwRqqRF0ZeP1tqs1x?= =?us-ascii?Q?caSGhUqiKb5onSKsL4OLX2RtbNoHfgEXtZ77ChvMGerXZ2f+ew0An8Wj30Zx?= =?us-ascii?Q?oaGUwYf11P2g8tGQ0HyybBRHqnf6pbEFRqfzFtGeugjwVPXYup8ou/fRMXUb?= =?us-ascii?Q?II1+vggu5VOEPxOK1tm0LbjcNJWzY72mYK8BCKGz9qJ0NAS0WEhRgr+P9NuF?= =?us-ascii?Q?RtmwPcAfLbtk6lr0SupgZyq+5eIUt3Nx1Ow+4Jqf0+5TrQmdr+CbiiSI1txQ?= =?us-ascii?Q?e9QxT7mp89tC60WKioLYnZe8n0N7N1rxSqDBgUtSxTPavexLbAWAmpsAVV7y?= =?us-ascii?Q?5gAOqD7JBVI8ReIdWoDjr/f7mqs+V7SWxoAtNC2FKmgTtCl16H36Rtdmhtrs?= =?us-ascii?Q?BIj87oDtjx0wt8+2n/OUXBDbSAgOevJ1ssm8aEEbGWM1wtQY0OFdFpBxhw0i?= =?us-ascii?Q?yePqOeDTkGypYQuZhYi0FxzMvCSfcTvmNzCFg/tcltUV0nYzYl7gZlUCtmao?= =?us-ascii?Q?x75ru02U7DBmwa1ByohUYVsq3B1/MO1KYAut9FZw2uJQdLNxq1rmarVtR1CW?= =?us-ascii?Q?T1kAbnXu/IFRzGEhQTsSvYUSltZSO6YAirHwF2bAPD71JIkIXMUQCGZeD/S5?= =?us-ascii?Q?KarUcusC+Q65zde12bvUG9m9/IVzr8TrCb5dRab1g89NILdTpc0JT9GzRq5u?= =?us-ascii?Q?tM66MQV2i/wuEVb4y4VkviiMe3aVS+4zZgKClDb0oICg9Q8VSNZ1ROaorLyd?= =?us-ascii?Q?AgilAp2LTdzy1I8SB0ayKjeihMYCIAeAgfMthadnkSjoDDQ9e0gpWGcZBkiR?= =?us-ascii?Q?yrblQmBgJVPkgxKRBzAe/klCoKFLHzMGJz7tB6KpihCJNpv4FqR+l9AtKg/I?= =?us-ascii?Q?+CjHYGz5Il5HCjzIsxxOaPNg2Lok6fq9IaPhrPv902cEb1gEyrxR/JKoh16j?= =?us-ascii?Q?IMTVl8Gpkh9aoYdaZbssHipVAxTQWAyI0dOtkk5ap/oW2n0q0k6/O1e1I2yQ?= =?us-ascii?Q?42CIJG66XO4CY3SmiROaJuNB+jcc4UFGiGVUBy9XLve80Ty97oYb/HZ++R62?= =?us-ascii?Q?7Yyqj78wWYqmSQvlSdjo5FBClQ2GzJC74djNZC4RpabEUsDQcfFd1JI18Ik+?= =?us-ascii?Q?dwqmXtn+2IuZ/GFROAsZdcpIUwFQrz8cVrhXZ5Va?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: ccff7293-8715-424c-ec3c-08de2c8cabdf X-MS-Exchange-CrossTenant-AuthSource: DM3PR12MB9416.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Nov 2025 01:39:42.5720 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: zaSZX1nMjpIdOYe/LQ/4kXaE9u2N2tVIu/HTS9A6RuQWkBZsuKRPcEiDaAs6tcOBVtQo9hjSht1wtyoCNSmkCQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB8022 Content-Type: text/plain; charset="utf-8" Hopper (GH100) and Blackwell identification, including ELF .fwsignature_* items. Signed-off-by: John Hubbard --- drivers/gpu/nova-core/falcon/hal.rs | 3 ++- drivers/gpu/nova-core/fb/hal.rs | 5 ++--- drivers/gpu/nova-core/firmware/gsp.rs | 17 +++++++++++++++++ drivers/gpu/nova-core/gpu.rs | 22 ++++++++++++++++++++++ 4 files changed, 43 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/nova-core/falcon/hal.rs b/drivers/gpu/nova-core/fa= lcon/hal.rs index 8dc56a28ad65..82558af1b927 100644 --- a/drivers/gpu/nova-core/falcon/hal.rs +++ b/drivers/gpu/nova-core/falcon/hal.rs @@ -50,7 +50,8 @@ pub(super) fn falcon_hal( use Chipset::*; =20 let hal =3D match chipset { - GA102 | GA103 | GA104 | GA106 | GA107 | AD102 | AD103 | AD104 | AD= 106 | AD107 =3D> { + GA102 | GA103 | GA104 | GA106 | GA107 | GH100 | AD102 | AD103 | AD= 104 | AD106 | AD107 + | GB100 | GB102 | GB202 | GB203 | GB205 | GB206 | GB207 =3D> { KBox::new(ga102::Ga102::::new(), GFP_KERNEL)? as KBox> } _ =3D> return Err(ENOTSUPP), diff --git a/drivers/gpu/nova-core/fb/hal.rs b/drivers/gpu/nova-core/fb/hal= .rs index aba0abd8ee00..71fa92d1b709 100644 --- a/drivers/gpu/nova-core/fb/hal.rs +++ b/drivers/gpu/nova-core/fb/hal.rs @@ -34,8 +34,7 @@ pub(super) fn fb_hal(chipset: Chipset) -> &'static dyn Fb= Hal { match chipset { TU102 | TU104 | TU106 | TU117 | TU116 =3D> tu102::TU102_HAL, GA100 =3D> ga100::GA100_HAL, - GA102 | GA103 | GA104 | GA106 | GA107 | AD102 | AD103 | AD104 | AD= 106 | AD107 =3D> { - ga102::GA102_HAL - } + GA102 | GA103 | GA104 | GA106 | GA107 | GH100 | AD102 | AD103 | AD= 104 | AD106 | AD107 + | GB100 | GB102 | GB202 | GB203 | GB205 | GB206 | GB207 =3D> ga102= ::GA102_HAL, } } diff --git a/drivers/gpu/nova-core/firmware/gsp.rs b/drivers/gpu/nova-core/= firmware/gsp.rs index 0549805282ab..547f46b6655b 100644 --- a/drivers/gpu/nova-core/firmware/gsp.rs +++ b/drivers/gpu/nova-core/firmware/gsp.rs @@ -164,7 +164,24 @@ pub(crate) fn new<'a, 'b>( =20 let sigs_section =3D match chipset.arch() { Architecture::Ampere =3D> ".fwsignature_ga10x", + Architecture::Hopper =3D> ".fwsignature_gh10x", Architecture::Ada =3D> ".fwsignature_ad10x", + Architecture::Blackwell =3D> { + // Distinguish between GB10x and GB20x series + match chipset { + // GB10x series: GB100, GB102 + Chipset::GB100 | Chipset::GB102 =3D> ".fwsignature_gb1= 0x", + // GB20x series: GB202, GB203, GB205, GB206, GB207 + Chipset::GB202 + | Chipset::GB203 + | Chipset::GB205 + | Chipset::GB206 + | Chipset::GB207 =3D> ".fwsignature_gb20x", + // Non-Blackwell chipsets, which can't happen here, bu= t Rust doesn't know that. + _ =3D> return Err(ENOTSUPP), + } + } + _ =3D> return Err(ENOTSUPP), }; let signatures =3D elf::elf64_section(fw.data(), sigs_section) diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs index 629c9d2dc994..c21ce91924f5 100644 --- a/drivers/gpu/nova-core/gpu.rs +++ b/drivers/gpu/nova-core/gpu.rs @@ -83,12 +83,22 @@ fn try_from(value: u32) -> Result { GA104 =3D 0x174, GA106 =3D 0x176, GA107 =3D 0x177, + // Hopper + GH100 =3D 0x180, // Ada AD102 =3D 0x192, AD103 =3D 0x193, AD104 =3D 0x194, AD106 =3D 0x196, AD107 =3D 0x197, + // Blackwell + GB100 =3D 0x1a0, + GB102 =3D 0x1a2, + GB202 =3D 0x1b2, + GB203 =3D 0x1b3, + GB205 =3D 0x1b5, + GB206 =3D 0x1b6, + GB207 =3D 0x1b7, }); =20 impl Chipset { @@ -100,9 +110,17 @@ pub(crate) fn arch(&self) -> Architecture { Self::GA100 | Self::GA102 | Self::GA103 | Self::GA104 | Self::= GA106 | Self::GA107 =3D> { Architecture::Ampere } + Self::GH100 =3D> Architecture::Hopper, Self::AD102 | Self::AD103 | Self::AD104 | Self::AD106 | Self::= AD107 =3D> { Architecture::Ada } + Self::GB100 + | Self::GB102 + | Self::GB202 + | Self::GB203 + | Self::GB205 + | Self::GB206 + | Self::GB207 =3D> Architecture::Blackwell, } } } @@ -132,7 +150,9 @@ pub(crate) enum Architecture { #[default] Turing =3D 0x16, Ampere =3D 0x17, + Hopper =3D 0x18, Ada =3D 0x19, + Blackwell =3D 0x1b, } =20 impl TryFrom for Architecture { @@ -142,7 +162,9 @@ fn try_from(value: u8) -> Result { match value { 0x16 =3D> Ok(Self::Turing), 0x17 =3D> Ok(Self::Ampere), + 0x18 =3D> Ok(Self::Hopper), 0x19 =3D> Ok(Self::Ada), + 0x1b =3D> Ok(Self::Blackwell), _ =3D> Err(ENODEV), } } --=20 2.52.0 From nobody Mon Dec 1 23:34:59 2025 Received: from CH1PR05CU001.outbound.protection.outlook.com (mail-northcentralusazon11010071.outbound.protection.outlook.com [52.101.193.71]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E42DF308F0A; Wed, 26 Nov 2025 01:40:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.193.71 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764121218; cv=fail; b=UDiC4HUSjmRzUne2te0OTfLTKAPH1nn8ABJLLKaccDkJ9ioARSMi/iiQPjhV170Dtc9hiHHYq3Xqv7nYKSRfUEcn1XuFoYTwh+vtneoD/lkbNKBYR+I8o/CuZSdPZq51hMloLWOjl0KIkUSzxVNuBEIb88nk4/abtAh9gUudmC4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764121218; c=relaxed/simple; bh=WkCTzf5WQJexUcfr2HhnKmBcWdwF4N0Brrq9JN8Lqag=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=plbGffybtXw2bsXHsYN/YWAebWe3gsKLkOjfxQs9U4sHomugbC6MFFhrEv27e8WGSox3Qn+Edn52y8U6wLiQQjqitsPD37mmCuafsO5Xl6CD0U06DIAnl9DfUs4tNZEP+CW65klTBQf/tf5OXIaT22wDdi0RJ3ZeBuGXpjybMHY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=QvwHYFFH; arc=fail smtp.client-ip=52.101.193.71 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="QvwHYFFH" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ij8JYAfS5XloMjZQzh1nDigJoy6RkghzZQKZU7jrj52hH39MrC3IEWwOesRMM6tgq8ujMHzO80RZeu5baUpc1wMFuU4HcyG7XXvu/Z2RrNE1/ZhKBowBiUI+n7dz/s7fYHHamUzTybAgbXJIzte5eOxcZz5rMbKUvk7nFguoCqO2fg5/HKaxBMdJDuNB0rO8l1phYjCv1xysOxNh19Acrf7Gi6e0HGvqvldQp8bUwOUt+yGJYP6lfNy9T3LTQmQuBufqasMnC56zEfkVjUpxwqi5DnNoenV1dVc9sWEFlS0tPMI+4kqaSL8LiFst7TASOcuWf7gkRwHkfyPrR8TZiQ== 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=XbwIPLOSpSuSX6iuNz2sv7q1IcyLr0C7nSpj1kl0nyY=; b=m8kZLpfyJbdLnDahpdblcWipYhFwnMFek/d2PhCczOQEn7YVWokGtBujlx3cb2e1G9+xiQ9rGha/yznklA4Thog+f8R0y21lnnZvP62t8lla2GiXaWQOrFGrSXEbb2KztrRgxezK8EcG33C/1POxj6lO3Cuy9VqLEBL+gr0N+QDtTEJsPmuyHRF2mwIu2TTN1BLbyCGW+byT58tPXD2JOfVptW6nYCppnOIkCaB+NSmbGlGFMOVQZUhQQWXOD0wLaZnsWrALNx61k0V8DRIdhUKlLM5QwQLzih0+o9MkEj8y0X9bZLqv6kLYK9v+22uUjPdJskx63DKXRJAm8HyO1A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XbwIPLOSpSuSX6iuNz2sv7q1IcyLr0C7nSpj1kl0nyY=; b=QvwHYFFH8NNKyduCESoCihy7an7tU9pZ2Gr71146XKPPyySu8b9rLZjDlXyM+LS1h5Ro/XTHVEdcvDwuprWunmE10YDSjP51p5NecJLHMfxJgZG103+X5WSsBwRvTSdt7W1XhglY0zatsfE/CHYLmP6+jx+V3GtR+jxcjFEg87r6B+4L0OTXLptkMPBw5J2gyMtB3t6pJEK3Rmr1yNO1s7uK9/2jvunqq8IBd1cnVmOeHOh7ujVNpQG8Mvz682f94vFs1vl8v++b9Kv3jtFsmh2bnHjF8gSyzJ/wee59UK6+utR2NMoSmALwDaTz1ksNOceHvv4yc25AIcch4QCMBg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DM3PR12MB9416.namprd12.prod.outlook.com (2603:10b6:0:4b::8) by SA3PR12MB8022.namprd12.prod.outlook.com (2603:10b6:806:307::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.17; Wed, 26 Nov 2025 01:39:44 +0000 Received: from DM3PR12MB9416.namprd12.prod.outlook.com ([fe80::8cdd:504c:7d2a:59c8]) by DM3PR12MB9416.namprd12.prod.outlook.com ([fe80::8cdd:504c:7d2a:59c8%7]) with mapi id 15.20.9343.016; Wed, 26 Nov 2025 01:39:44 +0000 From: John Hubbard To: Danilo Krummrich Cc: Alexandre Courbot , Joel Fernandes , Timur Tabi , Alistair Popple , Edwin Peer , Zhi Wang , David Airlie , Simona Vetter , Bjorn Helgaas , Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross , nouveau@lists.freedesktop.org, rust-for-linux@vger.kernel.org, LKML , John Hubbard Subject: [PATCH v2 4/5] nova-core: factor .fwsignature* selection into a new get_gsp_sigs_section() Date: Tue, 25 Nov 2025 17:39:35 -0800 Message-ID: <20251126013936.650678-5-jhubbard@nvidia.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251126013936.650678-1-jhubbard@nvidia.com> References: <20251126013936.650678-1-jhubbard@nvidia.com> X-NVConfidentiality: public Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BY3PR05CA0013.namprd05.prod.outlook.com (2603:10b6:a03:254::18) To DM3PR12MB9416.namprd12.prod.outlook.com (2603:10b6:0:4b::8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM3PR12MB9416:EE_|SA3PR12MB8022:EE_ X-MS-Office365-Filtering-Correlation-Id: eeb73a88-70f2-4695-9618-08de2c8cac91 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?a8iN66tWTHed4Bun+BRGv4z4Od8qORBHqyupqdNnhK2MbM542yKW9uSIovaW?= =?us-ascii?Q?hjUdgN05Oy/l0xbV9zzEXG/7aWfw9n3poh6mifCw+KAfqP/qZHtQCYeeAssg?= =?us-ascii?Q?QQcTtTmnlLYeoysanhdmrgidbYIRc4jPT30nt9Bh+1umcS2HUwujZaeXCU5v?= =?us-ascii?Q?KC5OTKLvBKRsFGHJl2ZaFvhMNx30hI2tMTa6adjeMyicxnHxi2QgIltn7Fkg?= =?us-ascii?Q?KgVAzOFYrDoY7UUR2TKAMcdz1lgVVdFfNeCAM7gp5R+RE+ltbUtEQQrqSsdi?= =?us-ascii?Q?EqE79DbnRhYT6ojjXdFTQTFNYPfy0aD66/xmEwA6Scg5EvsnKFFFJYS0rY4K?= =?us-ascii?Q?G9cyaiHVxJiTJsxMFmaFF+Ej4TPXWgQ9st4OH0d/Wq+R1IMQdvKUYqx5Td3P?= =?us-ascii?Q?syoX13qIufpvryfPiiPhJW9uuF3zpIOu1DWdcxwvDzh+BYCxDJn/PF/XD9C7?= =?us-ascii?Q?qdOYurORKTdTBtMvkBH0sB1LOkWwRTTiCBtjdKXOmZIrS3CI9ykxNW9nUtDq?= =?us-ascii?Q?Ufrd7ELr0YvDYbbmQ26UdTyoH8WlmUR9/36xLt4Zmw0Zuai9GxywCB/hcOw0?= =?us-ascii?Q?GMTqlHuq+xmjOGgdq6avZnJCX8cElqdPVfmEbJFj69sRb/9N+BSniR9kEUoO?= =?us-ascii?Q?cQhnt0PrFStE1HRFPmxid263TE14lzkJtfZScw3R5wn0bkG6Fadi5sPZq9oY?= =?us-ascii?Q?x8yZfEZADGbwju4PwWmQ8pRuQkNcxRZj6/9p6rxVIViWUqqlIBFg6cbZat62?= =?us-ascii?Q?Te/fgMVbq0FUGjO26Ya2o9LUpJrj38tqqETkuA7Lazg8U3OLvtluQOby3wxr?= =?us-ascii?Q?VHQTsOyoLxTdQrz0Lpe0WQo95f0pA+l16kXJkEhBCHe5kdoNCBJ6AcCE7ccz?= =?us-ascii?Q?BksICgmswfScb5Sq5GGlc+grF8OpYM4GlnKw8zPWpQ5zl/0tnR6qaFRHVWHm?= =?us-ascii?Q?TUotm3xh3GzEEEdeJqHVAg7R+rP1UmrfNySrdH7iKEqXrXEqlLrQX/vOqCya?= =?us-ascii?Q?lYTZH8xfOKWi/0G/JWiAX2z+1brsnwSVc2YekbzL0nEPgUlaeRbMKarJD+Da?= =?us-ascii?Q?fvGJmHuSXo4EMuYvtslG/k1jsu9rhakQZFIWwwrktbcO+iOSuJgyclTEhIus?= =?us-ascii?Q?sFojBS3T+KwhEnKWtBRXSVDUy8ARrK6kFJZrLueXKeYARbUF57nrGfsf01TD?= =?us-ascii?Q?fzbfvECCLNlSBPFHuwpVHqd4DyWOxW3uUfR4co7Bh+E5F1fmrz5MmPQgqOUv?= =?us-ascii?Q?jlT8EYBNF6EjWJpmflS6L2TxSBSlV3YTy1ikrW48oNQYxr5LgkbSxgfIUgTu?= =?us-ascii?Q?bvdSru+6wll62emF/WWbqXjsqGuL1FzsJydhkb1MdidsQ+Mdl8VaBhj0qfoM?= =?us-ascii?Q?dMa4fGKJlgNzKRTV3vPkaXIboH1G4/SShGMxZeR8v6RS1LiO4Amw2RBb2A72?= =?us-ascii?Q?pCiaI/TRyw+/1OcLpneNntcb3wVcfezU?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM3PR12MB9416.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?P03rzgSx1Pci5YpYrdWw6qUx32k/TyvxHlSCRVBkYbRyBn0pgXvSWkRNM3mu?= =?us-ascii?Q?jn3byNhfRE9gaJp+zpHEGMUuRXPDPSmn9vsA6+GGRaBAm2YxcCiaDs9IKvzP?= =?us-ascii?Q?LZnG4le+75PmblDO+ThQB5CLyAHkIlzJP+ipOzmqJEkLUR4wIL58gmc+uw9O?= =?us-ascii?Q?ukt+q8wbeeOTYoAgILhIsm8UUrLiktvLxdDqNpR9jyE42S5J42s+FSLOPHCA?= =?us-ascii?Q?48ue2hQCKtirKvFyCieOhSd+mNvW3gY8CduOz640bXwocDXEU/spq0fBOY/h?= =?us-ascii?Q?crP3cZFhbSccQhv9YghL6xyF7zw8EDPQhnc9acNzmt6Qm18+fqPMHwxW6g45?= =?us-ascii?Q?o5iz6DQPLnrwenZaNdtXbpuFdJgKPWweSPWe5cesqrJQSI0Q4kZDnMwKuqf9?= =?us-ascii?Q?P9qXWw5DWwag12mLv+5pkL6tesKULla2o3GiBwLB0ka9deEyzA8HtX7+7+/l?= =?us-ascii?Q?Cf1+bmrGBTcCkG5QfcCHZVZAEFN5H84HzBRJ1pQo+MjR4zM32UNzPcMsizEY?= =?us-ascii?Q?/MEiGDsEfl/ZFA94+THgZe/EJyIPbz3F2u3tUwF/eorin/ibCCohK//qn1ha?= =?us-ascii?Q?AY/Du37ffx2+JhODypWl17JsgDh8LEDfHyZejJfn8M6uS65djNVKiobgpyPJ?= =?us-ascii?Q?R/2OCAzhPiPfE2UXJcoTxdPvc5aorCUercIPd1OQHi1r/Ui7Q/xuXvviW8Dk?= =?us-ascii?Q?i1rGPvJ0CCB0W3lRdSdZkX4GOhieI5AjgDULvCQ9b/0KETjp40Bns904vA7d?= =?us-ascii?Q?1vbW0bzZAdowTdjfLbpVkDhC19ftssnZ/qpjLJorT/0lF2FueJ6M3tiMoD92?= =?us-ascii?Q?mh/we4nM+9+JA6qySqNM+hZ2/NTsmHJDG4iZO68EtUbuRqy436P7yk0C2CBr?= =?us-ascii?Q?mmK17IwjRU4vDMcAvKsojZ4xxbK11YQt/IHzL9WV9NTTSwRwjwPNZQfuEoVn?= =?us-ascii?Q?iNJYEHtndt+YtyXeeDSwO/wU63aiPVekQbtWoisT1bvMlhm7GtL5ASKQfdGD?= =?us-ascii?Q?5HVwxt74HGFf/kUjUzGUtxQsUZLROYE4gJTea7o/mjquNsAD+27YbVOSnN17?= =?us-ascii?Q?QKr8hqVSBRxjOEYbx0Z+6y1+SoS/hIxMDHhdy4TZW5kHY0yrEZrs+L/UmBfA?= =?us-ascii?Q?rpm5BxcxLJMH3D+C+4iF9nLTDQfQHn4wdDx6Q4b+o9SQRQ9ddqM/OSCNbaV3?= =?us-ascii?Q?VFsZuv2z/vkbK2lhmNY6SwYU/U8QE1uucUqyiOiO7hd2IsOTrK7+vpiRTPBO?= =?us-ascii?Q?2d3AcKhywb3KBpNb6Tr/kXxpFvqRDYrCn+/16BBz54ZwUv4EONlKlwK+vULN?= =?us-ascii?Q?J0L+rfWl+iDqjqpta+HR9fI11R2BqIvSfole+17mRHkQIO2HXtLGuhtnkedb?= =?us-ascii?Q?/fbchN6WLkHfnw1IvQwtRF97NeaQJFnEvpawtkGSgROyPmRyPJFYk/IP8AsZ?= =?us-ascii?Q?TB8wLLx9jGaBDbvYC8pMY6/Vjau77XKOP5YzLBPEr//RUSZp3i+1eSPV3xGK?= =?us-ascii?Q?wEJc8euckBDrbCA+2f5ezQJgyGnbdpIawKavcfCeJG30TzHHh8MmhSL+cJbC?= =?us-ascii?Q?CBcj/zA59m2W501VejHSIyf2K3lN0YBagTufg6ld?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: eeb73a88-70f2-4695-9618-08de2c8cac91 X-MS-Exchange-CrossTenant-AuthSource: DM3PR12MB9416.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Nov 2025 01:39:43.6981 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: XXrHfQyyxZD8DZq/13sGu+Q9W4BSipmeyW/V2kByMvyOydOdAuzAvKNnJNna9dxc2BdQlIn3NE6Yc3iHayvMWw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB8022 Content-Type: text/plain; charset="utf-8" Keep Gsp::new() from getting too cluttered, by factoring out the selection of .fwsignature* items. This will continue to grow as we add GPUs. Signed-off-by: John Hubbard --- drivers/gpu/nova-core/firmware/gsp.rs | 43 ++++++++++++++------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/drivers/gpu/nova-core/firmware/gsp.rs b/drivers/gpu/nova-core/= firmware/gsp.rs index 547f46b6655b..86ed4d650d05 100644 --- a/drivers/gpu/nova-core/firmware/gsp.rs +++ b/drivers/gpu/nova-core/firmware/gsp.rs @@ -151,39 +151,42 @@ pub(crate) struct GspFirmware { } =20 impl GspFirmware { - /// Loads the GSP firmware binaries, map them into `dev`'s address-spa= ce, and creates the page - /// tables expected by the GSP bootloader to load it. - pub(crate) fn new<'a, 'b>( - dev: &'a device::Device, - chipset: Chipset, - ver: &'b str, - ) -> Result + 'a> { - let fw =3D super::request_firmware(dev, chipset, "gsp", ver)?; - - let fw_section =3D elf::elf64_section(fw.data(), ".fwimage").ok_or= (EINVAL)?; - - let sigs_section =3D match chipset.arch() { - Architecture::Ampere =3D> ".fwsignature_ga10x", - Architecture::Hopper =3D> ".fwsignature_gh10x", - Architecture::Ada =3D> ".fwsignature_ad10x", + fn get_gsp_sigs_section(chipset: Chipset) -> Result<&'static str> { + match chipset.arch() { + Architecture::Ampere =3D> Ok(".fwsignature_ga10x"), + Architecture::Hopper =3D> Ok(".fwsignature_gh10x"), + Architecture::Ada =3D> Ok(".fwsignature_ad10x"), Architecture::Blackwell =3D> { // Distinguish between GB10x and GB20x series match chipset { // GB10x series: GB100, GB102 - Chipset::GB100 | Chipset::GB102 =3D> ".fwsignature_gb1= 0x", + Chipset::GB100 | Chipset::GB102 =3D> Ok(".fwsignature_= gb10x"), // GB20x series: GB202, GB203, GB205, GB206, GB207 Chipset::GB202 | Chipset::GB203 | Chipset::GB205 | Chipset::GB206 - | Chipset::GB207 =3D> ".fwsignature_gb20x", + | Chipset::GB207 =3D> Ok(".fwsignature_gb20x"), // Non-Blackwell chipsets, which can't happen here, bu= t Rust doesn't know that. - _ =3D> return Err(ENOTSUPP), + _ =3D> Err(ENOTSUPP), } } + _ =3D> Err(ENOTSUPP), + } + } =20 - _ =3D> return Err(ENOTSUPP), - }; + /// Loads the GSP firmware binaries, map them into `dev`'s address-spa= ce, and creates the page + /// tables expected by the GSP bootloader to load it. + pub(crate) fn new<'a, 'b>( + dev: &'a device::Device, + chipset: Chipset, + ver: &'b str, + ) -> Result + 'a> { + let fw =3D super::request_firmware(dev, chipset, "gsp", ver)?; + + let fw_section =3D elf::elf64_section(fw.data(), ".fwimage").ok_or= (EINVAL)?; + + let sigs_section =3D Self::get_gsp_sigs_section(chipset)?; let signatures =3D elf::elf64_section(fw.data(), sigs_section) .ok_or(EINVAL) .and_then(|data| DmaObject::from_data(dev, data))?; --=20 2.52.0 From nobody Mon Dec 1 23:34:59 2025 Received: from BL0PR03CU003.outbound.protection.outlook.com (mail-eastusazon11012003.outbound.protection.outlook.com [52.101.53.3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CFD04308F12; Wed, 26 Nov 2025 01:40:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.53.3 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764121224; cv=fail; b=E8PU1wLPoTPpICjWoGmrigEVP4rRzelICrOaQ+pko2BYqJzg51uiuOd0LDiCFlceQXeV7JJnCP1NCTaEgt+bqBUK9cUF8FwH9Xc4HtQr0BWJXlCekzI+rpgk9RqxbF4sxI24S/PPFyX1r5m980pCB7iIBACqsiZnxxnfg80d91A= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764121224; c=relaxed/simple; bh=l1fOdRvCTPzu5prfc/sRcJPXZDP0bAmt1ShKl+F7+EM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Facp6iDQR9bNb49PdnBjO5YspWCzuQzkoLl0uzBA8j3+mZOLHXqlC0dZEHqP/aTiw3f2iZ/iYq0XsYzlYckvA1pzmg++IkKTSdDBqc1JRIZFAcOalLrwbKGfsuETgGA1pGCIWY480S7GTLpiPoa5FKrd0dVb1Ozca8Eo2n/Og7E= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=O0bozW+z; arc=fail smtp.client-ip=52.101.53.3 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="O0bozW+z" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mp++SwHkrvy09mFRzuI1RZ42Xad232tljXv51fzKR/mnWj5kiBD409tm/7GliOHFtdN0kPIIhz1PKWXrrniDc7DIep/droRjXZKM5cQ+nzdyDtnFTOdfZt1N9A66AvmCNEAAUWvHAO7eL3ozanCO7sA9TrQqFq4rGVp7HfYc2BMmT+T8Yqt7jkGbriucaBv3gCUxjxVP9yzn7xuzKn/E/facX6FC92AZ34bKLHwZCud+6qBTcCbtNswIjCJyRSt1jlssamVFBdLVzwW82MZatfXGicWl4F6QuXxiBJ9Y2qnfNAVhss7BK4ubmFR5Ox3gqVGktmlUmPbb1cKPYxLKYA== 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=MuLegbD+0RStRUzvguz5VZ3qj9GDYL+kDElAvI4lThw=; b=HVZ+5fuczbdnJjqyZ30oXflj4Vxs6aerwSq7DdVAEUWOgsQYSm+PRkXW3ZKNVALCFhsHJ3E+9/Qj6Fgd4dwrJMz6oo+ZbTLtA4BEcREO7dnWNlFLrUWUcX279VXtp+kswFTDHKT6yg8XumJkofmdvcSb1HTYSzTgr3AhDwf9gkMVucIIVljArjEbehr1urWuiHhn5aTzsJMywdDSswQ6FEQqleW3zZnmln5aQh2oQSzDizQVG72GRzlFpPj8STouK/MNhSz9R/n8K4Yd5TuNfmrLn9Yyv+WNkF5986uzCVu8otAiTJjx3LEMqGLpeE7s/0nPPzOnRcV93DiJI8aWoA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MuLegbD+0RStRUzvguz5VZ3qj9GDYL+kDElAvI4lThw=; b=O0bozW+z7KFbUax2KD9G4iwrNHClNXUc+6sk8G2dvyMdnwC3yFwt9gjj2PP9hxn4o6vtDivOIQqznKtGYhssuqeCgbh4bFNdfh+ECZLMqC4DXuCo+C4L1xK6yIEiN4UuLeL/eGO5CQU1O3ycsBYNAN4l21xWDmVDD3XY9qhOMU8PBdZbNo7Vj6r4C/hlNI2zImJG8Jugt0euTIx9pCXORO2efo0kpr5NiHwf2zhIR9JCqqHkwRMezYgSMhtvXWmHRSNc6QD4UGFzTUtyZPSOrIZqX01sjj7IKLeD+r/97tAl+60L9EsgqIbe+kqyqdnxeQLZ0IER+FiHt0UnPguLxA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DM3PR12MB9416.namprd12.prod.outlook.com (2603:10b6:0:4b::8) by SA3PR12MB8022.namprd12.prod.outlook.com (2603:10b6:806:307::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.17; Wed, 26 Nov 2025 01:39:45 +0000 Received: from DM3PR12MB9416.namprd12.prod.outlook.com ([fe80::8cdd:504c:7d2a:59c8]) by DM3PR12MB9416.namprd12.prod.outlook.com ([fe80::8cdd:504c:7d2a:59c8%7]) with mapi id 15.20.9343.016; Wed, 26 Nov 2025 01:39:45 +0000 From: John Hubbard To: Danilo Krummrich Cc: Alexandre Courbot , Joel Fernandes , Timur Tabi , Alistair Popple , Edwin Peer , Zhi Wang , David Airlie , Simona Vetter , Bjorn Helgaas , Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross , nouveau@lists.freedesktop.org, rust-for-linux@vger.kernel.org, LKML , John Hubbard Subject: [PATCH v2 5/5] gpu: nova-core: use GPU Architecture to simplify HAL selections Date: Tue, 25 Nov 2025 17:39:36 -0800 Message-ID: <20251126013936.650678-6-jhubbard@nvidia.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251126013936.650678-1-jhubbard@nvidia.com> References: <20251126013936.650678-1-jhubbard@nvidia.com> X-NVConfidentiality: public Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BY5PR20CA0011.namprd20.prod.outlook.com (2603:10b6:a03:1f4::24) To DM3PR12MB9416.namprd12.prod.outlook.com (2603:10b6:0:4b::8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM3PR12MB9416:EE_|SA3PR12MB8022:EE_ X-MS-Office365-Filtering-Correlation-Id: 6dd10504-214a-42c1-f489-08de2c8cad78 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?iEfTMAa26mjF97KfPE87exq0QN51msMd9ZJ15qwvLHmz8hfesgtJOjqH3DMF?= =?us-ascii?Q?holOKPKiyAkEZrJr8OwraWKASZS4sjjpcqHcKb1oVTcSRGquKi9BM3LYz3KG?= =?us-ascii?Q?W5l1Rzw+aExD1PXT+wsSFuGdoXb+yzRVjqGYdNU6eFWcbzwc9Zj/58iQhFEO?= =?us-ascii?Q?R5/sTEzb7SWCC0IF7/PcfzxsesHcNvh5PMbWGmADJIry/KLOORjLnsLFV8u8?= =?us-ascii?Q?MsW+/Zrr8y7esjN2l4J0HnMGYM6fJaKhhd2Ny4Xrteb5jTpEFeWWjw9lrfq1?= =?us-ascii?Q?7ZwX03uifKNUHfU30bW/Z9ede23O12VHWAJrwV24JrgEpUoCur8WFAYM/pt7?= =?us-ascii?Q?3dwsDja66TiVaiiFu2lwwDuTqdq1Ip6RQIaoHVhrcIecx/LVppvfmHXG5FEY?= =?us-ascii?Q?AReR2y8ElRVWKsPIXX7jjYhusdVf7M6+n5qSWCT/YRP22aUUY85YPEpTg+Qe?= =?us-ascii?Q?lC6G0wYPE3vyeB31LaRFPdCgk7PFGbN/Uo6oF+QW+Wsf51nUAwxcR2GbQYxz?= =?us-ascii?Q?Y88jGQpd+rEspOXO9m2hkTyL8vsZfx3J6v8vnNkEJRGysVFdtWNMcfRpCE77?= =?us-ascii?Q?7fH9znCnHbf6DuJ/AFSKDQkTC+G8b0fzfFbS30wOOOhVw9LSeHKqfyideezD?= =?us-ascii?Q?jLoe2HGE1iOMkoNIiijS/wZg34onfkZfz53WUQxoW+mAlYdHOFxgEVg4UnWg?= =?us-ascii?Q?ahisKVXC1JJRbSRBkR0px3Aokd6tQoxUe/BZkir0Mp9d2Hjs4UzSMwnrVG7v?= =?us-ascii?Q?DTtIalr/vW0ZvlSz6+LdljNAnyoo1aSYcN6rsiKjMrp9i7mI07yigHoZcj2w?= =?us-ascii?Q?iy+5Cgk0xSXOJKCRIUR5kTeSZqaiKw4vKWuz6LqQ96vTFtuHm8yp1hNsTLyO?= =?us-ascii?Q?ke6DcKt3jrRcXKLsaLCdffb2mvvjOWuJ6qJkZgdo5y3WQvr2ieasc5mVfGl4?= =?us-ascii?Q?6Sz7fSa4zZQk79KGQzHTgmo8njISDNaz52xaqvxu+UR54GIG0j5uqNvVTkdk?= =?us-ascii?Q?SRKNvjdT1kCTAJy0xi6BGvi6O8ycE75JHVWvvyyFM5tz0oHs+VlfCk7S+GgJ?= =?us-ascii?Q?15K9js395vkk86aME9myQZPgQKBJihDz+RPJaPZDT9r0oczf+qz9aKzXpYHQ?= =?us-ascii?Q?LSNMNexvhfW2Ge1xzG/e1HFAWhXw7CQNk+WPYQgjngYQBR6XX+xM86TqAPRo?= =?us-ascii?Q?lUCOVhQr3oZF3BiHsDQzuFraDhnzj/8GkC1ow94y8Wh0ijuNEuy3HPBSBts/?= =?us-ascii?Q?AqTptno3KDBLkH07o7BaPMWZCA/dITvQHsjRpkXijsZP0q6P5eb4XKHH/eD6?= =?us-ascii?Q?SGxYVGpbr7tOjM+M8aucNSgkM3JAkpdUpE2cK5asg0qQTei83ahdM0jJstu1?= =?us-ascii?Q?Ox4lD3als6SIqUom1Den3VqeJWX8kIO2gi9qs0Tw6ytgdHEEbFdL/f+3OTjU?= =?us-ascii?Q?oRSIQVBvV7xdntYppc3J9GfYdKDDwuyb?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM3PR12MB9416.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?hZwgWkff4ok0quGDNhIlIA++EshoeFHP/CAfAAeX/sMyPr6lfwMIDpzUqcH3?= =?us-ascii?Q?Oa44C412UopfyP/a0HKoE7ORyx4+2N+BHwId23vSJwLYE+jFin0Z2h/8wHzF?= =?us-ascii?Q?fSCJAwZGkJJkBt++vUn+AmZMeXSiAnfPzs7IvaHWRvk3gdYwI5UN01ZXYAzx?= =?us-ascii?Q?xpCNzP6wpzkrfAdwS4b/95g9cgOknEse/Z1ZHAL8RFDDCfsyd9Xpm3CmKo+E?= =?us-ascii?Q?01h9flsShKMBVNi0mP7XZc4noYOk2FHy7AFKCTlkYVndSBgUiXn+yP1X3W4b?= =?us-ascii?Q?46p2r/OTBUgFmFbWlDvm5mHAjZkH0nWeLtlQFh4c0NEXtMRqxqhTq3n9xzdB?= =?us-ascii?Q?pUNG/1LEcV0VwzpApleRigrWhcBPnR/mcbXHeAvTC8m0b81ZvnmwwFjLM9DX?= =?us-ascii?Q?AsGUakxBXWVSu1O7wcnaiEyx++ntLtJAXg9C3ee9kR91l8pQGX7snpBRAV8P?= =?us-ascii?Q?vuihepoSTmgrBAuUWSPZ6jI681y3S+TKVzR5iFjY7Eb5xnt6B00Yvl+nTkhh?= =?us-ascii?Q?g0sUD3IVmBiMuHWST+UU2L4EfMfLigr85N98IeTwf5t8KMpHQivsAtbf8hZB?= =?us-ascii?Q?OwgLkYkOP6oyqkTDvdMsw4XT3JHsWqF9ybfSAXW2yYWr9dSjw013SPrcbVEo?= =?us-ascii?Q?Kmnz8k8o5UJkgqakqqIh5kZiLgYo/bKuiXglbYv9EqzxvFbZexSEL8luvnxQ?= =?us-ascii?Q?diAxTocohcEKjwIWIOqyX8/pwove+uvtyVx4+bjum1sXxirVy7ejlGFsfuvp?= =?us-ascii?Q?NuL7hdyyoIvoCsrTTPQEdk0G74w6LHx+FQyAB9jg+stY2AWWVUpV7qWlnyEo?= =?us-ascii?Q?UGvEb0hVYKfGEjUPWuDOiXpyg6pIQfNNB8w9Ztmvbr3RflplTseMHFFtTo4d?= =?us-ascii?Q?KUG36KOv3HALIeyQL+8SIDuPzB+TOIemXKQun/qfNmsJ5sBny3expw6Ye1wd?= =?us-ascii?Q?x/nX7LGW4N/dxsh9j2k7a7do6aHJsWqgKUsciCuFsYxs/XBfHaeO3TmKiqtX?= =?us-ascii?Q?YD7FLb0ezcwG5oR6BOaJ44ikgQmbFVZhCsfmq3BmtNkKzV77eBBgw4SrjnNL?= =?us-ascii?Q?yLdDH0N3t9OJgH27WyK3u3uW3SHMw9VqEF25w7WWVwhYjQynxRzmmxg9swJC?= =?us-ascii?Q?VAgXtydZpErkKjQ/O3Jnllu+xH5Fcl7toiCgl1FR0Agcgml4azN/jOJFqyNH?= =?us-ascii?Q?NRzOuLB+CC3kWeCwQDa06Z/rJx38wh+tJShYqWJb5d/rRWytm1uJcHRJ6fRZ?= =?us-ascii?Q?T842dwAD2VCac6kCb5fOMtenJ0GwWNQ01s82mhKLSP42zH3XhN3qUiKiDLP/?= =?us-ascii?Q?JF7+VYRD/LmmGKYyGeaMO5QDNsWHUMC09lQjijRuntSm7Ua7mT/oGj8yA4oN?= =?us-ascii?Q?U6RipOCX+iwGLpt812AeChb6Sn+AnZuzgHVfqeesbmyh2OO42hGq4n81JMPZ?= =?us-ascii?Q?9dBuS1+E1+1yAX+E7HfG+4AoUaWAMsDBJ2VpwsQhVFeymE8vlaHG2tGhfXbk?= =?us-ascii?Q?ugTtq9crxAnAR9ByfZyJhUH3cWhWo+xFk5zBhloEa33JKdrX5mDi8kJKZPju?= =?us-ascii?Q?MwNPiAYWo3QeMapobE2HPf9edMTa+oe5OZiIdejV?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6dd10504-214a-42c1-f489-08de2c8cad78 X-MS-Exchange-CrossTenant-AuthSource: DM3PR12MB9416.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Nov 2025 01:39:45.1937 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: KufWMkYatZO1JwbXeTPWYd81dx82/+siK5pWHxK9yMszxTRBtBdLIhuexAN8O1coZfKskD8eW30otQLbCKow1w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB8022 Content-Type: text/plain; charset="utf-8" Instead of long, exhaustive lists of GPUs ("Chipsets"), use entire GPU Architectures, such as "Blackwell" or "Turing", to make HAL choices. A tiny side effect: moved a "use" statement out of function scope, in each file, up to the top of the file, as per Rust for Linux conventions. Signed-off-by: John Hubbard --- drivers/gpu/nova-core/falcon/hal.rs | 20 +++++++++++++------- drivers/gpu/nova-core/fb/hal.rs | 17 +++++++++-------- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/nova-core/falcon/hal.rs b/drivers/gpu/nova-core/fa= lcon/hal.rs index 82558af1b927..5c504577b97c 100644 --- a/drivers/gpu/nova-core/falcon/hal.rs +++ b/drivers/gpu/nova-core/falcon/hal.rs @@ -9,7 +9,10 @@ FalconBromParams, FalconEngine, // }, - gpu::Chipset, + gpu::{ + Architecture, + Chipset, // + }, }; =20 mod ga102; @@ -47,14 +50,17 @@ fn signature_reg_fuse_version( pub(super) fn falcon_hal( chipset: Chipset, ) -> Result>> { - use Chipset::*; - - let hal =3D match chipset { - GA102 | GA103 | GA104 | GA106 | GA107 | GH100 | AD102 | AD103 | AD= 104 | AD106 | AD107 - | GB100 | GB102 | GB202 | GB203 | GB205 | GB206 | GB207 =3D> { + let hal =3D match chipset.arch() { + Architecture::Ampere + | Architecture::Hopper + | Architecture::Ada + | Architecture::Blackwell =3D> { KBox::new(ga102::Ga102::::new(), GFP_KERNEL)? as KBox> } - _ =3D> return Err(ENOTSUPP), + Architecture::Turing =3D> { + // TODO: Add Turing falcon HAL support + return Err(ENOTSUPP); + } }; =20 Ok(hal) diff --git a/drivers/gpu/nova-core/fb/hal.rs b/drivers/gpu/nova-core/fb/hal= .rs index 71fa92d1b709..d795ef7ee65d 100644 --- a/drivers/gpu/nova-core/fb/hal.rs +++ b/drivers/gpu/nova-core/fb/hal.rs @@ -4,7 +4,10 @@ =20 use crate::{ driver::Bar0, - gpu::Chipset, // + gpu::{ + Architecture, + Chipset, // + }, }; =20 mod ga100; @@ -29,12 +32,10 @@ pub(crate) trait FbHal { =20 /// Returns the HAL corresponding to `chipset`. pub(super) fn fb_hal(chipset: Chipset) -> &'static dyn FbHal { - use Chipset::*; - - match chipset { - TU102 | TU104 | TU106 | TU117 | TU116 =3D> tu102::TU102_HAL, - GA100 =3D> ga100::GA100_HAL, - GA102 | GA103 | GA104 | GA106 | GA107 | GH100 | AD102 | AD103 | AD= 104 | AD106 | AD107 - | GB100 | GB102 | GB202 | GB203 | GB205 | GB206 | GB207 =3D> ga102= ::GA102_HAL, + match chipset.arch() { + Architecture::Turing =3D> tu102::TU102_HAL, + Architecture::Ampere if chipset =3D=3D Chipset::GA100 =3D> ga100::= GA100_HAL, + Architecture::Ampere =3D> ga102::GA102_HAL, + Architecture::Hopper | Architecture::Ada | Architecture::Blackwell= =3D> ga102::GA102_HAL, } } --=20 2.52.0