From nobody Tue Jun 16 20:36:34 2026 Received: from DM1PR04CU001.outbound.protection.outlook.com (mail-centralusazon11010020.outbound.protection.outlook.com [52.101.61.20]) (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 4086337F748; Tue, 21 Apr 2026 06:16:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.61.20 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776752185; cv=fail; b=m0Ab+AzJ5qlpc0A2DP3OGVl9EhFyrDkb7E7Ybe4svLzK5YemhnRk61pP6jYejQbJw5h4Z+S+SFxK9v3sha73kbStuv92SevxERpszK7HfvUSsPk7iu9Mw9ZKLyy20oy7RXWf57NCMmglMZDikG2VpOhsJSH4FWjSvj6p4aB1djc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776752185; c=relaxed/simple; bh=GHK4iM5gBBaTAl2rUeKtQ0IC2WT33bAe1W8rTTN9zcM=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=m7aoyCj866lm5pbmCGljSIGteLuiX4Yy7i5tWJbuJogAYtyDqJm8KCpvzipCytffAAOD4Bt0yqu9UoCoSNiJxJx/KfsdH0jzXgkIfMOU5dBbGYjml+HNpT2JlMnAbNzIgDpkEmvhqKgs7G/XlQ8FmrVayvBpUq1a1hhchDmIRxw= 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=SuSTY2Sa; arc=fail smtp.client-ip=52.101.61.20 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="SuSTY2Sa" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vRS2Nbyfd49WYJEXDJ7GOwFK4Gt2R7qu5RYZvFeXGcwpx/PV32706lK8N9xT6ShQTh0jpYuv3cwi71fKTGbH+Y0Im5lytc+T1OXk4OL8b4r8QG90iYCaYUIk24rFn841VlAaPnS1oYZzozx8JIg1TloQvN+nLL3FA7Mibl1XC8irI8nRnzNVXGKDD5+PmmvtmND3zglVLoakmU5z/0uQT77rBAuncocB5fKuxhz21YDV+t0rAac6Eon9u4+n1ucvFGpk8TPDqxzJWudSPrZ988nDdIeScJtnkxTz+ZvzzntDm3cDV11EnG9lH+0N5kkBNPKAoJFIrcWFOGn2PvElzg== 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=zgShyfgo098bQ9tJx/o2dExcu4BIrahVGCdHSGqskEw=; b=tkXNnfmd7Ke3+WYcKEievKHgGgzlWtHs8+OZCNK4XN+80hqoTDNkTGin5h5cnqkKI7u+yawGtqCRQXxUp6ZBce9Aiw6ZYJL4WHODa/BvdCMCmIUZrKtswCgkp3mTKBTnYhTDHJPZXTtmEvMLoaD0ubd2wd/MVRsEz5w+aswN86NPixqbfardF5NkKJW7Ufb+5lKn4Bgv6Kym0bpNTksgo9aDzWK3zzlLUrJWr8kOPmsN0rmTGAQVx82+3UgODg8VX9m0OQ9M5peAdLlDDpU9x+801+MhlZJDPuzgLoKH2vqrBNgHerPxXlWYQEhYp4t5U0xClWAy6Uwjcz7OtDIocg== 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=zgShyfgo098bQ9tJx/o2dExcu4BIrahVGCdHSGqskEw=; b=SuSTY2SalNLoelAoKfTtkIAz9KxMQVMeQrAl3LqMJziuqX5J9W2ddOucNM+gKH9THgvK/JbQoBNKzB+KtOb5K2OrbXtvyDITJpFbjeQIZDeac7Orj5CDmDQYAGVWOukFtT5eRr8fHOwPL6/cJ/wKmBl+cy5VCqatXWRQWkrR3WnpVafZXfOaiB1tDdTjmTaBMF32sg7j+8ZebSYJyHEzMYydCvaixZoz9h34qLdw7x1qjQFVNe8PLSRrwDisuyKTo96kgYKpjFbu5ZPzToULCysWLK4L9Lw5d1N3P3kZbQ88Ylfs7GMFZUlpf9hegxDhgF/zLRCNzR9juuwyTX5HNw== 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 CYYPR12MB8749.namprd12.prod.outlook.com (2603:10b6:930:c6::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.15; Tue, 21 Apr 2026 06:16:21 +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.20.9846.016; Tue, 21 Apr 2026 06:16:20 +0000 From: Alexandre Courbot Date: Tue, 21 Apr 2026 15:16:11 +0900 Subject: [PATCH v2 1/5] rust: add warn_on_err macro Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260421-nova-unload-v2-1-2fe54963af8b@nvidia.com> References: <20260421-nova-unload-v2-0-2fe54963af8b@nvidia.com> In-Reply-To: <20260421-nova-unload-v2-0-2fe54963af8b@nvidia.com> To: Danilo Krummrich , Alice Ryhl , David Airlie , Simona Vetter , Bjorn Helgaas , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Miguel Ojeda , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Trevor Gross , Boqun Feng Cc: John Hubbard , Alistair Popple , Joel Fernandes , Timur Tabi , Eliot Courtney , nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, rust-for-linux@vger.kernel.org, Alexandre Courbot X-Mailer: b4 0.15.2 X-ClientProxiedBy: OS0P286CA0006.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:9c::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_|CYYPR12MB8749:EE_ X-MS-Office365-Filtering-Correlation-Id: 0707a325-d58b-43d6-0828-08de9f6d8154 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|10070799003|366016|921020|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: j+Tqi1nS04ICHlrbOyPkFjucASMNr8rG8y5p+FnrzlfLL9+GhKidYsbAE/6LOsDzf2rHZvdWEhvm7Uyyt4mlhtS0nI06TXVlPWkBQx9q9I3f42uOvE9YeKsmKiKjmFDl912LJZZKHzd8kr42By3BMzIzPTzDl5VNbqJ1zLnmrCpSyXhC98ky1igWvmKZVHxEW9HvYXpcfyG/OMDhOSM9MQv/hC0pVAyoG5Mrx0liriTFa/bgSh/zhm5RVtT+3wxSQjpguocYV/BNqjSFeMIttRq8n3TRWPI33I5glaukY9t+eJhMDLC3sqDJKZaIn3iWgclQ79cVQFPwZSAtevkkI0Hdwwo5NHFx0iflcWdjWfR2KWMx+zYIu5Metjc/NM/T7XXfi1CHv1/vPE547rjc9qPwKUqpuJFXuBep2yhGibNFgj/kH4U///PPyI2xpD9YRm/LaSqUfsIloH1/LtUNSkQ+Gs74RHQ9+LyRBSu1joZvtAQ43IUzweqAcrvqBBZiDMeafbRevHE+KL/NPLMdk2TYu/2mOM2P6GNvS/GfdQmAGoG0gK9LTQhLsO0jy067GkOA4yJMmrYWzs3AkewlxtN8c1wtgZ3kKrDuTR7FnEAv6jkKfJvnCXgIN12CX7b3dl68e+4UeW2uRUAjruoL/VipgQ0nDTpazu6sEST0pijhmk4c657fSZwJ09EFzF98ipNk4PXsoipBPlXOnzD6vBgn5FtHQdTI3dtZP12QjweoHe4ecdOpW9CncJa/i2M9r74NYg9EUHOmeyf3Cor6Ig== 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)(10070799003)(366016)(921020)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?N3dLMW1ibDB0TWxPMEhrenQyTyt0L2thV2FtczAwUjZMUEpXRkM4NTVEUlVB?= =?utf-8?B?TUZKNVlJMmE0VE15S0wyVkZvNU1zYXY4M2hScDYyNmlPdjZpTC9CWmdrM1hX?= =?utf-8?B?WlFScHI3QmxCS2tQU3hsUXpuY1NrK2lsNVB3cDh0UE0rczdBUEgyTnl2bzlL?= =?utf-8?B?aHZ5b2pkMkJwOXVlMkN3Vk1RbU4yQXYyN1FIQ3draHZBbUgrTkJPSHZTNFRR?= =?utf-8?B?bHZpenl0REl6ek9kS005VjdkKzlvSnQ2UDF0dXJ2NWxWZDlUUUdBaWI0RE1h?= =?utf-8?B?dlppZEpVb004UlV2STk0aWR0L1RlSlJMMjVIUzBMUHQ1VXpTam80Q3pMM1lW?= =?utf-8?B?WFRsVGM0V2VsVkNJSXI4UkcrTUlzbDdGUlZEeklMMEhyNHQxY1MyVWY2OVln?= =?utf-8?B?UVlXaE5sWXZsUmk0K3ZDM0l2eGhJcEFHalZ2WmxSSVhJNFozNzVRYjl0VGth?= =?utf-8?B?VzZHb1A0L2N2VWJpazVlV2gxUm1TT2FPQ3RrWGMwYTMzSFppRHdiWm9ENjEr?= =?utf-8?B?NndnbS9ZK2oxZFdGME95NmxlWDdYcmhSajh6VmlGM2VkWG9vVkRnR0xKN3Zn?= =?utf-8?B?K2dxYVZqK1RQQmV2RzFpdWRBcTN0RkxKS2Z1cVc1NWJwK0xURHN0YjVVWitX?= =?utf-8?B?dDBmSysxN1lGOUpqamNIZEY4ekJyNnpqUndGdm5lSEhzcXJ6enZMMnlwWEtp?= =?utf-8?B?aXowNlJDakwrdkRiTzcwVGZFTEhiallVd0ZGS2xjWmhUMHNwdWx3eVZwdXdH?= =?utf-8?B?TUNoT0x3UXNNb0JIeDdXaTUremFIRFNoTzZhbzhlS3hzbWtFNDZ1V09BUk9a?= =?utf-8?B?RzI1SEVCTFdzaVJMZlBBSnBCUlFQZDVmWG90WlZGTkhxaTE1WmNIZDVkNmxN?= =?utf-8?B?bnRYNExZMFp5aTNlVXVYem5yK1psWUlSQWQ0TGhRcy9yMWdHZERadnk5WTRt?= =?utf-8?B?emlyR0Jrc2tUMmIxL3NPdndMNVYxMTB1NERERTNoQ1N5dXFKZHpKdUNlVWZM?= =?utf-8?B?WVhFUk5PUHhrSENuS1U1UFJsRDM0SDBMdGxRZE9WUkRmR1B1MkZjL1Z4TERm?= =?utf-8?B?Zlc4YzlYeGpnY2I3VVROL0pjOVNIUkRtM0p5aWEydVBOdGFOcTFaZHpxbHR0?= =?utf-8?B?SFJwaU55Tm85ZlZTRCtadjFqa0RLRnhaS1JCV2JWM0ovZlhLOUg5Qlhac2ds?= =?utf-8?B?MzJVZjlDd2JyR1RVMXlhYkE3YVpEQ1d5dW5TeDJDeVBjK1VBSEhXNXI0T3p6?= =?utf-8?B?dDY1TDAwOUlPRnNjR1NxSGNqaHdyNHorTEVVQSsyd2kzUzQ5bWo0NUdHMWVj?= =?utf-8?B?VGEwMVNYbDVGdjFZSDhQeE5lMW1UYWRtOHNZNTFwUGxvdnhVUFdiZGRJTEVI?= =?utf-8?B?L2w1bDh6Rmtqck5FbURKOEVDV2M1UzFTRTlRbFl1OVhCT2xrNXBLUldYZGVZ?= =?utf-8?B?RXdMR1I2OWlBSWRseTlUYjRqRGNWOVhURzRYRitmUTNPM1dSdmtoV3RwaEtB?= =?utf-8?B?TmxXcTYxNkZ2VnIvcWRYaHVCY01Cb1VrdG1LTE5OUCtIRmVKTWNyekFhU0hs?= =?utf-8?B?MlRWeEZKUUhWMHI4cjZiTDJtM3kxVXNna1BzTy9yM2JwTmNFeHRsRFJaN3pr?= =?utf-8?B?TVcvb0Jvd0ZNaDBZZDl4QXpUQUw0M05oQm9HU1VFTU1zNmQzYjZGTlFkQ2tQ?= =?utf-8?B?QnFaVUhkWjc2a1kxUkVvUUtWSnZoaDV6NmwxVGVuSUVzeGJtbTZ2dlNhbDZ4?= =?utf-8?B?QTFPYWJJMGtkQUI2N0FQenNUb3VPMCttcmJHcE5QaTVyY0FBdTBWU01rQ2Ni?= =?utf-8?B?anlvZU1maU1XbG8wWUdLNnA1NUxISG14ZjJrUVM1VEFXTm9QbXF5MUh0Y2pi?= =?utf-8?B?bEhYQzEwMDBYMDdhczVNQ3VIaW1NWVUzd3poUVhNYWxkdGZIay9jM2lXQ3lE?= =?utf-8?B?Z2FoVWdHUWJTNEhGbi9UVUdaRzVFcGc0ZkdTdmxvQTJIM0xSdTBadG84S3Zq?= =?utf-8?B?WGlWT1lacTJ5OUdqVFZ1SHBOQ0hocC9jWU1BOWo0bTVXdlBtM2k0amlqc1J4?= =?utf-8?B?amNMelQ5NG15bDZBVHFNaXJmY1dyZjZHWlNkZThVL0NNOGlFTGtwcWsrTUZL?= =?utf-8?B?M3dML3phdUg0T1lGeXI4Nk1sOC9UME5renUvNmJpalVGVGlZSE1aa1g1Z3g0?= =?utf-8?B?dmp2eFcyQklNSy81aG1WRC92RjgxT2F6UkpkL21uSWQwM1NueExxLy96bDVR?= =?utf-8?B?N21PT2g5VVRNRmhlVFdFMkVFVGk3QTk1TGJtQlkyVUozeE9JajRlaEdHbGJW?= =?utf-8?B?elZLZzVPWXRHWTc5K2V4UDMxcXZoSkY5SGowNlp1MGFZK0ROZ0xLa2pwQ3pL?= =?utf-8?Q?/cn0d+f3md3VkAZdwvDUbVtX+wHuAqv6EfaYV/Q/IA4qF?= X-MS-Exchange-AntiSpam-MessageData-1: XLCllXvPLkDfTA== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0707a325-d58b-43d6-0828-08de9f6d8154 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 06:16:20.5586 (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: V/ovRUOfImGV6EeFB5/eGnwdYvD5ZJJpKnNKUaRvITy13IjK5QZg1uyTUgMobGmmhfITkc4lacbVu5IzZ0u2kg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYYPR12MB8749 While we already have the `warn_on` macro, a common usage pattern in Rust is to check whether a `Result` is an error. Add a helper macro that allows this. Signed-off-by: Alexandre Courbot Reviewed-by: Eliot Courtney --- rust/kernel/bug.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/rust/kernel/bug.rs b/rust/kernel/bug.rs index ed943960f851..2fefc0aeef81 100644 --- a/rust/kernel/bug.rs +++ b/rust/kernel/bug.rs @@ -130,3 +130,13 @@ macro_rules! warn_on { cond }}; } + +/// Report a warning if `res` is an error and return it unmodified. +#[macro_export] +macro_rules! warn_on_err { + ($res:expr) =3D> {{ + let res =3D $res; + let _ =3D $crate::warn_on!(res.is_err()); + res + }}; +} --=20 2.53.0 From nobody Tue Jun 16 20:36:34 2026 Received: from CY3PR05CU001.outbound.protection.outlook.com (mail-westcentralusazon11013022.outbound.protection.outlook.com [40.93.201.22]) (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 4E36E223336; Tue, 21 Apr 2026 06:16:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.201.22 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776752189; cv=fail; b=e2VBL6DlcNBE/MGS7r6BREr+Cvzv0za4AxAxXGOt/1QQ7oHZ5tUIQ3hZF9/i9DJf2ma+IM0Ra+KT3BwSiPzyJmeYbkqAuDORSoTK5eA/gXGaPbumzO4z8gJEM7KvtWmOt4JsIwP7HaPW1mUN44EIbZaMEZc9BUSoIFMdBw3HViI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776752189; c=relaxed/simple; bh=Jj+IC2t/PZbeTCtMc6F5Wofmogp69pO2PC175yz6xX4=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=qr/fta5GOfN6wWfPMhc1f548Vs8yVl3+3lbySTJ+nlBxx5TIoXVBoPLa8hYRVaPp+4H8BafYYSV/mUBKfkxNRYb1RlCfwv8dKrHVwGju7nu/fH3cTZQHMn0IjLiB8T3C8F9j5jDij2qXIvtCXRVXpd2gMWD1AK+mzDxKMcmyUmg= 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=a622oRNz; arc=fail smtp.client-ip=40.93.201.22 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="a622oRNz" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=OLiDd83FtLPvc+KBtunYx4XrFYlijkgvMAYEIKJbw4Rb8z/EHFimm4xyybXBdTFhsMshot6eR0prXd2Qn+JGk4n2KrQxwWc9bGlg4sBUFwPxE6IpAYySoupTlSUGFnve9sN769Y7159BUAHp3wsDf7AmTRkDxjY5/q/KiYJ1Vtbg5WU/LBlkFKsMjiWFlZHrrpp4kAMh+AZEiw37YkTwkR3xYKzrLJIXAPrhseliCfdweCE6g/esA0wYCtLzu1pzpayJbhIFrbqpoY6sJ4qRwfvJ2eG2JI+ezzfm65u83EcNrLd0J5preVZcD3dCXGxe1ccwFYTUnEWaR6F3Rha6Rg== 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=kAzLwaziRXkvaxR8YooA4xbA/aXdhKtnWKSUvoKNonw=; b=yFyxF+G1Lq0LYWG493qFLgl/ykX+daftt1gcp62kpb+ogBv2ua0Z9InQNmIZdce3rBs2Den+1xiqDrkVhP4yFdwxXDEVE+Zrf/jUl0NkGxQd3WaV/WmlSKbMHtF8i0ipMRN6PPXMR1wRvCA+AUVLUD/oTR4D4+X7SHrY7aM+4bD54vilFXXb+5+WZtBcWBbKVy2Li18eYLynWj+vTjZpNrVUqgoDDxYaqSBufbk7zAbFFMmKN8YTS7lCOvatKVbvU8nJdk3erLN3+VkdKrqa3ydYe8hHzUK8Lfo7ajA30Xb8GazwZn3nwYg0/nZxYaBlcAGUmE/YoV21U8ybZkMOQw== 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=kAzLwaziRXkvaxR8YooA4xbA/aXdhKtnWKSUvoKNonw=; b=a622oRNznyG0HgiYsfu65sXUsIt6BVP+F4L60auVWTogiN7h1EQrcg7xUQFDdKQUaJ20y+1ROCFeZ6a9wkPYBDNBUos+0/zy6IhpGbv0VvUcjXDAobXIWg7Nzpf9wipMF9SLEvqrf5yIK8Cw/zB/cFuRzYtGYFRoEvkRb3ZGDRw3Dv+k4sa0ztO37hu945WsWFJca/apuJQMT+79fCaU07nyCkfz5NpYwxVPhtOZv5LfGrAUTD1AykDySUFSVCTwi9KvUCL3Ado93rcpTq2ZSKPOwLruiwfiay+Dzb6RvLTc2K8DZoggEPEqifNYvP7FBbrfoz48jhcp1Sahix2//g== 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 CYYPR12MB8749.namprd12.prod.outlook.com (2603:10b6:930:c6::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.15; Tue, 21 Apr 2026 06:16:25 +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.20.9846.016; Tue, 21 Apr 2026 06:16:25 +0000 From: Alexandre Courbot Date: Tue, 21 Apr 2026 15:16:12 +0900 Subject: [PATCH v2 2/5] gpu: nova-core: use warn_on_err macro Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260421-nova-unload-v2-2-2fe54963af8b@nvidia.com> References: <20260421-nova-unload-v2-0-2fe54963af8b@nvidia.com> In-Reply-To: <20260421-nova-unload-v2-0-2fe54963af8b@nvidia.com> To: Danilo Krummrich , Alice Ryhl , David Airlie , Simona Vetter , Bjorn Helgaas , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Miguel Ojeda , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Trevor Gross , Boqun Feng Cc: John Hubbard , Alistair Popple , Joel Fernandes , Timur Tabi , Eliot Courtney , nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, rust-for-linux@vger.kernel.org, Alexandre Courbot X-Mailer: b4 0.15.2 X-ClientProxiedBy: TY4P286CA0102.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:380::16) 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_|CYYPR12MB8749:EE_ X-MS-Office365-Filtering-Correlation-Id: cc2302ee-db66-49bf-c580-08de9f6d8412 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|10070799003|366016|921020|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 865ThFFxgAeFuB4pffWlcfTXFUqV/1fz7PIzfTfnAKiNDdmpEEhc42b47fWbRMigajfVK4xOiVzJfuyGUd68kE9eAHxmmRtZuPLsDgmGBlx4AVEriZ/baDe1Ckcbh/8oVcij5qPLCNzKsVmojCKU9niBm5JeHgrWyTkYXlazAdAPw/I8njqb2mv+zW0jzQjbiId0Eqhv9q35Sw8ueoloqvietRKLLfReILnKE8f6i/t9KVGGpM6/XVXDWOtA3GXR7ZJeVD/mqJiKOjdeHq5EEDk5FK5YnZKSzhYi32NwOHY7wPFrDGo61lhxnoGZ577lojSY7BNrDDg1pQ+8IiU65cEY1N12osDPxFrikVdpjz5oxXWKdjgml15A8gOSgVfAybnGt4JCYIxsdb4hAy+tEUEcgdRYgOml7Ti+U2iqq7rjTpoxB5RKoZO2rM++2N3gNGj+9kUS4+k5BaQRelkz8D+d1+TEJzryh9RtPKyJa1i9AGxUwmYWwuxNydXpLbfR3vrwpBTa3ptBW6+sYKEfA1PiTwVHzUZzlc8lBHctixmNsAcNU+SC7dRVDUdzkZCUO0zVCwbllL5bhoSEoJQQ92TKYjpS26ukpUZB509vmSoFgwoggY/NedHYzD50BMByVQFXHw27/33FkO2ccY17JmveXlbiad+hv1jJSbFTIpArY/dqDjBI/ye48yH245B0Fg5rtQPpX049bR74W8AgDQzMKNNN3ip+qJ0m3HMBkhm+YV4QslQF97HD4+INt/WbzeAWnnG7VMuOkNl75AYASg== 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)(10070799003)(366016)(921020)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WE9Xd0t6UzIrb3NnSVdVcDBJVFVjMjJyMUMxRFgxZHRmTWlRckxQazg1V2I1?= =?utf-8?B?VGpnMnQ2aW9lWFFOSmdxUkZ0cUlmYnZ5bDJxOHJwNzZ3UjZzUm51VWowYW9H?= =?utf-8?B?TEx3MlNqOU0vWGtILzZyM25VRUltcXJoNnB5TW5vTk9lNkRhYUZuMFU0T0Nj?= =?utf-8?B?aHllZTJ6dGR2Z3pvVXBTTzVZQXRPQUVDYlhqeDZuWm9XblBhTVFlWk5SaEtG?= =?utf-8?B?cWhJQnVDQXZQRXh0cDMzd3dONEl1NkJrVzBEZG1iNTc0Smt3Ykc0L2cxYXFP?= =?utf-8?B?UmM3WktIOEgwTElobzJFQm51OVlnbC92ajd0bDM3RVdoZjBCWUExUWg4NGgv?= =?utf-8?B?Rm1HYlM5ZmUxQitTYmdPNVRSZStwUFFoZjZqYTlnL2NDWXRjQ20zUTQxVVdi?= =?utf-8?B?RmxHSUE3SWswRHNvZmRCSmhtL3l1SW9IUVo3aFcxd2hUTUVENEdMMVVhTytl?= =?utf-8?B?eGFkcndLRHpIV2hESzEvd1BNcEdNZDRNa2EwM2daV1Z5bmNROVFuN3cwRHhQ?= =?utf-8?B?TGlLRVA1S2RiQjZxR3IzVmpITGZnSHhsSUJQTXVKWS9HVlRTQjNFYi9kRko4?= =?utf-8?B?U1dKN2V0azNndjYxM2Q2OEN0QTRxZ1Z3YThCTXhuZCtkbXVkNGZqVnhkQWlx?= =?utf-8?B?V3N5dVhLbDlnS2xZZHJqUkx2Um5lSzAxNHpOOXlFR1JCOGRBd2lNNmQyRVV5?= =?utf-8?B?U0hGbHdiMUYvSkZCRGQ2NEgrOGpjZUNvWjAvZ3g4NWxzNHV2RE1pYm44dUZI?= =?utf-8?B?aWdZWjlZOUVpUUZrNGNKekhkbHR3d0VDNEVGdHN3SjhSRjRzeUxWSlFOZ1Ax?= =?utf-8?B?SjMvcmtSWjN5TmtWTlN3NXA4aDg2bUVnbnV4ZlJzZTBsWUVad1doNWpGM29Q?= =?utf-8?B?cC9BeVAxYUNqSlh6Y1ViRTUvT3c2Q2NQRnVQUDJ0Um8rWHgzNmNpS2Z1T2Y0?= =?utf-8?B?cTJ6RTRNaEJNWXBrd1MxeDRjblQ3Y0FMeHhpMVVTclpobTh6WjFKREZmNU9L?= =?utf-8?B?dGlDc3lJYUJra2pNOEJRRkZuQlBnckptT1Rzd1FTem9mSjdrRnBpRDBjby9t?= =?utf-8?B?SENYTWNublllWEtMdzQrYkV0Z25RRlRoVk40QjgvbnkvdGxMMGNieHpqMEQw?= =?utf-8?B?SWMwdWp6OG9nK3lFWEdpQlM4ZldLSHV5VWs2bUNXZjVGRHFpM0pHL29zMTZz?= =?utf-8?B?R0hURDFsYUF1TmJ3N0t2SWkxT0luOVREUmlrZjFNT25wNkx4ZjEwODZ3ejVz?= =?utf-8?B?dTdGYzB4R1RBR2NITUlpWGhUQmIyV3k2TVV5dUt3bzVJaDJYenZzK1VLdzB0?= =?utf-8?B?ZC9Ua0w4bVFlQ1dVeUpXeG1VbXZBK2lLQis1TWJUU091RVhQQmRrdkN5L0sr?= =?utf-8?B?UTVYR3gwNE53aHRFQzZvZWRoL05Td1NmRjhrK3ZKcG1ET0JseSsrVGtkWHVo?= =?utf-8?B?NGxKMjl1U3NMZzFMRElEQjB1TXFEd1g3NFFrVjdMMGVlSWpvTmJ1UnZIZDZt?= =?utf-8?B?bTgvT3oxWWQrOWdyN0Q5Q0R3T0kxRVJmdmZ4WHkvalYzbDFhcGtyZFE1MTFU?= =?utf-8?B?bW9OYnBRRFI3c0Qwb0dmSE5nR3R4RzFSeld3K2pFY3VBZm9oQjBWNFp3ZlNa?= =?utf-8?B?SEExM3I2T3N5c2JHMDdiRjVBYjl0dGRBMW0zRTlsem5vSjdYS3pKMGVEeXRZ?= =?utf-8?B?blNPTWNlczdCcEsvOG5PQ1M4WWs2cnNWNkZ5Q1EyMUMvUzM2UzRpZnV5Y2FG?= =?utf-8?B?M1p3MzM5ZE5xZkFoUThhU0NZMWlndENxVHZLcVVLQ3Z0bHdHYlB4MnhaazhD?= =?utf-8?B?MVJsNEg5ZHJXVWFzNUVqbWJCaGpwVVo1M0VtS25jcDQwdGtSekorS0FsSmNY?= =?utf-8?B?OGE0c1NYazVRTVlzVWErTzhWNW9NYzF3dzMvalY5VllrMnZrd2JPTjFzWnlt?= =?utf-8?B?cnRpN2RocHpkY2p4Zlc5bGV1c3RwT1dZb2NlOHJOVXhlbUlBU1lLM0dldlBX?= =?utf-8?B?Qkp0U0UyT2xqbnBjWWRmTXo5STRIeW9admI2QTJ5MDhlOGlQZzdsL3MzUkNj?= =?utf-8?B?Q2h0K0k0cG96b2YycjJUV0RBNE4zZUlKeGN1dkFDRTVhejltblBuSU9vVTdX?= =?utf-8?B?UzJPWVdzeWpmY0NCcUpOc2ZuRVZLMkFWOXRsVXArTjVmSFNZV0lYOW5Lengr?= =?utf-8?B?Y3JPTHo1RWZzZ0ZydFVvZXMzY2NERDJwMXRYb3VqUnJ5ZGtxVDc1T0NaekJr?= =?utf-8?B?cGVJdDVEdzdWOC9xOFBKaC9XK0V6Mml6R3V1Rk51VXFlMndNbllwZGtHL1pU?= =?utf-8?B?a2ZndkZXUmZ2M0dITTFGL2wvS0gwcXFGRVNHU01BY1Jjc3dNN1duKzZLRXNW?= =?utf-8?Q?RRjZXJ76PxC5Dr6mDbySQEhgsPtViJxAcKHOLbDs4Gki0?= X-MS-Exchange-AntiSpam-MessageData-1: aGproGQ30nAB1A== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: cc2302ee-db66-49bf-c580-08de9f6d8412 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 06:16:25.0595 (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: 92nHmB+0vKlWj9xHgYhggdkWBZksSpJophkIOpFaWsUEtaOO3u3SH6HTbN1GnDOnXimZlREy434H2Xc8ZfiYkQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYYPR12MB8749 Use the warn_on_err macro in the unbind sequence, and refactor it to early-exit on the failure path as we will need to use the bar for other purposes. Signed-off-by: Alexandre Courbot Reviewed-by: Eliot Courtney --- drivers/gpu/nova-core/gpu.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs index 0f6fe9a1b955..1701c2600538 100644 --- a/drivers/gpu/nova-core/gpu.rs +++ b/drivers/gpu/nova-core/gpu.rs @@ -279,10 +279,10 @@ pub(crate) fn new<'a>( /// /// Note: This method must only be called from `Driver::unbind`. pub(crate) fn unbind(&self, dev: &device::Device) { - kernel::warn_on!(self - .bar - .access(dev) - .inspect(|bar| self.sysmem_flush.unregister(bar)) - .is_err()); + let Ok(bar) =3D kernel::warn_on_err!(self.bar.access(dev)) else { + return; + }; + + self.sysmem_flush.unregister(bar); } } --=20 2.53.0 From nobody Tue Jun 16 20:36:34 2026 Received: from PH7PR06CU001.outbound.protection.outlook.com (mail-westus3azon11010051.outbound.protection.outlook.com [52.101.201.51]) (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 77F3635E947; Tue, 21 Apr 2026 06:16:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.201.51 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776752193; cv=fail; b=tzEs6IzA64QofJ+FrjQbEBzigqG7CaG/mjzhEX1cm9nl4H2rQeH5cC7qGXr9U57Nx1+Wl5WkJa/Niv8Li3U0nHLSpqt2bw6Kvgg6YFj8OR8MuiE6oGx85vrCujHd/5dfYEAgL7SRt+ypZ+tfEExtvpjKEhYlBZm7rC4Bebxy1Rk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776752193; c=relaxed/simple; bh=T/8ZzJeoRy0uQIgxGJyrBqCuJ8SdDMS4wUtGgO4Fbe8=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Rq5LP5f6Nm0rvSW10n4QtM/sQmYPGUwf1t4nAIsRyL4taekVvFIGiPNM3YypP+olja2a8ZYDQtoSEsgJCjNV7qHPsvHFMUKnInNfeRNt1ztFAk30XfbNQtQiKjBQKwl7X80zGw1Tm30J6jjCm+wXFk/aNIMEc4EgH0Tkc1LAOe4= 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=chdytXPk; arc=fail smtp.client-ip=52.101.201.51 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="chdytXPk" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yGEuKXFumGC3Bkfmd+28wmhPsPnWDoL4bnjKVFNC4+YhmXcpieMq9scbA3DVYPZHEtQczTC/8+QSiunUgDZLCqTqd1FixziT31A/PU3SyFGuUgfsOyEcAUXxisWqsSQmAN1cOpEWiCFXDt3AEgi/KoYlGZRc0fSnAM+RQWi2thr6B9k6R1qnbDt5GrzGGwNCGnw2sPXYB9vMskdQ+o8xwxVnlmfsj1hpn2F47/c03yK5ZTvVEcyoYKtan9ZoHMCf+OZCH4LBaqXUAjvyYHWCUBOVaHnjYI1LwCK2TLYbjYMx4nJyr4VwcSAB4BVbuTkViMGLX+endwnZIBin7jD0Sg== 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=aej0PGHVgBDJBO7afDycLS+eCbeq7lFtVUn4AgBSJI4=; b=ysFvDCtMTIMxzWX2piKhVH3/LOvLVbNs6MKg37Hermxg04yH86S+y8BMiRIlK6TAY4EXfr6jlMYvd1gshD2eKPaf0nzzpHmv9ex57n45pcSti+jzBcowZ64navNnQR46NyWsAXCwYxARQD0ohZISh5VKLwBXg+Yvxa4sDuopbDwvEUyRkC238HJt+/PDOIR86OPMsfyGPx0UeVf31k/AvLKaRSLjzNwcgPy4J9n59eSPk/WXY6l66btP4Gnnn2bD9mz1ws+zys22SyPPBm4yAeOE39J3rJirKWH1e8JYyi8/TqiY+iGtxGO/bRHYpia/cCvVpBjq7s8Bt6FufH5dXA== 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=aej0PGHVgBDJBO7afDycLS+eCbeq7lFtVUn4AgBSJI4=; b=chdytXPkT/LrkIPENVjxBkD3eJzoLZ50r4ExAyd+h5aciUDRrclcoUJ2HTWWE2A74j+lV1u0NI1Z52tiwK+Vi2ncXy2kcQ3Ux1GPe8wM5mu+AHEreYtsBT27xAcJJrhLlzuWhgR4lSgTleY02kWsGm6DbbLWWAV581evpBxHZc29P8J+V4GX24B1G40iAEOdDfmQ8sSTa//8Ghq8vi8qQvSpu9UG49I1nZurCojj7cTgRraJ6y9VHoyw8Pnn1VfaZswx0wh23MfYTjKEIWlspKFFsXeRkGNLRoA2GRNU9MqWavpn5IiDllfL4iPXw0vBr83c2sao8RNCfm/08kVGuA== 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 CYYPR12MB8749.namprd12.prod.outlook.com (2603:10b6:930:c6::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.15; Tue, 21 Apr 2026 06:16:29 +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.20.9846.016; Tue, 21 Apr 2026 06:16:29 +0000 From: Alexandre Courbot Date: Tue, 21 Apr 2026 15:16:13 +0900 Subject: [PATCH v2 3/5] gpu: nova-core: do not import firmware commands into GSP command module Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260421-nova-unload-v2-3-2fe54963af8b@nvidia.com> References: <20260421-nova-unload-v2-0-2fe54963af8b@nvidia.com> In-Reply-To: <20260421-nova-unload-v2-0-2fe54963af8b@nvidia.com> To: Danilo Krummrich , Alice Ryhl , David Airlie , Simona Vetter , Bjorn Helgaas , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Miguel Ojeda , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Trevor Gross , Boqun Feng Cc: John Hubbard , Alistair Popple , Joel Fernandes , Timur Tabi , Eliot Courtney , nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, rust-for-linux@vger.kernel.org, Alexandre Courbot X-Mailer: b4 0.15.2 X-ClientProxiedBy: TYCP286CA0127.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2b6::9) 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_|CYYPR12MB8749:EE_ X-MS-Office365-Filtering-Correlation-Id: 90b8b458-a38e-495d-7b41-08de9f6d8640 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|10070799003|366016|921020|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 7aOFt33bhemAiW9MxuK8LTfd1SRLMqfDxvparlf/FANessjijawPfKvVSIVaDTAY5xhC8rrz7RvDZaR4yL2b6Zyn1wOrHKPuVRXOORUsRXWTN70AyTxPiuHHzKKekIIZKMKYjUU0neBG7sw+ux3YQoaNAHdC6XSY4fytT4OMpjBphDhb2g/933QoZGHPYDnzMCgWSDUAThoBaAounTa4PCmyEJIM+R8jDv8X2P3GsjjWTXjdb78NAy80xZ1OXAx/HXHdkCUaxVKIFBUv8BuK/o2oLTpO6LDLdmDjmsDG1xJou4SiLPOy8GTPe7ugE+V90Ev/SmWW0O4u56tFhpZtRehNO6ZdDCwowd04F976zQB2bDFLb+4Au3rbjtcB1CzgSJOE24cBvP+WaMp5X8In4FE04jLho1uBhZ4jp4bNMEantSEXwZzZRRMv5ygKr+9sZtTrswc4xnzXDF4h0IJdb7ZXFblT7BSAVKHcs/sZJdEtwnIBnahZPdSzdnk3rhzhp2fC6grY+K6WUkBpzbbpiVfUWCD2QiRK9C4YkZfMchCUOs47SuzQFlisLucQ4RpAiP3XRWdnIp3vzts1mwlIOP7L7sSVCmL04AeJryib3uhvZDeUHnIn4F9ZNFH7r2bR1Ryqkt85VpalrFVeFmKxentRwwQY2liPfa73TdeRr3UaIidUX9pt0dxL55uduhOsvkfT6flO0BtUubJSbi9rlyblDxf94ehtCdmAV50Z7FEXh1fwjFqPZGF8l6145ydwbN6Spb3NuUVPRxu835w1hw== 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)(10070799003)(366016)(921020)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bWdMdEU1N3hqOEZ5YVI3UjdmdXd0MlgycTZ1WUYvVHh1Nll4dFNFdXZGU2k5?= =?utf-8?B?elZmUUhOd2p5Tk9KdWREbHViaXlDc1ZtVzhlT21rS0NaUUo5cXFybXdkSGNL?= =?utf-8?B?VHplb3VkazczOW5ncUxIYkJCTzhyMDl2SzYyV1c5WGtIS2J5Ynh1MXlONmI1?= =?utf-8?B?MDhWN1FIakNEVVNYcXNVcVVTQTRUTEg3V2V0ZXQzSFJzcnBzM2ozd2RYNXJI?= =?utf-8?B?MGhpS0Y0WVBnSGlXKzZLeEtCL3ptcFdXL0x0QkcxNTFBbTVYVG9YTzFlMlBj?= =?utf-8?B?R1hwTnJSbVY3YnJFSm5TMkpvWE1mb1BGdUVYNlRMQkxPeXVuRXZibSt6MmNo?= =?utf-8?B?bHh1Q2hiTmZoYkZoMmRBWmxHdmlGN2c5bjdSbEVMMDBYZHpRd1dESTE2Uy9E?= =?utf-8?B?R05UVkx1ZG9tZXRWejgrTjltdjRVUVE5WllJak1yMmZkMW9pTmM3ZG9KdUd2?= =?utf-8?B?emNCRGphbldwK1BaY0VFVG1sbXVOSytHckdvYVZlTmRDWE1KU09MOXlYZXVh?= =?utf-8?B?WTlwYTU2MlJDbkpzd0w0RzdJc1BFYUxxSENYWDNXb2M5YjAwdHJoRlA4TWVZ?= =?utf-8?B?bXdVTUFTSU1aajJTeWtIUlFLOUFFRWZIdWlDM2M5MkpDamZuVit6OTVKb0hn?= =?utf-8?B?M0ZxOXFqOXRYSDJVODZuakNrbUsrUG5QNXhUczI4VG1zaCtzUDdVd3RMbGU3?= =?utf-8?B?QkdiN1dWaFh4RjBCSXc2UFVPOWNIRUxvOWx0RmJtNGdCajVHbGlMdXBpSWV3?= =?utf-8?B?UDRDcFlEc2lsOG15cnhadk9lRENROEN1K3ZSZlU2bmpzeHBBNzhab3RwZXU2?= =?utf-8?B?bDljdTJDSVFHc2xYY25VdEMvTWlhNmp5YjBXOTBnTCs5R1VSWFI0ZjJoME9L?= =?utf-8?B?YThOWWl3Wkt3Rm84Y3ZhSFc5ZjFIdjBVMHlaUjZ6U0lJaVd3MWVjNDhCRTRt?= =?utf-8?B?SEtBMWhFTDI3NGltd2pSZ1F5eG82bEt5Tm5lY0tTQ0FxaTlEeDdxUmh3WDNm?= =?utf-8?B?WTY2eWIwbS83UGxVaTVUYXA0b1VDSmY2eXJmcTErQzBlSWxsYzZ5WmhVdUl3?= =?utf-8?B?dzNsWWtoaDN5MUhsWVRjT0U1Tlh1ZC93Yk10N01wUUY3MENoTkZud3dCVE5o?= =?utf-8?B?TzlDQ3VUdmNKS3hZSndINTdVbVU2ZEw3aHNNVEptNnFZQUFpbWdiL1YvNE1Q?= =?utf-8?B?Tmx2VFlpb29iWisvSzhIMUtucytnd1hLdDZwUnZNczlUSGhsU0wvUWt4TWxr?= =?utf-8?B?OVBrODJQb3g0S0d0TzhDaklaZUcyWWpYQTFHNFFpck9vUWlVR0ErNnJ6YkRi?= =?utf-8?B?Q2tJMDdWZElnWXc1d2FXc2psbVdYakgrdmZjZjZvMmpzZWo1MHNQYVUzTlRq?= =?utf-8?B?aXR5VnFMTTFZMGI0SWtFYmZUaEMyTVBOWjJVRHZQTE95MjlJWnNiQUhHd1cy?= =?utf-8?B?UUc0clBSVzhacVFaWlFhR0tiWEZ0WU93TmpPWkQwQ0NIZFNpUHYrR3V2Ylht?= =?utf-8?B?M1NwdlE5cjAvTm1hNmpWc0JuRm1xMXlGeDZObUVJZnR1M2taU1ZSMzVqU2pm?= =?utf-8?B?OVlDSCtsdjFSMFRjZ0RGM0NtcTNaUmZiSTJydjdDb3ptR1NoZUE2MERMcWwv?= =?utf-8?B?V2dNMzdHQ2FxMklBRkdLNWFvZnFIM2pzc09UdGh2OVBCTldYb3h2SHh3Skd6?= =?utf-8?B?V0JGTENFR3A1aHFvcm5FaXpxL2lmbjc1anZlNjJJRW9xbFA0MkdZNzJmNnZu?= =?utf-8?B?UWRBaVluQSs1K3hYVnprVkw4MjFzYUdzOVhkY3k1c0Y0YTNGUCs4ek5uWk5W?= =?utf-8?B?L2VJaTk2cVVRQlRYelhOTEk1VFhGOWFTZFMvcWFCUDloWDVGMGU5TWVleHVV?= =?utf-8?B?am5zajRHQXhxU1RKQVNoZXEvdDhFZHFIUkluZXdzSE0vWUx6Wi81WWdsU21X?= =?utf-8?B?a1hiV2JRU3ZwLzJKc0dZTVdZR3pSeGF5emt1KzRNN1lzcldXTU5oWHJ5UU4r?= =?utf-8?B?QjRIVTk3OExxbW5ubWtZeGVqV3hhWHBOQVd0dFlHWnhORTQ1N1JNS1Fybmda?= =?utf-8?B?Ty9TNjdLQzZrUXVmQjRMNENpZjRjcHlhVFcrMVF0YlloMEI0UkRFTkkyTWFD?= =?utf-8?B?d1hDS28zc3diMmFxNmgzdXk4ZVRlMTVaNU1USnRJMUQvOVlOVS8xTUJtTjFZ?= =?utf-8?B?UFUzU3YxbzJQOUdpaVUvS3N2KytSNTF3d2hsQkVmaE9SSkF2YzAxZVo0b0dy?= =?utf-8?B?LzhDcXdHV2h1QTE4eFpCQUtMUnRRMUZNdWI5b1N6UTlxaXJqQkhRcTRVTHFw?= =?utf-8?B?RTYrbjdEU204SEU2V3NKeUltV1Jvd05haGpqU0FYM0MzVUg3VVpkaGs4cEpL?= =?utf-8?Q?xbCOCs0yCBviHCyMEHspHWvTWQLGLE5n04Lq87vRF6cz9?= X-MS-Exchange-AntiSpam-MessageData-1: fUObv/q/ITHzSA== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 90b8b458-a38e-495d-7b41-08de9f6d8640 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 06:16:28.9071 (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: MLGssUGoWjrEKx+e/1b9aWNgI0WsxYR1W3P9shVRdvJw6E1pmNQyRHaafyhwhOFE29/l1LV++A92fsO9NNaZ7g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYYPR12MB8749 Importing all the firmware commands like we did is a bit confusing, as the layer of a command type (fw or GSP) cannot be inferred from looking at its name alone. Furthermore it makes it impossible to create commands that have the same name as their firmware command. Thus, stop importing all commands and refer to them from the `fw` module instead. Signed-off-by: Alexandre Courbot Reviewed-by: Eliot Courtney --- drivers/gpu/nova-core/gsp/commands.rs | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/nova-core/gsp/commands.rs b/drivers/gpu/nova-core/= gsp/commands.rs index c89c7b57a751..c80df421702c 100644 --- a/drivers/gpu/nova-core/gsp/commands.rs +++ b/drivers/gpu/nova-core/gsp/commands.rs @@ -27,7 +27,7 @@ NoReply, // }, fw::{ - commands::*, + self, MsgFunction, // }, }, @@ -48,12 +48,12 @@ pub(crate) fn new(pdev: &'a pci::Device)= -> Self { =20 impl<'a> CommandToGsp for SetSystemInfo<'a> { const FUNCTION: MsgFunction =3D MsgFunction::GspSetSystemInfo; - type Command =3D GspSetSystemInfo; + type Command =3D fw::commands::GspSetSystemInfo; type Reply =3D NoReply; type InitError =3D Error; =20 fn init(&self) -> impl Init { - GspSetSystemInfo::init(self.pdev) + Self::Command::init(self.pdev) } } =20 @@ -100,12 +100,12 @@ pub(crate) fn new() -> Self { =20 impl CommandToGsp for SetRegistry { const FUNCTION: MsgFunction =3D MsgFunction::SetRegistry; - type Command =3D PackedRegistryTable; + type Command =3D fw::commands::PackedRegistryTable; type Reply =3D NoReply; type InitError =3D Infallible; =20 fn init(&self) -> impl Init { - PackedRegistryTable::init(Self::NUM_ENTRIES as u32, self.variable_= payload_len() as u32) + Self::Command::init(Self::NUM_ENTRIES as u32, self.variable_payloa= d_len() as u32) } =20 fn variable_payload_len(&self) -> usize { @@ -113,22 +113,22 @@ fn variable_payload_len(&self) -> usize { for i in 0..Self::NUM_ENTRIES { key_size +=3D self.entries[i].key.len() + 1; // +1 for NULL te= rminator } - Self::NUM_ENTRIES * size_of::() + key_size + Self::NUM_ENTRIES * size_of::()= + key_size } =20 fn init_variable_payload( &self, dst: &mut SBufferIter>, ) -> Result { - let string_data_start_offset =3D - size_of::() + Self::NUM_ENTRIES * size_of= ::(); + let string_data_start_offset =3D size_of::() + + Self::NUM_ENTRIES * size_of::(); =20 // Array for string data. let mut string_data =3D KVec::new(); =20 for entry in self.entries.iter().take(Self::NUM_ENTRIES) { dst.write_all( - PackedRegistryEntry::new( + fw::commands::PackedRegistryEntry::new( (string_data_start_offset + string_data.len()) as u32, entry.value, ) @@ -180,12 +180,12 @@ pub(crate) fn wait_gsp_init_done(cmdq: &Cmdq) -> Resu= lt { =20 impl CommandToGsp for GetGspStaticInfo { const FUNCTION: MsgFunction =3D MsgFunction::GetGspStaticInfo; - type Command =3D GspStaticConfigInfo; + type Command =3D fw::commands::GspStaticConfigInfo; type Reply =3D GetGspStaticInfoReply; type InitError =3D Infallible; =20 fn init(&self) -> impl Init { - GspStaticConfigInfo::init_zeroed() + Self::Command::init_zeroed() } } =20 @@ -196,7 +196,7 @@ pub(crate) struct GetGspStaticInfoReply { =20 impl MessageFromGsp for GetGspStaticInfoReply { const FUNCTION: MsgFunction =3D MsgFunction::GetGspStaticInfo; - type Message =3D GspStaticConfigInfo; + type Message =3D fw::commands::GspStaticConfigInfo; type InitError =3D Infallible; =20 fn read( --=20 2.53.0 From nobody Tue Jun 16 20:36:34 2026 Received: from PH8PR06CU001.outbound.protection.outlook.com (mail-westus3azon11012024.outbound.protection.outlook.com [40.107.209.24]) (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 A3D2535E947; Tue, 21 Apr 2026 06:16:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.209.24 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776752202; cv=fail; b=cBKyKvR6dBVsw9qFAjwhzeZxNFOJzRdGrxHGI+2JDihiuNclbKkjswgvecuIbK1D/GpgH1f3eMO6/1ikg9Exo/t1HbQ+ZEOacL3wWl6lbKdw+vostPY7vmXdQK18jE64PaUoowvAbYw4nUupRjHbAwzaPe2dFilxGQgJ8Ltydxo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776752202; c=relaxed/simple; bh=cXPuak9HUliia3E5O2qG/XBdHMZ9+OnK7bGTReyJr6Y=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=HA/o/fKekd1nl9dDickhALfOo1/sxApoILhph5xKy9usFUdAXO4GG/Dz4C3Gzj47m9uSGDEuT7l/aysPt0Wa6ng2oGHiFa398eNdfuBd4s6RUiKgXItH6Fp4g8I7BnI+U+yd1AZoErrNRcN1W3/PmA9xIXkFA7vLuxwX7UeEusc= 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=rk9w7e2Z; arc=fail smtp.client-ip=40.107.209.24 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="rk9w7e2Z" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cinGcQKyO5g47N6lFamyjYG6yBuqq34Oz1a2VYovpYZjNLMigDhDo1VEJjhNvE+Ut7XtHTni/SIgcOqDuLI9WqTUSb5IKrJtiMhabubmGmPqjr6Fgy+rNd/72OOZl/Q/j5LN/1W16tnjM/MsH2vlWGkerBLw6vyRd3oyVAM55p+9MgUjFFJ9rBrraR8MMFVbxMWlhYgdP4aPnXyw42cJwQGIUKW6J4an9MgMYkmRCKFyv7TIUXKfV4LaRKU3H2fk+BBuLH656gXWj8lLNwtCa2nNayrc4ha9dv7G5jZxkRYmpGzluuuq1YwggkicPLCJ3OyuIKrxnYMC4792pxj82w== 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=LS/9e/tDax4bkVeHVJ5hd/JEceKzidDFI9TcIg/dzD8=; b=FxUz642A9/8L5MQQBtQfO902EQo06PwTkTkPfhtMEo+Dz4xYOV1ucqLrb8ykUk1YmNVxgK8SDsDf6fXy5TOaMEymcsqzu0iHbpZP3vEjrsCEwGrO5c4U5nFWTj5bw54fuNym2CBURSEy4EEAZ3OMRdhCSk3pC2uEjJLdLkjzKj6WzyrR78H7LErycs5/S1LirD8P2i4PUB0Obem4rjLNQ800F9FDEHV6EKno5f43XgsJpCcgoFiGgYFhNPkFZHik24t4htpG/Ze1Ml8kgxRKyHBEGcpfRFCcpNyln+RNYidB11rJauiOSghrMUq424m74UKA6HFd6uMSKmPWy2OJBg== 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=LS/9e/tDax4bkVeHVJ5hd/JEceKzidDFI9TcIg/dzD8=; b=rk9w7e2ZhA1d8jyWzebDICJ/6qKg5o48Cdwfi2R2DW6ILHzfuWhKTYR/U0B0L/hVxwtfSakWXE8yD2BYHJojFhjIpH5lxUcpCZp/ARANw5ZJH13NWLVGQ049F+tgZTtYWnWYuupvEpiF1vc002sMKrMDtuLa1p4FqpJAdSZ3CQUHGlGiVTRz61HTX3lJmV58TPLmHBZSpFaxeQKR8ntNIUt3zgNBLTIYoCOMo/m6OBy1LmBz3WF+1+YquBjT7iIHhMxefKAbTeLVEOPTQ4Jie/AEB+qE2l1COXFIg13WDvGhXI+Wr7CiDCvROLdlddkXu80RMb70+Q4tmN/j2QxcIg== 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 CYYPR12MB8749.namprd12.prod.outlook.com (2603:10b6:930:c6::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.15; Tue, 21 Apr 2026 06:16:33 +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.20.9846.016; Tue, 21 Apr 2026 06:16:33 +0000 From: Alexandre Courbot Date: Tue, 21 Apr 2026 15:16:14 +0900 Subject: [PATCH v2 4/5] gpu: nova-core: send UNLOADING_GUEST_DRIVER GSP command upon unloading Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260421-nova-unload-v2-4-2fe54963af8b@nvidia.com> References: <20260421-nova-unload-v2-0-2fe54963af8b@nvidia.com> In-Reply-To: <20260421-nova-unload-v2-0-2fe54963af8b@nvidia.com> To: Danilo Krummrich , Alice Ryhl , David Airlie , Simona Vetter , Bjorn Helgaas , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Miguel Ojeda , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Trevor Gross , Boqun Feng Cc: John Hubbard , Alistair Popple , Joel Fernandes , Timur Tabi , Eliot Courtney , nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, rust-for-linux@vger.kernel.org, Alexandre Courbot X-Mailer: b4 0.15.2 X-ClientProxiedBy: OS7PR01CA0192.jpnprd01.prod.outlook.com (2603:1096:604:250::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_|CYYPR12MB8749:EE_ X-MS-Office365-Filtering-Correlation-Id: b889574c-7a91-4cc1-8b09-08de9f6d88c5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|10070799003|366016|921020|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: W3sep71e/OtTKs17dWRAPOurvg0VwynG/M1Z2UbuDuhx3rb8YnF2jJuFWk9ZxFgr+PJUC+UBoyNoregbWr9A1Ygk5maz1IVALsJbc0GyK+TZKQ6D73v3q1w82slBGUVyxCaRcKwQyrOv6mJ8XV51x4w7TQvxsU4IhmVpi+rrfgZ6lfK7N2t/uXdFUE1k1wjQMb1pRBJ13S59p+EqdrHZsnryUAhSBOcKEkAE43UfvPPLKEWTE+umFXTaJSoD1hbGvtH2YQ/JQUfPzHal9AdgZB1WPHPiwiPSPGRL+CPDMqWCX8bL4ydrQB9mAA6Bv85jrIXt/oIQ5MUPp6h7kB5yqA/JFDdMCDcEtbUQwcs9hLxJFxQ/4x8VXNSU75t3DfYzYs3qI/xkKowcLaUcyB3dV0DHabVI58hvjsHi6jXeUTZ49bdyB7Nr8GgLz3p9+2vq9UsJZ8aAZcqt/5jByWUcHXfOVvH2jdVPtMiARtQnmV2eQpzS+kcnTWQwmhK6D7ELe4vkpIC3xeSPdkD9ue/Dr+LMF0Zdxu7QLynZvU9yJTV1hfjBPkjIF/q1bWEO7JjTM6xPX9VHqMJh3RZchQkXWOW6e9TE0VghvcyTPa7Rtk1Culom367vlLiJQr6lUQUL/8duoWGvaiFdj5yD8X/XVGjolc7+B3jjoeUFMZhYmQpLgKDpeaD8l4HA1sYNqnhWqdwGMczErH+fdab/bExNQAPVPMtIcnh0vYmEkOivRvw/QqHaktjiZIP7QbZYbKNzKakDifQ0qxNvO3GNca/wnw== 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)(10070799003)(366016)(921020)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aVlxYjRKQVBuQlZydzMrSXc2QnB3R2hPSVBFSlFzN1UyT3ZMSDNNWEtPZ1RU?= =?utf-8?B?MnNXcFp6WFdDbkdTcFN1TnJKRFZvY3JkLzJKUEx3L3dZOHB0UHgyZ2QvZG9B?= =?utf-8?B?dGlWQTRVL2w2YmpJVmFiUk9yVVYzbXU2K01iZ1BxRkxibU9UWVdoMkhlc1FQ?= =?utf-8?B?Vy9aR0JiaTRzalAvQmJmRDhsL2NUeUJ1N3pVM05jK0oyZkxIVkJJaS9PZTFr?= =?utf-8?B?S0VpVEhBSTl1K2EwZFZZZ0JoR05ScGIyamsvTTg5QTI0UUdLK1VudnVYQjRW?= =?utf-8?B?VG5Rcm43V3JoaDhwQ0lObnBxNU9tdktSNmg4VFhDaTF0MGpLR3ZHL2NIU2JI?= =?utf-8?B?V2FOYnJwRlVDQXJDeHdFVncrdHNhSzg2UDI5eHRSOWxYV3hoNkZlRUppVk1Q?= =?utf-8?B?L3VGd1N0bE9vMHJWbS9nQjVuTm9Mck04TkFGKzZ6TXZNRk5udjAvKyt3SFBJ?= =?utf-8?B?ZENJaURWZ2FMZ2plTC9iNUl4WHJrOU9wNGxSQ3NINllydFVia2dVSGg4WjJZ?= =?utf-8?B?cGYyZ1VSQWprZ2x4SGVFaFdKK3BFUENNS1ZidnZmbHJWUlpNNGFJY0lEV2xT?= =?utf-8?B?MUZMdzhNQkh3SWpxZ3l1NDBJZEZHZ0lZbWo0ZzRsV1JBb0ZMVXl0Z0ZKTk1V?= =?utf-8?B?cDhwaEFwMldDeWlmQVVQajc2Q2I2bEo1S2xzMmhuUktrd0x5bGsvUUNzZkxp?= =?utf-8?B?RjJyUnJRaUJ6Vlg0b3FORFdPenA0L1p3YU5TYzFiY0N5em1wSUl2dGRGQW5r?= =?utf-8?B?d0V5dmRUMW9FZTRDMmZmbGEwMVJqbFNMcnVyY1JCV2JKZVVKTmxaLzlSSFBG?= =?utf-8?B?a1ZSSDNkaHd4ZWIyTm1VN1Fra1BoWjlZb0p3K1hGcUJmcFlZTWZJVWx3WTZE?= =?utf-8?B?djNHbStrUDRBYzdwelBqZVlhOHloTGRmZ3NUWEwvcjVvclZCZld0eVd6N2lV?= =?utf-8?B?ZXVaanZINmNTNzFxdTNvVW1oWW5waUtGcmY0cmNVN2dacUJmcGdISHRZa1Vm?= =?utf-8?B?a1crV1NIOG5qcjFpNEVGeStqcG1vSUxBdnZvT0xDVkVlWUJKYnEwN05HMitr?= =?utf-8?B?YTMvY21Ld1JuQysyQk5rZmw2Q0lwc0FtaWRRNWVhbW4xSTJINmc1MHQwNU9S?= =?utf-8?B?bnhvbTd4Q2FRWE15dmQ3alErVkNGbkNqR3dCWWtsRjVSQlBqTDcwY05UV0hW?= =?utf-8?B?bU1URXl0YTQvVjNITm53VE1IYkRmQVNQTVE4RDJ5Tk5qbjQ0S3ZKR3V0Tnpt?= =?utf-8?B?T1kwN21hK3d3b3RTNHRyU05ZT3ZsNVpMWVFkZDJ1NUxJYkQ2MzQ0amZkUW05?= =?utf-8?B?eG8zNGZNZkNpTTl0bnNxWmcyaGJBM3JDL3ZzS1dwdlQ1cEZwNlBWbEQ4dm05?= =?utf-8?B?cjZrNmtqSEp0c0VFWnE1RjdlT3dxd09PL05UTFhlcG1FcGVDZ3NzSUxrT3hn?= =?utf-8?B?alFXc0k0WGNPdzZscHY3MEp6ZnNLT1cySE5MV0ZrOUNYVTk0ZHpRS2VJSzNr?= =?utf-8?B?Nm9pT0RMNEx4bk9SY0ZBcmRvK3V0RnFtK051WDNUVXk2V3l5NlVLdnBiR0s5?= =?utf-8?B?MnpwUlhIUklSSWhXcEhXUXBGbjJEK01aOWlESXBZS1VCTUFDdG9CckQ4d01p?= =?utf-8?B?QkZRTTZHN0pHaGVDazIvMWJrZExER0VhSnh2cmtabGlLdE5WSkkwZk42LzhE?= =?utf-8?B?VGFnTEcxN29Gbnd0dmp5RlhRdXhyUTdqaytyM0RTaHQyeE5DUTNoL2VNOUlM?= =?utf-8?B?YTVoVHdOSk1mRWp2amN4U1Zha3ZlU0ttVGRsZXZzaURIMHZwaCs0Y3FxSlov?= =?utf-8?B?VGQ3T2lwSlRMclZtekVucm02M0ljQ1p2SldGRUcvRjdIcjdPKzBLYldPQ1Rj?= =?utf-8?B?OFJhOVZZcHgzcXlzLy95c1BWN2l1S0ZObXpPMVVWSlJBRkhsRHdCYjRBbWc3?= =?utf-8?B?RktQc1BIcHhwWWFGbVBYcEw5L0x5UXdPTktZZk83S1dNaUxINmw0Zy8zc2hR?= =?utf-8?B?azFMaDNNNlZ1c2hab3hMbC9LbnBtMWx0TkRURlpDY1ZGbWRwRXMwMHpBZ0NL?= =?utf-8?B?dFpWQ0syK2puc0tqaE1zNVdRMDByMFZPWkRJWEc1Z1NUTlVVSXpValNsYjZ0?= =?utf-8?B?KzVNZXBXd0dUVFJvaHBnRFpLVDUrcXZ6SERXUkZabEYzR0lvODhDbkpLTnpE?= =?utf-8?B?Q1RTcGpBTXNZU0JJRUljRDNqR2Jkemg5dEI4enRYU2pPTkkzc29MNkRiR2dP?= =?utf-8?B?T1BYVG5Gd3lUM2x0akJkMjZaRmpINnFMNXp3ei91TTlhdWpPVC9wTDJUYVNa?= =?utf-8?B?a0RRWjROWUVrZDY1NVlBY3VKSG05VnVRTHNNYUt6V3lTV1BrWkdNcnVtMmI0?= =?utf-8?Q?UJ8v9YuWrub7eUshYUt34dxGyiJ1rzGqneaheSKGK09y7?= X-MS-Exchange-AntiSpam-MessageData-1: Yhinwq2ojiuQMw== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: b889574c-7a91-4cc1-8b09-08de9f6d88c5 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 06:16:33.0755 (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: pfKxM5APqr6w0mjIMcq4L5cJaU6xOjs+7noOYuUbj7GsHNili1jtkU+U7X/QnG2po/ovgufzxEYmwLOj/avPhg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYYPR12MB8749 Currently, the GSP is left running after the driver is unbound. This is not great for several reasons, notably that it can still access shared memory areas that the kernel will now reclaim (especially problematic on setups without an IOMMU). Fix this by sending the `UNLOADING_GUEST_DRIVER` GSP command when unbinding. This stops the GSP and lets us proceed with the rest of the unbind sequence in the next patch. Signed-off-by: Alexandre Courbot --- drivers/gpu/nova-core/gpu.rs | 5 +++ drivers/gpu/nova-core/gsp/boot.rs | 40 +++++++++++++++++++= ++++ drivers/gpu/nova-core/gsp/commands.rs | 36 ++++++++++++++++++++ drivers/gpu/nova-core/gsp/fw.rs | 4 +++ drivers/gpu/nova-core/gsp/fw/commands.rs | 23 +++++++++++++ drivers/gpu/nova-core/gsp/fw/r570_144/bindings.rs | 8 +++++ 6 files changed, 116 insertions(+) diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs index 1701c2600538..8f2ae9e8a519 100644 --- a/drivers/gpu/nova-core/gpu.rs +++ b/drivers/gpu/nova-core/gpu.rs @@ -277,12 +277,17 @@ pub(crate) fn new<'a>( =20 /// Called when the corresponding [`Device`](device::Device) is unboun= d. /// + /// Prepares the GPU for unbinding by shutting down the GSP and unregi= stering the sysmem flush + /// memory page. + /// /// Note: This method must only be called from `Driver::unbind`. pub(crate) fn unbind(&self, dev: &device::Device) { let Ok(bar) =3D kernel::warn_on_err!(self.bar.access(dev)) else { return; }; =20 + let _ =3D kernel::warn_on_err!(self.gsp.unload(dev, bar, &self.gsp= _falcon)); + self.sysmem_flush.unregister(bar); } } diff --git a/drivers/gpu/nova-core/gsp/boot.rs b/drivers/gpu/nova-core/gsp/= boot.rs index 18f356c9178e..3f4e99b2497b 100644 --- a/drivers/gpu/nova-core/gsp/boot.rs +++ b/drivers/gpu/nova-core/gsp/boot.rs @@ -33,6 +33,7 @@ }, gpu::Chipset, gsp::{ + cmdq::Cmdq, commands, sequencer::{ GspSequencer, @@ -237,4 +238,43 @@ pub(crate) fn boot( =20 Ok(()) } + + /// Shut down the GSP and wait until it is offline. + fn shutdown_gsp( + cmdq: &Cmdq, + bar: &Bar0, + gsp_falcon: &Falcon, + suspend: bool, + ) -> Result<()> { + // Send command to shutdown GSP and wait for response. + cmdq.send_command(bar, commands::UnloadingGuestDriver::new(suspend= ))?; + + // Wait until GSP signals it is suspended. + const LIBOS_INTERRUPT_PROCESSOR_SUSPENDED: u32 =3D 0x8000_0000; + read_poll_timeout( + || Ok(gsp_falcon.read_mailbox0(bar)), + |&mb0| mb0 =3D=3D LIBOS_INTERRUPT_PROCESSOR_SUSPENDED, + Delta::from_millis(10), + Delta::from_secs(5), + ) + .map(|_| ()) + } + + /// Attempts to unload the GSP firmware. + /// + /// This stops all activity on the GSP. + pub(crate) fn unload( + &self, + dev: &device::Device, + bar: &Bar0, + gsp_falcon: &Falcon, + ) -> Result { + // Shut down the GSP. + + Self::shutdown_gsp(&self.cmdq, bar, gsp_falcon, false) + .inspect_err(|e| dev_err!(dev, "unload guest driver failed: {:= ?}", e))?; + dev_dbg!(dev, "GSP shut down\n"); + + Ok(()) + } } diff --git a/drivers/gpu/nova-core/gsp/commands.rs b/drivers/gpu/nova-core/= gsp/commands.rs index c80df421702c..fb94460c451e 100644 --- a/drivers/gpu/nova-core/gsp/commands.rs +++ b/drivers/gpu/nova-core/gsp/commands.rs @@ -237,3 +237,39 @@ pub(crate) fn gpu_name(&self) -> core::result::Result<= &str, GpuNameError> { pub(crate) fn get_gsp_info(cmdq: &Cmdq, bar: &Bar0) -> Result { cmdq.send_command(bar, GetGspStaticInfo) } + +pub(crate) struct UnloadingGuestDriver { + suspend: bool, +} + +impl UnloadingGuestDriver { + pub(crate) fn new(suspend: bool) -> Self { + Self { suspend } + } +} + +impl CommandToGsp for UnloadingGuestDriver { + const FUNCTION: MsgFunction =3D MsgFunction::UnloadingGuestDriver; + type Command =3D fw::commands::UnloadingGuestDriver; + type Reply =3D UnloadingGuestDriverReply; + type InitError =3D Infallible; + + fn init(&self) -> impl Init { + fw::commands::UnloadingGuestDriver::new(self.suspend) + } +} + +pub(crate) struct UnloadingGuestDriverReply; + +impl MessageFromGsp for UnloadingGuestDriverReply { + const FUNCTION: MsgFunction =3D MsgFunction::UnloadingGuestDriver; + type InitError =3D Infallible; + type Message =3D (); + + fn read( + _msg: &Self::Message, + _sbuffer: &mut SBufferIter>, + ) -> Result { + Ok(UnloadingGuestDriverReply) + } +} diff --git a/drivers/gpu/nova-core/gsp/fw.rs b/drivers/gpu/nova-core/gsp/fw= .rs index 0c8a74f0e8ac..59b4c4883185 100644 --- a/drivers/gpu/nova-core/gsp/fw.rs +++ b/drivers/gpu/nova-core/gsp/fw.rs @@ -278,6 +278,7 @@ pub(crate) enum MsgFunction { Nop =3D bindings::NV_VGPU_MSG_FUNCTION_NOP, SetGuestSystemInfo =3D bindings::NV_VGPU_MSG_FUNCTION_SET_GUEST_SYSTEM= _INFO, SetRegistry =3D bindings::NV_VGPU_MSG_FUNCTION_SET_REGISTRY, + UnloadingGuestDriver =3D bindings::NV_VGPU_MSG_FUNCTION_UNLOADING_GUES= T_DRIVER, =20 // Event codes GspInitDone =3D bindings::NV_VGPU_MSG_EVENT_GSP_INIT_DONE, @@ -322,6 +323,9 @@ fn try_from(value: u32) -> Result { Ok(MsgFunction::SetGuestSystemInfo) } bindings::NV_VGPU_MSG_FUNCTION_SET_REGISTRY =3D> Ok(MsgFunctio= n::SetRegistry), + bindings::NV_VGPU_MSG_FUNCTION_UNLOADING_GUEST_DRIVER =3D> { + Ok(MsgFunction::UnloadingGuestDriver) + } =20 // Event codes bindings::NV_VGPU_MSG_EVENT_GSP_INIT_DONE =3D> Ok(MsgFunction:= :GspInitDone), diff --git a/drivers/gpu/nova-core/gsp/fw/commands.rs b/drivers/gpu/nova-co= re/gsp/fw/commands.rs index db46276430be..71c8690c9322 100644 --- a/drivers/gpu/nova-core/gsp/fw/commands.rs +++ b/drivers/gpu/nova-core/gsp/fw/commands.rs @@ -129,3 +129,26 @@ unsafe impl AsBytes for GspStaticConfigInfo {} // SAFETY: This struct only contains integer types for which all bit patte= rns // are valid. unsafe impl FromBytes for GspStaticConfigInfo {} + +/// Payload of the `UnloadingGuestDriver` command and message. +#[repr(transparent)] +#[derive(Clone, Copy, Debug, Zeroable)] +pub(crate) struct UnloadingGuestDriver(bindings::rpc_unloading_guest_drive= r_v1F_07); + +impl UnloadingGuestDriver { + pub(crate) fn new(suspend: bool) -> Self { + Self(bindings::rpc_unloading_guest_driver_v1F_07 { + bInPMTransition: u8::from(suspend), + bGc6Entering: 0, + newLevel: if suspend { 3 } else { 0 }, + ..Zeroable::zeroed() + }) + } +} + +// SAFETY: Padding is explicit and will not contain uninitialized data. +unsafe impl AsBytes for UnloadingGuestDriver {} + +// SAFETY: This struct only contains integer types for which all bit patte= rns +// are valid. +unsafe impl FromBytes for UnloadingGuestDriver {} diff --git a/drivers/gpu/nova-core/gsp/fw/r570_144/bindings.rs b/drivers/gp= u/nova-core/gsp/fw/r570_144/bindings.rs index 334e8be5fde8..5d8e4c0ad904 100644 --- a/drivers/gpu/nova-core/gsp/fw/r570_144/bindings.rs +++ b/drivers/gpu/nova-core/gsp/fw/r570_144/bindings.rs @@ -880,6 +880,14 @@ fn default() -> Self { } } #[repr(C)] +#[derive(Debug, Default, Copy, Clone, MaybeZeroable)] +pub struct rpc_unloading_guest_driver_v1F_07 { + pub bInPMTransition: u8_, + pub bGc6Entering: u8_, + pub __bindgen_padding_0: [u8; 2usize], + pub newLevel: u32_, +} +#[repr(C)] #[derive(Debug, Default, MaybeZeroable)] pub struct rpc_run_cpu_sequencer_v17_00 { pub bufferSizeDWord: u32_, --=20 2.53.0 From nobody Tue Jun 16 20:36:34 2026 Received: from SN4PR0501CU005.outbound.protection.outlook.com (mail-southcentralusazon11011062.outbound.protection.outlook.com [40.93.194.62]) (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 4C6F3369236; Tue, 21 Apr 2026 06:16:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.194.62 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776752207; cv=fail; b=ttRmDLpLQMOlotPSEbmvH1S92PV3d52uN+urhDNlQdHtcI12iAcsiMKknGzUU52a/mCdKoNxe+cEH+cJ+TLJzMXOqAQqo2Yy5NUXiUw3ELJ/j5v0vmlbTk5YXgQ6DDjSoV8snznCWRucsDF11WTok3XwLTRwC/9uSVDP+9UffLU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776752207; c=relaxed/simple; bh=xjQW6zbG81wJLIjPC/UyEsqVGkpk/K4kHBNs4grfZwU=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=oaYyJlmnvNpxFMvFD5m2VkOo8WRHZnZ/o0HjP0RQO5LHqNDkOdKE8RYYkNMBVT5CE3vqVT2iiK5YnSbFxb6X5zFAthtB10R6OBYtyCR+eJZj5UBNCE6DYSSm9+/TKrD17SKSfvTOyjGdn/aBbDCFaqXRr3dY6r5742rhpgYdGS4= 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=umGMcs8J; arc=fail smtp.client-ip=40.93.194.62 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="umGMcs8J" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZoPPiuV/yQWJJ3Md+Go5uHaVO6i80mFCfVAOwnmcQXpMncx79aD+czVLl0MKoKaUYVrpXeiVNkKSjoZhEFGLUmoxoHXZ3mzbNa22ufnvMyCLSiYmmrBISGUQTB4pHr3hBDQ7G4dT3Y56wayOV5YxPsPTCcns4nLO/ycdS78gTKzvOEkSJbvmqeC109uhAQekPiX9bR36zkuaPFBnl8kI//4j9fi2Mle76o/zgqXsdEqBJbrSbSDRfAQbqEixG4I3sZpWQ4C+7FfQbKJcYqrqOnxDNj9kPNyJ1GQpT1otFzCohCusNGikQJl39ibOU8MqMVNWh3rkgIQ/VZNf2D7Maw== 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=RmfhwgQCCTErv+j2CvALJmbXp9bRliRBt6dRbZo8INU=; b=jKRPTXJ3X02IKMJ7okAVcUQNRkcAklL69U/9visq45vU8wWXPPoGkrFTcwwauRAENw7cOzLLUT6/Hr27ae8U7eVvZBFhf19fQGAsDx+l6ik+ae/dhRHPdzFZVs4cuEl6xaZ5QxqJcLlxuY5xuJrdQpCkIemWgph7X+0CPkPRz1cL/K/7ZPE0YHBl0w7opSy3ntOKSrK9dRBNUMnmE49Ll9kyGTfKDsxLWDooqPSnGN/SEsnU9gHRrK5v663/df/hkBJBH0vzxyhwrRQteGbh8LH/ozw26svpyzbORO3DRFft228cZhwUx6Nfve+U2d71jaNzTY8TM+Z5uYKD6LOyfg== 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=RmfhwgQCCTErv+j2CvALJmbXp9bRliRBt6dRbZo8INU=; b=umGMcs8JUXWQlXE2fxYTHWzwpXDeGIIYc7iYHvkXK3vatIe+vN4gpPU1pxT+hNcX5rDRaF8nG7iiSeiqY/ho1TW9cNlyN3xtYdgfeZJTMXXNt6r0XnMG1xFf+y4IVn8V4pMI1Tikun4wTlfXgtZnMtBKoUspmpKVioJrcMSJnpAy4y01a4xvnRzQOfhIiiOrsgCriMZ4hnqPbznobdFR2aPruu6vNT/qG65c6FbsGmOBMydWLznAV/3mmWuVHjw+Vds4umlhWySExIBRQxvSuAgQC1b5gOVDsqxVrvTs5xnvsLBzviGg9Ojrjo0asb/azTNi78xBUmAEYWOPsqOtlA== 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 CYYPR12MB8749.namprd12.prod.outlook.com (2603:10b6:930:c6::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.15; Tue, 21 Apr 2026 06:16:40 +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.20.9846.016; Tue, 21 Apr 2026 06:16:37 +0000 From: Alexandre Courbot Date: Tue, 21 Apr 2026 15:16:15 +0900 Subject: [PATCH v2 5/5] gpu: nova-core: run Booter Unloader and FWSEC-SB upon unbinding Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260421-nova-unload-v2-5-2fe54963af8b@nvidia.com> References: <20260421-nova-unload-v2-0-2fe54963af8b@nvidia.com> In-Reply-To: <20260421-nova-unload-v2-0-2fe54963af8b@nvidia.com> To: Danilo Krummrich , Alice Ryhl , David Airlie , Simona Vetter , Bjorn Helgaas , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Miguel Ojeda , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Trevor Gross , Boqun Feng Cc: John Hubbard , Alistair Popple , Joel Fernandes , Timur Tabi , Eliot Courtney , nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, rust-for-linux@vger.kernel.org, Alexandre Courbot X-Mailer: b4 0.15.2 X-ClientProxiedBy: OS7PR01CA0249.jpnprd01.prod.outlook.com (2603:1096:604:24b::18) 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_|CYYPR12MB8749:EE_ X-MS-Office365-Filtering-Correlation-Id: e3c1417f-98f5-4dd0-ee2c-08de9f6d8b49 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|10070799003|366016|921020|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: v2fKXLpXjGrDM+ooJ1Bg6cWGurVqMjPXXOVwCD15s72Vts6dsBvt6yKynrHh4X4oph1/3EXUUYEmJQ4zjEVrl0sIFLChWajXKz8AVMutN91e4jlez0MOjXKJt1XYSsJmeI9O6MCdoHICLj8F4xb8uDnoSfVJtrmV2GO//qKFIZoMvsQO8f/GJJ7BxIdHyCp57BR7VJHP+5uFLSlO7UGMoAsScog+ODTzx7i6YAsjNJOtafCIWAhthElLvXS1ZqFe0C945Zfp5ZH1/3KAmyuu3/zEI75qON6hCD5KnbWeuiwo/eOzmczwzSLyDGD+1hPxhY4BW+Xh3CHwrpj6vZYqWC0LDRie6JwQWPg6ETyA2EubXVMU3FkUtHPWSwB8ZknrocmuitsWZR8sqbFR7jkyi7AHqSpjD3o2mONdCXxrjtiRWvndAOxUoCtrUZUA2g8VTd3QzpwN4tHtEIWcS1F0InGLlpBhLXUFiWoEKbZ3ZRIlYJGRgUpnnm09kqVhCL8HWcKHXKhjM2QtiIbBJnoiwQqKf2vVK6IPsiXuNCIO/x56qabUSyHmuv+707zeEs62KYNeaIXjjN96stH9LlXZTD1FBe+6DEKS2qdYmF2KYUNc5DIn7Jcq0Wzx5XKWR+QLutONu5htuLmRX5+HUsE2lnN2M8JLEy3fpmOlH+wh0KkThu0Bai/H1Ozrd3nEw0IwVSDmTMpeTnIfEUJdNjOGo0fiaOehrYURZFVvEygLKtZ4gEyeqSPbLQ79e/GatI16lp2pX5dsk61U3DvVaMYbwQ== 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)(10070799003)(366016)(921020)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WXIxRXZuMUlYMEpWcGVwR2IxeUpvSkl5WUxHTWM5LzIyWnQ5UEJudmY4cEFv?= =?utf-8?B?RVBMWEYzRGw1emo4R3ZNNzZZdVp0RExoNkpBNmNWYmZaWTJycmNqL0JHUFlT?= =?utf-8?B?b1hRNlFDTDFWdW5FNzlySFBBZmxKNC9ES2ZBR2lVelJaeHVmaGU0eDIvcjNS?= =?utf-8?B?QWdpWkZpVFhISHN1dmlpYkg0YncrQU56dGRyMUFJbzhoSksvbEdiM25qSzVs?= =?utf-8?B?R3VSOWtwZUo4WEdDV2wvZFhMVFRmaC9Ka2hmczJzUG5tQ2VNSDhqcDA5c0Mv?= =?utf-8?B?QUg3UGhQZ1FRSTNMZFVrM2M5bkVZaDVFNmt3MlFmMVZOT2RpVmNORHVrc0Ex?= =?utf-8?B?NjluSks3a3hod2JVRG5ieU9XenZPVGhKbTgxSCt0WEV1Mm5hRlJ6bTJYSHVD?= =?utf-8?B?VDdHRjkvV20zZTBBUVJ3SzFqbW1aTDBlUmFMK1V6b3BwWlNqRWxhZ0MwWDFy?= =?utf-8?B?NkM3NThDL215Y0E2K0ZwR2Z1ZUlRNlJiaVNJWVQ2NElSbzhzRC9VMWVobEtJ?= =?utf-8?B?UnJHVmVTVjRxc051WHNyOUdkelZuMFVKRHg3TDJ4U3Y2WXVmUkJrOG14VEdi?= =?utf-8?B?Z1B5QVdDZEppdWpTS2xWQTJXL0g3bHU3QitDTXU5ZmZocHRkcDhuVjhTT0lx?= =?utf-8?B?S3picmdzbVNTUHNxaVRIZTQ5WE44bUdqKzF4V3I5b00zaXJCQjh5MWhDQ2Jo?= =?utf-8?B?WjZJaEdYeWRlYkJUSERreGdCMVlLb3k1WlJsYk1FNEZLckwxRnF2QVZYeWZ3?= =?utf-8?B?ZVQ0d0p5TStEZ1NGMHU0eFVkZVZQVVQ4d21tcWlxMXZMdU9RMTF0Ly9rcE1t?= =?utf-8?B?RXE3d3ZpSjA0RWc3QnlwODBkbkZtLytBMW5aWGpEd056NDVzT2dBcW5lblNn?= =?utf-8?B?UjZBNXBsVFJFc1BIVkQycE9UTk9PRTQ1UkVnUGF5aTlxQW9Od3pXY0Y4UHR3?= =?utf-8?B?Y2JlWkhrbEFrVXByNEUvN1RvUVoweGpFb3lvSlFYRFhobnVTeGdDLzFJVnEw?= =?utf-8?B?Uk9xVEhZT1NwYXB6djlOWk16WFZPN2dkSkVDT0hDQzE0R2E3Z0RFbmh3SEZy?= =?utf-8?B?Z1hoZ2hhZXBjcGM0VHJ4UHVsMFR2cXREZVR2YThlWjc3c01jTVJaZDJsLzAx?= =?utf-8?B?OHY0VVFPaVJPM3YrcmRHL3pLU0EzTXE5d2o3QURIQVV3S3A2ckJVZzQ5NzFT?= =?utf-8?B?UmJ0OHJWWlZDMS9iTVlHUzV5NTVVcklSS1pwNVBxaTZkS3g1ZlNrblRyZENp?= =?utf-8?B?clk3WWZDdDNiVnpmN3JKd3JFOXN5MmduL2k5c0VPZ3p5TnN2d0hPaXBFUU1v?= =?utf-8?B?MFlPeFJXS0lZMFN0cDdTQWdBTzhmNWk5QmhrV0FET2x6dmhISzJHazJRVzBN?= =?utf-8?B?WmoraU9veUFYd21DazdzVWp5RnVkME4wT3ZHbklZTURRbUp6UHNYVGZsMEpW?= =?utf-8?B?NEFiNlYvYk01YXIwcHR5TVF4OEp6Y0ZSSVhxTUxTVnQxYVU1QUZYTWp6dFNx?= =?utf-8?B?eTRjc1haMEZkeHJ1RVZXdnJ6Q09kTklENGRsRklFcmxoVEFqUnltQWU5elY0?= =?utf-8?B?d1JwV0JONU50eGZNRXNrVUdDbk12WXEvbjlGN2xRczZtQVhOTVRVQ2RQTkt3?= =?utf-8?B?dVpMUFZnM05UWUpBY0hnVnJIWlB6MWlaVGRCRFRQWGJmSzZNZEZxMjU4TEcv?= =?utf-8?B?clFrcW5zbUxoT2dRTHRFS2t0cDRXTzlXeDB1WnlvQ1VPcVJZTVdQa0diUTN2?= =?utf-8?B?a3pQbDJhTGMzcTBrZUdyQzRkY05OZ0ZGRlJtRk5EYkN4OWVvZVNKTnRTV2lR?= =?utf-8?B?OGhjeUlzU3QxeFdQL05mZjY3TGJXVTN1MStzSnNEYkN0Z1B0ZnhVS1B1SkhK?= =?utf-8?B?M1NGNmtXZW5RcUFGVkpOWHdXUVE1NTVGOFZuTUYzSjNsMWRJWTJybnhhdG9Z?= =?utf-8?B?eXp0NTM5djF6NGlUT1VTVWxkQTZVK2VNdW1lZXkrZ3FoVlJ1VExFYjJ0eTA4?= =?utf-8?B?cmdLZkY0VEtsUEt5VmZxaThXRzNVbE9LVzhvSDZmd25lRGQ4NWdheVhLWDQ0?= =?utf-8?B?VjBGY0RXSG92cDR2akJoaEMxUjBzL3FXYXpxZWZZeG5MQ0hpWGNEbUlHSkVM?= =?utf-8?B?MDM1WnpTOUhKR3N4bXZBK2FLS0dGamdjMVlzSXpaNTVSRnJ2cWt5ZXNlK2li?= =?utf-8?B?QmhWVHZ2dDVaSnFiYnphRk5lYTA4TEIrSDNLMWxvbkNQL1dpWVZrbUxyeVBr?= =?utf-8?B?bi9uQWN6bkRCSmhpYWNTWWNHYjZjQ2gwa21VSUpGM1lCc3dHQWFqTUJ4UStl?= =?utf-8?B?T3pFaGM3NTl5QWhXSFJTTjZTbXBnNHk1QnRJbzB2cVNoSDcxVVFFRGdKZEpt?= =?utf-8?Q?pfZEqCMdpyfKWJLj8aNU8/uTbQYKKI7GgkKZzu4pVGQTM?= X-MS-Exchange-AntiSpam-MessageData-1: zjJ+XaYao6TlzQ== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: e3c1417f-98f5-4dd0-ee2c-08de9f6d8b49 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 06:16:37.2052 (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: 0orbsCHImjx2Pd6Up1o578FvjNTIV0ZWEhAh8AivbnsLUT8rJ10jW5UF6oFGZ8BTZB/iSYBZodMrRvzxS55GMw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYYPR12MB8749 When probing the driver, the FWSEC-FRTS firmware creates a WPR2 secure memory region to store the GSP firmware, and the Booter Loader loads and starts that firmware into the GSP, making it run in RISC-V mode. These operations need to be reverted upon unloading, particularly the WPR2 secure region creation, as its presence prevents the driver from subsequently probing. Thus, load and run the Booter Unloader and FWSEC-SB firmwares at unbind time to put the GPU into a state where it can be probed again. Signed-off-by: Alexandre Courbot Reviewed-by: Eliot Courtney --- drivers/gpu/nova-core/firmware/booter.rs | 1 - drivers/gpu/nova-core/firmware/fwsec.rs | 1 - drivers/gpu/nova-core/gpu.rs | 8 +++++- drivers/gpu/nova-core/gsp/boot.rs | 43 ++++++++++++++++++++++++++++= ++++ drivers/gpu/nova-core/regs.rs | 5 ++++ 5 files changed, 55 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/nova-core/firmware/booter.rs b/drivers/gpu/nova-co= re/firmware/booter.rs index de2a4536b532..771b018ba580 100644 --- a/drivers/gpu/nova-core/firmware/booter.rs +++ b/drivers/gpu/nova-core/firmware/booter.rs @@ -280,7 +280,6 @@ fn new_booter(data: &[u8]) -> Result { #[derive(Copy, Clone, Debug, PartialEq)] pub(crate) enum BooterKind { Loader, - #[expect(unused)] Unloader, } =20 diff --git a/drivers/gpu/nova-core/firmware/fwsec.rs b/drivers/gpu/nova-cor= e/firmware/fwsec.rs index 8810cb49db67..4108f28cd338 100644 --- a/drivers/gpu/nova-core/firmware/fwsec.rs +++ b/drivers/gpu/nova-core/firmware/fwsec.rs @@ -144,7 +144,6 @@ pub(crate) enum FwsecCommand { /// image into it. Frts { frts_addr: u64, frts_size: u64 }, /// Asks [`FwsecFirmware`] to load pre-OS apps on the PMU. - #[expect(dead_code)] Sb, } =20 diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs index 8f2ae9e8a519..37d0e4587ed3 100644 --- a/drivers/gpu/nova-core/gpu.rs +++ b/drivers/gpu/nova-core/gpu.rs @@ -286,7 +286,13 @@ pub(crate) fn unbind(&self, dev: &device::Device) { return; }; =20 - let _ =3D kernel::warn_on_err!(self.gsp.unload(dev, bar, &self.gsp= _falcon)); + let _ =3D kernel::warn_on_err!(self.gsp.unload( + dev, + bar, + self.spec.chipset, + &self.gsp_falcon, + &self.sec2_falcon, + )); =20 self.sysmem_flush.unregister(bar); } diff --git a/drivers/gpu/nova-core/gsp/boot.rs b/drivers/gpu/nova-core/gsp/= boot.rs index 3f4e99b2497b..e00cfebe5d11 100644 --- a/drivers/gpu/nova-core/gsp/boot.rs +++ b/drivers/gpu/nova-core/gsp/boot.rs @@ -267,7 +267,9 @@ pub(crate) fn unload( &self, dev: &device::Device, bar: &Bar0, + chipset: Chipset, gsp_falcon: &Falcon, + sec2_falcon: &Falcon, ) -> Result { // Shut down the GSP. =20 @@ -275,6 +277,47 @@ pub(crate) fn unload( .inspect_err(|e| dev_err!(dev, "unload guest driver failed: {:= ?}", e))?; dev_dbg!(dev, "GSP shut down\n"); =20 + // Run FWSEC-SB to reset the GSP falcon to its pre-libos state. + + let bios =3D Vbios::new(dev, bar)?; + let fwsec_sb =3D FwsecFirmware::new(dev, gsp_falcon, bar, &bios, F= wsecCommand::Sb)?; + + if chipset.needs_fwsec_bootloader() { + let fwsec_sb_bl =3D FwsecFirmwareWithBl::new(fwsec_sb, dev, ch= ipset)?; + // Load and run the bootloader, which will load FWSEC-SB and r= un it. + fwsec_sb_bl.run(dev, gsp_falcon, bar)?; + } else { + // Load and run FWSEC-SB directly. + fwsec_sb.run(dev, gsp_falcon, bar)?; + } + dev_dbg!(dev, "FWSEC SB completed\n"); + + // Remove WPR2 region if set. + + let wpr2_hi =3D bar.read(regs::NV_PFB_PRI_MMU_WPR2_ADDR_HI); + if wpr2_hi.is_wpr2_set() { + let booter_unloader =3D BooterFirmware::new( + dev, + BooterKind::Unloader, + chipset, + FIRMWARE_VERSION, + sec2_falcon, + bar, + )?; + + sec2_falcon.reset(bar)?; + sec2_falcon.load(dev, bar, &booter_unloader)?; + let _ =3D sec2_falcon.boot(bar, Some(0xff), Some(0xff))?; + + let wpr2_hi =3D bar.read(regs::NV_PFB_PRI_MMU_WPR2_ADDR_HI); + if wpr2_hi.is_wpr2_set() { + dev_err!(dev, "WPR2 region still set after Booter Unloader= ran\n"); + return Err(EBUSY); + } + } + + dev_info!(dev, "successfully unloaded\n"); + Ok(()) } } diff --git a/drivers/gpu/nova-core/regs.rs b/drivers/gpu/nova-core/regs.rs index 2f171a4ff9ba..21ff5d15f648 100644 --- a/drivers/gpu/nova-core/regs.rs +++ b/drivers/gpu/nova-core/regs.rs @@ -176,6 +176,11 @@ impl NV_PFB_PRI_MMU_WPR2_ADDR_HI { pub(crate) fn higher_bound(self) -> u64 { u64::from(self.hi_val()) << 12 } + + /// Returns whether the WPR2 region is currently set. + pub(crate) fn is_wpr2_set(self) -> bool { + self.hi_val() !=3D 0 + } } =20 // PGSP --=20 2.53.0