From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1CE88F30934 for ; Thu, 5 Mar 2026 10:40:18 +0000 (UTC) Received: from kara.freedesktop.org (unknown [131.252.210.166]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8F35E10E252; Thu, 5 Mar 2026 10:40:17 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.b="kaJVNIbX"; dkim-atps=neutral Received: from kara.freedesktop.org (localhost [127.0.0.1]) by kara.freedesktop.org (Postfix) with ESMTP id 7B05C44E81; Thu, 5 Mar 2026 10:29:55 +0000 (UTC) ARC-Seal: i=2; cv=pass; a=rsa-sha256; d=lists.freedesktop.org; s=20240201; t=1772706595; b=vljPiNxyM7vS2aTrsvPaAWiCYIbkgJduSge9jNfjTN9HiRJAH6a939suyU0MDjETy+ZzI VBqHbjwKzsR7ly59pZlTa7HZovZhCyiYbterCBBvDxnxtIgO4/l1Gj6A7tOHWdSfb+QhDIp rEg6WaoL1eqxsnyFeH7l2uMHjCm66DwoiAFjOEQwhsgUg3P5JwidSyFMKnm7VkVME6N4qyR qs2+MZQpiPoRegF7vVM+KHNLa7Nmx+WdIR34Qv3yD6QnDZMgAnHrjZO6kBhwnR6dVdb62FW SOFTDoymU6MfxhAkzyyFVfAbWNklwrXsty0ylLP9PBh7LIiROTOo3cr/nrOw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=lists.freedesktop.org; s=20240201; t=1772706595; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=E+Qtgaj6Hmp2BXVE/QSMbMe/5HJ2WemQ3+FN1yhTstE=; b=hacxkHCPXrfNTxjR2sE9eRs89rEUby2XysVQg0mY8UW51iAR2RxAIP5cokf+22auO2s9C 9uo0smO0DJER/bCWNKVVW59UQfj3bw3eY++Ohl5XIdFwmC+zHG3YaTdX60i2go1txAfqOS8 3wRdkHlkhKaFJqZHIp0/+r48WUK4OYFXKuK/Ug55/F0rZGiRhugJDGCochgJqa2QkajKBbA xW9/YQJ84xRpmG/9S8srObaQoKEgYT7lj4/POhlvflpHwHYIH8Tx61HZvfE3MzAPd2+r6eI nxXpZKoQQ+qHu3GviXETjGOBBJCtrwQZUtCX9wK0BZqrEQWoIcSKom0DHeyA== ARC-Authentication-Results: i=2; mail.freedesktop.org; dkim=pass header.d=Nvidia.com; arc=pass; dmarc=pass (Used From Domain Record) header.from=nvidia.com policy.dmarc=reject Authentication-Results: mail.freedesktop.org; dkim=pass header.d=Nvidia.com; arc=pass; dmarc=pass (Used From Domain Record) header.from=nvidia.com policy.dmarc=reject Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by kara.freedesktop.org (Postfix) with ESMTPS id 1239F41CAA for ; Thu, 5 Mar 2026 10:29:53 +0000 (UTC) Received: from SN4PR2101CU001.outbound.protection.outlook.com (mail-southcentralusazon11012063.outbound.protection.outlook.com [40.93.195.63]) by gabe.freedesktop.org (Postfix) with ESMTPS id D4A3710E033; Thu, 5 Mar 2026 10:40:14 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=t6JPklFevxlQidfdcKm/JCBFJNDW4mKV9kEhjGLnnMs6Rig1BxQxWMjsHE61yQN0phwLjdLs/da5PTVZk9nLwFKyuz+9g72mQ6FG9OORc/WHS8bEZt6xfjWkpi7wLugNTn/6xz7pH5nX19/VHvs0KT+xFakNY9OeImxB0g3e/L1CLAn7Iz/PQ8gbqoYMC8aBVfPpGruuAh0MwFWKidhSnjvHLz1IDtZHfhwkWCl2MtBrbS4QUqfBSRW8KoZZMYjA7UmY/Nw3dFG4jv4dx45Ap3R5Oxx1sP+B7B1CADnieboOppDXBhht+ofphX8UpFGdRCtHLeXr0WAqvYqaY7lFOA== 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=E+Qtgaj6Hmp2BXVE/QSMbMe/5HJ2WemQ3+FN1yhTstE=; b=wZkSY4UDwhM7s49H8vAEMucJ3t5wG+nxqGKgzFIpSacQGBt6FpkGku97eaYgJJkzRvFLTj1DVR7wnTsorzmsBFqbHejskSnelsx9DBphLfvZbNqQjouTx+v5rLfoLX47gU0I2gPgAzw/1LuAmrMgiqNGF6X3FLW2BY9xGHQlUgkcrRQuIxWTy/M60Hfw3WgkQD+VOAnIu95LmdqJ5VHIE9uaga6RQ9SxOOHSmlEUEtr/uRP+0vznAneH03eEwcV/MVy//vOzLYA6h31MigiUHY0E+03OkQZN3kRICwjZd7i0+jyrRluIYd0VkFTkHBq5HeK7SC7TW1WEB0cyPmRU/w== 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=E+Qtgaj6Hmp2BXVE/QSMbMe/5HJ2WemQ3+FN1yhTstE=; b=kaJVNIbXU9qmY8IofCqwTcmR6mpFD2emndC/e+5BfmcBDBYkdcL6KS7wmQuyWhig+bBsoJG27x0k0eYl1zEdbzp8nwpWsmPcMyWA5Rr+eaop7HTNwM1EPIL5KEWkrP3DvP87LuCSxct/Y0MGOiOo2azuZd2rQU07ob/Pn2aE9jEdbLuBCSohFazoWakKYSkbQgWNTO70ZML2mmlMdoUvfAZcPsBSMeRjjnsL2pRuQ82Wkz2NJSJ2aQDxGYhU8ao5Xevy9QiMEmaukKUWt+yGBN72qLmyfU1VNQh/6H7ig0RIgZ1RyAOsz7x9bO8mzCFLwIwWE9ApJMMIsNX46UfJnw== Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.18; Thu, 5 Mar 2026 10:40:11 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::7de1:4fe5:8ead:5989]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::7de1:4fe5:8ead:5989%6]) with mapi id 15.20.9678.016; Thu, 5 Mar 2026 10:40:11 +0000 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Date: Thu, 05 Mar 2026 19:40:07 +0900 Message-Id: From: "Alexandre Courbot" To: "Eliot Courtney" Subject: Re: [PATCH v3 3/5] gpu: nova-core: gsp: add reply/no-reply info to `CommandToGsp` References: <20260304-cmdq-locking-v3-0-a6314b708850@nvidia.com> <20260304-cmdq-locking-v3-3-a6314b708850@nvidia.com> In-Reply-To: X-ClientProxiedBy: TY4P301CA0058.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:36a::18) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR12MB3990:EE_|BL1PR12MB5849:EE_ X-MS-Office365-Filtering-Correlation-Id: 4d320410-2fbe-4166-5efc-08de7aa393b2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|366016|7416014|376014; X-Microsoft-Antispam-Message-Info: 015imOL27uIsXVBgI8OPoKd2b/TvizpmRD1C6t566yp6v0hLdiMIv2XFUYBjvDPSYfFy4g6QUex0ss29pxAZeKv6dkMoFa61VDP2Mn68CHCsN38mZnjyKyf3cVmTR1j6IaDLp/xeGBohdXYXrwMyC78HyB8GfTxRtLhXtqjOGfadrtTFSRyGH7YqH9jgYfQWWKnAjYf1IgtQkkGITE1bbOV7cBWqSAQJqtDN8fPXNTEP3lti297k+8/MRFENnLAkX6yB0NrGkYNmFH8cqvmng9v//3eyTC9sZcxO4FtFJGfPij8anOEtCeV/2kEkFQSRsbEPENAGhqaeLUUuT39ajUrrGTGiy5qPE/RsjV8HaH2Bzt9m7b/6Ve3fFRhctn8HdrAHNDrxnbmD1G6pJYinWTiAMyrqNtrY4/fTNzm7dnGa5/Cx65bTSC24bcHlHHbYqZyUPgeoxRUBz+BfHJkmhcpvhFh1GqE+4g0Ibyrsojc9SinYMs013pBVc4C6MIrDj7EPqPPqvh27rJUELm0fhCsfTJBXf3Z42OVo/wyRojW59Jylno4lgA0LcIsBuPCZKat8F9vG+SabqlYmkpmh1XJA0qSYc343UpmlKKNmVnQ12AYFdTr+cainiXBml8TN+9SL6zzHtpqtwZf+cWQyNOSl481TcgTnAcTnrKLi6UOaoXaRCucVXiZ62H0w0AgZkOiZZYSep9SkLXOMb9NWUxe6XVzMxwdLPszbnZVHgn0= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(366016)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YXRZcW9oNzlDYVl2NTV1Q0VZSkpFRkFGRnRhNVgwN3VqMjVBaE1zbGlHbjhm?= =?utf-8?B?TXBaYWZXUHVCTEMxWHBIY2hNRTkxelI1bVhCSXk3VGt0T3JGQjhUSXZOOStK?= =?utf-8?B?M0xDQm1jNzBaVUtTQTZTRmljdUpjT01IYzMyc2lBS0gvcTcyMXl5Q3lOWFM1?= =?utf-8?B?RlVpc3pab3FFSFU2cXQ0dm1pZWZrRlJjS2JQdnNhai9oUHByVXorSkVBSnBp?= =?utf-8?B?anhRUHlMREk4RTMrNVMrVHo1bVN0M1k5SzdvbUJkbzAzZ0FkOGkyeDVCM0lN?= =?utf-8?B?RERwQUg5THpZNjNjT1NkQk9BblNBUWt6UXd6ekJIUjFOTlEwekUrdGdyV01y?= =?utf-8?B?OW9Fb2ExSzg0cm9tQUx3WmVrd0k1b29PTVZRM05kVzB3R01Makw2di9qdENQ?= =?utf-8?B?WDUvUXcvVzNLWnJ2YTQwTzZpMlcxRldNZ2l3MCtQaGo0RS8wZ0h2VkY4RW4w?= =?utf-8?B?WEpoK1BOYll0amxndStRR2hWWHlkcUZTb3VGTHlhTUgvY2xCdk82aTA4K1l3?= =?utf-8?B?RERpZXl6SW01bU5iMENIWEs5bVlGcVRKN2NicjJsWWpIaytYeGRBdVZFQWxh?= =?utf-8?B?a3QveGhveXZ5dnFZUUhVRHpJaHdqZ3BFbTl6YUM1VDFnU2hjUVFPRXZ5TE1F?= =?utf-8?B?NGZtS2RZZURqaExGVjBiZWoxOGhxYjlJOEhuUmNORm5LVTNMVVhTR1puWjJa?= =?utf-8?B?ei8vQ0ordTQxdElZU3pkZ210dnVaQnYxa3hQelhrQlUwZEJTaTduWGRqVGdm?= =?utf-8?B?QXJ1R3BnK0RsMWVsNDRNU08ycGRyWGdQckdJSlpDR0UyeWpoZURRNU4rYklQ?= =?utf-8?B?QkNqNHphWktEVGR0NFF6UWp6SVFhWlhTWHd3NDhrQVRRRkJwSXlubzFuWG84?= =?utf-8?B?RDRNQ3dSMDcyMFJkMnNJTFR4cE9nU1NpbHp4MFE4bDZTUjE4T043cEZzYjFU?= =?utf-8?B?ekNFaW9SQUpOOGQ5WWpCdTVITVJ4MUs4TDVrUm85YUQrNU5nemZ6d2hYS0Ev?= =?utf-8?B?Y0VmVmczc2pMRmFQNW16cy9OUmZaRDljRjlZVmIrQm1lcDg3WUh0M0Q5ZGJk?= =?utf-8?B?YkVTdk9rd3dxdzR1NjU1eExaUXEyUWdsR0VrRTFIZDFvTDA3VnFDV29NN1RK?= =?utf-8?B?NWtnemtobndJMkJpcmQyT1NyZitFQllkM3R4ODcxQUFEQkxNa0hHaGlMbzlY?= =?utf-8?B?V2hLVXY3ZFhscThpMUIzeFQ4OE5aMnZvTE5LN1QxYXYxNDErbVVkNkhuTFIr?= =?utf-8?B?MGh6MTF0K0hzdHV0NnJxSDJQdzZMUGRmMVpoUncxOWJIc1NTam5wa0xHMEl4?= =?utf-8?B?dDdpQ1NPd0dRRm50bkNsbGJtVG9XMU54NkRadmloNFRNckFRYmNvSVJhSjRJ?= =?utf-8?B?L1dsV0hOU0VmYXNTTkt4UWxETHdhVjJzK256cUcyMHVUVEJ5dmZKc0dZWG5k?= =?utf-8?B?UUdIQktobnlveHRlVmNrUzlueVhsSVh2cC8rOE1EVjRENk9ySUNJZ0xGWU0y?= =?utf-8?B?c2VheDVaZlIxeUgzTEtrYWc3U3JjckVhd1IzNVZFVy90NG5XN25hMk1GeSt5?= =?utf-8?B?aHN0cWpPa1BNRUlRVWxOM0xZZC9odUk3d1RobCtuSm9RWElvU3hselNwNGVH?= =?utf-8?B?cEM3VkcxWU8vOTNqOWlaVHdiOXB0dVpsOGZ0NDdjbXpRaU14NVYwVVN2ZGxq?= =?utf-8?B?U1RNRm9PYUxMd3c2L0ZTdFhqY0JmZ21aNERRM3c4eTQrS2x1VStOdG1rMWNF?= =?utf-8?B?UktQT0pod053M05IREdYeWhDZHZidFFEbEVFQ1lKVWhVWjUrY1hHUXoxZ0No?= =?utf-8?B?MXg5a2gxODdkcEF3d0ZjWEQvaThSemdyK2pQMGpEVzExd1hmL3g0WjduWUFC?= =?utf-8?B?Y2pmelg4WnB5VFJXT3NFTHRiQVdsaUVRS2NkalErTlFEQkV3alZkT3EvVDZ4?= =?utf-8?B?emV0VkVsRXJMMnVxbWx4aWFmejM2ZDRPM25oc2VHS25UMGFrakdDd2d3UWFM?= =?utf-8?B?WUdrWlRQeVlwWjI2eGZsZDdZN2tpZ1RLZjJrMVQ4MU8rRzk1YWQ3MklWTnV5?= =?utf-8?B?cWVPTkxCelM1UXZwU1Nqa24rUXM2emI1VUkyNlNRN05uQW50R1hId1NSZm5o?= =?utf-8?B?cjZqWnFOQXFOb2RjVDgrU2ZTcjh1V2gyM0dJMVZ4TGpVQ2JMTHIwdDhzUXl2?= =?utf-8?B?MmV2SE9sYzR2cm14dWZsTEFZblNpMFJ3TklXYjRhQmI0aGtFTU4vb0l0WG9v?= =?utf-8?B?U2JmcXE3TldmU3Z6ZVNXU3VmOXV5VlY2M1JuZkxKZXg2YTArQlM4a2oyOHk1?= =?utf-8?B?THN6RnFXblhQaGdmTzJ1S2NDR2pmNDNwcDJLN0cyODl1SHc2cjBUc0tXUThU?= =?utf-8?Q?2Dwihnw+TRcFOfKhAk+01GnopQVbHzM+n9ioYSgDnQNYd?= X-MS-Exchange-AntiSpam-MessageData-1: aSgwDyun2ucfzw== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4d320410-2fbe-4166-5efc-08de7aa393b2 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Mar 2026 10:40:11.0892 (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: 4+P/z8UXej+9kMB9oefDFvwLHorNT5/L3YkcjqcViXab0hyl24L4kdcgiS6xP6Ss94ZG/1NxFjdPBMgiTTgd0w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5849 Message-ID-Hash: WJ5EGZXN3YS2332S4IOUKB4BZTW3NKMT X-Message-ID-Hash: WJ5EGZXN3YS2332S4IOUKB4BZTW3NKMT X-MailFrom: acourbot@nvidia.com X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation CC: Danilo Krummrich , Alice Ryhl , Simona Vetter , Benno Lossin , Gary Guo , Alistair Popple , Joel Fernandes , nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, Zhi Wang , dri-devel X-Mailman-Version: 3.3.8 Precedence: list List-Id: Nouveau development list Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: On Thu Mar 5, 2026 at 4:44 PM JST, Eliot Courtney wrote: > On Thu Mar 5, 2026 at 11:10 AM JST, Alexandre Courbot wrote: >> On Thu Mar 5, 2026 at 10:34 AM JST, Eliot Courtney wrote: >>> On Wed Mar 4, 2026 at 8:56 PM JST, Alexandre Courbot wrote: >>>>> + /// Sends `command` to the GSP and waits for the reply. >>>>> + /// >>>>> + /// # Errors >>>>> + /// >>>>> + /// - `ETIMEDOUT` if space does not become available to send the= command, or if the reply is >>>>> + /// not received within the timeout. >>>>> + /// - `EIO` if the variable payload requested by the command has= not been entirely >>>>> + /// written to by its [`CommandToGsp::init_variable_payload`] = method. >>>>> + /// >>>>> + /// Error codes returned by the command and reply initializers a= re propagated as-is. >>>>> + pub(crate) fn send_command(&mut self, bar: &Bar0, command: M)= -> Result >>>>> + where >>>>> + M: CommandToGsp, >>>>> + M::Reply: MessageFromGsp, >>>>> + Error: From, >>>>> + Error: From<::InitError>, >>>>> + { >>>>> + self.send_command_internal(bar, command)?; >>>>> + >>>>> + loop { >>>>> + match self.receive_msg::(Self::RECEIVE_TIMEOUT= ) { >>>>> + Ok(reply) =3D> break Ok(reply), >>>>> + Err(ERANGE) =3D> continue, >>>>> + Err(e) =3D> break Err(e), >>>>> + } >>>>> + } >>>> >>>> There is an opportunity for factorize some more code here. >>>> >>>> Notice how the other callers of `receive_msg` (`wait_gsp_init_done` an= d >>>> `GspSequencer::run`) both use the same kind of loop, down to the same >>>> error handling. We could move that loop logic here and do it in a sing= le >>>> place. >>>> >>>> In the future, we will probably want to add handlers for >>>> unexpected messages from the GSP and it will be easier if we receive a= ll >>>> messages from a single place. >>>> >>>> This can be a separate patch from this one, but I think it makes sense >>>> to have that in this series. >>>> >>>> I expect the last patch to change a bit as a consequence of that - may= be >>>> we will need a `receive_msg_loop` or something in `CmdqInner`. >>> >>> I agree we should migrate all callers and make Cmdq responsible for >>> draining / handling spontaneous messages from the GSP, but I was >>> planning on doing it in a separate patch series until now. I can put it >>> into this one though if you want though no worries. >> >> If it ends up being convulated, let's do that afterwards but since it >> looks like a quick and easy win I thought it would make sense to have it >> here. Your call though. > > Another consideration is that if the GSP has some issue, it could cause > this receive loop to run forever. I'm not sure if that practically can > happen or if we want to guard against it, but personally I think we > should and taking care of: > > 1. Some loop level timeout > 2. Future considerations for how to handle spontaneous messages / > draining > 3. Migrating the callers > > Seems large enough to do as a follow up series to me. But LMK if you > feel otherwise. Thanks! Follow-up is fine, especially if the fix ends up being a bit more involved than I first expected. From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from DM1PR04CU001.outbound.protection.outlook.com (mail-centralusazon11010070.outbound.protection.outlook.com [52.101.61.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 79105288D2; Thu, 5 Mar 2026 10:40:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.61.70 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772707215; cv=fail; b=p2zvYos9dmG6ENF2xzmkEWT6OmeTLwMzjMHZVx0rGE2jAE8/JYLCmME59dm2mRxeF51H2uRbDPXnZ0PwQqkx5gBomjoAyECtkl/A8GxGJxkdCiJQ6RGZeJG0am8Wt8ylajCqPGBvS7idM7/v+/uQOhgzby/Gf2M3FOnEClkKkLM= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772707215; c=relaxed/simple; bh=lZB1S/xsj3KsVRuuFJZEkYO4HXSRxZXLqiyCmXLUSls=; h=Content-Type:Date:Message-Id:From:To:Cc:Subject:References: In-Reply-To:MIME-Version; b=Pnm0NNJFsNNMiEkxPS3sYTqb3k6BfWXcVtLl4Ou+YqgRXrtfEpV0BAlKRQwJGPnwE7lmqlSpotnlknO5eY9GPnhiPja+FmVyoSSS10cXu5stJTgOeLFrqCGbBPXbMe78+hDpEK8nM5/0Ym6LOcqXIJ4i01baBn6WQYD12RYP6yQ= 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=kaJVNIbX; arc=fail smtp.client-ip=52.101.61.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="kaJVNIbX" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=t6JPklFevxlQidfdcKm/JCBFJNDW4mKV9kEhjGLnnMs6Rig1BxQxWMjsHE61yQN0phwLjdLs/da5PTVZk9nLwFKyuz+9g72mQ6FG9OORc/WHS8bEZt6xfjWkpi7wLugNTn/6xz7pH5nX19/VHvs0KT+xFakNY9OeImxB0g3e/L1CLAn7Iz/PQ8gbqoYMC8aBVfPpGruuAh0MwFWKidhSnjvHLz1IDtZHfhwkWCl2MtBrbS4QUqfBSRW8KoZZMYjA7UmY/Nw3dFG4jv4dx45Ap3R5Oxx1sP+B7B1CADnieboOppDXBhht+ofphX8UpFGdRCtHLeXr0WAqvYqaY7lFOA== 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=E+Qtgaj6Hmp2BXVE/QSMbMe/5HJ2WemQ3+FN1yhTstE=; b=wZkSY4UDwhM7s49H8vAEMucJ3t5wG+nxqGKgzFIpSacQGBt6FpkGku97eaYgJJkzRvFLTj1DVR7wnTsorzmsBFqbHejskSnelsx9DBphLfvZbNqQjouTx+v5rLfoLX47gU0I2gPgAzw/1LuAmrMgiqNGF6X3FLW2BY9xGHQlUgkcrRQuIxWTy/M60Hfw3WgkQD+VOAnIu95LmdqJ5VHIE9uaga6RQ9SxOOHSmlEUEtr/uRP+0vznAneH03eEwcV/MVy//vOzLYA6h31MigiUHY0E+03OkQZN3kRICwjZd7i0+jyrRluIYd0VkFTkHBq5HeK7SC7TW1WEB0cyPmRU/w== 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=E+Qtgaj6Hmp2BXVE/QSMbMe/5HJ2WemQ3+FN1yhTstE=; b=kaJVNIbXU9qmY8IofCqwTcmR6mpFD2emndC/e+5BfmcBDBYkdcL6KS7wmQuyWhig+bBsoJG27x0k0eYl1zEdbzp8nwpWsmPcMyWA5Rr+eaop7HTNwM1EPIL5KEWkrP3DvP87LuCSxct/Y0MGOiOo2azuZd2rQU07ob/Pn2aE9jEdbLuBCSohFazoWakKYSkbQgWNTO70ZML2mmlMdoUvfAZcPsBSMeRjjnsL2pRuQ82Wkz2NJSJ2aQDxGYhU8ao5Xevy9QiMEmaukKUWt+yGBN72qLmyfU1VNQh/6H7ig0RIgZ1RyAOsz7x9bO8mzCFLwIwWE9ApJMMIsNX46UfJnw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.18; Thu, 5 Mar 2026 10:40:11 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::7de1:4fe5:8ead:5989]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::7de1:4fe5:8ead:5989%6]) with mapi id 15.20.9678.016; Thu, 5 Mar 2026 10:40:11 +0000 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Date: Thu, 05 Mar 2026 19:40:07 +0900 Message-Id: From: "Alexandre Courbot" To: "Eliot Courtney" Cc: "Danilo Krummrich" , "Alice Ryhl" , "David Airlie" , "Simona Vetter" , "Benno Lossin" , "Gary Guo" , "Alistair Popple" , "Joel Fernandes" , , , , , "Zhi Wang" , "dri-devel" Subject: Re: [PATCH v3 3/5] gpu: nova-core: gsp: add reply/no-reply info to `CommandToGsp` References: <20260304-cmdq-locking-v3-0-a6314b708850@nvidia.com> <20260304-cmdq-locking-v3-3-a6314b708850@nvidia.com> In-Reply-To: X-ClientProxiedBy: TY4P301CA0058.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:36a::18) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) Precedence: bulk X-Mailing-List: rust-for-linux@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR12MB3990:EE_|BL1PR12MB5849:EE_ X-MS-Office365-Filtering-Correlation-Id: 4d320410-2fbe-4166-5efc-08de7aa393b2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|366016|7416014|376014; X-Microsoft-Antispam-Message-Info: 015imOL27uIsXVBgI8OPoKd2b/TvizpmRD1C6t566yp6v0hLdiMIv2XFUYBjvDPSYfFy4g6QUex0ss29pxAZeKv6dkMoFa61VDP2Mn68CHCsN38mZnjyKyf3cVmTR1j6IaDLp/xeGBohdXYXrwMyC78HyB8GfTxRtLhXtqjOGfadrtTFSRyGH7YqH9jgYfQWWKnAjYf1IgtQkkGITE1bbOV7cBWqSAQJqtDN8fPXNTEP3lti297k+8/MRFENnLAkX6yB0NrGkYNmFH8cqvmng9v//3eyTC9sZcxO4FtFJGfPij8anOEtCeV/2kEkFQSRsbEPENAGhqaeLUUuT39ajUrrGTGiy5qPE/RsjV8HaH2Bzt9m7b/6Ve3fFRhctn8HdrAHNDrxnbmD1G6pJYinWTiAMyrqNtrY4/fTNzm7dnGa5/Cx65bTSC24bcHlHHbYqZyUPgeoxRUBz+BfHJkmhcpvhFh1GqE+4g0Ibyrsojc9SinYMs013pBVc4C6MIrDj7EPqPPqvh27rJUELm0fhCsfTJBXf3Z42OVo/wyRojW59Jylno4lgA0LcIsBuPCZKat8F9vG+SabqlYmkpmh1XJA0qSYc343UpmlKKNmVnQ12AYFdTr+cainiXBml8TN+9SL6zzHtpqtwZf+cWQyNOSl481TcgTnAcTnrKLi6UOaoXaRCucVXiZ62H0w0AgZkOiZZYSep9SkLXOMb9NWUxe6XVzMxwdLPszbnZVHgn0= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(366016)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YXRZcW9oNzlDYVl2NTV1Q0VZSkpFRkFGRnRhNVgwN3VqMjVBaE1zbGlHbjhm?= =?utf-8?B?TXBaYWZXUHVCTEMxWHBIY2hNRTkxelI1bVhCSXk3VGt0T3JGQjhUSXZOOStK?= =?utf-8?B?M0xDQm1jNzBaVUtTQTZTRmljdUpjT01IYzMyc2lBS0gvcTcyMXl5Q3lOWFM1?= =?utf-8?B?RlVpc3pab3FFSFU2cXQ0dm1pZWZrRlJjS2JQdnNhai9oUHByVXorSkVBSnBp?= =?utf-8?B?anhRUHlMREk4RTMrNVMrVHo1bVN0M1k5SzdvbUJkbzAzZ0FkOGkyeDVCM0lN?= =?utf-8?B?RERwQUg5THpZNjNjT1NkQk9BblNBUWt6UXd6ekJIUjFOTlEwekUrdGdyV01y?= =?utf-8?B?OW9Fb2ExSzg0cm9tQUx3WmVrd0k1b29PTVZRM05kVzB3R01Makw2di9qdENQ?= =?utf-8?B?WDUvUXcvVzNLWnJ2YTQwTzZpMlcxRldNZ2l3MCtQaGo0RS8wZ0h2VkY4RW4w?= =?utf-8?B?WEpoK1BOYll0amxndStRR2hWWHlkcUZTb3VGTHlhTUgvY2xCdk82aTA4K1l3?= =?utf-8?B?RERpZXl6SW01bU5iMENIWEs5bVlGcVRKN2NicjJsWWpIaytYeGRBdVZFQWxh?= =?utf-8?B?a3QveGhveXZ5dnFZUUhVRHpJaHdqZ3BFbTl6YUM1VDFnU2hjUVFPRXZ5TE1F?= =?utf-8?B?NGZtS2RZZURqaExGVjBiZWoxOGhxYjlJOEhuUmNORm5LVTNMVVhTR1puWjJa?= =?utf-8?B?ei8vQ0ordTQxdElZU3pkZ210dnVaQnYxa3hQelhrQlUwZEJTaTduWGRqVGdm?= =?utf-8?B?QXJ1R3BnK0RsMWVsNDRNU08ycGRyWGdQckdJSlpDR0UyeWpoZURRNU4rYklQ?= =?utf-8?B?QkNqNHphWktEVGR0NFF6UWp6SVFhWlhTWHd3NDhrQVRRRkJwSXlubzFuWG84?= =?utf-8?B?RDRNQ3dSMDcyMFJkMnNJTFR4cE9nU1NpbHp4MFE4bDZTUjE4T043cEZzYjFU?= =?utf-8?B?ekNFaW9SQUpOOGQ5WWpCdTVITVJ4MUs4TDVrUm85YUQrNU5nemZ6d2hYS0Ev?= =?utf-8?B?Y0VmVmczc2pMRmFQNW16cy9OUmZaRDljRjlZVmIrQm1lcDg3WUh0M0Q5ZGJk?= =?utf-8?B?YkVTdk9rd3dxdzR1NjU1eExaUXEyUWdsR0VrRTFIZDFvTDA3VnFDV29NN1RK?= =?utf-8?B?NWtnemtobndJMkJpcmQyT1NyZitFQllkM3R4ODcxQUFEQkxNa0hHaGlMbzlY?= =?utf-8?B?V2hLVXY3ZFhscThpMUIzeFQ4OE5aMnZvTE5LN1QxYXYxNDErbVVkNkhuTFIr?= =?utf-8?B?MGh6MTF0K0hzdHV0NnJxSDJQdzZMUGRmMVpoUncxOWJIc1NTam5wa0xHMEl4?= =?utf-8?B?dDdpQ1NPd0dRRm50bkNsbGJtVG9XMU54NkRadmloNFRNckFRYmNvSVJhSjRJ?= =?utf-8?B?L1dsV0hOU0VmYXNTTkt4UWxETHdhVjJzK256cUcyMHVUVEJ5dmZKc0dZWG5k?= =?utf-8?B?UUdIQktobnlveHRlVmNrUzlueVhsSVh2cC8rOE1EVjRENk9ySUNJZ0xGWU0y?= =?utf-8?B?c2VheDVaZlIxeUgzTEtrYWc3U3JjckVhd1IzNVZFVy90NG5XN25hMk1GeSt5?= =?utf-8?B?aHN0cWpPa1BNRUlRVWxOM0xZZC9odUk3d1RobCtuSm9RWElvU3hselNwNGVH?= =?utf-8?B?cEM3VkcxWU8vOTNqOWlaVHdiOXB0dVpsOGZ0NDdjbXpRaU14NVYwVVN2ZGxq?= =?utf-8?B?U1RNRm9PYUxMd3c2L0ZTdFhqY0JmZ21aNERRM3c4eTQrS2x1VStOdG1rMWNF?= =?utf-8?B?UktQT0pod053M05IREdYeWhDZHZidFFEbEVFQ1lKVWhVWjUrY1hHUXoxZ0No?= =?utf-8?B?MXg5a2gxODdkcEF3d0ZjWEQvaThSemdyK2pQMGpEVzExd1hmL3g0WjduWUFC?= =?utf-8?B?Y2pmelg4WnB5VFJXT3NFTHRiQVdsaUVRS2NkalErTlFEQkV3alZkT3EvVDZ4?= =?utf-8?B?emV0VkVsRXJMMnVxbWx4aWFmejM2ZDRPM25oc2VHS25UMGFrakdDd2d3UWFM?= =?utf-8?B?WUdrWlRQeVlwWjI2eGZsZDdZN2tpZ1RLZjJrMVQ4MU8rRzk1YWQ3MklWTnV5?= =?utf-8?B?cWVPTkxCelM1UXZwU1Nqa24rUXM2emI1VUkyNlNRN05uQW50R1hId1NSZm5o?= =?utf-8?B?cjZqWnFOQXFOb2RjVDgrU2ZTcjh1V2gyM0dJMVZ4TGpVQ2JMTHIwdDhzUXl2?= =?utf-8?B?MmV2SE9sYzR2cm14dWZsTEFZblNpMFJ3TklXYjRhQmI0aGtFTU4vb0l0WG9v?= =?utf-8?B?U2JmcXE3TldmU3Z6ZVNXU3VmOXV5VlY2M1JuZkxKZXg2YTArQlM4a2oyOHk1?= =?utf-8?B?THN6RnFXblhQaGdmTzJ1S2NDR2pmNDNwcDJLN0cyODl1SHc2cjBUc0tXUThU?= =?utf-8?Q?2Dwihnw+TRcFOfKhAk+01GnopQVbHzM+n9ioYSgDnQNYd?= X-MS-Exchange-AntiSpam-MessageData-1: aSgwDyun2ucfzw== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4d320410-2fbe-4166-5efc-08de7aa393b2 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Mar 2026 10:40:11.0892 (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: 4+P/z8UXej+9kMB9oefDFvwLHorNT5/L3YkcjqcViXab0hyl24L4kdcgiS6xP6Ss94ZG/1NxFjdPBMgiTTgd0w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5849 On Thu Mar 5, 2026 at 4:44 PM JST, Eliot Courtney wrote: > On Thu Mar 5, 2026 at 11:10 AM JST, Alexandre Courbot wrote: >> On Thu Mar 5, 2026 at 10:34 AM JST, Eliot Courtney wrote: >>> On Wed Mar 4, 2026 at 8:56 PM JST, Alexandre Courbot wrote: >>>>> + /// Sends `command` to the GSP and waits for the reply. >>>>> + /// >>>>> + /// # Errors >>>>> + /// >>>>> + /// - `ETIMEDOUT` if space does not become available to send the= command, or if the reply is >>>>> + /// not received within the timeout. >>>>> + /// - `EIO` if the variable payload requested by the command has= not been entirely >>>>> + /// written to by its [`CommandToGsp::init_variable_payload`] = method. >>>>> + /// >>>>> + /// Error codes returned by the command and reply initializers a= re propagated as-is. >>>>> + pub(crate) fn send_command(&mut self, bar: &Bar0, command: M)= -> Result >>>>> + where >>>>> + M: CommandToGsp, >>>>> + M::Reply: MessageFromGsp, >>>>> + Error: From, >>>>> + Error: From<::InitError>, >>>>> + { >>>>> + self.send_command_internal(bar, command)?; >>>>> + >>>>> + loop { >>>>> + match self.receive_msg::(Self::RECEIVE_TIMEOUT= ) { >>>>> + Ok(reply) =3D> break Ok(reply), >>>>> + Err(ERANGE) =3D> continue, >>>>> + Err(e) =3D> break Err(e), >>>>> + } >>>>> + } >>>> >>>> There is an opportunity for factorize some more code here. >>>> >>>> Notice how the other callers of `receive_msg` (`wait_gsp_init_done` an= d >>>> `GspSequencer::run`) both use the same kind of loop, down to the same >>>> error handling. We could move that loop logic here and do it in a sing= le >>>> place. >>>> >>>> In the future, we will probably want to add handlers for >>>> unexpected messages from the GSP and it will be easier if we receive a= ll >>>> messages from a single place. >>>> >>>> This can be a separate patch from this one, but I think it makes sense >>>> to have that in this series. >>>> >>>> I expect the last patch to change a bit as a consequence of that - may= be >>>> we will need a `receive_msg_loop` or something in `CmdqInner`. >>> >>> I agree we should migrate all callers and make Cmdq responsible for >>> draining / handling spontaneous messages from the GSP, but I was >>> planning on doing it in a separate patch series until now. I can put it >>> into this one though if you want though no worries. >> >> If it ends up being convulated, let's do that afterwards but since it >> looks like a quick and easy win I thought it would make sense to have it >> here. Your call though. > > Another consideration is that if the GSP has some issue, it could cause > this receive loop to run forever. I'm not sure if that practically can > happen or if we want to guard against it, but personally I think we > should and taking care of: > > 1. Some loop level timeout > 2. Future considerations for how to handle spontaneous messages / > draining > 3. Migrating the callers > > Seems large enough to do as a follow up series to me. But LMK if you > feel otherwise. Thanks! Follow-up is fine, especially if the fix ends up being a bit more involved than I first expected.