From nobody Fri Apr 3 01:23:06 2026 Received: from BN1PR04CU002.outbound.protection.outlook.com (mail-eastus2azon11010011.outbound.protection.outlook.com [52.101.56.11]) (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 C34D23D6483; Wed, 25 Mar 2026 12:14:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.56.11 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440842; cv=fail; b=FHSjlIiTFqSaQ3Z9l0vNGfFSYQ7Se4UWx8rodosYZqcIwUKYbCZ8rkqa9Se07anKAGMHMmoeKFod5+ZtEEOuUuuzurgYIJguYJjxfHhCY6CpxY3c3iHzdPalNAmE9fKIuN3c9FW14b/Zi6RSRqmOuUkcCbqt1tw0omG0OVpWQk8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440842; c=relaxed/simple; bh=+ITEjcgCswnZyJ3gqQBwqikl7YnTpGMJlcV5Q2lyYes=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=VjBtalWQc/zp3dWLsgFJShmKBDWxwquPjwKNFTjNphVr49v4iVqql2ZJ/0q6kmeMBt4z565wfjuN7Fy9Ch/Lul7QSqxZZWhUMV2Ty950bnvGXeaWIqQVzR5MO2DeeJwQNBX3qHRYmqA/WmDxBfX4HWsuPnE7C5M/6YnhGn9gVjs= 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=RvhcHqK8; arc=fail smtp.client-ip=52.101.56.11 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="RvhcHqK8" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=E39tb1YKz5pRCbOqpwNCZoI4fSZ4zYdkVguZO2pN9+0LoJt57bHVc9Xn9O4rI8gx5BJjWD2fekVwr4Yk8E65Wa0EpT6+LI4japuajneRky5gPd3bxiKYUueqJMO89SguQ6ervqa7axiOv/3zgxz6EWoXn8+WAVo4yjityeAGeUAdFgFOldT7jiGWFhT7YaKEgD28Pb5SYfjm8xmKzFQ0B5oPLzEPrwM8k1RJTDG7X8NRDZPejAc5KZDlVIIhIyzEiVPTFXTGeGTyY0kolNWGhNksbzkX0LrB3e/25BbShVbTiJ3ya+nuiXxbLpYrjqpsg0Lukk0IIgXdJvaKjB9mLg== 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=5wHaLeiWym0mnWXOKFYtk17jkvO4aDmTzYsMQvU1U1I=; b=WGMbexU5vHQWvMsIGpK05iI1toEM7RYog9YULgL7uLK93efcbcszguT1qPR8N5/luvGot3pRNoaVCLViE9wpfkziQ9ym2T9S40ZlG6sBIVOAnHZy0DMS90ROxO4pfgOrxCna8gxVthBVei8P2d2yPmhtHO7y5MG6SK9B1XgJAXAoofzBO1xgaxQigFBrFTGqVd5TN7UrhZ+lanUjGMN5vj4n1z/xG6djwQkaD7Kc/aIqKwlx1jR4skQ+yexomrVDFTc3q3y9MTvb9eTpxisDpJmW+GoI2bZwf53iMJMHO3cNpOyQwQarLR0nDBUzGWO3zZkvbHjbeI7hPAFekPMbWA== 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=5wHaLeiWym0mnWXOKFYtk17jkvO4aDmTzYsMQvU1U1I=; b=RvhcHqK8rhpfXRbGfg7IOdcTGYoVkv9uyZcNIjTQz47t+QvZ6uN5+IKZBcPLRc/SUQTeiKRxOOEq+8QAdfW1OjkJpkBj8MCf4oGEipA9nPNlX75eFC6OjVcw6Uk5SR4DAyndS9JrLzUPd9TTcOCye7DkmcNRaToUNSTlPf49TOAcTYq78ws3AtpWAX180ZV5d2h4aQel1cIrb4i8HkTEhTMZeEgXnBKSl9LZILNsYB89jTfJWKO4OPsjBjtbFyRDtVAi6JvZxe2zWTHJWIZ0mjo2b/200JmB5z5oA7etIpgz9LuMvd8aceVVA6L4/u62QEwQxpnHwCQ5iVwGqzs4yg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from BL0PR12MB2353.namprd12.prod.outlook.com (2603:10b6:207:4c::31) by DM6PR12MB4298.namprd12.prod.outlook.com (2603:10b6:5:21e::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.20; Wed, 25 Mar 2026 12:13:53 +0000 Received: from BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0]) by BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0%4]) with mapi id 15.20.9769.006; Wed, 25 Mar 2026 12:13:53 +0000 From: Eliot Courtney Date: Wed, 25 Mar 2026 21:13:39 +0900 Subject: [PATCH v3 1/9] gpu: nova-core: gsp: add NV_STATUS error code bindings Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260325-rmcontrol-v3-1-f3101093484e@nvidia.com> References: <20260325-rmcontrol-v3-0-f3101093484e@nvidia.com> In-Reply-To: <20260325-rmcontrol-v3-0-f3101093484e@nvidia.com> To: Danilo Krummrich , Alice Ryhl , Alexandre Courbot , David Airlie , Simona Vetter Cc: John Hubbard , Alistair Popple , Joel Fernandes , Timur Tabi , rust-for-linux@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Eliot Courtney X-Mailer: b4 0.15.0 X-ClientProxiedBy: SJ0PR03CA0075.namprd03.prod.outlook.com (2603:10b6:a03:331::20) To BL0PR12MB2353.namprd12.prod.outlook.com (2603:10b6:207:4c::31) 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: BL0PR12MB2353:EE_|DM6PR12MB4298:EE_ X-MS-Office365-Filtering-Correlation-Id: 9ccb2537-bf7a-43ca-cf0b-08de8a67fab7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024|10070799003|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: ZqRyDyY8FMNBJA928mHeLkgv35pCPVvsvnGwH3OcLNnxV38PoZ/l2Jzx9fdwOsvPu0Or15PlCacZWFdN5HweHng2YEAcD32s3sLITFfF5x30+UWEyMXTgjqqpBzKy8VbqVvbiiOnNmYecw8a5evtrjLF/bK8wBTF/Bq1pmE2RMKBQKxxG8EsSE/hIJnEzKnpiQf8LtpqsBqmOLx6QGUwX7kq0VJeAIwcBGgYSRj7uj3wefYV18HJC/O5Z3xueWSYKMqunk4b63qBmjsDZ7G76iZXF1P7AwQwUFnxzYvIEtN/s8WXGFLgLn8Sk5h3XLOcfC29X/tCA+/bdBSoB15WBAzngpkmyfMiwHnJ3lrTLvkzmlJvN1rS6YEoyBGfiWkGHPtoZLM8Z/Llbc6Ms2jb8qywcJoWgvzgTZ2GxwP4ahWiKVUZwArec/mODnZCVOJEsLLoqsO5RBZSetCVXnxJkJCQ9U3o44wMQ1H3m2sKTHqcznIGJSTSNfeBcd7GSvzDmf2GzFdJk5POPWXloHinedWDxkprUYHWf6/X57c4ut/r/ctri2mwgCMHYrmr4ws0Gp+JHIyaP0G0LSlhwXJRbwF5OacMeFzkLo+ckNaf1GKbWhrE2J4Ch9r+ODoBqptlNj4rKSQjloF0jspITqKyZZsRRttdQfFOJI59LM6U+xVzaJv3T2PIXk7+bd2cLF3aeTBMs4uTW9k6PqcDIOh4sJT5wbmvnzaaLjHRxoy9J3A= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR12MB2353.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(10070799003)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UWFMQS8wY3dMRTFxbWJvclgyVTFEVkRxK3JmM0NidGVPYzFic3RwTnlybjBB?= =?utf-8?B?Y1FsaWREZk42TCtTTjJ0dnJBRUtwQlNhaWtWaHNyblo0Ui9xODNjRHJGd05s?= =?utf-8?B?RzhrQXE2S0QyZW1sb09hT01OZEQ0akFidGdpZ2FIMU5jbXRjQjVlTUVVNU9o?= =?utf-8?B?a1dUWlcvZk5jekgrbWlxd2ZKeHR2eEttN3pnU09LMGdzRTIvODBoanpDMTMx?= =?utf-8?B?em53RFZJSFhoLzF5U282bEl0ZDkzalVINkdReVNFTkE0enRCM1lMczVpN2FJ?= =?utf-8?B?QTA0d1Fua2ZQRDVOc0ZNbTNGVGRwNWNJQzgvRU5RNmcxWWZtazh3NThJK2pX?= =?utf-8?B?dUsveWlOcG5zYVROM2VYYzJpcUplaVQ2YXJERWtWZnlmUWZlaUdGd0Z2L1RL?= =?utf-8?B?OHdNNlZ5OHRhZWVBejFFeVRoTm9JV0hPNkxGVE0rbTZpR2VxWVhUQ0hjNWxT?= =?utf-8?B?S2l4VHZ0dC9BbVJianlGUnVmUnQzWmk5VFBWNzMwTHlDV3lwclJnTkFMeGxp?= =?utf-8?B?NzYvMXhlZ2pHY3lySzN6VWpncXpwWTcwVERRRHpYTm1zdFJoemhOM3drRjlm?= =?utf-8?B?NWoyaFJrNEw3YS9HcUYzMFJiWTY1LzdieGdtRm5OZVp2S1lTZlhNQzRQRWZk?= =?utf-8?B?ZEQyZWlGaklicm9yb2J0c1Q2eTR6L1Q1OG1mM2FmUGNlZzlqaUhzaEdnanJ2?= =?utf-8?B?bWUzRXlpMEtwejNlSnNzc1VJbThjelNObUJpN3FOb1FGNU9CRGoxdUtsbC95?= =?utf-8?B?YWZKM084Ujlwa1ROMkgydFVXY2dMZGNidGZSQUwvNS9rOWhMRGdmeGYvUHUr?= =?utf-8?B?T1JVUG9rdmRoVE5lUmJkdDRvOTBqdmNzOUdpODlFbStOVGl6MjRCa0RuaXVm?= =?utf-8?B?ZThLTzk0U2FPemxkQTl5am9uUXozcjJocTl2SWlJb2EzaVVJMGVLTlZnajFP?= =?utf-8?B?dnFIbkNtWlJaK01uS0MrOXVHZDRsZ0ZyaDBFNUhRNEIxSmZMN21lZmNJVWcx?= =?utf-8?B?amlzME4yOXp4aU5Jc01ReldjRzNMeXlXM1IrK1E5NnRyK01OVTBJZHR0cG9P?= =?utf-8?B?dlNOVHRPZFkwajNDSjRkSHJieE0wVVVTb2dqbnpFb09ZdUMzM2dWQWF1ZEgv?= =?utf-8?B?emRPSkhtcWhxZ2puZnRSUU1DUENzMkZFa3lKZWhvZ1FNbnNXWittOVdQK3V3?= =?utf-8?B?TDVpamlNaVR5eUNFaGpVR2loY2NyQ2NIRkl1WFg2anVxN2RUN3AxSEoyNUE1?= =?utf-8?B?M2c4QmQ2WVVScEkrVWNwdHhwVTF4bXlENUZHa0NDQW1DMXRRY2NhNmZRb0FU?= =?utf-8?B?UzZ6MFBxelpYQmVadFpuRHpWODRkcXVCYW9Ba0IyNExPZW4wK1F3R09uKzJ0?= =?utf-8?B?YzBOV3NON1k1WWVlNHVudzRiQjByTVcyTXZjaGQ1c05Ha3FGMmswN0NIVkc4?= =?utf-8?B?NGw1NkdiY2FCUFNHSzlaOWZNejhjZFJmdXhST0x1ZkxPQi9LTFZWUkRTOHNW?= =?utf-8?B?ek9nTFJ6aUR4ZXBuL2x3SFBVL0ZqMzhoOVlQbTJHcTJJZE4yN2UwOHB3ajZ0?= =?utf-8?B?dUFBTHZWSFhrbmVZeXcrWHZTbXNxenJGa2Fpb1B6N3MwdFQyY0xMZkdjZkQr?= =?utf-8?B?VThDTlVKejRaa1RWWjBxYmV4bytEdTJvREljYlV1NmM5QUFGcFREclYyMXM4?= =?utf-8?B?ZVNoZXYrM3pRcVJkeklaWnF2amxQZUNLT2oxWEJqZE1zbGZrYTRtK2hKRXd1?= =?utf-8?B?MElqMFQ0WkpZRWg1dDdzWGhLZXRGcHFSdCswdzZ0aVNzR1A0KzA3TVVPRGF4?= =?utf-8?B?d0NZaHE4bStxZDBvVC96ZTVGQW41MVR2TTNTK0lhejB3M3JSRUdiUG5aV3lO?= =?utf-8?B?dVl3aU9HYzFsR1RqODVvOUFiTUd1aENFUmxpR1EwVzhyQmJxUm1OckpiRndG?= =?utf-8?B?c05OVlJUTGd1RjFvOUNmd3JwV1NaWDJ2SjBlR056ckZFY3hTSkx1L0R0aGhF?= =?utf-8?B?L2NwTHo1eENudW93OVNHQ01PVy9PRFdaT1YwM3NzUkZvcVk2ZVpXRjdCRkt5?= =?utf-8?B?dXo5Tks5b1VlU0g0YUs2QXFKbDZRdWhzM1dJVEhxVzFrSWF0LzVwZzJxWjVk?= =?utf-8?B?WTdDa2R6OG1ML0ZCd0ZRM0FHWG1sWWhVYzhzNDRkOEwzUXVuTXl0QTdoK095?= =?utf-8?B?Y1p5TGJraGdUVUl4YWNFU01wUnRWNjVoUFR4OHFEcmdYTDI0WlkxWHFkS00y?= =?utf-8?B?emNsenBtTHJsMnl2Z3JQNFVuMmFJVGNwVmc1Snc5YklRWFYwRG1OQlNYUTNy?= =?utf-8?B?OW9EbWI1S2JpMExTY2tRVXkxaGtsQ3I1QUh5ZE83SDcwOVpFQXA4U0hDQkp5?= =?utf-8?Q?Q7eRx6CgwCkanfacUpFkTkOfYbAuXCZwCfJVCdx31qMjm?= X-MS-Exchange-AntiSpam-MessageData-1: sfD6w9L8PlicpA== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9ccb2537-bf7a-43ca-cf0b-08de8a67fab7 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2026 12:13:52.9219 (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: fBgJPP8PNWDjzH5perIwxsbEQZrzztM/o3abtDZk6Ovk2qtQ/dCzjXG4JDLTOQ4id1BT5gL30+b6lXggRx5Dfw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4298 Add bindgen generated constants for NV_STATUS. This is used for RM control messages. Signed-off-by: Eliot Courtney --- drivers/gpu/nova-core/gsp/fw/r570_144/bindings.rs | 144 ++++++++++++++++++= ++++ 1 file changed, 144 insertions(+) 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..dd37a7fd58c6 100644 --- a/drivers/gpu/nova-core/gsp/fw/r570_144/bindings.rs +++ b/drivers/gpu/nova-core/gsp/fw/r570_144/bindings.rs @@ -379,6 +379,150 @@ pub struct NV2080_CTRL_CMD_FB_GET_FB_REGION_INFO_PARA= MS { pub __bindgen_padding_0: [u8; 4usize], pub fbRegion: [NV2080_CTRL_CMD_FB_GET_FB_REGION_FB_REGION_INFO; 16usiz= e], } +pub const NV_OK: _bindgen_ty_4 =3D 0; +pub const NV_ERR_GENERIC: _bindgen_ty_4 =3D 65535; +pub const NV_ERR_BROKEN_FB: _bindgen_ty_4 =3D 1; +pub const NV_ERR_BUFFER_TOO_SMALL: _bindgen_ty_4 =3D 2; +pub const NV_ERR_BUSY_RETRY: _bindgen_ty_4 =3D 3; +pub const NV_ERR_CALLBACK_NOT_SCHEDULED: _bindgen_ty_4 =3D 4; +pub const NV_ERR_CARD_NOT_PRESENT: _bindgen_ty_4 =3D 5; +pub const NV_ERR_CYCLE_DETECTED: _bindgen_ty_4 =3D 6; +pub const NV_ERR_DMA_IN_USE: _bindgen_ty_4 =3D 7; +pub const NV_ERR_DMA_MEM_NOT_LOCKED: _bindgen_ty_4 =3D 8; +pub const NV_ERR_DMA_MEM_NOT_UNLOCKED: _bindgen_ty_4 =3D 9; +pub const NV_ERR_DUAL_LINK_INUSE: _bindgen_ty_4 =3D 10; +pub const NV_ERR_ECC_ERROR: _bindgen_ty_4 =3D 11; +pub const NV_ERR_FIFO_BAD_ACCESS: _bindgen_ty_4 =3D 12; +pub const NV_ERR_FREQ_NOT_SUPPORTED: _bindgen_ty_4 =3D 13; +pub const NV_ERR_GPU_DMA_NOT_INITIALIZED: _bindgen_ty_4 =3D 14; +pub const NV_ERR_GPU_IS_LOST: _bindgen_ty_4 =3D 15; +pub const NV_ERR_GPU_IN_FULLCHIP_RESET: _bindgen_ty_4 =3D 16; +pub const NV_ERR_GPU_NOT_FULL_POWER: _bindgen_ty_4 =3D 17; +pub const NV_ERR_GPU_UUID_NOT_FOUND: _bindgen_ty_4 =3D 18; +pub const NV_ERR_HOT_SWITCH: _bindgen_ty_4 =3D 19; +pub const NV_ERR_I2C_ERROR: _bindgen_ty_4 =3D 20; +pub const NV_ERR_I2C_SPEED_TOO_HIGH: _bindgen_ty_4 =3D 21; +pub const NV_ERR_ILLEGAL_ACTION: _bindgen_ty_4 =3D 22; +pub const NV_ERR_IN_USE: _bindgen_ty_4 =3D 23; +pub const NV_ERR_INFLATE_COMPRESSED_DATA_FAILED: _bindgen_ty_4 =3D 24; +pub const NV_ERR_INSERT_DUPLICATE_NAME: _bindgen_ty_4 =3D 25; +pub const NV_ERR_INSUFFICIENT_RESOURCES: _bindgen_ty_4 =3D 26; +pub const NV_ERR_INSUFFICIENT_PERMISSIONS: _bindgen_ty_4 =3D 27; +pub const NV_ERR_INSUFFICIENT_POWER: _bindgen_ty_4 =3D 28; +pub const NV_ERR_INVALID_ACCESS_TYPE: _bindgen_ty_4 =3D 29; +pub const NV_ERR_INVALID_ADDRESS: _bindgen_ty_4 =3D 30; +pub const NV_ERR_INVALID_ARGUMENT: _bindgen_ty_4 =3D 31; +pub const NV_ERR_INVALID_BASE: _bindgen_ty_4 =3D 32; +pub const NV_ERR_INVALID_CHANNEL: _bindgen_ty_4 =3D 33; +pub const NV_ERR_INVALID_CLASS: _bindgen_ty_4 =3D 34; +pub const NV_ERR_INVALID_CLIENT: _bindgen_ty_4 =3D 35; +pub const NV_ERR_INVALID_COMMAND: _bindgen_ty_4 =3D 36; +pub const NV_ERR_INVALID_DATA: _bindgen_ty_4 =3D 37; +pub const NV_ERR_INVALID_DEVICE: _bindgen_ty_4 =3D 38; +pub const NV_ERR_INVALID_DMA_SPECIFIER: _bindgen_ty_4 =3D 39; +pub const NV_ERR_INVALID_EVENT: _bindgen_ty_4 =3D 40; +pub const NV_ERR_INVALID_FLAGS: _bindgen_ty_4 =3D 41; +pub const NV_ERR_INVALID_FUNCTION: _bindgen_ty_4 =3D 42; +pub const NV_ERR_INVALID_HEAP: _bindgen_ty_4 =3D 43; +pub const NV_ERR_INVALID_INDEX: _bindgen_ty_4 =3D 44; +pub const NV_ERR_INVALID_IRQ_LEVEL: _bindgen_ty_4 =3D 45; +pub const NV_ERR_INVALID_LIMIT: _bindgen_ty_4 =3D 46; +pub const NV_ERR_INVALID_LOCK_STATE: _bindgen_ty_4 =3D 47; +pub const NV_ERR_INVALID_METHOD: _bindgen_ty_4 =3D 48; +pub const NV_ERR_INVALID_OBJECT: _bindgen_ty_4 =3D 49; +pub const NV_ERR_INVALID_OBJECT_BUFFER: _bindgen_ty_4 =3D 50; +pub const NV_ERR_INVALID_OBJECT_HANDLE: _bindgen_ty_4 =3D 51; +pub const NV_ERR_INVALID_OBJECT_NEW: _bindgen_ty_4 =3D 52; +pub const NV_ERR_INVALID_OBJECT_OLD: _bindgen_ty_4 =3D 53; +pub const NV_ERR_INVALID_OBJECT_PARENT: _bindgen_ty_4 =3D 54; +pub const NV_ERR_INVALID_OFFSET: _bindgen_ty_4 =3D 55; +pub const NV_ERR_INVALID_OPERATION: _bindgen_ty_4 =3D 56; +pub const NV_ERR_INVALID_OWNER: _bindgen_ty_4 =3D 57; +pub const NV_ERR_INVALID_PARAM_STRUCT: _bindgen_ty_4 =3D 58; +pub const NV_ERR_INVALID_PARAMETER: _bindgen_ty_4 =3D 59; +pub const NV_ERR_INVALID_PATH: _bindgen_ty_4 =3D 60; +pub const NV_ERR_INVALID_POINTER: _bindgen_ty_4 =3D 61; +pub const NV_ERR_INVALID_REGISTRY_KEY: _bindgen_ty_4 =3D 62; +pub const NV_ERR_INVALID_REQUEST: _bindgen_ty_4 =3D 63; +pub const NV_ERR_INVALID_STATE: _bindgen_ty_4 =3D 64; +pub const NV_ERR_INVALID_STRING_LENGTH: _bindgen_ty_4 =3D 65; +pub const NV_ERR_INVALID_READ: _bindgen_ty_4 =3D 66; +pub const NV_ERR_INVALID_WRITE: _bindgen_ty_4 =3D 67; +pub const NV_ERR_INVALID_XLATE: _bindgen_ty_4 =3D 68; +pub const NV_ERR_IRQ_NOT_FIRING: _bindgen_ty_4 =3D 69; +pub const NV_ERR_IRQ_EDGE_TRIGGERED: _bindgen_ty_4 =3D 70; +pub const NV_ERR_MEMORY_TRAINING_FAILED: _bindgen_ty_4 =3D 71; +pub const NV_ERR_MISMATCHED_SLAVE: _bindgen_ty_4 =3D 72; +pub const NV_ERR_MISMATCHED_TARGET: _bindgen_ty_4 =3D 73; +pub const NV_ERR_MISSING_TABLE_ENTRY: _bindgen_ty_4 =3D 74; +pub const NV_ERR_MODULE_LOAD_FAILED: _bindgen_ty_4 =3D 75; +pub const NV_ERR_MORE_DATA_AVAILABLE: _bindgen_ty_4 =3D 76; +pub const NV_ERR_MORE_PROCESSING_REQUIRED: _bindgen_ty_4 =3D 77; +pub const NV_ERR_MULTIPLE_MEMORY_TYPES: _bindgen_ty_4 =3D 78; +pub const NV_ERR_NO_FREE_FIFOS: _bindgen_ty_4 =3D 79; +pub const NV_ERR_NO_INTR_PENDING: _bindgen_ty_4 =3D 80; +pub const NV_ERR_NO_MEMORY: _bindgen_ty_4 =3D 81; +pub const NV_ERR_NO_SUCH_DOMAIN: _bindgen_ty_4 =3D 82; +pub const NV_ERR_NO_VALID_PATH: _bindgen_ty_4 =3D 83; +pub const NV_ERR_NOT_COMPATIBLE: _bindgen_ty_4 =3D 84; +pub const NV_ERR_NOT_READY: _bindgen_ty_4 =3D 85; +pub const NV_ERR_NOT_SUPPORTED: _bindgen_ty_4 =3D 86; +pub const NV_ERR_OBJECT_NOT_FOUND: _bindgen_ty_4 =3D 87; +pub const NV_ERR_OBJECT_TYPE_MISMATCH: _bindgen_ty_4 =3D 88; +pub const NV_ERR_OPERATING_SYSTEM: _bindgen_ty_4 =3D 89; +pub const NV_ERR_OTHER_DEVICE_FOUND: _bindgen_ty_4 =3D 90; +pub const NV_ERR_OUT_OF_RANGE: _bindgen_ty_4 =3D 91; +pub const NV_ERR_OVERLAPPING_UVM_COMMIT: _bindgen_ty_4 =3D 92; +pub const NV_ERR_PAGE_TABLE_NOT_AVAIL: _bindgen_ty_4 =3D 93; +pub const NV_ERR_PID_NOT_FOUND: _bindgen_ty_4 =3D 94; +pub const NV_ERR_PROTECTION_FAULT: _bindgen_ty_4 =3D 95; +pub const NV_ERR_RC_ERROR: _bindgen_ty_4 =3D 96; +pub const NV_ERR_REJECTED_VBIOS: _bindgen_ty_4 =3D 97; +pub const NV_ERR_RESET_REQUIRED: _bindgen_ty_4 =3D 98; +pub const NV_ERR_STATE_IN_USE: _bindgen_ty_4 =3D 99; +pub const NV_ERR_SIGNAL_PENDING: _bindgen_ty_4 =3D 100; +pub const NV_ERR_TIMEOUT: _bindgen_ty_4 =3D 101; +pub const NV_ERR_TIMEOUT_RETRY: _bindgen_ty_4 =3D 102; +pub const NV_ERR_TOO_MANY_PRIMARIES: _bindgen_ty_4 =3D 103; +pub const NV_ERR_UVM_ADDRESS_IN_USE: _bindgen_ty_4 =3D 104; +pub const NV_ERR_MAX_SESSION_LIMIT_REACHED: _bindgen_ty_4 =3D 105; +pub const NV_ERR_LIB_RM_VERSION_MISMATCH: _bindgen_ty_4 =3D 106; +pub const NV_ERR_PRIV_SEC_VIOLATION: _bindgen_ty_4 =3D 107; +pub const NV_ERR_GPU_IN_DEBUG_MODE: _bindgen_ty_4 =3D 108; +pub const NV_ERR_FEATURE_NOT_ENABLED: _bindgen_ty_4 =3D 109; +pub const NV_ERR_RESOURCE_LOST: _bindgen_ty_4 =3D 110; +pub const NV_ERR_PMU_NOT_READY: _bindgen_ty_4 =3D 111; +pub const NV_ERR_FLCN_ERROR: _bindgen_ty_4 =3D 112; +pub const NV_ERR_FATAL_ERROR: _bindgen_ty_4 =3D 113; +pub const NV_ERR_MEMORY_ERROR: _bindgen_ty_4 =3D 114; +pub const NV_ERR_INVALID_LICENSE: _bindgen_ty_4 =3D 115; +pub const NV_ERR_NVLINK_INIT_ERROR: _bindgen_ty_4 =3D 116; +pub const NV_ERR_NVLINK_MINION_ERROR: _bindgen_ty_4 =3D 117; +pub const NV_ERR_NVLINK_CLOCK_ERROR: _bindgen_ty_4 =3D 118; +pub const NV_ERR_NVLINK_TRAINING_ERROR: _bindgen_ty_4 =3D 119; +pub const NV_ERR_NVLINK_CONFIGURATION_ERROR: _bindgen_ty_4 =3D 120; +pub const NV_ERR_RISCV_ERROR: _bindgen_ty_4 =3D 121; +pub const NV_ERR_FABRIC_MANAGER_NOT_PRESENT: _bindgen_ty_4 =3D 122; +pub const NV_ERR_ALREADY_SIGNALLED: _bindgen_ty_4 =3D 123; +pub const NV_ERR_QUEUE_TASK_SLOT_NOT_AVAILABLE: _bindgen_ty_4 =3D 124; +pub const NV_ERR_KEY_ROTATION_IN_PROGRESS: _bindgen_ty_4 =3D 125; +pub const NV_ERR_TEST_ONLY_CODE_NOT_ENABLED: _bindgen_ty_4 =3D 126; +pub const NV_ERR_SECURE_BOOT_FAILED: _bindgen_ty_4 =3D 127; +pub const NV_ERR_INSUFFICIENT_ZBC_ENTRY: _bindgen_ty_4 =3D 128; +pub const NV_ERR_NVLINK_FABRIC_NOT_READY: _bindgen_ty_4 =3D 129; +pub const NV_ERR_NVLINK_FABRIC_FAILURE: _bindgen_ty_4 =3D 130; +pub const NV_ERR_GPU_MEMORY_ONLINING_FAILURE: _bindgen_ty_4 =3D 131; +pub const NV_ERR_REDUCTION_MANAGER_NOT_AVAILABLE: _bindgen_ty_4 =3D 132; +pub const NV_ERR_RESOURCE_RETIREMENT_ERROR: _bindgen_ty_4 =3D 134; +pub const NV_WARN_HOT_SWITCH: _bindgen_ty_4 =3D 65537; +pub const NV_WARN_INCORRECT_PERFMON_DATA: _bindgen_ty_4 =3D 65538; +pub const NV_WARN_MISMATCHED_SLAVE: _bindgen_ty_4 =3D 65539; +pub const NV_WARN_MISMATCHED_TARGET: _bindgen_ty_4 =3D 65540; +pub const NV_WARN_MORE_PROCESSING_REQUIRED: _bindgen_ty_4 =3D 65541; +pub const NV_WARN_NOTHING_TO_DO: _bindgen_ty_4 =3D 65542; +pub const NV_WARN_NULL_OBJECT: _bindgen_ty_4 =3D 65543; +pub const NV_WARN_OUT_OF_RANGE: _bindgen_ty_4 =3D 65544; +pub type _bindgen_ty_4 =3D ffi::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone, MaybeZeroable)] pub struct NV2080_CTRL_GPU_GET_GID_INFO_PARAMS { --=20 2.53.0 From nobody Fri Apr 3 01:23:06 2026 Received: from BN1PR04CU002.outbound.protection.outlook.com (mail-eastus2azon11010011.outbound.protection.outlook.com [52.101.56.11]) (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 132943D903E; Wed, 25 Mar 2026 12:14:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.56.11 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440845; cv=fail; b=cGWVecMUqJABz1pIv4XA/zzR7ZUXVDB7504c4TvhuMwWU5zP8hMMM7BRmzN0bWtpTfzwtnyFWdaUDsoB0lJwVx5S5qFt83IQbledCsLH2YymObdu2UhF4U0a2swpHDJz4FEOFTmWF+yHQ+/sOdXaNS4yB1FTLBUq42QUxfEYtUI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440845; c=relaxed/simple; bh=gOPcGgnOHWqoCnzn5aAOLPlUKdEEEzU/Wrm0WLrLij4=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=dYIEDU0inAEA7lKGCRPdEhCGBJ7fLLNeoTWnBKiJgdPn40IfvftxyMr//2EF0ZHYPmMKQPf9LhymHCO17REaRcmJcoENpUU8GJ7S1wXL+6OfpVqNtPi05btC+whrgbF0FuXd3wshhv9ePvLLoE35x+zGQHZR8QXQ2OfAnRPRWx8= 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=FDYLL/8I; arc=fail smtp.client-ip=52.101.56.11 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="FDYLL/8I" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fseDHAnvtezJ5TWbM0rL3F473Tn5Q/6lMzC1TPkb1hdCwwQwSqY7T/m3D87ZCTFOEFAFOSBThql51WRLN6uW1YDJ2hegmDTrw5fLer+m/be9UA72eLB8XQVMX5A815ga5UfDEQaha7DkfGuRLxaauFwIWjc2WY+Yx1R0akJXJKOs46yyeZKbH95MfCeO2YDDK0L2eEdoQ/+ZdG0B8LjXkmeZvUaIcsAge1gsFcmWLURo50FUSqml0hapHteL3XKWUtVC22bsscDE+uvUZZeg329Dg7w/iH5bUlgRNAl6MA59A3I8ZUbhulsmN092pXlZVFQlmmz4HMnX/Ti93XA6XQ== 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=d3rhb5WgWWz6atyvtVrDptA1s76ZL3JwNecug9mDQ4Y=; b=rXyvnRhM0PpU1TCOYSQkmQtERp7OFm4vKJTt+OGTMnTf4knlGsX+qWHUH/JUjGjplsTKPntViT/hpfaYOTfMsPt79ojOk/aN2qYD3Dog/nkYuf4pE0IU7z7TBMWtFZIuw99WF6Ko82zoFtFoN/ECn1vgYWncTSqn409/rSpMSBIyMquaJ59JyQ21EJ51KBpzNSlDS+ydQd8HWQUdieFu5nP+28Rf68o04V7ydifCEWT9hS10FBcfHW4pBODMJZEKslHkxzTK75CUI1IaFKbHH1qt3m/YG6SdAxwSjBevzOvzWPK2X+3xdQ59sTmbYxAEQ149zs3ZtTT8GtpmI09aCQ== 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=d3rhb5WgWWz6atyvtVrDptA1s76ZL3JwNecug9mDQ4Y=; b=FDYLL/8IVhc32VTMRONcn/e4oLx/+wwepGKneYVC3hXFlPFNjZ/rP8Devc60Nuho/ecfJU19E14r0C38nEchzlFcV6elpZ2k5ZR8fERGm12hkDcE5PVDiUGZVhLGypCyj+gTOhjCoRgBYSMVH8DQF8msIAchL0YmkOR6T6OXrPfyAygQk85HdKQ2DRNPW7+ogire1XyRctYdOIP53yIilTGLLlDrUIERDWLL4ZDo8c/yE6aszm/ALqe/h1ImDd9W3Alcx1XIoCEU0DG/pRf8u55BOkQRAYpa+Amj8gtwk9o3Pr6bm33cxwT2iFnlfhNdkW5PzVrxAPhzicxURLZVRw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from BL0PR12MB2353.namprd12.prod.outlook.com (2603:10b6:207:4c::31) by DM6PR12MB4298.namprd12.prod.outlook.com (2603:10b6:5:21e::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.20; Wed, 25 Mar 2026 12:13:56 +0000 Received: from BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0]) by BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0%4]) with mapi id 15.20.9769.006; Wed, 25 Mar 2026 12:13:56 +0000 From: Eliot Courtney Date: Wed, 25 Mar 2026 21:13:40 +0900 Subject: [PATCH v3 2/9] gpu: nova-core: gsp: add NvStatus enum for RM control errors Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260325-rmcontrol-v3-2-f3101093484e@nvidia.com> References: <20260325-rmcontrol-v3-0-f3101093484e@nvidia.com> In-Reply-To: <20260325-rmcontrol-v3-0-f3101093484e@nvidia.com> To: Danilo Krummrich , Alice Ryhl , Alexandre Courbot , David Airlie , Simona Vetter Cc: John Hubbard , Alistair Popple , Joel Fernandes , Timur Tabi , rust-for-linux@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Eliot Courtney X-Mailer: b4 0.15.0 X-ClientProxiedBy: BY5PR13CA0022.namprd13.prod.outlook.com (2603:10b6:a03:180::35) To BL0PR12MB2353.namprd12.prod.outlook.com (2603:10b6:207:4c::31) 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: BL0PR12MB2353:EE_|DM6PR12MB4298:EE_ X-MS-Office365-Filtering-Correlation-Id: 33f10fb9-4115-45ba-184d-08de8a67fcd9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024|10070799003|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: PnUmt0JkEXwyia+XQ3Jp9jpnnqj4k3qhDI//gkMEx7uHYNZDgssv2vTa+ZlyG26qDGqQQ2+EoJKOitCxpkXNaKlclwvQfRpKqt15SbncFr19D3quMT5+h/5+RvEzVz+iwmS9WqXnV6cE6fhHJjrvoi/usQnPT/9nkqF+k7TkJ4eS+iOLBYoBV3XnAA69UdJMe6PLTNo7FtLOgJ88PdH8Zj6lzYuqbOpm7V6aPOKqoLdTnXrZNt6nTK4jRU0qJJ0dc5N/oxSNH1ypwJfBDBi9TL5jHmUYglSiWxIXYbzgbyF02lq1AG33TYLvri65SlO4OGN9yMFvhBaVdj1qlh36qDWGr9GOiKCv73g+FNav+bvQgyuz9v3qy+GIU9aciK0Ipvgpd+2K+d7QxHMFfWFPIfXtSbwEm3QK+guMil6hPeGEHVvefG6OgHJMJtmfGcZ7BrittSD4kYCJbiVB9by4xz+z13Ch921NghrBhgOUgpNxDzq9FkWeFWC5fhC96DPEzkcr6LdZHZLDgxi7vIEJ63e1oBXXDRErUIAOGoUzQ1IbKalYe3J1BCurevuNZ6lIyjUgLspCN0Vnju3KeKnBbs5BMyNFJrymxe/qn/0XBgmNxnNMDahjet20aEnUi/HWTAQE+IS6fATkUPXq33LJBzRwULPUFsWgoJE9q2CntW+5qZeHNmbWqTSVNuXduBiyiofzU2E5PHN0LRwXVZjYpHCRR8MpKTs77r0WGKGXZVI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR12MB2353.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(10070799003)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cGtpcjNwTFk1TG9mRjU2UXh3MFJ3MmtlSFRuL20rTDVYeGY4ZXAvdFk2S3F5?= =?utf-8?B?U0l0TldTVXFyNUJUUWhqcnltQ0RGK0NVWFRXZ3I1SWxXbDFhUEdlRGJhV3pP?= =?utf-8?B?UXNXaFZvRVg1SjQxMmlmM3V0clVOS1F4MUlsdFFaYUpYR1R1VmcwTGQ4UzNG?= =?utf-8?B?cDFKRytWUlJOU2NBZzFMTHFnbEI1bkdOOUMxdHp5ZEltSlBOS2NkV1M1L3RY?= =?utf-8?B?cXYyaGQ0QkdsLzJuSlcrbkdEekpZMnFUOFYweTZsMHUrY0VCRVUxdEVLMUly?= =?utf-8?B?Sjljbk9mV2JVZFVZQ3hlakQybTl4NkVMeklqM2NteXhnK1JtcERoQXE1OWhO?= =?utf-8?B?dm9qb0JtaHdDVXNjZU0wU0R5U21oUEoyd0dxYTFKa0pDM1NCNVUwb0s1ZFpN?= =?utf-8?B?NDdjakRsT3pKU2VmdExaaFNkcURFcG0wN0k4S3o5eDNJTW01ZVExTjdjdWF4?= =?utf-8?B?QUpWYU85UFQ1NkxTU1FZRDUxTXdoQUVJT2hmUzlaUE1wbnh6QjFJbDdxcnJs?= =?utf-8?B?SGFLeWErTDZnNlVSZ3dFZkh5WnkzRU9CeWpiQ3RsK0xQL2lpcmhLeFlGN1Nk?= =?utf-8?B?b3FnQnJMbjdTN1RhcStRSGV3WmtNdmZxajZwRDlCZGhQTkRMYzZDT1I5VjN0?= =?utf-8?B?QkxKR1RFdUYxaGZ5U0t6VTMyWGhTZWpsTnkrNldyMGVBMVJFcHFiMFNlUmRm?= =?utf-8?B?M3czbUZJdndQYjV2d200emlwUTE2Z1IzcnhwT2pOb3VHOW5lb1AzSHBRc01w?= =?utf-8?B?YjN1ZUVleTF5L0VoUThEbTd3UTVBbHlvWkduaGUzUmloVHRoVjg1SFhJQWZ2?= =?utf-8?B?UHYrUnVoSHA2ekZYSUYzdzMxRk4rL2JsbExRTDROSFcxcGVMWDlNUUZUS2lR?= =?utf-8?B?SDN5RjJmVitvdVo5N1lwWGRvNGllNG1QL2ZUZlR3em1xSFdmOEh4V3hYWlhH?= =?utf-8?B?TUFkRFdQa3JUWHBURDhveENmdkF6a1J2T1NFMTFRb2x1ajFVRW5aNHhjS0x5?= =?utf-8?B?Nm90cHFYSk5IZTFZeVk5Y1JOM1ltRWFTbW1ZVFkyWnRnejNWSktUb3pmdUZo?= =?utf-8?B?bnRvTHR4SmxTd0EyN2drd1BpR2VwUlFaVjMvcHZ6QVlqRXdQSkdmcGczL3pJ?= =?utf-8?B?N2F0S3Z4cjVpbVIxbmpsUXh0QTJ3M0Nvd3VBR2ppL3gvYzl5TnB2Z1I4UWJW?= =?utf-8?B?NlpveVU2Sm95bHE0SERDQmtQU2lFY09GdkVyZVlXZUpsNHNFT2Y3VXY5dURt?= =?utf-8?B?R2NzS1ZWWW9ZdkV0bHh6bmNUcGpFeUNmNDIySGYwZ0pVYmhSaDFUUHcxWWJG?= =?utf-8?B?SEVnYVhtRXpVcFZaOHFFd2dDOHVXZ2szSWFXQUNMeVV1WFU5K2FFN2RHWDk3?= =?utf-8?B?bjFOT3NWMmJ0K1pwS0RQdXJKWVBjYTZYUzFsYU5mcUlhZmQvVWR6a0V0dVBl?= =?utf-8?B?blFlcnhNYjdtd0tzQ0k1bmhVM093U3NWTGhTelhVcUJHdFlsbGJyalRrMk8r?= =?utf-8?B?dCtSbEdYYkQ0WFQvems5T3Z2VXI2Z3BrLzVrTTQwcGdndmxLbjBqQ0p2b3I0?= =?utf-8?B?VXd4cXg2UTZrMzY0S2JxdmRJdU85bkdwSktEeHlUeDNPUjVKY1h1R3NDZjI3?= =?utf-8?B?bE1KMElqb0NFQVc1UllGNVByRlF3VmRTUlZnRnFVc2RJN3NpYUg5YUhEd1pm?= =?utf-8?B?U3ZxOWEyQVc0VmVaTW5kTHNIcC9OTlNFUzRDRXFldFNPRmxaMnNYd1g5NE1a?= =?utf-8?B?U3pEOTdsZGNReU1OQVVTQ3JsY3AzaDd0NTBlRkpNZVIxRUoxR3ZEZmoyUUhL?= =?utf-8?B?OHNCMkFHL0tGZTNvVm81MnZJVkhDcXVveGk3akptQzd3YnBLdGszdTJydGdE?= =?utf-8?B?NXVnd1ZzRkxINkduVTdZaDlkTG1BUnhCVEhQS3FRSXBHaHFzckF1cGttRXh3?= =?utf-8?B?bWFtOHJneGRTUGFXQUZpU0RZckp3Vkw0OXk4aFN3YlE4c3hCb0JFZDhycnpJ?= =?utf-8?B?MkU3NE1WMjlSSzJPRndLWll2blJxMVpHYkJiOHliOVN5S2tuZnJBeTNvOS9h?= =?utf-8?B?TVpja1pkSWZBb2RGUTFWZnR6cFptWEZaVStpTXBINUYrcExnVDdQZTZwUFVt?= =?utf-8?B?cUhpOThremNabm5xSWg1Ly9rSC9LSGJ4a2VydEVoUHJGN1BGSm5nSytGMWxm?= =?utf-8?B?Z2FBUjN5Y0YzcmFicXRtUnRHYjFMN2QxY3ljNm10ZjNEWm1MU1o2MWgzaTd6?= =?utf-8?B?SWhjVWRzYVN6TXlTRjBvMjVlZEVzNXY3NGR6NkxCOC9GMWhLd3NvTG5TOUds?= =?utf-8?B?NlJMNWM3RWltK0RCV2Q2bXREQTBTL1pxTU00QlJaMCtVRkhOY1U0cjF0TDZz?= =?utf-8?Q?1nrZvQsFJSFg2+OAbg9ri7cHBtOgJLdDHKu7CEspzfbfz?= X-MS-Exchange-AntiSpam-MessageData-1: F3QiCcBO76DGCQ== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 33f10fb9-4115-45ba-184d-08de8a67fcd9 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2026 12:13:56.3648 (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: Qw7YTheuBb8bS1/m+jbIPpvbA/A0TVtW6VbrcoMnZOBp2r4BjMCOseX9saIcwLryyWsyv0WbJ2ZvKn4aC89NAg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4298 Add NvStatus enum that wraps the raw NV_STATUS u32 codes returned by RM control RPCs. Signed-off-by: Eliot Courtney --- drivers/gpu/nova-core/gsp/fw.rs | 401 ++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 401 insertions(+) diff --git a/drivers/gpu/nova-core/gsp/fw.rs b/drivers/gpu/nova-core/gsp/fw= .rs index 0c8a74f0e8ac..cb4bda253193 100644 --- a/drivers/gpu/nova-core/gsp/fw.rs +++ b/drivers/gpu/nova-core/gsp/fw.rs @@ -97,6 +97,407 @@ pub(in crate::gsp) fn advance_cpu_write_ptr(qs: &Cohere= nt, count: u32) { pub(crate) const GSP_MSG_QUEUE_ELEMENT_SIZE_MAX: usize =3D num::u32_as_usize(bindings::GSP_MSG_QUEUE_ELEMENT_SIZE_MAX); =20 +/// Status code returned by GSP-RM RPCs. +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +pub(crate) enum NvStatus { + Ok, + AlreadySignalled, + BrokenFb, + BufferTooSmall, + BusyRetry, + CallbackNotScheduled, + CardNotPresent, + CycleDetected, + DmaInUse, + DmaMemNotLocked, + DmaMemNotUnlocked, + DualLinkInuse, + EccError, + FabricManagerNotPresent, + FatalError, + FeatureNotEnabled, + FifoBadAccess, + FlcnError, + FreqNotSupported, + Generic, + GpuDmaNotInitialized, + GpuInDebugMode, + GpuInFullchipReset, + GpuIsLost, + GpuMemoryOnliningFailure, + GpuNotFullPower, + GpuUuidNotFound, + HotSwitch, + I2cError, + I2cSpeedTooHigh, + IllegalAction, + InUse, + InflateCompressedDataFailed, + InsertDuplicateName, + InsufficientPermissions, + InsufficientPower, + InsufficientResources, + InsufficientZbcEntry, + InvalidAccessType, + InvalidAddress, + InvalidArgument, + InvalidBase, + InvalidChannel, + InvalidClass, + InvalidClient, + InvalidCommand, + InvalidData, + InvalidDevice, + InvalidDmaSpecifier, + InvalidEvent, + InvalidFlags, + InvalidFunction, + InvalidHeap, + InvalidIndex, + InvalidIrqLevel, + InvalidLicense, + InvalidLimit, + InvalidLockState, + InvalidMethod, + InvalidObject, + InvalidObjectBuffer, + InvalidObjectHandle, + InvalidObjectNew, + InvalidObjectOld, + InvalidObjectParent, + InvalidOffset, + InvalidOperation, + InvalidOwner, + InvalidParamStruct, + InvalidParameter, + InvalidPath, + InvalidPointer, + InvalidRead, + InvalidRegistryKey, + InvalidRequest, + InvalidState, + InvalidStringLength, + InvalidWrite, + InvalidXlate, + IrqEdgeTriggered, + IrqNotFiring, + KeyRotationInProgress, + LibRmVersionMismatch, + MaxSessionLimitReached, + MemoryError, + MemoryTrainingFailed, + MismatchedSlave, + MismatchedTarget, + MissingTableEntry, + ModuleLoadFailed, + MoreDataAvailable, + MoreProcessingRequired, + MultipleMemoryTypes, + NoFreeFifos, + NoIntrPending, + NoMemory, + NoSuchDomain, + NoValidPath, + NotCompatible, + NotReady, + NotSupported, + NvlinkClockError, + NvlinkConfigurationError, + NvlinkFabricFailure, + NvlinkFabricNotReady, + NvlinkInitError, + NvlinkMinionError, + NvlinkTrainingError, + ObjectNotFound, + ObjectTypeMismatch, + OperatingSystem, + OtherDeviceFound, + OutOfRange, + OverlappingUvmCommit, + PageTableNotAvail, + PidNotFound, + PmuNotReady, + PrivSecViolation, + ProtectionFault, + QueueTaskSlotNotAvailable, + RcError, + ReductionManagerNotAvailable, + RejectedVbios, + ResetRequired, + ResourceLost, + ResourceRetirementError, + RiscvError, + SecureBootFailed, + SignalPending, + StateInUse, + TestOnlyCodeNotEnabled, + Timeout, + TimeoutRetry, + TooManyPrimaries, + UvmAddressInUse, + Unknown(u32), +} + +impl From for Result { + fn from(status: NvStatus) -> Self { + match status { + NvStatus::Ok =3D> Ok(()), + + NvStatus::BufferTooSmall | NvStatus::MoreDataAvailable =3D> Er= r(EMSGSIZE), + + NvStatus::BusyRetry + | NvStatus::DmaInUse + | NvStatus::DualLinkInuse + | NvStatus::GpuInFullchipReset + | NvStatus::InUse + | NvStatus::KeyRotationInProgress + | NvStatus::NotReady + | NvStatus::NvlinkFabricNotReady + | NvStatus::PmuNotReady + | NvStatus::StateInUse + | NvStatus::UvmAddressInUse =3D> Err(EBUSY), + + NvStatus::CardNotPresent + | NvStatus::FabricManagerNotPresent + | NvStatus::InvalidDevice + | NvStatus::ReductionManagerNotAvailable =3D> Err(ENODEV), + + NvStatus::FeatureNotEnabled + | NvStatus::FreqNotSupported + | NvStatus::NotSupported + | NvStatus::TestOnlyCodeNotEnabled =3D> Err(ENOTSUPP), + + NvStatus::GpuUuidNotFound + | NvStatus::MissingTableEntry + | NvStatus::NoSuchDomain + | NvStatus::NoValidPath + | NvStatus::ObjectNotFound =3D> Err(ENOENT), + + NvStatus::I2cSpeedTooHigh + | NvStatus::InvalidAccessType + | NvStatus::InvalidArgument + | NvStatus::InvalidBase + | NvStatus::InvalidChannel + | NvStatus::InvalidClass + | NvStatus::InvalidClient + | NvStatus::InvalidCommand + | NvStatus::InvalidData + | NvStatus::InvalidDmaSpecifier + | NvStatus::InvalidEvent + | NvStatus::InvalidFlags + | NvStatus::InvalidFunction + | NvStatus::InvalidHeap + | NvStatus::InvalidIndex + | NvStatus::InvalidIrqLevel + | NvStatus::InvalidLimit + | NvStatus::InvalidLockState + | NvStatus::InvalidMethod + | NvStatus::InvalidObject + | NvStatus::InvalidObjectBuffer + | NvStatus::InvalidObjectHandle + | NvStatus::InvalidObjectNew + | NvStatus::InvalidObjectOld + | NvStatus::InvalidObjectParent + | NvStatus::InvalidOffset + | NvStatus::InvalidOperation + | NvStatus::InvalidOwner + | NvStatus::InvalidParamStruct + | NvStatus::InvalidParameter + | NvStatus::InvalidPath + | NvStatus::InvalidRegistryKey + | NvStatus::InvalidRequest + | NvStatus::InvalidState + | NvStatus::InvalidStringLength + | NvStatus::InvalidXlate + | NvStatus::LibRmVersionMismatch + | NvStatus::MismatchedSlave + | NvStatus::MismatchedTarget + | NvStatus::MultipleMemoryTypes + | NvStatus::NotCompatible + | NvStatus::ObjectTypeMismatch + | NvStatus::OverlappingUvmCommit + | NvStatus::RejectedVbios =3D> Err(EINVAL), + + NvStatus::IllegalAction =3D> Err(EPERM), + + NvStatus::InsertDuplicateName =3D> Err(EEXIST), + + NvStatus::InsufficientPermissions + | NvStatus::InvalidLicense + | NvStatus::PrivSecViolation =3D> Err(EACCES), + + NvStatus::InsufficientResources | NvStatus::NoMemory | NvStatu= s::PageTableNotAvail =3D> { + Err(ENOMEM) + } + + NvStatus::InsufficientZbcEntry + | NvStatus::MaxSessionLimitReached + | NvStatus::NoFreeFifos + | NvStatus::QueueTaskSlotNotAvailable + | NvStatus::TooManyPrimaries =3D> Err(ENOSPC), + + NvStatus::InvalidAddress | NvStatus::InvalidPointer | NvStatus= ::ProtectionFault =3D> { + Err(EFAULT) + } + + NvStatus::MoreProcessingRequired | NvStatus::TimeoutRetry =3D>= Err(EAGAIN), + + NvStatus::OutOfRange =3D> Err(ERANGE), + + NvStatus::PidNotFound =3D> Err(ESRCH), + + NvStatus::SignalPending =3D> Err(EINTR), + + NvStatus::Timeout =3D> Err(ETIMEDOUT), + + _ =3D> Err(EIO), + } + } +} + +impl From for NvStatus { + fn from(value: u32) -> Self { + match value { + bindings::NV_OK =3D> Self::Ok, + bindings::NV_ERR_ALREADY_SIGNALLED =3D> Self::AlreadySignalled, + bindings::NV_ERR_BROKEN_FB =3D> Self::BrokenFb, + bindings::NV_ERR_BUFFER_TOO_SMALL =3D> Self::BufferTooSmall, + bindings::NV_ERR_BUSY_RETRY =3D> Self::BusyRetry, + bindings::NV_ERR_CALLBACK_NOT_SCHEDULED =3D> Self::CallbackNot= Scheduled, + bindings::NV_ERR_CARD_NOT_PRESENT =3D> Self::CardNotPresent, + bindings::NV_ERR_CYCLE_DETECTED =3D> Self::CycleDetected, + bindings::NV_ERR_DMA_IN_USE =3D> Self::DmaInUse, + bindings::NV_ERR_DMA_MEM_NOT_LOCKED =3D> Self::DmaMemNotLocked, + bindings::NV_ERR_DMA_MEM_NOT_UNLOCKED =3D> Self::DmaMemNotUnlo= cked, + bindings::NV_ERR_DUAL_LINK_INUSE =3D> Self::DualLinkInuse, + bindings::NV_ERR_ECC_ERROR =3D> Self::EccError, + bindings::NV_ERR_FABRIC_MANAGER_NOT_PRESENT =3D> Self::FabricM= anagerNotPresent, + bindings::NV_ERR_FATAL_ERROR =3D> Self::FatalError, + bindings::NV_ERR_FEATURE_NOT_ENABLED =3D> Self::FeatureNotEnab= led, + bindings::NV_ERR_FIFO_BAD_ACCESS =3D> Self::FifoBadAccess, + bindings::NV_ERR_FLCN_ERROR =3D> Self::FlcnError, + bindings::NV_ERR_FREQ_NOT_SUPPORTED =3D> Self::FreqNotSupporte= d, + bindings::NV_ERR_GENERIC =3D> Self::Generic, + bindings::NV_ERR_GPU_DMA_NOT_INITIALIZED =3D> Self::GpuDmaNotI= nitialized, + bindings::NV_ERR_GPU_IN_DEBUG_MODE =3D> Self::GpuInDebugMode, + bindings::NV_ERR_GPU_IN_FULLCHIP_RESET =3D> Self::GpuInFullchi= pReset, + bindings::NV_ERR_GPU_IS_LOST =3D> Self::GpuIsLost, + bindings::NV_ERR_GPU_MEMORY_ONLINING_FAILURE =3D> Self::GpuMem= oryOnliningFailure, + bindings::NV_ERR_GPU_NOT_FULL_POWER =3D> Self::GpuNotFullPower, + bindings::NV_ERR_GPU_UUID_NOT_FOUND =3D> Self::GpuUuidNotFound, + bindings::NV_ERR_HOT_SWITCH =3D> Self::HotSwitch, + bindings::NV_ERR_I2C_ERROR =3D> Self::I2cError, + bindings::NV_ERR_I2C_SPEED_TOO_HIGH =3D> Self::I2cSpeedTooHigh, + bindings::NV_ERR_ILLEGAL_ACTION =3D> Self::IllegalAction, + bindings::NV_ERR_IN_USE =3D> Self::InUse, + bindings::NV_ERR_INFLATE_COMPRESSED_DATA_FAILED =3D> Self::Inf= lateCompressedDataFailed, + bindings::NV_ERR_INSERT_DUPLICATE_NAME =3D> Self::InsertDuplic= ateName, + bindings::NV_ERR_INSUFFICIENT_PERMISSIONS =3D> Self::Insuffici= entPermissions, + bindings::NV_ERR_INSUFFICIENT_POWER =3D> Self::InsufficientPow= er, + bindings::NV_ERR_INSUFFICIENT_RESOURCES =3D> Self::Insufficien= tResources, + bindings::NV_ERR_INSUFFICIENT_ZBC_ENTRY =3D> Self::Insufficien= tZbcEntry, + bindings::NV_ERR_INVALID_ACCESS_TYPE =3D> Self::InvalidAccessT= ype, + bindings::NV_ERR_INVALID_ADDRESS =3D> Self::InvalidAddress, + bindings::NV_ERR_INVALID_ARGUMENT =3D> Self::InvalidArgument, + bindings::NV_ERR_INVALID_BASE =3D> Self::InvalidBase, + bindings::NV_ERR_INVALID_CHANNEL =3D> Self::InvalidChannel, + bindings::NV_ERR_INVALID_CLASS =3D> Self::InvalidClass, + bindings::NV_ERR_INVALID_CLIENT =3D> Self::InvalidClient, + bindings::NV_ERR_INVALID_COMMAND =3D> Self::InvalidCommand, + bindings::NV_ERR_INVALID_DATA =3D> Self::InvalidData, + bindings::NV_ERR_INVALID_DEVICE =3D> Self::InvalidDevice, + bindings::NV_ERR_INVALID_DMA_SPECIFIER =3D> Self::InvalidDmaSp= ecifier, + bindings::NV_ERR_INVALID_EVENT =3D> Self::InvalidEvent, + bindings::NV_ERR_INVALID_FLAGS =3D> Self::InvalidFlags, + bindings::NV_ERR_INVALID_FUNCTION =3D> Self::InvalidFunction, + bindings::NV_ERR_INVALID_HEAP =3D> Self::InvalidHeap, + bindings::NV_ERR_INVALID_INDEX =3D> Self::InvalidIndex, + bindings::NV_ERR_INVALID_IRQ_LEVEL =3D> Self::InvalidIrqLevel, + bindings::NV_ERR_INVALID_LICENSE =3D> Self::InvalidLicense, + bindings::NV_ERR_INVALID_LIMIT =3D> Self::InvalidLimit, + bindings::NV_ERR_INVALID_LOCK_STATE =3D> Self::InvalidLockStat= e, + bindings::NV_ERR_INVALID_METHOD =3D> Self::InvalidMethod, + bindings::NV_ERR_INVALID_OBJECT =3D> Self::InvalidObject, + bindings::NV_ERR_INVALID_OBJECT_BUFFER =3D> Self::InvalidObjec= tBuffer, + bindings::NV_ERR_INVALID_OBJECT_HANDLE =3D> Self::InvalidObjec= tHandle, + bindings::NV_ERR_INVALID_OBJECT_NEW =3D> Self::InvalidObjectNe= w, + bindings::NV_ERR_INVALID_OBJECT_OLD =3D> Self::InvalidObjectOl= d, + bindings::NV_ERR_INVALID_OBJECT_PARENT =3D> Self::InvalidObjec= tParent, + bindings::NV_ERR_INVALID_OFFSET =3D> Self::InvalidOffset, + bindings::NV_ERR_INVALID_OPERATION =3D> Self::InvalidOperation, + bindings::NV_ERR_INVALID_OWNER =3D> Self::InvalidOwner, + bindings::NV_ERR_INVALID_PARAM_STRUCT =3D> Self::InvalidParamS= truct, + bindings::NV_ERR_INVALID_PARAMETER =3D> Self::InvalidParameter, + bindings::NV_ERR_INVALID_PATH =3D> Self::InvalidPath, + bindings::NV_ERR_INVALID_POINTER =3D> Self::InvalidPointer, + bindings::NV_ERR_INVALID_READ =3D> Self::InvalidRead, + bindings::NV_ERR_INVALID_REGISTRY_KEY =3D> Self::InvalidRegist= ryKey, + bindings::NV_ERR_INVALID_REQUEST =3D> Self::InvalidRequest, + bindings::NV_ERR_INVALID_STATE =3D> Self::InvalidState, + bindings::NV_ERR_INVALID_STRING_LENGTH =3D> Self::InvalidStrin= gLength, + bindings::NV_ERR_INVALID_WRITE =3D> Self::InvalidWrite, + bindings::NV_ERR_INVALID_XLATE =3D> Self::InvalidXlate, + bindings::NV_ERR_IRQ_EDGE_TRIGGERED =3D> Self::IrqEdgeTriggere= d, + bindings::NV_ERR_IRQ_NOT_FIRING =3D> Self::IrqNotFiring, + bindings::NV_ERR_KEY_ROTATION_IN_PROGRESS =3D> Self::KeyRotati= onInProgress, + bindings::NV_ERR_LIB_RM_VERSION_MISMATCH =3D> Self::LibRmVersi= onMismatch, + bindings::NV_ERR_MAX_SESSION_LIMIT_REACHED =3D> Self::MaxSessi= onLimitReached, + bindings::NV_ERR_MEMORY_ERROR =3D> Self::MemoryError, + bindings::NV_ERR_MEMORY_TRAINING_FAILED =3D> Self::MemoryTrain= ingFailed, + bindings::NV_ERR_MISMATCHED_SLAVE =3D> Self::MismatchedSlave, + bindings::NV_ERR_MISMATCHED_TARGET =3D> Self::MismatchedTarget, + bindings::NV_ERR_MISSING_TABLE_ENTRY =3D> Self::MissingTableEn= try, + bindings::NV_ERR_MODULE_LOAD_FAILED =3D> Self::ModuleLoadFaile= d, + bindings::NV_ERR_MORE_DATA_AVAILABLE =3D> Self::MoreDataAvaila= ble, + bindings::NV_ERR_MORE_PROCESSING_REQUIRED =3D> Self::MoreProce= ssingRequired, + bindings::NV_ERR_MULTIPLE_MEMORY_TYPES =3D> Self::MultipleMemo= ryTypes, + bindings::NV_ERR_NO_FREE_FIFOS =3D> Self::NoFreeFifos, + bindings::NV_ERR_NO_INTR_PENDING =3D> Self::NoIntrPending, + bindings::NV_ERR_NO_MEMORY =3D> Self::NoMemory, + bindings::NV_ERR_NO_SUCH_DOMAIN =3D> Self::NoSuchDomain, + bindings::NV_ERR_NO_VALID_PATH =3D> Self::NoValidPath, + bindings::NV_ERR_NOT_COMPATIBLE =3D> Self::NotCompatible, + bindings::NV_ERR_NOT_READY =3D> Self::NotReady, + bindings::NV_ERR_NOT_SUPPORTED =3D> Self::NotSupported, + bindings::NV_ERR_NVLINK_CLOCK_ERROR =3D> Self::NvlinkClockErro= r, + bindings::NV_ERR_NVLINK_CONFIGURATION_ERROR =3D> Self::NvlinkC= onfigurationError, + bindings::NV_ERR_NVLINK_FABRIC_FAILURE =3D> Self::NvlinkFabric= Failure, + bindings::NV_ERR_NVLINK_FABRIC_NOT_READY =3D> Self::NvlinkFabr= icNotReady, + bindings::NV_ERR_NVLINK_INIT_ERROR =3D> Self::NvlinkInitError, + bindings::NV_ERR_NVLINK_MINION_ERROR =3D> Self::NvlinkMinionEr= ror, + bindings::NV_ERR_NVLINK_TRAINING_ERROR =3D> Self::NvlinkTraini= ngError, + bindings::NV_ERR_OBJECT_NOT_FOUND =3D> Self::ObjectNotFound, + bindings::NV_ERR_OBJECT_TYPE_MISMATCH =3D> Self::ObjectTypeMis= match, + bindings::NV_ERR_OPERATING_SYSTEM =3D> Self::OperatingSystem, + bindings::NV_ERR_OTHER_DEVICE_FOUND =3D> Self::OtherDeviceFoun= d, + bindings::NV_ERR_OUT_OF_RANGE =3D> Self::OutOfRange, + bindings::NV_ERR_OVERLAPPING_UVM_COMMIT =3D> Self::Overlapping= UvmCommit, + bindings::NV_ERR_PAGE_TABLE_NOT_AVAIL =3D> Self::PageTableNotA= vail, + bindings::NV_ERR_PID_NOT_FOUND =3D> Self::PidNotFound, + bindings::NV_ERR_PMU_NOT_READY =3D> Self::PmuNotReady, + bindings::NV_ERR_PRIV_SEC_VIOLATION =3D> Self::PrivSecViolatio= n, + bindings::NV_ERR_PROTECTION_FAULT =3D> Self::ProtectionFault, + bindings::NV_ERR_QUEUE_TASK_SLOT_NOT_AVAILABLE =3D> Self::Queu= eTaskSlotNotAvailable, + bindings::NV_ERR_RC_ERROR =3D> Self::RcError, + bindings::NV_ERR_REDUCTION_MANAGER_NOT_AVAILABLE =3D> Self::Re= ductionManagerNotAvailable, + bindings::NV_ERR_REJECTED_VBIOS =3D> Self::RejectedVbios, + bindings::NV_ERR_RESET_REQUIRED =3D> Self::ResetRequired, + bindings::NV_ERR_RESOURCE_LOST =3D> Self::ResourceLost, + bindings::NV_ERR_RESOURCE_RETIREMENT_ERROR =3D> Self::Resource= RetirementError, + bindings::NV_ERR_RISCV_ERROR =3D> Self::RiscvError, + bindings::NV_ERR_SECURE_BOOT_FAILED =3D> Self::SecureBootFaile= d, + bindings::NV_ERR_SIGNAL_PENDING =3D> Self::SignalPending, + bindings::NV_ERR_STATE_IN_USE =3D> Self::StateInUse, + bindings::NV_ERR_TEST_ONLY_CODE_NOT_ENABLED =3D> Self::TestOnl= yCodeNotEnabled, + bindings::NV_ERR_TIMEOUT =3D> Self::Timeout, + bindings::NV_ERR_TIMEOUT_RETRY =3D> Self::TimeoutRetry, + bindings::NV_ERR_TOO_MANY_PRIMARIES =3D> Self::TooManyPrimarie= s, + bindings::NV_ERR_UVM_ADDRESS_IN_USE =3D> Self::UvmAddressInUse, + other =3D> Self::Unknown(other), + } + } +} + /// Empty type to group methods related to heap parameters for running the= GSP firmware. enum GspFwHeapParams {} =20 --=20 2.53.0 From nobody Fri Apr 3 01:23:06 2026 Received: from BN1PR04CU002.outbound.protection.outlook.com (mail-eastus2azon11010011.outbound.protection.outlook.com [52.101.56.11]) (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 11E5F3DA5D1; Wed, 25 Mar 2026 12:14:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.56.11 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440847; cv=fail; b=G2eHB59NG28Yhp1sBNrjM9AWf1AVdpRb3C4TEzu4xxCHbO6fkPpEPIwKgvR14eh2cN543x1WVCiCOyao83UA55c0+K26egbZKzfQae2L0ezeqklke3BCTFjT267+wv30djqMG2um1JCFhG7mxHQX41at/sfcRoE3TnXCJNS0a08= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440847; c=relaxed/simple; bh=/YdntiJ3eOoDzXrfRjCrVzpokW/b4Ga5bLmlqV7CSjM=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=eesBKBrAK6cHXtVM9pJ5iRnZ20u5HnpKT0awRVTreWhuHiH9NmN0ERLPcHcmeT38HnL3WTyHNapEqr4k0J3pXqCmjKVhSGWCVOatHccK28AL+1dRGUXEBWqIRqeG30giyKFoo3e7vb86NcgzElMk9Vq9lOkPIdhFj33kFyQU3Nw= 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=dq6e2q+E; arc=fail smtp.client-ip=52.101.56.11 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="dq6e2q+E" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ep2v34lVcMPgFEvue9lJrpaYi/1LH+c0t+ovVkwnKlzE0efZDFnVCQkUj9SrEX2UmyRhLJcMw9mhoyBB1dsGqd8YMzUzFdJhpj1Sj3CdKXCHY1Yjc2c0vGsdQ/A757E+4GmEMJF/unj3DLRP6m8rs35btFpE1XotoUCf+QbNGO8+JuTfsofmYUFAF6/1sKYNOw9PSFZsxVIQt+1ieuHTNZAZeBdGXZvWGRLDAb1FZArs8xklyFsFZTlGzYEmxmWhAKK3mAzaUNPw4/u+YroJM3kwrxKrek8SlQWlaxPBeOGR5AHAcuQ826E0m9QgcbPXY+MkhbuN6D8soTTkRN+GLw== 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=WzSwQOmvjY4sYtqZtOreKEykQCR1/tb0rDwprvzqNus=; b=yVQKJv7DGG9qWzvzbxSEUCLGlMRgk4ocswwu9W9vYDKdUpgqW/BWu7LZE8Xz6a87UKkLbouWj/XNv1mGXLXalz+Wqui554Q+DpTW2oh0S7ZjEPuvsUjjgFpaOGmLr+NmJjywQ6ZcK4FmiPqossnrwPdFKkR1GzejijlSzcLTMv2Z8UzFx0qS6Sdh3ApzXiyIqAfbxaxm8cqduRy/OpIfrD3pXYeuhN6scfA7BL3ohYUQFsUvzFGVslarjaVI4b1FPmWzh2C4s4/+JcFojQDunbWY+NJLaeHscMGnIf6XlGmeZwjZyClw7RKFaelM1OiUMUOKwYxZJJVP+TOxGYwZbw== 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=WzSwQOmvjY4sYtqZtOreKEykQCR1/tb0rDwprvzqNus=; b=dq6e2q+EGtvEqeBHY7gCysI4HJmblzgIezV2+yHPVaQORbSqQG4Yfu2fzx/bG4HNJdIxR6gQd5Bwx+weHWyAoz6mT5fWIuEOy1edZfHCM8+8QT/pkqy71a87wwrnxs2tWilGQFlCzsjitKnCD5Z35VvLN+5BufeYtpnmQMAViDsfqVGoZq+sw7d3lkaojbKKpvH95sSf1lWQHwORQ1/Ik/MaDnJJTs7KK7f4hlWWvz9zvaae9x88skv12F1wrc+ZzXFmFEs0hY7lQIthFFATnn8Fanyg7AG80Bn9WK/UfdfpvgTXiTp+VSZ/rQU7R9TzN1Um2xfWpphs1R7kM4qgiw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from BL0PR12MB2353.namprd12.prod.outlook.com (2603:10b6:207:4c::31) by DM6PR12MB4298.namprd12.prod.outlook.com (2603:10b6:5:21e::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.20; Wed, 25 Mar 2026 12:13:59 +0000 Received: from BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0]) by BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0%4]) with mapi id 15.20.9769.006; Wed, 25 Mar 2026 12:13:59 +0000 From: Eliot Courtney Date: Wed, 25 Mar 2026 21:13:41 +0900 Subject: [PATCH v3 3/9] gpu: nova-core: gsp: expose GSP-RM internal client and subdevice handles Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260325-rmcontrol-v3-3-f3101093484e@nvidia.com> References: <20260325-rmcontrol-v3-0-f3101093484e@nvidia.com> In-Reply-To: <20260325-rmcontrol-v3-0-f3101093484e@nvidia.com> To: Danilo Krummrich , Alice Ryhl , Alexandre Courbot , David Airlie , Simona Vetter Cc: John Hubbard , Alistair Popple , Joel Fernandes , Timur Tabi , rust-for-linux@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Eliot Courtney X-Mailer: b4 0.15.0 X-ClientProxiedBy: SJ0P220CA0017.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:41b::27) To BL0PR12MB2353.namprd12.prod.outlook.com (2603:10b6:207:4c::31) 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: BL0PR12MB2353:EE_|DM6PR12MB4298:EE_ X-MS-Office365-Filtering-Correlation-Id: 8ec2f980-a463-48ed-7b5b-08de8a67fed5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024|10070799003|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: U5Kal+blkbAE2GMYUXwM1DzESqfvw5Ke3eHsQtFy1eHF0Ui5Q0nJtF878mkaxeSQin28OKgas5nZDBaDug0GcfqfTp2T1ohfAYpZ/YINGMDd/2ZFHxrdD7FwMN9P7iEgqSrhK3dr7a48u8AxGQJCGe5fHy3HM+zLlv0DUcoAPkXNdwf2mMts/8M2G76Z0vERhfMvlgX1JrcNhOc8S1NE/EKijEYBjMQfGu9/C1Uy2crCm2NQYEiRfHq2ZZL8ZMi/AYYgjSzfD+4I6GULCaEIwN3d2svo3kEflEPtJCVO5/uUp2OK9QKMWPlr2aLX5tmZWYWPC2MB6szLqhQUxTByyXSv8WuylonUxokgq8LEi+dy6w73QJUmVwxd524yZYohG6B0YMGDSIukCL2GvtW9JaJmqrr6WLuwPnHYomwx+SjvVll6cpFevtEJrc85oB4XyRErNNiJ7SIOACWSRzMY7cZxhCh8Q70/He2JjfPZDnGzhbCQ9N0SltcLmh9t8Oea8RDmNgiiAY2HEfOzeXkh0vjhLrUDf9U92OuQ3Ig6QbS+fy4ZG011sTLPlWF94+YFzhGaovTJqji8TI8jR1oq0LgPrpmqbHFYQ3j0N/hFLcZwLgKEV+VBmvnJ3Q5U6ExoxzQbtHFblAc0bHXyluy+1WVngUzF9RWS7HUKHRBkeW5gZtOHexsmtBjLxkhAwLeaJhRCjLfO2vF+JJuFzTXNLvuWPIPzcb/9bouFqRi4o40= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR12MB2353.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(10070799003)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZEtsRzE1bWltNlJxQkxZdU0xMlhrU0JhcUVpaU9PRGhFUDBYcDB6bml3eldJ?= =?utf-8?B?dzNDdEdaUUl1WXRXbnlGNUJuL2xYZ0twdTNBNVM3dUVic0tsN1duakJUcnVQ?= =?utf-8?B?cXpFOXN4K3dJVkI4WWs4U0FJNUVPV3hNRTYzTVR1ZmErRUZVL2gzeGhmVFVV?= =?utf-8?B?dXdQaXZNby81dFE1b2p2NDJnYlY1SjNyc1VQOThrTHdFUHBDQW8yRGk4ci9S?= =?utf-8?B?YVFWNGYwcVV1SkhQUDJkMTRRQnQ5N0JYMSsvV01SOUxvZGFZbXdGRjloVk1w?= =?utf-8?B?M3prbUgzTE1YR1hJd2xGY2prZHNQeFRYMGhYUkV5YlJFOGoycFdvQ0pTUU1H?= =?utf-8?B?N1NDak80c2R1dXh2LzYvdThTWDlzV1JVMkRBei9GTWgzRWhZUGpFQ2M0UTNq?= =?utf-8?B?VVF4SEtKTExxOWZ0a055MkV4YUlEYUQvUUdlNHBka1MyZ3BlZVZXcGo2aytX?= =?utf-8?B?Tlg2ZlZGT0VEYmxkclJqQW9ET1BzeVV0WmtxODFkRkZhdEVzdXNMbXRQamdi?= =?utf-8?B?djc5M3pCb0RoT0VlTkdaODdzSU42cXdsMmZUZFRtQ05LSDVSU1JYZGlrbGdn?= =?utf-8?B?aVFCTGd2dWcrTUc5SjRudWZLOXNzZGZwbDZJVlhubEl5Q09HbUhERitUT3ZF?= =?utf-8?B?NWNJK3lNWEluaWN2T1h5RTJIQ3VsRWhjRU5JczRsT0prTDI3N0pyRGhGMDhC?= =?utf-8?B?N2ZyRGFza1pOR3NWdDhpVlB3RGdJbnF4NW1seE4rNFZpMG1kbUFSeGdkRkpo?= =?utf-8?B?N3pVVmNhT1VRSERIa2pXdTV4Z3ZCVHpvVjcxMVBjcVNEbStkOG9wWVRMcGhX?= =?utf-8?B?a29PVXlSdjV5WXQ0N3BXVXNScVBxUWtZNDhXT3ZHc2pZK2lmSlp4N240eVN6?= =?utf-8?B?OFRBMXYweHBnVE50UnE3eVdPUDFIdDBVTlRFVEJpT1JGOVpJNUF4MS9PSG0y?= =?utf-8?B?enpPb2hsVERxdU91ZERrdXRVck41d0htVkUwbmE5Ym1BcGZOV09iSXNZMWI4?= =?utf-8?B?cWhvMS9hMm04RGx3bWZ5Y1dYZkUwYlF0S2JpLzVKd0pWcEV4MDdDQm44VkZK?= =?utf-8?B?ODFRZFlTK0RZSnVOQkR1amk0cTMvRU9kU1RKdkd3THAwbm9ZM2V5L2drQjVQ?= =?utf-8?B?eTZzSExoN3F1Smx0bXllbk45d1Jsb243RXdCTEIrUEZrSGNIZUViUFVQODJQ?= =?utf-8?B?UnRKWDlRcDVDbmIrWDlCVmZaVGY4OXUyQjlaZW1yR1RXM2RVWGhBRzRHSVFI?= =?utf-8?B?SG5xS01kMXR3Z0hRZmUwOE15TlBEMFY2RGdUOGhndFVCaHVWbHJtWEwyVWg3?= =?utf-8?B?VEVGUTc0VDkwMXp2UklyZFZ4dTRvLzNrMGttelhsakxRR01LQUlSRjZYRTV5?= =?utf-8?B?TE9CRERqZkxzNWU1NUFEamM2aFBhbFNqay8veGZObzRpbE1NSEFVTU5jZjUy?= =?utf-8?B?eG9rbFF4TnJWdXFkRjZ0dWxZb2VCM0w5ZWpzRXFpN3ZYb0M0V1VlYlNyZTEy?= =?utf-8?B?T2Z5SnA0T3h1UG9QRjFqVU90aXVSY3p0NG5ObWpyeFBVTDlMMVBGbkwxbExK?= =?utf-8?B?c1gvK2lJYTM5eWg1L0hBREduRTFmRlVCb3RwNXBsNXNoNitVV21rOEZqQWY0?= =?utf-8?B?THROY0hjbkhiRjZBa2cyb2RjQjdDNFhhcFFyakRNNXVjL1Boa05oenAzWk4r?= =?utf-8?B?aTU2VUdKZC9qS1FKcjVuRTJrZERURk5zVEdza2hqUXpwWW9UNDhzcjgySERK?= =?utf-8?B?M0JnYkhRaHRxVmxDZlMzbnhXdnFZK2k2ODVRbXpaVkRyVmZYODhFZklZUnk3?= =?utf-8?B?VzJBT0tOTEZ5MXZxSDlFNlhOUUFxUE5USHhiK1NPTVZhOVRNRXhuaUs0ZTJV?= =?utf-8?B?ZytXTDNTczEyVUpmaEt2TFJXcG5WREV4S01ZaXc1QWE3Q3JFeEFUaUZqZDNH?= =?utf-8?B?R2ZUNTZUQ0ZTa2pmNHBBSm1pb2hsazFwTlk5MkN6dGZWS3Z6Ujh0a2MzaDdV?= =?utf-8?B?VFRESHl6QjJCU0hpRmMzS240b3pVek5WNCtmTVI4eVRhNHkwdC9jVW1Gd0Iv?= =?utf-8?B?akpQVE8yMU45eE1XUmJhb3lqSGtrZi8zbVd5bEZ0NDZVMkxCMmhLa1Jackw0?= =?utf-8?B?aEorNHlXUER0VCs4Z0Q5V2pxTnREOUUyKyt5VEMzeG9YUlE0NU5CM0VpNTlV?= =?utf-8?B?dG1tVTNnMnkwSERKRXhKci92aDJ6WEhQN3R4aTJ4ZEJUbHZjbERWL3pXWGVQ?= =?utf-8?B?bldNeEw2a2w1dkd2SHR2RExuTFR0NmN1U1hxSk80NGx6UE42RmRoZU5yNTQ0?= =?utf-8?B?RW1BVFZtT2pLZVg0VWFYTEtZNDlRTjJDM2tkdHNjbjlsVzVoYW1QVkdhUTky?= =?utf-8?Q?gEigYQcM7morPGgPHibVDxs6Rhr1UIl0Uv6Z8TJ3PGb57?= X-MS-Exchange-AntiSpam-MessageData-1: f/o6eE9aGYP7lg== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8ec2f980-a463-48ed-7b5b-08de8a67fed5 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2026 12:13:59.6057 (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: Gu5JKNufKGc7OSlQT6B9opTLeyLY4ysaeiEBvZEUhwyi3DsLps5Dr90EwrA5M3usZl5YMYJDKutS0wED9AXvOA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4298 Expose the `hInternalClient` and `hInternalSubdevice` handles. These are needed for RM control calls. Signed-off-by: Eliot Courtney --- drivers/gpu/nova-core/gsp/commands.rs | 65 ++++++++++++++++++++++++++++= ++++ drivers/gpu/nova-core/gsp/fw/commands.rs | 19 +++++++++- 2 files changed, 83 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/nova-core/gsp/commands.rs b/drivers/gpu/nova-core/= gsp/commands.rs index c89c7b57a751..f3566f3ea6a7 100644 --- a/drivers/gpu/nova-core/gsp/commands.rs +++ b/drivers/gpu/nova-core/gsp/commands.rs @@ -4,6 +4,7 @@ array, convert::Infallible, ffi::FromBytesUntilNulError, + marker::PhantomData, str::Utf8Error, // }; =20 @@ -34,6 +35,54 @@ sbuffer::SBufferIter, }; =20 +/// Marker type for a GSP-RM client handle. +/// +/// A client handle identifies a client which provides a namespace for RM = objects. Lookup of objects +/// happens within the client namespace. +pub(crate) struct Client; + +/// Marker type for a GSP-RM device handle. +/// +/// A device handle identifies a logical GPU device instance under a clien= t. In multi-GPU +/// configurations it can represent a grouped or logical device. +#[expect(dead_code)] +pub(crate) struct Device; + +/// Marker type for a GSP-RM subdevice handle. +/// +/// A subdevice handle identifies a child of a device that selects one spe= cific GPU within that +/// device. +pub(crate) struct Subdevice; + +/// A typed GSP-RM object handle. +/// +/// These handles form a tree structure with different types of RM objects= , with client at the root. +/// An RM object is anything identified by a valid handle. For example, th= e tree may look like +/// Client -> Device -> Subdevice, where there may be multiple devices und= er each client, and +/// multiple subdevices under each device. +#[derive(Debug)] +pub(crate) struct Handle(u32, PhantomData); + +impl Clone for Handle { + fn clone(&self) -> Self { + *self + } +} +impl Copy for Handle {} + +impl Handle { + /// Creates a new handle from a raw value. + pub(crate) fn new(raw: u32) -> Self { + Self(raw, PhantomData) + } + + /// Returns the raw handle value. + #[expect(dead_code)] + pub(crate) fn as_raw(self) -> u32 { + self.0 + } +} + /// The `GspSetSystemInfo` command. pub(crate) struct SetSystemInfo<'a> { pdev: &'a pci::Device, @@ -192,6 +241,8 @@ fn init(&self) -> impl Init { /// The reply from the GSP to the [`GetGspInfo`] command. pub(crate) struct GetGspStaticInfoReply { gpu_name: [u8; 64], + client: Handle, + subdevice: Handle, } =20 impl MessageFromGsp for GetGspStaticInfoReply { @@ -205,6 +256,8 @@ fn read( ) -> Result { Ok(GetGspStaticInfoReply { gpu_name: msg.gpu_name_str(), + client: msg.client(), + subdevice: msg.subdevice(), }) } } @@ -231,6 +284,18 @@ pub(crate) fn gpu_name(&self) -> core::result::Result<= &str, GpuNameError> { .to_str() .map_err(GpuNameError::InvalidUtf8) } + + /// Returns the client handle allocated by GSP-RM. + #[expect(dead_code)] + pub(crate) fn client(&self) -> Handle { + self.client + } + + /// Returns the subdevice handle allocated by GSP-RM. + #[expect(dead_code)] + pub(crate) fn subdevice(&self) -> Handle { + self.subdevice + } } =20 /// Send the [`GetGspInfo`] command and awaits for its reply. diff --git a/drivers/gpu/nova-core/gsp/fw/commands.rs b/drivers/gpu/nova-co= re/gsp/fw/commands.rs index db46276430be..9fce6ffefbce 100644 --- a/drivers/gpu/nova-core/gsp/fw/commands.rs +++ b/drivers/gpu/nova-core/gsp/fw/commands.rs @@ -10,7 +10,14 @@ }, // }; =20 -use crate::gsp::GSP_PAGE_SIZE; +use crate::gsp::{ + commands::{ + Client, + Handle, + Subdevice, // + }, + GSP_PAGE_SIZE, // +}; =20 use super::bindings; =20 @@ -121,6 +128,16 @@ impl GspStaticConfigInfo { pub(crate) fn gpu_name_str(&self) -> [u8; 64] { self.0.gpuNameString } + + /// Returns the client handle allocated by GSP-RM. + pub(crate) fn client(&self) -> Handle { + Handle::new(self.0.hInternalClient) + } + + /// Returns the subdevice handle allocated by GSP-RM. + pub(crate) fn subdevice(&self) -> Handle { + Handle::new(self.0.hInternalSubdevice) + } } =20 // SAFETY: Padding is explicit and will not contain uninitialized data. --=20 2.53.0 From nobody Fri Apr 3 01:23:06 2026 Received: from BL0PR03CU003.outbound.protection.outlook.com (mail-eastusazon11012022.outbound.protection.outlook.com [52.101.53.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 30E083DA7EC; Wed, 25 Mar 2026 12:14:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.53.22 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440850; cv=fail; b=KfCU3BQIK3JrRcR9yAFfvu+1PbBYVDHAeZ9wfWIbiUpLjJEkJ8kGuUtBQeV5+D9t7epdFkNozVVh0GWJnCQYqjatv7Nh/mBnPy/QV8uOsh62c/pL6sg5wa+VjPOxLdjzyzqwAZtFJiB9n8KTUdNNE32sVTZ6c4yC07bQTjRwgA8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440850; c=relaxed/simple; bh=YlbwiKSqqT4a23Icq34LfUsvVwwtSB4/6eHWf7ZtjwY=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=k/SeRwlgWvJI628yxwL1s2rrTrF9W0/qVycWvPvTg9+vO9mKNznPdAa789r9s7S0h75LdZ5A7IvAY2TN/+ZewS786/jq2T2xAt9Lhxw5+pxakUhot7nlh1GaqycJWOisHGSJgwoek2mFtkK23Y3RfaOl908RU+xazpCNL2y7b3A= 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=bT1riV7C; arc=fail smtp.client-ip=52.101.53.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="bT1riV7C" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CshuciMg9WmBtE17KpFM48nnlZkKz6MTFPjHPxsZfdKiHvHgxQY+/IAFf0h5XDFvUrUJO1vgA+5rzyM6eurZ20HyS3Bge+A92qEU1Ae45S9oU7pyHOm7UwruvG2KT578wEbQnN09bwuO9jzHml8Cug0qOMgNAYKgqZKhrRi9OVa+foAWX13AqSCQ9a2ECGQCt17DXzBZvuApitWuU1mp/fQPVwtaQ483SCkuBBdXmLNpPYlksRaPcaQBSCmhlbLZ8YVuBfoDOLDM/s7bC0VkTJWe4OQDUl67tDzbCmS6P+bYXrT1QgTmMPKMGtgbpM+EwTF/NhCpMCcjr07gYI1j1Q== 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=HRW1aL/d5DYpWRV5ydij8rbP624UomG4dN2QXf48veA=; b=dw8jWLXem1/yXsd19AtM9iexYWj/lhyIiUwStzANHU6vzper4TGsYY6UeNYnlUusmnm1SuyNh1cUmGyzgsgOmiGC2n3rOJSb8eauheRFsbb4GeiL22evOfc+w3yK5YbrW1IGavFRlouBpAgEy3huiEeGbXpSiWVPEz6AKIYIf+1xBnAZCAp8xlFL5pF/O+8s48CA0maA4KdXbVsHDTxl6XVDeNgso+9EU+WzavwQuqQjjXfC+PGXTb0ZwW0OQW2xxcu22UgbVnIsxmTj6k384dLK8h9yTjPeW+E2VwMx9xWsRMoTxMMS8/GJJqlNzB8wBIT8VlNs6hYjY3XqDTsYog== 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=HRW1aL/d5DYpWRV5ydij8rbP624UomG4dN2QXf48veA=; b=bT1riV7C3JJQN5sYcs/7sziuC6jT5yljvcpQ/BH/R/aphOPdlXG5dX9HYOQj2WiAdOB2MMkaIFZ+bOKVFUM6tCBPTM6HQ7gpXzlolQ+ffNN3eJZZf1A1x2Wk4mWjrIoyguQOzY+qyp4xAQBqTR0/MehPwZs85tdAlakj4OTOs92el2qWVUGwaH69XzS/7GK661oaXExAQ+zz81z59YC636qt8n1C9SnkISugpp3HeSTwcSPH3u802bwitP62EFLvuklTf7rgqsg0pkWl7NBQCTbYHERsuScJDtGmy2F4S3MvnMisAjS2zPBSOQBKQ3XRUCtN0n3/a/1OvxJd+DaNXQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from BL0PR12MB2353.namprd12.prod.outlook.com (2603:10b6:207:4c::31) by SJ1PR12MB6313.namprd12.prod.outlook.com (2603:10b6:a03:458::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.20; Wed, 25 Mar 2026 12:14:04 +0000 Received: from BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0]) by BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0%4]) with mapi id 15.20.9769.006; Wed, 25 Mar 2026 12:14:03 +0000 From: Eliot Courtney Date: Wed, 25 Mar 2026 21:13:42 +0900 Subject: [PATCH v3 4/9] gpu: nova-core: gsp: add RM control RPC structure binding Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260325-rmcontrol-v3-4-f3101093484e@nvidia.com> References: <20260325-rmcontrol-v3-0-f3101093484e@nvidia.com> In-Reply-To: <20260325-rmcontrol-v3-0-f3101093484e@nvidia.com> To: Danilo Krummrich , Alice Ryhl , Alexandre Courbot , David Airlie , Simona Vetter Cc: John Hubbard , Alistair Popple , Joel Fernandes , Timur Tabi , rust-for-linux@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Eliot Courtney X-Mailer: b4 0.15.0 X-ClientProxiedBy: TYCP286CA0157.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:383::12) To BL0PR12MB2353.namprd12.prod.outlook.com (2603:10b6:207:4c::31) 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: BL0PR12MB2353:EE_|SJ1PR12MB6313:EE_ X-MS-Office365-Filtering-Correlation-Id: 80e13dd0-18bf-44c5-a3c4-08de8a680138 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|366016|376014|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: awm/QbroKniheV1cZYlxmlSKA8C6HiRoy0jw7/qHN4MDmHZpioo16t6qEF4suz5/lxknjQH3PbtfqETMh/jFKHZ3e1SNMDgJm3CKjsju1C+qBa9rUQ0K8zaxydlpPbzCmHLaEm9cSeWK14pulN3n+W8Feha9WBgKhroXQbeowEHZIfTPRZ1divcydVm06xyxznwSu+M7EovfTQ0uOPD9C+E7yHbqWSAaA8LvObUuETW6HBD73IYt/SH1+/Na/uKhRxHHeSGO/1rEMZL3s7dVI8NXXOm3Hw0fCS4CBX2Dtc3/pc+V4WlloUDm3x6U3QPTq3eT2HA4pg9QhKrb8O2AnFmLCycEn4ZGha1PFvA1cunReVIyZxZxbOUit745VK+VwD3Wu1vF8aulGgX0OJMCT+5oy1V4OnV3NOwjIYErSzNqVGRbfk+TNcaO5UOp8HdIRmL6d32s7clvcjmJAEgeAqa5Bd14L11nMwjenxe+OQl4cY5pia37UcTPwhAzxuUTtqZS/1FVVAtn77RJ4P0bps+QgQC8/Fi4WLCaaEIJwV/l7IdQIDeGtPo19XwsfaLyjpiYTVbUO4ygNaNBTpAEvR3SVM4WX5lyGEykhSAJS4sYNalDZOCR4dJ+dAi4r6XKR8YDhxU+2WVm32YgwiF4ZBhFFKvBqzE+JeH0dgbRB8ey3ggLAHVZfEpyLKg/n4eY6PYwy6rzRQVU4oAzImmRmPzmgZq7K9BBOI4Kmh8CsvY= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR12MB2353.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(366016)(376014)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UXZCd2JURGYzQ1crSmY2MWN6aUdrWFRmeXAvWG9hcnpsMHlDRXJQdjFvTUxV?= =?utf-8?B?ekx2Yzc1aGtEQngzbnZoYURlekFpUHZ5L0xIanNqek82UlhubHBaVi9iTG1o?= =?utf-8?B?ZXdwUTFLLzRFVlRFWW5tZUNMd2NJMThteUNXREpjeHhOMGRVcUVMUzB0S1FB?= =?utf-8?B?dFlCTldEaEYrNHJtL0hSdWxGSU9EQzFpMDBXMnhNWlU5VW5vdTNGUXU4b2Jw?= =?utf-8?B?eGtsQUcrSXZ2VWhaa3Vya3NOb1FjL0JYcmsvOTkwdXhQbllzK0hBL0JKRmF6?= =?utf-8?B?ZkRKK1pEM2YrVG9xamlKZmtaMi85VUIybzB1R3p2a2Y4TFMrOThVdTBBMGNV?= =?utf-8?B?QzAxcGl5N2ErVHRjaldJc1B3THNhTXF6V3JDeUFEM1Z4ZVB6VnFMZjU5VndM?= =?utf-8?B?L1hVTWpIdGtXT002R2d4c3BBQlZGYWVKUDJTTG1pU0FqN3hrcWNqTGs4VFFo?= =?utf-8?B?Rm8xOGRGUTBWcVdMLzRmZjJ2L25sSGVaaXJIMklPZTlxUW1HVEJzMUlEdWs4?= =?utf-8?B?UjhzTGRQTExOUjgrS1lsc3FzaHhNUW9hR3p6aFErNlYyZHNUcGlmeWxMVUk2?= =?utf-8?B?cU1uSGRRNlZVT3JHM0w5aklCcDdhWmU5bnRjODJBUlgvcDAyVUVaTzU5TmJ0?= =?utf-8?B?UWVaczZqMWNSRWFzVnhQc09wK2VSblh6VUZuVDViVXJIZFVjcm5GT3MzWDBu?= =?utf-8?B?dThxRHEyMmowRXFUY25icENkYjFMd2xyWFcwcjdhR3AyejhWSWhKdDVJdEh4?= =?utf-8?B?MnhFSGZEajFvdEx5anlnTExhTDBBOU9PZGZ6cmYwK1h6N1RIZ2ZJNWo1TDFn?= =?utf-8?B?clJxeFlVSUFGQ2k1NTJVT1BWekl3VXBMd3Y4b09VUjdFTE1YTmpVSWEzSHRD?= =?utf-8?B?UDByOWpGdml1VE5BMW9wVWpJRmhMOEk5SFZreS9IcXU1dWgrTW51aEJjcW16?= =?utf-8?B?YzhyUFFhTE5uVnlZMmF1djZHTTk3ejNodWhQM3FLc3BWT3pEc2daSWk5NWdW?= =?utf-8?B?UzNMQnRFOFE0WmVaeTZlUDhvNlRDanVCZXpnQlFxOGJnUkNSY0didkdwNURZ?= =?utf-8?B?OVRHa1p6Uml2OVFFWmQ4bzNWTFpGdmFtM3A2VTlQbTNIYTFTNkU0NTBPVTNO?= =?utf-8?B?ZENlM1NYbXdaUnpQWHhjZC8zaUZjSXhBMVN5NEFCejdOdUdkTGF4VkF1SVNM?= =?utf-8?B?UFAxUWdxTURQRzIyMTYraVE3eG0raHJyUjdlaXhLS0VaQTAxMHFaUTlRTTdH?= =?utf-8?B?M0hpRFFqWlIzZTJSc3Nqc2Z0UEFHc1NMMW9VRHVhL3MwUlNsODBaejZTdzNv?= =?utf-8?B?c1VJQmFrOW5Nd0lGVWUxU0RTWHFoSzhKZmo2dm9RWGZRdXkzRWRsZ25QMTR5?= =?utf-8?B?TnJ5TGtqUnZ2Wko5THdlVzhETlNBRHhuU2tXT29IVjF5QVJEY1hKNVAxYTRr?= =?utf-8?B?a1F0R0JnWCtXcnNySC8zUUx1UVlmdlVTQmZHRGJBQjcrK1QwRERHZ0FyOEJr?= =?utf-8?B?SXRVWXJSekEwVHhTWXVWbUJjbkZSVHZ0QXNnWWVwUHprM3ZIWm8weHNzb0Z2?= =?utf-8?B?a2cwNGNPTlJ4OHk3SzM0NjdQU2pIK0kwdDR1UnZ6eThFWllmcFpFZFh1L2hH?= =?utf-8?B?Q2lqMkgzTSs3L1RPRmR0SW40MGRuMzB1VzdpMUJHOTMyRkRBenFHZXFINHUx?= =?utf-8?B?VUg1WDZ3aE1QZzRUT3pYU2FYSCsxY1UwU2FYUGo0OXVBZzdHSFNEbU1yckIy?= =?utf-8?B?c3pxVjJVZWtOSUIxMG9ULzBSazFDU0VJZTIxT0RVcXVUcXJoeEhiNVpwWEFi?= =?utf-8?B?U1gvdU5BTDhmYlZPVVlzNnY1aWdqZVFJMlBKWmg3ZGVNQTZrSXgwZUVGTno0?= =?utf-8?B?dFZ2ZFRTakdpWUpxRDg0aFBLNEZjeWtXUE5ncmc3anNIMGsrY0dYVktCT25Z?= =?utf-8?B?TjRqcE56RG91QkhYbDhoZnJmemtpR0ZEa3JzOFNRL2h3TGFReUxmNHNhUkpU?= =?utf-8?B?SXVMTEtxc1hmVWRFVHZmNW5zbGZOM2drdFJmc1Vmc2J4ajByN0lkWHpjSnFO?= =?utf-8?B?Umw4dk9JQjNBRHRWSW0xMXN5YmxFWUtvaDMzM3BPbkZDdXB1bTZybE40QzQ5?= =?utf-8?B?dmhEQS9wSkl2L1NWdXZMSXA1UGtOYzFEMlNNczJJcmlFeC9ueWJIS01qSWNn?= =?utf-8?B?L1FtVE9hV2dRaTVSa1lXdjhBSCsxSVVzY3pGS282ay8zSjhYU2R1VlRzUmpI?= =?utf-8?B?czdyQlpsNFE1TnMzd2h1aFZwalFwZUJaMnZMaHZKdzVTK2tnN2lMcmc5U1pH?= =?utf-8?B?aUZkMmxPdU1Zc1orV3NWN1VUSWcwT25iV1E3anVmOW45ZlZyeFRpVEdpZm5y?= =?utf-8?Q?RsmTFGDThh9saBT5SnchKERyogHrVjcT6fOB1RhhBNLk7?= X-MS-Exchange-AntiSpam-MessageData-1: uzMf+xa7YQz17Q== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 80e13dd0-18bf-44c5-a3c4-08de8a680138 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2026 12:14:03.5845 (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: x6sb3ZPq0jGkzxNVE63bnYJ4NNlZtxeAu99FCGN9QXTZt5OlANkSg2i7SReSlPFvaKLDIvlxxxirDAKkCZ1QFw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1PR12MB6313 Add the bindgen rpc_gsp_rm_control_v03_00 structure. This is the structure for sending RM control commands. Signed-off-by: Eliot Courtney --- drivers/gpu/nova-core/gsp/fw/r570_144/bindings.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) 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 dd37a7fd58c6..05e205e6dc58 100644 --- a/drivers/gpu/nova-core/gsp/fw/r570_144/bindings.rs +++ b/drivers/gpu/nova-core/gsp/fw/r570_144/bindings.rs @@ -1025,6 +1025,17 @@ fn default() -> Self { } #[repr(C)] #[derive(Debug, Default, MaybeZeroable)] +pub struct rpc_gsp_rm_control_v03_00 { + pub hClient: u32_, + pub hObject: u32_, + pub cmd: u32_, + pub status: u32_, + pub paramsSize: u32_, + pub flags: u32_, + pub params: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Default, MaybeZeroable)] pub struct rpc_run_cpu_sequencer_v17_00 { pub bufferSizeDWord: u32_, pub cmdIndex: u32_, --=20 2.53.0 From nobody Fri Apr 3 01:23:06 2026 Received: from BL0PR03CU003.outbound.protection.outlook.com (mail-eastusazon11012004.outbound.protection.outlook.com [52.101.53.4]) (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 BC1313DBD7C; Wed, 25 Mar 2026 12:14:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.53.4 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440853; cv=fail; b=TR3mjrbWQ+FItuh/VTK9B3cnOnqpvxlewcwtekJTCsjPnqikMjigo84a5zhN7awC5H7HVOwJL1CaaaqsZU7wLTqvcwHVwFxbqLYmyyLo3rItscF2DIAABoM/32PRtAxXP+FFXXyOk9AwCmMWtmpIECAjUG4g0KYaEdIEnZrO2fQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440853; c=relaxed/simple; bh=jOFA8HsI/nmHwhrR/HRYTuq4gOaM7l2AfP5j7vEu29U=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=B9gvB0djWt/oKTdi9jFz5t2eZ0E3okfYa12PrrocL0osYXxc4kPy0fCOS1eHtrmPoX8Wt1AcpoGM+hDO5rhzJn+3pbm0nZeX2sAW958xq1tqQK3CllXTi706QqvN46oUyYDypKjPL2SpttM4v6nF51Quzz/BQtwXxyRkJZRz3UI= 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=B/Yo6Q/G; arc=fail smtp.client-ip=52.101.53.4 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="B/Yo6Q/G" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vhKZLNv3NO2bUx7D5FWTfAJby8VPpEn9LLQsEtmMJ4w+AuzaqZo09h18O+fW+70+Tu4sUzVSSSNTyTOeU7LbdV5PLS/kKAilsUS0orVdD5AcLjwHUZAaw3h7ocSgVfgT89s6FiubweCEZmReA5HJqnXOovj0bz1f8/0XH316l2KrK4pp8j84GC86FKEnn5cbnvnTVWDAo+RaeA5QDITusNJb3MScymxrN6LXCo0Bfs2VfYswcxDC0XI0LBLCEKi8+QDj0q1XicRfEpMM+VyI7hBZdpS0lX2xj/DmjNVg8pY1YsOEOXWq1YH1SWXgh5Sa36CgiArjUhxC33DW2GPLnA== 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=0fiWpj5+EcbEQvD+iFSp51aqmCk0SqRXqdleZFjLSOU=; b=LEq2xm7BLQFhNt75d0wHwJRF02Sk6bz1tUgbP+i29Aw6pSSI5xYsqXlZlr0U663slUKkWGHc+DNCdnZRlseM1Fe1N3nzXDnaEkBzOM5pR9A7mLzlVeMxvHXyieTDH2KXGC1OtXUIAbKEQwr2KSluqDTMGTIO6tKGeBFl452CrG/0NSnIAdXUxhTWUxgYT1+3A7U1aCxMoeONNa8+/7bnakmgli2EcPpxb9biT3BpMWMOObIbRn1M4R9IOEba+1YcE4bOaeP0XB4q+sokRXUdODYZ6IE15LaMi2HNU9iYpAQpqwhqDFpqXHx32j2GmY7MJLNTO45QVNP05SXIgbLBWQ== 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=0fiWpj5+EcbEQvD+iFSp51aqmCk0SqRXqdleZFjLSOU=; b=B/Yo6Q/G2Uq90orxSq9J5xmco6VTwncQBCjwyh99GlA/GBP6eQzCjRBB3XuIUGaQPp+sVKVcjWLnyRfhtJ14XON5V0ooVfJ+FgBg4TQMYkWJgYtpAPH9aIN11Yc0i0c6ch0uhBudO3PGvpcGpI+zcuxv3KR7SuNiB6cHjSa2olEtmA06XlpQIX5jLvMyDrG+vrBoqFZrYrzMgnyZFn8oJ6zl0Do7Sskx7sg3Ob6YmOnUKJjn71oVDnB1iSWHk9K2JUhR0kVYkpoK0o2ntv5NN9TMCl70yBL8LZgcYr9NQpzonzh8lj6n9M8g0NN1FNTG6FYNzEmJofjbp97HqL+z8w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from BL0PR12MB2353.namprd12.prod.outlook.com (2603:10b6:207:4c::31) by SJ1PR12MB6313.namprd12.prod.outlook.com (2603:10b6:a03:458::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.20; Wed, 25 Mar 2026 12:14:07 +0000 Received: from BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0]) by BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0%4]) with mapi id 15.20.9769.006; Wed, 25 Mar 2026 12:14:07 +0000 From: Eliot Courtney Date: Wed, 25 Mar 2026 21:13:43 +0900 Subject: [PATCH v3 5/9] gpu: nova-core: gsp: add types for RM control RPCs Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260325-rmcontrol-v3-5-f3101093484e@nvidia.com> References: <20260325-rmcontrol-v3-0-f3101093484e@nvidia.com> In-Reply-To: <20260325-rmcontrol-v3-0-f3101093484e@nvidia.com> To: Danilo Krummrich , Alice Ryhl , Alexandre Courbot , David Airlie , Simona Vetter Cc: John Hubbard , Alistair Popple , Joel Fernandes , Timur Tabi , rust-for-linux@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Eliot Courtney X-Mailer: b4 0.15.0 X-ClientProxiedBy: TY4P301CA0092.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:37a::16) To BL0PR12MB2353.namprd12.prod.outlook.com (2603:10b6:207:4c::31) 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: BL0PR12MB2353:EE_|SJ1PR12MB6313:EE_ X-MS-Office365-Filtering-Correlation-Id: c55653ed-d02d-44e0-e9dc-08de8a680381 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|366016|376014|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: gQwm3GVfQTMjDibxBtXNLnM8d4BEyR1CMou0yvA7isLuwVCQzG9fbZAb7sZ0JgkWwmoH9n3loCuzjxW78WPJEdasSQyFqdpR6rOqJ0ed6IDgphoch9uV5GoK/BLLuage585ZiZTDE9UK4fZ5kr+R97BC/1ihqU2ER0fPEi1xbctBoW0xRAxOVJMvZ/jSTaK8L0P3reZmDqX1hcVBlr0LWxrQVN98/YLGlIFGS/mDLnLeaL5EBEmKSuDXOLXfCQEFsVAaWy/1aw25KUogjdLQ4l29QD7U4Dmk2YqtkUxMngfXN0SOwgXipLN3NTKf9nMluUNuKuURr7tZSW+Fme3orRs49XC+hpFx0+PRpdjYfNOy05OAPlP2aTEDSU7mHKPl+kp8ruMdyWpgAYqRYkePtSY01ACd06otS4Uo+BtoNnPHw1MbIzlFQnkFDNVYWCds7ZkA+Nr4qU0IjKwva9ieLV66ApsesmyPLnrt3yd71FzWTB9QqNtZLuhz528c7SVEw/GlId/+eivShSFBvLs8KWnsOU9x6M8+Ac8I+VDqBc7KugGbbpQamVrmeayFBxFjSAAvqBwVuEYh6iqdO5YSBcw8akxM2JmGdlVoCNTflgcFLlEzuTRktH/MEkHzJsu5qat6z0wiH6mOJ/wA4ZCrA377n5iCS+qNuKidNIWkGHVJxrwhJ48sk02hzBO+7NZr7XsHkWoUbR4+GFw6dSpBhN1GhzCs/y87h5vy9m5NpLU= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR12MB2353.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(366016)(376014)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OVZKcUx3UEdtQVFwSEtoQXd6YWt5TjFlQllETFN2NHdwUGpBRXVDVE9YMFpl?= =?utf-8?B?cExrZGxEZDE4TkVvRE9jeWhxcTdxejZmTkFMUzFKdncvS3JmSFBmRytRRmdH?= =?utf-8?B?OGFKVnFmYjdJelFOQlpVY0RXR2hNRWYzUUpMSXJlc21QTWJnZ3JuZEFxcFV5?= =?utf-8?B?aytHNkRDWVBKZlU2YTN2bmp1SnpHc1cydVRaM01wT0t5YS9adCtNMmdTczl6?= =?utf-8?B?eGJZVVZtcTVDNzFMSXVNWWdKWDZLYlNVNVdodnFRMlByVC9aUTh5RFRMelRt?= =?utf-8?B?MU5GbzNpdXM0SUphQ0hHWFI2bEt6dWVPUEpZQk5hOE9oTlFES1lVUEs5OVNB?= =?utf-8?B?NGdpeVRLdnVONVdiU21NaWF2M2g3blRreU5yMHIzVHc0SDNIWmZrVXRRNDdC?= =?utf-8?B?RWZwemVxeWFBRUxKRitjaGpsUXRIbWlGZkZRUi9YNFI2T2RiSHB1MU1ucEhu?= =?utf-8?B?SU56TXRtdmQ4aWdKVlFwRllwSkhWRzErQk5Dbm90ZjU5OEwxeFVyV2F4UW1s?= =?utf-8?B?Wkl2eWN6YnhTeTFyS1ZxZ1FUMFRJVXhyVzI1SmZIK09uMmxWZWY5SlBqcmhQ?= =?utf-8?B?REFFeXQrUWVoUzRIa0xkUTNoSC9rSEk0NHBnL1JXQlQ3bXNKQlBZRnRoUzI0?= =?utf-8?B?RjJyQllwU2I1LzJ1QWE5cGsxNnR5MklCQnllOENzNllvSkFkaGRldGIvTzhR?= =?utf-8?B?bzNLWDByc1RodHJYbk8xMWltZnA0SEJSZWlrOVlGc21pYjRGZkhmZTkyZnd6?= =?utf-8?B?WlZkU2JybTdLaWN3cDN5VzVrSXdVYU5XRUNnaW9qYktQL3dINm14b2dJSHJt?= =?utf-8?B?aEtoT0o5WTZlTFdkTEtNNzluVko1RktFWjFJMzgydnNjMTBhdTJNUHZpWXAz?= =?utf-8?B?dGxUVENkaEY2aW5EdGIzeWRuc0xUWTVPS3BMVDBNdW4yc2t2Vlp2aFlMTFhq?= =?utf-8?B?Y2kzNEhFVHB6dVVTaUd5V21SVnN5QU1oNHVuMW5BUlRMbEI3S2N3ZDdoV2x1?= =?utf-8?B?Zk1BazJUMk5SYkV4bEpBZUVPZWR5M1FmdGFTVk0rWkV5a0JGOWhXSzRSNnA0?= =?utf-8?B?bGt5eGVsTlJrc2k3cnJMa1V2cVFTYmJFbitHeTRzd1N4emtGSnZiR3JOdlM5?= =?utf-8?B?M0FKUElzVVU5b1FlZTdXS3V0Zkt2ZktOV3VpV2lFTUVrY3dtQzlMcjdYTmYw?= =?utf-8?B?a0NSSko0L1hTcFRlMm0zTVMrS2l3ZXF2aUN6cFZUSjVmTEZGQ2EvK0RaRisx?= =?utf-8?B?NlNML0FUQWJuaDY2aVNSTHduTVdwV21qZXdKWm9aTEpSSVd6ZXdhYWIxNSt0?= =?utf-8?B?QmErYUk0dXB4NXZNQ1I1UTVob0pOSzNzeDNFMVI0SVdhSG9KdmlJV3d4ZWFG?= =?utf-8?B?SEpRQ3ZhRG1vQlVyYXY2b1ZzVzVxRmlWYndNWnA3cnJVNGRIbG16aSs3R0Vr?= =?utf-8?B?K2xETS9BKzNJTkNmRWVXL3BFVzNnMEtORFV4TWorcWNUNFBmZHVtaFRmbEM5?= =?utf-8?B?MXdlalNHa0MxVVdRYkNJUlpzM2ppS2xWWHEyZU8va1B4Q2VqVjFpV000Smw5?= =?utf-8?B?UXJtcEQwRm1SbXJnaElEN0FsazhyZE5pUGtzeld3TzV2d091emNoU0h6OVRy?= =?utf-8?B?NjlLUkdaTkVUM0tpeXhQV2JDYlpsbkw3OVJtVjBucFhvUDFZeEM2ZzZCbnVL?= =?utf-8?B?WHRSMHpodXhnam9hKzl6ME9TbEo1cWUyVzJWb1FTYU1TaTBOczBvaXljeXpZ?= =?utf-8?B?Q25uY2dzVVh2WnFmUXlzaEFmR2RERjNCRzhHdFRCcE9WblpCRXBGaXdKRGFP?= =?utf-8?B?T2hWU1I0bWgrdjdXS21ON1FMVCttTUI5N2hOREhrcit3S2taMWl1UFU2cWJI?= =?utf-8?B?Q1orRnRUNGxQeGxJWWE2eHdPSDV4aUw1bHdzNEtCaHJQNUJoNlpwUjZ0R2dQ?= =?utf-8?B?R1lEY0RhQ3RxZm5mU0hKclNTL2xIcWFkYm1ld1BoU1g3NjhySHRPdUJZL1pO?= =?utf-8?B?b1l3SlBTMkNYMHVZcWp5YjROaWVKZjdNL0orOVlzdEZYbnNOMGJudTB3QkRL?= =?utf-8?B?Rmg3ZGhhTjNINXB2b1JvaDN0am1xL2hoQ1pFWHN2TENoTDZhaEp2ZkdDNUV4?= =?utf-8?B?bThCazl1M1FGUDNzdENxMFhFazJPR2ZSbzJlbE0wbXo1Wis3aXZMMWNVcWFz?= =?utf-8?B?aUo1NHRqdG1DbnlTbldkWkxXWkNtSzJ6Wk5DODIxNnJhRnVId2F1UmlycE44?= =?utf-8?B?WnJrcmI1TlVPUlltQkdlTUdiVHBoei9lVWpacDBNQkU5OXovYkdWbWZiT1Mw?= =?utf-8?B?aHQ4NWxlYnBPaERBZzFiSlJSMm43V2VmNkNEenV3d2tBZ1B1T0FLUzAwYld4?= =?utf-8?Q?vdLIRMc388vW2QpLmSyMY60p8ooxEHTXdohdIwlkPzdkn?= X-MS-Exchange-AntiSpam-MessageData-1: zdjzdf1nA9QdVQ== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: c55653ed-d02d-44e0-e9dc-08de8a680381 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2026 12:14:07.4289 (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: YCtee/cOqCS64J+q3YwC5TOzc3mnAlBqazzo9yjCHaGST1xWYKMGkBICnR+gP55VrJ0Gq4Da1HxgdQGl6uW8cA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1PR12MB6313 Add `RmControlMsgFunction` which mirrors `MsgFunction` in fw.rs. This denotes the type of RM control RPC. For now it contains a single discriminant only (which will be used later), which is needed to prevent compile errors when using an otherwise empty enum. Add `GspRmControl` which wraps the RM control RPC structure from the bindings. Reviewed-by: Alistair Popple Signed-off-by: Eliot Courtney --- drivers/gpu/nova-core/gsp/commands.rs | 1 - drivers/gpu/nova-core/gsp/fw.rs | 1 + drivers/gpu/nova-core/gsp/fw/r570_144/bindings.rs | 1 + drivers/gpu/nova-core/gsp/fw/rm.rs | 88 +++++++++++++++++++= ++++ 4 files changed, 90 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/nova-core/gsp/commands.rs b/drivers/gpu/nova-core/= gsp/commands.rs index f3566f3ea6a7..8c9599aa227b 100644 --- a/drivers/gpu/nova-core/gsp/commands.rs +++ b/drivers/gpu/nova-core/gsp/commands.rs @@ -77,7 +77,6 @@ pub(crate) fn new(raw: u32) -> Self { } =20 /// Returns the raw handle value. - #[expect(dead_code)] pub(crate) fn as_raw(self) -> u32 { self.0 } diff --git a/drivers/gpu/nova-core/gsp/fw.rs b/drivers/gpu/nova-core/gsp/fw= .rs index cb4bda253193..bee7169fd4ae 100644 --- a/drivers/gpu/nova-core/gsp/fw.rs +++ b/drivers/gpu/nova-core/gsp/fw.rs @@ -2,6 +2,7 @@ =20 pub(crate) mod commands; mod r570_144; +pub(crate) mod rm; =20 // Alias to avoid repeating the version number with every use. use r570_144 as bindings; 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 05e205e6dc58..ece31cc32f5b 100644 --- a/drivers/gpu/nova-core/gsp/fw/r570_144/bindings.rs +++ b/drivers/gpu/nova-core/gsp/fw/r570_144/bindings.rs @@ -44,6 +44,7 @@ fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::= core::fmt::Result { pub const GSP_FW_WPR_META_MAGIC: i64 =3D -2577556379034558285; pub const REGISTRY_TABLE_ENTRY_TYPE_DWORD: u32 =3D 1; pub const GSP_MSG_QUEUE_ELEMENT_SIZE_MAX: u32 =3D 65536; +pub const NV2080_CTRL_CMD_CE_GET_FAULT_METHOD_BUFFER_SIZE: u32 =3D 5452702= 80; pub type __u8 =3D ffi::c_uchar; pub type __u16 =3D ffi::c_ushort; pub type __u32 =3D ffi::c_uint; diff --git a/drivers/gpu/nova-core/gsp/fw/rm.rs b/drivers/gpu/nova-core/gsp= /fw/rm.rs new file mode 100644 index 000000000000..4a4f97d88ecf --- /dev/null +++ b/drivers/gpu/nova-core/gsp/fw/rm.rs @@ -0,0 +1,88 @@ +// SPDX-License-Identifier: GPL-2.0 + +use kernel::{ + prelude::*, + transmute::{ + AsBytes, + FromBytes, // + }, // +}; + +use crate::gsp::commands::{ + Client, + Handle, // +}; + +use super::{ + bindings, + NvStatus, // +}; + +/// Command code for RM control RPCs sent using [`MsgFunction::GspRmContro= l`]. +#[derive(Copy, Clone, Debug, PartialEq)] +#[repr(u32)] +pub(crate) enum RmControlMsgFunction { + /// Get the CE fault method buffer size. + CeGetFaultMethodBufferSize =3D bindings::NV2080_CTRL_CMD_CE_GET_FAULT_= METHOD_BUFFER_SIZE, +} + +// TODO[FPRI]: replace with 'FromPrimitive'. +impl TryFrom for RmControlMsgFunction { + type Error =3D kernel::error::Error; + + fn try_from(value: u32) -> Result { + match value { + bindings::NV2080_CTRL_CMD_CE_GET_FAULT_METHOD_BUFFER_SIZE =3D>= { + Ok(Self::CeGetFaultMethodBufferSize) + } + _ =3D> Err(EINVAL), + } + } +} + +impl From for u32 { + fn from(value: RmControlMsgFunction) -> Self { + // CAST: `RmControlMsgFunction` is `repr(u32)` and can thus be cas= t losslessly. + value as u32 + } +} + +/// RM control message element structure. +#[repr(transparent)] +pub(crate) struct GspRmControl { + inner: bindings::rpc_gsp_rm_control_v03_00, +} + +#[expect(dead_code)] +impl GspRmControl { + /// Creates a new RM control command. + pub(crate) fn new( + client: Handle, + object: Handle, + cmd: RmControlMsgFunction, + params_size: u32, + ) -> Self { + Self { + inner: bindings::rpc_gsp_rm_control_v03_00 { + hClient: client.as_raw(), + hObject: object.as_raw(), + cmd: u32::from(cmd), + status: 0, + paramsSize: params_size, + flags: 0, + params: Default::default(), + }, + } + } + + /// Returns the status from the RM control response. + pub(crate) fn status(&self) -> NvStatus { + NvStatus::from(self.inner.status) + } +} + +// SAFETY: This struct only contains integer types for which all bit patte= rns are valid. +unsafe impl FromBytes for GspRmControl {} + +// SAFETY: This struct contains no padding. +unsafe impl AsBytes for GspRmControl {} --=20 2.53.0 From nobody Fri Apr 3 01:23:06 2026 Received: from BYAPR05CU005.outbound.protection.outlook.com (mail-westusazon11010031.outbound.protection.outlook.com [52.101.85.31]) (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 4B6853D6CD3; Wed, 25 Mar 2026 12:14:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.85.31 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440859; cv=fail; b=pWVQIorZLXS4e9G7XSd6jDr2143170Nq1XPTqyBYon37b4ysKixie1jsxP2qjmBHgwNL4RyK6qtjjAw8ephS8lztQEPcC8dSxYP3+WInsAu3QXrmGNJDi3rQb6qIbXN3YMbwrlh2M7Yo/+yMak5hv5fZ4hNQhCjVGyl39b8Ir28= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440859; c=relaxed/simple; bh=Prnq9yXZGRydOJ+BgdlsWNKnX1BhWiUfeltkAGEyPz8=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=o9NF3kkjAmtXnfDNZ1wr9ZANgEiSFXPuc+Vs5LnkcLb8nMGuRxAGmZgKNJv9xCHqQaakwrzystDuHP6B7WJMUjehjnkoGrUiQlELQhx+/qyxGCFH52BERPOnJ73gzApigDDCBehLlrlskV7VEvFxmKScfJcapgzs/v7la/xjh5g= 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=d3knDzDm; arc=fail smtp.client-ip=52.101.85.31 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="d3knDzDm" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ftDcwqWkQqhwJRRJ5N0IRtFt4KwAsVmOfupOUusx4FSHUJk0WfyX5263Ugxi2+9VJssBVmL6aXmLPuuDWMBBDmSR+nbZ7wxYwuwI6+99om6/+GJy7/VZrtSPtAPMF894N3Q/9xr9lP0UvVXGPlVRMPdqJl5tH9yNYvrgDBdFnFGQeb0yu6NDN+2GBYKF3lRrc0MkbyHL/K+8Ztky7HH3uKu6VMWDN7O+T12JMic/ojAfRtUYbGSTKsFYtswdQbatk5+gWWADffuSNbGIX1iAZlS9ULSshLDZaxKjiWILgoeRfLdB2f/cwnRKPCvlfJceFw1vj4m6+rQjsW9UXiL0lQ== 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=gAdv4EsEnz4pa/hccDO+aPbUA6jV0i3gF4VPXNK89TA=; b=MKHZfFTkqmp3pPV9aA1ABeQgpg3BaFskQljYWrKx0TISkR7f0REFbOvkR0KyaNQm5kssItPlitaMYx7f52DIo4pREr03AHTsZv+Aoqj9AQogjdU/C2RpWqArYSWaAeWklefWxtimuMrCnUDQlTn0RR9gKZT8RJ6BYyQmST5zf/iLFXrACeeuiEO0g1Gsm9Yg7ImgIk4EZWOlIaiM2sEVRTYL4EbDiVDBSLFmj7eVYgCYmxiAIA+DcsuzTB1evhtJ96k/Foprq+b+X1yuF+cgFo288zjyl+8qnY7ReRHEt2COOv3uz1SBPEUcx2dLFzrFJVlA0BvcTm44ZlX7042ygA== 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=gAdv4EsEnz4pa/hccDO+aPbUA6jV0i3gF4VPXNK89TA=; b=d3knDzDm3RoV3PuPe79kHKut/wEWtz9tJuRQQWf7Dy1hs5iKL+jywxpJ3UpSs60KowgVWvqXTGoaiBG77lsxSPO5mQ+AZE6Dhp2l+KBD/jt/9+wqiaMvGPEjilwMPrWQSfwvLhv1CZ2xt1UDACb+ptwB06Q3RqkS6r4s68QYzwFDFfU6jHBvf45otpYSEP0UYrD3s/xDpYk5KFxG/3j848IPo+0dUR6ssCkberMsi42X9srqNcgP2Qe5h5dLCJB8/6qc/R4KdwTuFZbLIDz8u3HNhQk1NCB7I8L8HcxYlKKr4snMq5Dej8hshtaFD6lRboyppe4sM3BoE1Zsg8jxlQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from BL0PR12MB2353.namprd12.prod.outlook.com (2603:10b6:207:4c::31) by SJ1PR12MB6313.namprd12.prod.outlook.com (2603:10b6:a03:458::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.20; Wed, 25 Mar 2026 12:14:11 +0000 Received: from BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0]) by BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0%4]) with mapi id 15.20.9769.006; Wed, 25 Mar 2026 12:14:11 +0000 From: Eliot Courtney Date: Wed, 25 Mar 2026 21:13:44 +0900 Subject: [PATCH v3 6/9] gpu: nova-core: use KVVec for SBufferIter flush Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260325-rmcontrol-v3-6-f3101093484e@nvidia.com> References: <20260325-rmcontrol-v3-0-f3101093484e@nvidia.com> In-Reply-To: <20260325-rmcontrol-v3-0-f3101093484e@nvidia.com> To: Danilo Krummrich , Alice Ryhl , Alexandre Courbot , David Airlie , Simona Vetter Cc: John Hubbard , Alistair Popple , Joel Fernandes , Timur Tabi , rust-for-linux@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Eliot Courtney X-Mailer: b4 0.15.0 X-ClientProxiedBy: TYCP286CA0131.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2b6::13) To BL0PR12MB2353.namprd12.prod.outlook.com (2603:10b6:207:4c::31) 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: BL0PR12MB2353:EE_|SJ1PR12MB6313:EE_ X-MS-Office365-Filtering-Correlation-Id: 7ba4d599-1ccf-46ce-b778-08de8a6805fd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|366016|376014|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: 9uYKaCXHfdzpVv/e0bQPD/OgCUFJXO7mYq1EREsrTw/A6JActCw6p2PsOKunyL6n6U6RH3b3CgBmDEAFgDzYScrJkcvE1rm53NGzqOQiiF70Q8np6usmEfyV1lkkvWUNpNsL06xY5phoNyj8JrRAtbfjrNSwoNPepO93EDNVGqsJax0orsJafDS+ekmPCX857aqanpOA9o/+tjCWRkPM7qJONjfhq02beEkmyFjOuSIen5N9yq1w5xTzZ87MRSXF3aKppy3xz/JNaoWucQxW+660caM8w4VOZ5H6nrZVpv8s9CBr2178CtBI149KgFbN/o3B6b/5KYUAAwlyIntqr46NKDDdl5efqRQlbZP3/VdyNP/b8p327azH+mgSSD/AUZvyNbxssQcka4hXxEKkyHsStIWG5Q5G9BmmB/cEhWjJSwcazWqXAVKDzNMzZBq5Q4ZItpEhL2hMgcc/YuFU3JXQSvAKXvccmQNKJniWgq5VqH8nu/bUNAAcLx83kXoRFq80YrgwfbxFmkgkprplgVrQkarcCBZEOGyN9+RHKgGtRKXaGB7dMYQEa2dEAwcFXTHVCsIezHXfLDBgNEGn1v5W//blI6YpMa3LTLFEsq6MPSazN8tz02V6xC4Cc4WMsLDHh7I+8Sqyzmk/8/KwyCdZxStQiNvOnu2BcOE+A/Bo2p5VV+OOxmvvv786YzrOiyuIKFS0lR/w9ryt1ydsrZ74x/J0qcsADN97PDA+Oeg= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR12MB2353.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(366016)(376014)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YlJwYnl2dlZtcUlyUGEvbkFIK3doMS9Xd0oxVnYxZGtsRi84MUdRWE0zcUhZ?= =?utf-8?B?RC9OTjRLWm1KMjRldW1RVmh1N3UzVGxuL3hhNnZ5cnZaWnRQKzVacHlUVERu?= =?utf-8?B?d3VSSnBBbTdPc0Q1VmNibkc4N0kyOXRQaXE3dEIxdURZQlNZVjVTbzg1RzZt?= =?utf-8?B?ZU9uYXZpb1RsVVNpWEp4YlV2ME1Fdm9xSExvNlBlWDR3Ly9kOXNzekVXYTlG?= =?utf-8?B?Q2Fya0lrRXZ5Nm9zTUFwSXRRWU5KbjNtNXhzSG5EaDdNTW0vVmRjM1dkVmlB?= =?utf-8?B?NE1oZkZodWt1b2NNRkJtNFViM3Y0ZGdBY0d1SExoT2pMNm9rUTJIOW1qM2Fi?= =?utf-8?B?VE4vSVlnNVdFaVpqdUVZUm1xTVdOa1VMalNtVUVwbzFNV1o5Zmptc25oRHox?= =?utf-8?B?dnZISGpTQjJXSy9EKzYwY0lacXBCMnUxV3BNT1dMWFROb1hPb2VYNWxTTG56?= =?utf-8?B?NzhXZjY1RktldTVXcEtTY3JheFJyU1BLOXVPZlhuUXBkUlI5T2JOd0RnMjFX?= =?utf-8?B?ckVXRGxaN3hQYm0zV01KcTA4TmhhbGxMSThBc0U4aCtrOFByLzE4RHRtS2t3?= =?utf-8?B?MmxRS0dHakNjNlNXYXJrMEJiK0p5aDVYTEVOV1pJSWVneE44Z2w0cnRJY2hx?= =?utf-8?B?ZzlqSmcrdnZ5SmttUS9ua2pzRmhZVzlXcEU3bjdnNzZhd25LTWk2QUM0VUli?= =?utf-8?B?THR6YTRGWGpJdTVab0RnTzRwUXMrKyt0Qnc0ZjBBZHdsTVlWNDN2Y21xVzFI?= =?utf-8?B?RWk1eFBTT0s2TlROcnhHcDdDUFV0aWtNOGFMZ1BhRmdUckpvZTNEREN2Uzdn?= =?utf-8?B?MzVic1Bza3U0MlYvNlFMOUtmMXJkTlZjZm5uZ0tyUjIyNVV3RFZBNUVMSkVV?= =?utf-8?B?dng5SWVVTncxb0JaOFdDVVVhNzZFM3pnemZDbEROVUVVSURiVVY1MzFzNm9P?= =?utf-8?B?UlJVMWtJVnBOVGx2UTFkSWdINm4ya2laNG5oWEZydkN1cUM2WDZQRldnUVoz?= =?utf-8?B?VlZUazFqRU9nTk9KazVtcXhSK2VScXQvcGJvQTdYcVhSWEhJS2htTDJ0Vk5B?= =?utf-8?B?VktHL0ljVklWNk4wNFQvTUFPQnNnSjJYZ3RKUmRkZjBXRTNMbmp2QmMrc1NM?= =?utf-8?B?RjcwTnorM2h3R2s5b3dtNnAxaXc2SUlER3MvbG1QdzhFajg2cGZHSnlWUnJJ?= =?utf-8?B?TjdpT1BiVE5IL1dQaFpuZC9jcDBHM3dLU2s1Zy9xYzlrS0tpMTJiVkFUN3U1?= =?utf-8?B?Y1ZLQjFMQ2I5NXZXMi9yRkRtQjk0OUZQR2VHQ1lIcmRJOHF1ak1JeXVvWm9Y?= =?utf-8?B?aC93R2E4Z1VwWnM1MkRqUjRQV1pjS0VsNEhPQy9veExwS09vV2ZTS3RsUklD?= =?utf-8?B?K3pxVndSRmpGWDR4OVpBdUZuU1ZQQ0ZkS25EMjNMTjZsVnBRVkNFS0FqNWJL?= =?utf-8?B?MVJNdU4vL1Z0NmI4RUIvVDBXZnRZalE5WjcrRlhGWm5xd1dVRTZ0U2ZRKzVn?= =?utf-8?B?bVZSWENRUHN1d3llenhDM25RSTU0MnU5UlM1TjIrYU5rNkk3MVZGeituR0RC?= =?utf-8?B?WXY5RCt5VVJLMHB5a0VabGw4SWJueVhiN1dONjcvb3Qxc3kyeDBQbXhCVlB5?= =?utf-8?B?ZGk5cGZiUENFYjJKUTh6a0VWc1NaaHdnb1I1d3Nuek1ReW5MTU5zVjR4SUQ1?= =?utf-8?B?S0NVSW12cXlMQ2ZCQStEeURJK3JpcFd3Tk96aDhFcGl2NTdYQkh4UndEZHZJ?= =?utf-8?B?bjcyZnpQNlhJblEvOEJmK1AzVW01S0tyQjQrT0FxUSszYTZqTEpSYlZHa1N0?= =?utf-8?B?enRXL3VjQzl0d1h4K3hsNHJET0FNMjlIVlZGS2gvaWlJZzlDLzhZN1Njc2o2?= =?utf-8?B?eWFhWUZoRG5vOHlBb01oa2g5YllPVVF4VW9UMzdIaW1QbDJSUmVWcHlRSDhQ?= =?utf-8?B?WndjN3dBYzdnaFhpUm0rcG8wY2wvWkZIRGpqK2JqOU5nMERtVVBVUWQ5YzJI?= =?utf-8?B?bWYydDVmRHpXNkRXak50dldBQmhLUGVRU21XNmtYQk5taUJ6amF0ZmZNZHU1?= =?utf-8?B?T2RWbVA5NXZSVi9xeDBPdGRJZDdVK0kxRVpzcEo1eTlKcVdzcWlJdGtrcElV?= =?utf-8?B?SWRRK1l6blB2ODU3bjVIek1MN29rYTdmcmIyUzhLZzgza1ZQc25lM2JrQmNz?= =?utf-8?B?NEFBUzMxS29HZVJDSW91QTNiZFJoVjh6enpGeEo0RmtuOWsvQnZ4b3pzNXlo?= =?utf-8?B?d0xEbjY3Z1FraGNEeFQ3M0lZTzBWZ1ZDN1BtTG5rajVHaHU0Vk50UENZSWZB?= =?utf-8?B?cG5SUDBXNnN2Tm5IYWNyWDdNYWxHandaL1RDbEk1aHRiM0VuMUZweXlST05r?= =?utf-8?Q?AQYf9cGHHsH7sHBdjhqwZ2nm4sNU8fJF4wnowsna4TNYt?= X-MS-Exchange-AntiSpam-MessageData-1: TpO89LKxVuuzQQ== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7ba4d599-1ccf-46ce-b778-08de8a6805fd X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2026 12:14:11.7562 (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: 4O7t7t8WkfmZrD6jMMbx1v56Ag3qWkTZpEVEHeariFmxUC9/3Pmr19RWA4dI4/MZfSq3zXK5WKUhA0qe7eNFrQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1PR12MB6313 Change flush_into_kvec to return KVVec instead of KVec. KVVec uses vmalloc for large allocations, which is appropriate since RPC reply payloads can be large (>=3D20 KiB). Update GspSequence to use KVVec accordingly. Signed-off-by: Eliot Courtney --- drivers/gpu/nova-core/gsp/sequencer.rs | 4 ++-- drivers/gpu/nova-core/sbuffer.rs | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/nova-core/gsp/sequencer.rs b/drivers/gpu/nova-core= /gsp/sequencer.rs index 474e4c8021db..c8f587d2d57b 100644 --- a/drivers/gpu/nova-core/gsp/sequencer.rs +++ b/drivers/gpu/nova-core/gsp/sequencer.rs @@ -42,7 +42,7 @@ struct GspSequence { /// Current command index for error reporting. cmd_index: u32, /// Command data buffer containing the sequence of commands. - cmd_data: KVec, + cmd_data: KVVec, } =20 impl MessageFromGsp for GspSequence { @@ -54,7 +54,7 @@ fn read( msg: &Self::Message, sbuffer: &mut SBufferIter>, ) -> Result { - let cmd_data =3D sbuffer.flush_into_kvec(GFP_KERNEL)?; + let cmd_data =3D sbuffer.read_to_vec(GFP_KERNEL)?; Ok(GspSequence { cmd_index: msg.cmd_index(), cmd_data, diff --git a/drivers/gpu/nova-core/sbuffer.rs b/drivers/gpu/nova-core/sbuff= er.rs index 3a41d224c77a..ae2facdcbdd4 100644 --- a/drivers/gpu/nova-core/sbuffer.rs +++ b/drivers/gpu/nova-core/sbuffer.rs @@ -162,11 +162,11 @@ pub(crate) fn read_exact(&mut self, mut dst: &mut [u8= ]) -> Result { Ok(()) } =20 - /// Read all the remaining data into a [`KVec`]. + /// Read all the remaining data into a [`KVVec`]. /// /// `self` will be empty after this operation. - pub(crate) fn flush_into_kvec(&mut self, flags: kernel::alloc::Flags) = -> Result> { - let mut buf =3D KVec::::new(); + pub(crate) fn read_to_vec(&mut self, flags: kernel::alloc::Flags) -> R= esult> { + let mut buf =3D KVVec::::new(); =20 if let Some(slice) =3D core::mem::take(&mut self.cur_slice) { buf.extend_from_slice(slice, flags)?; --=20 2.53.0 From nobody Fri Apr 3 01:23:06 2026 Received: from PH8PR06CU001.outbound.protection.outlook.com (mail-westus3azon11012022.outbound.protection.outlook.com [40.107.209.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 532713DD521; Wed, 25 Mar 2026 12:14:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.209.22 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440863; cv=fail; b=nNToROHG8LG3glfKzV3XiLtiFdRXaze6uFkG66rBnr9H9r25YQAG+BM9EA/4ZDhNBdwRMFWbrP/ZxPkwJoSYYbSOxg9qsbyTXsMf79IUPL2pcG71W1+zVniyZMsBoCsW3sEGrSQsh5v2ik11FWsxdN95AfmrOsbqWx4LwAqXhM0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440863; c=relaxed/simple; bh=cESLf1L26oNlbXO/IDirvPUFsNmgp8DyT/wSA9wOias=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=WQCImoJ4z+QnU1n599DupX0fvufkL2lUMAd6ZhUYGnawR4/d32Wv3CjvtgB/HSlo/3A1NAzLFtg0S3CEpl2eM6TfUbfgPFSdp2/dN4K2Ez67CnGSVFk0PGqV+614MmNS6+6eqncz5+YjGXbW+DyZb6KNECqbSwAQxZ2rHwmcYpU= 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=O2jVkO1q; arc=fail smtp.client-ip=40.107.209.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="O2jVkO1q" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hxJCIgFLDZV/PJUxEA6Y0DlECZOvPDHqOCtETlMaYWxxFCwjHz6XdgHPD+tpB91YZrdUogVo8baa196Nwae2rnYBpiA9efdl4P98mderUtzRmrJ9xDRQcf0UR2YLKJ2j2H1GILDMChlGVZHQj1FKqTfIWbLTUrGk9ngRn9ZmI3ihmneRya9gb1jzJM6+mbuw6kEoiscMsRQyVyWpxL5XwwGzyN/sKSN2MNY3SgfRuzF14jOUJWaD/tk+pP0rdLO7j3/EGVBq2hGcGqyC2XjZjtdQbM5YStNeDkW0u8kEc8oHfPALzmrn1ZIVhtCynA+KtkiWd9IWjyXJid68BqsgLQ== 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=U/YwBQW6s3m8KEiumrCLmkjTLi7JmCmxU1fk1GCwUhk=; b=THr9bU6Ht6gcDVunJzWyAeWVsbK+FYER9AreCs8zroe6m408nfjMASZKpuOz+H9qzIKKdFdm3VESXpViZuwD2synJ5xDMyl8cMIKoDvAOKnR1xniB7yuHsg7HDL/rKvgOWAp/5ncMnUBily8l5lYMudeouGssKiSJT6m/8jqv6ctwGR2KLPEPqab8CwwAGtPoeCtAwFB10S984VnwYZiTJtoldFTaGQIXuqkba+y7I4M2S9magmNfvlGPn8nB6MyS4THxxodl9P9IIbSMQytnT8zO46jt+4J6rDZ+qLbPaMJhf8lgKOAwvGO22NCpnqO1VonR165qObKhfxBo225QA== 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=U/YwBQW6s3m8KEiumrCLmkjTLi7JmCmxU1fk1GCwUhk=; b=O2jVkO1qehSOLhKLu5o98p+2YZf7XRm6H+zUSDaAK7DuUe5oGiC8omhcZPB5xut6cGoZR8S9SUP1/xm6e3MI/YoFJkwksZQgDdm9IMEMlNA/Ultma08T9VSSR3aKfqiOuh6UFkpncTMaIMeRc7RgAopJQfDor1PRn1SaeRNudGxO/4pi2nExEJIDODItqN3HFCBCknkPfhqMsZBq9NQsHKH8GyLqs0EDZFzGV8Ltn/sKhI2CzXkF+LFs2xYI8q1cEPRwoy2J4i6LlUsg3IBJgv7dIXUJ36x97RW5LM7Mut5eNVWqkgeUBjaeEbqBN0plO63CR16zy70hwScEcr+afA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from BL0PR12MB2353.namprd12.prod.outlook.com (2603:10b6:207:4c::31) by SJ1PR12MB6313.namprd12.prod.outlook.com (2603:10b6:a03:458::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.20; Wed, 25 Mar 2026 12:14:16 +0000 Received: from BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0]) by BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0%4]) with mapi id 15.20.9769.006; Wed, 25 Mar 2026 12:14:16 +0000 From: Eliot Courtney Date: Wed, 25 Mar 2026 21:13:45 +0900 Subject: [PATCH v3 7/9] gpu: nova-core: gsp: add RM control command infrastructure Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260325-rmcontrol-v3-7-f3101093484e@nvidia.com> References: <20260325-rmcontrol-v3-0-f3101093484e@nvidia.com> In-Reply-To: <20260325-rmcontrol-v3-0-f3101093484e@nvidia.com> To: Danilo Krummrich , Alice Ryhl , Alexandre Courbot , David Airlie , Simona Vetter Cc: John Hubbard , Alistair Popple , Joel Fernandes , Timur Tabi , rust-for-linux@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Eliot Courtney X-Mailer: b4 0.15.0 X-ClientProxiedBy: TYCP286CA0210.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:385::19) To BL0PR12MB2353.namprd12.prod.outlook.com (2603:10b6:207:4c::31) 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: BL0PR12MB2353:EE_|SJ1PR12MB6313:EE_ X-MS-Office365-Filtering-Correlation-Id: a9aa153b-d819-4ac5-076e-08de8a6808a4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|366016|376014|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: H6a8mUU70+dldWlGARy0HUBDPWEDYaUkNtKYwbEaBb4hWRwiFyB+Bhs5ueSXwMFqN9HZ3mI1Q/cAhgECpBpmeHRYOJN7B8IiS+n1y5qHe5TavfNL0jSdTs/HUm6qeglCKTNNhoYjt8FqM+6b1tsZrdpt58zX4ZapTU+d03DMBs4zaSDas7K0HLrdtFGQDCZD/ftk5GNBZ0bXRzUj8zpUUjK6UuGDEGJjcMuBVbf7sWvtVrMZfNgBA6iwpaMJEw2YukGVF2ay6bcIr67mTVMvv7isSpo/XC9in6SpvHq6pO1hxm8LkJrf+PlQjlYbkQSaKrmpHDXuJ8Jz497PmBzRvgAXbIk6kk3undMcivVqDMiUTKPq2x9PyTTc1qgTLw0jpitqLQ3sCw4dW3m8kIPw+YgxG4q5somgDCbfHnzzXbPlrjo7m4D0IcLqB42kVMGadqM18nnPnrweVeBjOMj66mSPCtLjGguAYcFfAbm9b+HO8lH4GfgU9A7FE8j84CjB8TDixCBY26Vj+exHiWCneUPI0lMvi1i16/eW1rrCuNcBk2aYhVl056msi6ghm2GFSuBIXalUKUAug6qeeIHrc46wJVfsbsmZ06r6kHejslq9yzfWBZvyTGrFfOZGMo3q7GaXBjaEutPzOdIOjWdKUUSVa3+zYj63csnVpIq2JgAuE7aGe8AgHYaYAhuKjxwo6/CZzbxwkolZxOB5VeLlMPL8psY/MI657ucK3YgqsMM= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR12MB2353.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(366016)(376014)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?T2ZEK3lKSEh4bWtVcWRwTjF5MXFXZ2FYK1BSdkhHRGRCUHdvcHFOUU9ieUY2?= =?utf-8?B?aElXYk80dzFLZWVWdTRnSEc4bVpkN2d3bEhDV3hMdEVWNUMzVlhjYTloT0k5?= =?utf-8?B?b213UlJGWG1FMFArdnVjQ2g4SHMrWnBQMnluYnhIRjNVMUhEZVY3bXZMenFF?= =?utf-8?B?YTBJb3dJUWk4ZmRocE1VeUxWL25VZEoxSVRkNVc3V2M1UVEvb2k0RytDUWVL?= =?utf-8?B?SzdNK1hXb1p1TnJEcDNiRUpOL2dySjN6ekpURFBkM004YjJJY08rSXp1ckNq?= =?utf-8?B?UHVYU0h4ODNRYWc5c1Bta0FrbXBCTGlyYm5iTmY2S0VhS2I1M3BtTE9PNmZ1?= =?utf-8?B?NHNFQ3ZTcVZ0VmwvRVplL3NLQUJ1VkM2MWhGWlhic3RqT05lMEU4N1pHb2hY?= =?utf-8?B?enB3NVpRenB1Y1ZrcFBKN2swMXdpU0E2anhZK2NHV1FpSVovQ3hZM3g0bzVv?= =?utf-8?B?eGhJRjlkSWRxUjJPUUFvVXhoVTlTem96MTdPQTJaUGZweFNiVFhXWHRNZGpD?= =?utf-8?B?NmhUTFM3ZDN1RE8yN1ZwelRuN3BEaWJVbWFEZ3g0MUswYXVQUXdRMXZRZjYy?= =?utf-8?B?bVpiWCt0c1RFVEFWSW9sUHUyV204cTlNdHc5WUhVYjV5TVRPZkxCTXV0aDZ2?= =?utf-8?B?T3lyVmlybXp2VGt3bWtwd2ZmT1JsL2hlN2V3MGFLZzg1SFdpUSt5VVEzYmV3?= =?utf-8?B?MTFibnpOMWZLMVdBdy9iS1UvNEVGVXFaUGc2MUtEd1VNeks0ay8vUWsxZEh1?= =?utf-8?B?MFpUeUtCU1l4SFlFRUhRUWYyclhCa3hjeHRPZFBPSy94MHFBZFVKaFhDc3FZ?= =?utf-8?B?U3FtaWhLR2MxZkVzQllFSVdoN3FvelFYV2JkVEt6QStzTFhTYVBMeFUwRjNG?= =?utf-8?B?WkdwVmhCUkUrYUpMSVc5Mk1BUWxiRkhTM01oK0hXYzNPUXcrd3E2Uk9JZEU4?= =?utf-8?B?dVJhUjdHR3paQTl6SGpaZ3NqeWRoM2xRVXc0SHNEWnBkYThjYjZTYlhobWdU?= =?utf-8?B?ZnMzSFV6QlBaRUs1MVR4MzBkR3J6Z0Z2Mm4yM1FvbTBMMWR0MTlydmM4Z1Nl?= =?utf-8?B?dkpvQ3NWREJUeldaR2RnNnFjOGZ6L25yN1k3cENtaGk0OEVoZ3lBc3pobkx2?= =?utf-8?B?R3ppU3VFbFNhMzFOdEdhbW1Ea0k1K3ZWWmZaKzZ2dTNEQjliL00wVGNDYnNo?= =?utf-8?B?NDZVOVVhZU1vWWE1aUZUa0ZVeVI0ekFFQld6QTRHWEhZVEZmU1hxUTl1a3JR?= =?utf-8?B?cjR3RkcyY3VDQ3o0VEpQaWlLZXRmeXkwWFJFT2MvTXVMU1d5bWRtcUYrMDZs?= =?utf-8?B?VFU0SHhFVUovZzgwZ1ZqR21kSzNrMXlvVm5aNU5SN1RHVjEvNXNXeS92Mk8z?= =?utf-8?B?YmcrRkRUQ3lyRHg3VW1oWEY3UnZWeEZsOWtKUEpCN0cxNEVtQTErY053d3dF?= =?utf-8?B?Z25PcUR2Y3lpOERNalVaQXFRM044WjdEd1VlZFlobjVlMGtCVk1XZHVPU2Ey?= =?utf-8?B?cjh5NnczVG9odzRxdlF5dmtGWjloN1RrVWNsMC9kVHAyZENsR043eTZsRzlw?= =?utf-8?B?Yis0K3NZWGMvU2Q4UGtSZ1RqK29xWmI4cFlmUEtVR0ZjbVZBdGhpc0lreSs5?= =?utf-8?B?ZWVMZ1pvazRZVVpWVWhMQmU1dHF6S1dmK0lZWitPY0ZrTjQrZkJlK3BURWRJ?= =?utf-8?B?TlQ2SFl0ZnkycjhzaUVvUy9tbmtOTWpkZXNtQlZWR0thQTJ1d00rWC9VdW1F?= =?utf-8?B?VU1URmwwSWJja2UvVm5pTGRyRnFYL3FLZHd6RUVSVFQ3bjFiOUFPZU5Sc0d6?= =?utf-8?B?VE5QU0lKcEY2cnhIVVhzL1YvU1NpVUFNdks2R1RiQnJIcEdzZkZVN1hhbVc2?= =?utf-8?B?b1htdktiSGROaVI2OFJmUGJOQWI1eCtlMXZDZ1lKSDZQdyt5djhYR2h5K2l2?= =?utf-8?B?eEU3c1lTR3ZoVUo3aGFLbzdLZStpclU2ODV4T1dkMFFvUmVSRkszRnYyb1Vn?= =?utf-8?B?NmlEOGZEdlhWdnNjcGphTEx5VkNRZ0ljNEFOa3RMMml1eklHbTVPam1ubkpP?= =?utf-8?B?M09WbDFyWktteDcvcUtyVzh0Z1pleGpqVnk2OWdCakkxSnFWY1ZsQnRoSUJj?= =?utf-8?B?QWNvb2xtdlVzVWFOZ2JxTjgvbXNJcUgydStBdVAxN1g1UVV1bjMrUDFBWS90?= =?utf-8?B?Tld2STBKTzdkR09teHVYbnI1SmRFeVlzOHNMbFVtblR3a2hVeVgrclRMeDFw?= =?utf-8?B?UmlLd2hET25rS0RMaTZ3MitzTTIxZ0FsS3Nic3FSNVhUelZ6SWFGUFlqUFAr?= =?utf-8?B?NENacGp4enZ3Qnl4cnpib3hlU1dzeFRxYUxSdVJaOW5JdE9nMkxXdk03d09P?= =?utf-8?Q?utiRvmCqd1sYlsS4Qf3D3BjDiupYqMtXVB/mzLIYTJP+0?= X-MS-Exchange-AntiSpam-MessageData-1: wb5VX42+gAJmbQ== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: a9aa153b-d819-4ac5-076e-08de8a6808a4 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2026 12:14:16.2277 (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: lSsdZPVn7QBd/BavApSliZbkQ+rcvW32jBl38d7Gf4JFNIpQS6cJhHyAb9FUrydm5ouLf1HysNHW3ZDEWtNU3w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1PR12MB6313 Add `RawRmControl` which implements CommandToGsp for sending RM control RPCs. Add `RmControlReply` which implements MessageFromGsp for getting the reply back. Add the `RmControlCommand` trait for defining an RM control message. Add `RmControl` which sends an RM control RPC via the command queue using the above structures. This gives a generic way to send each RM control RPC. Each new RM control RPC can be added by extending RmControlMsgFunction, adding its bindings wrappers and writing an implementation of `RmControlCommand` that can be sent using `RmControl`. Signed-off-by: Eliot Courtney --- drivers/gpu/nova-core/gsp.rs | 1 + drivers/gpu/nova-core/gsp/fw/rm.rs | 1 - drivers/gpu/nova-core/gsp/rm.rs | 3 + drivers/gpu/nova-core/gsp/rm/commands.rs | 141 +++++++++++++++++++++++++++= ++++ 4 files changed, 145 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/nova-core/gsp.rs b/drivers/gpu/nova-core/gsp.rs index 04e3976127cc..09d6e673aa65 100644 --- a/drivers/gpu/nova-core/gsp.rs +++ b/drivers/gpu/nova-core/gsp.rs @@ -21,6 +21,7 @@ pub(crate) mod cmdq; pub(crate) mod commands; mod fw; +pub(crate) mod rm; mod sequencer; =20 pub(crate) use fw::{ diff --git a/drivers/gpu/nova-core/gsp/fw/rm.rs b/drivers/gpu/nova-core/gsp= /fw/rm.rs index 4a4f97d88ecf..1c6e8b4c4865 100644 --- a/drivers/gpu/nova-core/gsp/fw/rm.rs +++ b/drivers/gpu/nova-core/gsp/fw/rm.rs @@ -53,7 +53,6 @@ pub(crate) struct GspRmControl { inner: bindings::rpc_gsp_rm_control_v03_00, } =20 -#[expect(dead_code)] impl GspRmControl { /// Creates a new RM control command. pub(crate) fn new( diff --git a/drivers/gpu/nova-core/gsp/rm.rs b/drivers/gpu/nova-core/gsp/rm= .rs new file mode 100644 index 000000000000..10e879a3e842 --- /dev/null +++ b/drivers/gpu/nova-core/gsp/rm.rs @@ -0,0 +1,3 @@ +// SPDX-License-Identifier: GPL-2.0 + +pub(crate) mod commands; diff --git a/drivers/gpu/nova-core/gsp/rm/commands.rs b/drivers/gpu/nova-co= re/gsp/rm/commands.rs new file mode 100644 index 000000000000..8845ca0a0225 --- /dev/null +++ b/drivers/gpu/nova-core/gsp/rm/commands.rs @@ -0,0 +1,141 @@ +// SPDX-License-Identifier: GPL-2.0 + +use core::array; + +use kernel::prelude::*; + +use crate::{ + driver::Bar0, + gsp::{ + cmdq::{ + Cmdq, + CommandToGsp, + MessageFromGsp, // + }, + commands::{ + Client, + Handle, // + }, + fw::{ + rm::*, + MsgFunction, + NvStatus, // + }, + }, + sbuffer::SBufferIter, // +}; + +/// Wraps a [`RmControl`] command to provide the infrastructure for sendin= g it on the command queue. +struct RawRmControl<'a, T>(&'a RmControl) +where + T: RmControlCommand; + +impl<'a, T: RmControlCommand> CommandToGsp for RawRmControl<'a, T> { + const FUNCTION: MsgFunction =3D MsgFunction::GspRmControl; + type Command =3D GspRmControl; + type Reply =3D RmControlReply; + type InitError =3D Error; + + fn init(&self) -> impl Init { + let params_size: u32 =3D T::LEN.try_into()?; + Ok(GspRmControl::new( + self.0.client, + self.0.object, + T::FUNCTION, + params_size, + )) + } + + fn variable_payload_len(&self) -> usize { + T::LEN + } + + fn init_variable_payload( + &self, + dst: &mut SBufferIter>, + ) -> Result { + self.0.cmd.write_payload(dst) + } +} + +/// Command for sending an RM control message to the GSP. +/// +/// RM control messages are used to query or control RM objects (see [`Han= dle`] for more info on RM +/// objects). It takes a client handle and an RM object handle identifying= the target of the +/// message, within the given client. +pub(crate) struct RmControl +where + T: RmControlCommand, +{ + /// The client handle under which `object` is allocated. + client: Handle, + /// The RM object handle to query or control. + object: Handle, + /// The specific RM control command to send. + cmd: T, +} + +#[expect(unused)] +impl RmControl { + /// Creates a new RM control command. + pub(crate) fn new(client: Handle, object: Handle, c= md: T) -> Self { + Self { + client, + object, + cmd, + } + } + + /// Sends an RM control command, checks the reply status, and returns = the reply. + pub(crate) fn send(self, cmdq: &Cmdq, bar: &Bar0) -> Result { + let reply =3D cmdq.send_command(bar, RawRmControl(&self))?; + + Result::from(reply.status)?; + + self.cmd.parse_reply(&reply.params) + } +} + +/// Response from an RM control message. +struct RmControlReply { + status: NvStatus, + params: KVVec, +} + +impl MessageFromGsp for RmControlReply { + const FUNCTION: MsgFunction =3D MsgFunction::GspRmControl; + type Message =3D GspRmControl; + type InitError =3D Error; + + fn read( + msg: &Self::Message, + sbuffer: &mut SBufferIter>, + ) -> Result { + Ok(RmControlReply { + status: msg.status(), + params: sbuffer.read_to_vec(GFP_KERNEL)?, + }) + } +} + +/// Trait for RM control commands that can be sent using [`RmControl`]. +pub(crate) trait RmControlCommand { + /// The specific RM control message kind to send. + const FUNCTION: RmControlMsgFunction; + + /// Length of the command-specific payload to send with the RM control= message. + const LEN: usize; + + /// The type of the reply after parsing the raw bytes from the RM cont= rol reply message. + type Reply; + + /// The type of the RM object that this command targets. + type Target; + + /// Writes the payload of the command into `dst`. + fn write_payload(&self, dst: &mut SBufferIter>) -> Result; + + /// Parses the reply bytes from an RM control reply message into the c= ommand-specific + /// reply type. + fn parse_reply(&self, params: &[u8]) -> Result; +} --=20 2.53.0 From nobody Fri Apr 3 01:23:06 2026 Received: from CO1PR03CU002.outbound.protection.outlook.com (mail-westus2azon11010039.outbound.protection.outlook.com [52.101.46.39]) (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 B88F03DDDA0; Wed, 25 Mar 2026 12:14:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.46.39 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440866; cv=fail; b=bOv4hVL9PmkWD/GMVjnxHpDcRgaXkC78+ojGmuqdCwnaInx2kHo+rcmI0zw/ro7qh1pcw0Ma85XeojJwTBZI5a+UFLP9XvnLxeuisiND7XjeGn3JfYhqJ/XdFR10bhnQ0xcHxstdcnFkNUEkBTvH2MFS/TgE9TqaVO2sm6d9YDA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440866; c=relaxed/simple; bh=CWfkg81TJenCaR1RoBBoBuuvwybD/WwAhIZPG9Z+vtM=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=ofMJgukVYDpG8MQr/mkAvt/Zl/OhHu0ZxB63Al22QrReLA82aXQqkFNBiz+G7Js45AYN+0ZaYECHhMIhlqufcHlMSPBqoxSLHffGkY0buFXG0diqxHFXLazATCv02+AKdZ7J4/3/sspsHgCUSFHvKVD0yGyN58wmBZVNo2eC9D4= 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=Y3Y/HjyM; arc=fail smtp.client-ip=52.101.46.39 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="Y3Y/HjyM" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ajsJFFfiqkU/DBlPV7slfBhz00G0CNHDJhEWnPDIP/g4Ol0Hjv8pfQ62uDbTCQun+FljFiKNlVxIx8GbNrpev6CcHjWhMIczaeI3R4pDaU+1qVkqb7Zu9ehcDo2NbZZM/IWMGJr//1lk9IXyxMB7C4w0gWr2v6smRUat5dnmjKVbKaoS77dUYwQrUfaVeq/dGAIgTcWmCUT4kVsDmOGoFySDR5zsWLNwsW4jq55eVUu76m7/jF7+es0qzDwJMrXzfYjQSn2Szz9+4AWWMxzfNWhOHvqyzIdj3+rO9Za29Oh/OnEOz0vHA1OBkwwsQf2jxoL5LGbvO0qaqr2FnmIKKQ== 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=aLAhdwywARLzTGBT7yOEB9jmb0feAo5V6YfEP3s0E3Q=; b=fPeXp1yljpo6yCP5xwXrqiGdYWCyW+Z1lxgDHCogGCeHwRgAyEpEqOarprgryW44LgbkkpnPdWycmjgNdYMehPFqSnSxDGefW2zOP+t5V820okeM183mpp0sm5Ktzjsyq7zUPSfdJbjdCq/6WzluB95y+K9kZ2xDgW+zOvUrleU098L1qlXvAMKKQFEpAQ9hiHyY+Tm2OQXuFdUqPWmfwCTUZ767ziDR2D7FVsN1BoOVDRHcf0Eo3lywKtAwqnZfkUBUQPu14wQwqSsE0pO644eap3LZFoWxbbQ2re5+Y3LuK1ghD5PGvEd5hBW9FASa+lGUGRv+5OlEznAI14PZpg== 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=aLAhdwywARLzTGBT7yOEB9jmb0feAo5V6YfEP3s0E3Q=; b=Y3Y/HjyM96unAnqtLVkFWyGp64rRoBkiSyMJj328y4ytPNFMrLv1pH8Gs53QwIrHYmU99TT/WzzDZJlLkpXJpT3XHZPczueW1TTNSCZh7ig7Rra9Am5Yk+yqY33ZLKeU9Ftc2aj19jnyJsUhK71+ES54atkzwzdf20Owb9fMzUPBqOtPhinHSqYDB4o1T8WXShvimwKRUpuqNiBJ7Odwbpg68OGubCvBnP9aEuLXOOWrm0enAS6N4W5d79rGvSiGguY6+zYnnNC0yrrFKxU6GCeo4m4vQeYXLSzV9eOM5iIhbIFSZlnHtgKWopwWwzNBLcfQN6eIlJzLFDy8WWHOsw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from BL0PR12MB2353.namprd12.prod.outlook.com (2603:10b6:207:4c::31) by SJ1PR12MB6313.namprd12.prod.outlook.com (2603:10b6:a03:458::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.20; Wed, 25 Mar 2026 12:14:21 +0000 Received: from BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0]) by BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0%4]) with mapi id 15.20.9769.006; Wed, 25 Mar 2026 12:14:21 +0000 From: Eliot Courtney Date: Wed, 25 Mar 2026 21:13:46 +0900 Subject: [PATCH v3 8/9] gpu: nova-core: gsp: add CE fault method buffer size bindings Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260325-rmcontrol-v3-8-f3101093484e@nvidia.com> References: <20260325-rmcontrol-v3-0-f3101093484e@nvidia.com> In-Reply-To: <20260325-rmcontrol-v3-0-f3101093484e@nvidia.com> To: Danilo Krummrich , Alice Ryhl , Alexandre Courbot , David Airlie , Simona Vetter Cc: John Hubbard , Alistair Popple , Joel Fernandes , Timur Tabi , rust-for-linux@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Eliot Courtney X-Mailer: b4 0.15.0 X-ClientProxiedBy: TYCP286CA0098.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2b4::19) To BL0PR12MB2353.namprd12.prod.outlook.com (2603:10b6:207:4c::31) 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: BL0PR12MB2353:EE_|SJ1PR12MB6313:EE_ X-MS-Office365-Filtering-Correlation-Id: fa01e1a6-ccc0-47a1-933e-08de8a680bf7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|366016|376014|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: ywM9Vw5PDn6KAd4zo5Xi+SoXz3KNmw7I9hlZ/yRcb7m/GTj67U+8V6jCd//5o06geBIGV0opO/uvRSXHX4l+IJiM6Xg1+shYLZmKykYXLYNf9p/683JfvwD/TYFl33HsVAHEgCPaAxz8SCTuWeLNtm6atnLbiDgmYBdtHOAJ2SzsyjMNunFL9cnFxKczo/LDmsVOcJNzrAFbZBpmtMGGAI/hvNqQdTwisOxl+qvrMM3PavpzrjmT7nXf6pAWWY54PUkPdnC2SWuzZlUng4yIjPVF5Buc8qX3FsKC91WHRzVPVQUIUNDY+r4bwRKOJvnIavQt6ytplnUuFOHu9YQScyR2C+hDvBdpK2oRX321oI2plOoarWZggSVxm5EFQeAjcwPjxqq8U6zFKEtMSzOVAZ4TlhJgUF60t712Hu5gqXQ9/FXctew+3R08j/DPLlAdvOu2gQ80Z7PAu+RQVsvn+XPA4pglwi6eHV8L7kQ8zP2wq4Lp1yRw0cCNvc3w2Cx5liB4PUsCSFtWoNLQmPDWBtNCfktM4GHaQkL/oyd4vVGMusSUGHrgxRHs87WI7N+xGa0WpxDZEvdU1AZY54JgiOJHILuMb6JMk3h03SduIfmmHLVblrFev0LgkjlRxWsny9t+G8XvhlA+0VQBY7f0Bf4V3xEzABlF2Ben2fQaZExIdYMIY56wGq5rgfxYNszsIaT39i9olJUS/1j5H55wcWHptcAcr/sSSy0qADvI8vw= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR12MB2353.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(366016)(376014)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aXpjbExOdU5vMlhGM05IS1R1NEFCdkw4MVAyRXE4YmlwYlU4MzBaWWVUSmEv?= =?utf-8?B?OTVmWVpCNHQ3bk5PdmloQ1BJVGVaL2JqT3ZVbEhTUk0vd1IxQ3ptQUMveVFi?= =?utf-8?B?bjg5c0Z0S1Z0VGhyRm5wMjVlZ0JYTTd1YjFLY2tUdzVwK1dkV0VGbDFmUG1S?= =?utf-8?B?S1BZYzAvVFh3Q3EwUDVHdXVCa05BbklHd3N1OHZQb1BDQThqQTJRcExiNG94?= =?utf-8?B?TjVWNlpXSHZrVGJtdlR2bFdHSVN5UkxqMVRMdkw1a1IzRkxrK1NMWjkvV2xZ?= =?utf-8?B?ZE1Kb3BKUnpNSjBBb0tUNW45bTdOK2VrOThhVmRSSDFGK2JrZVBvMzNyb055?= =?utf-8?B?c28rNXNpZ21HYWJ3blp0dzFwdFA5V2p3WTYvRkNSYjd2dzJEbnQrTENHcDRh?= =?utf-8?B?UnBBYklmb25MV3lZS1pjdVBpbGsyOFhDVWtIMCtjTmtwU2ZoR1FyV2E3K2lY?= =?utf-8?B?WjRxclhRSitLM2V1YW5yZTF3WkxQc00vbW5aQ1RzQ3pNMTlsQ3BGSVdGZ1hK?= =?utf-8?B?eS9Renc5Tm4yMlVQNTdSNGFsdGxNY1A4RlRsOXNCei9vRGl5bmQ4MWJyWFRs?= =?utf-8?B?ZXNCcUFEOE1OSzdpWFZWSHZjSk5HMHh6b3ZoKzVQRTV4Nk5oNEhTR1llS2Yy?= =?utf-8?B?Smw4ZG82M3NmdEV5bjJ3VGxjRHNBclUwaHBaK1NJWDM5OFhtYnppS1YxanhU?= =?utf-8?B?WkZwR3BHb2dQUThtalN1dkJBdHdzVk9UQ1Fjd0JnV1FUTUoxL3JKMmpHY1Nw?= =?utf-8?B?Y1BuSGlyTzhkbDNPV1YyMDNsMGhBREtzNUxFQnFqY0VXWS9LNXFzb0EydXE3?= =?utf-8?B?NXZUcW5KS0x1bTJIVFlqSERDSGxHUHVIQ0NWYlFlTHRacjN0WUpWSVhFREdB?= =?utf-8?B?bFFTY2Y3T3BudHdoeG5qTGR1TmUwTCtQR255aituTjRQdjJyYmhEMVRpWkR3?= =?utf-8?B?QkNtRlVMbHF6K21MeDVzWEc4Y1ZyV2NOL3NRQVBBWUdmbkUzN1FMVkF0VUtl?= =?utf-8?B?OG5KZnBGcW5zcEpiVzlvaGhUaGZaU2t5TUFnMFpFWFhiOWlBc2JWbElNNFkw?= =?utf-8?B?eWhyY0pBR3RUQncyWnZpaTlEOVpQKzlxbUMraEhjR0hlOWVRSFQxUCtGay9i?= =?utf-8?B?NXluWmZRakNrVjNLOGtOYzg0cnlaL0EwMWFPbGFTMlpHRmhzOEh2MEM2ZWR5?= =?utf-8?B?aS9nZ1M2Mk42NWY3dGlWWDJPUUNoRUdsQXQzZnVzejZqT1o4ZVlRRXhCOWVX?= =?utf-8?B?ajlTM0tUNklyK1gvNWh2cFlwNDE5TEZMNVQ2YVdjMU0weldCLy8vL2dsYVY0?= =?utf-8?B?Qk1JcUdiS1BxMHh1Q3ZHdzVCOUVaLzduWWx2M2E5c2E5b1R2MlorK1hqYklr?= =?utf-8?B?cldWVlJXb1RpUUUybmFPbmtEWHZxNXhuN0VhMGRIVFJqNjRXdmlZVnR0YXdC?= =?utf-8?B?OE4xOU04WUNGZG1qVk5Ga2MzMUk5WEpHMXcyQ1owVjlUUlpWZHRVcE4yb2Ru?= =?utf-8?B?OXVTZU1FRzAvUk9hbm4xcDRTZy85MEtBV1JGa083bVNRZ0pYaDViNlNvcEJJ?= =?utf-8?B?Q0xoSmxJOFF2SEYzTTJTa2NEaVdvRmtMU2NEWlEwOEY1WnJaaDFWTnhZUk9w?= =?utf-8?B?dk5idjM1bWUwWG5VdlMxdGFJcisyOVN2WTd5Q0lOK3c3WGVRRlBZbnZOQVRy?= =?utf-8?B?cHorK3VzWDdCbWdieXlKTUdTTSt5djRRczhrQ0V1a0FCRHB4TDhJRnVZQkE1?= =?utf-8?B?azBkRU5GU3UrQUR4ajFhS0VCbTg3dzVZbmxuT1drdzNkT21yTzZxV2U5Sklv?= =?utf-8?B?OXBVK2MrcC9OZkhEZXIrRzl0NEpmMkIwMDRXKzRMMEhJcm12a2dTOEFwUWt5?= =?utf-8?B?YXo5aWN4NXc3VXNtcnRRVzVQTEMrZjFuUVdUVk80a2lsdlQ4VkVwRytzak04?= =?utf-8?B?S0Y1MnJLYXprMnBKQXBRMFZ4YXBvYXI0YWRFM3d3aFV1NVh6T0M3TTA5TG54?= =?utf-8?B?UUl1elhkemxxSllteS9hbDFwWUxLTVgxUm9KaTRDQzlIK3JJL1JPZEJqcGFi?= =?utf-8?B?K1lZNzNCUVUxWU0xU3NTUk1ncVAzOFJIR3RqdEE5cnUxVVdka1VCS2NCSlZH?= =?utf-8?B?Y2I0MlovTTJMcjRWcVp4MG1ScnpVT2NjOXR1b1JCdzBCRjVhMUxXVEhsUG16?= =?utf-8?B?R1kxYk9kNnRTL216T2wvTVN5WFR1TVhKNmVQWXYxZGpNTFZWdldOdCtybFJj?= =?utf-8?B?ZlRYTVNKeFVLMUtOakZXeVFXUUpZU1p5d2J0cHd2RTNEWU9mN2xGMWZPeVdl?= =?utf-8?B?d3pGd2J3c1FaWExEUU1ZTkl3WlFVYUgxNHFvaklVUW5wcnZIb2NGajdwRzhB?= =?utf-8?Q?guGB5EU+lN4o5O6x1FblLxwoqcyEy3q4EgKb5kITW8Z7C?= X-MS-Exchange-AntiSpam-MessageData-1: Le6jKDNF9IdLwA== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: fa01e1a6-ccc0-47a1-933e-08de8a680bf7 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2026 12:14:21.7492 (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: L4uaFYNNVNw/pYHYgkipwqHnvakGR4jchQrC3l2PA+jfj4ygOQCu6XiPTh7JetknpqBRh7Gcwc2+/YvrlRrsTQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1PR12MB6313 Add the bindings for CE fault method buffer size RM control RPC. This will be needed for channel allocation and is also a simple way to demonstrate the usage of the RM control infrastructure for now. Reviewed-by: Joel Fernandes Signed-off-by: Eliot Courtney --- drivers/gpu/nova-core/gsp/fw/r570_144/bindings.rs | 5 +++++ 1 file changed, 5 insertions(+) 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 ece31cc32f5b..354ee2cfa295 100644 --- a/drivers/gpu/nova-core/gsp/fw/r570_144/bindings.rs +++ b/drivers/gpu/nova-core/gsp/fw/r570_144/bindings.rs @@ -1025,6 +1025,11 @@ fn default() -> Self { } } #[repr(C)] +#[derive(Debug, Default, Copy, Clone, MaybeZeroable)] +pub struct NV2080_CTRL_CE_GET_FAULT_METHOD_BUFFER_SIZE_PARAMS { + pub size: u32_, +} +#[repr(C)] #[derive(Debug, Default, MaybeZeroable)] pub struct rpc_gsp_rm_control_v03_00 { pub hClient: u32_, --=20 2.53.0 From nobody Fri Apr 3 01:23:06 2026 Received: from MW6PR02CU001.outbound.protection.outlook.com (mail-westus2azon11012070.outbound.protection.outlook.com [52.101.48.70]) (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 31F8A3DDDDA; Wed, 25 Mar 2026 12:14:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.48.70 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440871; cv=fail; b=QZg8N+aEbwUhe/gVnc1a+LKWk0V8hI8SSzEc7hx4CSEJIOZnsnq5PL/BmnD4oU3TfO/X+sQLVZ+RLOvXj9rUZ1ZJFyTFxhUt9Bvft78RFBzWVofF8QTJsoPqCg6zJkpcrfmZZ0PD/hZw/lwnIpd/GCR7vG/0I8pqo4WOfHS14U4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774440871; c=relaxed/simple; bh=ZHeod8LJdwHGiTTMQ1vXPEIl7CS6Pj+fYQz88IVHvsM=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=KnH7PPELpA5VouWP3voRxJz6+D0WSIvynE8GbdOjwAUZ6LIEMwm3NVo5VStsBn0K79CY5kv7qDOz2lubl2snwmdIIxqTF0F33APv1/WKSeuSbTLsi9YkCMTmhmTtMut+KnImxUXQl9HTYFadVc35Z4oOYXWSoJIEwaEHt4QcyP0= 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=oGV4oEdo; arc=fail smtp.client-ip=52.101.48.70 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="oGV4oEdo" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PYHl9/aAIpQoe+EqSPX04NM/HJKLnaZobRci8q5tNZyIkUyvw1KLiymlHjIjH23G1Z1ko8gudfM6eUJssPISJU3TT2ex4NQlBOhl9uXxvRBzsINvAzR1SxG4JOfTcHVaOFvzlgdpZlTG508vphvhhx2dHDEK2LYztL6cGJonNR87IANYl9nsCNq1+HsbrBZfM+JlhUQi47Hs0VDWTftIrToluftB54XWgrKHRyxHa/Zll27WNojrQKLvkAItLmuGXC6QxGAmGoAZ5XVH9BTsktIyh7EwaZPb0bmd1T1CZGh47moVWIqhA+6hY/b7hOl/THgKAjiCe22lraJZ86YP8g== 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=Bzk8l0wBEZlfkcUQp/6QC5TUxt2SlkMJY8QfrZKKHOg=; b=MQUC1XwXqbKn2qb6GBbfHt0YfuAroXs86m4IhYA9HxzgaEroIeHfF/RiJvOcBgOLVt6ImBV/ix/pzZRMFB38BI9QY7uJV3QueJif2hh26YasrCm2JuQmtSpKnyO1eVbgGIwTKJv4THPPuzxDvajg6o/y6KqNrAw9U1ONOs+A33z+t0Th6U9VX4whw9nsX2qIjSE8cGlHi+u+Y9v6mYsbrcvpF972aIcFv7E3/2Y/fXrmfoQnlhz7nIvOr4vX6e7Vv0Lkh3puFGc+Z279hkLlN0wP1iFs328YxjR0/F0jYtmDY/V/xVLpW2xsrUa290pZ2fVEv7YoR5RhgQ9iDnJHzQ== 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=Bzk8l0wBEZlfkcUQp/6QC5TUxt2SlkMJY8QfrZKKHOg=; b=oGV4oEdoXV7PmoqmMdioORBvxbx+78Ke/JrMuvQWjXeKegss88oAOCpHn4H2HsaLHj4dA/N/LYt2dKjW/yuYqHZBdIg4+udWBn/eCjw6ruSBKoa+e5PVIC/4Y9ZzitUo/5+2bQ5e4hl3eD0/3az+ptflznqTQhc/TQUd8w3Ko8CwovSFzy1qFSQOkrY+C905OlSsTEfo1+tTDn/4eepSkVbq+tp8blnvaQSZ9hys1sCqhka/JZv4N4C4V8N6sNSszpyIHRczctW4eibiTorz4LfGHoeYyf5YRe+aWajDNWPxO2vIjXSLw1TDP2JAu2+Bro4MZ2wrXqTqyvoyihN/BA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from BL0PR12MB2353.namprd12.prod.outlook.com (2603:10b6:207:4c::31) by SJ1PR12MB6313.namprd12.prod.outlook.com (2603:10b6:a03:458::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.20; Wed, 25 Mar 2026 12:14:26 +0000 Received: from BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0]) by BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0%4]) with mapi id 15.20.9769.006; Wed, 25 Mar 2026 12:14:26 +0000 From: Eliot Courtney Date: Wed, 25 Mar 2026 21:13:47 +0900 Subject: [PATCH v3 9/9] gpu: nova-core: gsp: add FaultMethodBufferSize RM control command Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260325-rmcontrol-v3-9-f3101093484e@nvidia.com> References: <20260325-rmcontrol-v3-0-f3101093484e@nvidia.com> In-Reply-To: <20260325-rmcontrol-v3-0-f3101093484e@nvidia.com> To: Danilo Krummrich , Alice Ryhl , Alexandre Courbot , David Airlie , Simona Vetter Cc: John Hubbard , Alistair Popple , Joel Fernandes , Timur Tabi , rust-for-linux@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Eliot Courtney X-Mailer: b4 0.15.0 X-ClientProxiedBy: TY4P286CA0077.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:36d::6) To BL0PR12MB2353.namprd12.prod.outlook.com (2603:10b6:207:4c::31) 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: BL0PR12MB2353:EE_|SJ1PR12MB6313:EE_ X-MS-Office365-Filtering-Correlation-Id: fe47d53e-1d1b-49da-6671-08de8a680e71 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|366016|376014|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: 2jTB9RDeTHTOXxgqI2cbc+UorweWFfC3SZwe+PpIiM7ORyZnlDoLa5NyQqsfpYYC9T066lvoFFpfErh3/+oQgLecToHM1wROP9LWjBZ0JvtRivMh1p8t4kv6o37I+VouxVVAvHf7hDSRBRMyWm5JGP6qhVlZWNc9EOI209OFS+c8rIN8lpwX3fQ4uM7MUovjLgGV2JVKOIDwQL06SjH5DRfJ/ifWXvGHxCptncpKR7GBXgPzi+2eDWfuKJepwpAZU0POnwiPdLM3x9tPGpmjjK+i+/aBZTkHUIqdigDSEz/DIG6kX8nMhPgWa1mQ1YvAGUmKNEzeFXp4XogS7ElfbP7vmgX/mRMIRo/iu9KxaoSsFyfkS/tVdJpMQN2OIatczhmcpHsAODI1l0JE4oBSOiEvUefRWVl2FRxDrEJTbHTwtukRxKr31lGgc9ZwzQco/HyMVivZokT/oHxj8RM9SjUn3VYOs50YTQsOEkAOGUXd4WKGt05Otq0jePanYmEyZSOcM1TCZQR4d51xR7QJdBL966qg7dUr3vjkohQmkzS9hcWmOCS1oHPdMbF4WLCMFiJwbqupuk1fzAn+0Z0O7zFfcFw1AFY1VVYB/u4xrIQwiEHiq3nnD3Vl6KMmPowGKcZNEgZ/RC+HdvlzIuBGTg5movN/TLiZ/3xLlK9gYxFooEzmeaAy8HV0rh+G5O2VIS7LmlQ0Pa2ajXXIqmLI/49jkibBCY2RpqsHptvqPvI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR12MB2353.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(366016)(376014)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RGl4VkgwalRlbCtpZFhqa0FlTjUxK0EwTFNJT1FxbG9tZ3luWUNnK0Ria0k4?= =?utf-8?B?QmpINW5lcnZ4TGxTN0h0SUQzaStmcXUyZTBqYm94ZFBDNFhCVkFKeWhGYmYv?= =?utf-8?B?bHFGWXovZFlQM25rOXFJaDh5UVl6T1hCU2kwdXZ4TGwvaDZhYmJ5QmJOQkVa?= =?utf-8?B?aGVOTGJVMEZzM3N4KzJtNWE2SW5Qb3lpajgyd3Y1NXh2SG4yZTQrZnoxNXBI?= =?utf-8?B?SlQvV2ZwOFJZS3J6MnFmTkVtNjlrY3V6WWVkUkF6NFdjVkRESXJ1MTJ0ckto?= =?utf-8?B?RnRScW9TL0dpdVJzMCtrVDdSZ1FBaVFmVExkU2NiMGJHM1RNQ0RuWUdSZXgv?= =?utf-8?B?NzZwcytCSlZqby9va2VhRmtWOURQWk51OUhxVmloY1RVRXlTLzF0aHFpUHM1?= =?utf-8?B?TGg1VkNKSHY1a2R1Vlc1UUFrZklGN2VQRGQ2N2VEd1NuaFNwTmgrQWQydktx?= =?utf-8?B?RytjNkFkc0FZRC9xVUhlWnNFTkhYWlByaXh3VGR3TjhEd25acEJzK2dYMklY?= =?utf-8?B?bUdvL3RyN3hxNmdGeEtPT2FYU1JIajlpeHJ2a3J4bnczYnVNSTJwMnlUQ2NQ?= =?utf-8?B?b3FreFkyakVRdmhYL0owVmVib2tYS1ZlYzVNWDhIaXMzSExIZmN5YXpxakpR?= =?utf-8?B?QUxjVS9WUTFKV3J0VE4zdm03ZGFjNFN2R2w1MnlpNDZ2eEorQ2RhRTZweHdT?= =?utf-8?B?SUlJMUpZcHlBVEY2U25UcHByUEhIL3R6eEwrNTM3MEVhV3lzRDdQWkpMVm5o?= =?utf-8?B?aklsQWl4aW5mYWJvRllmdWNSclAxT1BpNG16ZGY3V3BVc3V6Z1Y0d1FobUFh?= =?utf-8?B?eUcrWjJwbkdhNnhINzhCa3Z2c0ZwRG5uay9TREVWczdDd0VkWlZxL1drUG5Q?= =?utf-8?B?Zk9rcENaQm9ONWdXVHh4b3hoWVRTODJJNzZlL2FHcGRwbG8xN3B0TjZSVElI?= =?utf-8?B?eDc0dHNQQ1JJdmo4T3d5dnM3V3Vrb3UxOCszOEZUQ2w3ZUk3ZHdNd0tFV3lQ?= =?utf-8?B?Qk45dWlFck84WnFOR0J6MkwrSThVbG5oSGE2Mzl6cm1KNDYyZnppMGNNZlR6?= =?utf-8?B?TmNYQlU5TjJZdFJ3TG84S3ppQ0FhS1BxSjhVbTdDcWpJcEZnUWJveWZ5RVIx?= =?utf-8?B?bzVFb1R4eGVEcURLckVHWENsYmhkWHlUcXZJcGNpYXY5K05pMVFCajd0Y0g5?= =?utf-8?B?UlFMQ2tjTU4yM1UrTTJ5clpFVE9pakU1R0g1STR5NFRhY2s4dng0SnJpc0RL?= =?utf-8?B?UWw5T0FHYmR3OFZ3WkV6OUE3ckpXWVpCWFpidFpUSlFyTDR2VE1JU05OYWgy?= =?utf-8?B?MWxEZFIrT21KN1k5WW9rUk5BZVhQbHlNNiswYzFXYklMZWdra2lBeGZ2T09r?= =?utf-8?B?a1psc0dyenhyMkllWTRGeWlubk11RDVCWCs3bVFMTzZmQ0sybE5FYzBrTDcx?= =?utf-8?B?ZG9qVWFNTEhRb2J3K2piOGtLV3RYZDNZR1BvSVBySkZnbmhidVpHcE9URWVp?= =?utf-8?B?cDFBeGxzeDRGRzdOaW1kSlliZmQzR0w4UXZyOE1za0psMlNYTjliSi9mYXIz?= =?utf-8?B?MHhSUFdHbmZKR0N0NmQ4L21obm1Wb0lpaWVab01MRkQ2eXFpYVdEY3pTbUpN?= =?utf-8?B?TWc0YXIzRmpIaTF6bEJCME9aUmJiUVFVSUtobWh2WEhNTktZQW9QRWhvZnNZ?= =?utf-8?B?MnlOZEFlWW5nd2hpRFNqVmM2dlJQb1dwRDUxQVEzM2N0a1JMS3BEZFB5MW5P?= =?utf-8?B?aFpuZlc3Sk95MUdqSWJpNmVoZ2RtbjFROVJ0VUR0WmpQN2VZeVBOYzlqU1Vu?= =?utf-8?B?bzJaU0VreG5ja3Z0V0FtUEp2MlRhcGlSVUZZV2E1OHBWT2tLU0g5bUc5Q3Fr?= =?utf-8?B?bVVwbjVOSEdKTG9yMDNQc3VnekFLeHVCMXNyWUl0SENnbEh2a3pzcDh1dEtH?= =?utf-8?B?RFZSNXVtWVhQMzFxNExsODJQQmZESTF4Q2x6SE5OME1tcUZ5akI2SC9hbEdY?= =?utf-8?B?bHVYUk5BQVZBV1ZXMVZOc3FJS2Z5QXdMcFkvM2NjMml3bFhkUy9PTnNZbzdj?= =?utf-8?B?WlhTWU0yZWE3U3JicEx4NGwrY202TERGeEtuYzNwMmw1M0lzL1NYZ3NoSjZa?= =?utf-8?B?MnIwTG5CUk5KaGJQOHpPMXpaemdlVnRRT3QvajFRWWh2MEpXK3JEeWV0R1hJ?= =?utf-8?B?bHI1c3BXazladGIrNktMdFZ1aVloMFFTRGtEaU1wRDlYd2JLK01QRXA4S0Zk?= =?utf-8?B?YzhTRlFQY29WUHJpS0hPaXpLYTRNS3Y5N0phempFeGhaL2o0NjRoUVpHd05h?= =?utf-8?B?T2hlVjFhakVMMHB3L2g4Q3R2YXk5M3htNEk4WkpiVUhEN0xnNXZ2aW84SEVs?= =?utf-8?Q?++8d5/5STKF4HMlkze393E2ohb3mmUTIwZm03zQ9dAQlO?= X-MS-Exchange-AntiSpam-MessageData-1: a4ymx+uWaK693w== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: fe47d53e-1d1b-49da-6671-08de8a680e71 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2026 12:14:25.9819 (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: iPssakCdHJcAb533qM9exZrCJNiPlsTJTFpOHxh4ZZyM2YEu2pE4UP+vvmx/UDeLzXed+QNjnAHfBr684H+QWw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1PR12MB6313 Add `CeGetFaultMethodBufferSizeParams` which wraps the bindings. Add `FaultMethodBufferSize` RM control command which returns the fault method buffer size we should use. This is needed for channel allocation. Finally, print out the fault method buffer size on GSP boot. Signed-off-by: Eliot Courtney --- drivers/gpu/nova-core/gsp/boot.rs | 11 +++++++++++ drivers/gpu/nova-core/gsp/commands.rs | 2 -- drivers/gpu/nova-core/gsp/fw/rm.rs | 25 ++++++++++++++++++++--- drivers/gpu/nova-core/gsp/rm/commands.rs | 34 ++++++++++++++++++++++++++++= ---- 4 files changed, 63 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/nova-core/gsp/boot.rs b/drivers/gpu/nova-core/gsp/= boot.rs index e55210ebb6d1..8a4ad4c6ea98 100644 --- a/drivers/gpu/nova-core/gsp/boot.rs +++ b/drivers/gpu/nova-core/gsp/boot.rs @@ -33,6 +33,10 @@ gpu::Chipset, gsp::{ commands, + rm::commands::{ + FaultMethodBufferSize, + RmControl, // + }, sequencer::{ GspSequencer, GspSequencerParams, // @@ -232,6 +236,13 @@ pub(crate) fn boot( Err(e) =3D> dev_warn!(pdev, "GPU name unavailable: {:?}\n", e), } =20 + match RmControl::new(info.client(), info.subdevice(), FaultMethodB= ufferSize) + .send(&self.cmdq, bar) + { + Ok(size) =3D> dev_info!(pdev, "Fault method buffer size: {} by= tes\n", size), + Err(e) =3D> dev_warn!(pdev, "Failed to get fault method buffer= size: {:?}\n", e), + } + Ok(()) } } diff --git a/drivers/gpu/nova-core/gsp/commands.rs b/drivers/gpu/nova-core/= gsp/commands.rs index 8c9599aa227b..56655bade9ab 100644 --- a/drivers/gpu/nova-core/gsp/commands.rs +++ b/drivers/gpu/nova-core/gsp/commands.rs @@ -285,13 +285,11 @@ pub(crate) fn gpu_name(&self) -> core::result::Result= <&str, GpuNameError> { } =20 /// Returns the client handle allocated by GSP-RM. - #[expect(dead_code)] pub(crate) fn client(&self) -> Handle { self.client } =20 /// Returns the subdevice handle allocated by GSP-RM. - #[expect(dead_code)] pub(crate) fn subdevice(&self) -> Handle { self.subdevice } diff --git a/drivers/gpu/nova-core/gsp/fw/rm.rs b/drivers/gpu/nova-core/gsp= /fw/rm.rs index 1c6e8b4c4865..73913541d9d4 100644 --- a/drivers/gpu/nova-core/gsp/fw/rm.rs +++ b/drivers/gpu/nova-core/gsp/fw/rm.rs @@ -8,9 +8,12 @@ }, // }; =20 -use crate::gsp::commands::{ - Client, - Handle, // +use crate::{ + gsp::commands::{ + Client, + Handle, // + }, + num, // }; =20 use super::{ @@ -85,3 +88,19 @@ unsafe impl FromBytes for GspRmControl {} =20 // SAFETY: This struct contains no padding. unsafe impl AsBytes for GspRmControl {} + +/// Wrapper for [`bindings::NV2080_CTRL_CE_GET_FAULT_METHOD_BUFFER_SIZE_PA= RAMS`]. +#[repr(transparent)] +pub(crate) struct CeGetFaultMethodBufferSizeParams( + bindings::NV2080_CTRL_CE_GET_FAULT_METHOD_BUFFER_SIZE_PARAMS, +); + +impl CeGetFaultMethodBufferSizeParams { + /// Returns the CE fault method buffer size in bytes. + pub(crate) fn size(&self) -> usize { + num::u32_as_usize(self.0.size) + } +} + +// SAFETY: This struct only contains integer types for which all bit patte= rns are valid. +unsafe impl FromBytes for CeGetFaultMethodBufferSizeParams {} diff --git a/drivers/gpu/nova-core/gsp/rm/commands.rs b/drivers/gpu/nova-co= re/gsp/rm/commands.rs index 8845ca0a0225..de290f4845f4 100644 --- a/drivers/gpu/nova-core/gsp/rm/commands.rs +++ b/drivers/gpu/nova-core/gsp/rm/commands.rs @@ -1,8 +1,14 @@ // SPDX-License-Identifier: GPL-2.0 =20 -use core::array; +use core::{ + array, + mem::size_of, // +}; =20 -use kernel::prelude::*; +use kernel::{ + prelude::*, + transmute::FromBytes, // +}; =20 use crate::{ driver::Bar0, @@ -14,7 +20,8 @@ }, commands::{ Client, - Handle, // + Handle, + Subdevice, // }, fw::{ rm::*, @@ -75,7 +82,6 @@ pub(crate) struct RmControl cmd: T, } =20 -#[expect(unused)] impl RmControl { /// Creates a new RM control command. pub(crate) fn new(client: Handle, object: Handle, c= md: T) -> Self { @@ -139,3 +145,23 @@ pub(crate) trait RmControlCommand { /// reply type. fn parse_reply(&self, params: &[u8]) -> Result; } + +/// RM control command for querying the fault method buffer size. This is = required for setting up +/// channels. +pub(crate) struct FaultMethodBufferSize; + +impl RmControlCommand for FaultMethodBufferSize { + const FUNCTION: RmControlMsgFunction =3D RmControlMsgFunction::CeGetFa= ultMethodBufferSize; + const LEN: usize =3D size_of::(); + type Reply =3D usize; + type Target =3D Subdevice; + + fn write_payload(&self, dst: &mut SBufferIter>) -> Result { + dst.write_all(&[0u8; Self::LEN]) + } + + fn parse_reply(&self, params: &[u8]) -> Result { + let reply =3D CeGetFaultMethodBufferSizeParams::from_bytes(params)= .ok_or(EINVAL)?; + Ok(reply.size()) + } +} --=20 2.53.0