From nobody Mon Jun 8 11:01:52 2026 Received: from DM5PR21CU001.outbound.protection.outlook.com (mail-centralusazon11011017.outbound.protection.outlook.com [52.101.62.17]) (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 975173FCB2B; Fri, 29 May 2026 15:28:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.62.17 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780068500; cv=fail; b=pV/tiNpx524MN/akAXejSA3zCkPLOmfOwqbvhHW09UC6pSpY37kd78IjJX0vTTGt7HM2RUKSDi+FA/s/A93bcX4rjn5erULFuV25LlOKiXZxUVDHMBLgBv1YKq8DunWeAvl4yOyMYKUB2Jw5e9ofi5kzXELo4+zIFj82tDdPZo4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780068500; c=relaxed/simple; bh=v6AOG5YpatAQL5xDbdTTiORfRw2bh4CwRPai69lKCHs=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Be4ZfLvbIyazn3Vkcx1AI/BDgv5xclzoW930NuD12AsoIMz1/MnyIHorl/6+so6yHdKDzPhtOiwo3+JRMYEaDgENOPzlVhDA2luNrwuzXnNctiyjU0lfj4X+qyK9aakdXGOQ69En3gb+z3a1NgY+2ha73HmdcM40QW28juRPX1E= 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=cZ2PPjaI; arc=fail smtp.client-ip=52.101.62.17 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="cZ2PPjaI" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fCciQlcKRCqBFD/i3XJAiYCBe3ktl+rnh7CMm0iwfqjb3NkgG5gK/GCbt33/55KHTJk1YkHX+P+2dRF8XHFuSKGxl6GEzZCnRdp+qXq008BQ+OKNYLVxirQxXC9eKssWwtOqvNAKPQb1SMgquADCWZLnuqZoABReRg7VXkAJKMpGnt7SibZI2YH8ugNBaF0dCSwjdPR3KbWXs8Rlshnhhs+6yd8jxdy9ZUyqKzVAiDVIf236kzXMhSl0oYa+EoxzrDGl6njR2oqnUE3+TiLwpkgz8s0556f7wz+Roc27VEmItmSaRF6Fb2StUG7uuEfMJtqHszKXguWMpPwcJR1KBg== 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=jkS7Dg3fNAoW3HPqT+AgP4wB/6C9jrFm9m4I74+knu4=; b=KbrbLdOiMsBT3Ge4MHr8TCv7EL4wXzOHbsmzMB9zK6GB44asat4oYlYfgu9Fl2A0FMN/wlk6D7VCWNTdxDpPvi7bFyrgHqQEsSPNVk1IXV4JEv7frhAg1d/pBMcSozbrkgLOjrqnyCop0k8x3Py4VKO8yvNF0z3invZfAFmk/cAIQhyBI2EdHdJkrTz3MHj7mKZIawh8SYlPiWuggixroYgNvEeK7QCoKX6cEg+RN25TfrRFhmCz+CDb/WFq0optRBaQw03F50xMsvTArsH6c5Wh8sme1WUH/yHUqEREDLGCwvuUqRZ4SKzrclBK1zQpseW6Hibomi1WQH4VtOZk1A== 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=jkS7Dg3fNAoW3HPqT+AgP4wB/6C9jrFm9m4I74+knu4=; b=cZ2PPjaIl3Hlxl+GWKPWyypHS7gyz7C50l6soWlGNpvyIp9Dzm2ipm5QiL/vjDMiUxBkx88ztiRn0sh6GLtzLzCARzC8LSCRkVWmmhPUlNElnU2c6baI9U6g7O4QhSk1EEei8kmPfmyErdU09zprCSJ/rxZk91s+EUvIopuYFCHRZL0eQJoa+gAdSbrTv/nAFgIu/VzTt4s9197AHII86UUqioLRqehbTJ6gIMRzFQ5AJu9PqYxQQjHw2Q7b6wBpQTYZwooIa5xDrYOIy86HkjBQREiGBXQUCwhUTrzNYNF8zwNkSYQWQwk6olEj/d5f5mjOJZ4U+f0MhMbMU3Q1Fw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by DM4PR12MB8475.namprd12.prod.outlook.com (2603:10b6:8:190::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.11; Fri, 29 May 2026 15:28:08 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::7de1:4fe5:8ead:5989]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::7de1:4fe5:8ead:5989%4]) with mapi id 15.21.0071.011; Fri, 29 May 2026 15:28:08 +0000 From: Alexandre Courbot Date: Sat, 30 May 2026 00:27:41 +0900 Subject: [PATCH v3 1/5] rust: inline some init methods Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260530-nova-exports-v3-1-1202aa339ef7@nvidia.com> References: <20260530-nova-exports-v3-0-1202aa339ef7@nvidia.com> In-Reply-To: <20260530-nova-exports-v3-0-1202aa339ef7@nvidia.com> To: Miguel Ojeda , Nathan Chancellor , Nicolas Schier , Miguel Ojeda , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , David Airlie , Simona Vetter Cc: John Hubbard , Alistair Popple , Timur Tabi , Zhi Wang , Eliot Courtney , linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, nova-gpu@lists.linux.dev, dri-devel@lists.freedesktop.org, Alexandre Courbot X-Mailer: b4 0.15.2 X-ClientProxiedBy: TY6P286CA0019.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:3b9::14) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) 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: CH2PR12MB3990:EE_|DM4PR12MB8475:EE_ X-MS-Office365-Filtering-Correlation-Id: 5b14f1f9-a66d-4a58-72af-08debd96e2d0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|10070799003|366016|921020|18002099003|22082099003|56012099006|6133799003|11063799006; X-Microsoft-Antispam-Message-Info: FAnWoEg967h//k9crJc7YJ3UFnSY8kEjhSSIpj354vskC+4YvTeXxAwvktuc0gxETNoDQUQeCpEURJJtmwXvl23wGhZnoiphmq11utDRoURg3SNOb5Pm6kizT/tskfCWb9Q0l+6xb5Hh02SGNex5pf2t4so9u33GYO9BGj5eMWiG2vFVt9gPYCRhkp2uDHneRzopoRsQLpmS03tOhreAbGncnNgOZPM6WZs1FUAXDWI+pD81ps+AGeckhY+4AWjhzHl4ASD0liV7XCIVNjtQ7i66a3M8ADCwAFEQxLs9Vr1zLalwp0GkFtGxHgfjA9x1w/FYkCezY0YobRjjLDEHKxvkBsIGLQ2lwK2WNANA/RYhSP0ooGdeOmEFaf0HRSqMeSEwGgxJAnel3Dm4q0DTvcL373b2d3UqF15CiOXmNvEMvnOxEy9CbqnzTjiy8XM715A6ILTQHRirs850MCLdD3xtlKCWj9yRQJd58LBn4g7w3N/Pb58HleVsdloFPzMS64qUD1qBpmiQgb3TePLAI4G096kBFrZEa6i+J4j3ZsseTo294iQLfCaiNAChDlvZ6hVrYWU6WXLTKziBCTHgxoULWfDUjTr4IIKjg7u2euLa8lWgHzlMagSQN0EP8W/1AihejQ9TM+RRbX5mR9euUK1TXSU2kf3cYinAmVnqITaijUFd3wLZZRl7CglwbcOndxIDsNN9uPW6sNGeJJqU1qRrm7kFPhvTkYXb/hJzN1o= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(10070799003)(366016)(921020)(18002099003)(22082099003)(56012099006)(6133799003)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cnJpOElrd0kyMkFMYWtoVHhnKzFmSzA5MkVjeHhyWjRtMVd6ck9nd2RpNzIr?= =?utf-8?B?Sk9YZ2tSdW5IOElTdldubTZMcUFhVUlxMjAwaDBmRzB5N3ZFZWo3SVpJMFdk?= =?utf-8?B?WDJhTS9ZQkF6TWx5TzdBMjg1T2ZQK2tacnkveDNuOEgzYkZleGdFQ2xXYlVZ?= =?utf-8?B?RmxvcDkwS2lnVHh0c3hiNlFwNEQwRStZVmhKZHovN1VlSGd2MWt3bVRlZlFI?= =?utf-8?B?QWlTQ1NkblcycVJwcDR2UnJObTk0OFo2c1VMTnREck1DeEcrY0QvKzJ4UWpR?= =?utf-8?B?V3NrNlRzZlN6MGNRMnkrTTVuUHM0clczQ0pVMlplZEgvNXBuVEUrUCt2Tjgr?= =?utf-8?B?bW9kY2E5Y0VRWUtOU1o4cnFjeFloWmo4U3k5Tk9kMWVhcFFLeWtVVDJLTC9D?= =?utf-8?B?WjE4REh5c2JZYzVqdVd4KzVRRzE0QlpBMkFqVDlXdUlEQzcxdE1rYjBnRnlx?= =?utf-8?B?NU50RTQvbmZoalltVHJIQXVYMFB0NXIxMnNsSTVBcDdZWUsvL3E4V3hvVDJW?= =?utf-8?B?djVuUjYybDdtK3B0UGxoNmkxUjJuZFVUc0tRZk1MMWQwQUJHaFhyRE1BTnRL?= =?utf-8?B?OTd1eDV5bUpTMkc0L1BTVlRRQlQwbzdmalJ2SzYrVFlrN0hLd3FsL2VyeVRZ?= =?utf-8?B?VzltL2RZMzdNZHpTWS9OKzVTUUxreGllbFp1T0tKTlhGNzQ5MVpJZ3pybm5D?= =?utf-8?B?K210QWJDbGUrTnRBOEhybkpmT0FaclhXUldRVmcwZG1wOUFLbTlUdmw0UGE5?= =?utf-8?B?eTdmTjBaWFJqdU12UHdRc1lWckd0WDFUd3pGSVZqdTNyeUttMVpNakhiZUFX?= =?utf-8?B?VC9BbzQ0VHdQUjZYRjYvOFZXWU1Pem1VQ20zWWRUcXMxVEhUVGZrUXRlOENF?= =?utf-8?B?bEtxU2dsTjB0WU5LVG9TeENzb1E3aHVYVHN4TUdWMXgzcmQ5d3IxdEhkY0V2?= =?utf-8?B?RHZFbUlPdTlNbkJqTEpZaU1hZlNGQkZSMVlwb1crME1BeFEvZGNpaGIvWXFs?= =?utf-8?B?RlRTYU9PcjNOYXNDSXkzdDZBUENkVDZhZlJXcGJqL2lXQ09WU0ZjeEViZHo3?= =?utf-8?B?ZVM1eDROWmpYUFF0Vk52MzdoUUx1c0NrQ1ZqTG1TZFdxMmdUbFY3NFV3WXpP?= =?utf-8?B?Vmdkdm16TUtqaDE3YmlZNTJIWDZrdDZrS3RiV3BvZG5yN2Q2eCtmbnJ3dklW?= =?utf-8?B?RUR2ZC9kQTRyY0FtRkZPMUIxSlBqN2ovSURvaUZpaHJ3TlJ1TWFBOENUcEJN?= =?utf-8?B?ZWVZZG0rS2h1MWJ0ZmYwSGhYRnFXaTAyRGRjK2NqVTZkY0hkRE5FKzlEczdP?= =?utf-8?B?QWwrODFYUlFKd0pTeUdOdTZ3eGt4VEtUWG43dEY2c3NmTnhHTEIrSkhOZms4?= =?utf-8?B?blNPUmRScHhsQldvZHNaaXFrSzlYTlNuNUVXa1NROUdIZFZkSnp3Zmljcnl6?= =?utf-8?B?Q0JUMVlQWkhmZWJnSGMwUGhOMWxGdXQrdnZxWlh0aHBiMkZTb0g4aGRzY1dz?= =?utf-8?B?UklENlRZVGV6MkJZb2VxVWNwVVVSZGphc2M0T0V4cFgzSDVDeElsSUVLcTNN?= =?utf-8?B?bUFTbDVRMjNSNnBiQk93bVA0ZUFZdzMyamkrUzVtYU5uY2RkL0NCcEtnYjc3?= =?utf-8?B?WFdyUXFET1ZJMGMzWWhyQjhCbHNHdTk1cWpvUzF6T3VvK2VINE0rVFN0SXdC?= =?utf-8?B?UTBadVMzODNjRm4rcFA3ZDVnbHM3ajhqUW9lNE1WU0UzczdxZFl2MjFoZXY5?= =?utf-8?B?aXoxS1dXajEvSkRsTWg2RThvc2hhaFdnSlBJUG5MQW1IVW92MFpxcU1tcHZQ?= =?utf-8?B?TVVFanlOL1diRmYrdkJOSUx2c2lZSmx5djhnR2JocnExVGc3aGdLYXZyVUtM?= =?utf-8?B?RnFvVU9waDZEcHVLRDNYNWRjdlNrMy95eTJxSlpnWEtINGRGckxtMmxjZFZR?= =?utf-8?B?c3RTTjhrQVJUVU5ZTWxUOWlkcTFVeU1Fam05MEVZbTZaYnp2eGIzY1gyQjFq?= =?utf-8?B?aVNOV0FzRWxZbFh2bzNObDZyUXlod0FPam1zRVYxK1drZnlrcEpjd2QyV2Z0?= =?utf-8?B?U0d3T294MXExSUl5RzQ1WG13dFYybFE3aTFlRXBwb2k0SU51aFJuNHRzVXhQ?= =?utf-8?B?RkZvN2x1VEV0R0wraUJpeVo1eUhQMjRJMmhYeC9PRFZ5cDZPUmpIaVFDZnc4?= =?utf-8?B?c0paczNoU3FudEVIM3BqdkFlblF1enRqbEpHNlVISjIxN1dGNzN6SlNoTFkr?= =?utf-8?B?T2owLyswdnBVQzE0d2M5ZkR4VHYxSmpraFg0MDhuOXhCb25PS1M5MGZxSTc0?= =?utf-8?B?WnN6TWk0NzRoSkU3UXd6czZHcDJzWEs5MWtVZkI0S0hiK0VIOUFPeXp0dHM1?= =?utf-8?Q?CglM32OoQ4bnnjKyUvmEaJl/vrZwqV7QLtsZYL3b9UtXF?= X-MS-Exchange-AntiSpam-MessageData-1: Bto6NV3HJVKMDw== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5b14f1f9-a66d-4a58-72af-08debd96e2d0 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 May 2026 15:28:08.2497 (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: j/EAj2L4JRKQeK+ePjTaQRZr6o5aV6ynFhVey2WbtzyQzlINkOMlXw81Cax1PpUNNOFzHhmMqh/qrC5jkVfLCQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB8475 These methods should be inlined for optimization reasons. Failure to do so can also produce symbol names larger than what `modpost` or `objtool` can handle. Signed-off-by: Alexandre Courbot Reviewed-by: Gary Guo --- rust/kernel/alloc/kbox.rs | 2 ++ rust/kernel/init.rs | 1 + rust/kernel/sync/arc.rs | 2 ++ 3 files changed, 5 insertions(+) diff --git a/rust/kernel/alloc/kbox.rs b/rust/kernel/alloc/kbox.rs index 2f8c16473c2c..1264a8118aca 100644 --- a/rust/kernel/alloc/kbox.rs +++ b/rust/kernel/alloc/kbox.rs @@ -433,6 +433,7 @@ impl InPlaceWrite for Box, A> { type Initialized =3D Box; =20 + #[inline] fn write_init(mut self, init: impl Init) -> Result { let slot =3D self.as_mut_ptr(); // SAFETY: When init errors/panics, slot will get deallocated but = not dropped, @@ -442,6 +443,7 @@ fn write_init(mut self, init: impl Init) -> Re= sult(mut self, init: impl PinInit) -> Result, E> { let slot =3D self.as_mut_ptr(); // SAFETY: When init errors/panics, slot will get deallocated but = not dropped, diff --git a/rust/kernel/init.rs b/rust/kernel/init.rs index 7a0d4559d7b5..b2f330d42221 100644 --- a/rust/kernel/init.rs +++ b/rust/kernel/init.rs @@ -151,6 +151,7 @@ fn try_pin_init(init: impl PinInit, flags: Fla= gs) -> Result(init: impl PinInit, flags: Flags) -> error::Resul= t where Error: From, diff --git a/rust/kernel/sync/arc.rs b/rust/kernel/sync/arc.rs index 18d6c0d62ce0..b9f480040c55 100644 --- a/rust/kernel/sync/arc.rs +++ b/rust/kernel/sync/arc.rs @@ -712,6 +712,7 @@ fn try_init(init: impl Init, flags: Flags) -> = Result impl InPlaceWrite for UniqueArc> { type Initialized =3D UniqueArc; =20 + #[inline] fn write_init(mut self, init: impl Init) -> Result { let slot =3D self.as_mut_ptr(); // SAFETY: When init errors/panics, slot will get deallocated but = not dropped, @@ -721,6 +722,7 @@ fn write_init(mut self, init: impl Init) -> Re= sult(mut self, init: impl PinInit) -> Result, E> { let slot =3D self.as_mut_ptr(); // SAFETY: When init errors/panics, slot will get deallocated but = not dropped, --=20 2.54.0 From nobody Mon Jun 8 11:01:52 2026 Received: from DM5PR21CU001.outbound.protection.outlook.com (mail-centralusazon11011043.outbound.protection.outlook.com [52.101.62.43]) (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 4427E3ED3C9; Fri, 29 May 2026 15:28:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.62.43 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780068498; cv=fail; b=VvPidLaCcThDZylFk1NOPq8Tr52jNGwOftbpY7N/KIj4Jxr2ZxCOiaxGnSi7DdAfAftme1RY8ARvN+17v80ft/X4wanvvxEcP0Dg/sOB06AN9Js+wqqx4v/VOJojm0AoVE/+8jCQiArtrNkCcE9VfU8uXXayR1QTPXgYOMrdfhI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780068498; c=relaxed/simple; bh=Qt1CSPcr6YFlheshTF3UVIq2CynOLS5ucO6GvaCrBMg=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Og8pFQDlr8ueJFAnuLORI5YupOYjcj7+aChReePcOjSy6F8w7ICGRxTpXSC8nmd03YFN5YTlZmvmapm1uWRv7t4YM1FANXVAteh/aHf2t8Itdo/5R3A4A8ym4XYUodF5hKh0yMD3IH3unLbf1Dcsn2BpUasUm7nnQnH/e8+Ti5I= 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=OCF7r9dQ; arc=fail smtp.client-ip=52.101.62.43 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="OCF7r9dQ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=zHoGIrQg/b4zDx2W/ur6ubIieiFBdqX8WMHGkY0nbKdolaVZl4owPAK0she5nsiVw0O51wsALbM64kyfTbRRDpKGVCi6JXGjF9pJPaddfTSVIPlnfra2QzsBrJRdmGvf9kKrov8DDmi59TehF8rcLsIUV1+eIKeGeeq/V6hMIJ8ZSxIfRraZI2q3xKcUBeafkSn8BqpSHObjeXYqxWxl3LKniEkPYOjB1cIwf4i2LQeKZXuVg7UksEzEPhn0Dy0V381he7TEtj+cjWzwkbBbN5yePx7Xbn8Gr/+0HnjdOr2a+Ek8uztQRdo6/CV3z+bX5voZgMmqmvrZqtMJoqoo0Q== 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=Al/UycmJpREoEjBhDSZQbCjh5MgedODPve/UEBOw7sQ=; b=eKuoNckrj+IScnZYtizfOkHPErD4hviZiuByBH0H/EaipI1ahIADhFMML52V9+2u5AqdIgEHr4h7O/GCwRvmVmnhDFh8p5oyAZfVS8WPIWpSwPAgZsuLe+Yw0+NIpSqiBCLgBUyLuv2JL+ZdwgjqPaWSLPKQFQMkIF+lU+uM/IHTUy6NoF9ZghFoherCDIzMsIQDn+f5l57YE06ZPK+x89ijOdYIoCrJc6okXO1QXb6TXi95Fh6d3CBqaWBVdaAcRlZwAsYl1QSXU0JekLTA/O/RIXfl88x8WSvhz1daegDcqofgrbwvhsYC0B6c6IS9fvBXRaFSrW3LCF/Q9iwAYA== 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=Al/UycmJpREoEjBhDSZQbCjh5MgedODPve/UEBOw7sQ=; b=OCF7r9dQFffk+wazaCNQ7wQsB5DjYmsmMrwyQmSA+dLyKzeAtdB81whk1Z7+rySHgVn6SFMLi0uiwu7ARouYUBpgpZWhmG2mkcLaf92LBoVQyot+alY7UjQLMXLifOtw7CXh75oKKnk0K53lVpTfQZ1MwyejrETHPvRg+vgE5s1fLk9281w6PjqkXlz7GajPDUMBgvu92Lo1j7QXgvetFvdXtehrldnb03m1zGSiwYdqdja/DqbULpeSbUYgkryWzREjRfDwaYekgpMqHD3lFbvdYlUB7ue8v6WUHglrZzJjkIoZhIALnS/QCQ3pamfDfZLz5i7R/MWCSeeZ8u55oA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by SA3PR12MB9159.namprd12.prod.outlook.com (2603:10b6:806:3a0::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.15; Fri, 29 May 2026 15:28:12 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::7de1:4fe5:8ead:5989]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::7de1:4fe5:8ead:5989%4]) with mapi id 15.21.0071.011; Fri, 29 May 2026 15:28:12 +0000 From: Alexandre Courbot Date: Sat, 30 May 2026 00:27:42 +0900 Subject: [PATCH v3 2/5] gpu: nova-core: export Rust symbols for dependent modules Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260530-nova-exports-v3-2-1202aa339ef7@nvidia.com> References: <20260530-nova-exports-v3-0-1202aa339ef7@nvidia.com> In-Reply-To: <20260530-nova-exports-v3-0-1202aa339ef7@nvidia.com> To: Miguel Ojeda , Nathan Chancellor , Nicolas Schier , Miguel Ojeda , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , David Airlie , Simona Vetter Cc: John Hubbard , Alistair Popple , Timur Tabi , Zhi Wang , Eliot Courtney , linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, nova-gpu@lists.linux.dev, dri-devel@lists.freedesktop.org, Alexandre Courbot , Joel Fernandes X-Mailer: b4 0.15.2 X-ClientProxiedBy: TY4P301CA0038.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:2be::7) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) 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: CH2PR12MB3990:EE_|SA3PR12MB9159:EE_ X-MS-Office365-Filtering-Correlation-Id: 8372ecaa-e98d-4439-fe00-08debd96e538 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|366016|10070799003|22082099003|18002099003|921020|11063799006|56012099006; X-Microsoft-Antispam-Message-Info: rjN/TLFM04khOTdkNeTzJsdCJhnVhoGvfxfsZtPBIpMcQJ0Y2052FOmPmgyMNWPwhwH+OaLSn7gjTt0IjnlbnsEPAOQFHYcJVN6MIqgymwRWzz3KStH8Zx41JCasyjX5a4bTt22Xu1HYHTzl1ZZQBrcq9tXoAFdh3YjvB/S7AGPGMy6SJZfgjUJVokT5IYQtyA41g7BMj4xW4l4ct3Xjfzaz7klAPEqjgWzRE5DEQMgUJdBap27tB1087OAZBepAwJWFFRYHAYz+E9LUaca4aclRkc9ATlgCeNcT6BUA0OGk0+Q7VRn/DNDG/PTW3gKYpCf1Q+G/l8a7+ptiffwGvNNhKMH3efNNVcbvzZdfwIyeUoREICAjKWgDrS5y2ctGyuOdZ1+THy6UwtpZkqyIM50oDzAfckQa0tK4ZHyPPzLi3frZjhAelNYy+L0lXZR+kXdBqewlNcayQ48pWIXt8CgCwHA/I5Ra6o+Yl0+CGot4nPBkk61EEsJphajIjAR3hszwzAggDUDDTtBAiNNupAfdoJKVJJIWiV8asAMppHKgQO6Vb7lEG47O/iZlQSPY30u+dd8wGnl4A+G4OrQShqbDerkIQIQzrr8eZw20W/p33SjwavEqZDVrhyvPh2VqkoaMo/uM4/xo5kpUAZXmXlnflVAlCHth8AgWoH+hqpDjf3XWa0atRWlE3h01Py7KBQI6EeZKJmetmVFVelQQUG29dK/yRXVxDMAk9esXqbI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016)(10070799003)(22082099003)(18002099003)(921020)(11063799006)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?eXAzUUhDQ0ZnbnY0Q2gxSUdTMFNOZUNNT3hWbi93TDVTMCtHYi9tU3N4elA0?= =?utf-8?B?YndsOVk2TDNyUTZaRmJ5cm5FRFRISllpc3VWOTJ4R3FnaGVWTDdRNlVNWGp4?= =?utf-8?B?UzR2Rzg2dHI2NTdQUERyWlFTRnhSQ2xEcmNIaGwrWFlFSDVKcW5MaEVvUWRZ?= =?utf-8?B?VlhTZ0pHb3FlOXZjWFFMdFo4b1BXRGVva0dZeEV5elVQNVhtZi9lQWpaTWsx?= =?utf-8?B?Z2JtdFV1SVdBcHJYWXowK2thdDZEM2tSdmNGVk1LN3pEZU43Yy9YNmNJU0k4?= =?utf-8?B?ZThCVVRlL2t3L2FKQzNqRzJneW9xaFV1cG9lNlhTck1HamprMDlrQUZicDUr?= =?utf-8?B?TkI5Qmx2S2tJV0V4dlJIQk1nSlE4N2F0VzNxOTJ4cnNCS2J1bFZrUDRNU0cz?= =?utf-8?B?aTAvV3NiZDdPQTRmekhsT2thU2NmaUs0NVpQVWtMYXlBeVdDVGFRTVBKM3Aw?= =?utf-8?B?amZNdVl0aHZxUG0yUEJWeHpuWnhJVTR1dVdnb0lrZzh3Yk42RDRla214Y282?= =?utf-8?B?MGhkM2NvRzhySjl5T2ZJSXBzRjR0d28rbVJjL1FFTzJQOVBjNHEzQXM5TytD?= =?utf-8?B?U1o3TGpuWms2SlZvVmpvTngrbkh5d3RubC9ENTZ4S09TaXhUQjN5SjZwdm4w?= =?utf-8?B?c3pSU21kdGg4SVRkcWIzM2hiWWVjelQ3RURuV2loT2o3dUhaT09Fak9CbGhC?= =?utf-8?B?SlIyeEFpT3NkVUh5aHNiV0UxMEpBYXNXYUJIUGl5ZWxvNnp3cURWTTUvUmlH?= =?utf-8?B?U0cvTjcra2xVSWJvSFlCNjRUWE5jL1gyQ0dNMHErQ1NMVmlnRDVjUXFOeEpn?= =?utf-8?B?V3FsemY2cjlxTnBBcXEyZDk4STFZQ2FrSE1PMjRWUXVlcTY0dFo4OU83am5w?= =?utf-8?B?eFBiK3UvY3ZIVFdyNWFhNGVoWVBiUzVrRHBDVmR5SXU1RW1Wa3ZGdEJiU1p0?= =?utf-8?B?azF0L1pzUmdSTnNOYU1aV2Nxd3JCdDI2MmJUWG9xTkhYK0xZb0VITEhDdisy?= =?utf-8?B?OXJHcFRCTHdkanhlV1RSZkh5ZXZPOG14cUVnRVduT2c4L0tMSVJLUnZ4T3ly?= =?utf-8?B?UFRSeFFCZGtwZWJCblR6V0JxOENtK01QOEsyK3hWWjhPR2VWZ3U5ZnBNeUM2?= =?utf-8?B?RDBaWEtDdGhFc1poTXdqaFZQNUpWbHlDMmxTcmNNcUhaN1dpWE02dk81ckJz?= =?utf-8?B?U2VLcUlTOEgxTFpUTFl0MVp5d1VmR2JRWUdhU0hWdXcxMW9TSFlOTkZCQ094?= =?utf-8?B?dEloZDJ6WWVDVlpnZlUyQmNpMnF0M2FJc0R3S0RpeWxCT3JCeW1peHMrMzFF?= =?utf-8?B?M0pxSFZOOU1BT3gvc3grZGU0aHBHUmdURkVKKzhlUWtOZ1VHb0JzVEpWczRi?= =?utf-8?B?VUJxUGlFcHVDMUovTUtSOXh1R0thRVZQd2ZaY243dFRCMHRidEdUZWZod1h2?= =?utf-8?B?M3YrdDFPWldIeVhiNkQ0dmU4T2V4L0hWZlFnaUxHNjlwQzJlQmRFLzk3dHMr?= =?utf-8?B?SHNib0o5MStlalhEamhzZzBtMk1vZTdGSlZ0bzBHcTE0QitvbFdEeldLZmYy?= =?utf-8?B?R0dFcWw3Wm1JWmMyU3lZY1gybFZyVHBWVm9DSWpBYjJ3Wk1aNUpQajB0ajhZ?= =?utf-8?B?ZkRCQXlhejRhaUp6dFdaVFBTUkpVQnFhTFFiTVN1Vmt4T3VEMkNOYU9ObEpw?= =?utf-8?B?bElkZ3FrY2hKbUUvN0p1NjhpQUpBdU5IUU13OVhaYW40RW93U3FlcGpRQkIw?= =?utf-8?B?U0djclRkMWtaYUFHMXVRQ05XaEVpTWhwSDFObUw2b1J0bzRkQ1lJeTh4Z1pY?= =?utf-8?B?T1hQc2VrLzZEU3E4Nm5jQXpRUlRLSkNVa3VBWFNUWlo1Y2FzalN1OW5jcWJR?= =?utf-8?B?eGdnWm1HTEZuSnRpREoySXlhUGpyWDJ0TzljNVczOG9wUkNPR1JXZThjdmRv?= =?utf-8?B?dUkyOG1DZ2ttWGdxK0tvTTllUGVWU0RLYXJhV3VHbmx4SkN6eVhza2RheTg1?= =?utf-8?B?Q2ZLN2lVUVpFY3FnQlhnY2UyYWtId1ZOaFFUSzdRcDhNSnhhYmpjRThnTnVk?= =?utf-8?B?NzVvaXlydXFibVpXVHpvUkpoWmdoL00xajhvWHltUDlwLzV0VDM3SVhMS0dL?= =?utf-8?B?Qnd1NEh4SVdDd2ltL1F2MWdpZ0M2TGhrL3ZGNCttZi93T0hCbEFUTXlOeUF2?= =?utf-8?B?cW44dVczWEFlcDRJSnRTK0YwTS9YSUdBdVBDMmFLSldTSDRXYXN1eHpUL2NU?= =?utf-8?B?d1hrKytPelZpMTBEYW9EVk1hWXVycjNuczRZaFlCSndhVzJHdXEvUW9vcG5S?= =?utf-8?B?Tzk2OGhrT3pUcUhFVldXekcya2k0TVRZckJ3RGlqZ0xaS056bncrTi9lckQy?= =?utf-8?Q?JC9kTh+yBvSWNrcStvjIawzOc9hCjNLcx3cFi1gShO4Tl?= X-MS-Exchange-AntiSpam-MessageData-1: oWq590MG+tqXSA== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8372ecaa-e98d-4439-fe00-08debd96e538 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 May 2026 15:28:12.2911 (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: WDjAL38hkQZvvtbBg70xRoDqDUyaedaPtp+wiV4k/jR7kq0FojQUCKMfANW/t0hiTql4VrGMYmTrh81Nh6G6UQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB9159 Export `nova-core`'s Rust symbols so that other loadable modules, particularly `nova-drm`, can resolve references to `nova-core` at runtime. This is done by generating declarations and `EXPORT_SYMBOL_GPL()` calls for Rust global text symbols using `nm` and compiling them into the module as `nova_core_exports.o`. This is a workaround until the build system supports Rust cross-crate dependencies natively. Signed-off-by: Alexandre Courbot Reviewed-by: Joel Fernandes --- drivers/gpu/nova-core/Makefile | 24 +++++++++++++++++++++++- drivers/gpu/nova-core/nova_core_exports.c | 13 +++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/nova-core/Makefile b/drivers/gpu/nova-core/Makefile index 4ae544f808f4..59ac25488896 100644 --- a/drivers/gpu/nova-core/Makefile +++ b/drivers/gpu/nova-core/Makefile @@ -1,4 +1,26 @@ # SPDX-License-Identifier: GPL-2.0 =20 obj-$(CONFIG_NOVA_CORE) +=3D nova-core.o -nova-core-y :=3D nova_core.o +nova-core-y :=3D nova_core.o nova_core_exports.o + +# Export Rust symbols so dependent modules can use them at runtime. +# +# This is a workaround until the build system supports Rust cross-module +# dependencies natively. +# Kbuild uses Rust v0 mangling, whose symbols start with "_R". +rust_exports =3D \ + $(NM) -p --defined-only $(1) | \ + awk '$$2 =3D=3D "T" && $$3 ~ /^_R/ { \ + printf "extern void %s(void); EXPORT_SYMBOL_GPL(%s);\n", $$3, $$3 \ + }' + +define filechk_nova_core_exports + $(call rust_exports,$(obj)/nova_core.o) +endef + +$(obj)/exports_nova_core_generated.h: $(obj)/nova_core.o FORCE + $(call filechk,nova_core_exports) + +targets +=3D exports_nova_core_generated.h + +$(obj)/nova_core_exports.o: $(obj)/exports_nova_core_generated.h diff --git a/drivers/gpu/nova-core/nova_core_exports.c b/drivers/gpu/nova-c= ore/nova_core_exports.c new file mode 100644 index 000000000000..480472b039db --- /dev/null +++ b/drivers/gpu/nova-core/nova_core_exports.c @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: GPL-2.0 +// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIA= TES. All rights reserved. + +/* + * Exports Rust symbols from the `nova_core` crate for use by dependent mo= dules. + * + * This is a workaround until the build system supports Rust cross-module + * dependencies natively. + */ + +#include + +#include "exports_nova_core_generated.h" --=20 2.54.0 From nobody Mon Jun 8 11:01:52 2026 Received: from DM5PR21CU001.outbound.protection.outlook.com (mail-centralusazon11011057.outbound.protection.outlook.com [52.101.62.57]) (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 B2F713ED5A1; Fri, 29 May 2026 15:28:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.62.57 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780068503; cv=fail; b=UkB7QvjTpnlfl5AEE0mjbHPc1jLqv3Vpl4oZfHVpDS5QPXeoRUUXmUqoGYjeaDi0IOZ7e31khT6gGBXgA7VFAD6MViG5PbAdi1qMpbVjnGiwGmf6Vb0D0sFF3pLkR7ICQ5HSFWRWATRwFI7WHmDHmTpkqnyttvNH5eDoZ7VUZvs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780068503; c=relaxed/simple; bh=WnOrCqO+y8Oq2sTEztylH+iZ783CuhLvXnAvAJyhJDs=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=D3JyFz4L+DFXFHDGbLdcRMqzlAbgmZiCrfDinPQold2XenTFXvCgJ/ho6oqgFDoUUaZtYJ4hPxJLf2Ajl4Iv6Boa4VhTkyRuMpstmjUNXAirzYUfS6nxerY5g+sEKuLSliQBGHSsYRhFHAUnx2sTcAW1/DtFtX87cyJ9kzkJTcE= 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=pE2YcKiF; arc=fail smtp.client-ip=52.101.62.57 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="pE2YcKiF" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LDhHKmBGAioCmcuoc9GDJqg6qkmXlzcBjtvC+2lJz7lZaD1jSFIVdXyoN71MNH9dGFtafs8p6aKC9/EbyPbc97u1PXXBTxQlvUjQNYXCmFLk00d85Q9U5jbYLPC3+eHXhaw4WsvnwBselmjnkRgc8f2UyDnPbXEJMoQ8jNeh9h7z7UlFgEl3OPpNJMT4NGTJlQb/l80OzxYTVFHTFCSLlusEjtcSSVp5kxBDBpKgPDNgUGrjyczkFQB4Qpd3ofUfw7kWgz15vAWSagkAlcBXVzIVQ3MSCVx8YvR2cjPsdTwrWKtH6FCun6SO7Hgfpf4LSTtb0fkfKktiwO/m83ljtQ== 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=PAkkCBy2ZVoFSEz2etSYuD69CLmQ2/Nm7HHXy/jMqDk=; b=E7sK3dXEejmgBPuuM5hFVpe5y6mRx2+tt1MbCdZa3gdsoAGiVjuTC+gmeQqGZiXKWm3socMllS1g40bG3V74WM6nYcAnVp0QjSFNX9ApKYwUcHbFQwXndcExDvk9Fl3mjuye2C+yDbMJ5Acwmmzb+7EI0JgTU/x1GzhMr/PYu7DQuZHJmIhkDfAaRKvyhqBm2yKAubzb8nby9pC/k9oW1kYU8kdF2cLxsR+nltjgPAWG2WLkg35Eeys5cs5HhvgisCmFYQzp8Kw/LhpGyABvWWDevOWy6fpo9G/rcQvUzN68ropC0pGEeaEP23XsgBxqtZ+JGLpb/GXSIi9uqsyqKQ== 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=PAkkCBy2ZVoFSEz2etSYuD69CLmQ2/Nm7HHXy/jMqDk=; b=pE2YcKiFnBscI1L81vF70uAgTnT2c8xYW2rgzwQDMfTTmBrGsL/ta+QZxmCZo6Qf9AYye7EmNV6JOSZiOBQ3t31E3WX5axbRUjF0+dkN/tJrKCtSAFnnD8zdSEKPQ6uBlaJbHqgfaDJGumgc8IEJCmA36o+OMdIp3ELBpMBlIwMjVp7PwtEtqBaZxrVfhL4//mxMlH3bIcbEwrXsCs/98vibGIZN2TT54wEYsUlB273CZAMdOWxzgdYCBtRg3d6sdl6AQhXnY8fycQy/v4HgV8TL67MAOcg7zk8lQYqJx97EuXZxaN/IiL2SkkjWcscjdvgipK2TvrdVCg/mnnnK9A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by SA3PR12MB9159.namprd12.prod.outlook.com (2603:10b6:806:3a0::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.15; Fri, 29 May 2026 15:28:16 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::7de1:4fe5:8ead:5989]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::7de1:4fe5:8ead:5989%4]) with mapi id 15.21.0071.011; Fri, 29 May 2026 15:28:16 +0000 From: Alexandre Courbot Date: Sat, 30 May 2026 00:27:43 +0900 Subject: [PATCH v3 3/5] gpu: nova-core: emit Rust metadata for dependent modules Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260530-nova-exports-v3-3-1202aa339ef7@nvidia.com> References: <20260530-nova-exports-v3-0-1202aa339ef7@nvidia.com> In-Reply-To: <20260530-nova-exports-v3-0-1202aa339ef7@nvidia.com> To: Miguel Ojeda , Nathan Chancellor , Nicolas Schier , Miguel Ojeda , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , David Airlie , Simona Vetter Cc: John Hubbard , Alistair Popple , Timur Tabi , Zhi Wang , Eliot Courtney , linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, nova-gpu@lists.linux.dev, dri-devel@lists.freedesktop.org, Alexandre Courbot X-Mailer: b4 0.15.2 X-ClientProxiedBy: TYCPR01CA0198.jpnprd01.prod.outlook.com (2603:1096:405:7a::19) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) 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: CH2PR12MB3990:EE_|SA3PR12MB9159:EE_ X-MS-Office365-Filtering-Correlation-Id: 46ae31a8-804b-47f9-bfdb-08debd96e7a8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|366016|10070799003|22082099003|18002099003|921020|6133799003|11063799006|56012099006; X-Microsoft-Antispam-Message-Info: 8/LerZD7pVnr7JFZmnLN7F3awhMf/l4NmtKkSSZdyyWHDAoPIgE5HZeUVt2Tx10xmOgUrfjcE/YtLO6vspR6sN7PyNFTDlXxv1GIWlGtOnQS0IghMvbRK0F7yAQ+b1eEjFMireyAQJpcawuzSXMYZP79X/tJny9gSahpOvQLnbXov4fy+Y2eqEjnfXVPs4P+HgasdEUwLR3dvPhP/tWKvXRCJkD1PcmZ6RaM2/e41cFPLhAwYnSRO+3M7yu8xjLGOiQtwPuyJW7NQ75Q6QNWPxFcP17yDOfwRptrRKSWoW0GYPGo1v4kIwoba9v7d/GZJZUQVdBvaQxJHDi4grvUYSb0Hc9Rdnydhltf1EvPv79L0o0bP6zkFCfPo561/fKnD0s2UoIrcoov8S3sMzMfVzzBpwUhlOpR9AJMc5QVQZdMslifj+UDL/0Hhbo1nkE6hIlSr34+0WV7jx1Ht2L+nmGsip88Onhx9JNmzWJOMP1uvZ2gXHUxBRZXLlqBBuH+7md3m6oKILcjg0p5ZIju2zivUQY4PsoCywuCBtsCTOxZCSaiqdMQqcaNhMKJKNYUdp1aBm9FPmnambeQQWUII1Eos2eu+AQsZlTYnNSanim4mNtbwCQtG+mRifqCq2fYFplOikVry8nUJoqJw2sr8g82yQ8mMclna8HbnOt6h3CDbpnjfugbLIa4dL8sPSvoKDemw9tT7WsdbSaiU9c8+3KTu0JqtXORIBI5FF75kF0= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016)(10070799003)(22082099003)(18002099003)(921020)(6133799003)(11063799006)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TnNsOFRYekFVTjg4ZlpsUHBTWENKeVNjU2NOcUlqdUE1L3RHMGN0VVoxejRw?= =?utf-8?B?Y3RualJ3L1ZPWVlBdWdrbEJJUjVVVUR0bVJDck41YnVvY3VPcGQrMjVtQWdu?= =?utf-8?B?em1XcUw0NVhZWk5ESEYzQXNZZjBoMEpKVmRGbGYrTGFNMHh4OThaQm84V1Nq?= =?utf-8?B?aVFHVzJzVFlzcUtvaENpZEREVWw1MjdNREFvdjN6ZW1NanBOa0ZIZVdicjVu?= =?utf-8?B?VnVsR3dUVFY1M28vNkt2RFZsZUVROHhaRGRGc25pVmNRdU80SEx2eWtzcW51?= =?utf-8?B?WGEyWk9xMlNYb0w5NjVWS1MwNFhUY21HeXovT3JmcC9vK1orekh4anYrNVJp?= =?utf-8?B?NDhxWGhobDFyZHM0S283SWcwUEUxTnZ6QVB2QzhDMmprKzVUNzB4TFpvbURi?= =?utf-8?B?QTlYSSsxcnFGYlFoeFN1czNFZTlDOG44czVFT0hXMWx0SnNXK2RJTTUzK0Mr?= =?utf-8?B?ckVsMFNmTzhzWlUveVRKNTJITllnR05oN29zbUIzckhtSVlrY3FTR3JFN0xj?= =?utf-8?B?dlV4dllNLzM0bDhtRTFNL2tsa2JCTllXVGRiNlZyeXVxUlB6L2RuWG9TTzRR?= =?utf-8?B?aHpQd1V2WjVhSldERFUyTHJHR0JNdHBHRGI3MzNQTWpHT3FLOStndUtzeXhI?= =?utf-8?B?WFlqN29tdndyMTZUOEhNTlYvVEZ5S0lBSHp6VVlmcEwzV09tNmt3VzBiSGZO?= =?utf-8?B?RHhMUjloaTVObGdvQXBYcnhkeTh0R1FEVTloOFd2WVVhT0xIUGszUkpQajg1?= =?utf-8?B?eTFKVmZzeit1LzR3Q1p5Z285TkttQU5lTjIrVklBVXk1NzRKcGtzTlQvK09B?= =?utf-8?B?Y01NUm41eUg3S1FJaS85SFpHbkRWd0R6R0g2QjhwbDZxUktTSTFHdGNNNHFu?= =?utf-8?B?SDBnQjg4TlQ0QzhDKzZXQTRoRDc0TlNROVNiR0NxT21XWHZlMG9Yd2IvM04x?= =?utf-8?B?N0sxUWxib3FFUnFZL0h2V3B5UXpwbXRIWjEwYnAzTi9raVZlOVVXcFRyVDZq?= =?utf-8?B?MTBYVEE4b3FESm1LT1d3RTl6Y2VpcUJyZHM5LzU4NWtLM3N4TDZoellGd3NE?= =?utf-8?B?U3dXNTkvTDJoY2dpRjB6VnZLTFVXVlI3UGJGbld3T0loeElLV1dJNnZZNmNm?= =?utf-8?B?K3pYdGc0Sk9walRrZE5ZYXNGZGFrYmppR3RhVlNPclVsa24vQWNsWW5RNE1a?= =?utf-8?B?ZzlJSkJObTd1QU93bDY3ZVdYRE02MGpydVQxRzRsQUx2dmYrRlJ6T3gzU0Vl?= =?utf-8?B?dGh2VEFEdFVWdmNud3lVT2ZmZ1BsL1hrWU1Fbys3bStKUExldm9oK2dhWVc1?= =?utf-8?B?OGRPd2c2UFNyZ1lDdWFLZitnZk9xa0MzeGxYaEYzZW1CeXR0ZE1iSVB3bnNC?= =?utf-8?B?bFBkTGM2Q2w5b09ZOFhyOUZWRVhoZHpyVU5EQS9SamNJUGxicEh1M3pxNGRj?= =?utf-8?B?cTdweXJzMkdld2laenJ6cG9mdDJvT082eHJJRjVIMUVCODhJWThWSUE4aWxX?= =?utf-8?B?OG43T1crM0pMQTRLdFNLK2RSeWlWQkpUaUpsV1JETGNCZTJUNmVpVjdDTWli?= =?utf-8?B?ZFYxSCt0dHVuODUwQTFnbjhRTUx2dGk0YTkraVh3MDlZTWozYThmeGk1aWlW?= =?utf-8?B?K1Ntb2MxeHAzSEt3S0oxWVdDU1pxR1F6Nm9LSmhhMFR3ZnFTT0t2ZXZtUDFt?= =?utf-8?B?Q3A4ZkRFMDJwakZoMElEZ2lIOUo4cDRYMWxHNk1Pa1lZS1o4RHFmUUVGQlh4?= =?utf-8?B?eHRtTUUxR2pPS0g2S1NKN2dKckMwKy9iT0pFdHAxRXNOMERrS2ZGbUpUUnF3?= =?utf-8?B?cVNrcjZQK21odTJBbVhWUG1aT281MkppYmVtYWVNQ2VFemNCMGNPeHptVHk5?= =?utf-8?B?VkErWEtYOXRQMFdIYysxdm1aOXk2WkVKL0Y0ZDgyWjYrQitlWmdMRUFwRFdE?= =?utf-8?B?WjZaM01sUEtJQ0VnNnVIM2oycnpEUTRnU2daVHZFWlI4dW9XMGFHQlF6VDYx?= =?utf-8?B?VTFpeGJjd3Q3cUdzaXVFUzYxb2hnMlFGUmpHR2JpSjQyQUN1Ty9PMWY2KzIv?= =?utf-8?B?MkowWlpHSjFGek1XVndreU11MzNKVUt6bVhNVHhRRzJmc05wemZCYnlQb2tN?= =?utf-8?B?Z2xlWUpmMHJPdjVWVkZjaEdSSjFjTnB5TFkvMlIrYit0citEMkliZVBlWTl6?= =?utf-8?B?UHVZNHZtTUVnWncrNjZGaXhiMGY1S1BTeWhtanU3dFArdXVoMlBDZzZZTVU4?= =?utf-8?B?ejJvVmh0T3J0WDBhaU1EdWJjYVgzQ01zK2E0Q2lUcjYzOXBPZktwRklUd0xr?= =?utf-8?B?dXF6YUhuZzAzb0RPNmRiWkRGUHRhU2RLVmgwaE9FSnFkR2pDQXozS1NtTFQ1?= =?utf-8?Q?xwU+T0NNa2KDksNUODXVw5OKqLpnkrTELQ2/SgCsTyc6i?= X-MS-Exchange-AntiSpam-MessageData-1: vE76CvshvuEQCg== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 46ae31a8-804b-47f9-bfdb-08debd96e7a8 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 May 2026 15:28:16.4239 (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: gQFMxq7zgmTHTSwf2NYXDLc97dWFVG4FPltPM52B7BQE6+3P0sGZ7rjVpUjk8nrRLJl+PXCTstEdFnvPG471GA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB9159 Emit nova-core's `.rmeta` crate metadata so dependent Rust modules can resolve nova-core's types and functions via `--extern`. The metadata is exposed as an explicit Kbuild target instead of relying on an untracked side effect of the object build. This lets dependent modules ask for the metadata directly, including single-target builds where `nova-core`'s object may already be up to date. This is a workaround until the build system supports Rust cross-crate dependencies natively. Signed-off-by: Alexandre Courbot --- drivers/gpu/nova-core/Makefile | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/drivers/gpu/nova-core/Makefile b/drivers/gpu/nova-core/Makefile index 59ac25488896..b8ccea78b2d2 100644 --- a/drivers/gpu/nova-core/Makefile +++ b/drivers/gpu/nova-core/Makefile @@ -24,3 +24,27 @@ $(obj)/exports_nova_core_generated.h: $(obj)/nova_core.o= FORCE targets +=3D exports_nova_core_generated.h =20 $(obj)/nova_core_exports.o: $(obj)/exports_nova_core_generated.h + +# Dependent Rust drivers need `nova-core`'s crate metadata. +# Expose it as an explicit target so they can request it directly. +nova_core_rmeta :=3D libnova_core.rmeta +nova_core_rmeta_private :=3D .nova_core_rmeta/$(nova_core_rmeta) +targets +=3D $(nova_core_rmeta) $(nova_core_rmeta_private) + +# Build in a private directory to avoid racing with `nova_core.o` on rustc= 's +# intermediate object names during parallel builds. +quiet_cmd_rustc_rmeta_rs =3D RUSTC RMETA $@ + cmd_rustc_rmeta_rs =3D mkdir -p $(dir $@); \ + $(rust_common_cmd) --emit=3Dmetadata=3D$@ \ + --emit=3Dobj=3D$(basename $@).o $<; \ + rm -f $(basename $@).o + +$(obj)/$(nova_core_rmeta_private): private __modname :=3D nova-core +$(obj)/$(nova_core_rmeta_private): private part-of-builtin :=3D $(if $(fil= ter y,$(CONFIG_NOVA_CORE)),y) +$(obj)/$(nova_core_rmeta_private): private part-of-module :=3D $(if $(filt= er m,$(CONFIG_NOVA_CORE)),y) +$(obj)/$(nova_core_rmeta_private): $(obj)/nova_core.rs FORCE + +$(call if_changed_dep,rustc_rmeta_rs) + +# Keep the metadata available at a stable path for consumers. +$(obj)/$(nova_core_rmeta): $(obj)/$(nova_core_rmeta_private) FORCE + $(call if_changed,copy) --=20 2.54.0 From nobody Mon Jun 8 11:01:52 2026 Received: from PH8PR06CU001.outbound.protection.outlook.com (mail-westus3azon11012013.outbound.protection.outlook.com [40.107.209.13]) (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 65A1F3FF1A2; Fri, 29 May 2026 15:28:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.209.13 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780068508; cv=fail; b=S+SoYHLnVbIeFA32Vm7KR74dXNjpkDk8k+MvT9jLVt9pnPq0US6sawZv1m9kE/EYA3NXX+VLsEIet/q7745qgbdQQT5hK31eTD1omvA31pmYT/57vJaxwzE0d0PmaPxwE/V6Xvv72ZynfyRS4U1OieXpQI11ChgaunQBWx+3thc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780068508; c=relaxed/simple; bh=9bTL7TE5BShLw5YFA0rwfrxVUg5tykv2UiLShcpcF+U=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=A1lQNR2aajW4r+8ATRvpDOZeBA74DWibfB8xpC+9+hjj+/3wrrZe/R7yglukLZMBujenFj1UT8XsOCNAeBlKGhnXITRzcBWZaKNyA/ZOh+kxamwcfsVSlNsaRK9xSglzRrEj4Pb2EtZRCikIvnn93wqca1tKw3llGy/3uzsl/NE= 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=DDWuS3NL; arc=fail smtp.client-ip=40.107.209.13 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="DDWuS3NL" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=BsFIXw25zgjDkxYvnbC7CQnpH5K8dGNXAQSYlaywmbJWNwQSzdkOehG7PTzTj61JPPJJBnLNf3Jv0kneCWbM5U+CXHYgm4LmXtHsAJ7/JnOAkPmWBeQetE3P4uOI/bb+JnlZHYfu0j5SMdjGq/fWKGZ7LbPHIfoCSin33NRlC4ovWN1DfnEQU18nbPP4P8vL7RljgdiarZKGTn22PBQ20oMXRQb1DxLE1whRjnxrxZjh/qewSr6WAQC9awOCeqXy92IkDDX6iEbe7Pe334sScLMBmTDJg7HD+jmfLnl4PYDCt/FVd3Z/Q4Rf/aXDvJ7J362thuW2+Ilbc6Fl+N/pvQ== 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=aY1zNp8/qtaVZSIz1acsvdNw6cmp12DF2znjTV866m0=; b=Y/WmlWC1vMMB4V/QlKDwfvxGuRr++jWsQzRDmlQg4HuDQPHoKS5bSeLw5Bb5CrlmZqeVTftMDCms9D0wzXmQmT4hTiitLdHiJHZZLTfKZC/xkBm2kAdSpiWjB+3qU5MJ16zr8j0O+55t+9lK0GgFe2byz9uUCpAwc5YugwvBdASEqSD8cVPSQZBnjTIaeHrvJ13mBSm+B94fbZid5sHzQiP/zdFZRgwITlt5aVvawN8u3HJmD5hTZjlZsU0huLDcls7bwav1TIEPgAXpdJV0TXsoRo5jP6Bq3lPywHrP0CPVERKK1avmLTeYmFLOuqjhreF3x/KNLn79D2NDUbT62g== 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=aY1zNp8/qtaVZSIz1acsvdNw6cmp12DF2znjTV866m0=; b=DDWuS3NL2oU10rd6QwUnf5ZuNsXMObTFkJtHm9/a1WMgp6kkjveetPU5tV9uXhLIRIdW1xYM0BpMCK+ppjp5/61Ehav7LXZpDc6v0QK5CWqtwh5t+R4DnwjsS7TaYUNnGd+9+UFwdGYe8TjyeEbApFKbhXtO6jS322gw8jwxmQFDPMsgN/lGHcvaNfk9vboBTNJeOWH78uxwjYKEbu+E/18KR73rVoecaHnDdzQgnq7C55bit6JkJ3vYWZ3KeaaIBZJOjG2ZYgQODaP8NIXhOh5vXobpNo3l4ThJeKEOd1UG9chpGOyrkCbBrOcC8rVRBpPkESGiwOduJ3Ywh0sf0A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by SA3PR12MB9159.namprd12.prod.outlook.com (2603:10b6:806:3a0::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.15; Fri, 29 May 2026 15:28:20 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::7de1:4fe5:8ead:5989]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::7de1:4fe5:8ead:5989%4]) with mapi id 15.21.0071.011; Fri, 29 May 2026 15:28:20 +0000 From: Alexandre Courbot Date: Sat, 30 May 2026 00:27:44 +0900 Subject: [PATCH v3 4/5] gpu: drm: nova: build after nova-core metadata Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260530-nova-exports-v3-4-1202aa339ef7@nvidia.com> References: <20260530-nova-exports-v3-0-1202aa339ef7@nvidia.com> In-Reply-To: <20260530-nova-exports-v3-0-1202aa339ef7@nvidia.com> To: Miguel Ojeda , Nathan Chancellor , Nicolas Schier , Miguel Ojeda , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , David Airlie , Simona Vetter Cc: John Hubbard , Alistair Popple , Timur Tabi , Zhi Wang , Eliot Courtney , linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, nova-gpu@lists.linux.dev, dri-devel@lists.freedesktop.org, Alexandre Courbot X-Mailer: b4 0.15.2 X-ClientProxiedBy: TYCP286CA0099.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2b4::17) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) 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: CH2PR12MB3990:EE_|SA3PR12MB9159:EE_ X-MS-Office365-Filtering-Correlation-Id: 62d3a8db-9a28-4f1c-728c-08debd96e9fc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|366016|10070799003|22082099003|18002099003|921020|6133799003|11063799006|56012099006; X-Microsoft-Antispam-Message-Info: XG2zWWkjNyecS5G1HsWHEV0F9TJ2r/oYwZZgKgKEN7Ih9WprtDUPdnvmKNvyZs6B2/FzT8kiWNBi1CSL+WwCRRq9IeQrQaQtxwhsxcXoDlrqonNwZ/0LecapI9MGqAgJwePmAFgCS2ST/TAMfqpq5ZZzTgy7oVxxWrObRkW3Jl+twFSR5wCZuWs0+HjSGI35g0mIfc8c2cDk2ohKNAnMA4qahlGAlqOC4/bMv45B7NXKnUR5GZqH1yrpRnCZng2OH4D6BlAoXhkkiPScTbrRFpVnhKyCYSxdx0u+R2tPW3I0bBP33jl8brNwVOOSEtJCHkarbINylO5klR+Qa8Yk3VoWVl6jdSrdbfk/VTJo139Z76dShpvyjyyVjuDCYpgH5/SNzs3ULVsHO0FrJ9rrqhcnBoc/POn0uwfAIQxYjK++G/bSUD6V7DdBZPoIb5fE0EuHwekX4Lt8wvIQti9ttZk6ItCeUE0i+tpzuQvUVvF74rwFLCnsqHABn5efOeCadNSzETdNhEsx6BciEpQoMAeMx8IUMuRu8eqdHzuCcm299UU9OgvHyI+sjEYyWAxcz+q97wTJK58WmPRxiwjaRX7nBoo8M5nkgtQy1XDPfJPbv1CgWqfLCX+g39Tv0essWnQ2WCQ7eOE7YT23yrGz2VMgxNo/31Ftunm+dYeA/5mwU4aiATJRkjbTqPpcGb28EiFvgYeuaKEEWFkPDRBRmhvYm9c17BeKncPxqGBsFMs= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016)(10070799003)(22082099003)(18002099003)(921020)(6133799003)(11063799006)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?amZkZ3BXTTdKTjE5b3d6R2xBOVRYRUhVaWFndlBkT3dTYkRGZGlUdlIvTGt2?= =?utf-8?B?WEY3aUhGS29WNUFRR3p2ODY3b2tlMGNjcFlNVjRYSFFFR1FwdHYrMXB4VWU0?= =?utf-8?B?cytYS2tIOG55Y3FoejgrenhiUENwZEFtOW9zdFNNTEVZYzVEVm1OQTNILzhQ?= =?utf-8?B?TzRTU256cktmRDhqQkR3cUd4WjNxcHl0YUlVZHU2cWNPWWlVQ2NKZGk1SVFl?= =?utf-8?B?c0lwbnQ0Z0pweVpmNjVVOTN6czNBNENwNGxCbDJkWTdSU2huUTJGY3p0dzBi?= =?utf-8?B?cXVhNVFiQUxHdklBeXIrNWRYaDVGN0diTlN5S1dRRFVvM2ZxQjRoRm56YkFk?= =?utf-8?B?YWxZV2YvS1loUWRHM0RKbWtRdWNJYmhwaTl1cEJTN1BBblpwSitaUmpudGl4?= =?utf-8?B?T3R4cG1KTkJJaElhM2s0SHR2RWxQb1hpYzZ5c2I4STlhNTUxaTQzTjYyZWta?= =?utf-8?B?SWdscVBJSTd0b3ZnczUvbmNhTUFXcjhnUGREYldGT2s1WHRkTVk5RmZzU215?= =?utf-8?B?SVlIcExicHBkUGR3SEluMVpsYVRhM01OWk5WZGdGRVlQanFlTWZSS09VY1RD?= =?utf-8?B?MkNoUlNPTXYyeFlTKzUzbkd4RFB0dUs1Skg3Y1QxcjFSRTBCU1NZZU1RaWdy?= =?utf-8?B?OVVrbzMveTd0L0hpT1RTVVZsQTU3a0cybXNBeEk2cWRsdHRPNmZoRDdPdkt1?= =?utf-8?B?bVNaTTJYNVo0UVdoT1lMRDNYMVVISE1IMFlCb1ZmMlkrVEdEZGllN3VrYVlQ?= =?utf-8?B?Y05mUCtZcHczL0syZmlTaUZlSERva2pPLzFEeDU1Yms1U0xuemgzK2pEYk14?= =?utf-8?B?K0YxanlOYlVWUTNWYmNiSForSkFXbGtsYnlKQXVrVzl5ZGFONHpjRnFWRTJC?= =?utf-8?B?OXppOWM5d2EzTXdTV2p3VFpYRi9zekwzSlVWR01OWTRhSittaXIzQkVhS1Vi?= =?utf-8?B?MmhYcG1NVlYyK3h0VDdlL1MwSUovZnlnVXJveWErVkhURFNIZEkzRDdLeFF6?= =?utf-8?B?eTArUi9KNHNBVXp5WnNsbVE2UitQdlQzd1pqUmlCRGtCNXk1dFJ2L0h4RWdE?= =?utf-8?B?d3FFSHNlRWVVUzNpMFN3KzRVakNHa28vTWxuUlV2MXVpRHZPMFNpbDYrNmYw?= =?utf-8?B?akk5OU9vSFFGU21ZM1ZReWg3ZVZOK05waXNqOG1FaDRsNWxwTnFKZ1R5ZTdW?= =?utf-8?B?bEV5dHptNFdYZlpmcHZDV0o4cE50MXpNZUpiYk9hWDNHOFE3MnpDT2xNYVZ5?= =?utf-8?B?VEpiaW9va3cwTnVyWDROdFNUcDM0cDFwVmlpRXJVTVFZNmpTM1lRc201MVVD?= =?utf-8?B?b1Ewc29OOExwOHZKMzQ0Q3VoWEF5L0hUTTVtdHA0Z3lsQmRyTHVsaGZjdWNU?= =?utf-8?B?MnppeEhLU0pBRVJSb2xKYXA3ditqZno1ckM4a0pjNkM5dVN6SytBalljTnhH?= =?utf-8?B?RC9TTmlWVG4wVmRyTkF5STFnMUlmNnkvSXR3QkJNSjFzbTBkUEtFY2pFWUlO?= =?utf-8?B?REZDVTZLenZUODVpdEt6UG1LVUNDK2s2VzE1T0pQZjdmWVRjQ2Y3L09LRElq?= =?utf-8?B?ZVcrOUl1VVB2bVNsYWVURm5mWXhWeWJNeVgwVU5SZi9lSVJ6aGh6QUxMa1Bk?= =?utf-8?B?em44ajlqa1lkM3ErTjFNUmNKS0FpZFJQcWVLMklHL2xlOFN3U1hyNjFvcE14?= =?utf-8?B?aUN5WldJTi9qa09oSDFQZmtjZHRJYWllcEJaME9xNWF4WFUzcm9OZGo5N2kz?= =?utf-8?B?RXl6OWNZcnozRzZaL2gxZFpnaXBKWm51em1raVhGVnpuNWVBdXh6UTkvVmFh?= =?utf-8?B?YW9FZk1MckVLLzZjK2xONXplRCs5SU5PM3R2YjJPRlNBa2ZkRDJhVkwyR2Mz?= =?utf-8?B?cytLRkZGcVEzRW1aMERaQVFpMVhYTlZBa1VjOEs2NXQ3MHdiTjB2Um8xczFK?= =?utf-8?B?bmVxcjJIckdqV2k4bjNvcThKdUFIM0hja24wRTNmekprV0lFUnE2RFgzVFIy?= =?utf-8?B?TDZmY3h1NVZrVXVuVytMTnBIc2dJQkJMM0Z6Y0dZWnZEMW5VbFJYdTFCY1Qv?= =?utf-8?B?MzE5d0p6MTN6MHZJbHZSZWNLb2FGVUtKUFU3WlpCRzhobG1zVWlhRS9xcGdo?= =?utf-8?B?MWZ1MW11NXJZY3I2UWlPaDFZc2k5c2o3SUtSdm5vS0VrMXJ2RkJCbkVxZDRo?= =?utf-8?B?QnY3bkp5aDJhU0tCZXBSbWc3Zzk3cGIxVzNoamtHWDBWMU9TeWUyVTE5bENW?= =?utf-8?B?M2RyODB1eXQzc0hlRjhDdTRtZDRweDNYTVlzd3B2Sm1aanVUUDVrRkdvMkUv?= =?utf-8?B?TUpWRE9uUjVEYVd1b08yZk9xZ21Wb3I3TlZnUXB0aytya3pYUTl0MXgwbXJT?= =?utf-8?Q?5HzUjK5h97LCkg1IyLtTHrxZYNay4Kf8JutxcWwa6fTeP?= X-MS-Exchange-AntiSpam-MessageData-1: jOfs8UGzllUh8g== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 62d3a8db-9a28-4f1c-728c-08debd96e9fc X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 May 2026 15:28:20.3304 (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: bBRv6k+7SEZ5kYucqtM+sh+N6lFEJ9XnCpUkmLiaYEodQoGWbzprfdJtJxd8oSjqEdlePl1NQiTqFm3K5Hzqow== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB9159 Point rustc to `nova-core`'s `.rmeta` file so `nova-drm` can use `nova_core`'s types and functions at compile time. Signed-off-by: Alexandre Courbot --- drivers/gpu/drm/nova/Makefile | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/gpu/drm/nova/Makefile b/drivers/gpu/drm/nova/Makefile index f8527b2b7b4a..6ed4ccbfbcdc 100644 --- a/drivers/gpu/drm/nova/Makefile +++ b/drivers/gpu/drm/nova/Makefile @@ -2,3 +2,18 @@ =20 obj-$(CONFIG_DRM_NOVA) +=3D nova-drm.o nova-drm-y :=3D nova.o + +nova_core_rmeta :=3D drivers/gpu/nova-core/libnova_core.rmeta + +rustflags-y +=3D --extern nova_core=3D$(objtree)/$(nova_core_rmeta) + +# `nova-drm` imports `nova-core` at compile time, so request `nova-core`'s +# explicit metadata target before compiling nova.o. +$(obj)/nova.o: | $(objtree)/$(nova_core_rmeta) + +# Build `nova-core`'s metadata by invoking make. +# +# This is ugly but only temporary until the build system natively supports +# cross-crate dependencies. +$(objtree)/$(nova_core_rmeta): FORCE + $(Q)$(MAKE) $(build)=3Ddrivers/gpu/nova-core $(nova_core_rmeta) --=20 2.54.0 From nobody Mon Jun 8 11:01:52 2026 Received: from PH8PR06CU001.outbound.protection.outlook.com (mail-westus3azon11012013.outbound.protection.outlook.com [40.107.209.13]) (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 9EFB03FF890; Fri, 29 May 2026 15:28:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.209.13 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780068510; cv=fail; b=R425EYhNsq2s9ACFYwoj5Xb0VUtHvNFz6ChO4Y9aC8c0J+lQTEoP6KF4ov2m5w7yDXQDE33RmKp51mWTSWSA/ODONUh/d+55wOifPlstJEG3x0kpVQ78SWXutykAIrBg8THY42QF7BECUaJIkyKApsigScW7U5TMvc676oCvrFk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780068510; c=relaxed/simple; bh=0d8Fwg0j2Qu2n6x4OdcXBl6KwQodnvn87YipER9aLn8=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=eTCB+5cPr/2gs2UJiefne6x1+A0WlHxlIPf2Svb9ac87hZJBnHw/5z2px2cORtJ7Ya1IdqQCKvfyTtyU+L2Go0q5NWNU0Gs1zF4kCL644lYFu0GS3RcbG7JSfrzBi5PTgguZfwl2+ihWrjCBK4KfUUXm8gegYPIehbZuGipvvsk= 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=nLjz2dj2; arc=fail smtp.client-ip=40.107.209.13 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="nLjz2dj2" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=B2Er+hkCj10L2WCA9Ga5ufqrT+oRr4uCFzd31UAs5EWBJOGfVQk+zcfGa4UUCA6wIr7ck6luANvgW1UdHP8xP6yaUupscOCSGJOdmIKhLGOxmsvzmY8splpV7RcJ2MAlCJIDXCUyc+XvjvAXGq8AH0MhTkVLJp2NsRYNVCH47k3NDwXZfPUegkzY3OwSs761abX0QS6MM3oS6HdFuUWmUd9/K044e9j5VJMw1uFHB/hhSBlzBdDJBUfpaKvzfiS9zt/pJl8lmUyfFIFSENCusE53SQdJXkF/wc5KaN6aSCpP09SOxtXgqtfGNw1KSSsY1tXXVyfrrksSvn7UGJjIGw== 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=L56oQJIn5ZiiBi0M154+UAtXQy+z8psf15QLM/9UwbE=; b=OrKxqPxHJQmMTnjO2jiNMFbvw0TTXWWTl2l7Mz3saxFQ8aEY8TBb4IBT5rEu6Jt57LfGbQ7RXFVZ1OTO/bia3gfUmCP1cksjnFbgfvWTHrqxejHTMoOedEGrWLY8gQSKjKC4+5lStq+xmlOLB2X5jYFuTsGfn3nmR7+spzuKtTKnKsDOFIgw6dKhNyuPkeIzDj+hWLZNPqZ0OnDXgNC4YAD6GaPJ3Tb7iot0ktE8CNpTIItVyCJTkHlQviMqnNpxaR35KMls8339qehUarFeQ3e0PJZO0K3qUfhB/Y7hyNanWtFixro3Jv1v/lKf5uTSJwe+drW7MhPfdnL1vf0UCg== 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=L56oQJIn5ZiiBi0M154+UAtXQy+z8psf15QLM/9UwbE=; b=nLjz2dj23UCLsK8HjU/0+O1EympsI+6gfceNTvZj35dMwkA0ouVvo8b20t7VeozZpsrdu7pe0mIM1IiZZzcnz9Kf5ydREmhZy1XmoYON9z4ObsDHSaJ0zyC/Fn4HwEJfpK3C4ElXzAu3DlcaMN7KMdcUl8rHwFew9POwvYi/wjF8by2Xcv7YLRXFxNlN7bQ4Vw0rzgxd95O2qRImhHBgfMJDbwqJSSZ8CGPyymOkYG8rQb1hY0f5SYUM1BJM8NUk+purYOcMNVWm7+MJhCmunhGxzLJTuGUWqFtlKNKdJo9aafy3eyZKG/fsUkbLKaW7O1vcpsBPuc2pW/HampSlwQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by SA3PR12MB9159.namprd12.prod.outlook.com (2603:10b6:806:3a0::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.15; Fri, 29 May 2026 15:28:24 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::7de1:4fe5:8ead:5989]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::7de1:4fe5:8ead:5989%4]) with mapi id 15.21.0071.011; Fri, 29 May 2026 15:28:24 +0000 From: Alexandre Courbot Date: Sat, 30 May 2026 00:27:45 +0900 Subject: [PATCH POC v3 5/5] drm: nova: demonstrate interaction with nova-core Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260530-nova-exports-v3-5-1202aa339ef7@nvidia.com> References: <20260530-nova-exports-v3-0-1202aa339ef7@nvidia.com> In-Reply-To: <20260530-nova-exports-v3-0-1202aa339ef7@nvidia.com> To: Miguel Ojeda , Nathan Chancellor , Nicolas Schier , Miguel Ojeda , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , David Airlie , Simona Vetter Cc: John Hubbard , Alistair Popple , Timur Tabi , Zhi Wang , Eliot Courtney , linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, nova-gpu@lists.linux.dev, dri-devel@lists.freedesktop.org, Alexandre Courbot X-Mailer: b4 0.15.2 X-ClientProxiedBy: TYCP286CA0021.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:263::11) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) 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: CH2PR12MB3990:EE_|SA3PR12MB9159:EE_ X-MS-Office365-Filtering-Correlation-Id: 3488fdf2-ae02-4239-03a7-08debd96ec3a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|366016|10070799003|11062099010|7136999003|22082099003|18002099003|921020|6133799003|11063799006|56012099006; X-Microsoft-Antispam-Message-Info: hFvw/Hck/Ec25jw2sOYtbPmdxbvS9TOL/cGXEqiRznmeu0OoRSbJyQ071jUIbG+wR0Wmo7yav70Vay2dOgV0jgsZwtnhUDZpOh3hdLwBvKBSdoovhPFb5EdC6g5qB4hj4kvLtY9s8mVxmLSNIPJFRRqVFPrU+QV7amYxxgap6mSqJMB70I/1dWWMI/gx3ml3R4v1AbSKCMK89bdfYVFaB2BHKw620CPmb69ke1J/sWGqW3POgR/Aepuozs2I/PyAKHmmBNtGnNb/wq73AEMsits7A2kksqBoR9RTglNgMRoj3ZVEcBvxnGKXaUpUZYC6CGDvXFV8YwGfOA62yorrxcgXwHZP152tO4uTj9nc3F8+G0TaEknqIUbVFnyDvF3v3jQcwSsuG36qsCEHl5Xy6zxjBMwRonstwbLE8O8ZiXCcq5O32JRJ4uN4W9qL9Mwev7wnjxsLgQNVHKw1z/0dzVcrweEFm7RqQVfGHiAvCLUZx1gu8xz4Jqqry32XP1XF47wlIDZcBj6DjTDQr8jkMzCGXZk2LiegMooErWoIOU9iXgbSUYDoMp7JJyQxLQbbT0KA6H4tm7a5HBZXup1gwXIlACMCql7oWOMV1RcbW8eih1bJB1NtTL32FpAbImmjkKmbRMQakEBLN6K8dWJT8Z2TlcgRhrSQSSjzprYawInY9DzDBFORFoDAdTLHyo332VzwQTI2Lzy1LFqEygl3LguPpY5XiQHS404TyOz0xNk= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016)(10070799003)(11062099010)(7136999003)(22082099003)(18002099003)(921020)(6133799003)(11063799006)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NnllcWtZcTNrVkhvbWt6QVdGSXFXK2E2RXMydnRHcVl6SUV5ZVd1UjhyWi9U?= =?utf-8?B?RllHTnpRTU1FT0V1YU0yVCszYjluWGowN0U0NGxiNEQzVFFmSlpDN2s1VUFy?= =?utf-8?B?eXRmYW9Uenc4L3FBVTIwVE81cFdqdjlJMHloNWZSNXhPbmVtZnRQK0RXbS81?= =?utf-8?B?K3ZYQS92dUE0Nlh0bVdUY0VURVJXajBvRDNBTU1DeDBldnV4UlYxWGJYQlRS?= =?utf-8?B?ZFpiUkdPVDBTbkdsWnR3U1dYb1ZBWVQzWkhoUmJXVDZ1NE9TOGZoNTFCcm5R?= =?utf-8?B?NEZGVDN6ZWpKUEdJMjMxZ2QzU1ZCS3VpY2F3SDBqblV1L0xDeWhuVGdsWDho?= =?utf-8?B?VTl3UE5EeE9HRjNDKzlmZ29JVCt3ZStsaXliaFhZR1lQZmJVbm9LM3BOSVdK?= =?utf-8?B?VTZTdU9PVkJvbDBzUVQxY1RqZ3d3SEhSMXUxSXduSjc5MTJ3VmtHOVZCc1Vl?= =?utf-8?B?bGVNMm5ldUtQeW40dXFZR2RaSmRtYWRXVm1DZnlMdEpIU2tvVm9yRDhrOUNp?= =?utf-8?B?aHBSRmdubFpuYm1EdmQyVkViYms5NEtvL1RFV3dONHZlUFpOVVE4SGtDOXRU?= =?utf-8?B?SktFYWc2dUhnN1B0aEdkamRGMVd3NHNOMGs4WTlIUktpL0VPT1A0cXNsOTU2?= =?utf-8?B?SThZbU5TZldxcFpqRjFtZ25DSi9yZUZBdGVWT3hyQXZHeWM4T1RRaW8vZWpH?= =?utf-8?B?NDR1Snd5eTd0VERXOC9RQXFtVlhpNDRsTHBkRWVKOVE1UjNtdnBLbE5sOG85?= =?utf-8?B?SkErQ2tJTWV6bFNiSzJTaFpGbm5LWjNPcE45L0Z1QlVQZ05OYzVaOUNJU2Z4?= =?utf-8?B?aDE5M2ErYVhON0xKSXdEdmprUWdqc3BjeUpNTWJEcXN2ZytkN1VqMEhzWFVs?= =?utf-8?B?QXowSWVCeGZkT29saGc2RzQ1Q2dKL2xXS3dtSGhncHo0T3FnbVRCTTRrTzdD?= =?utf-8?B?b0RFMVRQaUxlVXZqM2RLeGFob0M3enEyQlZnZkY3MXVTZE5JVEwyL2ZGR3Vq?= =?utf-8?B?NEZnbk1Zc0FEUXE3T1ZJdzc5QlF1WWp6MzFWYUpWOFpRODJTVnRCM3hYUWgv?= =?utf-8?B?ZW96cVAvVlduRWd1RWhDeGl3a2Vhd1FVRlBENzU2WklYV0l4b0RHRGg2blJS?= =?utf-8?B?VHhaSkorMmQ2MUcxOVFxYktwN3E3Nml0WFJraVVsZzdXOTJvME5tZTBKOUNY?= =?utf-8?B?T05mSHBTQ0NTcnUvTUM1T2pEMTN4VVo2eENSMzBUQTF2WWMza0pGY3R1aVQz?= =?utf-8?B?eExmMGxEazQ2UWgydVpvbUJkWFlndUlVQTUvWlpLWHlVVzJLdmRKTkRkenE1?= =?utf-8?B?aWxjY2VkbFl0cG11VWpQdnFKaFduT1dnQzkxa0w3VlY4VVpTZ2JUT3B3VXlO?= =?utf-8?B?MzVucE1rMnZzdGNrbXdnVW5GcjhEeUhLcWVkTGpvb1lySG13TVU0QzhwczRU?= =?utf-8?B?RFRlY1FvUWIybWY5SU5IdnlMRWZWS0E4eVJCU0NQbHZpZkE1b2hrUWJBYjJs?= =?utf-8?B?aGU4YWJBejREVFZ2ZGFESXM4dmZ1T1JKVnh0Rnc4eVlncG56QzdIeitERTJB?= =?utf-8?B?KzBTS2Q2K25tTFh5U0RBemlUQUFWNlQzM0FOc2tjTXB4RkxGMVErcitjcURC?= =?utf-8?B?aEZEZGhmN1pZMWdmVVZ0UXQzTU5CUHhYek9YRmlnMFNWeHB4ZGNzMm00UHRJ?= =?utf-8?B?aGtDVEJiNjZIMFZHaVZFV295MHBVRURVYW5GUlNPNlArcXE4eGNib3BhZlVQ?= =?utf-8?B?NVJmZzlVQzdYM21uZVFJN0JnM2FPc0Z1M2RRdUYzWURyMzVUVzVwalJyeVJQ?= =?utf-8?B?Z1B0b0JjLzZtN1F2cU53dDl2eUJCY0E2QzY1bllzOW5VVDRRM0hOL3lkT1NI?= =?utf-8?B?SlRlSkhMTzQwZjFGTEQxcGZMSjdBeWdpKzFUdXc2OEFUdTlnMGFoVEwxTTNw?= =?utf-8?B?aXBrcjZpeWt4L0NXOHV6czlDTG5ValpGRWVsVk5TSUZ2amIyRDJsSUhqY1I0?= =?utf-8?B?L0hDQkIxUmNpa3FIcUFLY2VCL05KMFZkUElhZ3hyZTJDbVpaa0M0TkZpREk1?= =?utf-8?B?UzZKU2RFeTB2M0R1bHI0UlFBekltV09xbEZXSkdWek1iL3lCdkdNZlRTUldW?= =?utf-8?B?SzJ5ZGxyMjc1cG1iQmt6QkROK1lTbUdZeG0rV3kvN1FmYk5VNE9GUFE0TGFS?= =?utf-8?B?bGE0Q25IT2xoRVZhRTdnczRNd0xwREhHWHVRSXFCL0lxTDk2RERNWnFnbGdQ?= =?utf-8?B?b1FhUGtIYUg4UThGNUFtMFU4QktNT1lBcHZRR2hWeHFIY3AwUFdHSnhDSXNW?= =?utf-8?B?UW1tMTlkNW1UVUNzY0V3NlhuZThLb0oxTGZKMk5XMWU3UCtrdnZMVmpORmNj?= =?utf-8?Q?hup1vFf5c1u57rDhM8NySMz6urqXFqrjyBawiqeVze9vQ?= X-MS-Exchange-AntiSpam-MessageData-1: ZFCt8a+Ld+SqVw== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3488fdf2-ae02-4239-03a7-08debd96ec3a X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 May 2026 15:28:24.0445 (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: WL2U0mjmSnR++tAw0Hky9umRp4BK/c+2UAzTWsOJYOzjxrTcIOFPpG17QMFWuK7aYe/J1XvnR9c4x9giGm0ZvQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB9159 Export a few items from nova-core and use them from nova-drm in order to print the chipset of the GPU being probed. Some documentation items are added to make Clippy happy. This is only meant for demonstration purposes, and won't be merged. Signed-off-by: Alexandre Courbot --- drivers/gpu/drm/nova/driver.rs | 9 +++++- drivers/gpu/nova-core/driver.rs | 59 +++++++++++++++++++++++++++++-----= ---- drivers/gpu/nova-core/gpu.rs | 9 ++++-- drivers/gpu/nova-core/nova_core.rs | 4 +-- 4 files changed, 61 insertions(+), 20 deletions(-) diff --git a/drivers/gpu/drm/nova/driver.rs b/drivers/gpu/drm/nova/driver.rs index 4289df7de01c..2a3f47974079 100644 --- a/drivers/gpu/drm/nova/driver.rs +++ b/drivers/gpu/drm/nova/driver.rs @@ -9,12 +9,15 @@ ioctl, // }, prelude::*, - sync::aref::ARef, // + sync::aref::ARef, + types::ForLt, // }; =20 use crate::file::File; use crate::gem::NovaObject; =20 +use nova_core::driver::AuxData; + pub(crate) struct NovaDriver; =20 pub(crate) struct Nova { @@ -60,6 +63,10 @@ fn probe<'bound>( adev: &'bound auxiliary::Device>, _info: &'bound Self::IdInfo, ) -> impl PinInit, Error> + 'bound { + let aux_data =3D adev.registration_data::)>()?; + + pr_info!("Chipset from nova-core: {}\n", aux_data.chipset()); + let data =3D try_pin_init!(NovaData { adev: adev.into() }); =20 let drm =3D drm::Device::::new(adev.as_ref(), data)?; diff --git a/drivers/gpu/nova-core/driver.rs b/drivers/gpu/nova-core/driver= .rs index cff5034c2dcd..95fb4d13e676 100644 --- a/drivers/gpu/nova-core/driver.rs +++ b/drivers/gpu/nova-core/driver.rs @@ -1,5 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 =20 +//! Main driver module. + use kernel::{ auxiliary, device::Core, @@ -20,18 +22,36 @@ types::ForLt, }; =20 -use crate::gpu::Gpu; +use crate::gpu::{ + Chipset, + Gpu, // +}; =20 /// Counter for generating unique auxiliary device IDs. static AUXILIARY_ID_COUNTER: Atomic =3D Atomic::new(0); =20 +/// Data passed to the auxiliary device registration, for the sibling driv= er to use. +pub struct AuxData<'bound> { + gpu: &'bound Gpu<'bound>, +} + +impl AuxData<'_> { + /// Returns the chipset of this GPU. + pub fn chipset(&self) -> Chipset { + self.gpu.spec.chipset + } +} + +/// Driver-associated data. #[pin_data] -pub(crate) struct NovaCore<'bound> { +pub struct NovaCore<'bound> { + // Fields are dropped in declaration order: unregister the auxiliary d= evice before dropping + // `gpu`, and drop `gpu` before `bar` because `AuxData` borrows `gpu` = and `Gpu` borrows `bar`. + #[allow(clippy::type_complexity)] + _reg: auxiliary::Registration<'bound, ForLt!(AuxData<'_>)>, #[pin] pub(crate) gpu: Gpu<'bound>, bar: pci::Bar<'bound, BAR0_SIZE>, - #[allow(clippy::type_complexity)] - _reg: auxiliary::Registration<'bound, ForLt!(())>, } =20 pub(crate) struct NovaCoreDriver; @@ -93,7 +113,7 @@ fn probe<'bound>( // other threads of execution. unsafe { pdev.dma_set_mask_and_coherent(DmaMask::new::())? }; =20 - Ok(try_pin_init!(NovaCore { + Ok(try_pin_init!(&this in NovaCore { bar: pdev.iomap_region_sized::(0, c"nova-core/b= ar0")?, // TODO: Use `&bar` self-referential pin-init syntax once = available. // @@ -101,15 +121,26 @@ fn probe<'bound>( // (`try_pin_init!()` initializes fields in declaration or= der), lives at a pinned // stable address, and is dropped after `gpu` (struct fiel= d drop order). gpu <- Gpu::new(pdev, unsafe { &*core::ptr::from_ref(bar) = }), - _reg: auxiliary::Registration::new( - pdev.as_ref(), - c"nova-drm", - // TODO[XARR]: Use XArray or perhaps IDA for proper ID= allocation/recycling. For - // now, use a simple atomic counter that never recycle= s IDs. - AUXILIARY_ID_COUNTER.fetch_add(1, Relaxed), - crate::MODULE_NAME, - (), - )?, + // SAFETY: `NovaCore` is dropped when the device is unboun= d; i.e. `mem::forget()` is + // never called on it. + _reg: unsafe { + auxiliary::Registration::new_with_lt( + pdev.as_ref(), + c"nova-drm", + // TODO[XARR]: Use XArray or perhaps IDA for prope= r ID allocation/recycling. + // For now, use a simple atomic counter that never= recycles IDs. + AUXILIARY_ID_COUNTER.fetch_add(1, Relaxed), + crate::MODULE_NAME, + AuxData { + // TODO: Use `&gpu` self-referential pin-init = syntax once available. + // + // SAFETY: `this.gpu` is initialized before th= is expression is + // evaluated, lives at a pinned stable address= , and is dropped after + // `_reg` (struct field drop order). + gpu: &*core::ptr::from_ref(&this.as_ref().gpu), + }, + )? + }, })) }) } diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs index cf134cab49cd..5636659f24a8 100644 --- a/drivers/gpu/nova-core/gpu.rs +++ b/drivers/gpu/nova-core/gpu.rs @@ -1,5 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 =20 +//! Core types for the driver. + use kernel::{ device, fmt, @@ -29,7 +31,8 @@ macro_rules! define_chipset { { /// Enum representation of the GPU chipset. #[derive(fmt::Debug, Copy, Clone, PartialOrd, Ord, PartialEq, Eq)] - pub(crate) enum Chipset { + #[allow(missing_docs)] + pub enum Chipset { $($variant =3D $value),*, } =20 @@ -183,7 +186,7 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Resul= t { /// Structure holding a basic description of the GPU: `Chipset` and `Revis= ion`. #[derive(Clone, Copy)] pub(crate) struct Spec { - chipset: Chipset, + pub(crate) chipset: Chipset, revision: Revision, } =20 @@ -245,7 +248,7 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Resul= t { /// Structure holding the resources required to operate the GPU. #[pin_data] pub(crate) struct Gpu<'gpu> { - spec: Spec, + pub(crate) spec: Spec, /// MMIO mapping of PCI BAR 0. bar: &'gpu Bar0, /// System memory page required for flushing all pending GPU-side memo= ry writes done through diff --git a/drivers/gpu/nova-core/nova_core.rs b/drivers/gpu/nova-core/nov= a_core.rs index 5a260062295f..5166e10ce8a0 100644 --- a/drivers/gpu/nova-core/nova_core.rs +++ b/drivers/gpu/nova-core/nova_core.rs @@ -13,11 +13,11 @@ #[macro_use] mod bitfield; =20 -mod driver; +pub mod driver; mod falcon; mod fb; mod firmware; -mod gpu; +pub mod gpu; mod gsp; #[macro_use] mod num; --=20 2.54.0