From nobody Sun Apr 5 16:27:59 2026 Received: from MW6PR02CU001.outbound.protection.outlook.com (mail-westus2azon11012054.outbound.protection.outlook.com [52.101.48.54]) (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 BB729332EC4; Thu, 19 Feb 2026 07:32:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.48.54 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771486340; cv=fail; b=D5Or1wCnNV92A3HPS4Ogw9sk2u8DAgjFUM7aJxk8zyDJT3ILKBFM9Kpbr6UknO8uh4ku9MjQmMnoosn8TuK02FI83fPLJ6J/c2lMF/CF/7IhHybAJQJb5nu8GdHVcXebZXeau7JzWO8PojuuvTQvod0ac/6rTGVwWGoWtdFxGO8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771486340; c=relaxed/simple; bh=bWq6jlLTzWIUjNfb5BMMPLLphgsG89wZ9F7pZUTIwf0=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=f2kcRfqQUdywfMAgWV+x+wiOAM5G5PkQp36v4UCgtkNgdEA/R9EOfzPiHGROeCNp9i1PRQ3mt/xVyr+sY6q0AxKZ1ime1VpW+S3c6UMQVh8dcIjEEEdyAnA6ioXv5cSm/qJAeulwdI3RstwWh21B7oR5Fc4j3zUmk+NXudPVcsQ= 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=IR5hijts; arc=fail smtp.client-ip=52.101.48.54 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="IR5hijts" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MFmsN4SDFwlctZUEPP3EHGQ6q/QoldLmaT7OZ7q+v+dwvJfJHWv9Ecsp6aL7vW0XUF786UNAe8AOZ0ybVV40Ozp3pwq1mGbimR7ekTCBbby6g0jq3w2/UlSfjyGqZItjnJCWouCnVRaku3mcbqXMTXhIuYkjqb1pvAJRNpgpYVCNlfcMlpBBKl+gOLMzLPTPiP1u6dR7kyosPr1kVgSj8qsOvmNJFeVct2k+lWTojkMaT1uI6h+mM1KuVpwWCBWaR6UQG97JES6X+qq4g6GnL3nj1hCjhRLBiYHrJnRq328BZW3A96ou1yTEEUiciPivTZhL6yiUHb6aqqfNVhR6qA== 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=2r9mfsQkvEOZSm9B6UApD4RQcJZeFBme2wIUp3EktFs=; b=uDLqJ/8BdL1WhtmND1gKHz2gOqCiMCP8PaS8plrQ4qo4Uw+fqj5kaxYKlYfk+pFAg7r9cvTMYAAIPgJUQwyn0TsR19HeZeJu9oT1vaExWiiuhaCuHpJP+FWoVWx8+Z/wwSd2uAgOPyI/BMpBRnGlHcSQZGEmlXIGj3QlNo53Q+6ZHZY4bOymmaBCX+QtVZo1qDZjVs/jBVMoR2Qz3DHBPePsGRkD/SQ7H1xHo3xeLwdKBNXZ+dk+uj814ZC+YOB2hzCFz4/brmo7JzMbWYJyOgQJuH4465Uo6KjBtCwv7u1VB8JBTGeFUTrCsEnQ8iMllthIKS4k89H1nNryg7AYTQ== 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=2r9mfsQkvEOZSm9B6UApD4RQcJZeFBme2wIUp3EktFs=; b=IR5hijtssE7WGt+/An0X9CtjA988ub+rbn3WtmfpEO78XXUu2w267cyPRBa7ktnPNp7N/sKv4PRughTo1LSNomF7+s/tE5HQ9tmtjw0CIByBNbzsjfgZA2ci92/lIKtVInjrG+cfkb2jm7uh9FDOAhZwA+cxd9VWTHMLllPBerWqxNed2Er/xiV1HkXe5L2MmujoelhOB5yifGogCpQ5ZO4FK+TVQB7fGgPz6c9A6xNgkEpGzu5IbUISUT16m8/bJpxEBM88TyGJK6IwbNBg7yfWI2TDmlyALkrgXInL3mYnG6u54WtIToY8FyA+G8APK+hbu/Cfy/7gaTgH3NQIjA== 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 SJ2PR12MB7990.namprd12.prod.outlook.com (2603:10b6:a03:4c3::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Thu, 19 Feb 2026 07:32:15 +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.9632.010; Thu, 19 Feb 2026 07:32:15 +0000 From: Eliot Courtney Date: Thu, 19 Feb 2026 16:30:50 +0900 Subject: [PATCH v2 1/9] gpu: nova-core: gsp: sort MsgFunction variants alphabetically Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260219-cmdq-continuation-v2-1-2e8b7615536f@nvidia.com> References: <20260219-cmdq-continuation-v2-0-2e8b7615536f@nvidia.com> In-Reply-To: <20260219-cmdq-continuation-v2-0-2e8b7615536f@nvidia.com> To: Danilo Krummrich , Alice Ryhl , Alexandre Courbot , David Airlie , Simona Vetter , Miguel Ojeda , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Trevor Gross Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, Eliot Courtney X-Mailer: b4 0.14.3 X-ClientProxiedBy: TY4P286CA0122.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:37c::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_|SJ2PR12MB7990:EE_ X-MS-Office365-Filtering-Correlation-Id: f7435132-d485-400d-d340-08de6f890123 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|10070799003|1800799024|376014|366016|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?ME9wZFBhUjBPQ3BwTGx6VXZxYmwrdlVpYllMY2hKU3JnSFNCNHlQTmtVRHQ3?= =?utf-8?B?SW04cmhBb3pKOThGWm9wSExPSjFPMlpqKzBwL0cxNDJ5dm54bUxpZkRCUUZa?= =?utf-8?B?anZIRVRGM0Q0WkVyWTduaElnNnZBNTY4bWpBcmxhdGpDYWxteHVLcFN3WVRh?= =?utf-8?B?blV2UEw3QjRNRzB2Ulk5RmdtOVlSa1RYdlhEMnFNUHdvdlVNTXVJZkwwQjlJ?= =?utf-8?B?NytOdjlxN3I1cG9lbzE0SytESEp0bU9qL3QwWDRHSHYxV3lsZjcwZHFhNTNw?= =?utf-8?B?WGxwYkVhME1qSUM1UW1pQ1VwcmF4Qk1JR3JKbGg2clBWZHBkTHNVanhON3g1?= =?utf-8?B?L3JuK2dtbFpHSC9FY3YzcXcxK3gyMVhXK3pjZ1oxdno0WjVGVGhaT2txNnE2?= =?utf-8?B?cGNxZ1BISm1icG12MElBZVVXOTd0ckFPOXFBU2Y2MUZ5OFlqSDIwUm9EUVo5?= =?utf-8?B?QUJ2TmV2RXVsK2lnUDc3OStyM1dHQlMyUGFjZThmcnlmU3ZtcDRmSDBNeklQ?= =?utf-8?B?OUJKNGJ6elFYQ0tBOEdiNDB0WldzQy9kMi8ydUtmcVpqaVZEUXBJaHNHKzJY?= =?utf-8?B?aFhPdHpiQm1PcFpxMnpKQzAvekdJWEt1b0h0NHc4VlhzbHYzckIwcjB0cDN2?= =?utf-8?B?YUZoWElwVzJnUWZIUS9uMStwUTc5empPZVRaWndldlZPMFJpVVFjVDNkbHBT?= =?utf-8?B?SHZKNjRXZ3NERTE5K1Fxc0t6LzZvUGsxMlpHR0lKMHFZeEZ5c0dNbC95dmt1?= =?utf-8?B?NXh5WUtXUUN0T1ZmU3dZazJOWGdlTU0ydVBJLzZ3dXpSc1JPTVdFeThjaW1Z?= =?utf-8?B?c09heUFuQW9CRlFLYW8xcmpFdFZhbkJFejA3VmNyVFlXaDY0Y2JxVlViU3hX?= =?utf-8?B?cldZRWhiK2xMRkkxU1U4d0gyOEJkS2dHZjRVRitONkkvcjRoa2pZNmQ0eXZu?= =?utf-8?B?Z2hJQUMrckpGTmt0OElFQjB6M2dORmh6dnJ1aFVWVTgzUDgrK09waTV0ZkJI?= =?utf-8?B?MnRueUVVeHpyWUdnQUlFMm4vNzNlWFY0K3owT043RElpMUNnQWtNaXA1blJk?= =?utf-8?B?NmlpWFlZazJOWjVMTmtVNkgvcXFLMDc0VmlRaGVLMXRmMHdqSHo4d1M0VGNs?= =?utf-8?B?UkdvemJ3TjlPeWlvSU5jY2ZpVTJZaXNtdktId1dJUFEwcXVqNlBhY1dNdUdV?= =?utf-8?B?T3JFbGNpTzRVcHp1TkJxRFNDUHZwVXlGdXNDdTFXUStVbUdiQlowT0l3RTJV?= =?utf-8?B?S0N0TzBGbkFibHdRK2NXREY2WGlDSmtvTVhFRG9pZUxmeFFrRll1bU9MOXA0?= =?utf-8?B?Y0Q5aFFIOUhNYkZ4NkdVVE13YzBSa0x3Myt6WkQ0Z1hFR3BXdnI5OUNkQWVa?= =?utf-8?B?Tm1tZXRiVmJRUXZVS3lwK3NIWm1ka3F5UTZpVjBWWVkrU0U5Q1NPZG4ybWw0?= =?utf-8?B?L1orSzI2MDdOeVkyUHk5MXc5REE0dGRkZGV5MTk2ZmdNVzhoclg3K1ZpbE9E?= =?utf-8?B?czJvN3RQT3FRb2tMaDNSenZoT29GMFhzUWNsZkRlaU5rbGVKMmxoY0YxTVNu?= =?utf-8?B?d3AvRXBVaFJMaE9WSVJTZVdoUy9tbW43NVROMGRmTXc4TDlGejlnMElmNDB2?= =?utf-8?B?VWZabnBMS0pUYWVrK3YwRllnV1E2MUd1OThTLzFCK2RxdzVGeE96SGUrNk5a?= =?utf-8?B?UHFaN1BobUhOby9iZDJqY2tHem9FdFRjdkxNUUh2eFAvU21OUWZodHdPRjZo?= =?utf-8?B?WndSQXpjSDF3MXVsK0IwSnVHTjZBM0hiVS93a2FaWFZ3bFZmcDhMZldid2Vi?= =?utf-8?B?WmdORFhTNEIwWHpNc0VWVGh4RjI5bDRuMC9Nc3EyaTRRSjhOS3Nlb3R4c0NF?= =?utf-8?B?UDJaOGg3QU56bGx1K2FMcHpGdUtvazVVVzZhRlBjTDhFbUNaTVdqVWNLNjJ6?= =?utf-8?B?bE5MUjB6Zm1QM3NiNTRhWmFjbzZRMVhUWmRiRGpaMXBCU0w0dC9hc0Z5M1c2?= =?utf-8?B?ZFVKTHJobVdUNVhMM0YxckhsZkpxNUJMbDRBWnlBTDR2dElnVGtkSjRMbkhP?= =?utf-8?B?WkdhbVArYTNPTis5NCtsNUYyQW42cW1qWmUvMkNLU2RaNHNnTXU1WkhBU2VI?= =?utf-8?B?ZXVFRTZ1V3hjc0JraXNPWjVJeHRpRms5WTRRWk81d0w3dDVpZVdjZ3JGVkt3?= =?utf-8?B?NHc9PQ==?= 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)(7416014)(10070799003)(1800799024)(376014)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OEhJQlhjYzNnNXBjT1dEUm96c3NkWGswaHNIZTlMWHcxL21MWEpwU1NQWXM0?= =?utf-8?B?ZXl4SFZhT0dpZ2tHY1hUNytVVTdyb1NQYnh2dmNkL3Mxbk9RWHpwdFNUSzIx?= =?utf-8?B?NllJbjdBN24yTlYvT1VPZDVVNGNrT1Njb25ISUtEYXNFRmdPbUJ5SXhtL2Ur?= =?utf-8?B?WjB5YjQ5OWxNa1Z3SGZqWGxvL0wyT3krZUxSM3JON0cyZTZ5WWpvMWVRS0w3?= =?utf-8?B?VGZNV1ZhL2w2UWpURnNoSExlc2JmR3I4cGQzSXlYanVaY3o4cGpoUHBZOCtU?= =?utf-8?B?TXpkVWlXRHNzRTNyTG1paGxkYlpOdTBGMWU5UEEwbFkzbm5OWDRndjZzNEww?= =?utf-8?B?R0YzRElxQ2IyNmJuY2NqQ1VIMWRyWENhdkFxdjZtUDJ5S0tZYVRWQ2ZCcmZT?= =?utf-8?B?YURSZTBQN25LM3FPNkY5K3dxajZRUGFKN0FxaXdOZklxWXgrSFJxQU5jMHF0?= =?utf-8?B?VkdVUXJGdEVUZk12TjlhTkxtaGJDSFMzQVd1anpSZ3E1Q0ovTm9mODg0VTZw?= =?utf-8?B?cnRPUW5kMEtBa01RWUo2Y1k4OFQwTXhZYmZFSDJiUDFjd0hkSlVoSnoxZ3Za?= =?utf-8?B?Y0VCUE1odEtIenVGS0RrV21IbmVFbGM0N1FQNTBoSzFTT20yNXVyVUZYbG1j?= =?utf-8?B?VzZqNC9Nd3lkUHlNNnVhZy9MM2Z2RklDTXZmdWZZWUt6WmJvd3I4UHFOVDRy?= =?utf-8?B?N2RrQUp4czEydW9wV2FiYUNiWjlldmx5NWozbUxqTStCVXdUSmdGOWtQWVhz?= =?utf-8?B?QnJDSTczOXlQUVdwZnN3NjFyL2ZlWWcyaW5jYXFYYUl4dEdxeWt1aUxHK0hu?= =?utf-8?B?K0FNN3JWTG81T0JnYVdvSXFGaUZGb0x4N0NrdWh0NmorTFB1SEVtUkV4ajVZ?= =?utf-8?B?L0lYNnVML3FGNUhJSHl5TERqOGZ3ZTN4VGI2WVBWeGtnczZBOHR2Nitxb3dL?= =?utf-8?B?VFR3WWxVVms0YmRTa2ZxMUdabHZ1V0VVOE5CWGtGOVhxbHdXTWxFTmkzOGYz?= =?utf-8?B?MUxXeHRmK3VtRks0Q2pkUCtNTlJJMy9yZ0Z3OG01cmpOcmhwcHVOS1JJWnla?= =?utf-8?B?V3QyVi9RbmlaeTBPaENIc2VQYi9HeldIUENsRmltVUVFV200amtrZkwycHBu?= =?utf-8?B?Uy9lMmFJUFQ4T3RQS095T3lGUVp6RjVnQkNXaFRwZGF2cGxIMDVaZEhKS0pX?= =?utf-8?B?ZWNCem1BYnpSTHRxZUpacGxESXhRQTg4cktFSEVsYWtIclRMSVpQem1Nb0ZG?= =?utf-8?B?WTFtOG9yMFp1WUM2MWJVMG1ub0Z1c1NXazZsNnBJdFBvRENoWmR0eTNWZVhE?= =?utf-8?B?ZjZiUlpvTjFDT01LdDdpMmVTWW5HWUNNVEkvZVE2eVc2YWNKNTN6bE9zTUlD?= =?utf-8?B?QmsrbVNJRFZ5TEoxZk1kd2xFZUYzaHBkQXMxZnprZUpHODl4YmM3NzdaZ1hK?= =?utf-8?B?NDdicFBTVjdXK3VRV0EvNkZHeUZ3bnRDZUphdDBJNnZFdjhBS0x1TTdRSFBU?= =?utf-8?B?NzFVWmNBOTJwenNwSHByS2xtWFoxeGpkaUE5S0RtY2ZaRXFIM2pVaGdJV0RY?= =?utf-8?B?VnRTeVBvbm52NSsveE1QVG0xWkt0U1BXZFArSmpxM3AwZVVESm1kcnpWNVhR?= =?utf-8?B?ekV2VUpkYWt5SkpMcG50ZHRrU3Eydm1kdWtFcHF4QjZhSkszMEdSYndKNXRB?= =?utf-8?B?M0lGbFZaQ2tlM1MrdTd1QXhRajlyb0N2ZXdnYjFiZS8wSnNySHZ4cEg4bHZk?= =?utf-8?B?NmFSNWNXSkJ2SXBTck96NnF4VFBsdE1zcDg2bXBNR1RVcTJDVGk0aUhka2x5?= =?utf-8?B?cjlBTDJXeVZoVGlHakRubGJzN0EyWVZGckNxZnlOQ08xRFNMeGxuc1czWmNS?= =?utf-8?B?TkhpUi9vNEFWZHMwb3R6cXZ3dXh6SUNibkpwOHNRRFhLdldJeUFwWnNMVzdP?= =?utf-8?B?OWsvdUI2TWdsdUQ0Vkt5MjJjOEgrZVFoaTJYM1YyRnlpRTBsSllpVWFlQXFo?= =?utf-8?B?cUdLWTR4S3g1QnlEKzVaZmdvZ0tXOVcwTlNpZmhucWlVSU1rT2NSelIzbXhG?= =?utf-8?B?TlpZa3FWZWZzTy85K1FQME4zNS9TVXQrR0RzcUluUlpleSt1MU9PTURNeXU4?= =?utf-8?B?WlNkd0FXMk9yQTFkZEFxS1R1ZzdHRkxWbi9FL3EwL1Jqd01lS05WbkRyd0xi?= =?utf-8?B?UHpWWUFjQUIzNTRLTkV5WkY2enpHUDc3WHdsUTMvSTNqaEJnenVyaXIzV2pD?= =?utf-8?B?RTU0WVVpU3JVanQxdTlKLzdRRC9jRWdheTFybTZoeFNmVDBhN2JxNlBmVGhw?= =?utf-8?B?NFNpM0hVUTFBTXhzWWdQVlZXS2UrdjUrand2K3UzZWNGR2Jic2RUcEpwNjVG?= =?utf-8?Q?ohLbbhLUyiMjv/CiK+FQOXupOQSuMJKb/i01zG6AKt89M?= X-MS-Exchange-AntiSpam-MessageData-1: p6QZZjhQcceW+A== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: f7435132-d485-400d-d340-08de6f890123 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Feb 2026 07:32:15.4743 (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: +HIEoiEiQx+CvD9cuwMhm7jVO+2YcktBdvbKQiDfT0g0LPQbswuRnbUoc0N1bTf+MXodPyxvH5nWOwg05gZTaw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB7990 There is no particular order required here and keeping them alphabetical will help preventing future mistakes. Signed-off-by: Eliot Courtney Tested-by: Zhi Wang --- drivers/gpu/nova-core/gsp/fw.rs | 97 +++++++++++++++++++++----------------= ---- 1 file changed, 50 insertions(+), 47 deletions(-) diff --git a/drivers/gpu/nova-core/gsp/fw.rs b/drivers/gpu/nova-core/gsp/fw= .rs index 83ff91614e36..5b96f5e622a4 100644 --- a/drivers/gpu/nova-core/gsp/fw.rs +++ b/drivers/gpu/nova-core/gsp/fw.rs @@ -192,34 +192,34 @@ pub(crate) fn new(gsp_firmware: &GspFirmware, fb_layo= ut: &FbLayout) -> Self { #[repr(u32)] pub(crate) enum MsgFunction { // Common function codes - Nop =3D bindings::NV_VGPU_MSG_FUNCTION_NOP, - SetGuestSystemInfo =3D bindings::NV_VGPU_MSG_FUNCTION_SET_GUEST_SYSTEM= _INFO, - AllocRoot =3D bindings::NV_VGPU_MSG_FUNCTION_ALLOC_ROOT, + AllocChannelDma =3D bindings::NV_VGPU_MSG_FUNCTION_ALLOC_CHANNEL_DMA, + AllocCtxDma =3D bindings::NV_VGPU_MSG_FUNCTION_ALLOC_CTX_DMA, AllocDevice =3D bindings::NV_VGPU_MSG_FUNCTION_ALLOC_DEVICE, AllocMemory =3D bindings::NV_VGPU_MSG_FUNCTION_ALLOC_MEMORY, - AllocCtxDma =3D bindings::NV_VGPU_MSG_FUNCTION_ALLOC_CTX_DMA, - AllocChannelDma =3D bindings::NV_VGPU_MSG_FUNCTION_ALLOC_CHANNEL_DMA, - MapMemory =3D bindings::NV_VGPU_MSG_FUNCTION_MAP_MEMORY, - BindCtxDma =3D bindings::NV_VGPU_MSG_FUNCTION_BIND_CTX_DMA, AllocObject =3D bindings::NV_VGPU_MSG_FUNCTION_ALLOC_OBJECT, + AllocRoot =3D bindings::NV_VGPU_MSG_FUNCTION_ALLOC_ROOT, + BindCtxDma =3D bindings::NV_VGPU_MSG_FUNCTION_BIND_CTX_DMA, Free =3D bindings::NV_VGPU_MSG_FUNCTION_FREE, - Log =3D bindings::NV_VGPU_MSG_FUNCTION_LOG, GetGspStaticInfo =3D bindings::NV_VGPU_MSG_FUNCTION_GET_GSP_STATIC_INF= O, - SetRegistry =3D bindings::NV_VGPU_MSG_FUNCTION_SET_REGISTRY, - GspSetSystemInfo =3D bindings::NV_VGPU_MSG_FUNCTION_GSP_SET_SYSTEM_INF= O, + GetStaticInfo =3D bindings::NV_VGPU_MSG_FUNCTION_GET_STATIC_INFO, GspInitPostObjGpu =3D bindings::NV_VGPU_MSG_FUNCTION_GSP_INIT_POST_OBJ= GPU, GspRmControl =3D bindings::NV_VGPU_MSG_FUNCTION_GSP_RM_CONTROL, - GetStaticInfo =3D bindings::NV_VGPU_MSG_FUNCTION_GET_STATIC_INFO, + GspSetSystemInfo =3D bindings::NV_VGPU_MSG_FUNCTION_GSP_SET_SYSTEM_INF= O, + Log =3D bindings::NV_VGPU_MSG_FUNCTION_LOG, + MapMemory =3D bindings::NV_VGPU_MSG_FUNCTION_MAP_MEMORY, + Nop =3D bindings::NV_VGPU_MSG_FUNCTION_NOP, + SetGuestSystemInfo =3D bindings::NV_VGPU_MSG_FUNCTION_SET_GUEST_SYSTEM= _INFO, + SetRegistry =3D bindings::NV_VGPU_MSG_FUNCTION_SET_REGISTRY, =20 // Event codes GspInitDone =3D bindings::NV_VGPU_MSG_EVENT_GSP_INIT_DONE, + GspLockdownNotice =3D bindings::NV_VGPU_MSG_EVENT_GSP_LOCKDOWN_NOTICE, + GspPostNoCat =3D bindings::NV_VGPU_MSG_EVENT_GSP_POST_NOCAT_RECORD, GspRunCpuSequencer =3D bindings::NV_VGPU_MSG_EVENT_GSP_RUN_CPU_SEQUENC= ER, - PostEvent =3D bindings::NV_VGPU_MSG_EVENT_POST_EVENT, - RcTriggered =3D bindings::NV_VGPU_MSG_EVENT_RC_TRIGGERED, MmuFaultQueued =3D bindings::NV_VGPU_MSG_EVENT_MMU_FAULT_QUEUED, OsErrorLog =3D bindings::NV_VGPU_MSG_EVENT_OS_ERROR_LOG, - GspPostNoCat =3D bindings::NV_VGPU_MSG_EVENT_GSP_POST_NOCAT_RECORD, - GspLockdownNotice =3D bindings::NV_VGPU_MSG_EVENT_GSP_LOCKDOWN_NOTICE, + PostEvent =3D bindings::NV_VGPU_MSG_EVENT_POST_EVENT, + RcTriggered =3D bindings::NV_VGPU_MSG_EVENT_RC_TRIGGERED, UcodeLibOsPrint =3D bindings::NV_VGPU_MSG_EVENT_UCODE_LIBOS_PRINT, } =20 @@ -227,34 +227,34 @@ impl fmt::Display for MsgFunction { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { // Common function codes - MsgFunction::Nop =3D> write!(f, "NOP"), - MsgFunction::SetGuestSystemInfo =3D> write!(f, "SET_GUEST_SYST= EM_INFO"), - MsgFunction::AllocRoot =3D> write!(f, "ALLOC_ROOT"), + MsgFunction::AllocChannelDma =3D> write!(f, "ALLOC_CHANNEL_DMA= "), + MsgFunction::AllocCtxDma =3D> write!(f, "ALLOC_CTX_DMA"), MsgFunction::AllocDevice =3D> write!(f, "ALLOC_DEVICE"), MsgFunction::AllocMemory =3D> write!(f, "ALLOC_MEMORY"), - MsgFunction::AllocCtxDma =3D> write!(f, "ALLOC_CTX_DMA"), - MsgFunction::AllocChannelDma =3D> write!(f, "ALLOC_CHANNEL_DMA= "), - MsgFunction::MapMemory =3D> write!(f, "MAP_MEMORY"), - MsgFunction::BindCtxDma =3D> write!(f, "BIND_CTX_DMA"), MsgFunction::AllocObject =3D> write!(f, "ALLOC_OBJECT"), + MsgFunction::AllocRoot =3D> write!(f, "ALLOC_ROOT"), + MsgFunction::BindCtxDma =3D> write!(f, "BIND_CTX_DMA"), MsgFunction::Free =3D> write!(f, "FREE"), - MsgFunction::Log =3D> write!(f, "LOG"), MsgFunction::GetGspStaticInfo =3D> write!(f, "GET_GSP_STATIC_I= NFO"), - MsgFunction::SetRegistry =3D> write!(f, "SET_REGISTRY"), - MsgFunction::GspSetSystemInfo =3D> write!(f, "GSP_SET_SYSTEM_I= NFO"), + MsgFunction::GetStaticInfo =3D> write!(f, "GET_STATIC_INFO"), MsgFunction::GspInitPostObjGpu =3D> write!(f, "GSP_INIT_POST_O= BJGPU"), MsgFunction::GspRmControl =3D> write!(f, "GSP_RM_CONTROL"), - MsgFunction::GetStaticInfo =3D> write!(f, "GET_STATIC_INFO"), + MsgFunction::GspSetSystemInfo =3D> write!(f, "GSP_SET_SYSTEM_I= NFO"), + MsgFunction::Log =3D> write!(f, "LOG"), + MsgFunction::MapMemory =3D> write!(f, "MAP_MEMORY"), + MsgFunction::Nop =3D> write!(f, "NOP"), + MsgFunction::SetGuestSystemInfo =3D> write!(f, "SET_GUEST_SYST= EM_INFO"), + MsgFunction::SetRegistry =3D> write!(f, "SET_REGISTRY"), =20 // Event codes MsgFunction::GspInitDone =3D> write!(f, "INIT_DONE"), + MsgFunction::GspLockdownNotice =3D> write!(f, "LOCKDOWN_NOTICE= "), + MsgFunction::GspPostNoCat =3D> write!(f, "NOCAT"), MsgFunction::GspRunCpuSequencer =3D> write!(f, "RUN_CPU_SEQUEN= CER"), - MsgFunction::PostEvent =3D> write!(f, "POST_EVENT"), - MsgFunction::RcTriggered =3D> write!(f, "RC_TRIGGERED"), MsgFunction::MmuFaultQueued =3D> write!(f, "MMU_FAULT_QUEUED"), MsgFunction::OsErrorLog =3D> write!(f, "OS_ERROR_LOG"), - MsgFunction::GspPostNoCat =3D> write!(f, "NOCAT"), - MsgFunction::GspLockdownNotice =3D> write!(f, "LOCKDOWN_NOTICE= "), + MsgFunction::PostEvent =3D> write!(f, "POST_EVENT"), + MsgFunction::RcTriggered =3D> write!(f, "RC_TRIGGERED"), MsgFunction::UcodeLibOsPrint =3D> write!(f, "LIBOS_PRINT"), } } @@ -265,38 +265,41 @@ impl TryFrom for MsgFunction { =20 fn try_from(value: u32) -> Result { match value { - bindings::NV_VGPU_MSG_FUNCTION_NOP =3D> Ok(MsgFunction::Nop), - bindings::NV_VGPU_MSG_FUNCTION_SET_GUEST_SYSTEM_INFO =3D> { - Ok(MsgFunction::SetGuestSystemInfo) - } - bindings::NV_VGPU_MSG_FUNCTION_ALLOC_ROOT =3D> Ok(MsgFunction:= :AllocRoot), + // Common function codes + bindings::NV_VGPU_MSG_FUNCTION_ALLOC_CHANNEL_DMA =3D> Ok(MsgFu= nction::AllocChannelDma), + bindings::NV_VGPU_MSG_FUNCTION_ALLOC_CTX_DMA =3D> Ok(MsgFuncti= on::AllocCtxDma), bindings::NV_VGPU_MSG_FUNCTION_ALLOC_DEVICE =3D> Ok(MsgFunctio= n::AllocDevice), bindings::NV_VGPU_MSG_FUNCTION_ALLOC_MEMORY =3D> Ok(MsgFunctio= n::AllocMemory), - bindings::NV_VGPU_MSG_FUNCTION_ALLOC_CTX_DMA =3D> Ok(MsgFuncti= on::AllocCtxDma), - bindings::NV_VGPU_MSG_FUNCTION_ALLOC_CHANNEL_DMA =3D> Ok(MsgFu= nction::AllocChannelDma), - bindings::NV_VGPU_MSG_FUNCTION_MAP_MEMORY =3D> Ok(MsgFunction:= :MapMemory), - bindings::NV_VGPU_MSG_FUNCTION_BIND_CTX_DMA =3D> Ok(MsgFunctio= n::BindCtxDma), bindings::NV_VGPU_MSG_FUNCTION_ALLOC_OBJECT =3D> Ok(MsgFunctio= n::AllocObject), + bindings::NV_VGPU_MSG_FUNCTION_ALLOC_ROOT =3D> Ok(MsgFunction:= :AllocRoot), + bindings::NV_VGPU_MSG_FUNCTION_BIND_CTX_DMA =3D> Ok(MsgFunctio= n::BindCtxDma), bindings::NV_VGPU_MSG_FUNCTION_FREE =3D> Ok(MsgFunction::Free), - bindings::NV_VGPU_MSG_FUNCTION_LOG =3D> Ok(MsgFunction::Log), bindings::NV_VGPU_MSG_FUNCTION_GET_GSP_STATIC_INFO =3D> Ok(Msg= Function::GetGspStaticInfo), - bindings::NV_VGPU_MSG_FUNCTION_SET_REGISTRY =3D> Ok(MsgFunctio= n::SetRegistry), - bindings::NV_VGPU_MSG_FUNCTION_GSP_SET_SYSTEM_INFO =3D> Ok(Msg= Function::GspSetSystemInfo), + bindings::NV_VGPU_MSG_FUNCTION_GET_STATIC_INFO =3D> Ok(MsgFunc= tion::GetStaticInfo), bindings::NV_VGPU_MSG_FUNCTION_GSP_INIT_POST_OBJGPU =3D> { Ok(MsgFunction::GspInitPostObjGpu) } bindings::NV_VGPU_MSG_FUNCTION_GSP_RM_CONTROL =3D> Ok(MsgFunct= ion::GspRmControl), - bindings::NV_VGPU_MSG_FUNCTION_GET_STATIC_INFO =3D> Ok(MsgFunc= tion::GetStaticInfo), + bindings::NV_VGPU_MSG_FUNCTION_GSP_SET_SYSTEM_INFO =3D> Ok(Msg= Function::GspSetSystemInfo), + bindings::NV_VGPU_MSG_FUNCTION_LOG =3D> Ok(MsgFunction::Log), + bindings::NV_VGPU_MSG_FUNCTION_MAP_MEMORY =3D> Ok(MsgFunction:= :MapMemory), + bindings::NV_VGPU_MSG_FUNCTION_NOP =3D> Ok(MsgFunction::Nop), + bindings::NV_VGPU_MSG_FUNCTION_SET_GUEST_SYSTEM_INFO =3D> { + Ok(MsgFunction::SetGuestSystemInfo) + } + bindings::NV_VGPU_MSG_FUNCTION_SET_REGISTRY =3D> Ok(MsgFunctio= n::SetRegistry), + + // Event codes bindings::NV_VGPU_MSG_EVENT_GSP_INIT_DONE =3D> Ok(MsgFunction:= :GspInitDone), + bindings::NV_VGPU_MSG_EVENT_GSP_LOCKDOWN_NOTICE =3D> Ok(MsgFun= ction::GspLockdownNotice), + bindings::NV_VGPU_MSG_EVENT_GSP_POST_NOCAT_RECORD =3D> Ok(MsgF= unction::GspPostNoCat), bindings::NV_VGPU_MSG_EVENT_GSP_RUN_CPU_SEQUENCER =3D> { Ok(MsgFunction::GspRunCpuSequencer) } - bindings::NV_VGPU_MSG_EVENT_POST_EVENT =3D> Ok(MsgFunction::Po= stEvent), - bindings::NV_VGPU_MSG_EVENT_RC_TRIGGERED =3D> Ok(MsgFunction::= RcTriggered), bindings::NV_VGPU_MSG_EVENT_MMU_FAULT_QUEUED =3D> Ok(MsgFuncti= on::MmuFaultQueued), bindings::NV_VGPU_MSG_EVENT_OS_ERROR_LOG =3D> Ok(MsgFunction::= OsErrorLog), - bindings::NV_VGPU_MSG_EVENT_GSP_POST_NOCAT_RECORD =3D> Ok(MsgF= unction::GspPostNoCat), - bindings::NV_VGPU_MSG_EVENT_GSP_LOCKDOWN_NOTICE =3D> Ok(MsgFun= ction::GspLockdownNotice), + bindings::NV_VGPU_MSG_EVENT_POST_EVENT =3D> Ok(MsgFunction::Po= stEvent), + bindings::NV_VGPU_MSG_EVENT_RC_TRIGGERED =3D> Ok(MsgFunction::= RcTriggered), bindings::NV_VGPU_MSG_EVENT_UCODE_LIBOS_PRINT =3D> Ok(MsgFunct= ion::UcodeLibOsPrint), _ =3D> Err(EINVAL), } --=20 2.53.0 From nobody Sun Apr 5 16:27:59 2026 Received: from CH4PR04CU002.outbound.protection.outlook.com (mail-northcentralusazon11013053.outbound.protection.outlook.com [40.107.201.53]) (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 6E67C32F759; Thu, 19 Feb 2026 07:32:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.201.53 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771486344; cv=fail; b=gOCaH4T8txl2wClgsA9utFM6JCG8tS831NjpIWMqhAKPLnQATAMOS35n5axS4Bs2vHBptaRw9xTaL0PaUxiVD75sDyNTDNBZf58BhTTRWyWs9Nf5zX+caXvwKUyDk4NlFN8vWriBYa06sOXUkMFAFeXJ4FKilSoCxp5Uh8elASA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771486344; c=relaxed/simple; bh=X9jKP5Jnkded66VsgezzfDQe7yezghoIPIKt2+C9M58=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=sjNJ/9dCUyhZSs971uEHk7UZkGx1dMw50u6NvySSFi40eepykY/wlRTGa7tPzUpX42iNfa4EwqG9B956OJ97sYBa32WpSgTonnmgwo2lE0jbOV/qPp1RGLO07IIoMbl1Bp9Q5KafBUgbCZHy2faNoYcxQmdvM/VXx3D/iSZCHH8= 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=rrFfvQbo; arc=fail smtp.client-ip=40.107.201.53 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="rrFfvQbo" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=iI/h244ysmalmQy6maOdbkfd2CFBO9dI2HMgyIyU06QyN4RXSSXRUejgAbPedJu+qd7T6oimtqeqqJ/EsPO/AyhTDV6HLpgu1RDBuuXs7zHxkwXUbSqHcClC3BGZazFirk/nJ3i4lyImgYa4Hs8dcRrlRmA39Wtmd8faxYYlH7/zWfVDbPKSokQ1WjpdHHG47uNRG1DCiYugctA6lyjSHU45igeG8+8jNndMDpgON+PteTPLi+/KukDVUjFaazJwdg3j0MK/s+R/kEAx3IjqUUU2m57Ttbt9Q5Q6JtmGRtGG43YvmmpTBtVKKHLKHhJmj5ShYZEHM9UMeNDDS+zjeQ== 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=LtN3bDZnp0AAdoqmUxF3y4ySlKBnOAveHve97ENyeto=; b=DHtDDBr+udK4e/2dMWFVUkpjN6umOKj0izrX4PlWTUdEOPy/+IB+6vViwjeb7cvMd26Dmo7phuHdi8SEPEIVt6N3QiV0OqymV/e70HYoyt3CRqe83ttSDS3AU6xHHf8k/yCI+guBMnTiyM58oAtFGJp5qLEwWtXW4omX+Jby7C6F7RmE1SCjB6ch8mfm9p4KLBS6zX6THHZCwirKT9T4j7R/Pntf0H2Tut4TFsaRAmRxXt/MW0fi5ogwn6w9fTBQQXzJVSk4YgiL/QI2nL4rdADG8PbwfNa4lz76OBpFM+itxTCTT9NsKkQMcHlwGXtG/3v67MQHuDPhYyWnLR6SQw== 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=LtN3bDZnp0AAdoqmUxF3y4ySlKBnOAveHve97ENyeto=; b=rrFfvQboCaDsxxRhJNYw32iL28cPEhVkFI6khjjI3RiO89AIW0lqPZrei9XN+kY+04yllZEi7wCNizH6yPwGNLSLZ7Lg1IuaG34ZShHqQRDOdvkhfT44FsF9Zzw8ZSJtQpIpABF2t+vYHr0nCZS6ZdlOXtvgAPjEyVVqLCYS3qImyxU4XygWEr8jHkfXSFH1SeMMLBMefHPfp0H7XKFck8kGm/nXh07KGr3nBQZPfx/AUHf9dDsmARJX1oguLU93lUyZfs8tz8t2w0sIxJQ+UCxXzDRI25lwBY3FNwdaPBQuCJqUEIKdc9A2H+eauhKTDeeqLzg/4uarT7IP2GpmdQ== 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 SJ2PR12MB7990.namprd12.prod.outlook.com (2603:10b6:a03:4c3::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Thu, 19 Feb 2026 07:32:20 +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.9632.010; Thu, 19 Feb 2026 07:32:20 +0000 From: Eliot Courtney Date: Thu, 19 Feb 2026 16:30:51 +0900 Subject: [PATCH v2 2/9] gpu: nova-core: gsp: add mechanism to wait for space on command queue Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260219-cmdq-continuation-v2-2-2e8b7615536f@nvidia.com> References: <20260219-cmdq-continuation-v2-0-2e8b7615536f@nvidia.com> In-Reply-To: <20260219-cmdq-continuation-v2-0-2e8b7615536f@nvidia.com> To: Danilo Krummrich , Alice Ryhl , Alexandre Courbot , David Airlie , Simona Vetter , Miguel Ojeda , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Trevor Gross Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, Eliot Courtney X-Mailer: b4 0.14.3 X-ClientProxiedBy: TYCPR01CA0196.jpnprd01.prod.outlook.com (2603:1096:405:7a::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_|SJ2PR12MB7990:EE_ X-MS-Office365-Filtering-Correlation-Id: 888d1cb5-ee5f-45f9-0ea2-08de6f8903e6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|10070799003|1800799024|376014|366016|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?amtXL1d3NUIwVnN6MEdwSHJUZnVPS3FyZk1kbTd0eUhSanFrSWhSZnFRKzhq?= =?utf-8?B?NDZHNDRYUlhCUEZhRVl1Zkt3TjhiUWVlMXZ4TGFyS25zUmllM2JxczBZRWNq?= =?utf-8?B?S0c2WmwzWlBJVUJDR29RVWJhbmNsUDJsN0tkek5qd3FiYmtYUStKVW4rNEtp?= =?utf-8?B?MmVNYUZkcGlvKzV6d09Nb25iMUZyTjZuaUtreU4yNWZyRk0xWHlRamtQMUF2?= =?utf-8?B?R1lpaEZxMXNVeks4ODQxaW8zMDhOUVRlY3NNY1E3a3dZanNBZWI5YjFxVVNW?= =?utf-8?B?Mm1mcjlIa1BSeW16N1cyWTZBRTZ0S05GY09kcnZ0UFRJcVdvNWJ1b3VWd1l4?= =?utf-8?B?Ylk1bmhkSDI0QlNTQjV3dG9oMmFTTWVPQ2pWUXhlVXZDRE1wNFlvK3dwaU1M?= =?utf-8?B?bkRnU29PMWFjY3hBNnJVWHJoeVVpazBxRGJZcUhhNEFnRXV2RllpWWxlMjRD?= =?utf-8?B?dWhpZnJycHcvNXI3R0JTeThIVjBkWlpFL0I1cFdRWWxPMWk1cTd5M2lGYkR4?= =?utf-8?B?TGo0c2ZmOUo2eUl2bkNRQndnYXpUYTBDcnJ4N0ZVVjc1bWtpWmNvV21URUZ5?= =?utf-8?B?aFBWa3lOWUJBbTZOT3c5WjJmeWM2RFFxRnEyNVN4VHNYdE96aXprYm1EN2Rt?= =?utf-8?B?TVpZSnZ4d0gxd2ZaNFEvUzJFNW8yQWRWNkdIcC9POFNJOXRKU2dMcWRFZlN2?= =?utf-8?B?bHp6OWh4b3JUbjM1R0daRjA5WTRma1Boa2piTGYyUzM1UnVHTi94bk5sWk80?= =?utf-8?B?REJNcjU4NEhsT015RDFqeWFyd0drcnFPWGVFQTBwbnVtODFWK1lHa0VzbHAy?= =?utf-8?B?aU10RDJpZXZPTWd3OVQ3ZzRaelFhd2hNYnpwOUpYNGhjVmh0TUtoVE9uZElw?= =?utf-8?B?MzgxQm00SnE3cW5SZWNlelBvbVB2UDJqNlA0ZjcrOW1IMHNzbE8vT05xbjNn?= =?utf-8?B?NGhoTzBqck1lenRyNlg5WUk5d3BmZXFKM1ViZFYyTGtkbjlEN0FpYWNTQUpa?= =?utf-8?B?YUtTRStGaHVLdjFPa2VLUEhkSklYSDBVRS96elpGNnpBOVVOTEEzdDc5NFVp?= =?utf-8?B?bVNvUUhqbzVXakhXZjAwUUJvUWdVNGhzaTQ4RFZwS0xkVjhVU3Z5ZE9odjFk?= =?utf-8?B?UFdXeS9Hc3FCOGlpYjhuU2tRdndBV1Y2a3pJR21IQVI3RGFhZnFIcVE3b0M5?= =?utf-8?B?Tk03M0Q4UTEvcndhL1NjQ3hpZTlielQ0QzdtVHprNE0ra2FUaEZoSlhkejAx?= =?utf-8?B?djVYLzJJVy9EVDQzZjZsQTAvb3VzdnlUbVJBRzBSOENNSmh5R2RGNFVwbDVs?= =?utf-8?B?aUFReWV4d1UwMExxYzErenIyTjlvUzlEVHR5Z0xpLzFPYmZZd2pINGtVblc2?= =?utf-8?B?RmJWYzhGYm52ZFM3Tld0d3o3NFVyMiszVzM4SVRxbStCZnVKWGtsYlJFY0NN?= =?utf-8?B?Vk8yL0JDV05LZ3c2Tm1FZzFVTXZraDJJdnJwTmhveVdoZTUvUGhhY2xmRzY0?= =?utf-8?B?NHFSb0Y5LzFpTFdKOWVsTXR0bVlZYlFIcHZVcXVXaUZ1TjdZS2plVDJSRFBu?= =?utf-8?B?NnZIVUk3dFJLdXUzSm0ydXpxcVU3YnhJNUpLOVhaMnM0OXZOL0NhSlEwZ2dF?= =?utf-8?B?Z1M0blV0Y0VxVHdWeXBYdGJHNW55ZEN4SXU5UkYraExnUW9KcnE1dUVQWXVx?= =?utf-8?B?MnVnTmhZbWR1RDV5MWpmUzRlcVAxenJ2UFhMbkJqR2NFMnlzUjl1WXpKdzNC?= =?utf-8?B?YjBWYjNyOThCL2VTZ2RLNHpPbXpIZGNOcXNZaGhkcGx6VE9qVFdaVE9yUitZ?= =?utf-8?B?Y1hVa2dYNFF3MUhYdFZjamRLSmdBUDFtVGhKYmxBRW1DQktOSjNrREJBbDBO?= =?utf-8?B?VFJlaFcyQk5RZ0h4bEVuWGg3azdjOVpMVHg3Nzk4dEN6aFZFU1ZtTHdUdUhK?= =?utf-8?B?UVYyUWw2UElTSDRpTEVqelQ3WDFscnZ4bnk2YmtudXJNc015OXZpR1VKZDM4?= =?utf-8?B?TG1HQjc3SGh4SU9rWDdDdUpLM1ZzNEh6VDFvNTNOL2VNZkdaWnRvbktWZUZT?= =?utf-8?B?MHBYVFlONzBkNzA5SWlaN2FtQmZWL0JJU3k5RDNRZjltZXNKajgrcDV2Zncr?= =?utf-8?B?V3pOcm4yMTVCbjNtSHJpYXpPSk1lUUEyYSt3UUdPcVR0eWtlSzZPaHlZS0ZK?= =?utf-8?B?enc9PQ==?= 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)(7416014)(10070799003)(1800799024)(376014)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dmFFak92clRiR0t4WFBTY0F2YmVNeUxZcktqNTVQNStKd0RWajJVNHNwSDBm?= =?utf-8?B?aTdzUEtmQ2wwNUJJZk5EMEk1RmZab2xxY2FrN0haamNoVUlRRm8rdUZDZGlr?= =?utf-8?B?NmJ3WmtRbGpuaUxnY004aSsvclAvd2dJZWNuOWdEL2tMYXk5Y09RRTk2QjFN?= =?utf-8?B?aHF2SmxGSmpGQ2VzSlBoakp6UFhURHNTekZETWxvUlMrbmYxYi9WU1NMc1Vt?= =?utf-8?B?VTk1RVArMmpIem1GK3oxcTdTd1I0MzlYNElicVozS0NVUVlRUUdCUjkvTUpH?= =?utf-8?B?NmplbE45aXgrTXh3MWx0VzYzQUZPR2tuUmVkZ3dKOTBLNnB2VHE1NzRPZW42?= =?utf-8?B?VXJUa2pENldWNERlUU1TMDNrVWVpQS9MNlZENkdCVW9NV0c0RWVFdWNLV3BC?= =?utf-8?B?ZkFxcjdTZGFraFoxWURweHJWbVlXeEp5a1h5QmpNaHRNQmI2VjBzQ1IrR0h6?= =?utf-8?B?c2xHdkZpaGRZRURKQXIyNXpzZlMvL0cvQmJXejZCa2hHdjBuYjVEQzdxMXNk?= =?utf-8?B?SENaOHEyNkZVZjJZUHlDZWJXbHgxN1YvVlNZY29LNE9vTFBHVjgwMVpuOSt5?= =?utf-8?B?Zm1iR0RIVXRTcTZVVjlMT1hpTGtoWDJBTm9DSGlUa2hydlZtb1ZzUi9FQmdj?= =?utf-8?B?OGR6Um02aW1FYjZtV0RjTnRoSnV1cGRxL2RHbXUvUWMydDZBSkpYbFJlT0U5?= =?utf-8?B?dFdZc2NOaHVLSG9sS0MxS2Nqd01HTld6clhWTlRUWTl4cDkvTThPTFNVUGMr?= =?utf-8?B?eVNtcXlKR2dkMDhSZnF6aU5QcU4wWVVNZ2lZeG1oTHdYTU82a0ZhZDBrbkZZ?= =?utf-8?B?Rm9lTjR6L0I3Y1M3Z3Z0d25YQXFZMzJZMm5qSVRacVBEdmJtN05QbUdiRGEv?= =?utf-8?B?MFJLZzVFNjVHREVPM1M5VUMveWFMNWVOcXE2M09aUDZGSHZmRS83Qk9qcWRC?= =?utf-8?B?THVpK1g4N0FoVXg2eHZwTitTNE9NUy8ySnhwcXIvQnd5VGxrdmdpVEpKN29I?= =?utf-8?B?ZmxBbmM2RTNLNlVFbEJVcitOb2QvNHNtOXRBLzh6OEJSaFZGV3d3N3l3dkh5?= =?utf-8?B?c2daenEvOWc0UlVrOElqbkF4RGVFSnFvVDFmODhxNnN1aURuVHp5cklpc0p2?= =?utf-8?B?ajdGODJLRGxhaTNLajJmekd4a3o4YkdWeDJma0QvKzFJenpCekt1MnY3TGpN?= =?utf-8?B?NFd0MmpNa0JlT0NuSmR2QXR3a0pTZTRNRGtHMFBYaFFiaDhyKzRSMC9FSXFm?= =?utf-8?B?QituOS8yYkN1VkFJaGtjK3BMelhsTWFRYlZJVlR3VmxVaGFLak1tY1lwREtY?= =?utf-8?B?NXR1RDBTYjVZMHNsckJJSTBHdThkb0E1c0VpTUxvblJlcFNqNnJCZ0E4YkpH?= =?utf-8?B?ZXJOVHluVXU2OFhDWXJvVGd4MC9tQlpYMVNnMmtEdTJMODRPdWs3RDAraUk0?= =?utf-8?B?MWJoam9tYmZLSUw2bFdjRWRZMkNwc1VQUDl6Y3plczd1b1VWYmpOQ1J6YktP?= =?utf-8?B?TlpEdWgra2dZL2FJSUFQMFhlVXJUQWZrUTZKYVo5bmtKOHJIRTViY09zZCs2?= =?utf-8?B?akpVSUMrRGVkTUZOSm5BYndXV0tOR21iZGdsSXFjb0hZamtCdmtCVzNuOEpB?= =?utf-8?B?d2N0VHJaVjUyOUJUa3NTUEhqOEVJVDVQY1NKdXpKaExrUW16cGUvcFdDbU9P?= =?utf-8?B?YWJXZ1FiS2VxQyt5dERMWEhKdGpPTGNzT013R2tBdFV4Nk5tekx0OXEwc085?= =?utf-8?B?RjVtZkQ1dUdLakF1LzJTdjhmeHZLdENKdTMzajdQSkVHcDZZTlQzejllOEM1?= =?utf-8?B?ZU1wSXZXOHNKOUdUYVpNRGY4eGtrME11OHBrdDAxZGUwSVd2WTJKQ1ZmWXEr?= =?utf-8?B?YWxlZWNVTG95QityME10Yytta0V4MSt1TFdmZklxMVNKWTY1NXc5NUtNM0hB?= =?utf-8?B?QUtYRm9NNE5XWEdTd0NGT2NGaHFJTzRZN0V6cEwzaU54aWhrUElzYkV4c1dD?= =?utf-8?B?MEtraTk3NXNoZmRMdkVCMlNYT3E5cnpRbEJZZ29Wd1o0MGpKcjNHeVZDdjVG?= =?utf-8?B?OFAxTktna09QWXF4MjdzTGNwLzk4dk8xS1JZclpzK0VkM1F1WW9DZGtnUG56?= =?utf-8?B?bGRPR3dMelU3cXgvNE13WVVoT1JrMHF3TUNDRUtLeEFtbi84WHhDQkpaWU1x?= =?utf-8?B?SmZMZW1MeXlIZE9leVF5bUdKd1B3R080aXFwSFo3Z3F2dlo2c3F1SzkzNGZW?= =?utf-8?B?Q2ltVnhOaG5IYTQvTklraE9JZEdHWkhzeGY1YTB1RDl2Z2M5NzYvaHZkcVdN?= =?utf-8?B?NWlPcmtMbnNDNEgwZE52U0ttUzRRMDIvZEFWUGc1SzFMa0EzTEpNYTlYcnYr?= =?utf-8?Q?rwRdVwm0cfhh7WhUjGjKqRSZKg9q9MUrbM/qDksvHyPFO?= X-MS-Exchange-AntiSpam-MessageData-1: mhKomeOZJdq1Dw== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 888d1cb5-ee5f-45f9-0ea2-08de6f8903e6 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Feb 2026 07:32:20.2362 (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: kpidtoYl6yaXniwj+c+t70UT22h4QcjsOhdL11DC/EADf5rhVf7MSfNWtzSsdNaugm0K+AgFKJAxtMZZyWH6ow== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB7990 Add a timeout to `allocate_command` which waits for space on the GSP command queue. It uses a similar timeout to nouveau. This lets `send_command` wait for space to free up in the command queue. This is required to support continuation records which can fill up the queue. Signed-off-by: Eliot Courtney Tested-by: Zhi Wang --- drivers/gpu/nova-core/gsp/cmdq.rs | 39 +++++++++++++++++++++++++++--------= ---- 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/nova-core/gsp/cmdq.rs b/drivers/gpu/nova-core/gsp/= cmdq.rs index 46819a82a51a..f7f3cf2c7443 100644 --- a/drivers/gpu/nova-core/gsp/cmdq.rs +++ b/drivers/gpu/nova-core/gsp/cmdq.rs @@ -243,6 +243,19 @@ fn new(dev: &device::Device) -> Result<= Self> { } } =20 + /// Returns the size of the region of the CPU message queue that the d= river is currently allowed + /// to write to, in bytes. + fn driver_write_area_size(&self) -> usize { + let tx =3D self.cpu_write_ptr(); + let rx =3D self.gsp_read_ptr(); + + // `rx` and `tx` are both in `0..MSGQ_NUM_PAGES` per the invariant= s of `gsp_read_ptr` and + // `cpu_write_ptr`. The minimum value case is where `rx =3D=3D 0` = and `tx =3D=3D MSGQ_NUM_PAGES - + // 1`, which gives `0 + MSGQ_NUM_PAGES - (MSGQ_NUM_PAGES - 1) - 1 = =3D=3D 0`. + let slots =3D (rx + MSGQ_NUM_PAGES - tx - 1) % MSGQ_NUM_PAGES; + num::u32_as_usize(slots) * GSP_PAGE_SIZE + } + /// Returns the region of the GSP message queue that the driver is cur= rently allowed to read /// from. /// @@ -268,15 +281,22 @@ fn new(dev: &device::Device) -> Result= { } =20 /// Allocates a region on the command queue that is large enough to se= nd a command of `size` - /// bytes. + /// bytes, waiting for space to become available based on the provided= timeout. /// /// This returns a [`GspCommand`] ready to be written to by the caller. /// /// # Errors /// - /// - `EAGAIN` if the driver area is too small to hold the requested c= ommand. + /// - `ETIMEDOUT` if space does not become available within the timeou= t. /// - `EIO` if the command header is not properly aligned. - fn allocate_command(&mut self, size: usize) -> Result> { + fn allocate_command(&mut self, size: usize, timeout: Delta) -> Result<= GspCommand<'_>> { + read_poll_timeout( + || Ok(self.driver_write_area_size()), + |available_bytes| *available_bytes >=3D size_of::() + size, + Delta::ZERO, + timeout, + )?; + // Get the current writable area as an array of bytes. let (slice_1, slice_2) =3D { let (slice_1, slice_2) =3D self.driver_write_area(); @@ -285,13 +305,6 @@ fn allocate_command(&mut self, size: usize) -> Result<= GspCommand<'_>> { (slice_1.as_flattened_mut(), slice_2.as_flattened_mut()) }; =20 - // If the GSP is still processing previous messages the shared reg= ion - // may be full in which case we will have to retry once the GSP has - // processed the existing commands. - if size_of::() + size > slice_1.len() + slice_2.len= () { - return Err(EAGAIN); - } - // Extract area for the `GspMsgElement`. let (header, slice_1) =3D GspMsgElement::from_bytes_mut_prefix(sli= ce_1).ok_or(EIO)?; =20 @@ -484,7 +497,7 @@ fn notify_gsp(bar: &Bar0) { /// /// # Errors /// - /// - `EAGAIN` if there was not enough space in the command queue to s= end the command. + /// - `ETIMEDOUT` if space does not become available within the timeou= t. /// - `EIO` if the variable payload requested by the command has not b= een entirely /// written to by its [`CommandToGsp::init_variable_payload`] method. /// @@ -496,7 +509,9 @@ pub(crate) fn send_command(&mut self, bar: &Bar0, co= mmand: M) -> Result Error: From, { let command_size =3D size_of::() + command.variable_pa= yload_len(); - let dst =3D self.gsp_mem.allocate_command(command_size)?; + let dst =3D self + .gsp_mem + .allocate_command(command_size, Delta::from_secs(1))?; =20 // Extract area for the command itself. let (cmd, payload_1) =3D M::Command::from_bytes_mut_prefix(dst.con= tents.0).ok_or(EIO)?; --=20 2.53.0 From nobody Sun Apr 5 16:27:59 2026 Received: from CO1PR03CU002.outbound.protection.outlook.com (mail-westus2azon11010062.outbound.protection.outlook.com [52.101.46.62]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BC3DF332EC4; Thu, 19 Feb 2026 07:32:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.46.62 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771486347; cv=fail; b=AhGHSNWB5Dp8Mq6hnnwP+8zeBU2stoalZV+YJrY5ci0EzyG8ewltoQu7UVFZYTNg5xICCwum1L+rbU930uq8SQbe2ed20lWYuP2dJb6H67wQHJ6MOzjQAljfDvM0Xm13fvzm9yeXg4HTqrFgK8bBF7OFhHiIEoblpUn3PeafoCA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771486347; c=relaxed/simple; bh=3pfYJAxKuDSZmeHZXcd0n2vr4dhb/oJtSCO8l2ewW58=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=QGR3Jz7w7hXPRh/SPeWewmetUe3p8mKbd8VXmc56orlneu1FUS6NiVlVaHzYJKzoavjsmAxgzvKvLqQQ+ouD7KSfZOyv0brxqMsvjDFsYz5FwQEbpHxpIu+E+HA2lqAAkxJJTXHHdJHPb9Yq2YQo2MjxhjfM0Oz3QniVFoTlbqE= 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=eFak/77O; arc=fail smtp.client-ip=52.101.46.62 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="eFak/77O" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vQcY1ouTE9q/WvLVdJa0+AWFKLyY1T+qjUnxoPH/WJNFlftIG72633zv8M4ToRXze5wuIFIseFamqxoFrzA53vkHscUj/+PPbXuCwBnhC4xQWfAc9PTKrN7db0r5NZbUNJcGjgFf4VveBKNW54mcr7QdMf8S3E7D5DGgIbKDOc1UchUyFhtAsGvPpmCnFA9jv8hEhHR6iZ6kM2v2/9xd4BUtr7kjc4H4OxG40PHqTqwH1sLkf3kDkDpM6LE1YxzGQ9+xF5dGOkI9GnHyWX8G37p5dNFhlE16JHt9JqcAEVZ+/RKOllRPR0mEfS73221ks6EwtlzSrEHwB58j+wnHwg== 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=4vf04y6awk7MAQDaO9h+XVkpI5nnRfyEDFYL5LW0ltc=; b=cXJ3jF7Jz7epJ4woLQyLv9xmuHMTkb8Q87aZlGzn9aglcx9PN4ftAjoo0/kVAXcKgDtjRWueUfs42xvAd0ybUKtUWvuKoh3Dqb3kxmM6JqF6fBSPOftXK6EAzoIxf+kssCJ4+GMeca8khcd+F3U2QzmYui9S9R2f7kVmPtRPUqh+A2+OV9I7qXbexOxjKzboU7znb3Zs2hfB/cr7ttyX5LuEs0xZq4MllsvSvbgK7iB2bRxe4tYCiWwP7bR8OXziZdk51suO3rxdN/D6Tve23ve6py9okiiyEdR0n0H4bA2IN8NvIgKiwfPxNrAZZyAKqCCtHSIJwHk50xPd+N/NEw== 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=4vf04y6awk7MAQDaO9h+XVkpI5nnRfyEDFYL5LW0ltc=; b=eFak/77OeDMcay8er4XauyOQzAXsptdekgNX1sYLuYl/+x1U9BHAl243ucmLwJhQgSU5P6R43veGND8lTfya+CVVLtcmMWlYSOzf6xUrfJTfEwkE6QoiM/lx3V2qlpsb2GEPHYtnXeOedz0IvsfV7gWcxT/R8EksNidWjxD39lgeOh6AXRo4pW9G0CtJbkz28+0QRWOP23QWJSC216SjKyJwg+hYFhfeYcNxKnWdtfC06RFgD25oA6+5n7bOtktN2SF0QdCz6y6Upr7ASyuhMD3eOJBj900WP4nqcSlIafBLKPIi+/1WBO25Cc86kD9jC9f+plAEMMMlr3fR8OPMhg== 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 SJ2PR12MB7990.namprd12.prod.outlook.com (2603:10b6:a03:4c3::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Thu, 19 Feb 2026 07:32:24 +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.9632.010; Thu, 19 Feb 2026 07:32:24 +0000 From: Eliot Courtney Date: Thu, 19 Feb 2026 16:30:52 +0900 Subject: [PATCH v2 3/9] rust: add EMSGSIZE error code Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260219-cmdq-continuation-v2-3-2e8b7615536f@nvidia.com> References: <20260219-cmdq-continuation-v2-0-2e8b7615536f@nvidia.com> In-Reply-To: <20260219-cmdq-continuation-v2-0-2e8b7615536f@nvidia.com> To: Danilo Krummrich , Alice Ryhl , Alexandre Courbot , David Airlie , Simona Vetter , Miguel Ojeda , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Trevor Gross Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, Eliot Courtney X-Mailer: b4 0.14.3 X-ClientProxiedBy: TYWP286CA0008.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:178::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_|SJ2PR12MB7990:EE_ X-MS-Office365-Filtering-Correlation-Id: 137277df-5dc2-4369-b193-08de6f89064d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|10070799003|1800799024|376014|366016|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?bWtZdFVhSVFjM2QvZ3NTNkVQcmdEL0hyMThTeXFXK0pSdDJwR2JMSDk3VlBu?= =?utf-8?B?R1d0M0tGc2xwdDB4eStSbU9XQU8xeGt1RHBLOXlLVkJELzRPOWdVVW4xZ3pW?= =?utf-8?B?VmR6ZHJwSElNTUJaeHVUViszanJWZnZwaHZaazBCZEdXeUg3YmhOUWNzOWVj?= =?utf-8?B?dWlhTDVVVmdYWVZkRU9oK05zNDRoVG55QThnVHd2VE41TC96WFgwMCtTYXZo?= =?utf-8?B?RUdpNGpIUi9RdFdvbG9RRkJJakZubDhpMStMMEFYN2ZyWi9iNVBjZjk1NTVY?= =?utf-8?B?QW9nUGZQZE9JNnEyd3V5WHlyNkJJaXVUQjJCYXZ3aVh0UlJYbExORUtBbFF1?= =?utf-8?B?U1NMYnJTNlRWM3piMUdCUm1oQzl4Z3hDS1BqQUZLNmhXTE5SbU5Jd3loczR2?= =?utf-8?B?aG5helBvVTZLcENqT1ovZnc3c3U4eU1TQjNSYmRYZDZUME1uUzZMQ2NSdmhV?= =?utf-8?B?MnFHR3hSdTNySEVUNXBCUW1RR1MyVEFJR2R0QjFUQ0wyQys5NkFKYU5nT2Qr?= =?utf-8?B?NytqRGVHYktXM0Z2QzlRYnZTcmVPc0JURVdjT2JSOXNzUEExZ0xMbWlPT1B0?= =?utf-8?B?WVpWMDh5ZUxIVm40TmhRaUVQMThJWjhSZE0yTTFMQVZmY05IVWFaTzZMUFpY?= =?utf-8?B?bWFvbkx4V0wrNzdPS0pjMGNtS0VOaFBRdkNJSk5pNnlCSUtxeGNyTlJJbjRX?= =?utf-8?B?T0lxYWFOR1B4WW5ORi9Jc1VraGd2K0grbi9SVGdTb3VGdHEwdDVXaDNKcjI0?= =?utf-8?B?c3hnTUNTeStuK2lrSTF2bStCNlVlUEJmbUNIMzFvNGJaOFlERFRBODRXSkYr?= =?utf-8?B?MTJCdi82SDhtTEtkMHVEeDVQTEpuMHpKY25YZGlnamtVYnkrQmFLUVovMmd1?= =?utf-8?B?T1VyUHZBWmM5NlJCck13WHpDZHFXRUJLUG9YR3RpUG1RekNpcXZQc2RJemQ4?= =?utf-8?B?bFJCbXowTHhqVWwrelVya0hYN24waFZ4Ny9mRVpwOXBpc21IWDg2MW1vaUt0?= =?utf-8?B?dGV2R2tTbnQxaWNWKzhzTFU0NEJhaEVZVCt6eXdjQ2FYYkIyNlcxMDdVNXlu?= =?utf-8?B?SC9Ra3p3b1EwMEFPWW1HanpKWTd4UUJKcjhzdXAwUFc2RVpNM3c2My9wa0Np?= =?utf-8?B?S3lhNVZaVzlJVXpaWmxNSzhIc1VjZ3VSTHhsNDRseXVwSmdiaS9McTdJQmNW?= =?utf-8?B?ZkdjMzZhb2xWSDlDVkJmS25JRWUxNWxQblBQN3ZmamMxSkozYmY1cVRpWXhZ?= =?utf-8?B?ZnVING1TRGwwaGtEZzJWY0U3ZExCTzlPRUxTc0JSRWpkaHlQd1NFMlh1QjRW?= =?utf-8?B?dUhmMnB4VDd3WWtiT094bjJpR2VWWjd1TnVQNGVIa0NEdGVJRFRmbXgrNUd3?= =?utf-8?B?T3Bzc1ZKdDFFdDBUV2JiMkdBM1ZZWXNjRXZJU09MS0NtcWhBaHMwemlUNkN3?= =?utf-8?B?THY0NWVJU1pmWmNUVEtKZ01GbDF2WDhCYXVueFBqZUd2V3BrRUYwOUxIY21r?= =?utf-8?B?SnlKSU5zM3lraXhQejlSTWlLTERHS1UyZDJUOU1VTHlNQ2ZuSWhvR00vMWtV?= =?utf-8?B?NkM1YS81YXlQQTBaQ2NTcVFubTRleSs2VTRxYUJTQTlHL1h2UkJPQ0pRV2ZS?= =?utf-8?B?RG5rd0lkdHgvOUo0ZjRNNU5CUjlXVkJuZkxMd05ZRnRDY2U1OWExUXlqUkxF?= =?utf-8?B?SmVFSWJXeHNwQzVvZlVKOVZ5QU9UbDVJcUU5VTdOQkRnRkNCaFdvWm1ITGpt?= =?utf-8?B?aWRFTS9lbE1MMGI5bEQydkZ3NUIzd2s5c1FudXFLR09Tc2MvSk15eGN0LzQ4?= =?utf-8?B?MXZ0SGJ3UytQMkZGTmU1c1pSWVNWbmlzaEx3bDVjNFQrSjVGZDJjSDl2Zjha?= =?utf-8?B?eUd3dThDZ3pURXI4T1ZPRUFPRDdxeGw2TUVYcHpWTEI1aUE1eUlCb2NNWU5K?= =?utf-8?B?WW1Za3NzUHNUTFV4OUtYUFBKZVpYNUVRaE1nQjVFZ1RzcTh1U0g4bVpveThw?= =?utf-8?B?bUVxN0NVTXY0ZkxlWVZ6OU1ZOXdRbEZjYkU4RlBYZmxqak9KS3hneG5URlRV?= =?utf-8?B?NGpucWxQbGtDaW82K1A2cWxBTjdIS3oxcFBsa0N3MlI0bEdEbk5vOGN1Yy9Z?= =?utf-8?B?dGVoZmx0TzZyNERZbjE0QXpSNmUxVGpZam53U3RwM0R2N05tMStOcWdNbTda?= =?utf-8?B?NGc9PQ==?= 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)(7416014)(10070799003)(1800799024)(376014)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VlZmWHZjQmtpVXFwY0p4NnV4N1NJQk5Td0ZNSzE3bVBWME8zOXVPTnpxMlFz?= =?utf-8?B?aHBpODN0WkxBTzUyOGswSDlXM3hLZXNtOHhtQmNEYXJWSEZUQUROSm52VDI4?= =?utf-8?B?dFpBdzhaOXlGUG1sS2tGRVVoWTFNVENoRG9zdEtFekQrSWNXV1FCV0Y2OTlT?= =?utf-8?B?K0tiQmdBYm1PdnhxdXcra0luRHRBWmFwMU1QOTBDWTEzcWZ5OTZ3aDR1bGsw?= =?utf-8?B?OXVLQnh4QTRYeUhiMjNQM09lZG9uMW9yVE8ySzZ3amVVeHRYcHh2dUNLKzRo?= =?utf-8?B?U0QzUjRTbll6MERXWVZZcGV1dnF1NWMrUG1BVkpzNHN3czJMOXE3OG55VHFO?= =?utf-8?B?a2Z0eStaUm52ZW83Yng5bzErKys5eStYZENCVDRoNHdCVTRFVTdrV3hnc1VG?= =?utf-8?B?eWdJQ1ppYWFmTHBPZFlHZGkrT0drSVMyTVJiRHlzR2F1WGt6dk9iTlNNNkFL?= =?utf-8?B?ay9lY3lVN0NSZUpsMDRSYy81elRaMFh4RmVvZms5Y2IrUENDbnlKbkpIZ2ln?= =?utf-8?B?QU4xOENCS28wVTRMT05zZVM5N0tJMUFKbGp4UVpYY1NzWStrWUxMcHhNSEpJ?= =?utf-8?B?TXE2OWg0V3JzVmtFVCtDZzBFWHFqdUVubnFxQnhqR2dMKzRBNGJTdFdyRld5?= =?utf-8?B?V3FwSlRNWXRrMHBYMEdNNlQ5cFhYSFM4VkY4WHp1QTRPTGdaZUE5OU16VnVr?= =?utf-8?B?MzJHajRMby9DVU1GUnR6V21NVEhob0NYS204N2RjOWtldDBBOWZlcEVQYWRk?= =?utf-8?B?TmFIQmRhRkhqUWcrQkRpdTN3T0Q0ejFQSnRSbmxLeGpJVVFWU3RKa2lzaHRV?= =?utf-8?B?Lyt0SFo4bmVVK1ZCRlorUXVOc3BiMnpLVHFtSzZsSHJDZ1hBdnRsbjlONVFm?= =?utf-8?B?QzgxOUt4ZlE2U1dvc1lxTEgxdHZnaUJyQU5iVlZXd1FZV0RqL2hPMjlKZzlq?= =?utf-8?B?d1UyNlNxKzdPVFJoZ1JGRlBHZlYvbTY3R2FYOUUvd2srSHYyVEtmYmkwN2pq?= =?utf-8?B?cVk2Z3FPRmM2UlFxbjl3aC81bkVUeHJPdDJGek5QK3dOY0ZrT1J6SUdxcm90?= =?utf-8?B?ZUVRajNvaGl4WWZnWGJtQVZqVzRnZlZuNjFzZ2JRSUVYY3JCSFhwYnNHTmVB?= =?utf-8?B?Y0FGcHdmQ2Z5UmlBSHhBeTdmckdVZFFYR1ZVS1FwOW1WSXNEQ3BKZXZUaVFi?= =?utf-8?B?OTNiOUJZcXhEZjh3MHpHeWRIeGQ4WXFZT1hCZnBJWFZYaUJ3cVhtQVVVaDZs?= =?utf-8?B?ZTBneVZDZ1ZFRysvM3NJcElwQ0FnVlFlYllsb0twU0lSaWxmSzBaV0d6U0ZS?= =?utf-8?B?STVxelVEUG05L21ET0wraDIwaW5wUEFJWTBzK1VYa2FHNEg3U0ROYll2UFJ1?= =?utf-8?B?OFV6ZTRkR2VzTm5wT251TGtVUzdvMXpQSTdzdk52NkpkNUdVTSt5bkpQS1M5?= =?utf-8?B?UDBVcVAxK1pzQ1N6ejQ2Y2huTzdpamhJbFRMUERzQ282Mk1uSExkcnA1TnNV?= =?utf-8?B?YS95M1ZISUs1dzdmaTNQdi9FNXBaVEgvNktOa2piQzdSa3hKcGF5MGUwbnFn?= =?utf-8?B?SjRmQS8yN0pTR1Q1MExRZ3N0ZGk2aTh0ZGZiNDJpTldIKzVUc3ZGaXcvdkVX?= =?utf-8?B?WndZRFB1OG1CRU1CMUFIQXdoQkNseENxR0Rsc3N5SDFscjlUT3lVZ2FOVTcz?= =?utf-8?B?cTIxVjEzV09OS2NwZ0Z5R1cxVnh0OVRwbkVqVFlFTmdnUVdEamdKQmJkTE13?= =?utf-8?B?dVcxQ1dlcWVVMUErZFdoYUliSkZqTUg5ZmEwOGsxeGNuYzFjZHRLRUtvcWRQ?= =?utf-8?B?MWxKS2FxZVBHTGtPeVdBRGZsU0pKY1VndnVCcDZNei9OSktRNHF6NkIvMm1D?= =?utf-8?B?M00ycDIvdTFDK2hKQVU1NnpIQ1NwNXNvS1YxbytmYkg5WUE5VDNVZ2hkN0R0?= =?utf-8?B?UTRrUUdvdE92U0ZFZTF4MndmVXZDM2U1ZlJRL1R0Z0dNWlpzcEl3dnBCUnVZ?= =?utf-8?B?TGRJblNOV2N4MUVmS2h4SFY1ZXN6TXVya0tQZ0VpcHFXSVQzTjdpdEV3Zmlo?= =?utf-8?B?UllxRDMxRlp1U0N1YksrdlFJSjFabEFkQmkvcnI4dmJrMk5RRUpHSmlrT09H?= =?utf-8?B?cjVrTFB1VDQrOHBhcXo4bUhmSm5jN3pPQy9uTjFhOTVwV3pCQVJ2R092ajhI?= =?utf-8?B?dG1qT1BCSHcyK3VPUDNRVlIwUlU3WVp4T1ZBMld0VU5pT01ic29JMit4Qk85?= =?utf-8?B?NThXTXFBSENiaWh2R0hrdmY0ZFVZVXZ1T0JwanVEdnEya29QbmJ5TkxpVk4x?= =?utf-8?B?Ump3cUsyd01WU1NHdmdtZFVORE1MOTZyTVZKSE8vc1dNaHpmMnBBRlFCQ3ZU?= =?utf-8?Q?Q/MJJ3b0PWLDJ6iUdq3lIL2buMAwfD+HCS03R0kXReRdP?= X-MS-Exchange-AntiSpam-MessageData-1: Eb6n2vDLc7nDgg== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 137277df-5dc2-4369-b193-08de6f89064d X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Feb 2026 07:32:24.0940 (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: fXGgZnwZbV/1tGBP2B5qR9VHB8jpXKs0ZcoA+1EkjdHuknTx7L2PyYR/Da1qOCc6vWM8o7zWK42dxppYxPe/kw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB7990 Add the EMSGSIZE error code, which indicates that a message is too long. Signed-off-by: Eliot Courtney Tested-by: Zhi Wang --- rust/kernel/error.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/rust/kernel/error.rs b/rust/kernel/error.rs index 258b12afdcba..10fcf1f0404d 100644 --- a/rust/kernel/error.rs +++ b/rust/kernel/error.rs @@ -67,6 +67,7 @@ macro_rules! declare_err { declare_err!(EDOM, "Math argument out of domain of func."); declare_err!(ERANGE, "Math result not representable."); declare_err!(EOVERFLOW, "Value too large for defined data type."); + declare_err!(EMSGSIZE, "Message too long."); declare_err!(ETIMEDOUT, "Connection timed out."); declare_err!(ERESTARTSYS, "Restart the system call."); declare_err!(ERESTARTNOINTR, "System call was interrupted by a signal = and will be restarted."); --=20 2.53.0 From nobody Sun Apr 5 16:27:59 2026 Received: from BL0PR03CU003.outbound.protection.outlook.com (mail-eastusazon11012054.outbound.protection.outlook.com [52.101.53.54]) (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 385B833506C; Thu, 19 Feb 2026 07:32:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.53.54 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771486352; cv=fail; b=db1LPwS2pZZnyTE7sEFvMexWD0fUaUgrF0KNSOgWxo9eXp95VpADSOkjCs7zqKOSCQR7+qv99Aeb6ZEhlHWp5IVoonG66QDdqY3r+i3IytcNy4HfkGtP6uJ9GI/9k87eQUExhDl2XcH04FXf++g2QAJzYpTn/LAY5UtvQWsF5iU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771486352; c=relaxed/simple; bh=spq4Qwgp8AfxE82TijF1+i3i2Ra2+Y/F4leMPH5SLzQ=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=HOCmYX/fZkTzRmAEL67DTZ1Qemg1Y229MSofvqzJ+LG/Mr5xd0KQi9zjWaTvRUF1U6NBufJJluQXnVO2yNiKc171WjpCanjCC/CgVjTU2mp7ErL0XauMiXpfDRqnhJr6VsAKUs906Bicp2cn98JlOFzZi2QpEsh5tHHEM2fh2mw= 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=IwsyoX55; arc=fail smtp.client-ip=52.101.53.54 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="IwsyoX55" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uGiuBLA7oVaGoIyXEMlPbi0VIY3wThd+tOV8It9YVnoFBOIknZ22jWBGqZshjIOadmyG08BjGsxMvm8TJeuFzRqEkG9XjFEj2HR9TaZ7/euAmU3WyEqm/enHvHs1UwQZs12G3FQje4CJlD6LW34a278l9Nr6+SHbit5ci7WVm9LaOJ0Xfjnywq1C22TDZ1BsJ4JEnSRU6gr80n1BjqFVwk3s0BGCgXEDxUR/RBV/cxTQm23fboS22oMO+Go5TIg7enCejA1VmiRE2Co61v42SKFDiuNKxY9l8zEVkDZZfvJXkI0nYzUNfCwUDTlAom5JXvIOd1gYhqXutHz1ezK2cw== 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=caIE0kahU8d1+o1jRmlHlbByUPj8/9mhgsPgds3kNjw=; b=NeBjvAuOxHsSg8cUKRX7tUg7kD/RqdaLE/O2Zr5N4MtMp20Lg0vlsXJYMYbEciqqq/obnKKXEXKd+KtVoG/wuqtFld/QC/qS/7/7QPlNEjRBvn40jqoEbul1TC14y6vrzlbBq50ntZbgLcpQPRAF3RPU21ik9oaWZe0PT47RgNnIAjk2WOhdqLlzhI/Y0Ak7+llRi5SeNjaP6JvHZZkltnq8e1iponKmiSSRtbFKbJo6sHIVWV1FeULTvxN55FC4excYR91mVssKiZRb2mymBLgsgXxEJdAVuS5lcy33h1SS3IFwqpAlqIdaYph2yvgLQ0ojZAtCmTCVocd5wygR4A== 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=caIE0kahU8d1+o1jRmlHlbByUPj8/9mhgsPgds3kNjw=; b=IwsyoX550pEZ1+N4TNbnLlUkrbLIgTUHmtOwkKaHn5t7ZVzwfLIxYVk8fVacBoMH3geNd2FDR6W/TX9z/fti9T/ErLI1LtqsjzzP4QbMjkwvKF9vhSxSPsbQPboW+kJJjQe9KLWueN+0S/SYGJS5ZPaLb+T0Dy6VGPxf864SDYdMkSfgEg5bwzwOQYDi+HOgEqE7jvlnKVevxc0oKttd7jycmiM9Un9+acCXl9QQElDFAABQfjp4KljOvtegrW0at0VHMSA4TLpNurMnAKE+0PBdGBkl9bCLu2XLrC+kfwkzq+IJflLqRIbwcj+pGVLgOBSv1eRezNAWqFJHnMFEvg== 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 SJ2PR12MB7990.namprd12.prod.outlook.com (2603:10b6:a03:4c3::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Thu, 19 Feb 2026 07:32:27 +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.9632.010; Thu, 19 Feb 2026 07:32:27 +0000 From: Eliot Courtney Date: Thu, 19 Feb 2026 16:30:53 +0900 Subject: [PATCH v2 4/9] gpu: nova-core: gsp: add checking oversized commands Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260219-cmdq-continuation-v2-4-2e8b7615536f@nvidia.com> References: <20260219-cmdq-continuation-v2-0-2e8b7615536f@nvidia.com> In-Reply-To: <20260219-cmdq-continuation-v2-0-2e8b7615536f@nvidia.com> To: Danilo Krummrich , Alice Ryhl , Alexandre Courbot , David Airlie , Simona Vetter , Miguel Ojeda , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Trevor Gross Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, Eliot Courtney X-Mailer: b4 0.14.3 X-ClientProxiedBy: TY4P286CA0114.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:37c::12) To BL0PR12MB2353.namprd12.prod.outlook.com (2603:10b6:207:4c::31) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL0PR12MB2353:EE_|SJ2PR12MB7990:EE_ X-MS-Office365-Filtering-Correlation-Id: 1d40564f-19a2-4c27-f495-08de6f89085e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|10070799003|1800799024|376014|366016|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?L0pMQkV0SnpoWnBRV3JPUFZ6NWVpazUwT3l0ZlNsNWJPbVRycFU3NnA0Rldk?= =?utf-8?B?S3p2Tml6SGhQU1ZpMktFUmF6TXRYdjNJcloxbGovV3ZxL28yWktVUk53cTRD?= =?utf-8?B?TzlGVStCVmR2M2pVRmRZanBtMS9EMC9lMGpWTXh3eVduZitkeFdpbWxhUGxP?= =?utf-8?B?T3BMcGthYnNNU3c5S3FYWjYrZjhqOE9hVDlCT2J3ZE1FVmRCMmp4R1JlNWEy?= =?utf-8?B?U05lazdXRVRuUW5QRHVFSTNMNlFHWDVvNTdnNmVUZlFlNWF5VHJqcC9Ed3A3?= =?utf-8?B?dTNyUkhESE5aeENuTzV0WHdqYUd6cEZqRXorTFR6NHZxc040cHFmSEc2ZitS?= =?utf-8?B?OXRIMVFPS3pnVFdGZElNTUw5MTZjNUpwU0xwbVo0OFNqb0tWQmpGOU1pVDBY?= =?utf-8?B?em5wS2c0Y2dBenRjTGJJY0U1QXNsUlZKSHJVbU45UjRtTi8wVHJ2Q0dsNnlK?= =?utf-8?B?Y3VHaG1QaGQrYzVuNHQ2QWhza0U5WWgwOWJYbGZYK01xek9wVzVVeXRPTGI3?= =?utf-8?B?OXU3aG84a0hlTU80RlFmTnBoQ3d0eERNelNzZFVTVFVQSVlneDI2UEJhSXFZ?= =?utf-8?B?TGFSdUkyNTdYZ3FPUUV4bFh6Z0I4YmxBUVZMVUVFZFdER2NMMVV4em8rQnhZ?= =?utf-8?B?KzFPNmw5TzI3cVlTY05TRjB5SGJKcTZWeTN6RmprdlpUNG5vRzJobVZmK1Zh?= =?utf-8?B?dkFZUlNaWURyb2NMMFJKREZNaFgrYUIrZ3lQVHdGbjR2ekdOYUVUNWxpMHBo?= =?utf-8?B?UTd4UWN4UW4rQXhNYlFHK2FlOGR3cUJaeGVmbjdWS3kyZ1ZpZkxKZmtYWVJl?= =?utf-8?B?Y1dwUXR4T1g1V0ZXa0VNbXlyVmJ3UFozWDkwRnBKMjRVU1QvRW9MRjMrTjZn?= =?utf-8?B?TmU1eU5qd2UxMzNaNkNNdU1FZHFUV1lmREtTNDVIT0N5Y1ZkU2swckxsdENS?= =?utf-8?B?dFhuTmJkWGRDNXdkK2lTRlpPamIza3NGdElZTGVyOXpXcnM5Mi9rRlRkbzdx?= =?utf-8?B?RXdpWU1VTHdMS0VTMWhKN0d6LzMrSlVWRUlrVkhKelNUTlJuMnNHZXcyWnZo?= =?utf-8?B?MlFVUmllQ3NzZm95QU5YSlRxMndQcG5wQjlLRS9kV1o1SWp2MzFWemozcm9m?= =?utf-8?B?WWJsbnowemZISWFKL3ErbTVQRUUyc3F5YUhKeGw2NWdWbG53QjNnbHptOEQ5?= =?utf-8?B?eDNmNDZtckVpRyswNGdEMi8zOVJsYUMzd2VZYjJpejdQSWhuWCtNMERCNEYy?= =?utf-8?B?ZkFiMnp0alZxaElNMjh0Ums4MGxucHppYjc0Sk5Tb0RDc2M1SDdRZi8rNWtP?= =?utf-8?B?Z0hibml4YUxRRzN6VXRRN3FKdE54NnJsZVV3UmRvMWNEMXcrallHdUFRbGlo?= =?utf-8?B?SEd0RmVpc3VaRGlWZjErL0VHMkNReXNwUit0TDFKcEs0eUdRbWxHSzZhVkdU?= =?utf-8?B?TEZBbENUSERERHBnTVF5TjNWNWdmRSs3em5NYStpQklwNFFnRlFqK1ZUdXcx?= =?utf-8?B?RFIvanhESkg4c3F2TnJ4M29RaUJxQWZ0RWNwY2pmT3ljbGZ4YzJYQkR1UnVi?= =?utf-8?B?aE1kVlZoZVcyVSs1T250ZzZ6dXJ6V1VGcjdsVmllUnN0YU1DWHNpQVRRK3Zw?= =?utf-8?B?azJkZnpYZThOUmw2T3ZUVmo3MEplazdkRFE2TmtRN1ZEcWhHbUxwMklncnV4?= =?utf-8?B?OTZRS1FjNHArSmpXaTdINzJoT1FQd21zVDAwaS9sUXhWRC93c2YyZUlzSUIw?= =?utf-8?B?eVJvNktOekZMSTFybURxMzJlVmJCRHJJWEdWUytiOThUQ0lKTjU0dUVyMStz?= =?utf-8?B?dmRuQ3JBZ0JXUDZuVk93MDhHTDg3c1ZrRTBXbi9ucUZsbEhuYVMrdlpURjBI?= =?utf-8?B?YUdKcjVvOWZMUXdmcFFOUlh5NktPOHNZckpPVEdkS3RPM3QwL0FXbjZiUjJI?= =?utf-8?B?K05XRUFPNkdGZnFKblVtNFFPSjNyTXdkM3dFdE1vdEZrK0pQZi93OTZsSGhR?= =?utf-8?B?dEIxMXBJOUFoZ0JyajNIQlZJZlR2UmF4bWdVcVdtYnVEMWcxR1VZTHBJTEFt?= =?utf-8?B?WjhvTC9nSjFRTlhVTis2bU8xdUltMGx3Tk1TSzc3d1hUbitIc0xvQWNxb3Jy?= =?utf-8?B?WFJla3ZZdFFDdndOSnM5Qjg5RFdSdjI5bkZLY1ZET3JCdXFmTUdYTTN6NlBx?= =?utf-8?B?UGc9PQ==?= 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)(7416014)(10070799003)(1800799024)(376014)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?T3Q1L3BWWUFPNE9IYWYxQ3R6OG9jb2Jaem9JanlFQ2NFVWFBUVhPSlQ3Zkla?= =?utf-8?B?QlRGWmFZNjM5ODlUMGViK0RROU0yNUVONzFJVXFUQWxwN1lZOXBrbHI1MG5B?= =?utf-8?B?eDFPb3BoYzl1MHdzdHBLSUZ6ODk3dG9JSnFIZExNUFowU0MrdWZWd1RTbTU4?= =?utf-8?B?NTBDNnVHVFBWK2FtNFpHZ2g3encxbi9WczNNTzVyUTFmTlhpWlRGNjYxbnNM?= =?utf-8?B?SVd5RG5JSEliOHE3eEduZ0JtdkppYjdSTzhaYVRidnFHWDNhQmdVa2hSWGd5?= =?utf-8?B?eE9VWk9ncGM3VXFMNjdROVpVUmVqY0xWaDlVQVYrT3M1NDhjSFUwV05TSis2?= =?utf-8?B?TGkzOFl0U2IrZnVyRzZyelFVNldEemVEb0g3d2RxajZpVFF4V3NkcEVGUXZu?= =?utf-8?B?WE9lWkhPS1hYUXAvOGk1eXIzMFZpM0M5R3l3eEJ3NXpRUzZ6MGJLUGR6SEx3?= =?utf-8?B?RlBuOW84d0toYlI4TG9xU3BMa3FPMkk2czhSVEkwR0c5SkpRSXZvZXFXYm9I?= =?utf-8?B?a2lKNG1TRnpYUmVLVkRFa0pMSjF3enhOU2F2MlVnM3picC8wWTNxbUNSV2Zs?= =?utf-8?B?WHVjTmVTNFZ0a0pJY0R3QTUwRTl6eUQzMXhKbUtxNWZ2VnpwY3d0cCsrdGJp?= =?utf-8?B?dWhTK2kvUEhkUjJPcG9QQTA0V3hEeFFuL0xxWVpGQnhoWEIzNWliQmQwMEpR?= =?utf-8?B?cXcwVmdkaHJkc2VQb1B5dkpMU3BXb1hNMTkvL3RabHVMU3BXY1VZYVBZckpo?= =?utf-8?B?Q2dkYjBOODN0VDIrS0dwKzh0MjRLUTRjcUtBMVZ0ZkZCdGlYYTF2THh4TU5T?= =?utf-8?B?UWVYb2hYRjM4L2Q1TmQzM21yaU0wWDc4K3c0bG1idkUxVW9NMDlWVXRtaWxQ?= =?utf-8?B?aEpuT3ByTm10K3hRQndLTEhoM2FoNlVFYTdJcUhSUjBxalhpeFIxdWE1WFpK?= =?utf-8?B?U1hQR1NaM3hHejZ5WTU3dFFTa0piU0xOT1NjRjVSRE9sOHRQSXQ4YTVPME1n?= =?utf-8?B?SDlKTEpJQU50MVJCODRmZmxQWk5CK3JjRkFsTERiM1RWeDI5MkE1ODE3Wmkr?= =?utf-8?B?bnZWZ2JaMUc0cjhFdG5WWXpybmNxZkJicWdnRmxTSVdJMWQvYm1xejBVN0hN?= =?utf-8?B?WnIwR0RzaXZCcE1WTHhIcXdSYlUzZkx6elNFY1VMRUMwbHJXQW5CUE1USjdm?= =?utf-8?B?eFdmbi9tR1JxRW54K1JCVVNLOHNHS08xeHM1OFpUanRhdXdDVEd5MkZ6bW5Q?= =?utf-8?B?MHN3R09haHJrVmRIVXRLOEpFVkRRL2FPWGtxRzNydXk4ZVFQK01SNmRzM3pi?= =?utf-8?B?S3BxQWhoYXdTTUdER0dYY2NWOVViM1hMcm9tU2V2cU5waTR6cTlKRWdIVW9K?= =?utf-8?B?OTh4WFVxRTBIZmRuTmlSZUFwNnpYb1RnenJXS2pucE5OYmZYZEdDZjA3WDhn?= =?utf-8?B?d3M0Uzd5SjdMVHZ2NXdYOGtSQjNwWXpHd0pYRU9qL3hOQ2JkZlJlRzNabENM?= =?utf-8?B?bkpHU3gxcngxQm15UE03QmtFUkxZN001dktmcXJkWHdPOFZXVy9rR2JpdDF4?= =?utf-8?B?TWJWYTZnR2pRRVJmL3FRUlIvelRYNVp3VjJ3ZHJDS2YvaU5BMFpSTUcydXRJ?= =?utf-8?B?RVpnSXpXeGh4dTlZdml0VVkyeXVKTGtsdlBaZGt4MS9EYUZENWx5QUhBWGFQ?= =?utf-8?B?Z3B4d2syd2tFRmFhRTR5MkNHWm5Ka282d0hLKy9WeXY4dGxuWmJlWGtuaE10?= =?utf-8?B?SXhJQ0txTDFRdUZ4ZlJleGxybnNHWDFSWnAxMTcyU2V1UFNnbmNLRml0WWZH?= =?utf-8?B?UFRyRkhTa1ZabmVTcXNqUlBadFVvZzRJcXVpMTdMVlNxZ0pweGxLcWdPZkFM?= =?utf-8?B?N0tlNm1JUG1MeEdkZDlSM291MWo0enU3R215b2xGVGM4K2tmcjNoSnYrdXY4?= =?utf-8?B?dDNyTnlWMkpabk1CaGh0N1QwUjhuMThvMldacEpCSkptTElSb2hqbGpjSG85?= =?utf-8?B?aVo3OUZCcklIQkxEbWxYU1FmSGM2S2o0STVZb3VTNFRVcXJ0Q2FCa28wRUhW?= =?utf-8?B?dG5KTmFhNFdSZXFrL3lrYUdXK2ViUmUveCtRYVAzTXRackQyMVBBOFBCNnZn?= =?utf-8?B?UjJ6Y2k5cHpzbDZJRHhIOWp3ZWhMYVlFRHJ3RmtlZ2RNalpnOHh0SnhjQnpQ?= =?utf-8?B?WVdpdFY2dEkvVzZZMlprR1dveUFKa1NzcGdwQkRBcFl0WjBHMjhFRk54VG5k?= =?utf-8?B?WDgvV0tsc2ozZXgwVUJTLyt4T2pFbG1lenpNSGxWRE1DTkI1OWtLaXBzeWRV?= =?utf-8?B?L21xYTJteDZTRVMyY1M5N0xLWkkvOEtlLzRSZDRjdEpPeTdnSTgwZkY5ckRi?= =?utf-8?Q?FHqIkp+sdMtDLsVzVHv0a1/1r1UtYprMzDjrL5bD9tUO6?= X-MS-Exchange-AntiSpam-MessageData-1: 5xTkVU12GC9byQ== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1d40564f-19a2-4c27-f495-08de6f89085e X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Feb 2026 07:32:27.5584 (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: +HIDoRdoDl2SvPju/dFjE6lKLjabNajmgS7s2Ca+CDYVifkHs09cnzY5fAgxAIBUt0FRfbTlNIkZDC6wrXqIdQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB7990 The limit is 16 pages for a single command sent to the GSP. Return an error if `allocate_command` is called with a too large size. Signed-off-by: Eliot Courtney Tested-by: Zhi Wang --- drivers/gpu/nova-core/gsp/cmdq.rs | 7 ++++++- drivers/gpu/nova-core/gsp/fw.rs | 4 ++++ drivers/gpu/nova-core/gsp/fw/r570_144/bindings.rs | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/nova-core/gsp/cmdq.rs b/drivers/gpu/nova-core/gsp/= cmdq.rs index f7f3cf2c7443..ae4aa7562dee 100644 --- a/drivers/gpu/nova-core/gsp/cmdq.rs +++ b/drivers/gpu/nova-core/gsp/cmdq.rs @@ -33,7 +33,8 @@ GspMsgElement, MsgFunction, MsgqRxHeader, - MsgqTxHeader, // + MsgqTxHeader, + GSP_MSG_QUEUE_ELEMENT_SIZE_MAX, // }, PteArray, GSP_PAGE_SHIFT, @@ -287,9 +288,13 @@ fn driver_write_area_size(&self) -> usize { /// /// # Errors /// + /// - `EMSGSIZE` if the command is larger than [`GSP_MSG_QUEUE_ELEMENT= _SIZE_MAX`]. /// - `ETIMEDOUT` if space does not become available within the timeou= t. /// - `EIO` if the command header is not properly aligned. fn allocate_command(&mut self, size: usize, timeout: Delta) -> Result<= GspCommand<'_>> { + if size_of::() + size > GSP_MSG_QUEUE_ELEMENT_SIZE_= MAX { + return Err(EMSGSIZE); + } read_poll_timeout( || Ok(self.driver_write_area_size()), |available_bytes| *available_bytes >=3D size_of::() + size, diff --git a/drivers/gpu/nova-core/gsp/fw.rs b/drivers/gpu/nova-core/gsp/fw= .rs index 5b96f5e622a4..c604f423fff3 100644 --- a/drivers/gpu/nova-core/gsp/fw.rs +++ b/drivers/gpu/nova-core/gsp/fw.rs @@ -40,6 +40,10 @@ }, }; =20 +/// Maximum size of a single GSP message queue element in bytes. +pub(crate) const GSP_MSG_QUEUE_ELEMENT_SIZE_MAX: usize =3D + num::u32_as_usize(bindings::GSP_MSG_QUEUE_ELEMENT_SIZE_MAX); + /// Empty type to group methods related to heap parameters for running the= GSP firmware. enum GspFwHeapParams {} =20 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 6d25fe0bffa9..334e8be5fde8 100644 --- a/drivers/gpu/nova-core/gsp/fw/r570_144/bindings.rs +++ b/drivers/gpu/nova-core/gsp/fw/r570_144/bindings.rs @@ -43,6 +43,7 @@ fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::= core::fmt::Result { pub const GSP_FW_WPR_META_REVISION: u32 =3D 1; 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 type __u8 =3D ffi::c_uchar; pub type __u16 =3D ffi::c_ushort; pub type __u32 =3D ffi::c_uint; --=20 2.53.0 From nobody Sun Apr 5 16:27:59 2026 Received: from BL0PR03CU003.outbound.protection.outlook.com (mail-eastusazon11012021.outbound.protection.outlook.com [52.101.53.21]) (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 3ADD633372A; Thu, 19 Feb 2026 07:32:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.53.21 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771486356; cv=fail; b=czKQKx8ZVEx7L2NoMZAKfdg4mA+PlPntaaUrttt1pF0NX8SOWzolD5QbkwzzX9T3T9/RdamMGIzsdCtERqR/MocrHLjiEhDWWl5NMz7gCT11ghsUwBK7hdplT4TjvEpThOCiJPjmvgTaa4codaKA/I00HOfjG66OSPRlnsgmluo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771486356; c=relaxed/simple; bh=I6OKY0qKoKlaGPu28NxAEYwYdKPLD9/u7HE0PfxsfO8=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=JJag+3aQldv+BNT+kHkwagvM/a8M4l0tODGUa4NBRLZzDlzPrXTUxYq7M8e7ohRwz6UMF4UJOTVox+qzszRJ+Ruy2aXgctTxwtbMBfrQFwqQDXu8kHHCakhtpaQUe/1JZH7GwwZKSe4Y+Y1mG5ehdMjB2R9D4WkpFY2/F54kefo= 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=KTsWjOz1; arc=fail smtp.client-ip=52.101.53.21 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="KTsWjOz1" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WiKnUHf7i0RYPLlUVzeNNNkRzGORZ8xa0XrlkFA2JtSYpfhUffi5kC8xwWQ6M0/wlMzfePD2uprbiihaXy8dklxhtWhbNOp/voQ/NNcGI4DnzOIzZt/ifbv1Z2WKU8D4PnEE947/kKLOr11LQFIYoHCbg70DSgPg6hmClW7mpWNiqBSp6Ag8Dz7/hUSyg/YRoMIC6B408rmtB+Y4Q7AWPy3/vV4W2Vh2v/dHv4FrO/gUmUYLa5mQj8HD75kWFKU3CKxjOcgVXjrpJeHjuY44qpIP9WRQbKLxHGv66cXS4pv4j55sG4vZyTzQnpHHf9xVKRVaXY/Dqjrl7ktdWZpxUQ== 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=ISqCkHYikvpFBEpH7RzzCBFy92BJrZp1ByqICCS0ae4=; b=e32VE29HUWCDPn8b4dioUyVGBIiqS8mwwKYlSqSSxWmqsB/A0pne7ayVlPueeSZLiPpzrsXbDomzXiiy1o29IQ/EqBfs0xZzTO0ZQP7BFuaJFSqfE1oswhFxxei5Ng53lkVPIKCes1Tat0nkWla7pzmcgcQFQYRpaKOoVAAmJZVWdBfSAN3/IG7RR2T1A+Ao82utRCPm/fsi7v1qpkOJaSjuKNevqMNGyp+4nU9xst8IlwhDctTfvKua28pvr8cQzWKGC1MtQWd/6V7m6f0ffN/bek4GdBgBv3Z/wipONSrY03McJH1r/uNJotPRPQ0YzSEWIOVbJzXpbtMD4pW1VQ== 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=ISqCkHYikvpFBEpH7RzzCBFy92BJrZp1ByqICCS0ae4=; b=KTsWjOz1nwpYDX1Fl+R2fsjHzXJtfIHrnRtAgGWEiisrBFRHpVYjsxzthgmPjYZuqDPkPTeTrJks8+hAIbV43e2MeAVfuMvOzjDo29dUoVXlkOb9OWVWQNHSbDIptE3m8iaektbyHlJZCJzq4h+74rtjngRVy+By3XuEJRSpPMPvVAWzLMSFm9SZMbRm9Z+C73ypmZDNtRSYJ4eBbzpQBuVY6aOdNgWCGIWbdu+vx/Zfzrw6OHBx7rhpsh9ArmfiKudCXR2OalJU0TWHviyPoYvFslk/eCNbdsJHs6ggY1NnGnrpsOI0iOadof4+LQx3qgi7OPE/P4cciVIx/VHsvQ== 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 SJ2PR12MB7990.namprd12.prod.outlook.com (2603:10b6:a03:4c3::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Thu, 19 Feb 2026 07:32:31 +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.9632.010; Thu, 19 Feb 2026 07:32:31 +0000 From: Eliot Courtney Date: Thu, 19 Feb 2026 16:30:54 +0900 Subject: [PATCH v2 5/9] gpu: nova-core: gsp: clarify invariant on command queue Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260219-cmdq-continuation-v2-5-2e8b7615536f@nvidia.com> References: <20260219-cmdq-continuation-v2-0-2e8b7615536f@nvidia.com> In-Reply-To: <20260219-cmdq-continuation-v2-0-2e8b7615536f@nvidia.com> To: Danilo Krummrich , Alice Ryhl , Alexandre Courbot , David Airlie , Simona Vetter , Miguel Ojeda , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Trevor Gross Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, Eliot Courtney X-Mailer: b4 0.14.3 X-ClientProxiedBy: TYCPR01CA0164.jpnprd01.prod.outlook.com (2603:1096:400:2b1::19) To BL0PR12MB2353.namprd12.prod.outlook.com (2603:10b6:207:4c::31) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL0PR12MB2353:EE_|SJ2PR12MB7990:EE_ X-MS-Office365-Filtering-Correlation-Id: 650cbc12-adb4-42f0-d8ab-08de6f890ab2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|10070799003|1800799024|376014|366016|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Y2xNaWloL0V2Z3NWUWE0cE1yM2gwQ2pBa1NuTThRRlRZNzRlZEdrS2pHb1dE?= =?utf-8?B?WkJLbzlEMG4zaTEzWk55WTREeENka0RwakFWOTZYaXJUTG9oZ0k0eVQydS9R?= =?utf-8?B?WEZuU3JHQUdGUTlQVWpmcHo3Nzh2eG1JS3VabnZWSWRrWHBEakNTNzJxdWtM?= =?utf-8?B?N2hSM1lvQVNFSjlMZmNaczdwWDNGS1B2emtoYk8rNDJKM1JPL1ZaaFJkTUd6?= =?utf-8?B?b1BGMHpBdGdqazFIVjVDbzFXc1Vmb3FLZlpZMkJMcWZrdi9mRHRHK2ppRjJX?= =?utf-8?B?S1RNV0xZNStrem1DVm9oUlB6M3hYUnJJMFNSaXVhdmNRZ213RmZKWCt6VTlv?= =?utf-8?B?S3F4Qmp3N2NDSG9ISjZ2QjE5UDVSUDJBSDlpbGdBYm90aWd3d1lET05iMTBt?= =?utf-8?B?aEtpSTNJUzdiT0RlU0duL09xbU5mM25ISnprUnFkN3VmaWFKMDFoUWViWVdC?= =?utf-8?B?cHgwZUJOZm5iNVloUVVoeDlLVlpDTG9td3NERCttL3d4ZUlrNEVmUitUWkto?= =?utf-8?B?OTdja1RxOEF5blE1MlEzNi9peXFmOXNzZ2t1QkRKRE1UU0VZck92MFBwVXZV?= =?utf-8?B?ZWVXNzNQV1VJRkZ5b1dUT3BmTFJBWHlNaGxmeW9kai9ZMG5meE5YWmlsSzFJ?= =?utf-8?B?ZkVzaW11dFFGNmNMN1RRZWQ4ODNsTytwRm9KQjNKeGJCQ1hFeDFlZ2hGSkcz?= =?utf-8?B?SGl3QW9Sdzl5WGhsUXgyRGU5U3FsdmJIOW1nOU5jVDg4WkFNNFZrUHFrUTJY?= =?utf-8?B?dmwwYUZGZGNuUmYzNTg4VHdYM0RFZzJXZ05iNXJlMjBiMmw3RkVac0tNTUp6?= =?utf-8?B?VlBvTzBOSjJUQVhGMlhNVldSa080YmNKTDZnMU1Ya1ZzWjRudHZlZG9jMVF3?= =?utf-8?B?NjI3aTNTdjVxTU5tcS9vOFhrSmtCSWZ1MVA0eWpGZzhXTjRLRnFZMUJXcUU1?= =?utf-8?B?ait6M2pHaXYrRlQrMGhNWisvaWFRbEZBdkdtL0dneXhqUnY1TGpaSUloNnNs?= =?utf-8?B?NFpqS3FOZ0UyTnhlclRhSDJLNitVMHJHN0NSRGlFMkx5R2FwWFBEZzNJR044?= =?utf-8?B?STNhWW5UdkczQnJ2dVlXSXV0YjQwc1dYMmtYN2ZSS1RCdDB3c2xac2Q4ajZo?= =?utf-8?B?NnhYODl4OGVPNWVPYlBOalpsSUhiSFJIdUlGUVdVSHUzNlZiVS92MytYU0R6?= =?utf-8?B?T1hZRHp2TEhVUXM0UmlCTkV2UVNSeWJUQ0lPWUUwYm9VSVFOaFdEUm5GemJR?= =?utf-8?B?eXdzekVqckFCaWpzMm84b0N2MDRmRmdxY2ZqSTd6UlM0cDNXWTk2MWQ4cXR4?= =?utf-8?B?ZnNIRHRnVDNXNUM1aXFEK29lWWxFSStkNlR5ZjdlSHo2dDVtWEw0SkhUci9Z?= =?utf-8?B?UE9KNGxub0t6Zk56QzNMb1dOTWFsbCsySlNBUjlxaHh0N3N0RXZBbER5eDFv?= =?utf-8?B?ZDhVUzhOZW56ZG9nbGpqU2Ivc1NZVFNqdFk1V0JrSWhEbHZUNHJGSGpEVGpa?= =?utf-8?B?TEYvcldZUzdBZTRlYmVvOWRLV3JoQlVBYzVWRy85ck9zSmlacE1PcE1iVTRl?= =?utf-8?B?c3dmZzlpWUw2VldMbWxUeHV1clNTbVdlNHhzQVI5TEpTZkxGYlN0VGFHcU9F?= =?utf-8?B?WjQ0dlhhbVdRMlRrYUducEVCbHhYcHkzSlEyb3lCN2ZITEVMQk55RG9jZ1hv?= =?utf-8?B?UHpia3dmTGVUd1pMS2ZxTkdlZVhWRkdKN29USlMvbDd2OUVCbVNQenJ3VHVO?= =?utf-8?B?Qjd6QU9CZStTdXpoZXdnT0t5L3hrYmpjZXY5Tmc3MXAwQ1BZYWNQOHNtWHZs?= =?utf-8?B?QzVza3A1RlBnSVVRV3pjb01HSzZJNmE1SURsbXJ5S2ZkU0UxVXBvS2c3bWVq?= =?utf-8?B?bnIyZlVZTnZvTWxKTGRmNVhIemh6dlY5MnFFNGVHN1dESXFiVDVxa0NQK012?= =?utf-8?B?eWwvall6NDlmbnpZTk0wVEk2ZHlVNjFiTEpuNFJtcytwWkE3Z244bEl0YjNE?= =?utf-8?B?VWFTdUdjeC8wcUF1UVdENE9CQ3J1cEJiOVdkbDRiNzVaTVVGKzNKTW1EK0Jx?= =?utf-8?B?b2EyVXlYVlJWSW9lcnF1U0crazhVTWpXN3Awem9jS3FHaENZaDJNeWJxQkZT?= =?utf-8?B?RzVjREZ2NVB5VzhwTjdaQXNnZ2FZWDJpRFhzL2h0S3hpb05rMGlJajRtaUZt?= =?utf-8?B?MGc9PQ==?= 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)(7416014)(10070799003)(1800799024)(376014)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?b2xoaEtsNXJMY0gwUnlQQ2hiQzBEemxWM0VHaE9GN2tKb0M5cEhmREgrNFVX?= =?utf-8?B?aVIxTFpIZjhwUHFYWWx0T1JzTUVRMFRESjZGNnBLcHBpdnBocENOeDJzZGpC?= =?utf-8?B?eCtabytSbmYva0FRVmlHMjRXVWhTTXZzREFBVGYwWGNHNzJicWdLL2RySWYw?= =?utf-8?B?bWx1cE5QYTZlRHgzUDkvanUrU0RuVktWTnU5cWJtYXdDRlBXcmMzVENHTWRu?= =?utf-8?B?M1o0RC9SUWt4U0FBZmYxcGQrb1YzenhxbkU1dHdjNDdxbWxCZitSV3czUDQz?= =?utf-8?B?VkxPYTJoY1hhdjVLekFBWjJQZC9nWnlqYzBKYUhodW1nYTRVMUxFZm5GMnVo?= =?utf-8?B?c05iOWEvdThTa2V6YWp2aEM1VTNzQitXYkhHY0I0L2JuaXZVNUxNOU9FQnBP?= =?utf-8?B?TjBEUFVoUUdrczFkM3ZvdDZBYW1Db0lUb1MrSHdnTENkN3RVNU1XdEowQm5Z?= =?utf-8?B?czRzQmFnemNMNnVrc1AwQllibkNSSjF5YmNUcmd0Nko5T2ZlL2JyVEpIR3Fw?= =?utf-8?B?cjRlZGZjSGwzbmU5QUxZQkdPTVVPdHFWa0g5OWNJcnRyU3lkd29JQXQ1bEdJ?= =?utf-8?B?SURUS3RJV1g4ZFJTZStKS1ZNNW14RXRYUEQ3NW8wbDArd3pKU1IyRnZjYWdV?= =?utf-8?B?N09jWUtJMkFWcjUvWS96eEl0WVVWQlRqcVkxelV6T29ERWlSck40QmhHUTB2?= =?utf-8?B?MVhINEQwVnRWK0lmWi85OGNZYUQ5ekFzYy9LZFZ4NEo2bVZncEpPOHNJTFJx?= =?utf-8?B?cHRUWjNud1lLQXllY0tnMWlPVXZFTk1rZG5ad2tKclJ1bHhLU0Fld203MGZX?= =?utf-8?B?SnNLamdyR2VGSEdHMGJhVXNMZElwOWc1bStZSUtDa25WU01GTlNtVXNwRWhl?= =?utf-8?B?VTB1Njl2c0EycXRJdUFJYWtpSk04U0dxdWo3TVNGTTRJbW5DeEEvNGFCaDBj?= =?utf-8?B?M2FXMHA1Z1NORk9NSDZKazRkdVNIUklndUlDaytsd0d3QmxrSGZQdTFBU2hS?= =?utf-8?B?QzJTcmpzVVh0WjA2eFRmazFGMlllTzVsd3pDWmN0Yk9EVlZJSDJOSU1nYkR5?= =?utf-8?B?VUNZOXloWlNFb2Q3NXYrbng2UkRqMXRLbE1SMFg2ZmF1c2tMdENFTlpoYTd0?= =?utf-8?B?b0l6L0xNWDJWYWx0dFV0YkVkTEVsUjFXd3Fka1JmNDFFK3B1Y255Vi82b3Zi?= =?utf-8?B?VWZ6RDFxOTBjSmVSVXE4RGl3VUJsdGpuK0NXZm1OQUl3eTdEa2RJRzVzTkYx?= =?utf-8?B?MmtYMS9DcmRjVVcySVFNVTIvRUQxZGZOeTlRRDZZWnBsMlZYaFJPcEo0OUFC?= =?utf-8?B?SkJGdEtURndISmpURk5scVdpTHdablZrSjF5U1JpMlJzbC9hd21nQUxnWlpC?= =?utf-8?B?NU82RTN1eCtjNlh6Yks1K0oyaGgzYi9ZSTdjNWE2YVJQdW93V1ViaFVTSlhO?= =?utf-8?B?VC85VmxBQkdsa2pqVDJEUnBaOURDNzhKTUg4NzdJZSs0MG1heU0vNUlXT285?= =?utf-8?B?ckVxZHV1UHFNNjlNVUZibFhNbVZYYW0ySERLN3NMU1RBNWNKQXZHMW96RzRF?= =?utf-8?B?cDdGQTAwbDVDakR4ZUJ0bGVyMGlZdFVZdStqdDBjRGJmYUZjUGVCT3BoUmhZ?= =?utf-8?B?OXlROUV6NEIrdkNwTUNEVjI1ZGdHTXpYS0FucEl3ZDRsK1VvZ1o2Q1JMY2hu?= =?utf-8?B?R2oxVFU2ZDJXWTQ0UWhMd09IOGxVQ0NYT2JKLzl4eUg0NExrMkVWcm8rQ2VC?= =?utf-8?B?ZWhMS2hlNHZ5V0s5cXZiNHc0aDZWRDU2L3d3M2tlN1ZzUDFXM25WU05FQVhH?= =?utf-8?B?SHc1RDF0aDVIaGdOdG4wNFJVZWhzZGhId2ExbVV1N0VhV1RzRWVVcDFHbEZ0?= =?utf-8?B?UXY5N1UvK000TkJtMWdmQVFUdExNRE1WMG9SUm1QNmx0dG5KU0JoK3hrMStY?= =?utf-8?B?MEM4VWdJWVI4SUxIZkZVVHp1L1U1SHZZYkR6UWpKcmtCVzBVaGNwUjNjTU9H?= =?utf-8?B?QzVFR05ha2t1RzZGZTh3WHlLV1EyQ1NhdVFlMHJJNWpZYjRnbXRTWFl1ejR2?= =?utf-8?B?UHE1YkU1WTFTNVN6c1MvN3FuaWU2cjcyTXNFeExudytpUzdiMXRsNE05a1F4?= =?utf-8?B?WEwyN1AwVnEvS2RlM3JRbFBSU2ZCN0dXOHBGeDMrMXY0aXBwQWxBQ2hMTFhF?= =?utf-8?B?TE1MK1V0SkNtMlFKaFBzZ3dsTDQ4M0hUN2xBM0xuWGFLamdmSGF5R1VhcGFv?= =?utf-8?B?c29CN21TcC9NZ2Z4UE05STZHN1l5K0VYS2xVZXZ2SG1yVXpIZUcyVllsWWlD?= =?utf-8?B?YU14cEJuVTUxR1Jua00zbU9WK2VMd0lqTXlnVDNZVlg4czA2N2wwUWxSN3p2?= =?utf-8?Q?Ovkurzv6LEx6xr2qWQn78LS6WDsPb4UQlNM0OMN8rZGPN?= X-MS-Exchange-AntiSpam-MessageData-1: 93kVJTwu3x/mBw== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 650cbc12-adb4-42f0-d8ab-08de6f890ab2 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Feb 2026 07:32:31.6740 (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: JLpMUS8MuZTjBQDtm2N6QU6en5w4YBtmaWHXFVjj37/VpI7C8TkYyeZlT+R3JkSqYQoQxwEx+gnT9z9HOd5vQQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB7990 Clarify why using only the first returned slice from allocate_command for the message headers is okay. Signed-off-by: Eliot Courtney Tested-by: Zhi Wang --- drivers/gpu/nova-core/gsp/cmdq.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/nova-core/gsp/cmdq.rs b/drivers/gpu/nova-core/gsp/= cmdq.rs index ae4aa7562dee..08b8c04909a6 100644 --- a/drivers/gpu/nova-core/gsp/cmdq.rs +++ b/drivers/gpu/nova-core/gsp/cmdq.rs @@ -518,7 +518,9 @@ pub(crate) fn send_command(&mut self, bar: &Bar0, co= mmand: M) -> Result .gsp_mem .allocate_command(command_size, Delta::from_secs(1))?; =20 - // Extract area for the command itself. + // Extract area for the command itself. The GSP message header and= the command header + // together are guaranteed to fit entirely into a single page, so = it's ok to only look + // at `dst.contents.0` here. let (cmd, payload_1) =3D M::Command::from_bytes_mut_prefix(dst.con= tents.0).ok_or(EIO)?; =20 // Fill the header and command in-place. --=20 2.53.0 From nobody Sun Apr 5 16:27:59 2026 Received: from MW6PR02CU001.outbound.protection.outlook.com (mail-westus2azon11012032.outbound.protection.outlook.com [52.101.48.32]) (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 A992B33439A; Thu, 19 Feb 2026 07:32:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.48.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771486359; cv=fail; b=kg3S14dWZAi7sj41gkMvkK6h5dFaBj+gKowJWLRfF2og1Z11cGCw5EACp7uzFl0A+6fo3HvbwMkNB4ev/SxSXNYJ6Ao/egYo3GvfMT2BPFR8dNlUCFVtRf232aoFrTmqHcLUaAXqP7CA+9nM5EPtGz24MfH187capF/WPSkfsgE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771486359; c=relaxed/simple; bh=sODhI+PCg5+IMuqfkpkj25SF/bJj//OF3BEnlduGwHQ=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=s7KGUAjnmPK1ER1SMh1OPNN+XVElwS127fid4MiNq+mmtRbbkSt5XuCLeyCklvOqPG3YSy2P61CguohWxNHjHNO1odS6ws++f0J+WLtZLKRKNZEt9AiDUSxsZPGu7EAy9+q4GFW6/osLEFrEw+0/P2q11Bv9kvKlohJKbipZQb0= 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=ipzPuyxr; arc=fail smtp.client-ip=52.101.48.32 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="ipzPuyxr" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=n/BAOyesNVeILsnL8CzylEXZBBTd1X0CnaM80xSndyvkQsbRtLKuysCYgNuxm+8WesTgSpXkaGSjwZ4z3t+fy4B+ihpShKFPGuhn8iGdas4kgMg6I7qmO1ZwUKjYZHxvUYPhTdB5Jb8Nro9le1lB2xhgdUvsdApb+jhOde/JTnJP6/oeLe0KlCrylFz/jLRAfo23D3wrYbMyHSzl9LvmJCYRHpOnR1U4MEWcTcffVjk794fpw7jkXCmS5P8FgnqRimezB2LSGSmHkaDqoUIc3m4r25i0MKu5aI5lFhkF846PaWzlbhXObIC79iCvEKpJ9aD3zCwv/80/n+LNyDVF/A== 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=wDajBE6E1o/O3/Tulrpylpgf/4vh17owMUjfNUyXWN0=; b=Aqgwdb/HHAWsHGHgQaa3l76716LnY2A0AiElcJkx4yedvsUv37ufrOTDfq/H4LwwHIMbwSL4nFlBpkWGYa2o2oOKPH7JDfW1F6BQi6n3+WXgcav089gXvE3PdoQDVbRYXUJvYe67a+vu2rdMUUcr/8tXUjv7NxaykUR4YbA58bW6ofpyFi4tUyiMiTyGKkUgALxJapP4Fa9ZR07BlkwayjiahkGj7we8+MPQPXDzpLtslzRH5xYSALyJlkrxVhpzUefRp5JWwbdsMdi5z/ZnBFLq2J2bRMmwXg9m7wxx0N1Xv/N76TN3JrPAfuEOWNZ1I9kuvozvYzX113Yy60vakw== 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=wDajBE6E1o/O3/Tulrpylpgf/4vh17owMUjfNUyXWN0=; b=ipzPuyxr9QCoXmQz1xd22hSg4xzlqqfO4Unc3OtsSgBGZXjS7lUlgjCzB9cUzi3h8/kp19EfQzHe2Hsg0M70xlmPsF89S4AOkDOtQvDCpjgkKS0UexdPYIhKUUL7d/DE8wsIvmccA91vm7I6tGxqpIURbci6rGsHTKtdHHFKcmLN+D2R82BXJ6YEwMo2IZs8iH5yKYuRNb8ZdTL8wzHUJDCxHNPvM5GoD5SR8LnQqVhv1FyKIwqKbX5qaokNhweBlHSM73XcxmvzcE0To4may01VCL6/QGya/EB7N0wIfdCm8RDHwtmwHL0ePR2QAO6TWx7Fw2BXa2wwUS5sP2edbA== 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 SJ2PR12MB7990.namprd12.prod.outlook.com (2603:10b6:a03:4c3::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Thu, 19 Feb 2026 07:32:36 +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.9632.010; Thu, 19 Feb 2026 07:32:36 +0000 From: Eliot Courtney Date: Thu, 19 Feb 2026 16:30:55 +0900 Subject: [PATCH v2 6/9] gpu: nova-core: gsp: unconditionally call variable payload handling Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260219-cmdq-continuation-v2-6-2e8b7615536f@nvidia.com> References: <20260219-cmdq-continuation-v2-0-2e8b7615536f@nvidia.com> In-Reply-To: <20260219-cmdq-continuation-v2-0-2e8b7615536f@nvidia.com> To: Danilo Krummrich , Alice Ryhl , Alexandre Courbot , David Airlie , Simona Vetter , Miguel Ojeda , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Trevor Gross Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, Eliot Courtney X-Mailer: b4 0.14.3 X-ClientProxiedBy: TYCPR01CA0162.jpnprd01.prod.outlook.com (2603:1096:400:2b1::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_|SJ2PR12MB7990:EE_ X-MS-Office365-Filtering-Correlation-Id: ffd1e5e0-20b4-4f8e-d4f9-08de6f890d43 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|10070799003|1800799024|376014|366016|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?ZzVYVWJmOFM0WXB3K3dUUFJROENzVHZmaTdOTkNZTVF1MVNxYXZSRThGREVK?= =?utf-8?B?Nm9zYVk0SXpBZHBYSjFlZWJpV0NPZXFsVkZUdHdmWXVyOUNIVGtUSmh1Ukhu?= =?utf-8?B?b2taVWcrNituRGpNNmw3ay82UzMxRzJGbjgzZ2VFWnh0Vi9pbStKMGNSSW9X?= =?utf-8?B?K3doNzNTL3RsNmZWRW9EYUtBSGxNRUNrRHJ3OFVLSE00RzQxcWY1a1h1MGU3?= =?utf-8?B?SFZ0akt5SkYyODhSUEZiYU5wRTYrZlpKVG91T1JwYnViajZOR1BrOHRMOHZx?= =?utf-8?B?K1g1dnl6ODBEWVlmYi96QVJjRGErTjMrRFFoaXhpWm1iUFVNWit6VlkrcnJ1?= =?utf-8?B?UzNtMHR5UHVPSG1iZ0lJSHU2blF5dTlxWHNHbzNuK1F5dk52VFhvUUJGejVN?= =?utf-8?B?dUZSQXRDaG5PZ2JGYVN2VWlERnRBMUZNV0d4ZExtYXJIdFhuekVXS05QZDlB?= =?utf-8?B?RVcvSVg4RC9zV0pQY2hMUSs4SEVmVCtwWlErcFpTaUlmeVM1MnVhd2IvY3Yw?= =?utf-8?B?ckVMN1lxZFNKdEVuUVllNDRJMDJBVU1Ma0xKYm9xdnZJUkdhTEtzdnhKTTIr?= =?utf-8?B?V0pxaG1tZmVac3JpYWJhenI1dmhjYzdlMWdYUUdUYW9yeEpHbERvYWdNYXJW?= =?utf-8?B?NFgrM015Z0hFb2tWSzF0b3dJNWFxZ3pVWmJaQW1QNDFsSFhlOXYzMSszbDVM?= =?utf-8?B?b2E5c3lQYW9FQytyV2ljSXFrMnRQbm5GZ1pnY0ticVIyV09kUnNCUGwyVHlD?= =?utf-8?B?TmVNUnhrSThWNzhkMkc5SmN5b3RncEFIWlZ2TG9oTEE5RGJrUmdrYWZKVGFh?= =?utf-8?B?dkxqTnBXMkNwLzZ1eVhTRFZoMzU4T1J4azBlL2JnNGErZ0M1VlhvaWZSMmdJ?= =?utf-8?B?WUpiY2QwRk5PRWF1clordVVvWTlCdHdXSmtlMlB1M1RtQkVwbTVNbEJPbTND?= =?utf-8?B?RmtmTlJraUZxbnczdXdRUjRwR2JBNVZCRnB5SzBCTjh1RlhPTVAxMVo1Z3JO?= =?utf-8?B?OGUrc0U5RFZXSWhEdTlhSXh4aXMyQXY1bzZPQ0RyaVZRZHNRc3dDRHFDZEEy?= =?utf-8?B?U1IzSGpKUFRwSGZjSk1MSG5PUEljbm1ET0g5ait1dzhKVDEvdVdDR0UzWFBY?= =?utf-8?B?Nm9NY0VLcGhXN0pHT1UzSm9SYjRKR2xZT2NITXduNHhzd0FuaTdtYnhjSmZy?= =?utf-8?B?VzdxVStyUlQ1ZjFuaERtZzdNZ1J4Mk9tbFcyeVlCVDRRSUtRb1BIdHphL2o5?= =?utf-8?B?SFpWME5DcGswb1FVK0pjU1hTMjA2UmdTMXFVdWE5RGsyMFU5bFBmTHFEWTdE?= =?utf-8?B?aTVHeXVaelFiWWRQQ2x3NEMzMWlzRm16YWpKcDlsdHAwdnlxUlpDN2h2VWEv?= =?utf-8?B?dGYrci8rN28vcHE5V1ZlMGhmb2xGdnFMNzRHZGY2TnNoMGdrbUM3Zy92UGYr?= =?utf-8?B?WFRMVEhpdm9zbE16QXFkazhPS2NnNXFHRXZiTFZPRktoeU9kQURKVzdQQ2hT?= =?utf-8?B?YmZMSWRYVERJWnQyNjdYYk5kRlozWTN1TDg0WGdSS0NjNFA2WUtTaG16OVB6?= =?utf-8?B?TnZ0RzRvc3QyenhYcnlDaXRLUTNBVU9pdDBqTEozOGFmTmhZTjhLUGdGTnY2?= =?utf-8?B?UzNlREdsNWFYSDFWUDUwNjloeHBJRmhBOEJQWnN0WVNld1BtbVUxL1BUK0FQ?= =?utf-8?B?alJaNnl4ak5DbGR6M05LSjNvSndmOENqa0pFaHFhbEZWNnpSRDRiSk5OZjNI?= =?utf-8?B?b0lWZWo0VzVyc0RjT3lyeHZoNzZxTS9zSG9xZnBQTGo4QzRBY1pKK245WU5J?= =?utf-8?B?TndmdXJaejljUEljdWp1OEZ3NG1DOHFpc2JKNE5jWTdCYzlicVcrdzQ0VGph?= =?utf-8?B?QmZpV3k0OGdHeTBpRXpacmZaUVZ4dmsxVy8yT1p1dmF0VlhIWUdTb3dTVEhI?= =?utf-8?B?azNrRWgrVTRQVEhWSUdpaERCckdBWUVNQ29oWWt1TVZKSVVMWXgweW5nWHN3?= =?utf-8?B?cmIyNGNqd1VnWCsxL3I4dkduQ1lwWmk2Uzh1OXJTWUlXMXh1OEljVCtncnBN?= =?utf-8?B?aU5DV2s2dHl6WW9heEpGSGdOQVB1cm9DTE9hMjFldlZ0eVFxY3RaZ1NsaWJF?= =?utf-8?B?M091SlZWOUZGRlNhTktBUysxdVhwV0JnMWQ0Yi84eEFNL3FjUU9hRXFYem41?= =?utf-8?B?aWc9PQ==?= 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)(7416014)(10070799003)(1800799024)(376014)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dVhkR1Q5Vk5qUy9aU1BUY2lDaWRZWXFOTXdlR2FqWVlHN0FRWk9PWkJXU2w3?= =?utf-8?B?eEtVOFZHUFNTb1BVZFlLTGxrUGxXTFkvYkVRK1Q3K3NmSGZoUTQwY2tHR0xM?= =?utf-8?B?eU4xd1lwZU40aW91R2pSZndhSlRUT000YUpTTUJJRXNGaVBPVzY1anI0NWwy?= =?utf-8?B?YjA0MmtoQ3FBQjFLUDY0YVRTUTl3NWR5R0NLTytLdEJ2c0tWNUZTY2p0OTdQ?= =?utf-8?B?dnp5UlI4NS9sV2tvdzdFa1UvR3A4bElJU0I4eVVsYXhReWtsTHd6SmN6NnRk?= =?utf-8?B?eUpQMzNTNDNGQlZ3TjJMVHM1SzhTdjFGSnduekpMNmpIcCsvdE5oaGpsRit1?= =?utf-8?B?cmZ0SjBtOEFLaXRsYitETWJtd201b3JtNkdSbTdJWkl3aDkxMVJNb3l1aVNm?= =?utf-8?B?Y201NjhXbDNrZGpZTGJ2S2lpc0cwM21GMXFOeFdYY2h2TTd2U1pKdXpaK0Iw?= =?utf-8?B?a1d1RTFFYlJmL25ESFRzdGxsS2tidDVDS20ySDZoaUpQQlVNangxTzVvd0Nk?= =?utf-8?B?MFJGdFpHaEpVQWh1eS85eU4vZlcyOGdJT3FBNDVtV3hkM3Vqc0ZXU2xrSlN0?= =?utf-8?B?WWZCRVg0ZGZwT0pIcWs4NHBIbEY5N2ZoYkY4Tm41S3hKU1d1OURKbVJyalJT?= =?utf-8?B?S2dlelN3R2pHNEZucGEwTjFleHF3T0cxZXZIOFBPc2ZKNHBaZk9wZWxUbkkr?= =?utf-8?B?SG1iZDZDbTNKTFB5NVFyTGtyVWIxclNJZWJJU09UWVN0cTZEMU9sMjErd0Uv?= =?utf-8?B?RzlRL0Ywb1RlU0hkVnpyQ2xhNWhOQVJuR0FpZTNTakVTalpJS3d2U21RMnZ5?= =?utf-8?B?ZjExL0RYRTByTFlydW94NUZVZW5RQUNEUWxCRHA1WXVCUVc1Q2w1Z3U3MVVz?= =?utf-8?B?Mmt5V0xBdElXQTkxdWdPWWNudlZ1TkpyVHZnSStjV3E4c2pvakVnY2ZjQ3Zh?= =?utf-8?B?Vm1OVjRmcDZWWUViVk1zWlhzTWtHd2drVmJVZHk4Mm9oZEw0Zlh1eThSSlRz?= =?utf-8?B?R2MwOHVQTHBJNENOYzEwMit4Q1FwSXBlUVJxdUJtdDk2NkZrV3huSitUazdX?= =?utf-8?B?bHJ3emViVHpBMWNITUJQZWw4dlYzazY5M3cwMTh1RUFCZHBjcEtCMXNkQThW?= =?utf-8?B?YWpiVVArcllrQXJIaUUzeXJmYjlSczBpUm9jTE9DSXNrU1Y1SjYrSDBlRDVJ?= =?utf-8?B?OVpsMHJPdFZrTS82MTN0NmJIdTdBUjZPaEZnYjdheXA1SUpoQnN1VzhoWmRu?= =?utf-8?B?ZHBCVUs0WEhIaU0yVDNxVDcxeXJrM2ZTUG5HR2pHUG84UDRvbzZQUDhvSzh6?= =?utf-8?B?bWlCdUtvQ0JCZCtydmdCeVg0aUt5bUhGai95em1lQ2ZlYkZLUkYvaDZmQ1Rw?= =?utf-8?B?a2l2R3lCOVl6OUdGRGl4b2E3YUhzMWhOQ01leGlQK281ejhQLzk4SHBvKzht?= =?utf-8?B?N2Q2Uld6blR1ZkNKQ1IvSFlETmtwUXd5K09iemdBdlNXOXZUVG1pQ2NnRG92?= =?utf-8?B?c1A3WFBzL2pCT2lla2lCbFJvSENDdmgxSFhvRGtEUmJ4dGRrelZMVjNjRmIz?= =?utf-8?B?QS9pTDIwKzlDaENocFUyQkV5K0gvVFQwR0o3dmV1WVRPOEUyWWtNRlVSaFhs?= =?utf-8?B?YlhQYlJ0NTE4RFg1WjNJUFdpOWloUmdDWWJKZ1VBOTdGNG05TklJUUlFdmhu?= =?utf-8?B?VWNFUStnRmtKRFA0TEdXckNhUzVod1l6ZHpLTDdKUVhOSlEwa2F5NDVVV1o5?= =?utf-8?B?ZTRPMWErVXFOeGdjdzZpd2dBZkxVS2wvTXZGNHNOeWJBOXZRa0VNT0t4dngy?= =?utf-8?B?YlhMWU9KV3NEMlU1RE04TUo0TWRpaTY2Z1M0VkhSbHNaS2lNSHUxVDE1amkw?= =?utf-8?B?NlRoUngrRDZuOEN3S3NDU1Rmek1ZdjYzSlptekVZd1d1b255MTBkdVlIdEtD?= =?utf-8?B?UFg3R2lHUElZU1NRK3YrQmtPbjI0ZEt1dWNBaFBKQ3JvbjFQWHlJaE42aWZV?= =?utf-8?B?blovNGt2a2FqVnRuQTJndGFIQjFLSGZnTU9GdUxabWRrQmk0T1NCNUtCTkg0?= =?utf-8?B?WVdBYjRwVW5pRU10Wnk4bEhJY2d0OGNrdlhVSm83a2Y0S3hMaEpkeEFYZHFt?= =?utf-8?B?TXNsQVRiN1h4QkFwanpCN0ZpYTZaM3F6clNKeGJpbkN1RGFRVVU2YVkzM2tN?= =?utf-8?B?Wm9DalFoSHJOMDhYUjJuWDFWazBtM0hiQjBpNXZBQnBIdldESWorajh6aUVE?= =?utf-8?B?aVRMc09EYlNWSjJaTjR3em92c2c1ZXRZNUdPWmxFOEROa2ZTLzVCSFNPTWhU?= =?utf-8?B?dXhTUzZzd2NwaE1RYkZNUmVMTVJ6SDFCNjZsTmplektpZnFQWnk0UlNybS85?= =?utf-8?Q?URWxzLfQkqAMM590rEJUQ20bZvg2kth9tooPQ3UPZRA/s?= X-MS-Exchange-AntiSpam-MessageData-1: Fq+s4PBdT3/8FQ== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: ffd1e5e0-20b4-4f8e-d4f9-08de6f890d43 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Feb 2026 07:32:35.9405 (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: Qj8pNARK3NfLwM9cdtrKrPRbCKgYMe+poQs8HtVa4ulNKysmMg5F7uriDpZNLcGI6SxND3LIqsvlNnh39h+WBA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB7990 Unconditionally call the variable length payload code, which is a no-op if there is no such payload but could defensively catch some coding errors by e.g. checking that the allocated size is completely filled. Signed-off-by: Eliot Courtney Tested-by: Zhi Wang --- drivers/gpu/nova-core/gsp/cmdq.rs | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/nova-core/gsp/cmdq.rs b/drivers/gpu/nova-core/gsp/= cmdq.rs index 08b8c04909a6..1547687834f8 100644 --- a/drivers/gpu/nova-core/gsp/cmdq.rs +++ b/drivers/gpu/nova-core/gsp/cmdq.rs @@ -532,16 +532,14 @@ pub(crate) fn send_command(&mut self, bar: &Bar0, = command: M) -> Result command.init().__init(core::ptr::from_mut(cmd))?; } =20 - // Fill the variable-length payload. - if command_size > size_of::() { - let mut sbuffer =3D - SBufferIter::new_writer([&mut payload_1[..], &mut dst.cont= ents.1[..]]); - command.init_variable_payload(&mut sbuffer)?; - - if !sbuffer.is_empty() { - return Err(EIO); - } + // Fill the variable-length payload, which may be empty. + let mut sbuffer =3D SBufferIter::new_writer([&mut payload_1[..], &= mut dst.contents.1[..]]); + command.init_variable_payload(&mut sbuffer)?; + + if !sbuffer.is_empty() { + return Err(EIO); } + drop(sbuffer); =20 // Compute checksum now that the whole message is ready. dst.header --=20 2.53.0 From nobody Sun Apr 5 16:27:59 2026 Received: from CH4PR04CU002.outbound.protection.outlook.com (mail-northcentralusazon11013070.outbound.protection.outlook.com [40.107.201.70]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4B674338939; Thu, 19 Feb 2026 07:32:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.201.70 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771486364; cv=fail; b=oRFsTwkJUh0o5sNNUAPo9gUEPuvNBkEHihH3XOqCEGUCvFAJ6K3wmeNmfEqzS4g16VUD8PEh1ER+bf9eWvQGVvQY35kd8n9p8uw0io/MMwpS+3yKaKvcjOaGAp//BV+muk9XsBe2BiK2KqbJLFnRAC31vJOTq7IjXhDYkgKyObY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771486364; c=relaxed/simple; bh=+fJwE3SuW9rdqJesh31Z7u4nLiZIIDwLCFW9/FRzJnY=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=GmYxO+PKqWjHwG7369cVDm9YP7g3Q0hK+hCxihfDkDkeFfP2PgpW8Bw0hfoKDWK1Wl3eNjP2yYjVnp0i38iBg/GemuBjoZJAPV1+jlr/KuLhLNo9YFYGYka75ui0skQggSD9hJnacjJ1aUx9DG5pktRw/vLZ2b/IgADuMAQRsWo= 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=MU2WTpQV; arc=fail smtp.client-ip=40.107.201.70 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="MU2WTpQV" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Cj5FJQ0oOuDwWSyTKHyQHFVRn4IjKb2yv8NILSvqz7CXBfIbvLx8V0yus2K8MDLQrFHgQ+7QGuYrmN+eLnUOrC+AE9mOVZgoejzcgsnmedvrEfRRWKm4aj02mWEZjZrpLoxxKxaUKYYOJ0Tz+KQTbHN9bJEvTFg+asIqOpiTtVjsxWEWNrGhB48Z+xg+D8j8/Ej8mPrW6C+AilgUQDLpVtgmhPScE3DFG6JdutO6AvPOyuZepf3c7MYJnUEqZDo3esdH4yyWYDOSWK36kkE9WolipRUHRJI3wAu0T9FjhswZmtIxNzH0lXuAT4yQx6wD+GOzJukKk1XOClURxfKoIQ== 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=+l8zeIumXAmE1bCoH4xQWEBFgp6f7b5v6lLWV6HSedQ=; b=nnoSf9/3NQee31nsksAGCuvnHAb36iIA/M16SxG8eUSVLOLxxScqkcXj+2XBSbb1iomOkDPxMbkNDtkX4jYdjIz2UnWy5z0ZdFdJaj5unA5kueJySYxIltAvUtMVTaUgzItVN+bcWzDvGaC5kag+K+IbTbqBAvgIWKCg3OWd9lr9K+hI96L1qJsypFJ2uyf5O985uSql13IF1wD1xKwcDwPjkD5kXYeZeS5virCEEycCJRWAuk7QjA+NNehz/YKcg/KOIK9p+UUJHsRSeugX69FEE91m4G8QDo47M+AZTXDFq2KNNEKqc6vnXz0N1F2LcBXXmJoxw/KyaL0yiyDAmQ== 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=+l8zeIumXAmE1bCoH4xQWEBFgp6f7b5v6lLWV6HSedQ=; b=MU2WTpQVp5I72IicgRPh/VDmhLKOgeiWVwdXSXyayUegX82wXoSO1CvdOk1uqpy7pgeeQ/yt9JpFVx8S2qK3qwh+2rTX1bvmg2JecoqU+jmg5PE5CEVpF3we2+SssgVuIM8icm5L3W7+Sar5l37IDTEmkNulk5dblfT9wwHkUsiMINMUq5pYOU91nG2dA2lPSRB8bOmgerxObMn1ubAKdr+885SU+Pw/f15fuvxVkfP749BOShOfvHfAs0OxAwmTfoKpuYravwnU7BnhVW+Tzlq9OM7nWC6UnVKK+HQLkKub2unO4P7zMBv2JN+6vg5j6X/0IKpTNUiWbBWGbKOd/g== 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 SJ2PR12MB7990.namprd12.prod.outlook.com (2603:10b6:a03:4c3::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Thu, 19 Feb 2026 07:32: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.9632.010; Thu, 19 Feb 2026 07:32:40 +0000 From: Eliot Courtney Date: Thu, 19 Feb 2026 16:30:56 +0900 Subject: [PATCH v2 7/9] gpu: nova-core: gsp: add command_size helper Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260219-cmdq-continuation-v2-7-2e8b7615536f@nvidia.com> References: <20260219-cmdq-continuation-v2-0-2e8b7615536f@nvidia.com> In-Reply-To: <20260219-cmdq-continuation-v2-0-2e8b7615536f@nvidia.com> To: Danilo Krummrich , Alice Ryhl , Alexandre Courbot , David Airlie , Simona Vetter , Miguel Ojeda , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Trevor Gross Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, Eliot Courtney X-Mailer: b4 0.14.3 X-ClientProxiedBy: TYXPR01CA0043.jpnprd01.prod.outlook.com (2603:1096:403:a::13) To BL0PR12MB2353.namprd12.prod.outlook.com (2603:10b6:207:4c::31) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL0PR12MB2353:EE_|SJ2PR12MB7990:EE_ X-MS-Office365-Filtering-Correlation-Id: c03f506a-a26d-44fc-018c-08de6f890fe8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|10070799003|1800799024|376014|366016|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?WElyV1M0bmlzWVpFN2pXU3FSZ2ZrcExNQ2NRSWRuSStyK1FscjRBUk5uZVBL?= =?utf-8?B?WEJZOW1uOUFjKzQzOXBaM2dWR0JReG1tY0s1OTEweWVpVWhLSVdwajR2eGhn?= =?utf-8?B?a1FKWi85eEdERytJcko5NWtQa1h0R3h2WUZzTGZ5L1NTc0llbjZjRjNnL1Jv?= =?utf-8?B?b01TTDRkNWpDL0tmVTU5QXhLOCtNWENTTHFBSjIreFpNZDdhcC9pVmdaNVUw?= =?utf-8?B?a2p4aURPRnpZSVpaWVl1SlBObWpBTCtmcGMxb0NPNTRzblAyR3p0QkM0OVpW?= =?utf-8?B?L1dGTUk2YSttNmJCb3lzQ3RUeURBMERyZGM2a01sYlRsVkRYajVGUjdNMHpC?= =?utf-8?B?aGVRc1NnR1BoRHBCMHNlWTVWdzBrZGJGcUlkVjMreGFLTklHZDlmRGtFMDBS?= =?utf-8?B?S2U5Qk43cVVZQXVMcXlBUVlldU0yU1RBczFmYjJTeDBjdW9QUmxhdDc0a3Jk?= =?utf-8?B?c0trVEVaT0Zwc0t3elZZVFJyK2FBeVVFV2ZPYnRjUEUwakVGOWU0THdRUlRZ?= =?utf-8?B?eTNZS1Ewc1dQaXVxNGlTMlhmcXZlMzR2aXQzRVV3U1cyYUs3YXhDR3FDTnFD?= =?utf-8?B?UTdvaEw4Y3ZxZHlrcWZmd1JWamVPYit4NlJ1c3lLUzgvcTkwKzQzVjhaUS9v?= =?utf-8?B?dUIzUnl4Q004aldGRVZzbnY0dmFPdWtuRzFRV3cwUkswV3JSK0xzYUJVY1ZM?= =?utf-8?B?ejNsYUNmT0g5UVhYTkhkaXpuZjJRZ0ZqT0d3aXNsMEJOeDNCTGRRa2k5MnJS?= =?utf-8?B?YmEyVWZucE44US9ZS3RKVXJQUGIrWmt6NjJaczVZdTVlUklyUTZyVmlBeWpN?= =?utf-8?B?ZytoUzB3MlVpQzlEb3JsZWxXQjliV1ZxWndMTi9uSDl5T09IZXY4ZkRnS055?= =?utf-8?B?alNvMzFIQVcwd0VlSWw0cEo1VExNNXE3T2UraUJ6Z2xhUS9KL254QTh1UkYr?= =?utf-8?B?eHR5MnNzci9ab3hwYVNySmsrYXdvczlWdTNPbDJQMml3cUc1RkExV1RmbDVP?= =?utf-8?B?N1VSOWp5RzlpMGw2RXQ5ZnB2cHJaOWJHRzdGR0tDSG5BN0lJYmhVUkg3TDRN?= =?utf-8?B?d095S0x4L3l6SVJRbVVvVVVRcFFPY3lTb2d2U1hKRGF3SU82WDJXRlExMzNh?= =?utf-8?B?cFJodlpwUzZBR1RNTVFrN3NnYmtIa0V2Zm5IcWhqQkVIWGJuL1psd3kvMFM1?= =?utf-8?B?MVJETVN3M0FWR3JTZkhxMTMzcXUvcm4waWJNekJaOXZ2dy8vd1pCeG5tcm4y?= =?utf-8?B?bnFKU0d6SVJpTkNOUG1oS3ZOS2t6VU9qUnY3Y0NIaFlURTFpbzdsZTdFNXBy?= =?utf-8?B?QVhqOXNod1lDdGNoYnZCcGhjUElxbm9QUjB2YVd2WGVyM3U4S0VZVGRmOElD?= =?utf-8?B?VjR4M0NyTlNMOGR6KzBuUVl0Q2thYmFUYUhTZXUxc2VaYVQvRi9rYmVIcGZ2?= =?utf-8?B?bWc5aHhtNkt0eEc4RzlGZGVLamNrem9HZkltdzFKN21GaHRIbExURWhuQ0h5?= =?utf-8?B?ejBiL3BmbFBoYWovREdmcVkyeDZqdUh6WS85Z0VUQjlKK2VkSFdrWUJFMzZ0?= =?utf-8?B?MTJMNkhhdkpWQUdUelpiQ3pjWlZ4c0JrMHYwSmMzcHRVTmp3K0lsTCtQbUFh?= =?utf-8?B?TkhUTHByNVhMb3ZEcnpFREU1blN5dFdQbDNGT2l1RHEyY1FMZWsyN29Mc21w?= =?utf-8?B?YU9PUVJuOEJUcUxrOUNTS3YyV2d1SHI2azllN2tYSDlFeTRwN3l2L21rOVpF?= =?utf-8?B?cXA2RHkrWXZ2OElpM2J6TVF3SGVRWDFpeUpMYk14REF6NlFpSzFmVVkyMkNV?= =?utf-8?B?b0NKQU8zd1BGcjRZR1B1TzU1VTBJNW5nczFjNXlWUHNTYmlHdGkybXBFQndx?= =?utf-8?B?UnJEK2VlTkVCUWd3WDhIR1JDSEtXSmJtSVdlNng3b1Bsd2Rib2x4RzBpTVhE?= =?utf-8?B?Q2dGRTJmZk5WbzF1Y1NmNTQwU0FIK0xvRmpIWjFqV0pZWk43WEZvbHpIUTZ4?= =?utf-8?B?d2ZXUW8rV0tuK0I5ZDhldDJvWEgvcUVYeGpMVXY4SXhjZDQvbldFQ0hNU1c2?= =?utf-8?B?Vk5BdnpENWFFOVpQR3h0RnNkb2sxQmFVS1QxRFNZeEovNjU3eHBQckhYNnYx?= =?utf-8?B?d3JSZWtlZHZOTXRaNXlFQUlUV0M4VHR3NElvRTJad1lYelBVc1BjVkJGejlt?= =?utf-8?B?UEE9PQ==?= 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)(7416014)(10070799003)(1800799024)(376014)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SktxZld6b1J0NndOOGZ0ZWRFeW9Hb09NV3R2VHNJd1VhUWQ0eThmQkFQdVJx?= =?utf-8?B?TCt0aWhqbHYyRDFrNzhhOTJRNmZ0U3o5UHhOdmg0VjZ4TnFUK25CTTB4Rkhm?= =?utf-8?B?ekM2Z1B4S0FKVFRXWHd5MllpMloyMHd6QjJDL1BpSkIwYXl0R0lqdVZpR09w?= =?utf-8?B?bmxkTEo0eHdtMGE1NWNWaXJ3WDVtV2cwbkpRTXZqV055Yk9kTHlIbnhlaGlZ?= =?utf-8?B?NzlRbWxud0lCeGNvTEk4d1F1VGZieU04ODloQk8raVZ3b09LMDV2UmZvakJI?= =?utf-8?B?TXk3ZE1SRFBMUzdVRmFvUmVqNDJPVmxDaVJGYlRCdHRSSGtjU3dGUHpOT3RL?= =?utf-8?B?MUVvVExUbTV1SUp0RFlmUFpvRzZLWmk5ZndGUm9OKy96Ky9YNmlERkY5Mjkz?= =?utf-8?B?cnRzSjhNd3JONCtvYVEvMk5kNm8xQlJQU21DcU5taU96VkZ1am9ZS1AwT1NE?= =?utf-8?B?amdTRjUzbVFiYXR4bUxkWkwzSllCTFJIcG9xWFpaa0FJai9rdXJMK1NPZm5q?= =?utf-8?B?K2h5S2FrdlpSZWdCNDNRbGdOMTVkbzJQWVhqdzh2T2h5MS9xZW1RdG81U3Y3?= =?utf-8?B?TTFnR25DYzdTb0dYNWQvT243YVBHbkxoclRpcjJTUXAxSXpPbHZoSXZ5S1lh?= =?utf-8?B?TGgwZzUzMmhBdmJENlN1c1RYSDRZK0JyNGE3SU1MSkt1WGFvUGQyeEpqa29Q?= =?utf-8?B?VnpOSEpxWks3ZVNGaHE2MEQ3ZjNpS3hCbjJzbTJwOEpJZVBud2VRZzdTL0Vq?= =?utf-8?B?TXZGZlRxZFkxZHR5dVU5WlNNc1lqQXpUcm5HcUdkODA2S3lxTUJlN0lWRDRV?= =?utf-8?B?QmFqZnZhWll6N242SUhDdkl5VmkxOEFrbmthS2h1YlNnNm5KbWttZEVRTjlz?= =?utf-8?B?ZS9NL2hMTnVCUkMyQ3Ryc2haTS9PVUcxTDF1UG1OMnN6QkxCUzFmdFYwdVRX?= =?utf-8?B?VnZza05GNTFZSjNYd0dLWVAxZXJHU2NzQUgxaFBMNkxpOGp1dHVYek4rWExF?= =?utf-8?B?bklwSG9YeHY1ZFQ5T3ZSVEJMcys1cFBaZUtpcXhMWkhNRjBGVXF3L09XM21l?= =?utf-8?B?MDFKbVp3Um45WDVwTi81YzBnMDU4ODBsclB6L1h0M3ZMRUlITEwzS0Z2MUxR?= =?utf-8?B?SjBxRjl4Z1BQOCsvY3F0bWIzNS90Q3RLd01QTWtRdVdNSWg0S25NNHU5by9h?= =?utf-8?B?RENUYmJGTlU2NWwrK2pOMzNvZnVacEZFdmdtRTBwZ0J2QzJNNWlWWndvYk9l?= =?utf-8?B?TjdHTkZxTWtiQmxSUm02cHdFV08ySGEzdlEveVdzN0VBNXY0UHZhOFhEV2JL?= =?utf-8?B?UFZwaldEaGRyN3lOS2M1Y0Z5c0RHMytUL0IvS0hjMk1MTFBGZkd0VXV2SHoz?= =?utf-8?B?bjhBSjQwVHZodDl4bzNIbWNpSy82ZGVsSW1TdGxYSDJMMExKTTJ5Qjh4KzFP?= =?utf-8?B?VUxqWWZuVUE5c2djSFBldVFtK1IzNW5MdTVEMXphMFFtTENPNGNBdDFDUGg4?= =?utf-8?B?cHRJU0xpNG54MWZKL2NwQ1pZbERDMm1nbHcvZkdVQzBWUWJpL09BNWZGTWR0?= =?utf-8?B?RlJaTldneHZiSmswZTF2cEgwZWxQdGJrL1l4cGZFSVduSHRUZU8yVW41L0NX?= =?utf-8?B?SnM0SFhCVTVnZHpnY25VR3BXY3BMSFp1WDNqQ215UXBWUmRQV1BTOFlNMnV1?= =?utf-8?B?TXQ2d29OQmMrQWdVTzhUdWluMmtiK1NsR2c0MzE1Y05UcElvYm9oMnJyUkU1?= =?utf-8?B?bW5BSGthSjJnQ2dpOG5zb2tjbEtpUHQyRDZzK3VFbWtGRm9qZFdVYUVjK2Fa?= =?utf-8?B?eDdudUdQcG9VMmE0S0EzTzFMWnN5WVVDYVVSQ0lLbXBLaHNOWlV1cUFvZWtK?= =?utf-8?B?czdTS3hTUWNGdUU1a015NEpsWWoyTWFVVU1PUHNLSEVkOVYzZUY4cjZCcWdx?= =?utf-8?B?TFZKRHB6UkVBQzJwTEkrTFJJRzg3WVBXSDhyYmtPZTRhNVlhOEJ1akpqOW84?= =?utf-8?B?d2tqdTZXYUhhNGdKUCtENXVxM0FRSit4dDdXS2hjQW50S2xXNi9zQndhL09J?= =?utf-8?B?R2ROdzY4QXkzckxEYXorMDNzQ0gxMzh1TmpvUnM2RFdiSzJqWmxkMXZLWFBU?= =?utf-8?B?aGFOQm1ZNkxXOEJDUVd0Q3ZIMlFwbEcxNHZyaUVLWTBPODdaSzBWaVRNWlF0?= =?utf-8?B?blBzL3dtSStYMXI5NDZxZWkyY3ExY2hIYVYwN1U4N1VQekhRUXBiTU5KeUVL?= =?utf-8?B?WFJFdXpxb2FBS08wa05FZVkwT0hoY3NVelRLMGtUSHFpT1pubkkwblRXR3Zq?= =?utf-8?B?b1lzTlNJNUFQUkpxSk1kOVlXNERpaXVrTktPY2c4dlBsd0k4cTc5ZzRkQVJz?= =?utf-8?Q?2CB+aH0iHrlvox5JVUadBiDQWqu5JIBSE6B7VPdEQTw2s?= X-MS-Exchange-AntiSpam-MessageData-1: iSeilHVMq/dtsg== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: c03f506a-a26d-44fc-018c-08de6f890fe8 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Feb 2026 07:32:40.1958 (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: We+JmPQdg1fuHnb1cx2xg9q3l9Bn95qtLMnm1wrc4sawNLo0KiXH8qiYJHVy6J/Skt9Jc2yoa+mdwcu6jnpa1A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB7990 Add a helper function which computes the size of a command. Signed-off-by: Eliot Courtney Tested-by: Zhi Wang --- drivers/gpu/nova-core/gsp/cmdq.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/nova-core/gsp/cmdq.rs b/drivers/gpu/nova-core/gsp/= cmdq.rs index 1547687834f8..f832252ae45c 100644 --- a/drivers/gpu/nova-core/gsp/cmdq.rs +++ b/drivers/gpu/nova-core/gsp/cmdq.rs @@ -437,6 +437,15 @@ struct GspMessage<'a> { contents: (&'a [u8], &'a [u8]), } =20 +/// Computes the total size of the command (not including the [`GspMsgElem= ent`] header), including +/// its variable-length payload. +fn command_size(command: &M) -> usize +where + M: CommandToGsp, +{ + size_of::() + command.variable_payload_len() +} + /// GSP command queue. /// /// Provides the ability to send commands and receive messages from the GS= P using a shared memory @@ -513,7 +522,7 @@ pub(crate) fn send_command(&mut self, bar: &Bar0, co= mmand: M) -> Result // This allows all error types, including `Infallible`, to be used= for `M::InitError`. Error: From, { - let command_size =3D size_of::() + command.variable_pa= yload_len(); + let command_size =3D command_size(&command); let dst =3D self .gsp_mem .allocate_command(command_size, Delta::from_secs(1))?; --=20 2.53.0 From nobody Sun Apr 5 16:27:59 2026 Received: from MW6PR02CU001.outbound.protection.outlook.com (mail-westus2azon11012067.outbound.protection.outlook.com [52.101.48.67]) (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 362E8335098; Thu, 19 Feb 2026 07:32:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.48.67 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771486368; cv=fail; b=HK7LUZowglK7puJxPeK+6dbOufQnTAMwtut+RBjcLkucdUhmwygRrqpGcfEhqO3oDal627LDlAqOkMjZXSgiQPnd3YsWGcfnuYxEQpthXVJrwpAWnHkOR9ih3oH9ifbK0mGqoHhAhR042K5D5j44lA+FjQtDoYpXcgGTIUiBZI4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771486368; c=relaxed/simple; bh=yhVoUCgI92MarFoHBvug74Oa7DCtrATTOMI9fdylZsU=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Q+nVdBtr1di2lSAeULC/qwyJdaaqKEO7s6JL7TJpeyX7eEez8mz1yA9xSkGRfLJYgK7qtySYzdBdwqriaeC7upXQZEXTVbYJdasCT5g5wvGAgx3LgJw666BKZkv4vFsIBru6lqJL12PgYwdqzwIX5sBT1sHgp2y9aGZl6I3AVs4= 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=P5MJTfQQ; arc=fail smtp.client-ip=52.101.48.67 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="P5MJTfQQ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IdUsyRo52mB/7Jo8JlD/dQziGldLf48BNU98PR4TCo0wLPceSn9yP4YIYwC6P1A82u34LhBFW7z1xdhMVHZTzr2USfcuJrm7mtA4f+HwgpJqfxpqba2FOUhP3sF44iKO9Lc5cgrDgI7z/O48Q8S+BT/7msrZSDx5coZC6/2rfqfybqvtcuNVjkvA4Ch1cnp6cokItbB214N4oZwNUAYF23NL+OA4dIM9zm224pUiOAsZ3SpIcUK45Yvso3PaB49sB+MyxwQ+UWAX2BvTBCZNhOPWvgKoF6Rjk0M1GOylhryNIZB+Yv0bWazxGgaMds/Z7/Bpsy+CxwXo1m0jq9OapA== 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=h5QWOzuRDkVZzrs86iA2FgbsG85pkVEEwAuRoZfrPOs=; b=AHlUfNAIqHFHdTKxTVbyXLrFMeeo0wzHbUxuWfP9Xxc9wk9tWcuFx9wN25V2UQY8wfJK9f4LC8comvnKThh+HfwaJmnn6fsy04CYLO3mLRyfyjT2IFOsUdqr6L36oOcs3bdatiTks+fKLI1MCXN9LbZGQg/qZPtiSasrYbhV+hlQoSniNg4yBIVBqGNrAKuaQVLL/+VZucnzQypDO6zv8URId5fsPoDkchQXXdpHnUOzk76HUbn3eB8XPFzNBxQyhXX6HxYxyOkD+FRwwiRMcivhjI6mPUh/J3njMDnZO/pQ8Y9IzfHO4WD7lH4KR4MLvLlxx1b3I5jl2HDWDAUhXQ== 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=h5QWOzuRDkVZzrs86iA2FgbsG85pkVEEwAuRoZfrPOs=; b=P5MJTfQQI+J4IqjDcOvkX5wZgHDo4iwAUj5RXmC552RBPCI/uPFtL4yXciN/SpS9ha4MLck8/oJqV2789Bgp/rXHalplZE08Idj44dnT7FIVfF/AGuzIiGpoZYs0ooCVr5mSxJvn3wOqEOrgOjBJXeYaooccwCB6DC2esevCV1BJbLbaUtXGttovkev79/tiZyFuF8RieF1Y3QUlSxbGeQX5ljXtT9OQR3W1gk/hVKF0gt8jK/ItbA6hrbAk0LTJb5E3Z30Y9//l13AB6gyiswfM/f2EMo8wxPyAeWkkQZ3T3XW/d0ODMbHIdmzddugbeYX7yti7k0nReTX+KojDBQ== 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 SJ2PR12MB7990.namprd12.prod.outlook.com (2603:10b6:a03:4c3::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Thu, 19 Feb 2026 07:32:44 +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.9632.010; Thu, 19 Feb 2026 07:32:44 +0000 From: Eliot Courtney Date: Thu, 19 Feb 2026 16:30:57 +0900 Subject: [PATCH v2 8/9] gpu: nova-core: gsp: support large RPCs via continuation record Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260219-cmdq-continuation-v2-8-2e8b7615536f@nvidia.com> References: <20260219-cmdq-continuation-v2-0-2e8b7615536f@nvidia.com> In-Reply-To: <20260219-cmdq-continuation-v2-0-2e8b7615536f@nvidia.com> To: Danilo Krummrich , Alice Ryhl , Alexandre Courbot , David Airlie , Simona Vetter , Miguel Ojeda , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Trevor Gross Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, Eliot Courtney X-Mailer: b4 0.14.3 X-ClientProxiedBy: TYCP286CA0144.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:31b::8) 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_|SJ2PR12MB7990:EE_ X-MS-Office365-Filtering-Correlation-Id: 46df6398-2aec-46b0-02c5-08de6f891243 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|10070799003|1800799024|376014|366016|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?bWxJbmtJWjJsaGE5Q0h2dEhvZUlKUFdwZldUYlovZFFBN3M5SU1pUFg4TllD?= =?utf-8?B?TG0vdlZLWEtCUkVvbWJubTNFUktEbFNvb1ZCZzlrWkVGU3VybkpYYXQxYjdO?= =?utf-8?B?L1docERrUHRXQ1ZBS1c3cVRjVksvaEwzR2NJN1B3K2Noc3puZkU0Rkd4eWxO?= =?utf-8?B?ancvNWhGUSsyYmFGRnN6dHoxMEZhVlpBL1VjR2F0TG1sSWtXMXEvMy9YbEE0?= =?utf-8?B?c1dDMGI3RVRxU2lnUVB0Uk9rdldGK2JFMXhiWDZCSFBldFU1VXNNWGtSNTl4?= =?utf-8?B?eVBOVjlVM3RBa0lsMlNUTjJRZnlmT1E2NTF1eTlZRmtGOFROS1ZaQXBBdG8x?= =?utf-8?B?U2VVVFZwSUVPVW4rWlRXcmRscS9jWmJlU2FUeVgrVXphbmpiTTU1RFBhQzlJ?= =?utf-8?B?OVFFZHRhOVJoVFY2K01xeXg0UVNLUEFRcXVKUkMydlgyR2lEUXdHT3c2TlJh?= =?utf-8?B?U2hMa05sOWhCMHJUTFlQcXExSXZDTXFqMFJyV1BmQWpaZzVTVk1hczEzQ1Rn?= =?utf-8?B?eG1WU3ArR25oYWFKMlpnUnJUMk5OR2pTTi9pRWdtZG5KeExaSVVpYklmd2xR?= =?utf-8?B?d2lKU2R1YTl5SWxNcHc5OFN0djRiNWZ1bHE3YmQ5bXBoYWVsenFTUnYyejV5?= =?utf-8?B?Vk5FYUlNYm85aGJtbGMwZDRPeDY3cWVOWFNmNDc5SE1mbGcvOHNPZUY2WGVB?= =?utf-8?B?dUprdEoyNnNNZjg2VEU2Mm1iL2JEeUQ5Z3loQXlvcXVDdEJYemV5Z3pKMWFy?= =?utf-8?B?M1dqQ0JYUktlR1Arbll5U1FnTXZDTTc5VGpSbzBXdVByK3JjNyt6UTdqa21R?= =?utf-8?B?eUxPM3MyVS94YnZJYkhsSEptTmU2a2xEMGJlRnNqcWlMZHZlcmZIQ1pTUEs5?= =?utf-8?B?TWFDWXE0azllY3VranRGOTQrNEkxdUQxaVp3RGs2a0lFL3NMTnEzN1RLWkJ4?= =?utf-8?B?aGRtYjdmZjkyTWplMXRNSFVRQ0JEbUF6SGxzRGJESGRPOUg0MUJTT1JlWFFH?= =?utf-8?B?bktGTlNiRjMrYkVubXhITSsrV3FSMGxTSjJnWVdDdWN1YUlONkxMZk5HeWlI?= =?utf-8?B?YjQwNEUwdFBNQlRHblZRc2U0dU1ZQmp0TFlDYk9ZVTVmUWM2SHk5ZjhOZFVX?= =?utf-8?B?T1F2a3BxckJhbzR0WU9DZ1ROWnpXUzIxVnd3UTJZS0xVZFFWVXhBbzMzODQ1?= =?utf-8?B?VFZrNmlvbEQrKzBGeG9pNjBqTWdKbHBvdTZhMlRMQzlrMzF3MExGc0JQNVNn?= =?utf-8?B?RVBFWWRZZlpmUnd4SmVabzFDNjBhWEhQZzg2WGhiR08xVFJaZkt4L2ZzWlFO?= =?utf-8?B?a3VnVDlTWG9KNjR5bDV0RmVCcHUxeDJsVlhoL21NSlVmeFRqQ3gyTEw5ZzBO?= =?utf-8?B?R1dweGplTDVPS0ZiWVc1YnpIZzVmZ3FLR3grZ05Gd3FUNytueFNMYzZiR2Vw?= =?utf-8?B?a0ZXdUd6Rks2Yit4bGVQTXJ3c1FTeHZRODNkS0Z2YUJmVks1b3ZjdzJTNHJY?= =?utf-8?B?c2dRU1Z2Y2pFcC9waXpPRHp2V3V3ejRkZ3hwUTExN09ZOFRQNUhqaUkxSGc4?= =?utf-8?B?WVJleUlxK0d6N3lMazdpc0hRNnQwcHJlQkZVYmx6eUxUTEJNcVlCN3g0MUlD?= =?utf-8?B?NnRwV0tQQ3M0bEMyK1VhU2pacFhKNHBrZDJ4SVJ3eUJIWXlmNWh2clhvanJW?= =?utf-8?B?NzlzVnBCa1I2UW9aMmxuVGVZUGpVQU5iejkrMzRMWjEvWE94cVZ3azVQMUxR?= =?utf-8?B?Y0NuNDA0VVhzbURoU25Sekh3VVFTMjNaT2Jkcitmc1ZaV3dWbi9EamNZV0tR?= =?utf-8?B?dEZkUzc3azdUZHMzTEd4cEYrcWVCam9zcHRiMis3L2VubnZ1WGwvdmFjdUxt?= =?utf-8?B?RlRrSTE2aW5iMmVXOTI1MlFsQmI2S0pCcnpkTklOSWFsWElsYkh6eDRuci8y?= =?utf-8?B?bjdjMFAxenJkTVhBOWFwWGFTY0VtOW5WQmhuMFFqVjZrdmRLMnZya0pZZHAz?= =?utf-8?B?eERtMVg0K0c5Qnpka0RYUmZSSWJKTW9KdEpzT1o2ZDArYS9NSDg1dUFHSnkw?= =?utf-8?B?djhZNWdlZWhSRFZUZzcrUkJXYmlBYzFlZGxLS20rYTh3VlJreWVoNEJVSU5h?= =?utf-8?B?Zi9FNmdqdUZqck9JYWpkT21lSCsvTGI5cHlLMTBqZWNVVlFocWtkTmE3YnBG?= =?utf-8?B?UXc9PQ==?= 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)(7416014)(10070799003)(1800799024)(376014)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MDI4bW5hOUFmOGFsMjVrcG9ndUVHbHRkd3ZEY1M2V293QWR0VVdBNzNVTUZR?= =?utf-8?B?eGFlUWpxdVg5VHRxaHhqZkljMFR4YWljdXkrRGdFcU1XN05WbXczUjlDNHdT?= =?utf-8?B?Q3RlZzRkR2tYMytwTnNmeW5kek9wUlJrcUdicXhNdVA4UFBlaTNtZC9sajVX?= =?utf-8?B?eHREbDYrVjFUZHc4cVh3SUN1UWdmNUs4aWZMT2Y3cFl0Zi9FUUJDaEJSZDFw?= =?utf-8?B?UmpKNC9yRG5CVjJqcVhaR0g1Ulo5YkQydWNSZFpmT25KWkMzM3VkaUxMVndp?= =?utf-8?B?ZmJsNXArdGZ3VGdkZVlqRC8zaGdFSFJPbW1CZm1CTlNiZEdlMnBGdXgxWjIy?= =?utf-8?B?Wm1FODFEU2xIbmtoREo3SHRQYit3dWQxNThXUGVRWjFURCsvdVZDaDhqNHRE?= =?utf-8?B?ajdMaTV4eHVzYmhqSUYzSzFyY1FZdUdkclRTNHFVaURrQXpWQ0UxOVNRSXls?= =?utf-8?B?bENoNWt4NnlVbUVpTnlGNTBsdGZmUVRVZlZEdTR0SGFkZlFEWS9UeEIxMFBx?= =?utf-8?B?NUM3TlRPWi9vUjFrRkRMWkIzZlJlVGg5ZzZBV3BqWTB5Mm16Q2lpdTZmdjA4?= =?utf-8?B?ZjM0RzJNNXQwSHZ0V0w2dXBOck5la2JpVWJVelQxU1pXZmJBNUhVT0RiVGQ4?= =?utf-8?B?KzJqUlVEMGlEMHdTQXN0RkUrRHJvNnlUdm5vbyswR09vdUJ2SXNseklJaWp1?= =?utf-8?B?WjM1ajNpeks2WXdyY0xqaFF4SHZ3SnA4K0dETXhzaXQyVkNXM0QwUW4xQUhl?= =?utf-8?B?TFFXS2RTVkYzLzFZRGRVRndZbnQ3VWwvL21nOTVKU3ZrMDc0ZFhHZDlKMzlW?= =?utf-8?B?ZlRSbUVlR0cyMEdVczVMZUVoZ2tmSnltcks5b01hR2RPc2s0YlpDN2tmempq?= =?utf-8?B?aEY2c3FaLzM0SWdHSFBKS3RaZXA2aExLZzB3Z0wyYnBRQ1o2aVVicEMwKzV0?= =?utf-8?B?ZjJPNHVKbXhUQlgyNzUyWWU0ZDFCRHZZQWJNb052dlgrN3FOR2tRTnFqNHdW?= =?utf-8?B?c2pvQ0lZNHR3UXRYU05ya0RyWE9SUkswUTJkcHpDczlLWU5aaGM5QzJvb1Ax?= =?utf-8?B?dURWTVhTY2lOZnBUellWUDRMSVcwZ3VOYU9ubGVkK09ONkd1MVljdDhPZmsy?= =?utf-8?B?d0xSRmYwM1hDeHJUUnE0bGRKY21QeCt0YkErRWxOT2dtOHZ5WGxiakJldHZK?= =?utf-8?B?cGE0eEFnejhkYnhHcG1SSlgyOEdwcGxzVXZ4TjNiQTJIRFQvWVdldjlrd2Ro?= =?utf-8?B?aDZlbDVOczQxaE52dm5WKytnKzdMSHNQek9uWWp0aGMzZXhaaEdJVzdTQ1A4?= =?utf-8?B?VldwbGJpQWl4cFFld1FWSUtPaGZwK3NjemZFYkFjMDROVVZ3ck9PRTlSSC9l?= =?utf-8?B?VEJRc2cxbnlTbGJlMW5XdzBZMmkvTzRUNk1XK2Nod3laUm13ZE1kRGpIQ1dD?= =?utf-8?B?MzErL2k3dmZHSmlTeTdXTi9Yd3JWbXd2TkthS3pVVFpWTEV1MlhCMy9oYVJG?= =?utf-8?B?ZHRLTk9XdDBSVHlXbkVodEZ1c0Y4V3ZrNGRqQXN5Q2JGVFFNUTRZQTA2SFJV?= =?utf-8?B?L3d2ME9hSnFtL3lBS0hibmhOUXhSaXlZcGtjd3JSeUdSdzZqSmxXY1R5OHpJ?= =?utf-8?B?SWlMRDJ1WGRtNDZJOGVjTHNYTU1FcGlOT3RId0hveDZJbDVnOGVneUJXZVZx?= =?utf-8?B?MjFuS0RKeGkvak8xcDk4aW52d1g0T2RUN2VlTW9CVzlTZjFvaDhQdnZqanBT?= =?utf-8?B?MGJSbVNMbDFEWE1abnRodUJTZ25qNWZDRjlrYkdxSXBRKzk1TjFqNzdWbjli?= =?utf-8?B?cDNSWWd6ZHpKMm1LQ25uRVZvK0ZYTHBtWm1IYTd2UFJBL0lSRUxCNitQNmVP?= =?utf-8?B?aVZodUtjemNLcXB2TDFDZFhxWlFrdkc4NUsrcWdEV3hQRWFoZkcrcExoRFJ5?= =?utf-8?B?eDBtTHEwN1Q2REdTeXQzcG5vZjhMWFZ4SnRzc1lSWXd4T1FmKzFNdVkwcVNM?= =?utf-8?B?R0FDNU5IOVZzcXNlaUY5bjMwdzBjT0M2Ky9BV0IyS0t6NWczUEpqb0dUYVgr?= =?utf-8?B?MGZ3UFVxM1VSZ3k1S1Y2RndaQzVBODZXVkVzMHNmOHpCdFJLa3J3dmp0L0sz?= =?utf-8?B?cE5LcjNRblRBdkFselQwcFVyakRCQlBLaDd5SFVudlMwRHVmakFWSFVldXZu?= =?utf-8?B?V2NYMERJQUdQRWZMd3IzVzhZV3FJak92K0ZGajVNK0NUdHVGV3A4QmVpbjI0?= =?utf-8?B?UG9QNXV6VDBPOFFVdVUrS3ZYSHRGM2ZnY0xzeUtDam5OUEFvZGorQ05wSWUz?= =?utf-8?B?QWN3cm5CQ0kxM3pzZzlOUmI1NGxTdUUyYnlVUFhWY0RxdTRJNWNjUE5nSDVS?= =?utf-8?Q?e+bIOKxRWRxnWRrDavCVKYh2p5TBbOccG2SmNL/VUVP4v?= X-MS-Exchange-AntiSpam-MessageData-1: 8W0pN7gLshxaUA== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 46df6398-2aec-46b0-02c5-08de6f891243 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Feb 2026 07:32:44.1532 (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: 0BwOw1dWBsSasvI3zU/PUqM3hxCe+ad8SQ8+gDLGy5/HffuVMzPK8M39BPjEgdJsf746EMVhkgzJSgQ++F2QZg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB7990 Splits large RPCs if necessary and sends the remaining parts using continuation records. RPCs that do not need continuation records continue to write directly into the command buffer. Ones that do write into a staging buffer first, so there is one copy. Continuation record for receive is not necessary to support at the moment because those replies do not need to be read and are currently drained by retrying `receive_msg` on ERANGE. Signed-off-by: Eliot Courtney Tested-by: Zhi Wang --- drivers/gpu/nova-core/gsp/cmdq.rs | 43 +++++++++- drivers/gpu/nova-core/gsp/commands.rs | 143 ++++++++++++++++++++++++++++++= +++- drivers/gpu/nova-core/gsp/fw.rs | 5 ++ 3 files changed, 187 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/nova-core/gsp/cmdq.rs b/drivers/gpu/nova-core/gsp/= cmdq.rs index f832252ae45c..402b0b9418ab 100644 --- a/drivers/gpu/nova-core/gsp/cmdq.rs +++ b/drivers/gpu/nova-core/gsp/cmdq.rs @@ -29,6 +29,10 @@ use crate::{ driver::Bar0, gsp::{ + commands::{ + ContinuationRecord, + SplitState, // + }, fw::{ GspMsgElement, MsgFunction, @@ -439,7 +443,7 @@ struct GspMessage<'a> { =20 /// Computes the total size of the command (not including the [`GspMsgElem= ent`] header), including /// its variable-length payload. -fn command_size(command: &M) -> usize +pub(crate) fn command_size(command: &M) -> usize where M: CommandToGsp, { @@ -507,7 +511,7 @@ fn notify_gsp(bar: &Bar0) { .write(bar); } =20 - /// Sends `command` to the GSP. + /// Sends `command` to the GSP, without splitting it. /// /// # Errors /// @@ -516,7 +520,7 @@ fn notify_gsp(bar: &Bar0) { /// written to by its [`CommandToGsp::init_variable_payload`] method. /// /// Error codes returned by the command initializers are propagated as= -is. - pub(crate) fn send_command(&mut self, bar: &Bar0, command: M) -> Re= sult + fn send_single_command(&mut self, bar: &Bar0, command: M) -> Result where M: CommandToGsp, // This allows all error types, including `Infallible`, to be used= for `M::InitError`. @@ -575,6 +579,39 @@ pub(crate) fn send_command(&mut self, bar: &Bar0, c= ommand: M) -> Result Ok(()) } =20 + /// Sends `command` to the GSP. + /// + /// The command may be split into multiple messages if it is large. + /// + /// # Errors + /// + /// - `ETIMEDOUT` if space does not become available within the timeou= t. + /// - `EIO` if the variable payload requested by the command has not b= een entirely + /// written to by its [`CommandToGsp::init_variable_payload`] method. + /// + /// Error codes returned by the command initializers are propagated as= -is. + pub(crate) fn send_command(&mut self, bar: &Bar0, command: M) -> Re= sult + where + M: CommandToGsp, + Error: From, + { + let mut state =3D SplitState::new(&command)?; + + self.send_single_command(bar, state.command(command))?; + + while let Some(continuation) =3D state.next_continuation_record() { + dev_dbg!( + &self.dev, + "GSP RPC: send continuation: size=3D0x{:x}\n", + command_size(&continuation), + ); + // Turbofish needed because the compiler cannot infer M here. + self.send_single_command::>(bar, contin= uation)?; + } + + Ok(()) + } + /// Wait for a message to become available on the message queue. /// /// This works purely at the transport layer and does not interpret or= validate the message diff --git a/drivers/gpu/nova-core/gsp/commands.rs b/drivers/gpu/nova-core/= gsp/commands.rs index 8f270eca33be..e722c6091ec8 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 @@ -22,13 +23,16 @@ driver::Bar0, gsp::{ cmdq::{ + command_size, Cmdq, CommandToGsp, MessageFromGsp, // }, fw::{ commands::*, - MsgFunction, // + GspMsgElement, + MsgFunction, + GSP_MSG_QUEUE_ELEMENT_SIZE_MAX, // }, }, sbuffer::SBufferIter, @@ -242,3 +246,140 @@ pub(crate) fn get_gsp_info(cmdq: &mut Cmdq, bar: &Bar= 0) -> Result { + data: &'a [u8], +} + +impl<'a> ContinuationRecord<'a> { + /// Creates a new `ContinuationRecord` command with the given data. + pub(crate) fn new(data: &'a [u8]) -> Self { + Self { data } + } +} + +impl<'a> CommandToGsp for ContinuationRecord<'a> { + const FUNCTION: MsgFunction =3D MsgFunction::ContinuationRecord; + type Command =3D (); + type InitError =3D Infallible; + + fn init(&self) -> impl Init { + <()>::init_zeroed() + } + + fn variable_payload_len(&self) -> usize { + self.data.len() + } + + fn init_variable_payload( + &self, + dst: &mut SBufferIter>, + ) -> Result { + dst.write_all(self.data) + } +} + +/// Wrapper that splits a command across continuation records if needed. +pub(crate) struct SplitState { + state: Option<(KVVec, usize)>, + _phantom: PhantomData, +} + +impl SplitState { + /// Maximum command size that fits in a single queue element. + const MAX_CMD_SIZE: usize =3D GSP_MSG_QUEUE_ELEMENT_SIZE_MAX - size_of= ::(); + + /// Maximum size of the variable payload that can be sent in the main = command. + const MAX_FIRST_PAYLOAD_SIZE: usize =3D Self::MAX_CMD_SIZE - size_of::= (); + + /// Creates a new `SplitState` for the given command. + /// + /// If the command is too large, it will be split into a main command = and some number of + /// continuation records. + pub(crate) fn new(inner: &C) -> Result { + if command_size(inner) > Self::MAX_CMD_SIZE { + let mut staging =3D + KVVec::::from_elem(0u8, inner.variable_payload_len(), = GFP_KERNEL)?; + let mut sbuffer =3D SBufferIter::new_writer([staging.as_mut_sl= ice(), &mut []]); + inner.init_variable_payload(&mut sbuffer)?; + if !sbuffer.is_empty() { + return Err(EIO); + } + drop(sbuffer); + + Ok(Self { + state: Some((staging, Self::MAX_FIRST_PAYLOAD_SIZE)), + _phantom: PhantomData, + }) + } else { + Ok(Self { + state: None, + _phantom: PhantomData, + }) + } + } + + /// Returns the main command. + pub(crate) fn command(&self, inner: C) -> SplitCommand<'_, C> { + if let Some((staging, _)) =3D &self.state { + SplitCommand::Split(inner, staging) + } else { + SplitCommand::Single(inner) + } + } + + /// Returns the next continuation record, or `None` if there are no mo= re. + pub(crate) fn next_continuation_record(&mut self) -> Option> { + let (staging, offset) =3D self.state.as_mut()?; + + let remaining =3D staging.len() - *offset; + if remaining > 0 { + let chunk_size =3D remaining.min(Self::MAX_CMD_SIZE); + let record =3D ContinuationRecord::new(&staging[*offset..(*off= set + chunk_size)]); + *offset +=3D chunk_size; + Some(record) + } else { + None + } + } +} + +/// Wrapper enum that represents either a single command or a split comman= d with its staging buffer. +pub(crate) enum SplitCommand<'a, C: CommandToGsp> { + Single(C), + Split(C, &'a [u8]), +} + +impl<'a, C: CommandToGsp> CommandToGsp for SplitCommand<'a, C> { + const FUNCTION: MsgFunction =3D C::FUNCTION; + type Command =3D C::Command; + type InitError =3D C::InitError; + + fn init(&self) -> impl Init { + match self { + SplitCommand::Single(cmd) =3D> cmd.init(), + SplitCommand::Split(cmd, _) =3D> cmd.init(), + } + } + + fn variable_payload_len(&self) -> usize { + match self { + SplitCommand::Single(cmd) =3D> cmd.variable_payload_len(), + SplitCommand::Split(_, _) =3D> SplitState::::MAX_FIRST_PAYL= OAD_SIZE, + } + } + + fn init_variable_payload( + &self, + dst: &mut SBufferIter>, + ) -> Result { + match self { + SplitCommand::Single(cmd) =3D> cmd.init_variable_payload(dst), + SplitCommand::Split(_, staging) =3D> { + dst.write_all(&staging[..self.variable_payload_len()]) + } + } + } +} + diff --git a/drivers/gpu/nova-core/gsp/fw.rs b/drivers/gpu/nova-core/gsp/fw= .rs index c604f423fff3..1a317dfb0bc9 100644 --- a/drivers/gpu/nova-core/gsp/fw.rs +++ b/drivers/gpu/nova-core/gsp/fw.rs @@ -203,6 +203,7 @@ pub(crate) enum MsgFunction { AllocObject =3D bindings::NV_VGPU_MSG_FUNCTION_ALLOC_OBJECT, AllocRoot =3D bindings::NV_VGPU_MSG_FUNCTION_ALLOC_ROOT, BindCtxDma =3D bindings::NV_VGPU_MSG_FUNCTION_BIND_CTX_DMA, + ContinuationRecord =3D bindings::NV_VGPU_MSG_FUNCTION_CONTINUATION_REC= ORD, Free =3D bindings::NV_VGPU_MSG_FUNCTION_FREE, GetGspStaticInfo =3D bindings::NV_VGPU_MSG_FUNCTION_GET_GSP_STATIC_INF= O, GetStaticInfo =3D bindings::NV_VGPU_MSG_FUNCTION_GET_STATIC_INFO, @@ -238,6 +239,7 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Resul= t { MsgFunction::AllocObject =3D> write!(f, "ALLOC_OBJECT"), MsgFunction::AllocRoot =3D> write!(f, "ALLOC_ROOT"), MsgFunction::BindCtxDma =3D> write!(f, "BIND_CTX_DMA"), + MsgFunction::ContinuationRecord =3D> write!(f, "CONTINUATION_R= ECORD"), MsgFunction::Free =3D> write!(f, "FREE"), MsgFunction::GetGspStaticInfo =3D> write!(f, "GET_GSP_STATIC_I= NFO"), MsgFunction::GetStaticInfo =3D> write!(f, "GET_STATIC_INFO"), @@ -277,6 +279,9 @@ fn try_from(value: u32) -> Result { bindings::NV_VGPU_MSG_FUNCTION_ALLOC_OBJECT =3D> Ok(MsgFunctio= n::AllocObject), bindings::NV_VGPU_MSG_FUNCTION_ALLOC_ROOT =3D> Ok(MsgFunction:= :AllocRoot), bindings::NV_VGPU_MSG_FUNCTION_BIND_CTX_DMA =3D> Ok(MsgFunctio= n::BindCtxDma), + bindings::NV_VGPU_MSG_FUNCTION_CONTINUATION_RECORD =3D> { + Ok(MsgFunction::ContinuationRecord) + } bindings::NV_VGPU_MSG_FUNCTION_FREE =3D> Ok(MsgFunction::Free), bindings::NV_VGPU_MSG_FUNCTION_GET_GSP_STATIC_INFO =3D> Ok(Msg= Function::GetGspStaticInfo), bindings::NV_VGPU_MSG_FUNCTION_GET_STATIC_INFO =3D> Ok(MsgFunc= tion::GetStaticInfo), --=20 2.53.0 From nobody Sun Apr 5 16:27:59 2026 Received: from MW6PR02CU001.outbound.protection.outlook.com (mail-westus2azon11012050.outbound.protection.outlook.com [52.101.48.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6C93F336ECF; Thu, 19 Feb 2026 07:32:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.48.50 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771486372; cv=fail; b=sgD0y80c/1jO1Vx7LXhyh9YVqAu63h/WEZahALkE0bJEeIjJpwXTzwuEjwD50gMCwRNAM+KQiIqPRJnQrUWK459QNn6Dis6Ctiq1qYzv2D1qtvaL4Nd6YhxreserhmNsiJkPkZS/rmONddfJ0qk3V5gbsCrsIyt68H+niKVRGJU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771486372; c=relaxed/simple; bh=Zol3iWTmt25KAYmt+oq4oBVeRLYyzaX9a2MMqvJJa3c=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=BIwby66YjUazJBYj0JaVFifzhG+T7dLzuCNNPsQqCrtvPri3h/9adugtDcovQCscApYNW3O93UGlvZakL7pUfwdPWbUDda1YDB78cJiq51e9WEvUSOHrXpd3Gd8TgZ0UBfGr6Wt7EmpFtTZqXOnEKhKmqWy9+Lx7hPXTdaLiCOM= 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=gMJn43el; arc=fail smtp.client-ip=52.101.48.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="gMJn43el" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qPjRUoAuFA/6/yslvHjT8rFGgvhDIOarPEw4zmSJ0aPyF+Qjc7KKYwLZVwBpzDkgJpDJq+tq80onlrc19CchCocVgHs7SrRk0AMjx866DZXhaKirRXTkIetySMTNbOdUhu5MkxqqGMuU6qQIVxxSALr3nybItGQLnxTbwG3LmIMxmX80Zhk+bTlcePMn1SAQ1UBq4Iyw808Y9PYMjIcyM8h17IVjL+8wqGM2iYgdO21Tom051p/deykUwHujG0RNcEeQRVLWsPSs+lfrHsTql4e7scxolUpADCcvIoYy9MJT9hf3JrgW+RdbzEnA5tdBrKfOpZ808HocnMWGpyQwjA== 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=tL9mZBn0Ur5tTFMiFzXHbFIaoHcCDjAM2rs1hl5xCXI=; b=tQGjNnVraxr6Gf7SF683I2HXC/lJ5p2Auf7qqIw4DPKsOQ3AlxkZMt0hs4ZI0sX+zuFjBII2XNQmTdx8f5tb5rKtgXF+nbDfUpPf1vd6HgyC8jds9h8jc8geYE/ge7bLsipGN7PCIPddYP2zI3vbnuw7GodRzga7TR2SRNPEQgHK5CLzRp1gyZdMOIeNNlsPOAJixnNp++0Uxt5wBJ1qEqW/yCwrkzFA0flhT03NrHYXlPWnaIGVOTrjP749vdU9iOo/sRZjNJVaIAFHvmQYH5Nz2Tf07NSQn2pOGbZ8GPwyxldDbLs4ip1X4zhVs6x1HoF189I25ANCID1aeVA2EA== 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=tL9mZBn0Ur5tTFMiFzXHbFIaoHcCDjAM2rs1hl5xCXI=; b=gMJn43elidwTMBYM4DSRAVNjyn8Wjzq1wozKddgr4+Se6OXSKpgL+tji8kW8Pec3Sn5TIQX2G4j6QpUt1VQCOwhpUaODa5nCP7XZhyff47t9sXiXlHSllFEeipYMyuMF53FwaDMPQmUkjvvMFK225zQOdy0UIZbP8ShjXFOtiUdJ89gqFaoU9pv8a/sNIDgDu+jPrbFPRkMKCFCZD3vkWZJTi4bwij83u3qTO8IGQNn1wHDRyrs6CdbayMOZwnVR3uBhwwakoEEHXLOvunPJ0pqRE7hNe6SW76pRAV5DTwb63vnvX89fIARHqBThS6VkeeyApljMO3T7N/F6b16kiQ== 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 SJ2PR12MB7990.namprd12.prod.outlook.com (2603:10b6:a03:4c3::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Thu, 19 Feb 2026 07:32:48 +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.9632.010; Thu, 19 Feb 2026 07:32:48 +0000 From: Eliot Courtney Date: Thu, 19 Feb 2026 16:30:58 +0900 Subject: [PATCH v2 9/9] gpu: nova-core: gsp: add tests for SplitState Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260219-cmdq-continuation-v2-9-2e8b7615536f@nvidia.com> References: <20260219-cmdq-continuation-v2-0-2e8b7615536f@nvidia.com> In-Reply-To: <20260219-cmdq-continuation-v2-0-2e8b7615536f@nvidia.com> To: Danilo Krummrich , Alice Ryhl , Alexandre Courbot , David Airlie , Simona Vetter , Miguel Ojeda , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Trevor Gross Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, Eliot Courtney X-Mailer: b4 0.14.3 X-ClientProxiedBy: TYCP301CA0024.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:381::14) 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_|SJ2PR12MB7990:EE_ X-MS-Office365-Filtering-Correlation-Id: d482698b-19a1-4619-a834-08de6f8914c6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|10070799003|1800799024|376014|366016|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?eWJ3ckpYMXQ2SEIrUFcrMVRPSWh3emRVVUFGNFJLZ01VKytlL2RxcUVMNXl0?= =?utf-8?B?blhGemdIQlJoczBQZTlwRkZBaFJEYzNZV1BiNXBPME93cGVndElHd01pZWxG?= =?utf-8?B?ZEF5alVIdTVjWTZOZ1REdDdBVHRGbDk4UnlGY253bk5MRFpDV2xzZlEyek92?= =?utf-8?B?K1hQd0E2SjZlVVFGcUZzWm9QYzZIUENhN3hxQmc0RU9KSHJzMXJxUFN4QkpR?= =?utf-8?B?S2RBWlhNYlEycktOc1lhK2RRY2h1N05VR0EyV1pPSDZrZjZpZUVGR3FqTHFi?= =?utf-8?B?MUpheENTQm5jN3BXQmVSdGZVN3BRSmFKRHRNOVlndWtVK2RxUG1tVlphVllr?= =?utf-8?B?RnFxbzJqQWdSUGo1OENCeTlNV0ZWalY4MGNZeVVLemFuZGZ5YkJnRENhWjM1?= =?utf-8?B?MGtnVWNPek1mUFZxcmlRRmxOZWIzZGI0WDRwU0JmY3dFVlJ6TExuS0oyMUho?= =?utf-8?B?bzBYUEVidTBrSHd0c09rNHdhaVVUaXFVTmprbjNPMG5jWkJPSmpZOEIybGZr?= =?utf-8?B?SnZIOXE1S09YWUFOSWpQZUIwUFpVbUtQaTE1VUtYRTZqazNYQ2tpenJpTWcx?= =?utf-8?B?dG1tRXJkREd6cS9kZXRQd1cwZ0ZqQUcxWUVjd3Fyb1RXY0NTeUhtV2pOOUJ4?= =?utf-8?B?eUNWSGxtd1dMbWxiM1ZhS05DQlZiSndTRUpEek1DencvMStZWUhiaGswdFFR?= =?utf-8?B?aUtPQk5IMkhoWHVkMnJqUU1wV3hjejY0UXdYeHkvMWN3b3I2WGw3WUZDT1Mr?= =?utf-8?B?OW1xWkU1UWRSL2VldStTMVRGTkVBUkR5NGxXR1p1ZlpRRnBwaXRqU3V4OHJr?= =?utf-8?B?ZmdSaFFWR2RkU3JQUHpvTWNBMDNJUFBSamZwUmVJb2hqTXBxQ1lRaUNoR05v?= =?utf-8?B?ZWFUcThQUVRBd3VwenU2djJnMHlJOFhaKzUvM2ZiVFpxSGdCNTZ0SXRPWXpU?= =?utf-8?B?MjJXRHFVci91dytyR3hMTXpuRXVRcjJYaGYxcHdPQ1phRDdURG9FNkVmcVI2?= =?utf-8?B?bVJFMkNvV2J1U2FUaVQ2aWdkbjF5T0REMlVEUXhYQ0lUOTZWNzdCVHNDcndj?= =?utf-8?B?NFJ5NFMySnVaYXdqNG9CYkxTZGZENFpEZmhnV241TDYxT1lhUVZlbkM5UDRj?= =?utf-8?B?UzNmak9RS2dxS1c4Qm9nc3hVUmZLTDRhMUd4a01pVHJ5Z2JQMFNZNDMwMzYx?= =?utf-8?B?NWEyWDZreFMzdTU0SnJTdVJzMmlOREovZENsa2MvSEQ5QUtyakhXMjlxVGVq?= =?utf-8?B?bXdUVkJvNVdnK3doTlJUeThZQVAvNUY1TmJORHd5RmpmYUwrUXJGUHBIMGpJ?= =?utf-8?B?emZjU3JFVHZrbnVBTzhaMXJSWDRPcURieHMxcUppR0NPN05SQkNYdlI5TExF?= =?utf-8?B?dUtTbVo1eTdyRGZQN1Q3WWFrYTFHajhNVzlqb2ZWcEV2ZUdWTzBFNXFrY2tP?= =?utf-8?B?VDNJSkNWeENGTkVQY3BMWTdWajJBL3drRG1hUVp0VDFvWHVwZnJ4VDBndHRM?= =?utf-8?B?WkNWRjZ5S3crNytTUjcrQ0dwMDZqQk5GV3lSc213SjRVK2VyeDFYWm84M0hM?= =?utf-8?B?eEwvbU9kbmY2bmYyWWdyWGxMTWVyOFVUSzZzTjRISEdwWXd3Zm5LS3ArRnM5?= =?utf-8?B?d3YzYkYveDFQVmM1VkN0TkFJcWVkQkd3N1prcDdMWWdWWWZROTdvREsxak44?= =?utf-8?B?NWZrNHJFY3dyZ24zVytrRVRJcmdMRU91Umk1SXRHTDk4eHR6OEtPQ2ZxLytk?= =?utf-8?B?eFowclJJYzRrbTBlbXRlNDZ2UXZtWXNwcDdJMUl4M3FwY1JCRWpWcm9BbVVS?= =?utf-8?B?VFU0SlRSSmZUeS9oRnA4SE5QUHdVTW1PeElLOG5TeFYrYzJWcERCaHo4eGlm?= =?utf-8?B?Sm82ajBvTlpWQkRtcmJ1VHhaMkNIS1RrcWMrL3dhNFdybzh6SlR3aDV0VVNW?= =?utf-8?B?NytEZkdIVTRDRFZSd001VC80U0pTUGlBL2FPNHN3RC9DWHg2anNYMFRmeGhl?= =?utf-8?B?VXVob2Rwblc4RjdVUVRZNHpzTHlUeTFuL1QxWmFvNklzNTRXdUdyYzVteEpH?= =?utf-8?B?M2w0cEh0aDVRTUVTdlFKaS9iSzd0UEV0cm9RalBFQWpOWmdNMnUwUkhyZXNu?= =?utf-8?B?R2R1MXJGQXZTM0pyQ0htM2dON0VrNHB0QWRKeGJFVExPWDZhMnA2NFdwRGhs?= =?utf-8?B?NXc9PQ==?= 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)(7416014)(10070799003)(1800799024)(376014)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Nm1CZFVkci9FZFRRMHZLY2Q2SGlESk5ST0pCeDBnMlpFYlJ2RFZ0eXAvWVFE?= =?utf-8?B?L1hudko5dWxFdG9Ud1lSdExITW9KR2VYOHJTcWJYb2ZENEtXNnVnQ2F5MzBJ?= =?utf-8?B?MGdncWRMQm8wWVB6WGdhdEhMVmlldGhRd01MMGNDNHo4VncyMS8zZDBhYlJu?= =?utf-8?B?M1hUMTJOVHc1eTRYQm1pMEh4R0tmMWpGUjFiZW91V2hWOWRtMTdpMTBUcmJw?= =?utf-8?B?cmVNZzFidXdOSDZjNDMxOG0vbnFjYzJZMkgzUisyU0Vieklxb0JWT0Z1dlRS?= =?utf-8?B?Y0hEY0V3eUI5WlU2R210aXV6Y04xV0JBYUhXWnlIbUlBRUpHYmM3alg0U2p1?= =?utf-8?B?NGpUai9zdXdUb0dQUmUxeXlSbGh2WFVDZHJwMkJ2VStDSlBYenJPNUthZkdx?= =?utf-8?B?aHk2ZmpBV1RmVUN2bC8zR0dSRnAzZ3FWZkxiQnFRS1hLd092T211cll2SVZ1?= =?utf-8?B?M0FjYzRKcGk5NVJsc3JZSU5TYVEzcUQrcGVaN1ZmUHZaUFV6OFBCMmVDRGVF?= =?utf-8?B?cVEyRWhhN1JjbE5zMFJBcDAxa3ZqUWg5MHVTSFVad0N6TGdRRThuamRsK0NH?= =?utf-8?B?NWlGWWZjTXkyUnhIWEVNV0pyMmh0UjlpWEc0SEpiVEZHQmIyMy9BOG5HcnFt?= =?utf-8?B?aEpZYTNXa2M0bGVsWDNlQ3BSeUxQVUVlSjRmVi9ScjV4eEppeWJ5VlJVLy8r?= =?utf-8?B?OXdVYzhvRGVHa3piT2VYVG5pbmhtVjlKVlVuZUNUOUdTcHNNNU14M3dwQXNw?= =?utf-8?B?NE0xSThPY0NROXlnaGFzYnpvTHMyVENtNlp4Z00xakZEV0VaYTFrZXdWU0lB?= =?utf-8?B?THdza3pEM3o3bERWMXZ1bGRFempmVTJxQ0JZQVlQbzYrUHZDNTdtOGFVMkU1?= =?utf-8?B?NmZwWVVBN0kxN282QzdaNW55QkNGeDBCanpCV3Z3bExEdnJFRitJTWxjZHV4?= =?utf-8?B?QXlqbXJsaTV5MEdWQ1hrWUpSOXd6SGJIQjVaVk1LOStpTkF2eDdFU2FLckJp?= =?utf-8?B?ekozN0NIY0ZXM1NqeGwwYThWb01QbDlFNVJJclZYd1JWeCtBSk43NDlQYmFD?= =?utf-8?B?ekN5VFlBcFBqQ0VpS3BnN2REYXl5Q2p5SDJLbUJwdnFaVml2RFRHQWtNM1kv?= =?utf-8?B?UGpOTW9XclEwVzFtN01wbEkvSEdSUi9SU2ptcDRsK3JvV1dta0E4RnBEQXYz?= =?utf-8?B?MnliM1ZjY2F4Rk56OWNzVm0zVTZCWm9PR0pjWnM1bURDMDBKVWU1M1JISjJV?= =?utf-8?B?YXhGM0RVMUVoUmpIYzE1UDJMTk0za2lqQkJGNkNiOURESHZZS3ZMdEJZOG95?= =?utf-8?B?Q3V0THVTdXdLRHNQekJNaUlWSVdPbWwxVXBYWHp3Vm9YMXF1MXhJMXBQbmNW?= =?utf-8?B?VHJtOWVJQUhTcW1tcGozTS8yVFAzeFRFSENEa0FXLyt3R1NRaitnOUFERFJq?= =?utf-8?B?U0JoczNnamlIbmJzcFR2Vm1WWURwWU9DVHpza2FNM2tkTlBrTENJQk1oTitw?= =?utf-8?B?Tys0ekNWWHB0R0JYeXpGaUd6NitEQnMrdFhpNW9sYmlWcFJCbjNScEJkaWZV?= =?utf-8?B?UDFmSEJiTlZMMm1HM1dBdk5zZFBFZWFEdU9YQTY4OVBFTHBmb2VmUXhreGo2?= =?utf-8?B?RXNsaUd4V2NwTzlBeTMxMGRlUEhwQmxJcUREdC83cUwxK2gxUFlhZVRjaXo0?= =?utf-8?B?cjJ4b016ZHB4TGNiRmsyYXVIQWxSVW8rUXlDL3JHNm0rbTZwWnZVVzFZQTJL?= =?utf-8?B?ayt2S3pZUlBDTnc4YkU0end5bUVOMWU5TnUrR1QyTkpEM09aRCtwWEIrSVZY?= =?utf-8?B?VWlwazFTVVg5OUhSU2g1WmVSYmtWN1dkb0hTMU43elZUWWRZZUpCbVdxQVdV?= =?utf-8?B?UUJYME9hWURvVms2eVBHcFN4U0xtWCtVZGlYYStKS2FZK0REeXZnb1J6UU1x?= =?utf-8?B?bk1QVytYMXZwd3ozeEdDWHg5WUZHbGdCeWNsYldFMUQ4R29UNXhmL3JEbU55?= =?utf-8?B?ZFVHelZ5SEpBSTRhclBlSHRLRldhdk9raWpNS1R4K2pLUzVXWkFvZ0ZGOGd4?= =?utf-8?B?V0VmL2ZVekh5WFQxaFR2TXgyRUJKbEEwODlnZjJaRHVnVzI5UmRaRW16WlMw?= =?utf-8?B?bGg1TCtWOHJXTHJ1MEtVR0RGWGdSSUdUa0ZSMWRYYVpFOGRRVEloU05teWov?= =?utf-8?B?ZC8vQUdKeEl0dHoxN0ppVTFNd2s0NW9KZ1JiaU0vZGNyVU9pYkVYa0hoQSsx?= =?utf-8?B?TEVTMzVxU3FWejFFaXA2ZGxyMFdWUEw2dXp4SGs1ZitTU0svSloxYTlFRlJq?= =?utf-8?B?czNBbit6R08rbGwyRHBsNEMwUkNDOGQyRjVPek9FSXZyQzRqM0s0OHVhL2NJ?= =?utf-8?Q?KuJV28Dr7hANVe24VX2az8qgTMIhg6N3b+iBjc4FcQG/B?= X-MS-Exchange-AntiSpam-MessageData-1: U/3+BYm4XupAWQ== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: d482698b-19a1-4619-a834-08de6f8914c6 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Feb 2026 07:32:48.5519 (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: gPChy8QDmVNA7vH6Cs+f0CSJrmkZYnvCTvo3OeuPUUwAX9saw3z2cUzPpOMiUcOEf9i9hObays9T96Kz3u8/Ew== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB7990 Add tests for SplitState. They cover boundary conditions at the split points to make sure the right number of continuation records are made. They also check that the data concatenated is correct. Signed-off-by: Eliot Courtney Tested-by: Zhi Wang --- drivers/gpu/nova-core/gsp/commands.rs | 113 ++++++++++++++++++++++++++++++= ++++ 1 file changed, 113 insertions(+) diff --git a/drivers/gpu/nova-core/gsp/commands.rs b/drivers/gpu/nova-core/= gsp/commands.rs index e722c6091ec8..1683ebb4c685 100644 --- a/drivers/gpu/nova-core/gsp/commands.rs +++ b/drivers/gpu/nova-core/gsp/commands.rs @@ -383,3 +383,116 @@ fn init_variable_payload( } } =20 +#[kunit_tests(nova_core_gsp_commands)] +mod tests { + use super::*; + + struct TestPayload { + data: KVVec, + } + + impl TestPayload { + fn generate_pattern(len: usize) -> Result> { + let mut data =3D KVVec::with_capacity(len, GFP_KERNEL)?; + for i in 0..len { + data.push(i as u8, GFP_KERNEL)?; + } + Ok(data) + } + + fn new(len: usize) -> Result { + Ok(Self { + data: Self::generate_pattern(len)?, + }) + } + } + + impl CommandToGsp for TestPayload { + const FUNCTION: MsgFunction =3D MsgFunction::Nop; + type Command =3D (); + type InitError =3D Infallible; + + fn init(&self) -> impl Init { + <()>::init_zeroed() + } + + fn variable_payload_len(&self) -> usize { + self.data.len() + } + + fn init_variable_payload( + &self, + dst: &mut SBufferIter>, + ) -> Result { + dst.write_all(self.data.as_slice()) + } + } + + const MAX_CMD_SIZE: usize =3D SplitState::::MAX_CMD_SIZE; + + fn read_payload(cmd: &impl CommandToGsp) -> Result> { + let len =3D cmd.variable_payload_len(); + let mut buf =3D KVVec::from_elem(0u8, len, GFP_KERNEL)?; + let mut sbuf =3D SBufferIter::new_writer([buf.as_mut_slice(), &mut= []]); + cmd.init_variable_payload(&mut sbuf)?; + drop(sbuf); + Ok(buf) + } + + struct SplitTest { + payload_size: usize, + num_continuations: usize, + } + + fn check_split(t: SplitTest) -> Result { + let payload =3D TestPayload::new(t.payload_size)?; + let mut state =3D SplitState::new(&payload)?; + + let mut buf =3D read_payload(&state.command(payload))?; + assert!(buf.len() <=3D MAX_CMD_SIZE); + + let mut num_continuations =3D 0; + while let Some(cont) =3D state.next_continuation_record() { + let payload =3D read_payload(&cont)?; + assert!(payload.len() <=3D MAX_CMD_SIZE); + buf.extend_from_slice(&payload, GFP_KERNEL)?; + num_continuations +=3D 1; + } + + assert_eq!(num_continuations, t.num_continuations); + assert_eq!( + buf.as_slice(), + TestPayload::generate_pattern(t.payload_size)?.as_slice() + ); + Ok(()) + } + + #[test] + fn split_command() -> Result { + check_split(SplitTest { + payload_size: 0, + num_continuations: 0, + })?; + check_split(SplitTest { + payload_size: MAX_CMD_SIZE, + num_continuations: 0, + })?; + check_split(SplitTest { + payload_size: MAX_CMD_SIZE + 1, + num_continuations: 1, + })?; + check_split(SplitTest { + payload_size: MAX_CMD_SIZE * 2, + num_continuations: 1, + })?; + check_split(SplitTest { + payload_size: MAX_CMD_SIZE * 2 + 1, + num_continuations: 2, + })?; + check_split(SplitTest { + payload_size: MAX_CMD_SIZE * 3 + MAX_CMD_SIZE / 2, + num_continuations: 3, + })?; + Ok(()) + } +} --=20 2.53.0