From nobody Thu Apr 9 09:10:28 2026 Received: from SN4PR2101CU001.outbound.protection.outlook.com (mail-southcentralusazon11012035.outbound.protection.outlook.com [40.93.195.35]) (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 25E3D39A7E6; Tue, 10 Mar 2026 02:31:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.195.35 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773109914; cv=fail; b=ENkHPqfAx/k0SlV+yDrZ8GHo8fEI7eEMCDECvTRB0fGZaqJ4pahzyWum68fB3rP0gJfnRDQJqt4Y2cd12ZVkkSUhkhsQTDobas/sWGlk/t/XXv0MUYUVEnigtwcOsSoqhm74RrB+7x3pHBHiYa4JqUZl1B3rxGUZrllOJIG13+s= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773109914; c=relaxed/simple; bh=X8FDbgUB/DE/li9pRqU3WL+8q9N0/BklxGMH/y1D0NA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Tp/IeROGQfCZl62jADPtQWzheHk7toSZPDuNo86uBeq1dPyDYAnZ6jBjbBNDy26dJOWQzzw2uUeI/7T9Ni2/QWQc+QhCH5qO7XKos76Cs9+WT0qxGiX7kmSpRjrPaAmGXp6GeXTZfK3rJO3WxYyL4CoPlv5jrDqJYaGvJpfWOTw= 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=N2H3Lgji; arc=fail smtp.client-ip=40.93.195.35 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="N2H3Lgji" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Q4rpI7uhPIiYW3i52bZs5RMZk+FvhJZVOAdEl6B/vMhdsl+n0rTP6H4QRCrjCqB+BWIiD8pMlLC2hKPUEWsBfsAxDAhmSBKFHX8dSQ4wtI8iShu+01je4unaOm6qPVAvL4hRvsNBcaIgoO/g2irWdF8r2LMmDO1utSp+Mj2KI7w4VC0lYlGbpu+IHBJ0e5sVxysnY3EV56PJl9kfrMMBraZIqeynWyCsxhjHRAnWbThcSzotdFTcKyngSSD4EopVe3O6VDMLybQtmnRNgm8vwwwzsEfxKqD+kTcfA1oq7Ac2FFXvaMQi4PniK+EmOgCr4C44veDD3EYJcFMFlgD36A== 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=sGrbTVD4hWmXFMy0ksrTgIQyTrjH2c3pELJht/hKJg4=; b=AjVtmx7i7fkYT6ZpraHPOEqK9jMLT50ulFGtAAKJoGvLCk9exwP3m9YmzsW+XCcpQkc0GgkMDqMjgBnBOfy5xbz7Z5j7iPwyFLJS5HdRu8bZwQK3ScODBy4FAivbGZguBJfSLbnNncxkgLwP59zAKUyeO4AUHX61BZw0jQiHAw6LVnq/UBovP2E3P0ojJmsaWmn0spU764SZF4ndcuDiWvab6E51FuNp4FaD+msr6MocEdgliT82Xnijm9L9SrxNJHTGBK6kh2xebniXki9V+KDYcFoOBjzb1HgvD+cTigtoDLNuRXlwMsgewZKqB3c2Xl/IBdWplYJ2GY9WOoikKw== 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=sGrbTVD4hWmXFMy0ksrTgIQyTrjH2c3pELJht/hKJg4=; b=N2H3Lgji+xkpNpba5PisZkqJ6V+KrWXNp2MYZXumkc+pgs63Lir8++Mv2LLB4fFqmjo6AFWB30xSx0MSvKSHpgWHrjRTd4TXYE0vYWOOZFFTSPS8rZIX2RO9wtjFhcEKzbJmjVCMi0nu5Hkg/sRxIyHcm6m13wtnS4gMKhw0syBiV3EJmJ9344xKGlij9tJA65eegiUVwMGV5iegWetxN53BiGH1chrgTmYV+AJLicHsS5ame3yuCnnTilTI9pWxQ7HjnDzA3tDHduizRJZsXtdXXgVm1He4IMnm/BZeB6m80wUCayqYKr82ccd5NnZADQ7oAYftH9guKqpFy7eu2A== 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 SA1PR12MB8142.namprd12.prod.outlook.com (2603:10b6:806:334::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9700.11; Tue, 10 Mar 2026 02:31:48 +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.9700.010; Tue, 10 Mar 2026 02:31:48 +0000 From: John Hubbard To: Danilo Krummrich , Alexandre Courbot Cc: Joel Fernandes , Timur Tabi , Alistair Popple , Eliot Courtney , Shashank Sharma , 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 , rust-for-linux@vger.kernel.org, LKML , John Hubbard Subject: [PATCH 1/2] rust: sizes: add u64 variants of SZ_* constants Date: Mon, 9 Mar 2026 19:31:44 -0700 Message-ID: <20260310023145.120037-2-jhubbard@nvidia.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260310023145.120037-1-jhubbard@nvidia.com> References: <20260310023145.120037-1-jhubbard@nvidia.com> X-NVConfidentiality: public Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BYAPR03CA0006.namprd03.prod.outlook.com (2603:10b6:a02:a8::19) 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_|SA1PR12MB8142:EE_ X-MS-Office365-Filtering-Correlation-Id: 1937fd50-c2e0-4b13-5959-08de7e4d2e0a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|366016; X-Microsoft-Antispam-Message-Info: jgs5O5POGMtUJNzwCAkssr2pGb4v4QiRMnI2ZEuvL47qPBOQNok6kAo7HfLEIukGnrXI1tqsD0xBUzGz8jbr9lxm6laHvHetgQsB/g/ZntJXS4X13XzYJU5G/sJrhQRU08PWaoOPqvFIe34XcNuA0lvsnp3LjWIS16OIP3XONJt/anoijuXqKnr7iwyVdxii0jwC+ENTToOr15XZBlsTnKRJSuamL3TgSUVBs5VDvUDGrT2JdhoZEBgKQZLZYAxXOgpfDyg/1mACkY3EaM/wDfolLTiK8GousjZ+5jCzhuBgAg/0ieS/1daaGXeo9Ghbnx8QnYB4EGgT9jUH/U6kmUj/VQr3P6S5dIM6Gc60cvZSSc29V0UrCm25R3M14IbV2d5RUFKs1RIWeDEBeAop24RRmzJLuNx7evYXokLZFcRBqcxsY6Mcb6ITuys1TA/uJlWKDgO81mLRbHF1TmFCFQ++acoOYduaIeKaYV4YqyQGmD3uxVcdsIuUCbmWQMHgWcW32g7ER+o9TXRWB1ckfYJ8mKPdmnXp4oUj0zHXHWOVt+81BsqRD3uNSel+4UgPYymKo3ZZynyCEDVUMHRY8XMpVSy6DYUcN7r3rq8vxTN0/0/q4RNVrGU7Jo3wkLGoGwRZWypUvfRXgJywr/7YM9vD+yGJ+8d4vcXEE+l4/E8lP/z7Q29eHCYkvgItEZdwIzPeFxhhhB/WtRs5A5WYsYt9xiW1pbFML+YYHWGbrrA= 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)(376014)(7416014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?FlE6Kq7uWt2pkqKWEcja8YP03rg3oNdSyQj421aCCYFiel4EibnnJidqmNde?= =?us-ascii?Q?iriOD75C1o8pXrpW0BnixRDKQBmomtt/8h7dPgxfA0irgZhfXkOQj6g0FWVe?= =?us-ascii?Q?GKI0T8yHCTz1urkzs7twX6Tx9g2Olo8W4i6n3eQUzGEr5z4uwMhCYN9VriKK?= =?us-ascii?Q?rXzz0qXrnBT6/CjGj4EJyY/XjAEpNelvxE2S+jf0IuCK0LiOGOjN0WsSDoIY?= =?us-ascii?Q?aPVsRf9T+hECk4alFYrbKEvuc6uCLOqtH+ooBn4pq1284KnAgL/BMLnRoUEv?= =?us-ascii?Q?knVorywMx+WkATibDBJ5SyxTXU2ym451V+HJGcqoi1tGqTKyXlMku/NbCXxH?= =?us-ascii?Q?prP20HAFxkqDR/bGnF5onzRA+fdgOFdKZGdqIJV9O8+AZ0SMwH11760UBKzL?= =?us-ascii?Q?XWIrhuDwdkL5iq91BiJqdKHi4ZaK8o0gECWVfTnFPPVgVx1Zx+V9y0/z0Y3t?= =?us-ascii?Q?23cVmPZ9gJBqAc8jqB8jMtokU0/0TVWZ5x9W52ALt0EXy/3+txmlBcs7DUB/?= =?us-ascii?Q?bY2KuMNJNVkGWCc1a6AhexrvmFv/9LlKiBP+2JwGkw7f7mCXv0mf+lktFXq2?= =?us-ascii?Q?iZnV5B0Oa5jfBH1cFXzxx4YneO2wG1drkH7/XV7fNtV/iEwV3F0LRcZp4D1w?= =?us-ascii?Q?V+CSGCZwnrccbVN8Rq2zvgSpL1ooHp2H5T5n9SYNpZBDcpmxCEk0w5F0+hPu?= =?us-ascii?Q?agFlKGUxRiTMqPjzDjxQYgm1TILEKLaxEK3CO7EpXCkLcTz1ZTH38EFfo2yD?= =?us-ascii?Q?XD/Dgz7eI29xEXRin7yc/gS6tNlNN/WyqYwlXDXjpqwswud9K8bjSKtEl+WI?= =?us-ascii?Q?Wksku14sWcKl23g2Bj6kW8zDiUHNZIVGi+jEB+7HVor2xgrkUqdmzWAnVkjY?= =?us-ascii?Q?xbWDh0AOcVhBslN9DnwtV4InSFvSX3kVHBSSM1+a3gzR8PKFyHGDB9Bxhw+b?= =?us-ascii?Q?Z390cSjAqKZv30qMTuEhVuzcQ2TR05r+MVX6+JxFgarpmX2ctW+YUC/jFK4B?= =?us-ascii?Q?Hy7ryommYeuHBwHemQlc1Pal+S3dVutJcWn1V2VHk6sqOkyKJ21Mv92VEa6J?= =?us-ascii?Q?/TjHStPBVakHWIpz0Nt50GEjVcdVlUKB7NL7TYN4GFZBaPQlbgHLJ1RZfG3k?= =?us-ascii?Q?ERYQAf1DWl1Qxl8s5twCiGCNBXnt3d9AWdSXZDfaM1saDLh/WDM5ju9oGtRI?= =?us-ascii?Q?4EgOdfeRo/j9AwPYw4D71TO8ZSvyy1ZNkMYdGkQHVkZvu6fGXPGikgGgg58p?= =?us-ascii?Q?cP3xeFuO7cauvoyNRxSjCD/1IApV+S7jgPZa35dz0NgGPlo5zhMEwNCtyxrg?= =?us-ascii?Q?VrlhwK0zHdN3XvM9GPQiO4Gh6qfQVBy/aPCHTwBffBy9JDQuroT5/t7nnDUg?= =?us-ascii?Q?OgPAeB0nB3ZyGdLDERRn4hQpUh+oWJ+RvE+thrRX8DnQ6R3LrLTyqNHkHGgw?= =?us-ascii?Q?yygIXMrQ9JJF79DfNFYilVZt/a4PjhE61bMhR7tHIQ/eeE6FXt4k7I2gKwHM?= =?us-ascii?Q?/170nxfPwm/UxfFRUO63v/VK6634/ozLD+7yIPbzpZY6mCIynk4bQpZcytUY?= =?us-ascii?Q?33XjclOnigDBLKi2wR/hVTqFyLPpOKVqE1sVN9Dj0QzDe9j/724aQubyn+Hw?= =?us-ascii?Q?oyiqfSjSh7apaCu6YSRFUvy7DdyP54UPeby7H4bN13rVP78ut+RAjkXwGI4t?= =?us-ascii?Q?LLlaXxFnYIWZZs9cv9Lq5zijd75CQKE/ubcOWS2aTjXD/joM3nq4SMOKDJCa?= =?us-ascii?Q?jBjZj48Nkg=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1937fd50-c2e0-4b13-5959-08de7e4d2e0a X-MS-Exchange-CrossTenant-AuthSource: DM3PR12MB9416.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2026 02:31:48.5122 (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: eqilz4TBcSawEZueoEvEAgxGCIfxVSlWuN0GcRWfrnn2unz/P1E6KrIf45ul85xmSgjbBmzJoMj9xSsXpW7JKg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB8142 Content-Type: text/plain; charset="utf-8" Drivers that operate on 64-bit address spaces (GPU framebuffer layouts, DMA regions, etc.) frequently need these size constants as a u64 type. Today this requires repeated usize-to-u64 conversion calls like usize_as_u64(SZ_1M) or u64::from_safe_cast(SZ_1M), which adds boilerplate without any safety benefit. Add u64-typed constants (SZ_1K_U64 through SZ_2G_U64) alongside the existing usize constants. Every value fits in u64 (actually, within a u32 for that matter), so the as-cast is always lossless. Signed-off-by: John Hubbard Suggested-by: Danilo Krummrich --- rust/kernel/sizes.rs | 51 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/rust/kernel/sizes.rs b/rust/kernel/sizes.rs index 661e680d9330..a11c134be64e 100644 --- a/rust/kernel/sizes.rs +++ b/rust/kernel/sizes.rs @@ -48,3 +48,54 @@ pub const SZ_1G: usize =3D bindings::SZ_1G as usize; /// 0x80000000 pub const SZ_2G: usize =3D bindings::SZ_2G as usize; + +// `u64` variants of the size constants. These are the same values as the +// `usize` constants above, but typed as `u64` to avoid repeated conversion +// boilerplate in code that operates on 64-bit address spaces. +// +// CAST: every SZ_* value below fits in u64, so `as u64` is always lossles= s. + +/// [`SZ_1K`] as a [`u64`]. +pub const SZ_1K_U64: u64 =3D SZ_1K as u64; +/// [`SZ_2K`] as a [`u64`]. +pub const SZ_2K_U64: u64 =3D SZ_2K as u64; +/// [`SZ_4K`] as a [`u64`]. +pub const SZ_4K_U64: u64 =3D SZ_4K as u64; +/// [`SZ_8K`] as a [`u64`]. +pub const SZ_8K_U64: u64 =3D SZ_8K as u64; +/// [`SZ_16K`] as a [`u64`]. +pub const SZ_16K_U64: u64 =3D SZ_16K as u64; +/// [`SZ_32K`] as a [`u64`]. +pub const SZ_32K_U64: u64 =3D SZ_32K as u64; +/// [`SZ_64K`] as a [`u64`]. +pub const SZ_64K_U64: u64 =3D SZ_64K as u64; +/// [`SZ_128K`] as a [`u64`]. +pub const SZ_128K_U64: u64 =3D SZ_128K as u64; +/// [`SZ_256K`] as a [`u64`]. +pub const SZ_256K_U64: u64 =3D SZ_256K as u64; +/// [`SZ_512K`] as a [`u64`]. +pub const SZ_512K_U64: u64 =3D SZ_512K as u64; +/// [`SZ_1M`] as a [`u64`]. +pub const SZ_1M_U64: u64 =3D SZ_1M as u64; +/// [`SZ_2M`] as a [`u64`]. +pub const SZ_2M_U64: u64 =3D SZ_2M as u64; +/// [`SZ_4M`] as a [`u64`]. +pub const SZ_4M_U64: u64 =3D SZ_4M as u64; +/// [`SZ_8M`] as a [`u64`]. +pub const SZ_8M_U64: u64 =3D SZ_8M as u64; +/// [`SZ_16M`] as a [`u64`]. +pub const SZ_16M_U64: u64 =3D SZ_16M as u64; +/// [`SZ_32M`] as a [`u64`]. +pub const SZ_32M_U64: u64 =3D SZ_32M as u64; +/// [`SZ_64M`] as a [`u64`]. +pub const SZ_64M_U64: u64 =3D SZ_64M as u64; +/// [`SZ_128M`] as a [`u64`]. +pub const SZ_128M_U64: u64 =3D SZ_128M as u64; +/// [`SZ_256M`] as a [`u64`]. +pub const SZ_256M_U64: u64 =3D SZ_256M as u64; +/// [`SZ_512M`] as a [`u64`]. +pub const SZ_512M_U64: u64 =3D SZ_512M as u64; +/// [`SZ_1G`] as a [`u64`]. +pub const SZ_1G_U64: u64 =3D SZ_1G as u64; +/// [`SZ_2G`] as a [`u64`]. +pub const SZ_2G_U64: u64 =3D SZ_2G as u64; --=20 2.53.0 From nobody Thu Apr 9 09:10:28 2026 Received: from SN4PR2101CU001.outbound.protection.outlook.com (mail-southcentralusazon11012050.outbound.protection.outlook.com [40.93.195.50]) (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 25FB939A7E3; Tue, 10 Mar 2026 02:31:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.195.50 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773109918; cv=fail; b=pNrP04JmwfnXehbnXAfas1HVxdvWeU0IOjXEVex3K2sXviwtbueK87QkCNaktqa1TgxfGNg94D9skaFGkxjMwRTC89J8+zzg/Aq0zl6EToqIc9Pqt2XQd6IDFoxVUmtBa6pGCnYolcFw5W+zjz4laeoqhTkUr1oYTTVsV1lHlcs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773109918; c=relaxed/simple; bh=scepazTYTYc3bxrgKjO+nZJkUIdUTSPDIUGnhW27cL8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=TUMUUUcbZLAwkjz6LUuZ9nSunHFXPiaIaPCth/hMXf/ooKVwR10nhlFFJq5yxZ9jFE213suMLYBLIk25Ge+ZZaw/46D6Zs3YAN0f684S7Zewl5KCknUd0R45b7fqUS3d8iZTIjz1h/zCPfth2yZwCfKgenVTKyHPgKWK2ldDxCo= 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=t5QoO5j/; arc=fail smtp.client-ip=40.93.195.50 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="t5QoO5j/" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GuXC1f29t9WmouY9RNwyfjqfAIkSfBjDBOiDSboW2HDLEdAhbQQc7+S5e5lK1haDYSJ1sLdYFt2kpWv6oSnJdM2k+CIPdw8/fXm9SFkEuREa1cbZrg+6T/9wsNrWNF0ykZ3e8lEkRMqjSQqnI9O88+Jw5/CuDyF9nmWhhOuUKl5UumnO9K1kfHVjXnnrC5O5R0kM+z5uN4VIrfNcU9y9Qj1946tpVMstJoBcG04G9E+t7W/pthde4OGivJavXs6taLhsRf3FCXUcvsV9P4Jakb04OCKte1qZOkXhIR7bxwN2oM4aVz/CRfn6crxuakbYXWJxTd6n+nIt2JbYYVxi5w== 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=CNn/28lD/FL43P4TRBucF6Sg+GrV06MzDTOJqkREXwA=; b=efIqOXjIBUlzw3lHVGQD5pQXokGUpJL25PZPruUB31WcPMq/xyPBF6bExOIy9aq05xK2vTqaHs3gKG2/bfRwz1EepqHKxXty5OzTKk4kSHLMYVNmCgkOwGLQBr1SfIongTfKnA9HcWEHf/BtEVOBlwZVKuRDCdmfFboT2YH6a7nTDphbQuIPRQ7h52aVanxgX8MCe96+m6ArwsAEfQwKBGaQZ+vztls0Tvi36XEm2zC+kWfN2rYClYvKcjS52Rr1BALTct/UKaZNOtfGxtVfvqr8UDrq47u7rZsPxP3487M7kwc8RNhV1OP602roXVzSQ4AWQCv+n26D2ZmZ3YJxlg== 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=CNn/28lD/FL43P4TRBucF6Sg+GrV06MzDTOJqkREXwA=; b=t5QoO5j/Y6JE7uEZIrXAF62reEM8ZWA4KIzMzlNVobWhQh/Ic9DhkbCmR9aQ4VjlT3HUI05lS93sE/3Fc0PJ0td9TmgmxfPDoB0lQy2+qganb46lbHh59NQWjOFhujlBnfEolh7gI4S8NK8878egfkX6TiOJp1j1tvyF37bf9E2m/OWqR7niXjqGL4fQqRWw0TqcNb7Rz/ZPq0JH+P51If/Z9SQjIzo9pwjUrhz5Ce5Et08iGVcovfEjDtEl8O2zNmdBlkEuq/DuehJK2MxjK/8z+v80HSgCQl54awusMA1gz/Wn9cCdoouXQJ3XFWioeGOqlWnGdwbeMZBn5PVZlA== 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 SA1PR12MB8142.namprd12.prod.outlook.com (2603:10b6:806:334::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9700.11; Tue, 10 Mar 2026 02:31:49 +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.9700.010; Tue, 10 Mar 2026 02:31:49 +0000 From: John Hubbard To: Danilo Krummrich , Alexandre Courbot Cc: Joel Fernandes , Timur Tabi , Alistair Popple , Eliot Courtney , Shashank Sharma , 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 , rust-for-linux@vger.kernel.org, LKML , John Hubbard Subject: [PATCH 2/2] gpu: nova-core: use SZ_*_U64 constants from kernel::sizes Date: Mon, 9 Mar 2026 19:31:45 -0700 Message-ID: <20260310023145.120037-3-jhubbard@nvidia.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260310023145.120037-1-jhubbard@nvidia.com> References: <20260310023145.120037-1-jhubbard@nvidia.com> X-NVConfidentiality: public Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BYAPR03CA0007.namprd03.prod.outlook.com (2603:10b6:a02:a8::20) 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_|SA1PR12MB8142:EE_ X-MS-Office365-Filtering-Correlation-Id: 7cb4e628-6b9d-4c92-4bf6-08de7e4d2ed4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|366016; X-Microsoft-Antispam-Message-Info: Ha1xAt07cJtwHaHZHqLV3C/dAcPdFvAxgtmUD3AVMIe3LFuzoPtm8HnvNoj+SmQS+hflRQN/Hre6wlUGQ1xf2Ot87ui8XIZPrRXmE10gmIYNKqJFb9XZ//l+LQnChPnyOcfVr5ac1KzwbjtxthDEyfFqW5GqqEdUv9Jlx76mHgtMCicVl1DIvZHylf4J0gd4mQL3HVnWGC9qiSqeeLq6x/O8jidXuGmAcetAhD939LcV32WCz74aKXuXdy9ORsZKvSImWBf3nU3XDtDCEq9TPwFPmADX2OTtxJS+7B79tIOFthE+g2iSprJUebL0qzZi6EFgpMqsW05pUXcFbEUwnb894Y1vsNtl1T6Ne/qlhIJBFiMg+XphvyR0Z+fyniArBoM2yVozoUbMqNV3ZRt8kajbpWiTqvkisTB8M+z9BCL1U0r0ca9LsNJqN7QmarUtRCXPcYnNuUMUWv0XtzpQefTKTIRAw9TW9ORNv+ga43mNVKy293veq478lyHaqbpXlDG4n9POCwxUIHKuwxy4F9TSmhzzmRFM2epB7Ol1NvqfEZBNqDVW8MME9jbEcIHMXGzEVjFXI/VeB2L8NUNid+/VctWtCNm2hBB/uPoCnuPPF0U9h3R7i/POXyh5NeXdfml3z+HRxuDhN9SRDABq6FKBkhqvCbMeEFTRcTVKloG9IlPrSO3aH8Ovvwu9R3jcqIZiYzy9s7x14v6UKPs2uTJBJpHslvxgnYMklZFR2LA= 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)(376014)(7416014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?OZ6oBSJTQucRwvQnXzfAv0u8819SwuMQy+Da4FhNx2EEXnAvTJiYp5ElRPaS?= =?us-ascii?Q?YXxlrgN/htjw4ONnjss/1Yj9zwKvBFraqeTS/p+708egsfP4maqEHtFfEgWL?= =?us-ascii?Q?WI4bO8lj4nz5L0F4721ofOsRFmyVsioIAFaXlU1UUr0T5CsQyw83L3NARHsc?= =?us-ascii?Q?fkONQuGw/dgFZ0ryP2uX+aTJ2P2KPXAII9gb1mTfJVqeXW4a/pGyM7Dn92Qu?= =?us-ascii?Q?BpTWd7yuU++jKhGg7ddWo7a6MZDWbPS1QIb2nr53gIUQiemrdATwinjWr6Xp?= =?us-ascii?Q?sSbb59F3nW6lH0uvN8IcSGIBzVmVR+q3dvDKzaIVjlfX8ZKqZ6sHZd/buL/P?= =?us-ascii?Q?M4aUYAPQmUOS48P33fq7dtz306c1UVjZjt3LpT25eMPbQbq7ZXE/rb/lXEGF?= =?us-ascii?Q?nkrKNpI860tQ/YFd6wXVWyAHq2eesU4YNJiw+Hsrzn2WFiJptldkP8074yET?= =?us-ascii?Q?KGxQWVlvslyIPHdJcFQ7Nwro1uB3xOIU2Mn+7cZaPmOSdgMRxPvsx/DvTt/0?= =?us-ascii?Q?UDjtUQj5k6lgSJo246Q9Fp8NrYAVuCvxYdeB4+TJ8F3m158GgQv+drgkZEBi?= =?us-ascii?Q?36n27WMaVKi6SL/Fe/reA6YrUxfY6hKCBRzwkaVkUYm7X8xgC0BfKBm3u6gj?= =?us-ascii?Q?uHPLmFA1pe2eOz5LbISmSwlirsQa0LkrcOY4mdPijxjco2rXbwyFE84fiW8s?= =?us-ascii?Q?dY56jqEPFPjSfWHFds95Nvo9ukB3fMhaZSUdqtp+dLC6CnGagO/wnycY+m9h?= =?us-ascii?Q?4BbL74q0HM/vJJBb7ScGuA/P9zpxyLSQWTggEMn7Rj3ckEw1wgdo0mI4KUOr?= =?us-ascii?Q?O8vG9dbb4RTWDsnqc4lOGxkFeqKddDlHbQ1lW1+SoQvACfsGVET0WMOzOiGE?= =?us-ascii?Q?zKFhVW5gnY8NuAc5JC5U4FeLG9gdQWTaO9cvDxx1RaJzRUHT1xIFjvh4hiwc?= =?us-ascii?Q?EPv8z7a+QKftWEhlZASzqhZMt5c2fVESTZNC3z+4dReD0fbn54fTf0KTFTfN?= =?us-ascii?Q?Tya10VWvBfA/6GXor88tRVZFHnF9S6HNWltgQPNewwgcuED6/9mIGDpBwj/A?= =?us-ascii?Q?ywhwmweFIOUAwDWX6cBT4DmgXJigYInDVvl2uS8YftFwxEG9GM6btZ2rfJRw?= =?us-ascii?Q?hfKt29d/PaB4SZ0i0kxBCl7ef8wje/sAJpeWZzUrV/8h8ulGi3k6tppTcj8n?= =?us-ascii?Q?wwt4qZWU04SlT9wHDcOaJrN/1AkI3fBdEjXUk1geKwL+dDlc2QHrIIALPsVu?= =?us-ascii?Q?4UBl3hsmSW9cdIK+rWZ4QNz+LWlCjVe3gqS39rGKYmI9OeXtlOyrHwwnKtSr?= =?us-ascii?Q?h/+OUjpZ8jjqFvKNtd4SkkrQgpiVjCJZU0kSXyHGfZRBnfje9ijL88uEmApf?= =?us-ascii?Q?fgbOGrS71My1G0ZEm03XvBzMegD/Pnti6esTfqQ4mvEB1xnZngIcgd6Qmnfm?= =?us-ascii?Q?Z8keSM2fvWe0/YhHEYTZKhawOsuF2M5zU+Bvlg32Nv8Dpr0DmeGWDpz3Hw13?= =?us-ascii?Q?c3jd3lO14bu/fs1cDjqzTLBsBA2HhmNtO2R8HyBCiDF7poZmAiTDfaPPp85D?= =?us-ascii?Q?HL/Anrzsg5YEi2Q8G1cxeuKYaM/yYZwXWoa9s45UhpnQtnzuuhkdwPqtO5Lo?= =?us-ascii?Q?Ptoi5SOuZI9cVJBbIlk60RaWZ9kK6v9uVa8kCBSttYpgG+aqPgp+7+tEKafT?= =?us-ascii?Q?dDnqVarqOf9C6KNBLknlzzVKc+mKxfbLBNoBbsMgQGbwjTDtO7KddUbKnkdd?= =?us-ascii?Q?2n9P1OqjGA=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7cb4e628-6b9d-4c92-4bf6-08de7e4d2ed4 X-MS-Exchange-CrossTenant-AuthSource: DM3PR12MB9416.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2026 02:31:49.7726 (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: 2WfV3rWRCWfA9q9vueJ16ce7wRIBLUX0Nee+r2+1UL1WFSxFtFFsE6o8w9t+dZ7ZLr7amQvpkfFw5NZiKHZYAg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB8142 Content-Type: text/plain; charset="utf-8" Replace manual usize_as_u64(SZ_*) and u64::from_safe_cast(SZ_*) conversions with the new SZ_*_U64 constants throughout fb.rs, gsp/fw.rs, and regs.rs. This removes the conversion boilerplate and the now-unused usize_as_u64 import in fb.rs. Signed-off-by: John Hubbard --- drivers/gpu/nova-core/fb.rs | 19 ++++++++----------- drivers/gpu/nova-core/gsp/fw.rs | 23 ++++++++++------------- drivers/gpu/nova-core/regs.rs | 6 +++--- 3 files changed, 21 insertions(+), 27 deletions(-) diff --git a/drivers/gpu/nova-core/fb.rs b/drivers/gpu/nova-core/fb.rs index 5943db2b619b..1a84a15581a4 100644 --- a/drivers/gpu/nova-core/fb.rs +++ b/drivers/gpu/nova-core/fb.rs @@ -24,10 +24,7 @@ firmware::gsp::GspFirmware, gpu::Chipset, gsp, - num::{ - usize_as_u64, - FromSafeCast, // - }, + num::FromSafeCast, regs, }; =20 @@ -105,7 +102,7 @@ pub(crate) fn calc_non_wpr_heap_size(chipset: Chipset) = -> u64 { hal::fb_hal(chipset) .non_wpr_heap_size() .map(u64::from) - .unwrap_or(usize_as_u64(SZ_1M)) + .unwrap_or(SZ_1M_U64) } =20 pub(crate) struct FbRange(Range); @@ -136,8 +133,8 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Resul= t { if f.alternate() { let size =3D self.len(); =20 - if size < usize_as_u64(SZ_1M) { - let size_kib =3D size / usize_as_u64(SZ_1K); + if size < SZ_1M_U64 { + let size_kib =3D size / SZ_1K_U64; f.write_fmt(fmt!( "{:#x}..{:#x} ({} KiB)", self.0.start, @@ -145,7 +142,7 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Resul= t { size_kib )) } else { - let size_mib =3D size / usize_as_u64(SZ_1M); + let size_mib =3D size / SZ_1M_U64; f.write_fmt(fmt!( "{:#x}..{:#x} ({} MiB)", self.0.start, @@ -195,14 +192,14 @@ pub(crate) fn new(chipset: Chipset, bar: &Bar0, gsp_f= w: &GspFirmware) -> Result< =20 let vga_workspace =3D { let vga_base =3D { - const NV_PRAMIN_SIZE: u64 =3D usize_as_u64(SZ_1M); + const NV_PRAMIN_SIZE: u64 =3D SZ_1M_U64; let base =3D fb.end - NV_PRAMIN_SIZE; =20 if hal.supports_display(bar) { match regs::NV_PDISP_VGA_WORKSPACE_BASE::read(bar).vga= _workspace_addr() { Some(addr) =3D> { if addr < base { - const VBIOS_WORKSPACE_SIZE: u64 =3D usize_= as_u64(SZ_128K); + const VBIOS_WORKSPACE_SIZE: u64 =3D SZ_128= K_U64; =20 // Point workspace address to end of frame= buffer. fb.end - VBIOS_WORKSPACE_SIZE @@ -222,7 +219,7 @@ pub(crate) fn new(chipset: Chipset, bar: &Bar0, gsp_fw:= &GspFirmware) -> Result< =20 let frts =3D { const FRTS_DOWN_ALIGN: Alignment =3D Alignment::new::= (); - const FRTS_SIZE: u64 =3D usize_as_u64(SZ_1M); + const FRTS_SIZE: u64 =3D SZ_1M_U64; let frts_base =3D vga_workspace.start.align_down(FRTS_DOWN_ALI= GN) - FRTS_SIZE; =20 FbRange(frts_base..frts_base + FRTS_SIZE) diff --git a/drivers/gpu/nova-core/gsp/fw.rs b/drivers/gpu/nova-core/gsp/fw= .rs index 7834efc9095a..a9a86332664e 100644 --- a/drivers/gpu/nova-core/gsp/fw.rs +++ b/drivers/gpu/nova-core/gsp/fw.rs @@ -15,10 +15,7 @@ Alignable, Alignment, // }, - sizes::{ - SZ_128K, - SZ_1M, // - }, + sizes::*, transmute::{ AsBytes, FromBytes, // @@ -52,9 +49,9 @@ enum GspFwHeapParams {} // See Open RM: kgspCalculateGspFwHeapSize and related functions. // // 14MB for Hopper/Blackwell+. -const GSP_FW_HEAP_PARAM_BASE_RM_SIZE_GH100: u64 =3D 14 * num::usize_as_u64= (SZ_1M); +const GSP_FW_HEAP_PARAM_BASE_RM_SIZE_GH100: u64 =3D 14 * SZ_1M_U64; // 142MB client alloc for ~188MB total. -const GSP_FW_HEAP_PARAM_CLIENT_ALLOC_SIZE_GH100: u64 =3D 142 * num::usize_= as_u64(SZ_1M); +const GSP_FW_HEAP_PARAM_CLIENT_ALLOC_SIZE_GH100: u64 =3D 142 * SZ_1M_U64; // Hopper/Blackwell+ minimum heap size: 170MB (88 + 12 + 70). // See Open RM: GSP_FW_HEAP_SIZE_OVERRIDE_LIBOS3_BAREMETAL_MIN_MB for the = base 88MB, // plus Hopper+ additions in kgspCalculateGspFwHeapSize_GH100. @@ -88,7 +85,7 @@ fn client_alloc_size(chipset: Chipset) -> Result { /// Returns the amount of memory to reserve for management purposes fo= r a framebuffer of size /// `fb_size`. fn management_overhead(fb_size: u64) -> Result { - let fb_size_gb =3D fb_size.div_ceil(u64::from_safe_cast(kernel::si= zes::SZ_1G)); + let fb_size_gb =3D fb_size.div_ceil(SZ_1G_U64); =20 u64::from(bindings::GSP_FW_HEAP_PARAM_SIZE_PER_GB_FB) .saturating_mul(fb_size_gb) @@ -110,9 +107,9 @@ impl LibosParams { const LIBOS2: LibosParams =3D LibosParams { carveout_size: num::u32_as_u64(bindings::GSP_FW_HEAP_PARAM_OS_SIZE= _LIBOS2), allowed_heap_size: num::u32_as_u64(bindings::GSP_FW_HEAP_SIZE_OVER= RIDE_LIBOS2_MIN_MB) - * num::usize_as_u64(SZ_1M) + * SZ_1M_U64 ..num::u32_as_u64(bindings::GSP_FW_HEAP_SIZE_OVERRIDE_LIBOS2_M= AX_MB) - * num::usize_as_u64(SZ_1M), + * SZ_1M_U64, }; =20 /// Version 3 of the GSP LIBOS (GA102+) @@ -120,9 +117,9 @@ impl LibosParams { carveout_size: num::u32_as_u64(bindings::GSP_FW_HEAP_PARAM_OS_SIZE= _LIBOS3_BAREMETAL), allowed_heap_size: num::u32_as_u64( bindings::GSP_FW_HEAP_SIZE_OVERRIDE_LIBOS3_BAREMETAL_MIN_MB, - ) * num::usize_as_u64(SZ_1M) + ) * SZ_1M_U64 ..num::u32_as_u64(bindings::GSP_FW_HEAP_SIZE_OVERRIDE_LIBOS3_B= AREMETAL_MAX_MB) - * num::usize_as_u64(SZ_1M), + * SZ_1M_U64, }; =20 /// Hopper/Blackwell+ GPUs need a larger minimum heap size than the bi= ndings specify. @@ -131,9 +128,9 @@ impl LibosParams { const LIBOS_HOPPER: LibosParams =3D LibosParams { carveout_size: num::u32_as_u64(bindings::GSP_FW_HEAP_PARAM_OS_SIZE= _LIBOS3_BAREMETAL), allowed_heap_size: GSP_FW_HEAP_SIZE_OVERRIDE_LIBOS3_BAREMETAL_MIN_= MB_HOPPER - * num::usize_as_u64(SZ_1M) + * SZ_1M_U64 ..num::u32_as_u64(bindings::GSP_FW_HEAP_SIZE_OVERRIDE_LIBOS3_B= AREMETAL_MAX_MB) - * num::usize_as_u64(SZ_1M), + * SZ_1M_U64, }; =20 /// Returns the libos parameters corresponding to `chipset`. diff --git a/drivers/gpu/nova-core/regs.rs b/drivers/gpu/nova-core/regs.rs index d4efa6376acd..8d424dd23a5a 100644 --- a/drivers/gpu/nova-core/regs.rs +++ b/drivers/gpu/nova-core/regs.rs @@ -10,6 +10,7 @@ use kernel::{ io::Io, prelude::*, + sizes::*, time, // }; =20 @@ -33,7 +34,6 @@ Architecture, Chipset, // }, - num::FromSafeCast, }; =20 // PMC @@ -166,7 +166,7 @@ impl NV_PFB_PRI_MMU_LOCAL_MEMORY_RANGE { /// Returns the usable framebuffer size, in bytes. pub(crate) fn usable_fb_size(self) -> u64 { let size =3D (u64::from(self.lower_mag()) << u64::from(self.lower_= scale())) - * u64::from_safe_cast(kernel::sizes::SZ_1M); + * SZ_1M_U64; =20 if self.ecc_mode_enabled() { // Remove the amount of memory reserved for ECC (one per 16 un= its). @@ -255,7 +255,7 @@ pub(crate) fn completed(self) -> bool { impl NV_USABLE_FB_SIZE_IN_MB { /// Returns the usable framebuffer size, in bytes. pub(crate) fn usable_fb_size(self) -> u64 { - u64::from(self.value()) * u64::from_safe_cast(kernel::sizes::SZ_1M) + u64::from(self.value()) * SZ_1M_U64 } } =20 --=20 2.53.0