From nobody Fri Dec 19 14:23:24 2025 Received: from BYAPR05CU005.outbound.protection.outlook.com (mail-westusazon11010003.outbound.protection.outlook.com [52.101.85.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 4AEDC22370A; Thu, 6 Nov 2025 01:28:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.85.3 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762392484; cv=fail; b=sPeb2KIqCL1k06x+TpLiEITa/mrnx21ZSNI0Mr8yK6rXXxU34HKv5xGMFmze1TLK7lSwwkp9Yx62CO0WhyiOf/wDAwr0lLCVvHLa8zw1/WcJ6e8/cIy9BjncwVvQUO789/5fb22EZPkkcJk1LWu/7LsvIjA+ykUbI60mDX9wQYs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762392484; c=relaxed/simple; bh=neHpZvt9zHoHZ70o8oVf/8XB8mkJrREZMv95l2/+m1E=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=soFBHLGwf/uqxJLOxFDIfRgi+TwaMeev7DvTq8gmhk6f+ok27bRgdsBHLV0yoqerJNkDwHKwQft6vM2Oets+dGquZnaPgtmBnxmi9btjc/H9uePTsDwFsHwt57yQj2y8dL3kbykaVchDQEB2aZ1+28H2nIyOup9D0RdOIsgNHfo= 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=bQkHq0D1; arc=fail smtp.client-ip=52.101.85.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="bQkHq0D1" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QOuuBgXRCyAPj7IdTqIpg0JEo4KnUo3rqznBpb0cnT3ZwKUkuHy5VLoh5fKhkuOeHF+pps8kF3kuuY3tlyUjI6tmd60lHgPfRdVFiT/OMXYu6ri06bfWQKxNnlJCVNitnde4C4A6MtJH41Mm/xPvoV40GePgY3eEJ40J4vSVK1X4SZ0mMw/ZyLYBG1Qu6bNexYg169/4SmkNpf2CMrM2NUJOeKhPQb/gDrOxM0sCHEfiLKwrkhrdN3YDuP783L4peXPQv5wYlmRPfd/5NPvVYWNdbaTXpONgCsLHXY17nw8KCOsDPareYx2tSdfPK8LpfzbXdLaFUAZg6bql3YqL8g== 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=cO8r6Kp8TkkTILwoyPoZIPmqB9JWtYK6Sm0bzhQmPCM=; b=rbh2mACtd2gQMha28LZt3KWLwqP4Sw7BlMKUpldziNIWnfu9GNd0/U2rpHm3jUboxP+uhaM3ikgRX35iEvq+GGWFA6GuUgccFn8UbFLWk0JCmGSBiDrHiUlymVPCMu6EHLvCLzBSW+xzzoHFVsGFzQxedyuUZSjvI1Y93ENTgzCMxW0fXdasl8pqtLvLNR9k5WpXNhvLPQCG6byJKNKK16I8S0pU9wSB59RlzYRU+ZT0O6QRIX9bLkiHSP8Pvm36SU+ORJvgMJpJ3nYuGy/ZFlKGj8Nyq2wu8bMueewC8gX9bgWEXr5l+fSS2doHC0eZfcweos7pvYaKmQ/idb561g== 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=cO8r6Kp8TkkTILwoyPoZIPmqB9JWtYK6Sm0bzhQmPCM=; b=bQkHq0D1IAOt6zSn7TM7yo6F+zR+FkzjQ9KiRoNuy7bzijHnSn5SF+I3KrQp8CR1HbSgzQjt5x7OTCzRZm3RKHEdKijb8GSyJmw6FSnIfCGUsXYUqcqs+AYO9BcixYZwx+Fcao6YbO3jXiz580XMhscfXW/gUqG/IQSIqPp1NHYTdQPwj+KnQUUJ0Yz7MsxI28C8Fz/OfYZDihcp6qIWxka05LfjgaUNlmNlffCFeiFZQspoLIwqRU7uzZrg59trA73lYVC6YAC6BKQ8zgLvoexe5F95I2g/BKn5qAjEDjtyK1nDSpX20vNPeGg54qqmVVxbYHAfEUOIRZqf+vXAZQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from BY5PR12MB4116.namprd12.prod.outlook.com (2603:10b6:a03:210::13) by CY8PR12MB7658.namprd12.prod.outlook.com (2603:10b6:930:9e::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.8; Thu, 6 Nov 2025 01:27:59 +0000 Received: from BY5PR12MB4116.namprd12.prod.outlook.com ([fe80::81b6:1af8:921b:3fb4]) by BY5PR12MB4116.namprd12.prod.outlook.com ([fe80::81b6:1af8:921b:3fb4%4]) with mapi id 15.20.9298.006; Thu, 6 Nov 2025 01:27:58 +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 v5 1/3] gpu: nova-core: prepare Spec and Revision types for boot0/boot42 Date: Wed, 5 Nov 2025 17:27:52 -0800 Message-ID: <20251106012754.139713-2-jhubbard@nvidia.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251106012754.139713-1-jhubbard@nvidia.com> References: <20251106012754.139713-1-jhubbard@nvidia.com> X-NVConfidentiality: public Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BY5PR13CA0028.namprd13.prod.outlook.com (2603:10b6:a03:180::41) To BY5PR12MB4116.namprd12.prod.outlook.com (2603:10b6:a03:210::13) 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: BY5PR12MB4116:EE_|CY8PR12MB7658:EE_ X-MS-Office365-Filtering-Correlation-Id: da409bc3-3670-4662-4ac1-08de1cd3b820 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?K2DvnxvqbA3Fln1rYgAYHTSEsf3BWIT3Ziwb7grbPcBxXT80SiN3FhEMZloo?= =?us-ascii?Q?qnAUGe6iqO3wCn0OesNXLslBGVfzEOE1WsbbEBfdLjgHuyazufTJweHFv6L0?= =?us-ascii?Q?/9SijgpF/KcDlUSaQvUnzB71zRU9O37pelj5WBS16xakxHpkdi9UEvWtIAhC?= =?us-ascii?Q?eIyazp4YdilOYunguhJ7pc983w31yP2rBongTqM+QrEgKW8Ywjk/tECaoUmY?= =?us-ascii?Q?cR+E2FWvxc2Q/bIGi2UCmOOUW0IBLrLNtwzaK23NK2ZHzTuLXibHxLXIO+yP?= =?us-ascii?Q?IzrVqKtYkBIH665oyfZ4u2dvNddLOP7H9SeLHkMjxMQjD0fEBaj/aMNim2W+?= =?us-ascii?Q?DGrx7Izheh+/0Hyr1sPkJgqJem7nULsrqG9ufTPAzi+27GkcM3A2o3a2WHZ3?= =?us-ascii?Q?m/dcPI+b6PMCcfbBDNCRkrhUAnZIAj4gTOb/gt1Xkjh7By5JHsAyhMa3kVjP?= =?us-ascii?Q?pHnwbg/3564kh/er0BtsiY+gI7CaTN3piBaSigQo0PyleQq2mNkEzmFnaEHI?= =?us-ascii?Q?1D+lH0IvrXJwYsEpyYVTHt8mS1WKljIHkxRWjFV7dgPTTktAO8PpzhIqSWUl?= =?us-ascii?Q?KgtE0EnPW5392ukc7Npunn7ayZeoHD+PphYw9DEKIuCH+ho0RavMjYG2H+0r?= =?us-ascii?Q?IuQQ679HXfxYuAH2BpJX3NcCsw/p69pmMwSjq1PuUsqB5g6K8eoczFAjkFhQ?= =?us-ascii?Q?5WzwsoYkT6EqdT6h7zK7LHfOJbIy2iiaBTUAgJq18jgfE6JkLwhogUTdNP6H?= =?us-ascii?Q?BdFFPg/JynlqIZPVYOsDhvV4J6HLUfGsWr1Sv4NrChM/JnPkv/BMLPpUTJpI?= =?us-ascii?Q?lW04KKs5YCl2sqpz+ZY6HZgO7xXwkTyqw9eS7vbj76zOyseY556F6sfRgyVK?= =?us-ascii?Q?UN3k6GeUq8o4Y9w05mBr8QeKilQsRSLOIg4jBlEaw7mRIlRZ53vqglue1SSd?= =?us-ascii?Q?oZZxVVGOfTn2jQAhQH+Xj5S4Wxoi2l937tTXTkbNFGNYDozqUl5GnTQtfHYu?= =?us-ascii?Q?2THoyL1FWdwxqW8BKiXE5Y4TGF4g/nEZextWxm/bVrVQLkIFoQ4U6HgbojUK?= =?us-ascii?Q?7vyhWRihie6+T1I2knnnnFae2SrjZIGqGEdEOEGO/paFf4PXYujG2bj13pZN?= =?us-ascii?Q?Om8kC2L9TIMxrSv5iSh6NuDMyrNB4BHvW5rFOQxmzEYZQNXb6RxvzYRwGzfG?= =?us-ascii?Q?+punL3Pos0RyPbCKYYk15++BkMnoBPKwD8z1tVQcDM6dNo/HDJVWyWRQBwBv?= =?us-ascii?Q?2GQzMTE2Zk5DObz7EOOMsGKs99OuKLAKF2d9ul5WtdZYHEdz9K1LMZ0H/l3b?= =?us-ascii?Q?lzQ7mMTUaGPhyJx2hr6z0MwmZtRCRPd3sQwsZtFW6Q6t/2Azuz8BnuHsA0Qq?= =?us-ascii?Q?anDoe4jkhKWM6DqCaM2fq4jqxnVR6q3sTsEOVsQRectz/iG2RxeoLXllOPo2?= =?us-ascii?Q?eVSZppjBCETaBj9GVrER2x26Jlrn3T8M?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR12MB4116.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(7053199007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?pnW2NsCbSOhXPXAaJw7EYhd+pRiGGrXh83+vqsGN6+8TMT9QgwyQFCZIGrB6?= =?us-ascii?Q?tysOsNJQMy5g+oDSJbOFrCvPdt8D8/bXnCXNH15zEt1np0bwVGwrVJUlrYBa?= =?us-ascii?Q?4AGqGcgmpos8mz8Oe6txYgDASPzm2cDm3EMVBx3cpJg7+STjNYJytZpHCVEV?= =?us-ascii?Q?PDT7UAOLG/Cam2fQcfHpbJUJVeXC/jJR9Ks4HO71e2Yh5+LlOl4s0uRbwFCm?= =?us-ascii?Q?ZZ17mDFAgdO2VJlpGjyUd3QWAu58oVAAJyCVgZBCwzbY5hVL7DCh5JRjr7rI?= =?us-ascii?Q?6ZYN0+dfq4cwmvfRCDksIdX40qvvIywBaM12mr2AD+29/9YQX9H9zTVPXeH6?= =?us-ascii?Q?QZ4/2/4KEZ5TaL9ujfxBzfu6lRD6nN8AiH94KKXjImqOOpTNWUVMHjCN67qn?= =?us-ascii?Q?VtqpBhX+NOk/esaW14kpHyn5UPK9QJpYy2wqwl7ySPkytdshxsk4GDCA55EL?= =?us-ascii?Q?o2AJXqdhSSc2wahbFHKSNmNUgxWrJx/SwMh6tyz3dPQe3jlpjrCdEpWsYOka?= =?us-ascii?Q?JpgBH3Iyb5eBf3w8XhWcFYF7uBplPjLJHy9RSUe7Jt7xa5TAF+CTXlM377rK?= =?us-ascii?Q?QZWNqpqYKtWrJ2d4QWvPc0ZLf0trdjw2hzPbpV44lIvgxSVdNBF2K3X5UgD3?= =?us-ascii?Q?UtS8u/zQ/xfB3U7p5w2Ad2dCc02jhQePoXESPrwONfg/aVeuWINrlWe3NKB1?= =?us-ascii?Q?yEhfsv0vC+C0yvG8FE8G/KKQzKzUZPHK4PDMaTbAElQbdm+jhPYoRp+OuaDq?= =?us-ascii?Q?TNWkyVsX6mzHzc9n+Ay5hcAv3vP/c6FwQ7xagblHhUBTd+/mIUvw2dFi0rqX?= =?us-ascii?Q?YQehfShLp3+HLCa/7cdv0L0h4BCwsLVN8PItc3+Z0JFk3KyalkkTBySRXJqa?= =?us-ascii?Q?M/6JKO14WQTdzgUxzg+1BRtDR5329d+DoCBHf64A2RbXKMrDog0XbY1dCmbT?= =?us-ascii?Q?GmlJE69w2JUFIiJ4gg602NHGgiHTmLuQDxpelieSsktZJN8wO2ogrBUXqkCz?= =?us-ascii?Q?g2OYmM2zzrO+Fhs6ocnst/aXMCWf/rm8B86apuu9jvu8D9x28cQMhVey1Cv8?= =?us-ascii?Q?loqSHSq+o0Ps48yMXSealoF7aL+CdrWXPY6ePzoGyKWjR8oiE2ne/8K14KcT?= =?us-ascii?Q?s/Fm8egC69MxbapLFRQya4ByDgynueDY34DGWBBkgeybuh3wiQTspk2vcJRG?= =?us-ascii?Q?wrX/9qiI9RgEM5KSBTBTqhV1/VmDfAYyRJkfSA4KQ6nb4aflXH0cFnxFOUvX?= =?us-ascii?Q?ueM/n6g6jfN1yYM8UQW6rQo/T5Wyz05jvNxLHp/XW0a6WFZjUAQ0iETtKDlK?= =?us-ascii?Q?FAwczuEffxe9ZP9ngxu4gqpaw7sd34gNnmKiKTVx/nHBfxZQd3m1msoKYVe2?= =?us-ascii?Q?z80rgeSCZTs+KI2+ubsqd95GFsW8DVc3v376wXA7c48gTRb6+vPjVWL34Ldl?= =?us-ascii?Q?NCT6/kDmgpCma1ZlCH1Fwz5Sys16uzWe2DkdrzzpvBrxtaDJBa/IR8iimmPn?= =?us-ascii?Q?0M/v6ObBEcTJmqnXnbuzwzhuljKuChToCcnH57majz18FnG+mhT/1nSkaTTx?= =?us-ascii?Q?10/T6/0NVoesG0z9q0qM8bL7qElT3WZ0gANcYoeD?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: da409bc3-3670-4662-4ac1-08de1cd3b820 X-MS-Exchange-CrossTenant-AuthSource: BY5PR12MB4116.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2025 01:27:58.7484 (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: PeiXYplrp89l6HB5DfqJRLHVCJg2PKz9euXpcsM0kccWcxuJ9/xbGdtEN+RN5MTuFKwXR3UCGsi86dohdnPpXg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7658 Content-Type: text/plain; charset="utf-8" 1) Implement Display for Spec. This simplifies the dev_info!() code for printing banners such as: NVIDIA (Chipset: GA104, Architecture: Ampere, Revision: a.1) 2) Decouple Revision from boot0. 3) Enhance Revision, which in turn simplifies Spec::new(). 4) Also, slightly enhance the comment about Spec, to be more precise. Cc: Alexandre Courbot Cc: Danilo Krummrich Cc: Timur Tabi Signed-off-by: John Hubbard --- drivers/gpu/nova-core/gpu.rs | 45 +++++++++++++++++++---------------- drivers/gpu/nova-core/regs.rs | 8 +++++++ 2 files changed, 33 insertions(+), 20 deletions(-) diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs index 9d182bffe8b4..8173cdcd8378 100644 --- a/drivers/gpu/nova-core/gpu.rs +++ b/drivers/gpu/nova-core/gpu.rs @@ -130,16 +130,18 @@ fn try_from(value: u8) -> Result { } =20 pub(crate) struct Revision { - major: u8, - minor: u8, + pub(crate) major: u8, + pub(crate) minor: u8, } =20 -impl Revision { - fn from_boot0(boot0: regs::NV_PMC_BOOT_0) -> Self { - Self { - major: boot0.major_revision(), - minor: boot0.minor_revision(), - } +impl TryFrom for Spec { + type Error =3D Error; + + fn try_from(boot0: regs::NV_PMC_BOOT_0) -> Result { + Ok(Self { + chipset: boot0.chipset()?, + revision: boot0.revision(), + }) } } =20 @@ -149,7 +151,7 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Resul= t { } } =20 -/// Structure holding the metadata of the GPU. +/// Structure holding a basic description of the GPU: Architecture, Chipse= t and Revision. pub(crate) struct Spec { chipset: Chipset, /// The revision of the chipset. @@ -160,10 +162,19 @@ impl Spec { fn new(bar: &Bar0) -> Result { let boot0 =3D regs::NV_PMC_BOOT_0::read(bar); =20 - Ok(Self { - chipset: boot0.chipset()?, - revision: Revision::from_boot0(boot0), - }) + Spec::try_from(boot0) + } +} + +impl fmt::Display for Spec { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!( + f, + "Chipset: {}, Architecture: {:?}, Revision: {}", + self.chipset, + self.chipset.arch(), + self.revision + ) } } =20 @@ -193,13 +204,7 @@ pub(crate) fn new<'a>( ) -> impl PinInit + 'a { try_pin_init!(Self { spec: Spec::new(bar).inspect(|spec| { - dev_info!( - pdev.as_ref(), - "NVIDIA (Chipset: {}, Architecture: {:?}, Revision: {}= )\n", - spec.chipset, - spec.chipset.arch(), - spec.revision - ); + dev_info!(pdev.as_ref(),"NVIDIA ({})\n", spec); })?, =20 // We must wait for GFW_BOOT completion before doing any signi= ficant setup on the GPU. diff --git a/drivers/gpu/nova-core/regs.rs b/drivers/gpu/nova-core/regs.rs index 206dab2e1335..207b865335af 100644 --- a/drivers/gpu/nova-core/regs.rs +++ b/drivers/gpu/nova-core/regs.rs @@ -41,6 +41,14 @@ pub(crate) fn chipset(self) -> Result { }) .and_then(Chipset::try_from) } + + /// Returns the revision information of the chip. + pub(crate) fn revision(self) -> crate::gpu::Revision { + crate::gpu::Revision { + major: self.major_revision(), + minor: self.minor_revision(), + } + } } =20 // PBUS --=20 2.51.2 From nobody Fri Dec 19 14:23:24 2025 Received: from BYAPR05CU005.outbound.protection.outlook.com (mail-westusazon11010003.outbound.protection.outlook.com [52.101.85.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 0806F224AF0; Thu, 6 Nov 2025 01:28:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.85.3 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762392486; cv=fail; b=PKYI/vvqB/clXkXQhng+uCDOYj5wOHvgNtkSGbrT69AKJ3KP27CEpKMB7zmoXv9mwhwGNl6BsjiHP/hHnhE7MA3g6P9BCXuPFgkiPX1HXItpibkuzqC/HKy2r7i84danJUrb3h68plZLSNdRBEnHYaCjX7W6ukKkClKoSfgxwow= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762392486; c=relaxed/simple; bh=dluyCCejSkWHutBzi3NkSNQbdPMlg4wGqGZ+lcJgmmk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=PsN/pr6kwo5MGDbqi6YJvcVot6zziVf7NxkE0H/CTBmhLsyjXeP8PICihEgCinCW7QzlQlUwuXfvwssmdkGzd4NQWBXp8ZZpAiAWE9otO2etze7RA/Ie6MsSyI7z+UhbIDckc5eya4OmmleImsHif2IBcq2X6tPLACsH4KgCHW0= 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=PVC5+CYS; arc=fail smtp.client-ip=52.101.85.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="PVC5+CYS" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fq0LwC1UxPqW1DwassXlCM3YPcSQX+OrtdtvpedtQQQZaKlkQh7ScPCjv0oli2/VCVeFwM4/R/ydqXcpicFnUwNv6AyJMLiRPupv1HI65lgOsmCUc+9FBDtMXg93pFRWSJLnrPg5p+n5U+LG/lqzmtCPJMNv81jgnh7xqnEIP3fwWhmr12lYxKY3OGEqw+FtHh6uPEDqDJzEU9C3RMBADQ633EHDTIa5aGLSTXyvwI5OaEEh/88w0jgkZWp23/LJQqlKYZmqxbQaFzOfqvoKIRM00OPPylEeQlLhCVGL3e03Q7wiZfahhs9IJW394Li+gqztJeU4vPVNoZ8rUoWkTw== 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=ZIU/mOWkH8J8plevM6riSt4Z98UubFrLUzr4bXTeEDc=; b=ZZ5xE4k9gospMNkIN8YFaFcyS4pKIyT3UY0pkRzb/xAHcK08bUyzFVyrny0OH3qMNJFMnWTXXM87MGaRP/QkznRQb64JKpFmYKU/SYzKgZz+ZfSNbZYwmDqVSVOXxyzs0xz/wBO8JpODBSNFH5YJ+lGxRVs49QURAvzh5a3au/JE7A6AUdb8RJb9owCRF+cVATU31BsrauKQS17ilSAiNyQJlUrvL7y1F1UYlZEagYb5wI222W76Cd4qUIQHsFcfdTRGAE3Bu/EcN8YHsaDkuWQP79GXCqrqpK5IjBwzjxl0OZ8sY+pZzdZniIZfUPs4NGKTPRqr8Fvn3EEDlZox9Q== 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=ZIU/mOWkH8J8plevM6riSt4Z98UubFrLUzr4bXTeEDc=; b=PVC5+CYSH1/63am0/h18XrYPb/nq4ckZamq2FZvKF0CI9wS3Qe/9jH2ff2Yn3+oQUyUn012021OLPo58WVcGhbMli0yge719QVq3LVcOqIDi5O+SMT0drTNnVt7BSOnaGU6imAZhyXG1nZUB+U47ZlWrjvptPneoOqMSYV8iqkF/V4KkGCrJt6Y8iG6fx/66JHVdMaGM99rB+/rUGcBc3W1bKgzxUcEzrKyjAPJ0T40FCCvfhr/Ennz0vByCySSUxH/q935EtAr9yr3wTTDB2ZWOF7lZ9WWAZCDy0NVs6oqxNRv2UJ5WuqU9kSb8bh41G8I4LVNkSKXYh9bpx5Hptw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from BY5PR12MB4116.namprd12.prod.outlook.com (2603:10b6:a03:210::13) by CY8PR12MB7658.namprd12.prod.outlook.com (2603:10b6:930:9e::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.8; Thu, 6 Nov 2025 01:28:00 +0000 Received: from BY5PR12MB4116.namprd12.prod.outlook.com ([fe80::81b6:1af8:921b:3fb4]) by BY5PR12MB4116.namprd12.prod.outlook.com ([fe80::81b6:1af8:921b:3fb4%4]) with mapi id 15.20.9298.006; Thu, 6 Nov 2025 01:28:00 +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 v5 2/3] gpu: nova-core: make Architecture behave as a u8 type Date: Wed, 5 Nov 2025 17:27:53 -0800 Message-ID: <20251106012754.139713-3-jhubbard@nvidia.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251106012754.139713-1-jhubbard@nvidia.com> References: <20251106012754.139713-1-jhubbard@nvidia.com> X-NVConfidentiality: public Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ2PR07CA0016.namprd07.prod.outlook.com (2603:10b6:a03:505::16) To BY5PR12MB4116.namprd12.prod.outlook.com (2603:10b6:a03:210::13) 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: BY5PR12MB4116:EE_|CY8PR12MB7658:EE_ X-MS-Office365-Filtering-Correlation-Id: d333a665-446c-4b15-c738-08de1cd3b8e9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?d2Bbr5cRCClLsq4sfS0RdIw3fDnA4y+7F+HuAYPtRdVcnfREZLjbapQ3XEQx?= =?us-ascii?Q?O3Xh8p+IiqZ9bm2tUOa0TmKqhFSavB7MS4zMVVP/9H1sW0pRT+dnSWg4c7JA?= =?us-ascii?Q?1BS5c1VLIMZ3jfSBUOC+1UG/BzkbVKSP9VOve7mPkChwdUqrxwrzl23g/wgr?= =?us-ascii?Q?gcc78CMVFvPcAk75Aw4bY44R7TYqqlYja47EZ/a0M75n7l2s8fdrx+p3WjzO?= =?us-ascii?Q?lgxjHa+UHpIFJYB7mjOT9HSYFnHA4hwGRHocW3XoexYrHDN9N/SvXVm30Yei?= =?us-ascii?Q?2iUOeNfxb+qt8aORUKDMvI+yzbOjJUVRu8jjrAIavUmEjfpuD/rRYuWSPz96?= =?us-ascii?Q?BEVkTSQnSuWo25RjB+sxbq+sGQI50M52hm8OXHIpa1hTMOwRAT1LxggFGJ7j?= =?us-ascii?Q?YavVEOvpShCMuMN+awILAMP/g1CjRTW2tb6NDbBqAGo8wdoDpunvrl9HEwM2?= =?us-ascii?Q?BnCS7XvMjNV+0Fr4Z0RYfJRVTtVzkky7RISWYrztFSEB3z/S1lZa11/ultYV?= =?us-ascii?Q?G7LPrz3XHwuyHKW/uURwAnyXyI+BGKw6gaVc9bRMUVQkuozoozaVd/L0FvKh?= =?us-ascii?Q?UtBU4aNRporqQ2llBcouzH/4G8WA0AlvxZfPEilpWnMjPUtMuq7fONb8+ii+?= =?us-ascii?Q?ON9lIKjhzYaM/yuI60Rh+PPBmb5UjqnqWPbH6kYwPhWTNAdpIUEXntDZBNZI?= =?us-ascii?Q?zwIcgusARper+60gwXkvg3qQDa5+i0pzsZAyHESR2Xv6hOtoT5/NCpUw19+D?= =?us-ascii?Q?HOHgbTJEW3RstsPzDeUD4/mioxJ7Q54JSZ5KJuPQjl5ousMRutQ195zF4cPS?= =?us-ascii?Q?fdIIQUX87nS8QRitCS8BpmpRBszpFr/ujkO7nbJn6vYZXBafNReIdBJ/qvb7?= =?us-ascii?Q?6wTRUBDi5ZSjWBetkt1+Oifhbw6WEi7P3mpnzH6Nk0HCS6WitVrd29pm6W6c?= =?us-ascii?Q?iva397zVOeFaBIsD13L938os5sOdy576nVGzQUt+ZIP9RVwmRnFegbflmSu6?= =?us-ascii?Q?PTZNi0j6n5W78gNkMHN/aCLG10zEISFEaO+4USyinkMDtBgVPiv0WgqLbRb0?= =?us-ascii?Q?2fk5i001tlveccxoILbBaRDZmSQJL9Xr8u+aQTIyx8v6nhM5YOwr61qq3Z27?= =?us-ascii?Q?Eft4hGuZvkO2Mk0k0UQIpiV5s0TJP9i/Dw7T2XuF/+BgFMZ0qEX/j/0Eq5Sf?= =?us-ascii?Q?59t/2M2+jOeq+x8csiiTvLqzSQzY55oVs/Xr9e/3KrT0EFGjjqvmUf4WdXgB?= =?us-ascii?Q?OM/NZVBySfw9XTKBoW3gU3WXHCwr1JWuuddwX2h/C69tuNyt+2sZ1375g8rS?= =?us-ascii?Q?G3JHBOX3hISuuH9gIrT8fy0tg35ru1s8MhdaArjjDv8d9V6Bx0XI/B67WKb7?= =?us-ascii?Q?3BnffdLso88IsLNy8zwvqSjfcBHul2N0bGOwsFCMYPaV2KHbooQX8laPNNGX?= =?us-ascii?Q?qDtb26KHSmUGUigfcwcKlgnLwOa/6sOJ?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR12MB4116.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(7053199007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?akhYmxGRXQp1+znHO/LetfR/ZN4k34rWDu8VZ0WxNn/yw6gPbx8R+oN7nt5x?= =?us-ascii?Q?ADNFbBv/7vpfwlLw2tcEw9JJbLaJfDbV7+MiBUsfcfR8IUyJ2vzISbwdbwEq?= =?us-ascii?Q?qz617HfzTSkWVr/vgImIotYHC7CGz1aC4WhJUuoFYrVeMVZ+yh+i3WToBYjY?= =?us-ascii?Q?gxAsBnVM5+j6a4I4NVXxX9QInHNXT5SNeXPbpoYK++VSwFxyjGZ6tAJ1n6n7?= =?us-ascii?Q?u7Rse6GS9N6qVHHketYwM2KDpX8M9ToV5vtCii5ekJTI0P9f0mXZVAV1JajK?= =?us-ascii?Q?/m8N1PlgBVfO8gvyLmHapffXEBkRYg1b87cBuDqs9/djf22UeSJjPR6lSYf+?= =?us-ascii?Q?YYEpdjLvwIA1Ei2fGQXN2hCS/xxkkZN6mD+5vtoA39rhZQMmDCGk82+DYzFo?= =?us-ascii?Q?0O8w+cnJSdfNwwpYWqMz8aRvPBXSfNEDO4xVvRe755Is4YO2PD7lV+V2gqjs?= =?us-ascii?Q?ZHXvZE0D3nzR17m2lD9GWoTqGCWanIgPchFf60r+qMqIsGygbVqG7d9MnUxn?= =?us-ascii?Q?J4krVoLHpYgSVH5MyChu6GkhgXazYY/KjVTgfh5/sRMPIJLxx/SdW7DA78VS?= =?us-ascii?Q?Yp48ei67LbtI+rYwMdXYxrw5xJ+H8cD0CaItDBiHx+zdTlGFxv7y1gya9G4C?= =?us-ascii?Q?+dnkwBn1F1Ye4NiNPQ/PRthiwO4rcRlWzlzXP7HgvR6wzNGboE7wktNtOn0a?= =?us-ascii?Q?Js8hINN245BXcAvbUCgAEpdgB4ixq6Y3niuXbL4Io0CyHOOK2QuJ/zQtR8cl?= =?us-ascii?Q?hXTu6n/zz+4lrZzzLLbNGzkCvg2TPvwXFXYqijBhL3gE24PHFZJMBlorumZa?= =?us-ascii?Q?Z4Xzf/6YWhnhk1H/9H+pUWwEIlzhkzOsZdqt0eDovqPZQ65FS4m/JQL/NFsg?= =?us-ascii?Q?mcw+BE46Rh5JcPaQjxVtSzbJmQjc3CGpsth+cH81XeVr2lX1R2JrNCqPCJPd?= =?us-ascii?Q?C6DjAGlbiJ66uUgNwRECXlVJRSwrocYGMeXgGOng6pax/WgPYj5WqIM445PN?= =?us-ascii?Q?KsMsADQ2yqvkJ9GR6+NjP2KtP6xmw6RTaaeqqi+Gig9N0vR/Sa08HZLOiRtB?= =?us-ascii?Q?g+kkzK2btp54+Gjr42/+85fkD9MrbBWI4qx0T7VQOLbN/aQwohHA1KHeRU1q?= =?us-ascii?Q?nL08kdtPOVyhYr9TZMYNBXM2z3sceOYAJUyoOwnOhi6Hojaj+ogixqfFXmIq?= =?us-ascii?Q?3dnXeY549hUCpY2tjpJsvsrUtTPwbRYh/w1vEfV1OfEMneZy5pUlUXs5YByr?= =?us-ascii?Q?HBJa5iZCixYNZQxLRhBbVkov7uzufuLJIXvGAVgZXivZy49QLA5s8l0hJh0D?= =?us-ascii?Q?96a2pqgCrRTfoqQztnpGYiXheeW1OrHngB7I0LJTq8E1hORWz4L0aW+HZn9l?= =?us-ascii?Q?adzkmyPvTa3SN00Y7JqMMAkm8G1MwNjLsEEY1abTWyJ580xMns7mFVWiZbz+?= =?us-ascii?Q?k4/duK5ZcPc1BK+wrLie2XGZPI2dtB1BMKElQzx8IojyzVgnsQbtbjm7d0gp?= =?us-ascii?Q?LPldq9xiDnJvRNMty3naYejsYVVvOuQOE5mZM1Gh1PTSWuDRatdLJOwELeKZ?= =?us-ascii?Q?5AR5R7KOGlqyfUIGIT7i84N6xCT0+3hTr/5BAkn+?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: d333a665-446c-4b15-c738-08de1cd3b8e9 X-MS-Exchange-CrossTenant-AuthSource: BY5PR12MB4116.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2025 01:28:00.0810 (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: 80VwvnyWA2mgD9k9PhDLw2Xl6MQc8ITtDWXnS9FUsL/1Icr25I/9AFyUOOemB945jWWmK9LPf/B+xs8Z4mm3lA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7658 Content-Type: text/plain; charset="utf-8" This allows Architecture to be passed into register!() and bitfield!() macro calls. That in turn requires a default implementation for Architecture. This simplifies transforming BOOT0 (and later, BOOT42) register values into GPU architectures. Cc: Danilo Krummrich Cc: Timur Tabi Suggested-by: Alexandre Courbot Signed-off-by: John Hubbard --- drivers/gpu/nova-core/gpu.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs index 8173cdcd8378..27b8926977da 100644 --- a/drivers/gpu/nova-core/gpu.rs +++ b/drivers/gpu/nova-core/gpu.rs @@ -109,8 +109,10 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Resu= lt { } =20 /// Enum representation of the GPU generation. -#[derive(fmt::Debug)] +#[derive(fmt::Debug, Default)] +#[repr(u8)] pub(crate) enum Architecture { + #[default] Turing =3D 0x16, Ampere =3D 0x17, Ada =3D 0x19, @@ -129,6 +131,13 @@ fn try_from(value: u8) -> Result { } } =20 +impl From for u8 { + fn from(value: Architecture) -> Self { + // CAST: `Architecture` is `repr(u8)`, so this cast is always loss= less. + value as u8 + } +} + pub(crate) struct Revision { pub(crate) major: u8, pub(crate) minor: u8, --=20 2.51.2 From nobody Fri Dec 19 14:23:24 2025 Received: from BYAPR05CU005.outbound.protection.outlook.com (mail-westusazon11010003.outbound.protection.outlook.com [52.101.85.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 AF5E42264A8; Thu, 6 Nov 2025 01:28:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.85.3 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762392488; cv=fail; b=sg8kP9NveHNr7c0/HXTki/I0B/2fnM1a1kFcv23HxPWXVGWvKIjq6OhhQ3JBHKHUYukoZHviHNLZq0nUa5sGutgD5dmA1uCIOjxqjQdaE1Y6exuHtzygCxk0rLY9bDUkt0pnyQU8tNcukcQ3c6b2BI7Qpx0tOOitHx8sxRHygVU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762392488; c=relaxed/simple; bh=NWosO7q6cs90fRAX3lWZSqxxnc+Z2Vag3lU3JgXGtAc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=UFHjS/FLfNSpe2ugY0GJGzODvu2wjpozoTtGodqo8joCCP5bKRF1nM1U4aVvRSouQlmAg620C3RtZuKzOr7qqpjh49bgC0jRSAjPvFroaGAMkli0oJ4kxcZfTIOpBJaIcqFQLELgIPgt01iv+hWNtYdKHth89uaVTbCnG1exKCg= 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=aMaFBXG3; arc=fail smtp.client-ip=52.101.85.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="aMaFBXG3" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LA4/VLHpP2gEJXfMlVwEELWxbwGweagbzpnAihamY+RFruTNMgYFIS/LcQ6RRa1eg3sWE3s4kOhV6Dh4l3AkbxiowPoXHPesY+bBXrdCYLKMLIhToE54KlhJ+3YA8HsAmo0GTMgpmM9QVXZHQ4gWZuUbsQKmGXlqdK2Dgsa0QLadi2w0/TWcMMgs9ZwziJGpvfRf2xVxkynWd++7qm1B5SJUG4KAoDaZ4EWN2sPjIm430DjMagHG/xGEnIaEF/tuQNl2lyGymcbfBvhhD7zrftJmizbuJJDSJQepaqxH9qMwmhS9Js+79hz+BR32bSMwYfChGf29nr8OvtRcziUQpw== 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=nSi85Z994vmM5rpfQJAhfAXaMtEfMGUbv2ap+QFS+QA=; b=MMoUlUjhGrAnWpW5J+W0+iT7QKr38oHXJUODhzMvfomcRJ7qZuDvjsVpu8+H2DSrJxDsgLZ3/CtrFUGVdw3pM+8IfZCQr9RCcZYtxJbUAYncIVwacwXrDnFKVbrbXWn5zf7CicTWPFmh1SdG7WXPFaLaTWH0+gRZj8MWOIL1ecpuyKTdnABA80CMDLwBXHbjZbozvNVfypgL6XYid64Y7H4NSUMY+2sDdWpLY5evIRWDL/qECRy8olLdHrRDDy7cHfxUTlnRLfibJOu8Rp0edvyueBElguIIlfT/EmRvnCXsznrlbEXudLWqZ/rmQ805xomJSsUAFurnv4Jy6wLFmQ== 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=nSi85Z994vmM5rpfQJAhfAXaMtEfMGUbv2ap+QFS+QA=; b=aMaFBXG3e7xxg/uJq9IxcBIpYag2b2Z1lqV3GQ4Mfy/xIwg1a85T3RZp7Uu28sMcrVKUbqOjd0JJIJApNQw2NerdEUffAZgHi62WDu2s33tW2U3d+rNdLpl9TG/jhuxgHh5G5zR76SevaXb3stdL/jwIA/LWn+Df01Xu+Rf2aIjjME8/ds2Z2f/bZJf5eJJ89ehAqy/Hk88VYovKykGhJINsCgOSq2qN/GXahQYe7YBxwHpxMHqkpKNPCURS3NBdJ7QdzhGPlxCs4oLcHRzATi90IIJr/0JrcZkz193Guse5ZDpSyJCRtW47o8JzTENJZghEoMDLVGzc1IP5/OW1Gw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from BY5PR12MB4116.namprd12.prod.outlook.com (2603:10b6:a03:210::13) by CY8PR12MB7658.namprd12.prod.outlook.com (2603:10b6:930:9e::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.8; Thu, 6 Nov 2025 01:28:01 +0000 Received: from BY5PR12MB4116.namprd12.prod.outlook.com ([fe80::81b6:1af8:921b:3fb4]) by BY5PR12MB4116.namprd12.prod.outlook.com ([fe80::81b6:1af8:921b:3fb4%4]) with mapi id 15.20.9298.006; Thu, 6 Nov 2025 01:28:01 +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 v5 3/3] gpu: nova-core: add boot42 support for next-gen GPUs Date: Wed, 5 Nov 2025 17:27:54 -0800 Message-ID: <20251106012754.139713-4-jhubbard@nvidia.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251106012754.139713-1-jhubbard@nvidia.com> References: <20251106012754.139713-1-jhubbard@nvidia.com> X-NVConfidentiality: public Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ0PR13CA0037.namprd13.prod.outlook.com (2603:10b6:a03:2c2::12) To BY5PR12MB4116.namprd12.prod.outlook.com (2603:10b6:a03:210::13) 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: BY5PR12MB4116:EE_|CY8PR12MB7658:EE_ X-MS-Office365-Filtering-Correlation-Id: 4df5f08e-7765-4838-dc65-08de1cd3b99d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?7Eflm48VJWXpdtY4bDDJ19ETzXXH0PyiFinUDTEtEUGJK1v0azmgWz+2mjXH?= =?us-ascii?Q?3HTAe5XhQM4jc1cQHMfMNhHZeTAabyn+TfMwIMY6hJr3IoTlfcoeXcGLqLW3?= =?us-ascii?Q?icZeit7VrusXU5ycnEhw8/kbvK50vjJ8xHSmHgmhCzTi9uHJF0+Bf9fxmFks?= =?us-ascii?Q?iRBqtw1BZQC6fjh68hkp2B/YqZMRBja6pkKH9fdIjeq9Atdd+8V4uUNm0oqg?= =?us-ascii?Q?9QV2aWYcjUE49ab5OKVcUUoQLyN04RSgsNW0asoOrOJlbrM8KlB0uDZwJo7a?= =?us-ascii?Q?NC8WxJ+Z2bO+A8ujWYwz18UwXuGO5D/TUAfeFsFHF8dpYeqICYp+bz14BX5p?= =?us-ascii?Q?zdcrVIm6X10t95YamqxYlZSUz5X+7bLUOyc43DXxiaej2Owc9iQ3a3oiNVR6?= =?us-ascii?Q?qD8r2DaYYVEM2nPHJrtBVriKH1gf7qG3guBJ/SWM6kIKqHnTxm2YqYDkLBSN?= =?us-ascii?Q?9ujySSIjvYq6NNPKd/LV4J0QGJAgDLoLN8S+RBIT6uZDfl/xgq3ttEsS7Aal?= =?us-ascii?Q?uVimGweWrHMjyrVO+666Slot9+k8d+4W7uGhtPJwb6TughPBksed/DmdwNoP?= =?us-ascii?Q?EwoyMKQOe/QWspcQ2RE+3i9TKnADNKhrNbjopwDNWxu7mMeCWAErRiu1/hXu?= =?us-ascii?Q?DdCrrR3yZ/U2HcyQ9nLmsrQ0dAXxsxGlFCxzhAtv1luEN9HLJbISVynD9WIH?= =?us-ascii?Q?yJGsNQ9GMeOUb6d+az4zcJb9tKL9XJQEiiO7J6ez4CC4WoPm/soKBeNfO2cc?= =?us-ascii?Q?3YGsIDM7Col5TMPgVsR2JEHDiUkG8FrT8XYXhFqFnPjZ2REiE8w5fFi3g+Y+?= =?us-ascii?Q?0LK6UB5znwzwld5zp5coC3mNX8spoFjLV0QxogFB8kOWSzTGQxwhYawIXGzC?= =?us-ascii?Q?TsblI7jaTrWiI0tBhqUD1HZ78vY9JaOYdt13+s34+e86Ft3XIP5NMlQ2s5UP?= =?us-ascii?Q?0hmU2kO4TtcBMorKs2X1cbg35XLEgnYA00zBLA8L4jTkyAkTV0t3AHZew2rK?= =?us-ascii?Q?rBd02PcJCl/7LxRnU1CjpBYxr/mK5oogS5xrIyYxdR0Wpoqipd2b550kS3+6?= =?us-ascii?Q?uGTxqIO47/nsnCyITST1vp5osbKYdl2JuSxFBZuxqugzxL2TAUxRJH5O4Y3o?= =?us-ascii?Q?C66r18SnFYKgLBPQMJcACHvSCudAmcRgCpIpdVTs4qNqPfmt9K18ldgel2FY?= =?us-ascii?Q?nDxFWsbT98FLn9/Dp7bfo01qgU5ghuUDTGQ4EeVmf1Rq1xkAcdDleRfamkqY?= =?us-ascii?Q?eHyN5PmS4SggCbEZXAuUgGGg//GnxPWCSTLRcXjMR4PoFw6SFtuiTBLN6wNr?= =?us-ascii?Q?CFlotSKd6Yn1t9XbLs7x2x7ZCxcsitN1MqUniLblS37f1DMR83NuM/ZtcpUX?= =?us-ascii?Q?9MLJUaYz+SWwkgaYprMKp91MteC5kvmViuw9qXrjCXh8it+EpnUXMiqcx/7Q?= =?us-ascii?Q?7360UAG4/E4bmyfkfEIA8lArZ7JN4cm7?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR12MB4116.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(7053199007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?bRmNbY5UQEHbdSFjYrjpEJ5nngtrfOOKGHB6l3JA7R2DQhhTc9d7NVvh28+M?= =?us-ascii?Q?SLF1nSD8vhLHNhibvjPQKlDuavn5Ux/kRh40p5YMZJkynDfxSGvAc56C2m5Q?= =?us-ascii?Q?Sxo1ITck6L3OENFaZUolp1w8tn4c0Y4I5d5teZiox9a2GstYG28ea2O6E+eh?= =?us-ascii?Q?4dFGr7M4hcVwdLGBHOWdYaRQJ1dMH4nwZYc0gEA41TFrHSIROKZ+RWQlcPmK?= =?us-ascii?Q?8qEUHMUHhZ8ngiRVMeA7EHWwkAn2/WSDUVv0qF06xK0td0iaek6Io79GLX8r?= =?us-ascii?Q?f4j9RrfSunpUh1n3wz2ORti42ngvIu6t+vT0ao5/4gcBlAIb9FscLGSxhwTt?= =?us-ascii?Q?qaIjQ0jZZrMMM8gGrO1LcHyfbFCVIwtxYBUV0jqU2KKMcCA+n1yK/yFD3pF7?= =?us-ascii?Q?ol8SzI6AJSs1IAq81aIcNgX3qloYADfy6LZz/rPQZlK8QD1CLYBo3H0Umpis?= =?us-ascii?Q?epbiyvf0/VcwXW9Hm52eadDY69OSrwffyNpiXXHQoUqIzQNnLDD54n1ufkQM?= =?us-ascii?Q?eBjkC3E7lTqs1QgpDgzjG6eyndq2h2/q6wjmHT73Zr6wGR7qj0P9zBKiV/hM?= =?us-ascii?Q?YPDQlXQqT0nKgTw9ZboiYDdHa9DWXZd4y6wV62Iollmk9m8N8osSgDHHn73h?= =?us-ascii?Q?yhtXTZBCl8UpGzIaLE8MchdTQKjT2GIOgKUzkbByt4KQpwyHxJ8oxGK+8zKc?= =?us-ascii?Q?EfCG8a3IDSGtfvcAGQeibkFU8gf6+uWzmc3Mq3x9AEErcGN60PfcYuM3XvQf?= =?us-ascii?Q?R2i3qx+nGSwCFFjq9VAUG7HFIRMbnV6OBB/ue6hyluiw+bgRK4FYJ8xqcMhj?= =?us-ascii?Q?T/uanGTFCkR7J4shxI9DyiPwQG0rwR128aNHh/AENVpOt4FBv58C10T8H9tZ?= =?us-ascii?Q?hjNttz4VsHk+V+ssueZ6O+zgxXTgqMNUh4KVlpEY+27zH1D75issAtgEhpgH?= =?us-ascii?Q?oYHzzXB9rFvg+BQx7rVkTz8QkXhBkBbWSzGKTEJGbKZhPD6Mp0kvn5axQkXi?= =?us-ascii?Q?cu9tthrWfyY3pPew2/rRS/jwYoE0IoRwOzhNZJSITcEMcYMa4YZBkL1Y7BUb?= =?us-ascii?Q?aPS9FfhIfgO5PJ+sWc+wObAyrlNh2mUZI+3bpl1xtrgzIK6T7edhtFG2/2BF?= =?us-ascii?Q?YmQuNZSU66HGwDyT/6vm6Ai14nAUDScYxQPhrG8EnCdSogQWKiPMXQYlakcs?= =?us-ascii?Q?HH3GGf+Wp1YXS9O2fA2LmzW7hx3S2tk5NdBEetMKh8eZ628FxfOPhbLSG9EF?= =?us-ascii?Q?v/puLJJezwP3PVN/aTe/BxQ8haWC7sb5gjyu7fguNvhcO5mtqrHYAAVrSnct?= =?us-ascii?Q?5wED/SZGQTmoOWyMcn7G6Pqfvy3CH3YzbZ79b4z25kE8fcexEhp2jtofrSX6?= =?us-ascii?Q?tNxvSEGIHlPb7Xyz/EktsRQdiKV15nKJpB7uxHaEAEa0XhlNOaZ18Ow4X5qy?= =?us-ascii?Q?OwRdOGEUBKQpBvXsFoqQP5fYKthfRhvJUWXqvwk7VYNjtKuCgKZJclyr3jfu?= =?us-ascii?Q?KD7r5z7uCgUciMAuiXCjcUKuzoK8rP/xGDqvmFvpCK5F5U+0Qw2gjdNtUuQ4?= =?us-ascii?Q?KkdNO1i4NHyIeVw9zKGUcJsdPnsSQ5Xvc2zR5U4y?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4df5f08e-7765-4838-dc65-08de1cd3b99d X-MS-Exchange-CrossTenant-AuthSource: BY5PR12MB4116.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2025 01:28:01.3386 (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: DyR5/xtULhd6g17LXGOzRVju4vY6RdlpNfWltAcAeJTmnAaDtrt/qpdO/7OmGG6JcOCN89vH0BPfntrA8L7aJg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7658 Content-Type: text/plain; charset="utf-8" NVIDIA GPUs are moving away from using NV_PMC_BOOT_0 to contain architecture and revision details, and will instead use NV_PMC_BOOT_42 in the future. NV_PMC_BOOT_0 will contain a specific set of values that will mean "go read NV_PMC_BOOT_42 instead". Change the selection logic in Nova so that it will claim Turing and later GPUs. This will work for the foreseeable future, without any further code changes here, because all NVIDIA GPUs are considered, from the oldest supported on Linux (NV04), through the future GPUs. Add some comment documentation to explain, chronologically, how boot0 and boot42 change with the GPU eras, and how that affects the selection logic. Cc: Alexandre Courbot Cc: Danilo Krummrich Cc: Timur Tabi Signed-off-by: John Hubbard --- drivers/gpu/nova-core/gpu.rs | 38 ++++++++++++++++++++++++++++++++++- drivers/gpu/nova-core/regs.rs | 33 ++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs index 27b8926977da..8d2bad0e27d1 100644 --- a/drivers/gpu/nova-core/gpu.rs +++ b/drivers/gpu/nova-core/gpu.rs @@ -154,6 +154,17 @@ fn try_from(boot0: regs::NV_PMC_BOOT_0) -> Result { } } =20 +impl TryFrom for Spec { + type Error =3D Error; + + fn try_from(boot42: regs::NV_PMC_BOOT_42) -> Result { + Ok(Self { + chipset: boot42.chipset()?, + revision: boot42.revision(), + }) + } +} + impl fmt::Display for Revision { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "{:x}.{:x}", self.major, self.minor) @@ -169,9 +180,34 @@ pub(crate) struct Spec { =20 impl Spec { fn new(bar: &Bar0) -> Result { + // Some brief notes about boot0 and boot42, in chronological order: + // + // NV04 through Volta: + // + // Not supported by Nova. boot0 is necessary and sufficient to = identify these GPUs. + // boot42 may not even exist on some of these GPUs. + // + // Turing through Blackwell: + // + // Supported by both Nouveau and Nova. boot0 is still necessar= y and sufficient to + // identify these GPUs. boot42 exists on these GPUs but we don= 't need to use it. + // + // Rubin: + // + // Only supported by Nova. Need to use boot42 to fully identif= y these GPUs. + // + // "Future" (after Rubin) GPUs: + // + // Only supported by Nova. NV_PMC_BOOT's ARCH_0 (bits 28:24) wi= ll be zeroed out, and + // ARCH_1 (bit 8:8) will be set to 1, which will mean, "refer t= o NV_PMC_BOOT_42". + let boot0 =3D regs::NV_PMC_BOOT_0::read(bar); =20 - Spec::try_from(boot0) + if boot0.use_boot42_instead() { + Spec::try_from(regs::NV_PMC_BOOT_42::read(bar)) + } else { + Spec::try_from(boot0) + } } } =20 diff --git a/drivers/gpu/nova-core/regs.rs b/drivers/gpu/nova-core/regs.rs index 207b865335af..8b5ff3858210 100644 --- a/drivers/gpu/nova-core/regs.rs +++ b/drivers/gpu/nova-core/regs.rs @@ -25,6 +25,13 @@ }); =20 impl NV_PMC_BOOT_0 { + pub(crate) fn use_boot42_instead(self) -> bool { + // "Future" GPUs (some time after Rubin) will set `architecture_0` + // to 0, and `architecture_1` to 1, and put the architecture detai= ls in + // boot42 instead. + self.architecture_0() =3D=3D 0 && self.architecture_1() =3D=3D 1 + } + /// Combines `architecture_0` and `architecture_1` to obtain the archi= tecture of the chip. pub(crate) fn architecture(self) -> Result { Architecture::try_from( @@ -51,6 +58,32 @@ pub(crate) fn revision(self) -> crate::gpu::Revision { } } =20 +register!(NV_PMC_BOOT_42 @ 0x00000108, "Extended architecture information"= { + 7:0 implementation as u8, "Implementation version of the architect= ure"; + 15:8 architecture as u8 ?=3D> Architecture, "Architecture value"; + 19:16 minor_revision as u8, "Minor revision of the chip"; + 23:20 major_revision as u8, "Major revision of the chip"; +}); + +impl NV_PMC_BOOT_42 { + pub(crate) fn chipset(self) -> Result { + self.architecture() + .map(|arch| { + ((arch as u32) << Self::IMPLEMENTATION_RANGE.len()) + | u32::from(self.implementation()) + }) + .and_then(Chipset::try_from) + } + + /// Returns the revision information of the chip. + pub(crate) fn revision(self) -> crate::gpu::Revision { + crate::gpu::Revision { + major: self.major_revision(), + minor: self.minor_revision(), + } + } +} + // PBUS =20 register!(NV_PBUS_SW_SCRATCH @ 0x00001400[64] {}); --=20 2.51.2