From nobody Mon Apr 6 19:37:48 2026 Received: from PH7PR06CU001.outbound.protection.outlook.com (mail-westus3azon11010005.outbound.protection.outlook.com [52.101.201.5]) (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 C391536923F; Wed, 18 Mar 2026 07:14:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.201.5 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773818088; cv=fail; b=P4PtgAMLaZ6YrHH21AHobfGzhosLxqGGU+yc0ymPBIQo6/Kvu3Sx0vjr26q/hUKXRJwxt0gVEaJe06IbrLtjw0sVPCgiqa/jrM9551ianu2dVkPmUrVoRavf3Hlh0OSkStiXlsW4qCFw0Rv0VOj09DdaJm6GZmH7tzHMcd2lJY8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773818088; c=relaxed/simple; bh=+ITEjcgCswnZyJ3gqQBwqikl7YnTpGMJlcV5Q2lyYes=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=QTsBR2bIGqG6SX/xvw66X4UlDOe0HChygDqjehYKjBU7SLszvbrH6ncZlSeuLfDCOdyTxBng34tP7CDTmMACXnEMxb1mQvckvHRBvFGVngg3U0N5b9ocWvgqOSKprG2T0kpOqfDfQL5H0r9wUMUwMY/Y+oB5pxRjBNsWLRKSdFE= 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=VkEO6qmk; arc=fail smtp.client-ip=52.101.201.5 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="VkEO6qmk" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NF5h+EAMYELHS3iLKcyYYup8KLeiTzxtnciaSIK6c4YqY/vxuBS/qoR8uxoDatOnq7PBLv5XUcIsLNd47V9PwbbOlD/S6LIE5d3wRlk7UrMVw57Too4odE6WKO7jRdWXmIr7lB6Omy/JMNCQe+t6SLy7nHqmMu+Wg4ptAtm0DC6Xmk3HWbUi693m84G9oZYcisods3hOYir5Zpx4DrYkaj0m2CJ9OQGYE7CHrUDYx6vKZ1jNABTGGHsozgqdmaZ65GBabHJG2mAVgAsCYV2XY7R+ygLMZKTRZL5FpAm0rfjOEPL0mDYAUg/uBV45x2dAwU5uNiTJ6oK/QftRVgNglw== 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=Rjae1K+J0ApbMejebFESH7fr/iKbrXH3c1aNapjNH33ZLOkVsycG1J9EvhagcUQViqmVIWwJhiiAm+QK9L+gBlFu4liC6eMA7LBPZbIzVtankd32OBZBVwkCs/g2Bs0s4/wwAXE7jdb+qnFPCriO3kZ2517jxpAfPKMapFqesipVUSsZqh4K4gAZbgEb3j0ghzzYBmRY3jHJ1IyC5COEK+R6ej41jJ5NF5tcvg+0pruXUH3RMVNAXiRXU8Fxr5aBw5ecSKm/rK4W5BIbtb66U3hQBDH/3l8vepVQnkkOSQ8fROosaBEZUYr0fYHcZ/T1SZiG41TC3yHYeUctFKNBLA== 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=VkEO6qmkxW0ZWSnE7ZyFMwKQDrzCixhyBzCABQ7ZsfOH21vcklFXpgHDpN27zGrLHdqZASi4+Ci9DYJ3Fzjc4a6/IzCQdmj6IssfmLKm1xEnvbyBnlQ29KaVEfrYh4fKaRyTO26xOti7kgQD833nqEBuRj3aL2U4txqrXhNzp9OhKHe1HKWDNEjy0sm3jFCNBiEOeaNm3vuLZHPYAORuMkoOQUDs6nTKdkPZSPQ9zBrTT6An63uv3ZKtmH3v/ExvZjmD7nZnC5Z9wbsM4imCI06d5jHOrPY7OT/K2QCfhg/A9FqBpU0iC9pTUH3OC1IVBEc3ICK17cz+4+6iscuemg== 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 MN0PR12MB5764.namprd12.prod.outlook.com (2603:10b6:208:377::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.16; Wed, 18 Mar 2026 07:14:40 +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.9723.016; Wed, 18 Mar 2026 07:14:40 +0000 From: Eliot Courtney Date: Wed, 18 Mar 2026 16:13:57 +0900 Subject: [PATCH v2 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: <20260318-rmcontrol-v2-1-9a9fa6f1c4c3@nvidia.com> References: <20260318-rmcontrol-v2-0-9a9fa6f1c4c3@nvidia.com> In-Reply-To: <20260318-rmcontrol-v2-0-9a9fa6f1c4c3@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.14.3 X-ClientProxiedBy: TY4P286CA0039.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:2b2::7) 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_|MN0PR12MB5764:EE_ X-MS-Office365-Filtering-Correlation-Id: 3919ef1b-e129-46c1-15a5-08de84be055c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|10070799003|366016|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: 2w5I5lVaTGKg3CLKDuHgX1mlMzkO6LgE7AfAXuaXh+ArNtwnTNKEyVV1oAchq3z+PqzPN35CNsZwwrSqv1C2utrfrVh7eonZ/r0HGPRxqdTNA0VJ2anVCKPk8G+DHq0r8fCAbLUoPGnBrBdyP3FGKGVvY/2+bCVni4vtFtloxS4eWo3zEwiRBvC9QoYBSB14WEEUkech+8fPudOrSmpmzEOV5WWPP0rnBSSn8vQB7nXHbzQD53QLkBm4FPxJcEAy+y4P39t1i2N75PswsUVO7zMffEJr9vyLAwlLldq+mpX+uIRlfaYGv2gDaGNAz+lhNNkq5IZ06gGE0tM8oydlEWUenZeR9x4FqfdOY+4uL9jqkWs3+xHLt3E8La5Gjfs52jiu20Ky+opG22mmB8/faCALyq3xO67c8WvGjCvRUzbFixiRRD/W/RyUjS3pJNep5lBej4TtgqpjO6YKZSRpBZcbVSo0KjUeWBPJU1MM5r5HE4dMfzGIAYHLL0x5LgqtQwfMIAebEmQWeO0DA6AeI+hdXsoErQeI9PE4JjpjO4qtI4EYR8fUimYlBjiukr41qFN7F/yv9uechEueQxOr+deY8ZzZGB4TDomo6ArBrOPRrSaVytK/lwS3QQCWuMdMs/8TP0oTuIrBlXSUmTjUZevinoWy9EZOymiccnu4BXhadFcCkvUNx7rrYw0F4DGA+Z7hTHQ21CcVwh84/NY68PQgbpt9kJgoFGJ1AmnIuqM= 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)(376014)(10070799003)(366016)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SHJXb3hsbFhMa1BpaXYvdS9JT2Q5ajNtZlBvSW44UW9YUmVsT0hFb3p6ditS?= =?utf-8?B?bUc3MlFyZ0lKNUUzenQ1T3ZoTUcwK2dOR00vNlZIbWthQUdla3h0WjUwbFhS?= =?utf-8?B?NlVIemJtaWh6YkV2L1lXUTJ1WVNrNGdJWXNUZUVoYXk1NjZzbU1GSGZENFBO?= =?utf-8?B?dG9GbVNRUGYzZU15UjFNbk5RNDlDampmeHlacWNjKytFTktDUG1na0NnNk9L?= =?utf-8?B?ZVEwSVB4Zm1vbkgvbFpONjFaN3c4RWtrSGd2bFp0OVBEdTlXWktNQXEzZWhZ?= =?utf-8?B?aUhVWm1kZExBT2pJOHBCdVErOXdWTWlRYWZON2hoM2tBWUlSTWdrdk51RnFE?= =?utf-8?B?SVEwNVVuNTlRaDlhN2t6WE5EamtuTlJTS1ZneFM2TytVY0V4ZXJ1RXhEM0Jq?= =?utf-8?B?b1dXdGgwUWdvenlZZ29nQW12cEpqbWYzd08vYzdrdDVZbVJ2RjMzRFJIUFUx?= =?utf-8?B?Q3FsRWUxS1FreklKb3ZKNnRGUTd4dDlrdUhRSm5CbUg3UVZzVHhUdUh0TXl4?= =?utf-8?B?eE0rVjJWMU5vaHdJdzFkV1VTWFJheW1wZnlMWVloRnR5by8wTm5CQ29hd28x?= =?utf-8?B?UjNGdTNrT2FJb0h5eW9Ka1ltUFl2WTBZYmpiUXZEMzlzRExiQy9EMnNRNFo3?= =?utf-8?B?TDlvSlJxSDhjZEJhazhhMk9sUFUyUWZxd2pXRnZnL05EdmcvcGFHOE1XL2Vy?= =?utf-8?B?a1Btams4VTNUbTU0OWtXSEc3R3paOW82dG1wZGkzUGFDemh1YllpMFo5VVdX?= =?utf-8?B?MjF0QWJSRDFNYkQ5ZmNOYVU2cHBrd0xHTm92TThNd01oOWovcDcwbkZyWmhx?= =?utf-8?B?WS9oOWlFU1FCbXFrUEx5YnVRZXlsYTdhclR4YVN3OTJxQUpSSXlxZ0tkS2FT?= =?utf-8?B?Q0o4blp3UWlVTElvL29jZFA3REtoczRaUTFUc2JyRGFjZ2lXVTR5S21Lc1Vx?= =?utf-8?B?ZnhLS0I2N1JYeElwajRWaDQ1WGhtRUVFMnVhR2RTazdIbTEvU3dDQk1nY2VE?= =?utf-8?B?RDZBSWduS2cxbHR4ZHZweXpmNy81Nno4aWNHakNUbE1yc3J4WE5BOFUrb2R4?= =?utf-8?B?eTFFOVhydGFIMUVHaFZiUHdBZ2hoRmtPQ3JlRTd0bndyTTNlZ3c2aklJNDNX?= =?utf-8?B?b0V2dW9uajRJdVVsQ01yUURxMWd4TzJyamxZQ2lzYzFidDdpRUdDTUVVZ241?= =?utf-8?B?UjRYNlNuZUhFVW5wSFlrYXhhTnl2N1k3MGtVSHJIRUJ0OWpiTzVOYkthNkFx?= =?utf-8?B?dlNwTG5RclQ1cXk4ZnhQb0VOQmQyUjd2T3h5TWlLRXgvdkV1Z2RFWm9mYW9R?= =?utf-8?B?VWI3YWNOQ01uTnV4N1BrcjhDTVRBNGxZWktNc1Y1ZkV6SzZqNXpwVmJPUEhm?= =?utf-8?B?aFpXUGpTS2hYd2MrQ1M1eVBmbElqYTNSM0dBQksvMlU1cEl1UVpNRktvTkg3?= =?utf-8?B?MmdjcG5PMlY2d2twSEZiMXpWY0RRSEppbG0raVAzY3JOdDFjZVdOZWYxN2pP?= =?utf-8?B?Z3VuN0Z5WnpBNVJHZDNwUWdZODJUL09RaTIweEd5SGthRFAzdjFCellSRnJD?= =?utf-8?B?WjJnK001eW10clBRa2lxaTdvclV4NHVRQXE1eUZjc3dTL0RlWVpEYTZZcmxZ?= =?utf-8?B?WCs2RGF1bEZVeTk0d2RBdDI5NytjRFFTOTJRQldzenJoQy9ueGN6YStzNGtx?= =?utf-8?B?Ulo2M0hteURlWjBnVzNYQmh2NDhUNk04ZjBOR0lsYk9zUEFsNTh2SlhtZ3ls?= =?utf-8?B?WGFVbzFBNzZReFphZmRDaE9wZXQxbmRwZmprdEppRXBkcDhWVFVHdy9VcDIy?= =?utf-8?B?WlFCOGtGTnRvNUZoZUJSWmNjZjJEUVNjVjIwUEVKbkp5cWdRNFhKVE01cFNG?= =?utf-8?B?WGRENXVlMjcvQjZpR1dVVzJvamgvWTNEWkIvRk5HdVUrTnVWZUpmT1k3RXNu?= =?utf-8?B?N3RpS24vM2dFRUhBV2liWmNDNmtzUGJqdkxWdENxTmZRdWUzNTUxMENzNnpy?= =?utf-8?B?YjZubVpTRUlUN2daU0V6bjhoTXhxTXg5VHlOMy8zRzkvL050WUZBaFVibnph?= =?utf-8?B?dlg0bXhEcUkxYThySlNPeDFzQlJ2SjV4M2hSYVV4YjQwMHdXaTJNVktPMDc4?= =?utf-8?B?QTdDR2l4WGVOa29tTHFobWtsUkFibXk2eHRuYWJ6ZWRhdUErMDFLMzJNZkF0?= =?utf-8?B?SkZicSthMFdqMkhnV2pXWlJYams0L3V4Y0t1R1ZKWFlPZnc0SW9hT0s3d05V?= =?utf-8?B?Rjc3VjR3TTgvYXAzWVpWaGhqOEdmN1N5L2V3cVFCcm9VOEpzQmRWZ2p4N1pZ?= =?utf-8?B?NzBGQW5HT0x6L0NKOUhxOHFGUXhscDdUdW44cUMwSlpCUkRKUUFIbjFhUEJ2?= =?utf-8?Q?gx1o5ZsUSFaKYnLxzNmaG/YeGIxftDuIdp3iurQkTpXy2?= X-MS-Exchange-AntiSpam-MessageData-1: IIssygaDmasU+g== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3919ef1b-e129-46c1-15a5-08de84be055c X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2026 07:14:40.3178 (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: 8uzDIy1AWnyXx/H3pohHBp5N31Im+OqScU7WlrogNIZgbWcp+MvlX6tbtni7RANjd8Fl9bFOSSMyEbvqJGY0ow== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB5764 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 Mon Apr 6 19:37:48 2026 Received: from PH7PR06CU001.outbound.protection.outlook.com (mail-westus3azon11010005.outbound.protection.outlook.com [52.101.201.5]) (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 09AD536997D; Wed, 18 Mar 2026 07:14:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.201.5 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773818092; cv=fail; b=tX0GhFbSzLEYj9SWZN9Spoo7/g9IrCZgKXxq8HHU+ZaKvS0svOeMP2lncYXosPPgozHfL7N9cVxElETboOcvwVtWrDOtXL+2ajw0m/czMCmyUJa268nq7Cab/vGlqF8n9hLe5MuLNQ0I1RnhxEII6dGl5EK8shYu3zbsNczxxdA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773818092; c=relaxed/simple; bh=rFp6uaf9zDvzFJeNv6qc955cw2cmnae78iV5G7RMdZY=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=nWX4eEZWt/5xXuXSKIJWYmDadrOIzqv/waWFd7jQUWtMqEtz3u/mobIVg/B6AVIg5xMt7pXKY2EmHl2v4lS94I1DAVe6bBBXJvEqRlbi1CSwHNLbyyzCZgBLq8I3zoGJx/jkrZbGiwaLzhCqftoUZvb2PIVBlkyEUvIq7Wv+QAA= 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=AKPwnoUf; arc=fail smtp.client-ip=52.101.201.5 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="AKPwnoUf" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VZwaxe37eZJzrem/xRHwVvruq9if46KgMbONy3QTQNnrX0wK0EXllJnZjWNw0PeEpjyudlKMdIFFJTxmKQZo6ss4/ThgvJum5LA6JcfcWP8R4cKYWb9Bn0zhswYuJdUXpjsHkMKxjX6xcpMsHrHXBZcZfirchmcBguLbV5S+gGHw2u8oW6V+MaQ4lTfauA2FFoAtRw2f7EZnEypoHgjDpSBGXijMM+YCkTAku71cvbN/p8hsInBwHVa7Fm90zvTdzmhzPN9sjztmcRO0yaRsBOGQ0XtgdDB4HbjGztfuVssdujB/uDCetIsLB1FTJ+h/fX45rt4uR1n7SB0rHBPyZA== 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=tClHci7fxYft/7PmokBkFk1eAC7nNgP4dW+aJP6036Q=; b=Ffd1yAUzn/1xVpm4LzzuIr/moKUkQqVnCWxDJScW+7TMBSgShqTpWKUplYsGIunMGuwF1P3Qvix5BOEuvexM5cQy40Wqq3or57jBk4sTpS2QHlXnlVCct4n83LLt0M8HFu5O45kw574hTt8TyDsO9HN9A2bbQbReZmL6vAp/7GTAL2dEZgcU7fF4amyhMk41NUUv0CTPyQlncFg8PbG2JSOaXwUWBWjoPBwnyE+L4poYa9T487m3zBktmk0uSIpkyAdYW6KI5VJ9o0VVsdvGnWckradchvtAPcY3zL2n1P1aHvfKJ+jaXBLxtv+zbbk2ytlAJADquObLUQwpLq6wDQ== 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=tClHci7fxYft/7PmokBkFk1eAC7nNgP4dW+aJP6036Q=; b=AKPwnoUfE8WJ3jf5D0UreOGd8SrhrohGCjwBshlmf/XlefRd4ujhrxZtIoLj0AcJ4TOhtMNlgq1MuuzEaS4S5gn9d34wDrWaLqj8j1i2aPoml1t3vwo+zbxqg9z/kpbTrRK+/MWc5eANmgRQbC4WS9SzoR63DthXwLavmRP27K3BG5qLbp1i3HmguQDa0W1R8d+XrQAuiGqvaonRYHvwrM2NV4/71v+Gm5/HiN9e5KvUUDKGDjhyJZXdXsf8IBRcFCNu3luZq9NVGmG7eFGiKZ9EroMRH7Z42u5S+Tw1IdIAnwfKmPTKzAllakoIeEIp4c2qHyDm9F0vt5AgBOG7kw== 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 MN0PR12MB5764.namprd12.prod.outlook.com (2603:10b6:208:377::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.16; Wed, 18 Mar 2026 07:14:43 +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.9723.016; Wed, 18 Mar 2026 07:14:43 +0000 From: Eliot Courtney Date: Wed, 18 Mar 2026 16:13:58 +0900 Subject: [PATCH v2 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: <20260318-rmcontrol-v2-2-9a9fa6f1c4c3@nvidia.com> References: <20260318-rmcontrol-v2-0-9a9fa6f1c4c3@nvidia.com> In-Reply-To: <20260318-rmcontrol-v2-0-9a9fa6f1c4c3@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.14.3 X-ClientProxiedBy: SJ0PR05CA0048.namprd05.prod.outlook.com (2603:10b6:a03:33f::23) 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_|MN0PR12MB5764:EE_ X-MS-Office365-Filtering-Correlation-Id: 822e6320-c914-470f-40f6-08de84be0740 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|10070799003|366016|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: nGJtPYYUOW4uz3DiAc3nt3kY/J+LRtuX9Wa+v/kuyc/b8TOkdyjmUJqc7N+MAPWmG5KXOgewUOlo63DRyGOyeiWXxOiREKVWlsLixNXtzF03gzSVatELS9H6M54DxLIMoEx98OE2cSjMb+zSwNhlc1Cn8nLvWRWYMhdnzTnQVrsC+GcSatDhryAjnLCaqyCJaoiEV+otmfVAHt1+9153nSr7QkeeszjBa8pj08kYtzBvJSjyECeUZM6a/4bubMeeAU/mWZGEH9ocPDybpW+JwXr1CqPN0iWDt1uWUQ3bta88vHaKVOTuXv+07B0PuI0pfJu8quADbLOaCPLCf0VnyakH7ow8qemuaSfgWpACXXLv8kdsOIj8RAnRovxpV6gL8e7nOkHJCGKJwqVjyEy/w2Sxze/bcaRmZimq1EsvOOX71AMgGosofscTJI2j2tAxFTwdey2nuu61CKt7AUZJUvGSGa69kpGOkImhJUyPndeyYksiuCb4BqT8dt9Mw16yleA4jPjUSs99ewd9Hl7Bp/DOUpfD7V3rwyZ3NQC8veEC/GOjcwbl/gNYzKwYRky92S8Bfnf7j3YjaOP7hWn8AVOHcoyCcJssDvCZy2i0IInwRVrZxHAPsUfdfv85rtSozqAL5pdeBcyL41mGiCOC0+1GPlXgxyXwkbISbMz7SUO5fqVzf1NNIH/e9D48mdO1gFzHg8sB0pX7RbD1vgtIGza/vOFbcVakMWtwGVGDlWo= 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)(376014)(10070799003)(366016)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VkszNlBwU1U1cnlYOW9xMGtzcHR6TTUwcmZJekFnSnFGYkJRQURrL2RxNGFv?= =?utf-8?B?eU1EZ1JLczRYVnpDNWZzbklHRWN0Y2JSZjBPcGNTdEM5ZlhCQ1FmQTFLZVVR?= =?utf-8?B?bjhuWjkyTDh5RFFabUZOaUxXWTB3b3NGTTU1bDhUOTcrQU5XY3dUazJqVUtx?= =?utf-8?B?RHU0NWNEeUt0dVFSb1UwSlN6NGljUjRSRDlnYUVETXNLanRoZXJZazNxWm1i?= =?utf-8?B?NFc5eXlUQXE4Tjl0RWtQK21UVzh0TUhlalRqUk1UbHhXMFR1UWVxUUpueit3?= =?utf-8?B?MXRPSmtLdGhHeE5Oc2lqcnd2a1BPZTZXclh0Z3cvNkpvMU5jUnZQem01bWxK?= =?utf-8?B?bnA3SHUzeXdNakdSWi9GOEhLUlBpTzJmMld1MXl0dEQ3c3NMVkhESjNnQ3FE?= =?utf-8?B?YXZDaFFodDdlUnNBZ1RKYkkzUVFBOElmS28zTktYM0dPMk56QUxVTzR3NTlz?= =?utf-8?B?MWFKQkJ4aHB5SG50Ull4S2JmNnhYbFE2ZURwS1QxdS9saWlWYURCdWVYMjFZ?= =?utf-8?B?eXJkMXdWWlVvVytsaUxCb1JnRFJEVEw3K3RGM25IKzBOeThyV3VWcTRCdUFh?= =?utf-8?B?aGhCcXZFQlBmVGVBd2Znd1JqYW5WQVZMR2tBUnV4amluMWxHUTlLWk81dFV2?= =?utf-8?B?b2xtK1Qwb1pIRUVFcEVnUWJ1bWMxYUw4Q1BtYitCUlFNaDBtbGRkTzNGR1Jr?= =?utf-8?B?OGlYdkRWcFZiT1I1bHRvMEQwdFhmNTVmUG94a3h0M011YUJLS1NoNzhNem54?= =?utf-8?B?NEhwUUhOZjIwTzgxWVBsNHJTN3ZQM1lLWUk3dlJuNmhXS3NXVVRHUURVMm1z?= =?utf-8?B?THNLUVBhd2NiVnZaRXFMektidGxzS1gwVEt5ZDN4eDhhc2Q2RjNycm1WdC84?= =?utf-8?B?T09QU3plbFVYbGZnYzhxakh1bndLNzRBY01tR3FYVS83K25NaEE5TjFOc25X?= =?utf-8?B?RW5qSDZyQnl3eFR1NkxlUGxoZlRoTzgxQWZYTGtPY3AwbUZpcHRWK2tCeVZ6?= =?utf-8?B?M09rVFM1M0ZUSUFETHgwcWlSS0ZlbEJ1c3QzYzllV25jQThQSVZoZkRyYTR6?= =?utf-8?B?ak14UDlORG0wOGl0UlBVc0xrZ1QwK3VQQjVLVDJvY1lja2hSZEExMWtNclZq?= =?utf-8?B?ejlWOWRYODc5MVFxNnBrVVJTT2NpSUR1RnQwZHJ5ME54cVQ5cGQweU1rbzlu?= =?utf-8?B?eE9hZ1FScHdVU3hvekxjQ0xsQzcxakdmb1Y3eExObVFaNktZbFc0YVJqd0Mw?= =?utf-8?B?Y1lwSFFnY3J4TzJhUlhwV01NMlZNcytKd1RQRVVwQ2xrRXZsQjQ5K2VVdzlN?= =?utf-8?B?cmdIMmt0RFBaZTdMZzZpZ0lUeVBFbTFGdTJLVWh2a1lkd3RDeTVQZGYwRFdP?= =?utf-8?B?RnJ2bnhkbTJXekRtYzFha1RzTXRoeS9NY04rOGdnaHUyU2luQUtQZk1VNlNs?= =?utf-8?B?NjNOWEhyN3FKSTVyZDRLVVJ4RHg0RG5vcTRmbThkTmtvSDh4THpoc0F1SnNL?= =?utf-8?B?dmJkSENOa1BscVhSTytuMWhEbHA5cmYyT05lWTBJV2c0Y2ZnRnE0U0JvWDFq?= =?utf-8?B?dmdEbmFTbFhTeXdKczVFcm82NFZWRVNTeFAyMHlmYjlmQnZCdWlGZTVsaDgr?= =?utf-8?B?Uk9ZZU4xQ2ZnK2pDajdUd2d1Q3JQa204cytXamJxMGRiZUxtdjdLYmZCUlhG?= =?utf-8?B?MjNjTWdVaEpjRlhLTU5nU1liZC8yUFcrUDJsOXNITkgxT2M1RkFOaUdaRFVa?= =?utf-8?B?TmZyVFc0QXA3MXMzYkMwZkhkeDBVQVlqTk1jK2s0dHZzZlhGaktTODhIZi9L?= =?utf-8?B?VUJwYUFlU2Q4YlBRenMzcFUrbDNTYko2anVvZ0VhQ1c2QUVMV1lobjQvaXF0?= =?utf-8?B?TE1hejFUcXRMMEoxZGE4alVYT3VYRzlETmZyYVNFTkJUdGIxdStxUkF4SElB?= =?utf-8?B?YVIrZFlla1M1U09YeERtVVRvMDB0ZU5Tcml4OEgzTHpkSVgwek0ycmc4cmdn?= =?utf-8?B?TFFqUkNudmZmTWxjMG9Ma0NRVUZzVzJJRXV5VUcrdE9OekZOUER0Z0IvS3ND?= =?utf-8?B?d3RybUtxSHkvelZzSDMwbjcwbjBYc1FHWWh4YiswWVlodzVrUmhlYUtHd0Fs?= =?utf-8?B?eHJVTkxwMDRBa21sZE5LN3VUNlpMY2cyR2RSKzdpdjY5bVA3dlA3UThtQk9C?= =?utf-8?B?ejc5a0dKMEdyS0JhQ2dXMmZTcjlQdXgzc1N0OWtRYjZCMXlEc3J2K0tjNlhF?= =?utf-8?B?dzBtd0wyNFNHVEFOblBSU2FwRDB1WXVZb3FaZFI1QzNsVEx3Y1VaWnZ0Z2k3?= =?utf-8?B?SlNyMXA2dEdEeUUyRi9vOXdKYVJEY3l5MjZvZllZWnlXZ05wMnpIelM3RVJL?= =?utf-8?Q?d0Cp9v7EsGMWGciJrBkxv53UwZQuhgNS5phtmmEKVDZ9G?= X-MS-Exchange-AntiSpam-MessageData-1: wp3g4ZknM4f5Lg== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 822e6320-c914-470f-40f6-08de84be0740 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2026 07:14:43.6020 (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: apoOCO8BFjINWVW0Q6b7p+8d0SJ68RRQBAWgHaSZsfDDnQOwnoTfFjuToCAFJ77a0CA7VHC2QZlQdmutF8xRCQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB5764 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 a061131b5412..37831034ec3e 100644 --- a/drivers/gpu/nova-core/gsp/fw.rs +++ b/drivers/gpu/nova-core/gsp/fw.rs @@ -112,6 +112,407 @@ pub(in crate::gsp) fn advance_cpu_write_ptr(qs: &Cohe= rentAllocation, cou 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 Mon Apr 6 19:37:48 2026 Received: from PH7PR06CU001.outbound.protection.outlook.com (mail-westus3azon11010005.outbound.protection.outlook.com [52.101.201.5]) (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 2891936A007; Wed, 18 Mar 2026 07:14:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.201.5 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773818095; cv=fail; b=gtA4l+k5gMo2x13l6xjAyTbn4NlxUPw7cj9aHGYQuM4uQK5oCKj1WnElvPGtmftqEiPK2/3Ttn+oY8LiGgYnuEw3xJJlcNP/62CVI6UGMGvC0K0y49ELvOpVSYAOWvBxlp8dzCGUaD0NK+/LNQXegD/fsTdbujx1IMyIWO0AMdI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773818095; c=relaxed/simple; bh=/YdntiJ3eOoDzXrfRjCrVzpokW/b4Ga5bLmlqV7CSjM=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Hvp/oqukuONbmpHGr5h4aSPu7PEgbwdAR4SNu8Grf5S2lSukBJYevKjT/aZB+ZnJDBaEGbNGWBBXxI+gChY1Pm3bODB4qsCiCLB6XdszIZVin3zeeSO8OX8nIbj9MiPE8e8Ox7pJPO0c0VwsufUKz8Z/lzfqa3UI8WEF7LZeit0= 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=hd9GMB7e; arc=fail smtp.client-ip=52.101.201.5 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="hd9GMB7e" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jTsbPOjHMiqBOoMyhp3J/bVuN1gpU+qzxkX18e7U544ZLPwojjmTN3yjG5HH1joBX0U+SLbnUJHMLwnSQ0rKJcC1T8dguKBFxLRp7MNXjcLJ7MSNRgdQWlv3l/uQo7xaWzcEe1nlnT2/3BXv3Nb0yPdgyAzZt+/HBGM0YdwhoK465sLpvvVeqO9FSXsgnka/s+gvOZU8WCSp5RffELyKUwcCzM4dCGVO4h3r0k7d7qjyvDSBqWzkj/OL9KnjX1GwL/furWOVlpi0xPbzfmyOBeyTSuxAI5wtVZc/KqX1M8zEbJPUXR90hlDij2yvI9poemIzeii4XjKqulufbZrqXA== 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=okWm1YGziNonOox9V5fe8MFhjVwG20d2kpfx9c74SJYrq8oUt0woUQy3KofTqMEyk4X67Xv6skqV0Osf5pCrNqx9MaXv8cMjKq7ZAM2ITphANubhmjILnWxoP9EgS4GfBATp4O6xu1dUU5wD3SNk353OSN5vaO8SF3+YWpBldO0pxvPAZZdzE8w6M2SXYDRCIUFQlPK0UaRfQESTUDYTlFogG1V+iwYlrIBxOfW+PV/xg6ZMN99vaHTL5Znh46lNfdAvxfcF2yMAt4ZEgxrmr1UzY7dIpxHo23/vYFLBAKD1B9+P39aSrkKKQeKN6MYJweZqfgoPrVTwxHl+xKnfSw== 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=hd9GMB7eyjli6QNQuMU1f5hoFL1DGtuQHmtuYwnTfb0AcQ91a1h/dUz90wyMyrCxMg42Qw8hiMCIjcelZqXYObapDWDGzkYFtPDTPWMssWX3D4GQAa7WEK9TnWimgxqyEEbT1+T43XTVlkzUcBcZMoBv3SVGAfBCPLgshFEvpEgpQs/6GW/5OufUmBq1qcRtPatD5ObPf05rhuwhNiWdKkrpGzS+Q9bm/qgtr58h/S/PiWg3W+LS9EnbBJXrhvWzhmyQBjBuOCyvktWtq0euGdQ16gwsvIuOMrN91FO4lxnYZ8QpchjC3NJGemIDYYIVdFm7QMCXPxuwoyPdTAkgZw== 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 MN0PR12MB5764.namprd12.prod.outlook.com (2603:10b6:208:377::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.16; Wed, 18 Mar 2026 07:14:47 +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.9723.016; Wed, 18 Mar 2026 07:14:46 +0000 From: Eliot Courtney Date: Wed, 18 Mar 2026 16:13:59 +0900 Subject: [PATCH v2 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: <20260318-rmcontrol-v2-3-9a9fa6f1c4c3@nvidia.com> References: <20260318-rmcontrol-v2-0-9a9fa6f1c4c3@nvidia.com> In-Reply-To: <20260318-rmcontrol-v2-0-9a9fa6f1c4c3@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.14.3 X-ClientProxiedBy: BY3PR10CA0001.namprd10.prod.outlook.com (2603:10b6:a03:255::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_|MN0PR12MB5764:EE_ X-MS-Office365-Filtering-Correlation-Id: cea5e769-a7d5-4cda-3ddf-08de84be094f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|10070799003|366016|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: qVStIU6tav7PmdOydTGs19l7FPfns+kzGVEosSXLN9LKRG8S2LqjIkJvYaDM9c1VYBhiWPC/pVZ6u09at59q9Zo8JERsbFPEUOLvSOtFUyckoJmg6rLFlGxT6lkks9yHsBwq0u/CibWycZLt2r5wXC9Ghm6PPnyjuDz6U74pdbCsm6bmEdngxPn1Oa52pebXfL5Vt7WQ0ZjrRMIYrKJ+KKYC1CLCfTAIS36/NOwpIJTynEIszr6LH0/dzOPoxA7dZPSMr+EVEpn3dMDgj3jFKIkGCn5TAO9wfpxHy2rZsO54dD01Z6SHQji1xbmHOqEFQxhUXmF9B/JOuG5JIgpq9/ycARSTLHOT5vzrL9baOO+fRBgEz73MXp+YTOuKbB/oi0+mvWO3dNcMl7AefESFYE/MA/xEHMseJSMQwGZrlzA8Z13LDYAZkvAmZQrkwOnuEWW0FPaFkVJVqcQZJz5zGXFdEfWpujDe+WIaBQU7JDOh7OxLUgvB7nMtvkHFzC04kZBhUd2T4WJDlP/Df/58GIa7jI4hw9bloXTJdtZZhmArSn89tzzEHKdoMn0u1cSfRl2iTPYya1cc1LRxZg2YQNNAbcON2dXxuvXTdCiRbwVolOxEWslE7gYuXmqnaVNjMfAv9CZTShwAtAnqd9IlG+62R/yCmV14LA+GIR7Zs0j88m4jJMEAzx4T0fov18CSxPZV4x6MWCP5TI2FZFNP4NbH++g344wEe4Y4K9kFDF0= 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)(376014)(10070799003)(366016)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cEE1MlhKK2VOZlFTcE82Y05FdGYvU2d5Vmk1NytMMExKdjA3alpHckdjd1VS?= =?utf-8?B?TlNQREUrUDZVWVA4UGphUVEyYUpud0hNbXpqTzJlUGNmQjlYa0RnMVNoOUFU?= =?utf-8?B?VzhUUlBEcGFDZVBlbHBjd2grbVVTN2ZHQjBVUHB2VE5TTjVkbjF4TmJJZDN5?= =?utf-8?B?eTBmd2pBekFxdjlJKzFYWUF6NE1KcVdqeVJPclVpdEtHbE54WUNuUTVHNmhE?= =?utf-8?B?QlN4VjRkY0ZvQjFJdmlXQXlpM20rNlNIN3BZa3k2bmR4ajBiaDR6d3ZRMkVV?= =?utf-8?B?eHAxYTBJT3JSZ084UUx0dlFjbzNPL3JESHJSRmc5U1M0N1ROck10Q3pXZGlz?= =?utf-8?B?b0ZudEJPWEhBcnFvVWw0dmpHRi9jdDJVTy8wVFIyaTNNdHF3SVpBelBTa043?= =?utf-8?B?eXNaMU9qVDhJWDVaR3JDT3BrMzFFU0tmZUZhWStQR0FUcCtzNjc1cG1lVVVD?= =?utf-8?B?c3ZUV2UrQVkvMVRoYmdWQkpjNWd4NWdHa3ZBWmpjakVRM2ZzUjYxbDZpSHNX?= =?utf-8?B?Mk0yRnlKYjhldHk3ckt2VjlCdWd2NlhDRDdkVVl6dmU4OXZxTmlCM0JKNnlL?= =?utf-8?B?TTd0WGFQSy9ubFVqZWhrMHFHd3B0VE1nVHRQWEtHZ3R4b0ljUWdkcUtOSktO?= =?utf-8?B?eUdiZVYxSjRIZVQ5YVF1UkxacUhVRHE0TWRNTENQVHVkVXp4R0FQdGNNMDU5?= =?utf-8?B?UkErRzNKQUpRYjh3Y0JYaEdTcmM5TXRPb1N2K1RJWnZJWEhwcUZ4b21ReWIy?= =?utf-8?B?RHBpY21HQi9DOUFMY3kvNFI5OExEWDEyN1Q2OFNPQXlKRmt2ZmlhZGZiTmph?= =?utf-8?B?b3BLVnoxSktjWGtZUUtzRjc2NnhSSGtvMTVuTjVTZ2NCTFVMS29IVlJULy94?= =?utf-8?B?RmRmeXhYbkVDcG55UGtSM3hkRExMYk1PWkh5ZTBuYUNvejlWTTIwTTRJNXNH?= =?utf-8?B?RzhFRmVFQUwvR21QT3NETFdGVEEzRGl3dzR3Smt3RFFtSVIxN0ZSQ2pFR0wx?= =?utf-8?B?aXFOZUZOc3h6YWhNR1dSRk9aUFhBKzh4QmJQK3BScC9mUVRyMXM1NlZDbWNk?= =?utf-8?B?dGYyV0FudGMvODZ4em8rS0lrOHJBNEE0Umk0K01FcHlGUWxDcDRqUWhSdTV4?= =?utf-8?B?MklqKzNDTmZrUHNQSzlDN3Q4bVRJcGlHV3p4cmdodTN3MklibmVKQTBNRWFq?= =?utf-8?B?QVZXWWFjRmNNbm1lUExUWElISkJqaW50ekVQOXZNUEJkNkhhaENmcGhMOExm?= =?utf-8?B?TmQxSmZvaE1vdU1Cc0pEemJFZnlGbTBQUXV0OFBhb1RlVGdQYXB2dk1EVWVo?= =?utf-8?B?dDFaTGthZmpGbXNLUThVN1I1bXRZd0V6T0JoL1orTHpjbFFoT3RsZU9BY1Zw?= =?utf-8?B?TGMyNkJlcTlrS1pEazYyUFpKN0N6RjlIcjFVbWVzUlNaMmQ4bi9zbHNhYlZv?= =?utf-8?B?SkZTOCtOa2FucDFJWVFvUVBUYmlnVkwwbU5HYksySGg5ZVExU2RPNGk3YUdP?= =?utf-8?B?Y05rblM0WUgxQ2NjUnQ3dElMR0txdTZtbEN3WGhjQklKQ1VJT1FWdVh2dERl?= =?utf-8?B?ZXFSeGtCRFRMc3F2TURLL1NvdVdJZTBoVFJsWkExSVc2ZVBrcXVmZzRlRHpp?= =?utf-8?B?WnlFV05JZENuNjlQQVB1blZQS2RFdGZCUWlQczFkN29idUU0a1VOV01GQ0RO?= =?utf-8?B?cnhjbXA2WDIzVkMwdnl3OFN6bExKNkg3bEg0dTBvZnRtUmIrQ3FvWmxsZE8z?= =?utf-8?B?V3VhT09QdU9DclRJeGFEQU5OMzhsQ0dMdklETHNUbUFsZmR3Smw3UWJ5ajNk?= =?utf-8?B?MEJNWHFvVFdTSHdXL24zZXRXTDZjN0hHNjJpbTFBYWRrNWdkUnNUYXhxL3VJ?= =?utf-8?B?OVZSNTZFaVVJMVczcytVcGhtTDRwejBVS0k3Y3NKZnJPYlpLMk9idzBPZmsw?= =?utf-8?B?WWxlNmpyUnFhbHJaUy9WbkJDR1dVMlRHUnNxWGNBc0NlTWxkby9WcWtmRFA5?= =?utf-8?B?QVpnemR4VWlUNnlDV01NYXEvOThGMWlTOWJKUVhpaFdTSXNyREJuank3SExo?= =?utf-8?B?Tko1SnFvOXZnT2x2YWdMZlpGaEdIaVhzLzRuN3hnTCswS1B6ckhtZ3lFQ050?= =?utf-8?B?OWdKWlZIN0l3NmZ2eGh3WG5aSVpuell5NDVjWjJjbmQzaVhJVnR4S2gvL0R2?= =?utf-8?B?Mk5BdmFOdWZtbHpubWFxcnJqbmt3VXladTFhSWIyT0pGMTZ0Wmo2MTlUbngv?= =?utf-8?B?MUtrY2FYQjFrQ2RsSVdTTk5IUndjM3BYRkF6ZHgxZzhLNFB3NmJvNlBhNjZD?= =?utf-8?B?M3kwcmJuelFyY3dtamcwQzYzZnJXNEVhRFMzV2FLTlREa3IwN0QySFRnZFJX?= =?utf-8?Q?g9896Sy8YwTs2NZjJiRQ79pOgqKmdfNR8MY7040lFqU0U?= X-MS-Exchange-AntiSpam-MessageData-1: jm1wQVXTAgVing== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: cea5e769-a7d5-4cda-3ddf-08de84be094f X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2026 07:14:46.9030 (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: x9E8j79rA39NOoMzJYgIfvr0JtSCUtl1SwCI4L7MyQcHkDmWUTAVhNswiGXx9tsWiD6Ha55j7p3yu9yXR/cI3Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB5764 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 Mon Apr 6 19:37:48 2026 Received: from PH7PR06CU001.outbound.protection.outlook.com (mail-westus3azon11010005.outbound.protection.outlook.com [52.101.201.5]) (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 190E436A03A; Wed, 18 Mar 2026 07:14:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.201.5 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773818111; cv=fail; b=L5W4aZTny2eIf80bdj1bBBzljspxKc+28LMzipPz3pgoeVySiy8m9Ch3X4eLee7D0ALG8ocI3DEn3xH7sggA5+JdWGdP8o9Be1r52C5v90EOuJva6eu/bY128tm3sajlhsEF1vKVc9ZqLBEJAAU+8tVHw+8ZOssqs9gf15sXXO8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773818111; c=relaxed/simple; bh=YlbwiKSqqT4a23Icq34LfUsvVwwtSB4/6eHWf7ZtjwY=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=R2SadcFKvYVQlD6TkNU6nEWQd7D+jsdEFJlg8CUR7sxCmcWSrkqV1HhSxY66AqWEUu4ufThlcPakQoBw8/QW5usruc8aLL7GDkXkH+nDyphQXHO0MmmRu8QjpGwZljHNbeOiBTOSxoJSQ6wtpi1aFxRP19J6ZWyLNcsgQAEenUM= 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=uT1PeN0u; arc=fail smtp.client-ip=52.101.201.5 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="uT1PeN0u" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=sTHuZ8xCRYzpiIBwW0QJYjet5ZHBk0hp8RE2FiJK3mdFDdMQuztprYLRnYiVj2Urbxted7E/t4UKjnwyj/i9SS1eoBMO8FUr/1Vr9A4UkpiLNQx/GZU/UNyZZvK7FGmr9UUB/RuuKWV6NrM2vFjXMHRyfylkx7u1npxo7wRlmh/y4CnXvKH3K2U3jPD2hC6YJz1ivn4/sjaZ/9GKdh1IZbjsDQN66TG7jVC/OV7vRTFUtLVfsKOE7BbhViffyQklgaMuNNI3AL3Z6XbEMs05NdJ325gupsoHOnhXedP0uX06hHEQxgGiodcGq9XV1c7toIj+7FoTPwShGZE5vc2zbg== 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=iV5Hew5cHjIFaZ8piY3sjbfAThSlWcOecnqwqJe0FDNSdkxDt+/unXJJkU+XhfBgCRf7W1EAv89tbdDTU+PEvhMVaZrbq54M19tGuP7ba6pzJP7GZ9fAGBn2/98kBRQeCu307RBlym0FccMfVX/sfsJOLqIDLTMOWraNn/kZLiCP/ouuYQaAmwTnSoCAafn3Gy1xzKi/gbE5rojxnVOeuHvRCcbAf3Qo5f2YZaVqPMJ/g96JXxtgQlTYSXa7PdMq6wwR3C7/kgZ7XlJxwL5rccUX/hbmQHBMBVGYQGaPjIIVo8o1p7n4/1l2JFZGAI76TSnJyo93u6DEWyJByhXApw== 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=uT1PeN0uSUIXoXwR4bBY40OaxaXzS9zDF7ySTrAo/WNeHLcHBE7E97pGe97rA4ZBkVQxk2NmvIlXiMRcJmCUtT/fkRtrH/wVP17u6FeWsXA4jhnbeDGg2jOsWYJiwnGRPwT0tB8i5FEsnpEnV5IzgKF8pe0d90mbRDLkwWk2xJ3PzvPHaiOxjgWKHpLO2UDuAES7tdSfVhPfj5JlPFPin7HMqqoksANrN11X6ikEigcH/iweo+n6TsBAyu9sQeNFCFcZt4OEz22lEK+0p9KeK3j/UUXBAy3gYY3HpvfeeP2ALeS2pcCNlQhsloSWvwCxD5iugJBrAcTDjXZjxh4uDg== 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 MN0PR12MB5764.namprd12.prod.outlook.com (2603:10b6:208:377::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.16; Wed, 18 Mar 2026 07:14:50 +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.9723.016; Wed, 18 Mar 2026 07:14:50 +0000 From: Eliot Courtney Date: Wed, 18 Mar 2026 16:14:00 +0900 Subject: [PATCH v2 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: <20260318-rmcontrol-v2-4-9a9fa6f1c4c3@nvidia.com> References: <20260318-rmcontrol-v2-0-9a9fa6f1c4c3@nvidia.com> In-Reply-To: <20260318-rmcontrol-v2-0-9a9fa6f1c4c3@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.14.3 X-ClientProxiedBy: SJ0PR05CA0046.namprd05.prod.outlook.com (2603:10b6:a03:33f::21) 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_|MN0PR12MB5764:EE_ X-MS-Office365-Filtering-Correlation-Id: 11d43334-20e8-40d7-e4d2-08de84be0b76 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|10070799003|366016|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: 2ViGI9yOl299hI/7fUXF0kwFPqJQDLMofTHC2t8V9yJO//uYWCQLi0HKTjWYr3gWWo890A+t+ZRHvPVjtTInoMBozKVu8Zs+rBsaQ/oHVJz/4m0nNhANaBsPmyJDTeuQR8qbi63CBMn2HmNp/OknWbxwqU/YOL9WOnKyFtAT4x4zUil6wv/cei2FoIiFtgeWrSs1ZNUPsBwC05zAyK4iDMylxLEMiw4O66dgYi3li31FZJq+OTXJoRVg45aq99CeiD9S7KyVvFTWYrC/KWTzzzI270DB8AqinEjlCtYnt8iuoORAjExVrNeQ+1EK6N//gTkekg+fL3Yi3o1L/DE898ofxn2Yt0lqVIHzf0AakdlDIISRGtDvYLBZMLyEnIZv3NLLyfPXuO37kemlufDl0sKYGHvfGVppZQ7X0I4MQRRZRUcRsdi8LuhMoe56mhTCe0wpDwi/uc9pnoqo2apXgoQcDKqjsk2IF5sqaw7SUr3AIfEGzbNfbzLhDvQbdBq9DZMfWD8kFjspacbfzwNtSnKhLmMQcCs+SKEREZp+G5Z2C6K7PiU+kN8Cp6j/7zqv1eTdL21/AJx8YHA5DrSr72aLrVi2HyOXJkNaeXxkHd0oy+ZdIjwvLd97+Igmy5s0WUcr7t1JEWHxOwFYORshLFBShlzkB61ugstnXf6adCLSz6jCT5TuxpIKEiQ9xkOEwpCSyOWzesODdVNnotK5pXQu7y3/wjmcnuY3nOo3OiY= 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)(376014)(10070799003)(366016)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?L3crdEdjQUNHRVNXaXhZVXJHNlVaclVuVXplM0I1YTlyOGVNRW5VOWpUWFdr?= =?utf-8?B?MWd4RnJlSFBLdTJYNnJoWFBXUnI5d3dhbGltdW9GU1QvN0ZkcGxQNEVIVEVI?= =?utf-8?B?M01nMFp1ZXExVWwrTHIwSExoNXhNRGxsNnNUNVVmbTYvK1FGcFNlTHRJYisv?= =?utf-8?B?ampQQklkMHdVdWVmL3lSY0drYkUxcTIzUEhzVi9ISU1nWjVld1RVclhFblZk?= =?utf-8?B?cTNRTnQ0dnVuS0JzYTlsOEFRVVZwVWt1Z1FFbEc1NEhjZUVGMW5RbDl0bkFW?= =?utf-8?B?VkttWFpIeDVRK0dTMzJ0MEluUDAyaWxJRW13Yzd2c2ZJeVlTV0pndHhQUXVO?= =?utf-8?B?cVFJN3duTDNjSFZyeDQvYmpxcE5UM2didW5RMkQrMEhESmlCY2xFR2xVNlJp?= =?utf-8?B?RDlRNzkwOElYNHd5VVduTEFzQ1ZTMVVSbU1KY2ZkUWdrNWpha09jUjdLUGdm?= =?utf-8?B?cFlSRWM0djNYL04vM2RWYnNzOTM2M0UvYWk1SW9hdWdZTDN4bjdLdjg3QlJB?= =?utf-8?B?ZzlxZHc2RjBtakJVOFd0ckNGSmxIN2x6dzRhbTgvbWRDREZiVjBqbVB3MFh3?= =?utf-8?B?RzJBUk5zdG5hSEVEL0V1SVlWeEpGUnhONWM3MzVqWGp6UFdhV3M0NUFLZzJG?= =?utf-8?B?YlEyS1hWVTNaNnZpRll1bk9YdEsyTC9wSm5SZ3VBV3EvOUZWWTVYSWorY3FB?= =?utf-8?B?QlVHV2ZKY2pPR3BzSHZ3bUJ2bVpad2hNNk9IM1EwSjdzZDZhbzVvZkpHdm0r?= =?utf-8?B?OXV2S0VtQytOVHZHdkdyUWFHWnRzRFc2TDRQUUkydjhqbXBWVXB5a2h3bkpY?= =?utf-8?B?K0JseGJQU0k4UE1HMHR3RUVXV0o3KytSOC9EemI1c3hxSTBmOG56R05mM3dO?= =?utf-8?B?dHRSb28xc0hnUlF3dXFuWkR5Y24rdlhDenBEWXNPM0pyM1RTMms3OXdOSlp2?= =?utf-8?B?TWJRTmZlM1BOdnVueG1ZcTVpajJydUNleHlZNnBrNEFGSkljNmx2WkNEbHhz?= =?utf-8?B?MHBhNm4zc254YlpzZmxQdTU1T0pzS1dRaVhxZEFNR25KSy9ETXA2MjNzeFpz?= =?utf-8?B?dEZjZ3Y0TkRFYjc1VkFyam5YS05qcklEaE83aFRiMVh1QzJ5V1BnTHh6T1FG?= =?utf-8?B?eElMOVdaelBlcFhZV0w4QXRjZEg3MEx1cVh0OVlZVzVuOVQ2KzdqdlMrUFBp?= =?utf-8?B?Smdzeks4NmV1cWxDV0JxcU1hYW5EeU5Ma20rZHlLSHFWN05Malpka3YvdWha?= =?utf-8?B?YnVZNm1rdGNnZ0tGanBYaU5KK1l6WWQyNWNYNlNiZC9HRWZXanVUa2h5MzNS?= =?utf-8?B?WWxnZTVzeEJMUE5LWmlqK1Z1cjh6TndScSs0WHhWOVBQd25sSHdUNXpDY3Rx?= =?utf-8?B?SzlxK2k2emdiQTdtRytibVRSZ3JTcnMxaXhCM05PdlRyb3J1Y3Y1RnlSak9y?= =?utf-8?B?SDdlZXJhUDNOeEVXeDdreVg1a3NDa1JHNmJOdDhUejhiNjRJUEtFeWZHalc4?= =?utf-8?B?ZWhKeFoyR0tjemRxQ0xnK1d6YkMvTTJSazl1TWYxeTZnSG1ock5WRlBBUW5a?= =?utf-8?B?RFhVUVFWa0lnNk1PYmVQTGZQZTA1UE9HOEluYUdsSUh4ZVBLSWJkbXlOUUM4?= =?utf-8?B?a0Z0SVg0YTJINFg0eHNzendUS3pwSlBiWHhzQjVnWlM2NTVRb3hRR0h5WUc4?= =?utf-8?B?Y0RBTUt4L2ZOUG5uTnBRTkFYK2hTVXorSnNSMmlZMG9SWjdqMndjc1c4Wkd4?= =?utf-8?B?N1lvYUh0blJsclBNdTBDRm1pNGdsdmNiSm1HMFFmNEx6ME13bE11bmJlK3l4?= =?utf-8?B?TEY3c1UxSStyOUF3L2VOOHhzbmN1SzF6TmxYNS8vdE1HSjR6aW1LbmFKWUhp?= =?utf-8?B?WVBIc1ZDbC9xSERReXZrUXVyeUNaUUFsNEFqZ2UzdFRPd21uSWJlNnRXTGI3?= =?utf-8?B?UnNRWlBseFh4bnZkMWNnT2tPTlNyUy9qS3FIY2QwY1ZHT1IvWk5NTklpeklj?= =?utf-8?B?dEdiY2tRbXJRWW5vaHJ1aXRJZ1JsQ3NoQmFGZ1U0dnFQUkJSR0gyKzJqaGk4?= =?utf-8?B?WTZMWXZLZTFSa0dCcTl6b1ZydGlEOGhESzl6K0ErNkt1dWx0bVBwMjNHTGU3?= =?utf-8?B?K3JDOFpGdGZGUnB6RThXZnoyTi9ObnZWT2t0QXVCMlpKZkV1QXBOdnJvNzBW?= =?utf-8?B?VE5zZWF2d3U0STNmZjlDbks3d2swLytaY2lnYjhRRDRjby9QbEI1bG50ZFZa?= =?utf-8?B?cEJheWgzaE5xamhtQk5ndXV5MERNVE56ZG15RFJYamI2YlIvdXRQVnRqcWp3?= =?utf-8?B?U0hZb3oyaTRsSHZsamtHSUE1MUpoL2NCbm84UVdpWDFROUhkei9qTEJrRG93?= =?utf-8?Q?R9vmoUyUvsvGJtc4wenMaxPAsypSAYdCaL+EkDz6erdQH?= X-MS-Exchange-AntiSpam-MessageData-1: cBdDWXp9JRdoiw== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 11d43334-20e8-40d7-e4d2-08de84be0b76 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2026 07:14:50.5251 (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: Ds8rCOgmAyPUNLcoeZ+Hp/x+I90K8i/uncLsrh3XoyebxO496Dp7nDH/0By9QD67TQpSaShBeWtWeGHLRwKdyg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB5764 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 Mon Apr 6 19:37:48 2026 Received: from PH7PR06CU001.outbound.protection.outlook.com (mail-westus3azon11010005.outbound.protection.outlook.com [52.101.201.5]) (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 616D336AB6E; Wed, 18 Mar 2026 07:15:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.201.5 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773818114; cv=fail; b=q03KbqYjBUeLL/C9rYHK71fEKX/1+N76CqbenaoIez3oeSSrE3MJDtiOQ3BIfM6i6TPs8Uz89E8+xgQMtHpIwUr5MR/81qrOEKT/FuZoyE4vsYmXt+4aKKO59o7eX9fOnOM3almL4XHySNlDcAdaU28ilfN07Adl0I7FYqcJLls= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773818114; c=relaxed/simple; bh=bx13pImo1fJjgNsh+ATKaZvzpWRUpUUrQyUUChhrjNQ=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=trXbdWvnCG6emKfnv5ZTtahijp5B4p+mjeefyI1nXoohCLwZL69S6USlCZ866Wg4Qs2vby983lO/LH6sSvmclVqoei2O7/HCNP5g02ANhMAIhN3AewUWTOkT6X9/qdDlemJlJPkc5Pr/UkxXg3FSEO5RSZ9M7zUu2hXbTtEhsLE= 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=bpN16MMM; arc=fail smtp.client-ip=52.101.201.5 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="bpN16MMM" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=N8AORH4cKouks90DcLfTqMie3KE3b6cncYGHHpmPtgIC1yiuCr0AnzdFJ/A9V8s5a+L32tAstblHSzL6y89sXPaLfVnH58IPIxHSmdhR0Y7FDCFNqq1VRUaseXkGBHwPNmFWvg5a2EzTFFxS05qDyjACr+Uh4sBmEUKV3fcxKz05fqjUEHrWhDEb4zIXtqMsj4/V4N9a/1IOoMo79wL4IydIkjPegXNsuVvFvVf2rfhz/KTdpwVB2Het4BQQVwHZTr9ggjHX3egl1PQsJTuppcRSON4XM9N1COnLTCcC0EYRfOHi9yTJQRbQadXFu3bwBZ7eNDUBjpcforpnWOtxFA== 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=NO8V3zSADDvaOqcgnm8lOQnUFvVnGJXDqRgcQ2erTQ0=; b=XffxBfNNbVLTbTkidq2yLEaGcmTBXjScCpHI7QZCn0gOLDwUJRLMEe2PxvTZDxP/+NaQE+SseuvMRBhPqhKLRU7neIVMJHLOIgj8Z1y3HHKhplKIt4Igfcge2BF9/UOqhW6r8q17f+3Ksp+W3u//jL2X++5L55h6WL8YIoKWnO9iqz8/dUFW6TBG+KybfOF1MTZ9VHXO00MsR57cg4cRhNtT0mLIM/MG7aSKHlQzwNgqXDj2bSDSmUlZK3m24sCFosWE7asWh0HuOGITd8MZ/+hYfq2N1CEbRfnQWLKFWqdvl1ShBzibbUwZZwZDOEd75TNJIvLao5y5gtso1bDsHA== 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=NO8V3zSADDvaOqcgnm8lOQnUFvVnGJXDqRgcQ2erTQ0=; b=bpN16MMMKS5+1x8TytfNX7sY+bsnUblF6aotiJEdzEDDVsGqaU0s09WPo9ZBOVs+N8i1D0D30KTWSYZDP3RPvP8LBL2c5yJrr4JtzZmLvk3uElw2KB5EwR0ugjV+8NqOwJ4pHeDhbNJpQAovfsFNW6R3+TqPbgeyzlR7DrzIkfMs5oZCHfHE8pq9p3vQLq+3mWXgVOkDZ4kZcakAJMk0QMnCOU0iLvZKcPdRrZXYJOhjoYxJVDE9DfhVpvhCVIHaQYjvuEDIQlJcDOc3h0J4QuzhybVlmePMovBBlLSIUszqOTwwIflswu9XLXZt+7H74ACoA7YB6g/NnQraAvqCjw== 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 MN0PR12MB5764.namprd12.prod.outlook.com (2603:10b6:208:377::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.16; Wed, 18 Mar 2026 07:14:54 +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.9723.016; Wed, 18 Mar 2026 07:14:54 +0000 From: Eliot Courtney Date: Wed, 18 Mar 2026 16:14:01 +0900 Subject: [PATCH v2 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: <20260318-rmcontrol-v2-5-9a9fa6f1c4c3@nvidia.com> References: <20260318-rmcontrol-v2-0-9a9fa6f1c4c3@nvidia.com> In-Reply-To: <20260318-rmcontrol-v2-0-9a9fa6f1c4c3@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.14.3 X-ClientProxiedBy: TYCP286CA0001.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:26c::7) 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_|MN0PR12MB5764:EE_ X-MS-Office365-Filtering-Correlation-Id: b596ba2c-d751-48e8-7fa3-08de84be0dc4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|10070799003|366016|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: i52ZhXozw3Ad+sae9VO4KgEI+3qsdU521OUhZ8zH2Ueq/8x9lt1B7FBeO1q48dyyxlEEr2qqhW5DKviXzj8X7vyKEQydQtf2jFSgEjJ08uiVJb6/ZKaO9tuD+1RzHaHwdSh39abjbbOhiV7a+IfXU/U56oL57hafa7slB8vEXv/Bpvs4RlsrzGV+ZlQPQefF9ogZ1VDSqLMfmmE75ptrJIJAGkYjs7MJk4vZB5vxsCKJuQjA/cwW9ErD8tI3puNzCYTQ+5dgWVfr5Z81136fRyq0ihO1XmrgEzIK5UuIqaWtg4rs7sGgkOwoigNAoz+ttr0lnAYB1J1H7e/6zLlNEDZ7rWivljIKSBGNrT66vdJPU5/qQfETw+TpO9AdzfE4on+bHdLiv1U7CXs43QDig5WaWzjdJwgiQ2u+piIc4vn5znaSbzOWZIhwrKWeNpJMY0XTwAy1J5w0O/AG2SFyRJjw9eVsTapYD0pRCjgEZIkvEhl6rAaPtsGlq85ey3MlxMjBh4ICIg30Q4TpEwrFZ3tqpP1iXZo+BsKV2Fgnvs5sOx5vvUSdyhMCkCii8/3LdEIrGGnGfwjK2vAtxnAoqRU0rkdlO/InXEiraAfabhODf88WCDFqJa+2PFr595uGnJ8yoEN71wUmHItlnNicawRSbhwjvNvQkXI0ApOWsIdQa163x93QR10Z8kDtu5cznfXH9RxCS/JN9kGc9PBBVm3hB/AXWdZSdUegvmrc4b4= 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)(376014)(10070799003)(366016)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YThaWExVSUQ0RS9qRWFDTmYzOEdUeEwrb2w5OHhiMHFIZ0hnb0h4Mi9LRE5v?= =?utf-8?B?K1VOTjNNWUI1UkdKRmRpUjBaUUhub2RmYi9hMmk0a25RQWZpQmF1TTJQZnRh?= =?utf-8?B?WEVHK3dkRUJiNWdsZGp2WkNMZFNrWDAxVEYxakhjVFp5alpkamVQbHNyVDNF?= =?utf-8?B?REcvaVFCNGQwWHREVzBpYlN0alA1NE52akF2Q3hxbnMxdWRJUWszUWpnZEVQ?= =?utf-8?B?YmNGWXAyeXo2QjAvdGc3MkFzUmcwaU1aczlIckJ1RFVjTndjWGRReWQrb0py?= =?utf-8?B?MmRIMVVLNm5XTFE4SjdSQm9EeHNoRlVUZHVTS0s4M2RqdkNUblh4SkZIay9I?= =?utf-8?B?NTdWdUZsRzNaTWdjSTl1cE5UOWRnZG1hRlowdzRTWXZPYWNVTm5sUXNyWDAz?= =?utf-8?B?Mk1LU2hBVVA2Zkd5ODduK2JaRDJ4N2tpb0hkZldrMW9STk8wbStwbHdSbk9F?= =?utf-8?B?WUNKVGpVM0ZoRnRXcWYzd0tYWmRhcmlBaDZOdWRFWCtNNGs4R1lKejZTVjNn?= =?utf-8?B?VDVIUmE0cThlN0hBNWd5NUZQRmY5elU1WUFYS214MFQ5NWJtekVPVVNKMFF2?= =?utf-8?B?elAwY1ovajZxd1drNVoydWIzcmI5N2RjWld6MEp5TG53UHRXa3ZhSG1lRWFS?= =?utf-8?B?UlZmSnlCWEpqdndFOWEydHp3b05VakZ4VTVrckI4UzVxZEJkODFhaEVMWWlD?= =?utf-8?B?bnRHWnIrd0ZsNFhiemt2aVQyTDhuSnpnWGI5cmV6T3VmVyt2dGxDU0t0bVZG?= =?utf-8?B?MmsyK3BDclRDc0RSb3ZYQWFlZWpGSlFKSVp3NjVpRkZCV2FXOG9ZbWsxeGRK?= =?utf-8?B?b2tjeFlzdTFkazBXZDM5djlhcWZLbzd2OUZtdDR3VWF0Vk9DR3pJVUcrZDVx?= =?utf-8?B?c0lORnBSbWlmeGxRNm93NFVrTjNvaE8rendyaGRFMlNsYW5ObTlNOVZSRnJk?= =?utf-8?B?cUhxTEhSaU5tOHIvTzNVeUFsYkR4QkFCQ2dYTjYvcDQ1UFdDVTBhOU5pRHZp?= =?utf-8?B?eldTanhvMy9YMnNjQUNmZTc2QTdOUWhNZWRoc3hScWRub1ZVMGNNejU3dlFZ?= =?utf-8?B?b3R3QzF0YUsrbDA2ZEU5QXFzMjhLZ1U0MHRUUkNyS3c3WEJuR05VcXJqdjY3?= =?utf-8?B?VktjTVJ1Y0dtRWs4MVBQM041bjIwVmp3eGc5TWlsMkRFcER5UndFd1ZaYm9o?= =?utf-8?B?K3VmczUvSFN2Y1gyWFQ1UlZSTFV0eU45ajlKSWp4OG50SG85OTROcTlLaFdo?= =?utf-8?B?YzIwTGlBc25wbWlGMjVmcXliNFUway9TbVkvT3ZvNU5Ec1JPZTN5QUdFNDJK?= =?utf-8?B?Snptb0tZOEdKODBSM3RueWlzQy9qOTM0Snh2c1JPeXFPMy9yQWhwVnRReVhV?= =?utf-8?B?cHVOSUs3WFdPeTBlaTFCWlNrNCtCdFhCRnZJck8waDRGQWVJcDBxTWxkcTFQ?= =?utf-8?B?bjUvY0hFVWN1TkNlbFVVQzJZUE1FNURyTEhoL0YycmlrdEQ4Yk1xV1ZFKzZp?= =?utf-8?B?dXFQMnliajg3TFV4S3V4MkF5andvUTVHdFI3NjBTWlNkYmRKckR0UDNpdFA1?= =?utf-8?B?RjhvNnpYaTZaMXhXbEIvbDBrcld5MVhKV1FRRG0rUldpckxxZ0xaUythdElI?= =?utf-8?B?UWRkK3k5alF3QjducnZHM0l0bEV3cW14MkJmZ2hCTUsxRTNIekhYN2FVbGZQ?= =?utf-8?B?L0NEVXQ2R3BSTFVqRWlXcW8xU3g3aWhyaUZYU2l6T2JxTjNraWxERWhzS3ZN?= =?utf-8?B?eGhRU0w3WVNPejlNQWRab0ZhejhQakR2NitNVnEyNDh6c3RrdGNueTJpYk8w?= =?utf-8?B?UHgzNDZIT2s2cERaQnFBbTBFVUFaVzdZOU9FR1puUFlHbFV2MUFQZHBSWWtG?= =?utf-8?B?SDZQaTRWb0gwTEFXTnRQbXZjY2hJVVhjZUdSS3R5ZUIrKzFkei9tN3hnNzVM?= =?utf-8?B?Y0h3dmhJeG55eEVWSTNyWGJKQ2VVbUUxS3YrVkN1Umt2cUc5dlpDU2h0NzBo?= =?utf-8?B?aVVobEg3NDUvUzArNitVVW5lQ2FlUXJDUWo4cldCMFQrYlFBTWFVMS8xbUxt?= =?utf-8?B?R20vUWlid0hWYTVLcTRrVVpobjdWQUNuRVN4OWpmcnJxSUZWTjI5TjFHellx?= =?utf-8?B?cC9Yb2sxNUxsaXhxK2Nac1hkbVRMblJJM1lwakJHRVBsWCtrbVozL0srUkRT?= =?utf-8?B?dTZONXN5UDNWWDJOUXVPd0tyakFZS0RyakxyT0YzaGhKVWw2dyszMk1GWklz?= =?utf-8?B?NWRHcUdwTXVzY05wV0JvWVlIZWgwZSs1dUU4VXUwaTRXZWYxeXVicE0vdXJw?= =?utf-8?B?eFB1YUtVaXRISzQrS0R0NThsWkxCNEc3cTJZdFpDK0NSZ0gzYmNOM2VsSHA2?= =?utf-8?Q?3nvfqbFR6nQvsb5FOwYENf0lwbQFADqQRkPBYG4hAXATl?= X-MS-Exchange-AntiSpam-MessageData-1: ml3tyxN6Xaej6g== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: b596ba2c-d751-48e8-7fa3-08de84be0dc4 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2026 07:14:54.4127 (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: hvIVjLMifuRyjp/Wpbfoyyn0JTDbw88Z1dbtwB0NHDu8TW2yorzYMLa7RTKj6Rx881h3dbJa+4zhoyK6G6/ejQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB5764 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. Signed-off-by: Eliot Courtney Reviewed-by: Alistair Popple --- 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 37831034ec3e..8cbe90ce8271 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 Mon Apr 6 19:37:48 2026 Received: from PH7PR06CU001.outbound.protection.outlook.com (mail-westus3azon11010005.outbound.protection.outlook.com [52.101.201.5]) (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 B546636A02B; Wed, 18 Mar 2026 07:15:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.201.5 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773818126; cv=fail; b=AtOuzz5T3Al6sQlbQhCP9S1C3Xh6MMZW1YrsBkwEO/bp1Yd52g0M0e4eYuUrBc/TMrIZbUWJcsUawSKqdZ+rSTH8MmKqfqwN6jcu96z27/vXSzYv9PhnJdpvlUAs4CUYl9nUBU4wDnx+dx7flTFhiPtvzIhte7Cr+XXe2C5aw0k= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773818126; c=relaxed/simple; bh=Prnq9yXZGRydOJ+BgdlsWNKnX1BhWiUfeltkAGEyPz8=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=kRDOpV6CtSm/YtDDKJhiO16wkhjikq6XJ1IjE2dDF8KUOJC1KUYlSRJXQF1jfJ+4+1z450j3cIo8flGiS+pOs3xQ0Ig4ADxFEHyUI9bjf41VrCw+smOnziyDdKuwS1Wzv0KSLXVG/ro357yQV5ZmjNH5ZfqRKgQOr6cy4guFLGs= 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=o8+0++eo; arc=fail smtp.client-ip=52.101.201.5 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="o8+0++eo" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cKz1TRfJdQGYSJR0e/FgWtgO0JKgDg7NkoR5/dUuq0HKXI6ihBAeuG+Qs3HyH/n5pTCXETFh55LnySdm5Hyk/HhMwcmYQZV9dX2hegj84Sn5/5BVGZB9WYifyFvwSDhCavHhiJo3zls0BCnpSHbdsybT70+6NvItGVckTu6ep9wrJDagsLtd5pm3JqF3okgz5g3ndQeP9QPIsW4uFhpDgaKgq0Y0ZJ+18dnU+LQZ7dJSQo+e8KOziQ9vvHfSfNrInKpmuzpc2hqU96CYpfjECHd3g6+j3UCrJuAIW/R3FD7Pd8jiiwEdQuVkZUA75UQRGDvXDfGxIFni2YXdzeLBJw== 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=yeVsaOCG73mCVNJqI9hlfa62b8sXWal4g84M9qtqwnnHfBaQ/D58ugXZNDr3mhCMY5PSaB61U8USvreCw58/b/BR0tTm+FUrbVuL9NTFbOgxIAKMKv00E10VCaD9hlRH8n57xbiTXyXhCdo/uQzWsLIqBYWQbAr9DV9Cgr1+vnUEI8YBtse1MHqOg0CuTHWVscTWIj36GVl5kb/FDu66sNPQ6LU4HdNMRqDdlX18PoGT+DkC7hX7XLvECYsjcsqZ5kw7xlUZL226akCkplMsVz+OFqaDnc5oljKDBKhPUQ4cvTBY6CqeXFE9HGt4fQ1QLD6M/2pbDORzMLES2+XXrQ== 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=o8+0++eoz6SW4iBMFiCvHdgPtDIkSqCvTgSDHqUHZKOIub1eHwrXLZqyV9JBLofYaEo7x/S9bajJtizSKd2qnipUGIo3DaAsgC80lqhhqwjrUQCisN9iJ3E6t9FsWqe2/i3slWBQcZm4o1iPmrRmQZfXujUUHT9OVZYJ+PeeuURqB/TSlwBIKXB1HOGw7MTsMMyFPmbEqm6tA921bxtk3gHwQLEqK5vp5yWM64itbzNIXcTLNEWFKZwNYLdEzONJs9ZZIzQUD+a7PDVITVGokVSTWA5iV9X54v2BM0MWF5rrhH+dzq63O+c8M5DVb7Xsqsa4W5nOvE5GqInKImyG0A== 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 MN0PR12MB5764.namprd12.prod.outlook.com (2603:10b6:208:377::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.16; Wed, 18 Mar 2026 07:14:58 +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.9723.016; Wed, 18 Mar 2026 07:14:58 +0000 From: Eliot Courtney Date: Wed, 18 Mar 2026 16:14:02 +0900 Subject: [PATCH v2 6/9] gpu: nova-core: use KVVec for SBufferIter flush Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260318-rmcontrol-v2-6-9a9fa6f1c4c3@nvidia.com> References: <20260318-rmcontrol-v2-0-9a9fa6f1c4c3@nvidia.com> In-Reply-To: <20260318-rmcontrol-v2-0-9a9fa6f1c4c3@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.14.3 X-ClientProxiedBy: TYCP286CA0003.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:26c::10) 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_|MN0PR12MB5764:EE_ X-MS-Office365-Filtering-Correlation-Id: bf7951e8-a710-4ba5-a377-08de84be1016 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|10070799003|366016|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: MeIYSru3aF1BRwR/63cEw+bm2HT8rm5NU9C0VUQdJhN/sGiRERGRsCGIGNoqtZ4KnhO+yJTF9cC20FT3+PC0F+9POv/bujt4HfUvT23ar7zhxp7CiijDVJ2yduyn0IQ9AlhM3C4g4aHStXVOFuOys9MdKXpYxOJZVkxFy0qI6PO80PNX9R0dzOZACZDxMU2WI4nacIJRPW57k/VUHnVdgwBYVz3o5mxY310u5YHFPO/aUf/s6xWEceaFlEvk/3/0qXcGarXY8mLZXnuIKppZHsRfZ7/4uA+/JTT35hLyx+zdbWGYLAANBz53KflUCgWvQBID2huIuzXr3eqJyjeOBJXcBkzNWEkvfhPTqdBRaqde/crXVAae/uaReyAX9+cm7JlHKU6LE55o8+q0nPD7k0Vk0DH9zNAKkTEDz05caumchJ+yS2bl21g+5VhH2WTkSJkFpiaDPx4UJVE5GWB+uzkqoYIL6pwY8J7m4qolCX30Yu5ZrBvN1yFLUhwQR94DvuzrjHpaTW9xoosaE7FWnw7tOY5y1ViyY9tJ4KUdRsw6EBsBqcyi3fC6EADHccttJvBxVaGUVnMDC1oeM5O6LyASznVOQhOR4ASs6IE6rWxIQoIYOp1kCkJhfJ12oLUOFWt+qJuqFhnY8pi/yWmJFvU8GJoBhl8EDnM6KxRrsOKJael0RSlsKXaMXvRLAvBvOzF21oW74U4qFRuAOwsCdUArOT2IHvMmPKvFEsWzhMA= 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)(376014)(10070799003)(366016)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dGlJa2hKVGR0Q0h5L3pCVHJibklrVzRobXIxYUtPRmlCUmdMazFwRHUyL2Mz?= =?utf-8?B?Ulo5S3dyakhXNTg3bHdYNE9RM2RMcDJsSUJzRXFZMkdQeStkKzZFeE5LUHlV?= =?utf-8?B?WUhXSGNydG84VWNuazhZeEcrMW0zMU54TnczaWFYazRRdzJKVVNFajlla1ov?= =?utf-8?B?SjhzOHNUODN5Z1lPNVlKeVNsb1A1WWdSSUZkQzk5OCs3eUZib09XVnZwMnBj?= =?utf-8?B?dE1aY2hwNFA3MVZqVjFIZjlQNjh1RlFjLytjVVNoTFlEb0tRODVPa2RKZVhu?= =?utf-8?B?cEJ1aTRFWG51WFF5YzU3Zlc3WjhNcGdtWStQN0JYaWFkSFNKcE1NN05BYVlw?= =?utf-8?B?bXJHVHJsUU5rWG5rQlhhN05rc0laREw3aWwxOS9jSmV3RENTZitkdjRwZldq?= =?utf-8?B?NVk4ZmpLZHROU0JLNENQd2pBU0pEYlBXZW1mcE5WcXJ6dzVyRGxnMXRwdHFt?= =?utf-8?B?Rm5QOTVYeDFlV3ZPNWt1c2pZV3JKVTI0NHNOc0JSa0RrU2NPOVR3em5PMWlk?= =?utf-8?B?ei9EQmJxdCszNmdZWGZIb25DdStidDY5bkJqdFlJaHRwajIyczFBMXVUOHdv?= =?utf-8?B?ZytnaFB1TFlBekJaL1h5dFhoWkFGdVlOSm01YjZNaktWWXFncnVqV0d5aWh1?= =?utf-8?B?cm9QRFI0UHV3ZzVBMDcxQlcyTTJucDNXVi83M0JjejdsSEwrM2ZJV2hKSi9G?= =?utf-8?B?MTdGTkFKOU1FMEJNb2poMzR3aGU2WFFJTWlBRDJ3c09TRU82NTFzcmtPTjJP?= =?utf-8?B?TUpobG5GWERkQzZlMW5kSzRNdmtuZDFxeUdaWVlxTXNKYU9ubGg2eVZwekow?= =?utf-8?B?cnJJTC8xVmt4R3RhYnZnMlo1Z0szQ25lbHdIRDdHckRYaElpbnNmdVcrZUwy?= =?utf-8?B?Qmw1cktoelJ1ZmlDNGxyNlM2bVkxVTFHVmJicXRBTmg4dnhsNWl6RldJV0ht?= =?utf-8?B?eFVnWDZYaFY3NVE4aXdKU2tvajIxUWp1NEhTd0lsRGhydmEzQ1hJVVhWaEt6?= =?utf-8?B?Y2IrOFJtdW42d2J3Z2tPWUdCQVF6UmdYOXhaYTgrOWRHMTltM0ZMeXdqcjh5?= =?utf-8?B?WmFLK0h5emlLUDd2RTE0RFRPYStvN2NHNlYzY2VEWHlwdUV1ck1mZk8vMWQ3?= =?utf-8?B?Rm1MWFZMZ2FJbmlyTDlIRVhwZXMzK1R1alZqdDcxZWtHeUxnUEY4L2NNYkZY?= =?utf-8?B?UlNjcGxFMHR6WUNvWDRpUXZUK29UeVJCS3FyUEJmaGQzWXZQdnl6VmNTV0lI?= =?utf-8?B?LzZqcEJzQ0Z3SElBSTNRZW5RV0hKMWg2M2FyWXpZQSt5Yi9ZcjEwZENWd3VG?= =?utf-8?B?dHkxL2RGdnJBVm9oMTlQNUM0UVZqMlU0S3QwRCtKWTRPSXNoUVFESG1UbGpw?= =?utf-8?B?Njh0dlNYVkFWWTliZDhLd1pzQnI2UmxvYmZqT0xSNXhINWU5c2NjNStBc0xn?= =?utf-8?B?cjNzQUtDTHkrNS9pNFJ6VVY0MmcyVG9VRUlkNG9yejBzcDJMeVlKWHJLVmRn?= =?utf-8?B?TThRQ0NGTHBpUDRKYlEzZXJoMUN4MXE5MWZUbnVhNnVoYVRHaXQwd3Q0SWk5?= =?utf-8?B?SXFTUjBRVUpJeGR5MVk2VmNlaUVvVWxzQ3NYd0h2TFg4LzdHNU9ZSCtDN3dR?= =?utf-8?B?WVZqVEJXSGY2d1RWZVRUTi9ZR0VXcHlGTHNlbU5ReVA4ZDQxdFl3RllVdkZ4?= =?utf-8?B?R01TZGtJS05iY2tKRFVMUzF0a25VWUdaSyt3SFprWkUvSXdqNTdSZkc3QlM1?= =?utf-8?B?dXVubHdybTNhanZBU1R4R2I3R2xRR1d1aVcwQklYZE9BNzB1VTZNODI3T1kr?= =?utf-8?B?RFBkZzI2azAzdTNaRll5UmxvWEo2VkorWVlaRTdmem9WcFpqOCs2YVViZGZ5?= =?utf-8?B?Yk5HV3lXcFBXbHNZNnFmTElGeU14OFdpV0dLTTZUT1YwYVl2Rm81bnowWGRY?= =?utf-8?B?Qi9BbUZhUnVSZFVCbWhoa2gyMGpnZ1oxVE55dEQvVzlFSWFxTlhlTlpzWFo3?= =?utf-8?B?Zi9zdk1MOUJrMHBJRDE0bVloWWVKSWF4a0Q3d24vSGxOTVZvM2IvNmdrOThV?= =?utf-8?B?djhGcFVsVzdpZ0hvTVlOVHFzOUYxQmIxa1RzMDJGMDI3ajN6Y3JBZUtVdUsw?= =?utf-8?B?Ty9MWEhLdDlCSmJoWllIaXpIcFNkMldXcW5tV1ZOTmtnUy9LN0tJeUoyNEJI?= =?utf-8?B?NElQeVczNyt4aGRhRnp4d3NuWWF5TlRCT0tIV1hhZEpTUTM0bjFQaWhTRDNF?= =?utf-8?B?YjNhSDRBRDM3cDNEb3ZKMnNzZmlBWDF5cUxHaWtUQ0ViSWx1c3ZzUS8vYlRo?= =?utf-8?B?MVdsVExQV2FITVMweTVPVWphTjhqNkhLTmdOdUxKRTJHS09US3J1cUZlOHNR?= =?utf-8?Q?sHxFPczNlEA28REO58/7K2xny9TVsCVlEjVQZ+F5uyuuU?= X-MS-Exchange-AntiSpam-MessageData-1: FS3MpCvWZacSYw== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: bf7951e8-a710-4ba5-a377-08de84be1016 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2026 07:14:58.3008 (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: GT1RmloJxJhoWj3w7HBTZZf4GKUPD7GyhyKwD3TgvlEhjv5mF2X+9xowGrMmwAwH3HP+vBP+wPIl+ONlLGc/ww== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB5764 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 Mon Apr 6 19:37:48 2026 Received: from PH7PR06CU001.outbound.protection.outlook.com (mail-westus3azon11010005.outbound.protection.outlook.com [52.101.201.5]) (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 ACAF533D51B; Wed, 18 Mar 2026 07:15:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.201.5 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773818129; cv=fail; b=UtKpCuPjbo6+e36ByTPjuD8ivE/i12UVVyWoVCwk2WlYS4cxcvD3uP+eLF8A5tkGbzBv4a58MqQDH5druheaUsYG0mq8PDPn0QqPEXdfbb1tb9RxhTzkAHE6WdcLP8z9i57meG4G6MDPOollsjx/fJGp467VWcBZqb8J0zCIuA0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773818129; c=relaxed/simple; bh=8HFAY8kf1lG6tfrDl/hSwKvX26Ev479Ns+Z9JdqJRIM=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=UneBTUYX0Qz3XwBb8bpQ7yKtyLYb84PRxzHiZ+8HbQ2w9rczYkMu+dSrwlY6EtqmJcXQk9NhqfzwOlwF+o5X4WR47zJel7pZJu5e67wkywAEgTv30lkydXsvP3bv66d03giLDZmVjp4OlCAou5gIPDvLa9cxk5V5AsTMHog71mM= 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=tu0kzBUR; arc=fail smtp.client-ip=52.101.201.5 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="tu0kzBUR" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=muTCAWq9tmZb7/qV32dV6tSSrseQrq0wOLx9KeEC189ruFo+q1Or8K6qyhmrXqt+GQHaACsAimWAPQD2KVQwcP3sV55eh5xQqSXcj5fc4lkfPKRchBAkjLLdrSSv40BnXcpugPkFHPNnLWw8Lpu6SLMyZZS8YhECvqf6xflZ0EvA9czsNtSdTqJPki+mrv/yaFjwQS6zbpm+41qWYy2Sv9wbVeiNrluhd2MmKRFg6e2ESye4nJe69/8XsaDkS2CG6OTlv05caW52BNcEEWqz6K09j4t9WCiBHzEl0/djs0nOX+RRHbhKV4FgOIeNxGZEswx9U81d9lnx2HrmPbuq+Q== 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=A2QqrmfLFZaGxNMkoQW3RgqoiGxks02o6xL5FpsW8Js=; b=cn/3dkU6sq6Le8/MIaC6BN1o+n8ri9tDgqbdKEuUyTcfQuRr2w5jAZVYvJAalXNDnLn9OoSq5wSpxMA4Wqu5t3yJB4rY0jFWUSxSaE1xLXGUoXwxb/bRUzmFcvnFn2xPmEzVaz8Nswjcq8LhhMgxdnb0kjy+i8y12MYPVL1RYgBQxLZfLxgpl091RNVdrwM87K+GRYVSKrsvvexTH9NztrUjvMaf4AV1lztOuTTsiP7v/fOnSL9YkbwkiuP183Sdebr9pjZT/3+DipDvwncb3Iyp/EiH/4JjoqN4FWYhYNvE/+P089DLL8eeoXPi0VMWSCI/bfrN0G892rnYJzlWiw== 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=A2QqrmfLFZaGxNMkoQW3RgqoiGxks02o6xL5FpsW8Js=; b=tu0kzBUR7FZ+AVDe4mWuqevFYenY76kbMbBOfLFW+u/3tgq2BOMpCPOd9gc1fAOdMn+KFQFRkvauRmry8A+Iim6Ujim8vvzQ240x8rB8GrYTJCvCV3hiUxZCrcV/iOgo9glLA/alHUPXdQ7DU2THDG5/ePQv6FCCpRnewWjVrL0v37xdCS5Rq5MgfQE+1M8nTlJ+ifhBaXh5rlbsVaU9Ow2X7a5ZZEDf46ZvZMkiEcHc/k18s23+PmTqNuiVdGHPAmWnVcBEaq9Lw5/dfKvnP0z7a0UADyiVkL9itwWVuFDvuk+aQCt7BOvlG6bLswah/K3ubEte5m4rVr3FKc7hbA== 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 MN0PR12MB5764.namprd12.prod.outlook.com (2603:10b6:208:377::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.16; Wed, 18 Mar 2026 07:15:02 +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.9723.016; Wed, 18 Mar 2026 07:15:02 +0000 From: Eliot Courtney Date: Wed, 18 Mar 2026 16:14:03 +0900 Subject: [PATCH v2 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: <20260318-rmcontrol-v2-7-9a9fa6f1c4c3@nvidia.com> References: <20260318-rmcontrol-v2-0-9a9fa6f1c4c3@nvidia.com> In-Reply-To: <20260318-rmcontrol-v2-0-9a9fa6f1c4c3@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 , Zhi Wang X-Mailer: b4 0.14.3 X-ClientProxiedBy: TYCP301CA0046.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:384::10) 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_|MN0PR12MB5764:EE_ X-MS-Office365-Filtering-Correlation-Id: 01222e43-2a14-407f-3184-08de84be1295 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|10070799003|366016|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: p97k/gh/fOOJcB2Yw1b+nY39Oxo1+e+47Qsmo1M+oj9Dm2Of96cH9v4bJr3x4Kby3nCHPY14Kok3WAn844ff0k8RIiLLYZZ+ki7G2xoyjcdPje2vuUQZ4jRw0f0aMdWfyFX8eL2kwa3W2k06ZrVW0phHehOXAILjrMtkmHS6uN+iaQFSMlIHN6YduuZAq3V8hE3tz//cKfPHa/d4kuBUS2ytRBteDV7tQSXH8PbH7OujGxgeLYr5be10yAxO1TLHXeqeSqWiiu9LW2SiJtWCUL+jAatdZ0Fu6FsVkH7WnXtm5QSzSsdBJm/6MqFyDSFVr9kyQUYVIK921w4hxIPak5CSwT7v8Qae2wm3+9K8+ygrkxAysJyYovNQFKeGTHIHrv18tSAmOWld6Ux54szKxpvfuiHNUcEk6dOZdWSv1WbYpADsf3FWgMBxBjrNeM3usYjDRHXuMt6REIK/21ifAF3BifFbD589dTejEIamKhyBTWHz2kou5WrFCfoY/zqtal4qUhQU3r5K+QUIQC1y3Qz9twOaS19xj5zT+jYJbu10IleuxNUHFS9jAI9QX2dYTH7FXqrdpEJVlXkL9FhTto1yjtuYrXwNPEZ+vPG4kJwGpD1q9TZNYUjY+CSEthuca6l6M0kKw+7HJfa6n22xci6KKW7+bWno9Bkr8kzHm+XX6DxhuCp4ZP14vdMvr+estl5g6loiw2MAd5dlW9mH7glTKExNkAZIsfSCupb9LjQ= 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)(376014)(10070799003)(366016)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?c1N0eWlFdWZEVFNsSnB3RnBLWHZrMURCYnViNG9HaFhadmVDSjBDMmFiaXhz?= =?utf-8?B?eHhwOFREc3RrWEpGZS9JNHdSWDFBbW4yYUNNV2R3eXVleVZUSjY4c2E4aWNG?= =?utf-8?B?aXJXTytGQ05EQkppUTY3SXFKZGsvRi9QUGZOdVYwSm5ycDllTVZXN0ZRRElr?= =?utf-8?B?UWJwQm5XWGtVYmdiY0xuMjBIeHIwcUY5ak5YRXNkdzkzQ0h4REY3aGJjOVZM?= =?utf-8?B?Qkc1S3VFUEtVZFlmcERFazd4c0hNL3BJbFVzRDJ2RnVxUWZCcER2TmZ6OU9p?= =?utf-8?B?dVZMSVZvWGRaV0tMVTNLZGljcnU1RG96UXJxVHF4bGlIOXhWRlhWRzRxdUN3?= =?utf-8?B?elZLQUZsZEpkNUYrWDZqS0s1V3dyMzdOaXFSN0lxME13Wmc3Z25STmtkdVha?= =?utf-8?B?WCtqZGdrdEo1bGhlZU9maG5sRXQxUW12MXpDdFR5b3JFa0k2N2R5d0N6WFVr?= =?utf-8?B?Q1RoUXFXRXhMUklsekhaMDh2ZDRsYTNBUUFUZWdtak9zOXdIYUs5L1pCbE9t?= =?utf-8?B?K0gxZVQyQzYycXo3bUU5STN5SVpQeEpsY3BLaUI0d1lGdXA2SXN1blBNa0lH?= =?utf-8?B?amtuMVlvWi96RmFnZVB5MWhGU0U1WDhvUk5WNERUUDJ3VnJzWTZxekZVWGxu?= =?utf-8?B?cENNTW9hREtFVWFiT1VMUXhJNW1uSzMxbitkMHdMTlh4MEZFSVJnVUxyQXJQ?= =?utf-8?B?TWVJMERmYVlJcnB1bFp6S2VNSkRWSXJiV1dOd21BZ1dzUVFVUDIyeVdTVGp0?= =?utf-8?B?ZFkyTURDRkdYTUUyNzVVOVJSS3RMRXlKNStnMTNmTTFWZlZvYVM5NUJHOS9T?= =?utf-8?B?aUpqbzhyT1JsQk4zVXFWL3pWdDBGOGNPeUhGeEd6dzVVRzYzMzh6Y3h0dHNJ?= =?utf-8?B?RFFrcXUxWFpMNUdMZ2pNM1FpelhiaDcwb28rNkJGakZ3MWl1MkRMSFpNOVRr?= =?utf-8?B?TFNZWGRlYm4yUnV1UTRSRVBBWmFiclJ6NGJWR3ZtSk1ITUtTMTVQb3BKcjhm?= =?utf-8?B?aEN5SVljRmVYd05aU2xzbHIrS1NmZHVMRjRsdnR2eDZuSEl2akNUUDFhTTMx?= =?utf-8?B?dnl6RG5peVVpVXcxdVNMenk1emF0bUNacGMvRmhmT0R0SHYweTgzTTB6VThT?= =?utf-8?B?TTYyZHdvekNKYld1c015WmVsRUZZMG53Um9OSXgzUUpoUUJZUk4vWVdNdkNO?= =?utf-8?B?T3g0OTFENHZGWlZRRE5uNjZVK0Y5ZG91WmVrQ3R2eldJM29kdlVSMWg3WGw4?= =?utf-8?B?dE5yT2RyY1pBRldBTmdUQWgvNVdnMm91WHVQM0YveWhxdkpVU0VySVExYVdC?= =?utf-8?B?aHdScXpwY1RITStoRDEwQW5zaU1zU2FRbG1oTEhxS3ZvSU54TkZzbkF1b1d3?= =?utf-8?B?bklHd3ZybFNDT0pxQ21zZ2w2blBFT0hCcU41OE1INmdwR2hSZlRkNlA4RkU5?= =?utf-8?B?K29xRThhVFVSTTRPYUlSMzRWR0MzOWxvbERmMnVEZkdtVXBNV1dTVDRrbVhq?= =?utf-8?B?R0lqWE9qdjluN0F1cFhjT3hCQWhRakNpOW1OMkJUa0J4RG5EMk5IUFU3V2ZX?= =?utf-8?B?ZkFLdUF3d3EzS01mM0phUmltMk1mV0xpVDFiZzRhSmR2ZmhXZHRwNlJvN3J1?= =?utf-8?B?UzdIdnB5RGRFcW9xQmNZUXgrNWhlMWFLSGE1Q3JtQUEwcmJBdytHTXN5OWkv?= =?utf-8?B?TDg5YThpOVZnVG1LdWZSUDJnZnF0Nmtrd2wxSmpiTDVhT1RCSlNWR1drNU0r?= =?utf-8?B?NkZIZFlXb2Q4OGxEUGczangrekxjdnlmSDFKdVVUeGNhWUlBcVErNS9VTVRZ?= =?utf-8?B?bjJNbS9tYmNIYVJidzQ2UlV1TVh6eUNtTkRlOEhwWllBR0NIZ0hXSjJ3djF3?= =?utf-8?B?emVCbEMvTUxQd1QyakZEUEZHdWJKQVdjTUJ4TXFCOWxkMUp6VGxKY1BYUkJH?= =?utf-8?B?Wm4xUHJycWdQTmQxM0UxRWZaZGRUU0VUOGVZOUFubzBlazAxaWgxT0NISTdh?= =?utf-8?B?amIwdi90Sng0N0hWcWQ3T0lCMkFvY2krNGhBR0VXRVRXUXVQS0toMkNkamls?= =?utf-8?B?eEpnUzk0K09SRURpYitsREF5eFN4RllUYXJqb1VKUVJQeU9QSkgyZVJQeE9i?= =?utf-8?B?MTJFRUYxaGdCRDg1dEVxSUdHNXJYbytCci9HUWc1bGljN2Fmd3hPM2dBRmpM?= =?utf-8?B?RXJhZ3Y2TkNzd0w3U01aMWxHNHh5MzNWMXBHeUszTUlFRnlTam1PNUhaVGlt?= =?utf-8?B?aEQwOTl5SWtvc0dzV1NBZkxGMDhJZ1RRN3FhT0ozRHFXNDJSSG95U1c2QVFR?= =?utf-8?B?RnR4OXBqMkk1aG85UHJqeWx2Z1JVMFRpZzlQRXJOb1NqUVplTXRmbXl0bFhF?= =?utf-8?Q?pDvnu3u+GQnwEDyeFN4OXX3xuEc06lYAZkfxrW/5rum1S?= X-MS-Exchange-AntiSpam-MessageData-1: StBc8O90AvGMVw== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 01222e43-2a14-407f-3184-08de84be1295 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2026 07:15:02.4769 (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: OK1Rxfy3XbTlB5usED9X/zKBXT7Qhgkd3VLKrNWky2CE4vncSKBdloenp15W8g7JofY6oXJOhiwRqIUBV4/K6Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB5764 Add `RmControl` which implements CommandToGsp for sending RM control RPCs. Add `RmControlReply` which implements MessageFromGsp for getting the reply back. Add `send_rm_control` 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 and adding its bindings wrappers and writing a helper function to send it via `send_rm_control`. Tested-by: Zhi Wang 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 | 118 +++++++++++++++++++++++++++= ++++ 4 files changed, 122 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/nova-core/gsp.rs b/drivers/gpu/nova-core/gsp.rs index 72f173726f87..14c734c53e7c 100644 --- a/drivers/gpu/nova-core/gsp.rs +++ b/drivers/gpu/nova-core/gsp.rs @@ -17,6 +17,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..5a3ac7bd415a --- /dev/null +++ b/drivers/gpu/nova-core/gsp/rm/commands.rs @@ -0,0 +1,118 @@ +// SPDX-License-Identifier: GPL-2.0 + +use core::{ + array, + convert::Infallible, // +}; + +use kernel::prelude::*; + +use crate::{ + driver::Bar0, + gsp::{ + cmdq::{ + Cmdq, + CommandToGsp, + MessageFromGsp, // + }, + commands::{ + Client, + Handle, // + }, + fw::{ + rm::*, + MsgFunction, + NvStatus, // + }, + }, + sbuffer::SBufferIter, +}; + +/// 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. +struct RmControl<'a, T> { + /// The client handle under which `object` is allocated. + client: Handle, + /// The RM object handle to query or control. + object: Handle, + /// The specific control message to send. + cmd: RmControlMsgFunction, + /// The raw parameter bytes to send with the control message. Interpre= tation of these bytes is + /// specific to the control message being sent. + params: &'a [u8], +} + +impl<'a, T> RmControl<'a, T> { + /// Creates a new RM control command. + #[expect(dead_code)] + fn new( + client: Handle, + object: Handle, + cmd: RmControlMsgFunction, + params: &'a [u8], + ) -> Self { + Self { + client, + object, + cmd, + params, + } + } +} + +impl CommandToGsp for RmControl<'_, T> { + const FUNCTION: MsgFunction =3D MsgFunction::GspRmControl; + type Command =3D GspRmControl; + type Reply =3D RmControlReply; + type InitError =3D Infallible; + + fn init(&self) -> impl Init { + GspRmControl::new(self.client, self.object, self.cmd, self.params.= len() as u32) + } + + fn variable_payload_len(&self) -> usize { + self.params.len() + } + + fn init_variable_payload( + &self, + dst: &mut SBufferIter>, + ) -> Result { + dst.write_all(self.params) + } +} + +/// Response from an RM control message. +pub(crate) 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)?, + }) + } +} + +/// Sends an RM control command, checks the reply status, and returns the = raw parameter bytes. +#[expect(dead_code)] +fn send_rm_control(cmdq: &Cmdq, bar: &Bar0, cmd: RmControl<'_, T>) -> R= esult> { + let reply =3D cmdq.send_command(bar, cmd)?; + + Result::from(reply.status)?; + + Ok(reply.params) +} --=20 2.53.0 From nobody Mon Apr 6 19:37:48 2026 Received: from PH7PR06CU001.outbound.protection.outlook.com (mail-westus3azon11010005.outbound.protection.outlook.com [52.101.201.5]) (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 4BEBA368977; Wed, 18 Mar 2026 07:15:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.201.5 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773818130; cv=fail; b=FLV6FEZDOIVaViqb3cu754+fFFCh69kk95ZUL1VG7sjkL1+T1XyqQnMCF7ur/ZfTH0znjdILUhp8YaJlJteSafCHa9wRIfaIKpSc9Jn1L5S4lAWB1AgyoRqORayemjze9dqWzziMyfBJuYhLAdY8/ImuvCWN37knsobw9fIuh3w= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773818130; c=relaxed/simple; bh=QgEOssU8wki4tFZCDxf5aMYedIwrbwSyka8rb2+zYw0=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=uUXlkiFMzNUgtXFX7yjk+1eFRaBANBZefMCQ4eNrMbjVVi1RiI4NLGic1F3onqvDz2GmI2FpzhIR0Tq8z4Nc0Y0AMTjxJA+YGGWNOABiV7toPlBIwFLFZOAkZBXeZWGiS/+MZtAxCoGRy/5ZwukHuHfcq+uZss8l44dGD9uiYRI= 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=spSOM4rS; arc=fail smtp.client-ip=52.101.201.5 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="spSOM4rS" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EsRoEw4tzZ4R/5zNfFZdD7EIJuBFxtcCw9miqoBtOiEkxFZMdexGc/q8drWUPCVtTg0FknKMuDquNi81fYflEJVwKHNaU2Y8YbxGNF5tfclIT7XaRbun9G2+dlpMNfwW1e4zIjtfWf5JVLl5noS6w7a0Kbs8hzfLhsyobJclb5lHLKBdvyiBclf6+pnL9lC5g81mTCLHjSCvQczDkJ7aj22NHiUSgMzB+2DPxLyqpt9EJtOf+YCFhd4eX/mKg+ZCojQKczWR3ISO246VmdYt0LAK7WXOx/oDSh0AK3n9bFgqxooFBrO7ZQ4ylRZk4uNctZpVWbdz9f8o1W/frXitbw== 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=/YMwBR3jVDMnhPMvVdjW3KQZd9/0mxT2MfNEU+qh7K0=; b=OH3j77NVS2Ac4JF4DJ3yjvTSuFnotDQBLVltXNEk4g87tL5cAQH31EOvU48TrdtbhjdYj/vNkjRTTUXgd9FwNxVEDviYc4StDzzu/L7NDuUathGfwtOINTAtJC410UxlXrKtgPkZ/Qz1UBaJAY8js8Z2TDEPCpJG0uqh+TLvhqQcuhB+gg730212WEurlN7No6Zx5dxNn1YsMBSScdJ/td9V05rnTXQ+43O4uoQEQy5O3WtbvGkuiOe2bkySoWqZzr2CwcEJR7abGMgo5sgkXp3uGIywPxj2+fe2Tu9KH+NxVZZftuymzVe4zPEY6I3lLGuIcPEQlOHlPgoFfV3dmg== 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=/YMwBR3jVDMnhPMvVdjW3KQZd9/0mxT2MfNEU+qh7K0=; b=spSOM4rSLkma1+hPJaqpXBvJNv30/PFmqIOr5wxOZon05+BjcQ5Tc96roBIPKk8oXmVEHY80ktKghJQJ4D3f69yPqnnOS4sWlfo6WE0ta+veWvRPrpJ1AGQFKRBbZ8QwYUunYHz3fhnlL2E0P7m0T1iPaQVCbjB2U/g0hCTpzdfKIhOu1GpxDYM2BKl/jZs9tr7xn1EzsJp1pfkP3e6Xdr5PzwdgcUjhkB2z3+Lb82Kos8KgCkNOS3RF/Ak1Y7fnMUElkqso7Xmk7FO3MKz0Ie/RtJsd1P1K793PlX2o0fgY44F6WkdwYS/DDCRleHMeI4oxQJDhtcT15J8nq7Y/tA== 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 MN0PR12MB5764.namprd12.prod.outlook.com (2603:10b6:208:377::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.16; Wed, 18 Mar 2026 07:15:06 +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.9723.016; Wed, 18 Mar 2026 07:15:06 +0000 From: Eliot Courtney Date: Wed, 18 Mar 2026 16:14:04 +0900 Subject: [PATCH v2 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: <20260318-rmcontrol-v2-8-9a9fa6f1c4c3@nvidia.com> References: <20260318-rmcontrol-v2-0-9a9fa6f1c4c3@nvidia.com> In-Reply-To: <20260318-rmcontrol-v2-0-9a9fa6f1c4c3@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.14.3 X-ClientProxiedBy: TYCP301CA0089.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:7b::11) 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_|MN0PR12MB5764:EE_ X-MS-Office365-Filtering-Correlation-Id: 5bf9296f-a3d4-4195-1461-08de84be14dd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|10070799003|366016|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: qMUhHw3Vg51yn7aXlhjS0PIpCAcBUH+pvWpmSiJ/UmcbhlI72+KXSE/dQcsejfX5VDtu3tOw/cPKxDTOqcSggDdFn3uD17Z18MTIMtcQqJEu5IkOh6rvL6TJcLzbqMTDhUPGs6L9+9rmX0idO1PXnCiNsl23mx0UAb/Cgug2aLes7eQvZ70udXpZf7DePWKalKySXyy22iHfqKcnpPVqS/N6llNQDyxpCtQUaWvnHgkMYZkky5E01hRnJ4ar1vaoOTcoES+w1sIYK7LqxyMY22qxO1FzgczpYgmtF1nTpPl4sd0DQuMhvvbXm+tba+0Q8TFyA+gXQ2+Gbxwq2mZWHXNRQsa5ttSFb8LKMRhUCEkLxH5kQcJLtEl5gDEv4JsdK2Q3A+miwHxV29QdiFKsfbfYbI9jTF1dCaRCcGCOJdeZIkmsEkp+s07EqJt5T4KPPZd8J0X9RCCEJcJxLJGmXiLsnHGj10UYurmvwQPbimLbUhNm+mO4qC3XGWg8Np7eoy3ij65P3JacEdxsE2YvqBwNsJO+Cxi3ut1UAbKh9BIabtG6DbNH5KmBbvKXuy33s2QaDUKemGGRb+rc5nJXOiCFiuwais/tfMAd1xyKe0gxGuuVBqig7mFuEqvheEddHl81FqWaj6jLl1qcACoBJKuQ67A/LvdaF4I4VzTi/lIpET7NflzUzYghNzqkEcqP6pSSBx1LgA4rzSr1kPt/uf8gEErsXGQzGRv6dLlgJNc= 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)(376014)(10070799003)(366016)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YTQ1L0Y4VHZyYlpQazk2bWpsUlg1M2c3ZmpuUTVYVnJlT0pUei92ckxneTFJ?= =?utf-8?B?QlRGTHRwb1h0YTlmeE1uNWFpYjY3UVBmZUY4WkFrU3BUQlEwbTl6dThvNWlH?= =?utf-8?B?ZHVBanBJa0s1M0szN2FWQk5MRE9pS2FDUWUrSERsbmN2emV1THF2a2Y3b0VE?= =?utf-8?B?TE01SnBrV3N4V3BKbG5DV1dHTnhGSCs4T3gyY0hBREppdjhLU1ljMzVRdlpC?= =?utf-8?B?eVY2NkRKcnFNNGNZWFY0aGxxR3B4RDZFdGhGLzJ5S0ROVDV4TGl6QVRtd0pj?= =?utf-8?B?WlpOelpRRUpPWHFhWVU4Wlp5MHpnOGM3cHVWWWF3alBXb3ZmNFprdDRXTWxa?= =?utf-8?B?TDN5RXpiOFUydHBUYUd5d1ZZMVAwSzhNcjVlOGRyVVFiWEZkclZNbEpYbytu?= =?utf-8?B?Vk1OM2dlRXRwQnJnUlZPb0dubVZ1Yy9NbWM4eFJaU3BsV254NG5SSG94cVRZ?= =?utf-8?B?VmZuZ3AwM1pmSTliNkJud3drYWxCbW0yUWJ4SC9CMDNBS0V0QU13Y1ZVdlFy?= =?utf-8?B?VGVvQW0rcEtTdURiZDVoV0ZDZU40a3N5YldxMm9aeEJ0N01xelZROXExaDdS?= =?utf-8?B?RmUvQ0wybHdPVHJiRksxWE5zRDhtdENKcURrR0g3TUZWaXhRUHhzVG1kaVJ1?= =?utf-8?B?RFVreS9DM3k1eDcxUEpMVFRpNlowK2xZSEFyaTFBbDlYNVZ2dUZlQldxczdW?= =?utf-8?B?Q21yb0l0OThKTm91SlZ0bzlScGdmSlRkaUdhZWhtMng5MSt1TG5Vck8vZXFZ?= =?utf-8?B?SWpMc2NYZXdtaGdjQzFZVURDL2RNeDZMT2lkUFhPVEd6cHRWc1pHZHBGUzdV?= =?utf-8?B?VHFrWnQwdTBnWCtoRzRvWnV0U1ZKa1FmcTRJL2RCSERqMjBydFBaMHZjQi9t?= =?utf-8?B?UkMvSUZSY3ZVSmRmSC9Hc3NWanJpWWh4MHI4UURObmxjNW1oeFFVN3JPSDJt?= =?utf-8?B?NWp6WlNsMGRYN1JuL1NhanJLRjZoc21TRUNiaGV5aksxM2JaWDd5TEJWZE5w?= =?utf-8?B?a3lDZy9nL0xSUlVra1hPTFdPZ3dvbjdIN0pSaHZxSFRvckNueHJ6c3c5Tkkr?= =?utf-8?B?cjhrTDJsbnBDMzU3b2pMSEoxbTFpY2VIRHo5RkZ0NDRhVWJlVFJOby9oeDFZ?= =?utf-8?B?anB6NHQxN1RITVVyRVZiVExWMzBUNUYrK0Y4S25rVTVPT3ZhM3pucEtzWTEx?= =?utf-8?B?YU5YeGxjNXlUa25XdzFpQzVuVFlKK1FDZ2Z4dTR6Y0xKMktBVEd0bUZ6Nllq?= =?utf-8?B?ZldQb1JUamdQYW1yT1lYbE1aT3hUQ1ZwU0dlTWtueGo4R3ZzdTFDY0ZGQzZG?= =?utf-8?B?eEh4K05XQmlSTDJ5bjArajRPWFJlbERIMVgrOUFGd0ZhRVdSSnlicGtncWhn?= =?utf-8?B?bDZ6U0RSMHg1amVOMDNNd28wcVBIbERZNFJMSjNlaWMzZVBKVVdFYnVGYmR4?= =?utf-8?B?OFpPeWlUQmY4TzVlaFg5Q3d4RjFPcXU4L3g0LzZkbE0zMUJsNFRWWXFnTXht?= =?utf-8?B?dlYwUms1WCtnNnhLK2VkM1lkRGdsbHI2czhKMTZRSkdEVWg0bXNSUm9Bd1Mr?= =?utf-8?B?dkgvaXQwQmVOdEhncnNSN21nVXlRRjM4ZjNva3I5NW9TMUc0OHltakJNdDBR?= =?utf-8?B?bndnbkVvUW51dGc2MnpHUVRYZTZJYTB5RDVUeXg3SkNpbzZjTVlEMEdwVi9y?= =?utf-8?B?MGl0UXFpanM2ZUFhOWVReVVaVitESmwwMEEyMDJSSHB1S1FCRlFxVFNxeVIy?= =?utf-8?B?QjQ4Znl2M0JyZWRXK3FRNGpHZG1XNThvZUw4ZFNGRnFVdlpIeGdYTThZMWRx?= =?utf-8?B?VHZxd0RLNXRCWHFXRUhualhWMEhQV3VGNDlTVmNxUGJwZHdGVU1OSWNrN1NM?= =?utf-8?B?eGFqRS83d2d2elFVME5CRERFbE1hOFhvNGkyaE1FbHcrdENqdEdwWnVXVVM5?= =?utf-8?B?QWFjTUJMdC8xTHJ2clJ3TTNVYi9keEtlMC9yZmdxU0JhdEtJYVIxZmVrSGFr?= =?utf-8?B?dW1QTWl6eDhMR285cTN0UnBzOFRWck9sVk5XVlh2YjJrTWNpWkNLSnJpRC92?= =?utf-8?B?eE50MC9Nb3c1ZkIra0xaa3M0TnRpaCs3SkM0QnZoRlBxTE1vRGVzRGpocW5n?= =?utf-8?B?ZFpTdnBsODNnOTFHWXVjdzd2QmJZelpCd2tad0l5M0RxMDdrM0l6RUJ4TWVV?= =?utf-8?B?YXlwQk5abmgwbW0wemFKd2pWM0Y2N2Noc0VxYm9ETDQzZEo5M21DT3FQb01R?= =?utf-8?B?bVNsM05UVHFjaEpYNktKT0M1TlVURDA4dTBxWHNwVDNFVjYxN1BzN0Jia3d3?= =?utf-8?B?STdaNHdIM0Vidk4yYzA5OTY3NkIvdTRxZStEUEU4RFl1VnZPYTEvT1ZoOGFR?= =?utf-8?Q?meTfDHI2U40BJ+ZdFsH4ltbIWpaEtG8gOz0K127dC0N6B?= X-MS-Exchange-AntiSpam-MessageData-1: BN2tMj64vJVCaA== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5bf9296f-a3d4-4195-1461-08de84be14dd X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2026 07:15:06.4358 (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: SDMlJeJioNk+/DPrOPNpvyEVPoPK6LeZmlUj77s8JeqKBCCxzaoktJyuYxmaARGMmJx1KB31/cx0bhateAFLTg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB5764 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 `send_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 Mon Apr 6 19:37:48 2026 Received: from PH7PR06CU001.outbound.protection.outlook.com (mail-westus3azon11010005.outbound.protection.outlook.com [52.101.201.5]) (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 BBF9533D6D2; Wed, 18 Mar 2026 07:15:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.201.5 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773818132; cv=fail; b=p1OEHMVyOCgPSJFOqobRQi/Uw6E7cPqRO65bkgTIwOdfPdAak3/5n0+cEMnpb2tGYBrfiLGdVnWmyBfBanX4UVdC9yWhlq4RQsVz9sL9N+OaZ69UdSFil3Npk32VG7yDWa5aJSdyMhiN8uoI1X32UAdzhbzlz4kSx5pa2psGeME= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773818132; c=relaxed/simple; bh=hU33U8Q9C/oHM+Y30j9xus/30XKXQB2plM9bBMofTvM=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=TrKwE47Zx2S0HU8Lw8uleM1iLsTpLpViDmgC6BePLQqQDg9JNoAQB8/4E2pxZ8zOZHNbSr2F7xxzPFygdGIcirp0CuV5KjkSJMnT0lpQ9/a6r6lZMHR0Jx1ACsffdH0gdznX1sZ68sOAko4Y8nEwhkOcPdrXgiu4zfCG2VM8PTM= 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=eEfHDe84; arc=fail smtp.client-ip=52.101.201.5 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="eEfHDe84" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=l9LyOK9ZWX8osE3FCD8e8tYzovcal2bWFHCO2fgIvao+x+XFfJEUYLUlFo07gfEwbm2lascvGaZPvoZLARM8IJvc9AEj1LW5WNOBJDQbkdUYQjE3RfQ4xqqPdYKtx6H+NrOWSNHg3n7Jys0GP58A9cHz8wGQgF4EShHEA6A1r9Bdv5/spbaTIWuT40I49uS5WWFrSqm9MIJ9h+5u5hLk/SHwvm4aBEuCuoAmc2fNl7+UVpKBdBtA3AGj2NTnpPVLVNjcF688e0wdaMjauJlSNHaB+WRCko9mUz2JKF6AIEaKRir34qr35f8CfBFVFw8mvTdUkdHSRjDjtULN12ptNA== 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=KfnlYRV2MNGJXBUPbdMkjFwkVzVAHCM28pA4IuEmCtc=; b=aCQzvW2+xA3x1XNiBQvHWbUPc4Axfl58QtSQOkn/v25Ouju/fHhKgNJ3Zc1TLUyxoKcJFeUGQfjpY3l+URFIAe7xHyPUwSkfRqevDnxOXZOkR7vbhyQenI5FYgJW0ADlxv9RYupgiCcrB3yCbPBg060SKe0TZu84JrQtyrb8EY7odOPk9ul1l5Zb915xDrTKcZ7SYgaJfS7cNKOX4ztr/5K/AGHtr5DjDi9ZoQlN2l1ezGPM0sxbkMwDIttlzN2YnxRCVvwKDYPQ4MwfVeN8mwgYlz3PFcCFFLvJbBonQDWzNn4N7IhGKtu0OI/3hXGLYGQcQ9oUJgVWOfiReCnHtA== 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=KfnlYRV2MNGJXBUPbdMkjFwkVzVAHCM28pA4IuEmCtc=; b=eEfHDe84UY6T4L5oe6WR0lXdITtia8aCY8Xat2Oay1rwwnezY5Yymhnvy5cOQO2LS8y4F7iO2lyqZGsMq+ClPX98EyLpAG3zIOSAXCncgqYxaKZxdogg7uPvZaP8i5x4DRsS/iu2+93/TtWnGdowLajFpQTKlO2dNUyW8F+aHUDeh8OZDSpHf4RjmS7lUBNG2pxXrDYVfhiLZ+hdXMOn4/wZKqDiYFQQGgb3fOrfUcBpaeN5tqiHIVg0po9ue987CgPCKkTt84t9rvZ0QfMmuG8FcdtrNiFq2dyM8sm70n5zlHjhw4vK///gfy1f1D1AlTZmwo2BpacNkMQchIIy+A== 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 MN0PR12MB5764.namprd12.prod.outlook.com (2603:10b6:208:377::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.16; Wed, 18 Mar 2026 07:15: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.9723.016; Wed, 18 Mar 2026 07:15:11 +0000 From: Eliot Courtney Date: Wed, 18 Mar 2026 16:14:05 +0900 Subject: [PATCH v2 9/9] gpu: nova-core: gsp: add CeGetFaultMethodBufferSize RM control command Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260318-rmcontrol-v2-9-9a9fa6f1c4c3@nvidia.com> References: <20260318-rmcontrol-v2-0-9a9fa6f1c4c3@nvidia.com> In-Reply-To: <20260318-rmcontrol-v2-0-9a9fa6f1c4c3@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.14.3 X-ClientProxiedBy: TYCP286CA0120.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:29c::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_|MN0PR12MB5764:EE_ X-MS-Office365-Filtering-Correlation-Id: ad808aa3-1882-4567-20e6-08de84be1796 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|10070799003|366016|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: d519paX0o1XQWIvU5cMvnPipsoMEYRZB0EshOso11MbfQbTvo3S6aD9QKt1q+wTXoCxyvssxOJMHcfaXgu5rVzjVNAmp+RcJ1HWj9g8xa5xbkyekQvZaoh2LcV//IHTENUjCbNbgAVikn8qLgJ3D3i2VqbJFncU961f2+DriLxDK+IRnfHG+XpigZfz4/7WRZ3guB5Ua+Q/85r5DktESri7DPBWWvy8BLRvIx+F2H/kO6XxTHTXE3Rs0weflwHNycZhy3Eu/mzW+vnnQo3GKB0e0hKXZnval8RPSZix29IbIsg7UsnMwXWd4gXxnrjf7nfcZNmZP5PK6BAux4g81gqL/VTiwQujB6Lr2nqbQVNEUAyhjTB/A9W7+O3EHU6ymAeZrtuv8Ny+yc9+bAcPbMcmPabAauqkxUBcCuk7SEBOfoLt6fjxyCkY3Ecdzql8zFKm0aQA1YpwqfwmFpzbTnOYuLeGclhwhKQrzRmAFIYa1z3hcSFaPTugguEgm6ayCPFaNiq1sxGDcJa66+4qe1k3ivJjnz4eIwKIccFck9Smdq4eF8OQuvWbKOPOWmbXesaCAYMkQw74G8PVLeyusXiN3jiILRiLTJWySwLgCxzLOyfE4zYcCiI+7TFBhvfXkTD5OOh1xsyZYCdQdqfXK2ETvSBzXr4b/kymmWAILuiwb18b3YXSp+eA+c93qHh/mxf34Tt97nq9atI0ZNZBMUzaur0lxlsSVDQ59aKCNric= 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)(376014)(10070799003)(366016)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OStaRnFEWUVBV01UdUNyaHlrckxOS054U1RRUk9Nb1EydVIwUjdCL1RuUmdj?= =?utf-8?B?cHA3RTZyMWk0eFo1TExuN1RWUGlTVE1rSmNRUlM3K0oxUFZuOVg1TFFobERp?= =?utf-8?B?K2gzV2JGKzF6SHE2R3RyNDVZQjVoRXdURU5kdGZJNmIxck03NG83eE9Wc0lr?= =?utf-8?B?dU83WUxjL20rUDlsRmdJUm01Z2xvQ2prbUFSbFplKytDOElhQ0VWSE1Femwv?= =?utf-8?B?d1FDMCtQdmZ4VDNmcE1GZWwrb0tiYm1JTkg0ZFlybWJjMjdVWGJzM1d0b1dX?= =?utf-8?B?UjZ2SzZyS0VBajRodFFWdzNMeTJpZmFhVENEeDZvR1ArZUt2anJJMTlVa0dz?= =?utf-8?B?TnUwcWFwWFBCU3A1YmdNa01wVG1zMGtFQjJWcWFaS3UrQW1pYmkvdm80TnJo?= =?utf-8?B?bHhNY2dURm5idnJkSk83OVNYWDExQ2ZTTzludjlpNk5tZitqTktJeWc1VXlC?= =?utf-8?B?YTAzMDdMTmh2eFNGNzV4UlA4YjFOSXpxMGlZRlVuaHp5NG5KcnhNQ2V5TE9p?= =?utf-8?B?U012N1U1OW1FODIzc1d2cjk1VmRmWkpnOUJYbXZJMGlaMXczNmxlRXJ5ZEVV?= =?utf-8?B?eU45emhNbEJaR2dzZjcvYno0LzJRb2Z1QTMzZVhRSndLY3lLQjJUVlhyY2ZB?= =?utf-8?B?YnZrVjYyOVdzQjFFcjdkaXBKUVU0bG1aOVVya0Yzc2hVTFlGeFJLU0JaUElp?= =?utf-8?B?SWJqai9Pc2E4K2lOdEtrVVUxRmI3bDJ1SGhlZ2ZucmR2RGFJOFkxMkNzSHRH?= =?utf-8?B?enkyTXZONURMaDZZYzZwdW9nKzNNSDNHNnhXVGxEU3A3RU5CZURyU1Y4RmYy?= =?utf-8?B?VnRzVktzUXM5OHppWnlLem9VSUlpMXFNNERtcDBJSDNvdEhlMnlVdVp0cVBv?= =?utf-8?B?QndOQk1iNWI0UXhaaEd1OGJEdEt1M21nRW9tT0dIVGRCQ2FlZzR5UWIxaTlF?= =?utf-8?B?cDZKS0R2bGhYVjN5cmxBeDNILzhENkN2MVd3U0lFeVQwUUUxbTBIY0p5Q3RH?= =?utf-8?B?UWJ4a1BzbGlNVElHVGltM0lBN0w4aDhSeTJxUGtpQ2EwS3FDMUpNdXRVdWNV?= =?utf-8?B?SnBkQTl4cmZ1a1FMMW1pSzA5NldBOHBMVElBU2JzM3VMZ3FYNjhJRklhM2sz?= =?utf-8?B?SWxmVnhGRHNNM2dxekplYWh5NWs5bVhGMnRJczhBalRDaDBjUENaUlQ5U3pD?= =?utf-8?B?TGpBVFNMUk5hMW1mWGhlVzNaT1JCRy9OSCtFd212RTlPYlVkSzI5YUExWXFK?= =?utf-8?B?NjJ6RDVjV0RKVzgyR0kveFBla3duaXRQMVFYeloyRUoya2VVYm03a3Exc2NI?= =?utf-8?B?eWU4UFMyWUhWL1JlMnhjeE1rVFFDZnRBOURWU2dGclhGV3JkQjFwMERCWkkx?= =?utf-8?B?MkZaRmN3UklUNmIrOGJCTzNxdEpHUklILzhDN2JNcjE4TnJCeHhRQzNCZ24v?= =?utf-8?B?UFhpTWk4Z0pidXR6KzB4Y08yTVRXS01ETXRqNXFMc3ZZRHAwR1YrUGVOQ2N1?= =?utf-8?B?dFkrTWxVM2RXZEc5VFFHOVhmMjhzZkthU3Z5dm1lSndadFBSNmgzZk1hQ2xU?= =?utf-8?B?cTFDY3lDOStOaDdqanQ0Y2MxTFV0WGRQUzdrMlo0VFNPWlhmSnMvMlNFVmow?= =?utf-8?B?Y0VKQzhBamtaN3M2OVpxZFBYUmdjMlUxYzlraGpBcUE3dmFzL3hzNVVzUDNK?= =?utf-8?B?dDl2MU0vZUhIOTIwNVE3VHd3dFpNRzRNcHNpZHg4REs3WlVaeFlBYUVKc0hF?= =?utf-8?B?RzBtWTgyUXErbUUySENHYlZXaFg3K2xpWGozNU5VbERQUW9sTnM1aUU5YU9W?= =?utf-8?B?WStrc2NmcmxtcWlFVzVHME1WV0RJaVNWV3pPR1VtTkw4VUNRN3Ezd3ZVM2Fy?= =?utf-8?B?cFV6ekRqNmdPOVZ6VFdMZ3lXanRRUVdpaXRyZjVucFNrTnNKZTVheDgzTTNW?= =?utf-8?B?aDlqcnI4VHFLYXVBSDREaXR2M0twVXJ6aUNmbERWYktYR3F1TjVIQis2TklV?= =?utf-8?B?Nnp2enlIdW8zZFhUOG1vT0V6RHRxQVZud0dJc0N2dXJpSVpRSzR0akhUVFgw?= =?utf-8?B?WjE2VnYrZkZjdkZMQ3poNEs3ck00b2Z6OSt3T1pSUVBVLzJCVU1TWkx0ZWlX?= =?utf-8?B?dFEvOWU4M3lWU1k2VER5TFYyOEFRdlBoM1RHekZESkJWZWlWeURQd2VzZXp3?= =?utf-8?B?aTN0UzFLSmhhUEtwUHlhY0xjSmlJeFlOdms0UDU3MnFiUmJwTXI1MUFqQmpm?= =?utf-8?B?NkNVRmsxb0wyb1IwVGVKVUg5ZjlDYTVXR0dDSk40b0RzbnBvZURRaWVzdjh4?= =?utf-8?B?bkF5RUZyZzFmdnNJeWNKRE1ZdGVjYXczSVVBT3ZTdUh5alR4dzRidU5oV1NO?= =?utf-8?Q?2sfoMgTyfkZG6yolTnPnFU+6SAhBOuR1lsrNDnIzMTN5g?= X-MS-Exchange-AntiSpam-MessageData-1: yCoGtLDOasfswg== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: ad808aa3-1882-4567-20e6-08de84be1796 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2026 07:15:11.0967 (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: RwEf3ztkUGomjpGJNikxfuj5G4YVkkBTf65IlaZPDJL5X3e+huxG017NRD1DXloP/0qA36YUlRu6A3DcbkksRg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB5764 Add `CeGetFaultMethodBufferSizeParams` which wraps the bindings. Add `get_ce_fault_method_buffer_size` which sends the RM control RPC and returns the buffer size. This is needed for channel allocation. Reviewed-by: Joel Fernandes Signed-off-by: Eliot Courtney --- drivers/gpu/nova-core/gsp/fw/rm.rs | 16 +++++++++++++ drivers/gpu/nova-core/gsp/rm/commands.rs | 39 ++++++++++++++++++++++++++++= ---- 2 files changed, 50 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/nova-core/gsp/fw/rm.rs b/drivers/gpu/nova-core/gsp= /fw/rm.rs index 1c6e8b4c4865..561f358ec4f1 100644 --- a/drivers/gpu/nova-core/gsp/fw/rm.rs +++ b/drivers/gpu/nova-core/gsp/fw/rm.rs @@ -85,3 +85,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) -> u32 { + 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 5a3ac7bd415a..05a8cfae385c 100644 --- a/drivers/gpu/nova-core/gsp/rm/commands.rs +++ b/drivers/gpu/nova-core/gsp/rm/commands.rs @@ -2,10 +2,14 @@ =20 use core::{ array, - convert::Infallible, // + convert::Infallible, + mem::size_of, // }; =20 -use kernel::prelude::*; +use kernel::{ + prelude::*, + transmute::FromBytes, // +}; =20 use crate::{ driver::Bar0, @@ -17,7 +21,8 @@ }, commands::{ Client, - Handle, // + Handle, + Subdevice, // }, fw::{ rm::*, @@ -47,7 +52,6 @@ struct RmControl<'a, T> { =20 impl<'a, T> RmControl<'a, T> { /// Creates a new RM control command. - #[expect(dead_code)] fn new( client: Handle, object: Handle, @@ -108,7 +112,6 @@ fn read( } =20 /// Sends an RM control command, checks the reply status, and returns the = raw parameter bytes. -#[expect(dead_code)] fn send_rm_control(cmdq: &Cmdq, bar: &Bar0, cmd: RmControl<'_, T>) -> R= esult> { let reply =3D cmdq.send_command(bar, cmd)?; =20 @@ -116,3 +119,29 @@ fn send_rm_control(cmdq: &Cmdq, bar: &Bar0, cmd: Rm= Control<'_, T>) -> Result< =20 Ok(reply.params) } + +/// Sends the `CeGetFaultMethodBufferSize` RM control command and waits fo= r its reply. +/// +/// Returns the CE fault method buffer size in bytes. +#[expect(dead_code)] +pub(crate) fn get_ce_fault_method_buffer_size( + cmdq: &Cmdq, + bar: &Bar0, + client: Handle, + subdevice: Handle, +) -> Result { + // Stack-allocate the request; CeGetFaultMethodBufferSizeParams is sma= ll (4 bytes). + let req =3D [0u8; size_of::()]; + + let cmd =3D RmControl::new( + client, + subdevice, + RmControlMsgFunction::CeGetFaultMethodBufferSize, + &req, + ); + let reply =3D send_rm_control(cmdq, bar, cmd)?; + + let params =3D CeGetFaultMethodBufferSizeParams::from_bytes(&reply).ok= _or(EINVAL)?; + + Ok(params.size()) +} --=20 2.53.0