From nobody Sat Feb 7 10:08:29 2026 Received: from SN4PR2101CU001.outbound.protection.outlook.com (mail-southcentralusazon11012034.outbound.protection.outlook.com [40.93.195.34]) (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 3F0F6319617; Fri, 23 Jan 2026 12:14:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.195.34 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769170444; cv=fail; b=u5jEdDeFVQVkaJ7h1TlJ6vz4n/3MHuGjxujyRJnu6BBtQ6o7nqH2lPc1+jJyLlPFEhYFmllWjHZ+G7OJewU/3HVIPLHcGlEigfEqplNmSvhOtThPBFv035Khg33kIl5xaP3y3cw+A7e+qG1W8AsCdoIHK13jHF2zSLUadVygaRg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769170444; c=relaxed/simple; bh=iTJPaVovw+BZg/dX7FDcdpNdqNwQ2MZCpGz0BjOtzcA=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=L8VIVgqyCzkixeBs3gjzjQxcC3JKAlYwbugVPqfBDWPFjTHHnosL71HcRMeWl7tVtF5ILxJ3GvblpkxbWDCLHs+waG2FsANTQkFOaEBicOf42/5laJcAN9ljdb/pgzp/xywQ/JVAbvC0WFuAdsh6ZboczPtu5USLLxnetgwSRCY= 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=NiValQqN; arc=fail smtp.client-ip=40.93.195.34 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="NiValQqN" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SXNl+1VMmemvYvd19NZp1oMTKw4IdFIrie/Xst/8W2vlhTfrJLQS64zP3R7et33cXBGXFXde4DgJ/SHMhe4KICfypy9RNae3bPnvTOaoaguaVPc/yDEB17fULDMIzJ/yC+f7NLt72VBbj7xW1yOkedizjlgHr8XIGAyTHLRn+gUdL1x3xmThymnCzPflV4rrrTIVVPqvMQJ2F6+XWILOVaYDwPS/qFlL7jpM/uWGoVPQFBbvqKJQX8m9YOkJEYjdVQoDyJVuuVpAYUmN4qiqwZUdB50RDV2x7qPokIKiFtAFp9L428TRrEhskc3URsk+SQ1XPPsV0Dcs8iO4LaRSww== 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=REx9ZFL33SHL/Y3hf7WaBe4cOQ1mtKshVcngJgPkt0U=; b=p4s/GVvjokzAyPWIBehQiHVaoBWACO4biUX8u4aqKHthk3ZCM+wu00zi8PDOKhFzM63OtUjM9oG7Ye6q4gKtX3BphTDBZBpi6aaU0KAB7FlwqvukQFRfyRs08SfIE+tAy7auOHIHRxpRZvQQ8IsC4w5+Oy4x7AMXkX69gi6Jl3Jv9h8wlm/b/z8PumCNpbLi5kl9zPl2RrS8E22oKRaxQbqkYD+QfP1tBdjMO3Gw33PJ4C12YfKazyBWS7FP1uLY6JO3/LdVwkNcA1ZXNwu8UqzIrson/Bo8DQ8kO4Me5fpuQXMC44pIEFL+qd35EnI5Pt8AdRglYfNeAVgFTnfTFQ== 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=REx9ZFL33SHL/Y3hf7WaBe4cOQ1mtKshVcngJgPkt0U=; b=NiValQqNdTSX1/nxSW3jEO4ri1rWXgxg5iU+X/2OoX7rKgySZb5W5b8N8yDaBkwuAZtywqAbPvtWvrGPkRqB4Nc+rhYWvbRghUkAvWj65T4PnvilmKmdtV3GUxwOLQpTw666aa6/u96jOYjVg6ihFzrqUMhxhPJ8hAL2l6x18z6SRSzZSF6hG47Yw8jjeoM/vUZVwJpaZUWp9CH05o55Z/pS5acqUSi7xTPNrP7NoR0SEPHzRG/MpfOHqoJgNO5P78dja/7MnlqLd211DtJvdw5SElQ8qAlxyPoFZIuhE+c96gUJuIJYD+Mftmpcuntri04yIU/EH/I4nfB69Q6Hcg== 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 SA1PR12MB8162.namprd12.prod.outlook.com (2603:10b6:806:33a::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.11; Fri, 23 Jan 2026 12:14:01 +0000 Received: from BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0]) by BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0%6]) with mapi id 15.20.9542.010; Fri, 23 Jan 2026 12:14:00 +0000 From: Eliot Courtney Date: Fri, 23 Jan 2026 21:12:38 +0900 Subject: [PATCH v2 1/4] gpu: nova-core: gsp: fix incorrect advancing of write pointer Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260123-nova-core-cmdq1-v2-1-e797ec1b714c@nvidia.com> References: <20260123-nova-core-cmdq1-v2-0-e797ec1b714c@nvidia.com> In-Reply-To: <20260123-nova-core-cmdq1-v2-0-e797ec1b714c@nvidia.com> To: Danilo Krummrich , Alexandre Courbot , Alice Ryhl , David Airlie , Simona Vetter , Alistair Popple Cc: nouveau@lists.freedesktop.org, rust-for-linux@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Eliot Courtney X-Mailer: b4 0.14.3 X-ClientProxiedBy: TYCP286CA0265.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:455::17) 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_|SA1PR12MB8162:EE_ X-MS-Office365-Filtering-Correlation-Id: be2acc16-04ac-40bf-68db-08de5a78e45a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|10070799003|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?YmlJZ2pqOWhRblI5dTgyeE5KenNDMXROdklQRGN1K25VcDhBL2tBVmtMMUs4?= =?utf-8?B?Sk9lWWJYK1FJV0pDdUZHNlo3TkVOeWU0MGtpSDgzdEtUU0pGVDl1SkVBV3Zl?= =?utf-8?B?cVRTbWhVcHFhN1ZpWldUM1htUUFxYi9IQTdIbzRkK2RRYkY5MktHY3lrSUc5?= =?utf-8?B?Y3QySmVQOHlwRmU1dXNVaWQyZnZYWG1HcTdzMHMxUDJFREs1WnVGV0I1WWU5?= =?utf-8?B?RnF5VHQvUmpMYk93WXVuTC9ySWNFbHRnOVFGS0xHQngvTlJka1dLUlp6UkR4?= =?utf-8?B?aDJzdm8zYUNud0UzTHp0MUNFWjV6WlBlNVhSYUtOc1cwRFRXaUprU0tNdFZo?= =?utf-8?B?SGtZVERkOUJyUjN4QUZRK0JqR0lkRENLV2s1d3VNZFg1Qm41NGQxNzBEdFho?= =?utf-8?B?WENDZjdlSk9ydkcrV1VsZUVEd2ZVeFZoU0NLMEhnVTAvMlA1cXoxUnBIWW11?= =?utf-8?B?NHBQZm5LbnNEdXE5NzBxQjZTZUM1YWJlSVN1Uk5CY1FWUDNMV3hZUHNxWTdq?= =?utf-8?B?a0J1T3F6Yk5TVU5jMmNNVEhXQ2kzQnYrYUJJRlF1cFhlc1Blb21qNVhHVDZP?= =?utf-8?B?OCttaG96RXczMEZENWlQOTBzbVJjSVpnbHpZKzFId2xCSlNUaDZ3MVB4bjlq?= =?utf-8?B?QmxBM2pMR1JzRER5L3IxbnIwbWZ1Y2ovQ2hlVnRybURyOWtZSk5Vd3h3Ykht?= =?utf-8?B?OXJUN1R5TVByMkUwNzRndHI1R0o5TysvcGtJdHF0Y3NMY09teTFERUQ3TTdP?= =?utf-8?B?NWQrVExYQkdUQmxyMzNvM3l2UXptSWtsOE5jcXM3V0NHMTE5azFqVHdUYjdz?= =?utf-8?B?RnpDTWpBcTlJKzNNb1dZS2swZVk1SGlON0Q4M0h4QWgrMnErMkdyUE0rZEpa?= =?utf-8?B?RFpKUW1EWm5RVTh4SVlEVGxCMXpEdVRpNzdsK0FEVHBSbDg4M2k3cGpWVDQ5?= =?utf-8?B?b0txd1Vva2dXOHRBbTFwcDgyaUFKSUxEb2lxVjl0c3djQklrYzB4bkpzVjQx?= =?utf-8?B?YTRtWW9rS3VXWG93QVNMbjhjSEN5cVU1eVF5K2w5cWRLSWRRZHRkZWNtbVFK?= =?utf-8?B?Zmo1UktYVkdGVTRNWFRDZXIzK2FvYXJSMjlZN1YycGpqYi8vMkxRTUtFSHQ4?= =?utf-8?B?V0p3d1hYMjRaa1htNUI5b0I0dmxSTndaV0E3cVZMejZxZ0MzdE9tcFh5SDRq?= =?utf-8?B?RUVFZ1JhVXBiMzRsTG9PNzNqYkhPdjNFM3RvYVloRDlRNjNYVHY1ejhYM3RO?= =?utf-8?B?dHVxQnhNMVNZNVpzcjZPaDh0eFA5MHA2WEE3ZDJMMTM0NG1IdEM2ZGphMEtm?= =?utf-8?B?ZTliY0JxYmFSbytBYTFxYWVLSUZ1ckc3NlVaNFp5cHVycXZaSkFtb0cwQ2VS?= =?utf-8?B?RVZuZFZjRGlpbnpmV1F6QUplSUhLbzBqREd3ZGlZeGJZcFN4RFlhNFQvSmZo?= =?utf-8?B?bEJTeFJjZ2FPclRqKzVyQ1ZET0xBaHdMMGZFQVU2TmZ1UzJwSWlmU2lWRmNO?= =?utf-8?B?a2hRN0FGcjlESndrQ1hwdGlraEk1bXdMbUxMRldRaXN2OG5RaUt2SlI4VkY4?= =?utf-8?B?SkM0SVdUTmdmRUdRMGowVTE2UkUzZy91N0lQc3dobjBNSDlLSDBEWkVFWGU3?= =?utf-8?B?cGhBSGdvNE9XL09Oc0xuRHMxRXRjZmlsb1ZYUDZsbEVVRTkzMGFCa2tsd21z?= =?utf-8?B?TjFMTEVLWVMwaFVKTWxacXBCMlZ5V3MxS2YvVXI1YldTeHYwMjB4NFloNzFj?= =?utf-8?B?NE1YTmdhWFU4WjIxNnczSk4vRHkvNmdERVN2NnprbThJOStiY1B2aXNrRUFt?= =?utf-8?B?TUpRSWhVV0hZQkNaUWFUY0pPV3ZsRzQrTmw5ZHhEeW5PcFNMZnVBRGNMNHcz?= =?utf-8?B?cmJVdkxuMUdYcEEwbU9pKzE3VFovZDA0K0o4NVlKdUU2cGx2blFEVXQ4ZFFi?= =?utf-8?B?bGZoeS82NTZzcnh5bnpGd3YwdmcwZDRoV1NZK2NzSTZyeDFOYXVGSCtWSWNR?= =?utf-8?B?U1ZiVWJUQ0VLWjI0RlhOZGRiTTFMc0dkQkRHREFDSDdmRXR4U1NpdGJsZ1Q2?= =?utf-8?B?STZaUE9rZnNIWktFVDFoeWY1Q1F4Sm1VbUVuOWg0aDVTTEVEaTMwWHBzUE16?= =?utf-8?Q?IAxA=3D?= 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)(366016)(10070799003)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VkJsNGNtc0FaU09yYnJVREdtYWhOTjRINnVtcndURlRhRCs0UkJiMDBVRFVw?= =?utf-8?B?NngrdXNKd2FHYmJxMTNaY3p5dlhEcnU4WmsrOEZwTGhiUUhFaGEwZmhkb0My?= =?utf-8?B?NXVxeGRyUzh6WlBwbHp5NGpvY2ZUdG1CUXFzT1BqdzE2VkhHYitXaTUrVWgx?= =?utf-8?B?UFZyZ2dKaXBqV3Fld0hFckIvaG9HRWRIM1FIRVJLRndvenplMm9YQnA5RUM3?= =?utf-8?B?TGpmU21tUEcxdmpZdlVHVjMxS3l6RkNSYUhsOEJHRm82TUFLUDBQZnJTU1lD?= =?utf-8?B?RFROVTdNL1VyMFE2VFBsVUI3NFl5SWtXQStYdENqVEhubHVvR2xua3g1cmw0?= =?utf-8?B?SmtaVGpTMWladG5CcS9aUU92anhwQ2JLTk9qMHZ2aHh2TEE4VGUxMG0vRG1J?= =?utf-8?B?Z0FFR1R2UDdGbUFqV2VSdmQ3S3FXR1BBNGY2cHBsYnVUS3lvWC9lbWZuZjdL?= =?utf-8?B?Zm92QzhXcXpJSkcrNlVOTEpxL3lNcE1tOFlxVzZ0cEozenVQZUpWNThLaXZy?= =?utf-8?B?dWZFVHBjRUtxY3l2SkwvYks4OHhmaEc3Z0tQTlNIeXlRc29OMjVGNEw2QkFO?= =?utf-8?B?NWdHV2lGM3h1UUFUOXdsNjhGSXUzWmN5YUp4U29lY0ZDQVZlNGdhRFhVZWlB?= =?utf-8?B?YmVoYmRUSGpBdkNuYTl0bTA5T0ZpTWtHdWFQZzl4dXA4S3RUYzByMnhEN2s2?= =?utf-8?B?Z2tFVVRiWXNZQURqTDZ6UVJZRU16SVNiSzZ2R3c3TXE5dTZZd0lpOWZkekxr?= =?utf-8?B?Y2FENmcwdnJPYndLdVovZTVoSEphdFpiOVM0TUNBWXI4ZmRNVjBFdGwycXFr?= =?utf-8?B?bWVxRlhsdHNiWmRDOFV3ZE01WWF4OHRxOWU5UHNYRnZSL1JFNGEvTWlTeXp2?= =?utf-8?B?ektQaCtwZkxCeVlyZFU5VzZJTGZ2dmdsandpNjdYZ1paQ2RRcHVTNGE2NlVO?= =?utf-8?B?RTVxTXdnWjBaWS9oanl4d2x0UFo0VjBINEs0WjNXajl5VUJwRnFjSUozY1Na?= =?utf-8?B?RHNNNENkb2g1aitacFpJYmlOeUliUlVxTmJYRXBQWGtXcGhwU1cvYU9SV2RO?= =?utf-8?B?VDZ5U29TWVNlclBxV0U1WThHUTkrZzcwcHZhZVEvblA4WmxNd041R1I3Zkhn?= =?utf-8?B?M1ArY2prTTgrMHRsZzdQZThGMFV5UGQxdWtRTk0xb1JZMHFka054ejQvSnd4?= =?utf-8?B?aGNZTzNkd3lzblFGdVJIRVhIdGZSaktXT3MvdEhZNEpEeFpxbnNQMVMyOFNO?= =?utf-8?B?Qm5pZUpSUGZpdHNDL1VUdVRjaHlHL0h4NXQ4dkEzdWNPdWpCeTRwajRKNDFD?= =?utf-8?B?QkhCZGVTbk5abCtFQzM5WEVqc0VNQWFTcHlJNHBOd3Z3SHNUOE5aMHFVS0xs?= =?utf-8?B?dnBhOGZqN3BkTUZMRU9aZEhqeUxFQ1QvMm44K3dqRzYwcW95cExGNDN0U2Qx?= =?utf-8?B?S0Z4ODJxVUErVGNWdjJLMTNWamUzNzV0c3owV1hHME5zOW9QSTY0cUYrd2Vh?= =?utf-8?B?NitjNHlScWVHVGpjZmR0K3ROUDM4REJhMm1sMUVuOXJvY2t3RjJHV2RYd3l2?= =?utf-8?B?SW5TbWd0dFJCSU4zM1poL2JEOFVROHplWUNTRi9RR01pUjYwOWpPWkFkRER5?= =?utf-8?B?KzhpaGhPdm9BQlpmU3VSVCtVcGsvWmt1c3hoaFRWV0M3bGRoQyt2RGpEdTBQ?= =?utf-8?B?cE02ZDg3QXVYTmtvSVBkWU1rb0xhaS9DWENoTThrQmg4bXVuTWpDbkdwMk9K?= =?utf-8?B?Zko3UEdZaVRFcHdkOXc4RllRVFRKMlNka3E3UVhLSzFKako1NW5hS1didzFk?= =?utf-8?B?RDBXK290RTQyN1d3bnJiZmxONnFWZ1RLc0kvTUNjNy9DcnJ2NitTdFdFVE5N?= =?utf-8?B?b2FWd2w1dkFoOExMaG5DeUlxYllpeWh0VkNwT1ZXTVRjNlA4L2VvdE90UjBj?= =?utf-8?B?RHdRd1VQdXpYMFd4TFBpWGI0RzY0d3ZNYVk3cUNNQzE5aTMxbytDZ2I3WXJN?= =?utf-8?B?SnY3eGVFVDdOR2VlNU5mVDgzSWZxTDJDSnRoMWdKM1FKRDk0RTdBcURtdU1K?= =?utf-8?B?NW1RaWVyYkIwdUhieDVIRGE0RjVIbHl5M0UyV2dYbkNxUEhMLzcrQU5rR1Fl?= =?utf-8?B?bDJSOGRqMFQ4SkhVNFZkclNyaDNSZFNSQWI3TVBGdHI1RWVyU0ErRWFwVFF3?= =?utf-8?B?NjFwNWovdExSdTBLeDRSeEIwYUUwWTN0bFVWTTlyN0J6enBFR1Q3cXRWTlJq?= =?utf-8?B?ejdYY2xEcTk3cFF4ZldBNFZVbEpBdkpycXBoejE1em5OZFQxWlVpZVpFU3p3?= =?utf-8?B?Mi9KeDNEYThxazZhS3dDUkIwVlVYNXZXVFlPd3M4cEdEM2VzMnozQWRLQlNu?= =?utf-8?Q?Uzm2jeDtSNM4wg2GzcCF0DxWaxtb0386Qr4neQqM2e1uQ?= X-MS-Exchange-AntiSpam-MessageData-1: 8mP0zNCVlSjY0w== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: be2acc16-04ac-40bf-68db-08de5a78e45a X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2026 12:14:00.9140 (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: 0mh/ikAAMEWYLF1nkPgg+aUhDcNpbNNQm9JWUAlI9bqBpVpaV9B6mzhKEEvY5ukhrAO1myfC5IPcXNAPJyJLYA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB8162 We should modulo not bitwise-and here. The current code could, for example, set wptr to MSGQ_NUM_PAGES which is not valid. Fixes: 75f6b1de8133 ("gpu: nova-core: gsp: Add GSP command queue bindings a= nd handling") Signed-off-by: Eliot Courtney --- drivers/gpu/nova-core/gsp/cmdq.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/nova-core/gsp/cmdq.rs b/drivers/gpu/nova-core/gsp/= cmdq.rs index 46819a82a51a..f139aad7af3f 100644 --- a/drivers/gpu/nova-core/gsp/cmdq.rs +++ b/drivers/gpu/nova-core/gsp/cmdq.rs @@ -384,7 +384,7 @@ fn cpu_write_ptr(&self) -> u32 { =20 // Informs the GSP that it can process `elem_count` new pages from the= command queue. fn advance_cpu_write_ptr(&mut self, elem_count: u32) { - let wptr =3D self.cpu_write_ptr().wrapping_add(elem_count) & MSGQ_= NUM_PAGES; + let wptr =3D self.cpu_write_ptr().wrapping_add(elem_count) % MSGQ_= NUM_PAGES; let gsp_mem =3D self.0.start_ptr_mut(); =20 // SAFETY: --=20 2.52.0 From nobody Sat Feb 7 10:08:29 2026 Received: from CH1PR05CU001.outbound.protection.outlook.com (mail-northcentralusazon11010054.outbound.protection.outlook.com [52.101.193.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 CFB2A330D36; Fri, 23 Jan 2026 12:14:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.193.54 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769170449; cv=fail; b=ApqLrbSEXkI6ww7t3BxMZ+zEx2BP++2XOfECH5bWqp5hhSlrHXy2q9xT2pCEbL5RLRT08p2EXIAYpMp1+rd/qoJexTgqgBN7OoqA1JlbP9xiwT1lJDgzlINqtQZ0qWEgtm+UO6ltAfk4x/UkGSHzX9f0zRxV7mW+0sLP+9zK5Bw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769170449; c=relaxed/simple; bh=7W7AomPr2ydmjhb+Bw+uN2+4AvOADvXJPzZ4kWzB1y4=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=m5ojCrGoXzyqQgzPt/IEclYao9p/nnOs8k/AfxYqp0VuOyLrE/087L6Jcd4DnJqHcPcWqOgCgZbkzaiaGqX2PdT4Gh41knzBjdnD4Iq4qZf5JiqXElcH/RJoPAx+C/cOSOyQI0Am2RaT4Tly6nzYNVKhiueS1ScmuFioYQC3JD8= 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=abKqPLJE; arc=fail smtp.client-ip=52.101.193.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="abKqPLJE" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ncFRjJ7kCQ3hb+Ka1EUS15lYvaNZs7IscwQ07gzXBFpThLSSDYjc1nAqbaE9w9IX8YUc4MAWj+4Nu2WPapwHoAi2hiHuqaPPKt8uk7tw/fq1XPzhmqiEuVoTC2WCbvGOnkoBRHjVE6K6QnHmZsXt0/LL57nh064YTf8TLz8zh4W6zcR0p8HKvg0QwKDeEUdKGCxEbd92LOsYZqMUQq9Lmzs6oKVolG0w/SrQXf2n3fezXKUg16opizzzJPuqq9GW9l3PZUPGQN6HrE7/nSGEf+LoWS2eFJelHcl0OV5xHT0Hy6oo5TbnSQwfdXPuDpraunL73UVi9otCE/TyXjxX3w== 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=LJVRE/Lg6+H/iFUgGm3W88U8n6pTgNs2h6GprJcfWoQ=; b=E/Kkf1H1dBtiZ19R41alj+LFASvx2h4x1U0dXn1XvHioEnzfIkhbVi5cxLK9F4BI6K/0+YwPpGkpVjnfmlffxQ1l+Lc3UcVbWqEK+qCm2sasdNs2CiJB+tElN4ssteQeBH5aoJGZ35S+uRD9eOZyUASPn7p4bqG0QFSwnAtt0HHEzex9x1fKZnRa/pfXD1e+nGGi9yp7wccuu8xhtBI55fSH8sU0U2Jlof4xs+U48/TH+vGLOr3WbhwqvBTCMKNPVcuLpGX/mlfU3JrBELh9BIyjvniTylUvSclDHyho6HnlWGju5VzB5zkArpH4V4uT56B4ak319SrMM9u3FHHs7g== 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=LJVRE/Lg6+H/iFUgGm3W88U8n6pTgNs2h6GprJcfWoQ=; b=abKqPLJEPPM8wCrOdcXZXjSf7er51bnAd6GtCZYEgQU6E3OukY2svhS+mZ6WULfKgl+qOa523XuJOzFt95lriPxvktT0TfCPCs+xLjYucYJgY/JOr4mdRNe6pw49HJWbT35ngx0ArrJLpomSZ+F/j2GIzAhgkSsYjwLL4ANOSmZhEvZuTmhoDZX6/FY1bOPfGQypFkjl9NsdNwwhuT1JmjVlckmkCO88bx7G2FR7jgFx8KdAj7ItDyGt/QX2VjZHqRwRdLvDj7/Xl2a2IxuCdFswg4yYFJZR1zlxEL8r14jav1WinqlTv0er2L7OkFcsVNl73M9a+KYhW7Jmw0U5nw== 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 SA1PR12MB8162.namprd12.prod.outlook.com (2603:10b6:806:33a::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.11; Fri, 23 Jan 2026 12:14:04 +0000 Received: from BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0]) by BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0%6]) with mapi id 15.20.9542.010; Fri, 23 Jan 2026 12:14:04 +0000 From: Eliot Courtney Date: Fri, 23 Jan 2026 21:12:39 +0900 Subject: [PATCH v2 2/4] gpu: nova-core: gsp: clarify comments about invariants and pointer roles Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260123-nova-core-cmdq1-v2-2-e797ec1b714c@nvidia.com> References: <20260123-nova-core-cmdq1-v2-0-e797ec1b714c@nvidia.com> In-Reply-To: <20260123-nova-core-cmdq1-v2-0-e797ec1b714c@nvidia.com> To: Danilo Krummrich , Alexandre Courbot , Alice Ryhl , David Airlie , Simona Vetter , Alistair Popple Cc: nouveau@lists.freedesktop.org, rust-for-linux@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Eliot Courtney X-Mailer: b4 0.14.3 X-ClientProxiedBy: TYCPR01CA0036.jpnprd01.prod.outlook.com (2603:1096:405:1::24) 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_|SA1PR12MB8162:EE_ X-MS-Office365-Filtering-Correlation-Id: 890606ea-1ccd-4944-b6e3-08de5a78e6b6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|10070799003|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?djl3S2xFT1BrOEU4WWt4ajNLRWhHWlJqM0JVbWs5UEI3NUplSzJOdTFyRlFt?= =?utf-8?B?NWtPZjBGTlJGRkhMU1ZHaDBUS0RZVTMrcXJUNGFPQjZ6NUQ0MTRuU0VqcWd3?= =?utf-8?B?cXVoRkxrZzI1dTZGK21ucnM1NGdUcmZuTzRkeVVOSS96K3d0SkRlUzF3RnVk?= =?utf-8?B?MzQ2WUNQR3FRb0REVUFJYlJHRXZtWFVNR1NKVWdnZE5aQS9RS0RnUmdIV1Ni?= =?utf-8?B?K1BxeU1ObnhWeFhTRmxkSVRXRS9YZUNCd2RBNitHK3B0NWNUTnplUUdoY08v?= =?utf-8?B?Z2dDdHY1QXVSd2U4U2w0TWVNdnhtTzZ4U0RjajBUUG9Wc1A2aUpkVHAwTTg5?= =?utf-8?B?VGN1cnJPVEhyL3BhTUJ4SkxpVlg3UHNIelg4c2p6NG5pdXF0SU1wV0dVU0lz?= =?utf-8?B?NmRTaDZhMzRmZ1hqRVhabDJWU0tlQTZSYVJlMm13Zm8zU0txcUhHYUJuZjcy?= =?utf-8?B?SU15TjRhV3lFVjNGeW8yVWo0YlltTWd0ZGllTFVTWVBpRnN1T1Q1VFErKzhE?= =?utf-8?B?eUxFV2xNdTg3S2x3bVV3WjRyTlMyRVo2aVptbWNLNVlrQWJhVHpJeHVaY2hC?= =?utf-8?B?YnFjV2ExY3prcDRwYjZDU1MrdkI4SHFWUWJYSlNzNmRUbHNnSlF0aGx0cU1X?= =?utf-8?B?VG5UTGdCSnhESG8wb2J2ai9UeTI5dWN2bmE3UENnRm93VmVwSXZaN0FjdFFt?= =?utf-8?B?ajRFSkpQVWw0SHB6MWRsK1JVTGpqSUhzZzI0T0ZvM2h6d2N6WFZ5WWRXOW10?= =?utf-8?B?UkFWajR2NVRHeGNaWnpMbmhXK0VIalRDZmxnMkU2QkM4S3pzdStIdVp2L1Zo?= =?utf-8?B?NGoxZHBHSkh4OGxQd2VWTVpTdXhyN2JSeTFmRlA4RmMvNUkrSmRqQi9BNjVU?= =?utf-8?B?Y1F2K2tCZEhzcmwzc01UVnBTaGVEVk5OVmZ3YzRoZWlzeEhhYlpYQkdBZ1FD?= =?utf-8?B?WFZ1U0Q2TXFiSHRoQXFwdEV1c0xPUWZNalgyRXBjWTBtcUFMZ2xtS0FqWUlh?= =?utf-8?B?VGtNaUdrWXgyd2h3RVQ4MEFjdFlsemtjbGcvN0ZwVUc3UkFwNTVROXBuMTBm?= =?utf-8?B?dHVHaVR0UHlzRnJ6TDFpR3RvdHpCOTJTSzd2TUIvV3lFYUN6ZEx5akVPZnln?= =?utf-8?B?cXlTUnV1cWxYcEJCTjZkVlF2Q1cxYVZKakRRMlRhc2dMZTRFQ2g5Q3NvbDds?= =?utf-8?B?WEtDLzZ6SDJ2NjhqU1Bpb1RtRlFlN0lLcitvQ0dIOW0ycVVkL1VGTDVsUlk2?= =?utf-8?B?YndHK3Vmbkgvd3RVQzlzOHB6NzViNk9ZZEgxUFlINkJMWkJUeDJBaEhJVk9z?= =?utf-8?B?UWZTeC9EQjM5VGd6L3ExUUhkUTNxUUw1R0FrTkpwTERYL0JRb2dTK1ZDd1BC?= =?utf-8?B?R05ZcTcrbXh2MHBJRmRmMzNvNVZZdUVYZnIycSt1dWVxVzZyWEhqdzNoU0xD?= =?utf-8?B?dktRY1NHSEhMdG5vRGNiNUdLTFJYVy9INW44KzZOVnZMMVlOK2NPMy8xaTBZ?= =?utf-8?B?dHVvVEV3Z0hrV1RnajlPRk5rbXhLQkNsS3RsdUVqNTlhK1pJL1BxdUNiWlNZ?= =?utf-8?B?VHpqWDYvbVBFeDN6RWVZbkZQOVk1aTJYY0JjTVY4Vk9obmRic2tRVWVGU0E1?= =?utf-8?B?YnVwa1ZqZ252UVA3UEVBYWRBQnk1SzF4K3Ztd1VoVlpCOWpwR3Y5aGNqdGVD?= =?utf-8?B?L29WZmVqLzZkR2pYNHRLdUkxNkV4eXRmMExBaVVBSEhJbVVjU0lSRWpyV2xl?= =?utf-8?B?am1sbFU3RlhVRG9tdWRjbE9WR3NQWUQrMUVSOUUxa2RkYThCM2VsQitpUWVy?= =?utf-8?B?WmpCS2d1R3RwUjBlWURCaUFGRktBNDc0Nk4wR2Eyb1FqNmtHWHF4S2dvSjRL?= =?utf-8?B?WVkrL3lCSWJ3TFFqQkdtRlE1UWNMVDNRMDhlTkp2K3Z2VFFiR0txM0wxYTVN?= =?utf-8?B?TndPVVI5OExYS0swQWN0N3NKaSs3QjZ0b1AzWkF3NG5aS0xYbmU1OFRtQ0FX?= =?utf-8?B?SUhLSWRLYkFObENuQ3RDbmZkR3c4aFF4Qjh3UElSZFJGd0xnd25MRlNUQmlh?= =?utf-8?B?MUdpdWpqOTArUGJ2QjdUU2NhWUNnVUlZVFgwb2VDVXg2YWl4YTVoTGp4N0Rv?= =?utf-8?Q?b3h8=3D?= 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)(366016)(10070799003)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RzBsaFllNmVjcFJXMFRPZityTjhZaktjbEhrbnYxUGFwa042Wkcxd2xPd1hL?= =?utf-8?B?RGZQcXhwWUh5NVdORUlqemtzQU1sWnl5M1FxRzMrc3Q5VWVTYmRWRWpGVjEr?= =?utf-8?B?SDZkZmtRa09CUTZRZDFRU3Y2QVc4aFk4U3hDMExGM3dyYlVtNnJMY3ByMHly?= =?utf-8?B?emdUN3RINjB5LzdNbWZKZWVIVUpqekZYQy8wemxyY3BhVEFTS2lraGpuN2s2?= =?utf-8?B?cURSNWJReG1pajNmcTROdFc4K3pKZnp6YllUcUllZFVXemRLS2dzaEMvTWFZ?= =?utf-8?B?cFlBU3l2aUI3bytodkxBaktqeXlqMkpvbEdSbzZBZk5IZzZaalc4TDNIbWwv?= =?utf-8?B?ZlVsR1l2V0hTcHZpMk9VL0Zvc0J2eEMwT0owUzJZNm4xS2xPOGREZ1kxd05h?= =?utf-8?B?dmZKcmZBQVBRN0Qyakx0Z1JmUExqczJraVoxUTkyRTB5T1hYTmJXQzYyZUdW?= =?utf-8?B?VEswRk81alo5aEhTWnBMUzI4QW5TK2lBUkJ2WGJNSUdtOUJhZHZ2cmxpZXpO?= =?utf-8?B?cmdURjZPTi9sNTYvbWpkQkxqcmxSa3RxdG1DRElnYkkzKzREd1lrWVJ4Z2ZW?= =?utf-8?B?cWNVeUloOTV6b1NFdHJvbGhtTVI4Y1k1akZ3dnV0NUR4K0RDcXJ2UFpoOTFC?= =?utf-8?B?YjdYVEtvVGFXeDErS0RQcXBwbUxtNkpLNlRrbmhheTMya3RPYlVncEZDQ1ho?= =?utf-8?B?bVdYelNRdGgvcWZHaXhDWEtkU0VuNmV4Ynkxc3k4Yjc0VnVwTm9BSkorODJC?= =?utf-8?B?OXVIS3Z3cXRpcHhIL3U3Z051S0N2MDRIN1p5OE1nK1hxMmhibXE1UWFjZ0k1?= =?utf-8?B?Zm9hd0YzTURBTldna0xPTzBsWXJwbFVta1ZUdUdYTGZ3cG9jZTFLQjBuQllM?= =?utf-8?B?UnRWYjlkR1hLQWkyTTVTNmx3cjlncU1NRHJRc0g2akRZOXFOSjhpazdGdUFw?= =?utf-8?B?dFNndjNKU2l3OTRIZGY1dkRqcEZsT1VmcGs3V203NkV6WEs1UVdzUDRNdGtt?= =?utf-8?B?bFZHZGIwWEdUakZnUFJjNHE3dXhCMWxiNzl6TW1ZZkVDek1XM2dQL3ZPSm53?= =?utf-8?B?VEZnZy93WnZTVllMQXc0WnRlM2hNeHdyejdlTDhKUExuUUZGOUpWNnZPY3hY?= =?utf-8?B?bk1yeHcrSGNONHJSb3I0L2gzZHFTRkIvcEtUUi9UT3h0T3lDbUJUQWNUUDdt?= =?utf-8?B?M0x4SkFBYXdaTUtycVNjbmNSMWxaU0RFdzQ0a254cW43ZWVRVmhjTlowNys0?= =?utf-8?B?elRpRFVINDRYRUVQMWk1ZGt4dzhLdWhwb2k4NE9SVXdSdGJwTmppV2FvZTM4?= =?utf-8?B?d0EyMHNLT3cyTDZCUVp2dUhXdHJlK2laYU1zL3dhTzJpS0hyR0ViUDJDZUkw?= =?utf-8?B?SXhQUFIxbDZpTzRBVVZOVkRiSFpmUWRIbzRCbDl3M0l1UEJRTG5RWmhxeFgx?= =?utf-8?B?QUZUejgvMlRuQVhEd2ZUaCtab0VvVTlIL1R0WHdQWDBna3F4QkQ4Z1BzeFN3?= =?utf-8?B?bkZkc0R1WjR4VnI1S2FndEhDQnlTRytsWlREMENodUZCOFpveC9UZzZwVnFz?= =?utf-8?B?YmpZSHcwdE1uTzY0Z3hxSUtGUE9jQ0FOWngrakdCalRGVTdPVFdZenpXRVN6?= =?utf-8?B?RUhNYVRxS2hvbGpZOGVIWmpGdjBlWmlGNkhzZGdOYUlySGQ1clpITHJvWklq?= =?utf-8?B?RUlhcDZ5dzJ0S2dtUlRLTGhZOW56TWdDR2pSOWZ5dHFNOERCZ1NqVVk5cEtP?= =?utf-8?B?di92UGZ5anpGSTE4NExUSTh3ZVNRMGlpNXpaWXBkcHB3a0JCRzBYZXExbVUw?= =?utf-8?B?dXp5OHM3QnRhMEM3cmRKb1ZyNjhPK2pVaHduMzliMTQwQTlWQUs4WjF0K3g5?= =?utf-8?B?bURER3FzWjZVWjZRL2tVZVg0cHdMRTg0UDVFTTIzc002dzF0YkJHQVBxaFVx?= =?utf-8?B?dlJDbEdVdjFqeUxxaFBiMUl1THZUWllnZ2FvbVJiMW1HZksvUVhtZGVudEdN?= =?utf-8?B?eFBYdnBjQ090VHhSNTZDbUUyVlBWc2NSUmZlVWVQallmYnNuL3pQUGJWbFFn?= =?utf-8?B?VmtCOHVtM1VZSldGMGUwYmtGOWJIL2RRRWdyTUYvR2tYQUV2VVVrKzA2Z3Bi?= =?utf-8?B?RG1EQUN6d3c5bGhiMUoyM2UwMzMrS2hZRXRHeUFTSzdZYURqNWx6ZVZhWEQw?= =?utf-8?B?WXcwR3BlKzdCZDlBK3ZkUFdZT0RtRUFVNkhUMWdSby9qNllrRVZNZXlRSXEy?= =?utf-8?B?eHMrV01RSU1LWWVqRnhqOG1DMG1rMGJRcm9wdnhGMEFRSG5YZ1NjWDFsTmY5?= =?utf-8?B?aW9TWVhiZDFsbTFZMjZBbnVzQUppQTJwNkVCdDFSRTdLMlpNdVNmM3pBWE0z?= =?utf-8?Q?ndPhv8UWk3Vr9goeD81AaRrWUwvEffFSiM8YY4ZcuXmhK?= X-MS-Exchange-AntiSpam-MessageData-1: 2NgO0v4Nhws5jg== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 890606ea-1ccd-4944-b6e3-08de5a78e6b6 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2026 12:14:04.7248 (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: JWuUM8riKMUno1aq6mhQkBoVk4MTDM5bwMvFCU8gBSJtM+Gxs5QjqgpaZiUiaGJN5sBEImOp2Z5iOwOrtAbV3Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB8162 Disambiguate a few things in comments in cmdq.rs. Signed-off-by: Eliot Courtney --- drivers/gpu/nova-core/gsp/cmdq.rs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/nova-core/gsp/cmdq.rs b/drivers/gpu/nova-core/gsp/= cmdq.rs index f139aad7af3f..09c28eeb6f12 100644 --- a/drivers/gpu/nova-core/gsp/cmdq.rs +++ b/drivers/gpu/nova-core/gsp/cmdq.rs @@ -161,12 +161,14 @@ struct GspMem { /// Self-mapping page table entries. ptes: PteArray<{ GSP_PAGE_SIZE / size_of::() }>, /// CPU queue: the driver writes commands here, and the GSP reads them= . It also contains the - /// write and read pointers that the CPU updates. + /// write and read pointers that the CPU updates. This means that the = read pointer here is an + /// index into the GSP queue. /// /// This member is read-only for the GSP. cpuq: Msgq, /// GSP queue: the GSP writes messages here, and the driver reads them= . It also contains the - /// write and read pointers that the GSP updates. + /// write and read pointers that the GSP updates. This means that the = read pointer here is an + /// index into the CPU queue. /// /// This member is read-only for the driver. gspq: Msgq, @@ -222,7 +224,7 @@ fn new(dev: &device::Device) -> Result { // - We will only access the driver-owned part of the shared memor= y. // - Per the safety statement of the function, no concurrent acces= s will be performed. let gsp_mem =3D &mut unsafe { self.0.as_slice_mut(0, 1) }.unwrap()= [0]; - // PANIC: per the invariant of `cpu_write_ptr`, `tx` is `<=3D MSGQ= _NUM_PAGES`. + // PANIC: per the invariant of `cpu_write_ptr`, `tx` is `< MSGQ_NU= M_PAGES`. let (before_tx, after_tx) =3D gsp_mem.cpuq.msgq.data.split_at_mut(= tx); =20 if rx <=3D tx { @@ -257,7 +259,7 @@ fn new(dev: &device::Device) -> Result { // - We will only access the driver-owned part of the shared memor= y. // - Per the safety statement of the function, no concurrent acces= s will be performed. let gsp_mem =3D &unsafe { self.0.as_slice(0, 1) }.unwrap()[0]; - // PANIC: per the invariant of `cpu_read_ptr`, `xx` is `<=3D MSGQ_= NUM_PAGES`. + // PANIC: per the invariant of `cpu_read_ptr`, `rx` is `< MSGQ_NUM= _PAGES`. let (before_rx, after_rx) =3D gsp_mem.gspq.msgq.data.split_at(rx); =20 match tx.cmp(&rx) { @@ -315,7 +317,7 @@ fn allocate_command(&mut self, size: usize) -> Result> { // // # Invariants // - // - The returned value is between `0` and `MSGQ_NUM_PAGES`. + // - The returned value is between `0` and `MSGQ_NUM_PAGES - 1`, inclu= sive. fn gsp_write_ptr(&self) -> u32 { let gsp_mem =3D self.0.start_ptr(); =20 @@ -329,7 +331,7 @@ fn gsp_write_ptr(&self) -> u32 { // // # Invariants // - // - The returned value is between `0` and `MSGQ_NUM_PAGES`. + // - The returned value is between `0` and `MSGQ_NUM_PAGES - 1`, inclu= sive. fn gsp_read_ptr(&self) -> u32 { let gsp_mem =3D self.0.start_ptr(); =20 @@ -343,7 +345,7 @@ fn gsp_read_ptr(&self) -> u32 { // // # Invariants // - // - The returned value is between `0` and `MSGQ_NUM_PAGES`. + // - The returned value is between `0` and `MSGQ_NUM_PAGES - 1`, inclu= sive. fn cpu_read_ptr(&self) -> u32 { let gsp_mem =3D self.0.start_ptr(); =20 @@ -372,7 +374,7 @@ fn advance_cpu_read_ptr(&mut self, elem_count: u32) { // // # Invariants // - // - The returned value is between `0` and `MSGQ_NUM_PAGES`. + // - The returned value is between `0` and `MSGQ_NUM_PAGES - 1`, inclu= sive. fn cpu_write_ptr(&self) -> u32 { let gsp_mem =3D self.0.start_ptr(); =20 --=20 2.52.0 From nobody Sat Feb 7 10:08:29 2026 Received: from PH7PR06CU001.outbound.protection.outlook.com (mail-westus3azon11010057.outbound.protection.outlook.com [52.101.201.57]) (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 B58E3310777; Fri, 23 Jan 2026 12:14:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.201.57 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769170452; cv=fail; b=k0eP2sJbEHPqFNW652mGqzq7CWW6lIemK//nYgfkIKNQCAvhSkP7CurLYET3j/Rmnqug4WdgYviEmKwatafm/7C4DyMuymslgIcstbYwks8q1P1EoGdeH7uCu76YG5l/xIFdW3NzOgS9CZ50L8XnQ5u6LIBhKlhO1hhnb+O6IiQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769170452; c=relaxed/simple; bh=tOe4vhhfVmPOinm2Epn+TSNS1+pLD47ETqyVd8B9o2c=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=KTzHWGrqTQ2xN4Z823NsCIABrHeyLHtMQ7SiOP8EPit9Naq5hQhZ1hZVxkwxNjIQJm5mwKVjyf9u5foag4pOitDb84HWtivhPFHq33VT0OhP9ueZiyFAQ3lMMx46OLKKeaxIHgp0QeaDYPc+K77kIJU6B8skQTQ5cRUsgLKw2/I= 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=e7j7uxeS; arc=fail smtp.client-ip=52.101.201.57 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="e7j7uxeS" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IjZCujp4FjOgFuASgJNGt9XGyNJW1nFm3DkwxZ0doZzx8t7XzudcZ+8O6Oih87nqT8AJoe7NdyDD3gnCymOTSLS1P5eeAjCKluhOT83RR29nzAfy1AWqOm6uK94W+VAd9+k/7HCngU9bw7pdQry/a4K4Wez2L4xOCq7kkkSwKhFRY0LEG2HN86ODlulHWgygENWj0Up1Nd94eGlHtPoDujBJSyGvitEIVX07bJOVITRYZKYs5SXZXrrgCRS5TYChzzBSAUFNGw2f5kboVh+JxYabOGkTj6BG15SMKCJSHv8rjg/IvgdvsLDywpkyrTcVcmUL4ubhiigu3zltb8b8uw== 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=4L77ny90WG7EFZHV07yroRY72SchU52VJwu83dEN25E=; b=UgwY/JbkwvrdOyj65cbiIm0Je3VAhUvNaAYj1sN2cYjenzR20eYNLqHtOnuAyDJGhHNpNpyq7xvMzDBuWS719vTvKH6N3p+4CVKdZnVATv7g0hHHfUsPq1U32AkutObIR51oRP40MZ3M6luEcOuVkY+Izfr2sw3ug92glojAKNeStgN2RZq1kKg4plrQE6D9jtU2v9E4fs0IoBDRDsUlpbtJnM228F/IM5pSl1fsGQTqROWT3SM27thSKvgbE/x30OjYJFUEmvr9SJ/fFqqe18XamzPqEidpqURxuoFIz1fQs1svsfQcPF65KPt4c69ccOnulWrNwH/Uw9aRzLNX3Q== 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=4L77ny90WG7EFZHV07yroRY72SchU52VJwu83dEN25E=; b=e7j7uxeSGzNbubUk1SHQyNvUKhiBk74GFv7hw4QpHJnmihcK1TgL/xUVWrKTMJBfLhOLhPDa2Zv+30+uE9Sit3aw4IWe23n0MG8gTdfzv14O5zZiuiX8BKmGJw94Qn+BYM193WkiidUoOR22v4m9rbrR7tLQQ5vu0IIAZJgNH57rVqWbEje96No7tLDObp8zwcSuyJzvjd+lEnG8EOznTxZ1vs7rKyLrHdcujTMltAF52fjTGXKFuqAql91AXBiYLETepXxV6gNHns3B0Y6d95MFAekvVpi8tzuVNpghM9YB3W9j4bJEYlPsk8fY43iyK0xqh3PpTgEQeTJ2NYe4VA== 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 SA1PR12MB8162.namprd12.prod.outlook.com (2603:10b6:806:33a::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.11; Fri, 23 Jan 2026 12:14:07 +0000 Received: from BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0]) by BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0%6]) with mapi id 15.20.9542.010; Fri, 23 Jan 2026 12:14:07 +0000 From: Eliot Courtney Date: Fri, 23 Jan 2026 21:12:40 +0900 Subject: [PATCH v2 3/4] gpu: nova-core: gsp: fix improper handling of empty slot in cmdq Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260123-nova-core-cmdq1-v2-3-e797ec1b714c@nvidia.com> References: <20260123-nova-core-cmdq1-v2-0-e797ec1b714c@nvidia.com> In-Reply-To: <20260123-nova-core-cmdq1-v2-0-e797ec1b714c@nvidia.com> To: Danilo Krummrich , Alexandre Courbot , Alice Ryhl , David Airlie , Simona Vetter , Alistair Popple Cc: nouveau@lists.freedesktop.org, rust-for-linux@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Eliot Courtney X-Mailer: b4 0.14.3 X-ClientProxiedBy: BY3PR05CA0050.namprd05.prod.outlook.com (2603:10b6:a03:39b::25) 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_|SA1PR12MB8162:EE_ X-MS-Office365-Filtering-Correlation-Id: cffff224-5d4a-478e-f3a3-08de5a78e86b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|10070799003|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?MEVmTHFlalNqdFhBYXRJbElQek9Qbm11V2hoWE9PclBQRUc2eXN4anE2dDBU?= =?utf-8?B?TmVYYTlVRVViWmJMZVVONlFpeXJqSENVZkdmb3VVaXJ4TG5lb3NtRkVkb2dm?= =?utf-8?B?L0cvY1NUMm9RVWcrbjkwVVl3NUlwNlVrMmhCZklhRWR0bnc5bXhTTEY1MUZs?= =?utf-8?B?dWRPZWdqcFl0WUhLcnRtb3d0RmNHNEpObVl1NjM5V3ZtTGxpMStVZ09iSzZx?= =?utf-8?B?ZGNxaGFYbVZnL0cvYjVXNDZrQ3p3cXR6UGxHMW1KOGFrYkZKRzhlQ3YvQjA2?= =?utf-8?B?eWRTdHR0eUhnU2tiRE5VSW5ncFlwQkdPZmw1ckM4VklvWVNZbEo2b3NFS0x2?= =?utf-8?B?aEpzM3hkSGhiUitEK2NzdWpXUFBqeExEMG1pMGRDMWhyTS9DU1NBWHFlaHpZ?= =?utf-8?B?VlJrRmgzeVBkM1RaYXJYRkxLSkQ3OUxRcE9qM1Y3ZXZjWlc0NjBpdFZ6MC9v?= =?utf-8?B?dk44bTQ5M3U1NHFSdUNjdVlCWVlOcm53SkNYdkN3NGJLcjRIWnA3VnlFY0xi?= =?utf-8?B?UmFOankvdkVSTnpSZkpiYmk0VWxDSERKSWVCL0FpdERpTEtrT3pwdmhpK3NX?= =?utf-8?B?NEhlQ01yYXdqem5yR3NHa2sycjMzQ0hzU3ptL01QeUhJUkNjSVB2S3g1M1Yy?= =?utf-8?B?RDlLK1JwMEkxVmpKY0JiMGFkYllQZGZWeXZWWnE1cGFCYUgzRWRpTVJVOHVM?= =?utf-8?B?ODdqakt3eHBvVGNldFlTdjdFREs5U3VpeVUzZW1vNE5NT2JER1RXQ3lZZTdV?= =?utf-8?B?Wjh1cTZMR20yWUVRbzNGN2tPOW03V2ZNaUxmcEFsSmE1MDc3WHJxMnY0SmtL?= =?utf-8?B?aDlrT0RUVWhmb0dnVDZwVkZnSFFHYmc3RWM2eU9QSWdZWGtzalJyZFh1WWs2?= =?utf-8?B?aDBxdkYzREh0Y3NNT2R1dGQ2ZFQxcXo3VS9jSFVWRk4xbHVCcVlpUzF2Y0Vt?= =?utf-8?B?bmp2ZkwyUTJoRjZwS01UMkhTQ0hBNnRnMFc3eG5GTjliWUJuUU04bE03dU9v?= =?utf-8?B?VlZYR3pwMkZ1UGM2b25kUXBoTmJFZzgwaTV6S3lxSldKM29vWjdldHBqeHo2?= =?utf-8?B?Ritya2c2SzNKUzdDdDkvNlhMVjlqZzBNd05BYURreEl5S1ZxWEhJTVZCYk1n?= =?utf-8?B?TW1tMDFTUUsveERTaEJNUnE3SGRDZHpqRHJBdnEzcWRtTGNuUW44N2g1Ylk0?= =?utf-8?B?OGRZM0cvcGJHL1d4YjBXU2pQWFE5dHN5M0NuY0U1bkZ1ZFVHOEdLNHV3TFZu?= =?utf-8?B?UnVidWVTak5ZcDBGb0djOFp5akFLc3JTWFBYMSt1SFNHQVpZUm5BK2FjcE9W?= =?utf-8?B?ajA0WHJhTCtjMTBaRkVIUFViTUp1cWczcjFPeWdpd3M0OCtCeHFuWkQ2WVh5?= =?utf-8?B?Y2F0ZGEvcyt4SFF1aDRFUFFwN3pEaUhSR2tneFdxMWEwQWRVVHFEOWRTbTNY?= =?utf-8?B?VG8zWG91U2FEUDlJWU01aUdVckczYjNLM2Zld3F1L0lRaXhSWThaUi91Y3BN?= =?utf-8?B?WVloeUdhZmVNQ0JRZTdkMVplTEZCL3VqQTIzZWxUbTM2YzIrNmZnYkJJV0g5?= =?utf-8?B?U1o3UHI3YTlSbFYxME84RGt6Yng4aVlNdXcyd1UwdGdNWnJZd0RRd2d6WmU0?= =?utf-8?B?Yll6SHBhN3Z3dlRHcGNxRW01RXM4U05Qejg3cDVjYmpJV3ZRbHRWS1R5YzRG?= =?utf-8?B?NUtISVZRVXU3VHNtWmZKZVRaRjFodXJBR1NVdEZCMzBvUDh0UmVOeEszQlp2?= =?utf-8?B?MUp6d0FpVG9MNjhtYmlSL1hLRzQxTytQWElrTmttTFErVWx5MFBNcDFETEZm?= =?utf-8?B?OGxRV25MdU0xTWhUUkpGWXFBa01QMXZaSXVZb016Y0pkS3FXNjhTMlRJQzY2?= =?utf-8?B?SHRyVldPbGp6NXJSbjJPZnZJU3hHeDZtQkRKeXdteEhrTkoxNlk0eEREckVV?= =?utf-8?B?UWIyRWpZRnovRERDTjU3Yy85SDVUajdpYWhTNW9ENmx0UmdkTWhnajdFcWNV?= =?utf-8?B?bldnQTNXbkZIZW1WRkpFcDNadHRtbFJ3dVF5ZkNGSkJDRG9hTCtFNWt5ZDd5?= =?utf-8?B?TXpNYUpaWHk5eWVVWVo1NUVFTXowUG1FVm9odVBaaTVhT1BuSGtNbjhTTjNI?= =?utf-8?Q?aMWw=3D?= 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)(366016)(10070799003)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TjBPbElBWUhNTTFMUHB1SEtaakJhYktiTzVWcjNPdFJ3NitPc1NXcTBhb2JH?= =?utf-8?B?RUhVTUt0WFVCVW5PdSt6VVNjcU95TS9KM3hmZzJvOVF6c1ZLdStNeEJpNks3?= =?utf-8?B?QlNiNDRGS21rUEh3YkxLTjNWcEQ5djM2ZVFKejdSQ0w4K1VuRU9PRTkxd0JQ?= =?utf-8?B?SXpySDJUR1R4cnRNS1liS0Nva2JZZ0h3c3hCeGs0S0FqY1pSZkhVTG1tNWta?= =?utf-8?B?aDNBUnlxNVkxbURLOXByM08zS1dPeW11ZmZOajV3K3k4eWFHeDZtN0pPVUpo?= =?utf-8?B?by9WNTdCcW1aallrZC9tRkNBQ0l6bUl2MXNCYTVyaDhMN0ZlRCszZnRaTWxV?= =?utf-8?B?ckNOKzZzTjlYR29KQ2ZNb0N0dDEzSTkxNGpUc2ZuQS9hL2VhQ1UzR0RDMjQy?= =?utf-8?B?czJ4MFBOT3laRkxGaklzZDdtSE1VUTh3aWExVE9zaVErQ20zQUJXVVcrZkUy?= =?utf-8?B?Y0xiWmR0b2pyTDZmOXZJNWZQYUZlWGU4MUVBMlNQUFFVUDhiM25aK0pwWTlt?= =?utf-8?B?QnpMM1VrMzRCWCsrRWxVbWNFNjJJSEFlSXo1ZEt4d3hMVHZIWGxZMmluRVUw?= =?utf-8?B?YUtMTjcyL29RS2VEQnN5aUpHa3FxcE4xa2s2VUtvYjR3ZVgzNU1HVTFITU9J?= =?utf-8?B?OVo4aVExb3lISVM0U1JVNlQ3dzdmaVAwMXVSdFpwdXpmT1RmbGVyczgyVUFk?= =?utf-8?B?ZFNPRTBLdXdBbnlRL0VzWHZVWWZWVms5NUZDbC9kWG5UTVA1VUhFOXpLOXJ4?= =?utf-8?B?Q3hrR1U3RWJ1WUJ6NitxcFltZlp6VXNEQ0I2bncvTzNOdXZyTGlzL0F4cXRM?= =?utf-8?B?RXl2Z0tyM2hWN3RLUU5SRjNNRjBlU2JhT1dLL3Y5R2YxWHBDQmpEOXU1UzVM?= =?utf-8?B?a1lKNHNOWnJlQlRrMzRINE1laW5aV21MbzN0UmxjUGp5RTJzVW1MWmFxaStS?= =?utf-8?B?Z0I3Yys4V241OU4rUWlpZFB2bmEvdEJXUldOOW9sVHJqS0F6YXRtNzg0cEl3?= =?utf-8?B?bnFjNE5vZTI1WEcwL0xOQXMyTU9CZzlqbFBTcGI5WVV2dnFMTWRabHQ5WDla?= =?utf-8?B?VGVIeUJDU05jTldXSUVZbnpNc3crdVF1R3ZCQm9EZHlvSzczK0o4MzZWemx6?= =?utf-8?B?V2xlRC9lRjZwanJZVTVzSDM3MGxGaFlvRmVndFl3R3U4OUozYzE0aTRtbjJU?= =?utf-8?B?ZU1LUkUya1c5Uk41bUdWOFRwanByeXNVUDdXY2dHRk1CcE15R3IxNFNMeTZS?= =?utf-8?B?Qm1EVTFuZjBzTjNrT1cyTE9oUlVudVEwNkd2NHlSR0ZjUU1vSGFDaGdNLzBn?= =?utf-8?B?K29uL3o2ZnAyMFhIZ2ZpaTRRZmlET2tuRmgvUERFcHBJSU1WVzJoaTR5ZHdi?= =?utf-8?B?UVBPd28vSElyeWdjc3pMZS80eFNGSHpoNjJoNUNsNi9VR0N0OUpEdks0cFlp?= =?utf-8?B?cXh4emlHWkdwWlBqN1JjalA0c1VKTGpUYmwwZFpWRFF0bER1WGsvQmVMV3dO?= =?utf-8?B?TmVZL250TzNyc01WS01ONFpneVVtU1h6cnhPL21paVRISk5NUFhSR0xKUVVm?= =?utf-8?B?QnlUNzBBdEpmcmxySXNuQTJoNi9iQm51THg5UkRpM2pTTE15bGxoZzk3RTd0?= =?utf-8?B?VGlsZFVnK2tITU1ObVJERGUwU05SakhIRS9XWTRSeU1CaUt6V0QrVE1HbzVP?= =?utf-8?B?b2xNM0xVVWRTZ1VkYk1RTXNPWFdKTGJQOHdNMUVleTFmRlZpWkYvbkRHSW54?= =?utf-8?B?blNzU2Q5Mm5PREFGQTJBR3ZYb0xDZEZtbTU2TWNRVWk1R3ZHNHlWcG1GUjdr?= =?utf-8?B?WlIyTWp6cE42cEZRRUxBZEZ5SkI5TEdJQ2pFYkhxMStndzg0bitEeVZaUlpO?= =?utf-8?B?QjlVR2VzZmF5ODNHMDMxZExuak1mS3FzUTVnV1E0dTcwTFVwNW9Wc1RMNTlN?= =?utf-8?B?QkJIMStWZ3p1WkNEK1BoM2JSTGlKd21FNW9MN1pOenNTQmxQNTBLN2FYMldj?= =?utf-8?B?bnZ6RVozTTI1b3AwcEtDUkVLNHFXREtJa3BSOFh4U3VXNzY1aDVFbHNHcW0r?= =?utf-8?B?NlJEbGcvdUpSd1NWOWtybHB2KzBCZHdHK2s5ZU5HQXRNeHZBK1dKK1NXUkVX?= =?utf-8?B?azlsM1dtUmRUa0ExR3RpdjM4blhFQ2tBd1lKaUZKVTBkZEZ2ZURNeGVQaSto?= =?utf-8?B?UFQ1T3hPN1oxSHMwK3BJNEJIV05VK2xpS3hiM2FPSkloVU5DYTdBaTFvdVg5?= =?utf-8?B?eG5BcnQ0dlpuclUreTNyTmlpRTZmb2JNS1hEdFF4SmpCU2dMVkF5V3F4akJq?= =?utf-8?B?amNERE1DSHVYeFppMzg0ZXdOdlRJbktTZittYzZ5M1d6TDFzM1hSWFFKTWxl?= =?utf-8?Q?8rvlCcL2i+zsLIuZqI/Fzcv7QuGXp7BGHIa0KMgFW7TeJ?= X-MS-Exchange-AntiSpam-MessageData-1: 4SZNgmQZTi6zPw== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: cffff224-5d4a-478e-f3a3-08de5a78e86b X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2026 12:14:07.6923 (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: tksXpiGkVU30DBge6Gni4B3j4XF+xnn5OAPPh9jjWDIQoXI7w7Dw6UvSLpK2Byu06sbNoSmDnfCkIP/y3VGvQw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB8162 The current code hands out buffers that go all the way up to and including `rx - 1`, but we need to maintain an empty slot to prevent the ring buffer from wrapping around into having 'tx =3D=3D rx', which means empty. Also add more rigorous no-panic proofs. Fixes: 75f6b1de8133 ("gpu: nova-core: gsp: Add GSP command queue bindings a= nd handling") Signed-off-by: Eliot Courtney --- drivers/gpu/nova-core/gsp/cmdq.rs | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/nova-core/gsp/cmdq.rs b/drivers/gpu/nova-core/gsp/= cmdq.rs index 09c28eeb6f12..aa8758fc7723 100644 --- a/drivers/gpu/nova-core/gsp/cmdq.rs +++ b/drivers/gpu/nova-core/gsp/cmdq.rs @@ -227,21 +227,26 @@ fn new(dev: &device::Device) -> Result= { // PANIC: per the invariant of `cpu_write_ptr`, `tx` is `< MSGQ_NU= M_PAGES`. let (before_tx, after_tx) =3D gsp_mem.cpuq.msgq.data.split_at_mut(= tx); =20 - if rx <=3D tx { - // The area from `tx` up to the end of the ring, and from the = beginning of the ring up - // to `rx`, minus one unit, belongs to the driver. - if rx =3D=3D 0 { - let last =3D after_tx.len() - 1; - (&mut after_tx[..last], &mut before_tx[0..0]) - } else { - (after_tx, &mut before_tx[..rx]) - } + // The area starting at `tx` and ending at `rx - 2` modulo MSGQ_NU= M_PAGES, inclusive, + // belongs to the driver for writing. + if rx =3D=3D 0 { + // Since `rx` is zero, leave an empty slot at end of the buffe= r. + let last =3D after_tx.len() - 1; + (&mut after_tx[..last], &mut before_tx[0..0]) + } else if rx > tx { + // The area is contiguous and we leave an empty slot before `r= x`. + // PANIC: + // - The index `rx - tx - 1` is non-negative because `rx > tx`= in this branch. + // - The index does not exceed `after_tx.len()` (which is `MSG= Q_NUM_PAGES - tx`) + // because `rx < MSGQ_NUM_PAGES` by the `gsp_read_ptr` invar= iant. + (&mut after_tx[..(rx - tx - 1)], &mut before_tx[0..0]) } else { - // The area from `tx` to `rx`, minus one unit, belongs to the = driver. - // - // PANIC: per the invariants of `cpu_write_ptr` and `gsp_read_= ptr`, `rx` and `tx` are - // `<=3D MSGQ_NUM_PAGES`, and the test above ensured that `rx = > tx`. - (after_tx.split_at_mut(rx - tx).0, &mut before_tx[0..0]) + // The area is discontiguous and we leave an empty slot before= `rx`. + // PANIC: + // - The index `rx - 1` is non-negative because `rx !=3D 0` in= this branch. + // - The index does not exceed `before_tx.len()` (which equals= `tx`) because + // `rx <=3D tx` in this branch. + (after_tx, &mut before_tx[..(rx - 1)]) } } =20 --=20 2.52.0 From nobody Sat Feb 7 10:08:29 2026 Received: from CH1PR05CU001.outbound.protection.outlook.com (mail-northcentralusazon11010041.outbound.protection.outlook.com [52.101.193.41]) (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 13A57125D0; Fri, 23 Jan 2026 12:14:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.193.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769170456; cv=fail; b=hEnD1taPF/ej8FX7vf9IITRtzSxsxqTInfFaJOZGmKDT+uEFjLanaBSyWUYVAJuPKKU9LE+tb/GjPaaYiJyMxNaOd8/tZ6NLvFokgWrAhEEMq0W3wTd5QZ+hucXi5+8pidOnaliE281vAvLS8ViYYL385llHT/keiW1Jjth0LBQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769170456; c=relaxed/simple; bh=UNcjBHDgQfkXL+8+esZ633o+I/16/Xkwuczt8BClcDo=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=C7X0oupAKzKvww6XdaLTuGifeBpJhf1NBdwZ4STHPRl6QMFUvL6jwzCVz6sIbGCAqmtCXPhw4fHYCFIGcfDSYpZDIuCkv8n3gvi1iNbfDLR99hUSdW78GX3EBdf6WES8I7roXWtuq9JYho4De0XHDp0/rPNseUm9tuBO3ju7OL0= 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=JIaKs9CD; arc=fail smtp.client-ip=52.101.193.41 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="JIaKs9CD" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qb+svM5GeAuapWm1T1qd7N6ixPj8P6sgHDHhoLMuQUq+jis8A5Z93s2iqZNp2ZMHptQOi2nJv13j+fowCEx9z4nv0NyL17j8O7fJi+dd/MS0toFWZXr13O9q9nl2npWZWx/K9u7hkhE87NB+9gyKxvLDzsMZWbps3uW42m+T9xMNWK/oT5BSCVlL1KCjq6YyYssgt4EY98V49ZEoeOLZgRbCrG7pKy6iHoboiUmrqU40EiD3cQD/mwXM65ZuuJupTS5bZGRQlg8RQEtjyxAH2QEIjnFHOff7ecxAMXmZhKJEnRcU9uXm1Cd5QJ2bjrncNKczlHMtFtCKY/PKHvqGTQ== 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=V/WIoWfhMGULQRunvxzSETiykHYQtWxFPrdackzDuWg=; b=fCw6c6Cu09syNylToaZQ3PnZGrP3UyMGmagCPFQVqcuH+trF2skRJmVybAatUP3IRRVJdjCW2wIoFCdbI3w87azv46xeDnZtTJIm2JDQXNbEesLVVyBBF5NYUO044D6/ifNwAEIL6l++xURUKeAtpV6VjxKgDRaucVSNZxAlCXPHqqx/B1nPHOeY2SngVIAvJ/zy6DE66wPA6z/8hrpoe8lrCo757WwNUj0ivNV8MocCata/wZkcEwKpApfmi2vC+LbbB1ygI4V3dLRGCmqN/M0IC1bhOg9/IM0/jYK6mYC8zuV1p4KHEELxj1wrKVPWsap4t1h0JeVh1G8oaOe+IA== 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=V/WIoWfhMGULQRunvxzSETiykHYQtWxFPrdackzDuWg=; b=JIaKs9CDDy7W3A1+EQLDms8o57MCfabiHzn1lZCT96blbj6uIiYXApL+PlE07xQeNGFDDAgckaEbGOGYg7V3nXhSOEu4jOdzoBK7F+zjRXIGegCMvX61fu0ty7yJE4FEOFp0QTyf4OyZbiYiReG/EVOP0QcmM52D0MaXJVG2AXYqJIooIMGIKqPmgn8QRzxLUiyV2gD/FLy3Dzjeiaqw2s/zaCK2y+psQCHRjzmlNIdIkP4rNk0VK5mqS8tu85J2xhpOytyrZ3o47BvRKJ/WOKjk7CQSd0SOS0y7Qe7YY6SBlgRAjK8klT6E8vAKlstb0HtgxOiXXofIY4BlyMo+ug== 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 SA1PR12MB8162.namprd12.prod.outlook.com (2603:10b6:806:33a::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.11; Fri, 23 Jan 2026 12:14:12 +0000 Received: from BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0]) by BL0PR12MB2353.namprd12.prod.outlook.com ([fe80::99b:dcff:8d6d:78e0%6]) with mapi id 15.20.9542.010; Fri, 23 Jan 2026 12:14:12 +0000 From: Eliot Courtney Date: Fri, 23 Jan 2026 21:12:41 +0900 Subject: [PATCH v2 4/4] gpu: nova-core: gsp: fix improper indexing in driver_read_area Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260123-nova-core-cmdq1-v2-4-e797ec1b714c@nvidia.com> References: <20260123-nova-core-cmdq1-v2-0-e797ec1b714c@nvidia.com> In-Reply-To: <20260123-nova-core-cmdq1-v2-0-e797ec1b714c@nvidia.com> To: Danilo Krummrich , Alexandre Courbot , Alice Ryhl , David Airlie , Simona Vetter , Alistair Popple Cc: nouveau@lists.freedesktop.org, rust-for-linux@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Eliot Courtney X-Mailer: b4 0.14.3 X-ClientProxiedBy: TYCP286CA0365.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:79::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_|SA1PR12MB8162:EE_ X-MS-Office365-Filtering-Correlation-Id: f5174ead-a297-4926-45ce-08de5a78eb31 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|10070799003|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?bm44aS9UanExZ3ZCQS9WbXF2R0hIaGpuZGVqL1dYVzY4UlRFN2JBZGNRZjd6?= =?utf-8?B?WnBLWm5JbmlNT096Sy9Hdzh3UWtSckdhVGRwWDEvL085WXc3U1VpZVE5R3BK?= =?utf-8?B?Q2NUQ0ZBTWVOOUNuQ3JsZnZ0V1lmZGZ2aG8reVBOL2h3NU1aWTZGZzQzTlRa?= =?utf-8?B?VWFJclZHRVFFQlJRQnVKMzJQcWtMUklLRG80UVNyUk0yL2k4RXlLSERQaEZV?= =?utf-8?B?NjVabXpMaVZXZk44TnVZcGxHSk9YWXUwcGx6U1hZdms2ak90MFRSdUR1QXBa?= =?utf-8?B?aHhzMGFmdExMVnZjZEZTczIvYUNBaVk4NmNCOURzaVptb3hxZFIzSjM0TWNt?= =?utf-8?B?bGJJUFhIQUNwM1dFd1F4ZDdqaENIMmVQdnJNM25hS0Jocy9xaXNMSXk5RmNQ?= =?utf-8?B?dVBlbEsvSU9JWlc1MWFJNkk5cHhjWDhkZEVMK25RbEV4SWJOYVQ4cE84Y2lM?= =?utf-8?B?V0JwOXpyZktKRHVZeldhSWREZXhnMFdwdEg0eUV0VnpXOEhsbEJCSHNjMldK?= =?utf-8?B?c1lheHovQkdoeEVqZzUwNy9DQ2Y5T3IxaUtUYUtkekxHc0VLTEk5dC9VTzRF?= =?utf-8?B?WStINUMrcEtkRmlrQVFld0FubkhaNlNzY2lndDBXWWwweVJvWFdOQnhwVDlO?= =?utf-8?B?d3pIaC9aTnRpTnlibldnTVVLQnRmcmhNQU9MSU9wc2pnVjhYQUdVbnp5YW1a?= =?utf-8?B?WGd1M09wRmdzNVc1K3dtRVIyc0x0SnpKTHBHcm1BQ2h2SkptZGV0MndtUHRW?= =?utf-8?B?SDY1RnpUR2FSZDBhMHFwQ2IyZlBrdUlpaVc4aGRzTDdSMUoyU1BxcTJIWjU4?= =?utf-8?B?RFh5Vis3Mi96UnBCU0o3RnNseU8zbzdsNWFYOUdwMU5tZEhuYUlCVi9CcCsw?= =?utf-8?B?OGwzNUsxL2NjdjM3VUoySVJEZEIwY3NtdlIxN0ZueWVoMFhlNjNXTWQ4SWVY?= =?utf-8?B?dzZ1REl3OVhJR01uL3VSaEVzbjBwdzZRM1lJUkExTVorbEpwRzV4Z290ZUhQ?= =?utf-8?B?RTN0ZEZsWGx5N3N4Y2h5dkFVRDBZak9TVmpVSW5ERFB0eFg2OGpueE80NFZB?= =?utf-8?B?UU1Zd2JWelNzNlJuYVVROHVJcDRGU3ZFcGJ0dHRMUjl5QytjME5YU3l3RU5n?= =?utf-8?B?bFdUWXBkQUI4UVhmWDhId1hNTzZpNXE2eWo2dGpGMHpqak5mcXZEQThmMkp5?= =?utf-8?B?LzR3VHg4TTh1ZC9Pd0pJQVlBQ0dUMkpSSk5XWXFzZ2pzT1FkbFZDRmRULytY?= =?utf-8?B?RXNZdS96N0N5NHRUVnAycjdlbzJzYjdoZnV3WEEyTU9sNVVZdUdXMUR6QjFS?= =?utf-8?B?SDhBb1JNMDMybUdxRG9kTHhGYnh3eUZRbVR1TW1wQXNvWHluQ3hRVDRkd296?= =?utf-8?B?T0NybzdLRjNMQ09zMVBzUWc1U0VWdUxuSzdJc2JUVFVXU0s1aUVTRVExUDRE?= =?utf-8?B?SkU0dHl2MDZEKzgzWnBKM3lUMWYvQXhrYzdnMHVZbWtoeGpoRGNqRG5OZEJY?= =?utf-8?B?ZURXWldJMDEyLzg1QVoycFVQdTlwT3BWTnZObFNUbEN2bHZSM1BNN2w5UUJp?= =?utf-8?B?dkR6aEtiZ0xyZXNhUTNiazU1andObmRQTjh6djZzY2xBZVl0K2tqQzNKVWNV?= =?utf-8?B?d3dNTWtycHJVdnUwUXc4Mm52K1YvclNVWGtSUERIdmJTOXpldGdvU0xId1RD?= =?utf-8?B?YWJnUHZWdlUxeEUyVVdRanJDVDJjNlVhc1A2ejc1NDROem9lVmNMaFNYamc0?= =?utf-8?B?SjZtdzAzNjFTZm5JTXpDb3FjT0FUSElNYnNVTy9qSFcrNGRySGpPOGd4cjVS?= =?utf-8?B?S1VYNWZrMjd1dG1JS1hmdXJCVForUzlQK3hEZzVUS21pc08zdFIxTGlyVjla?= =?utf-8?B?Yi95dXIvN1Z3VmptZlJMb1dpN2VTM2ZDdWh4VVI2b3pLek9Wa3gzTHRQcFdW?= =?utf-8?B?V3NTNGY2N3RDZHlRNkROQ056ZHlkT0hINkdoZVV4aWNNUnJXd1A4bVBBcjdJ?= =?utf-8?B?czZweDF3bFdqSnpVM0F5aGxZR3EzaHVxcU1LbjVjdTNWalpkMFhPcUpNOHAz?= =?utf-8?B?MDdFd3pNOWVGc2t4VmdDZVcxWWlIMWJkdGFMcEJXS2l1NE1YVHF5ZUowR1By?= =?utf-8?Q?IK5A=3D?= 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)(366016)(10070799003)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?d3JPcnFxM1l5THZXRzkyTElBajI4VFloWGNPNW8xckp1MHEvVGl6KytCa2tS?= =?utf-8?B?Y1pudmJ4bzhRRE51R1NVTCszaGQrRWJpOVdBMmJPOThTU0NOblcvU21ZaHIv?= =?utf-8?B?bldkWWMwY1FIMmVRTm5zTTJVZGJlMzRONzFyYjFrRVVYTFZhdkV1UzZpY3hn?= =?utf-8?B?b2k1YXFsdkFGV1ZPaSszYjZST1RoWC9ORWtWZ2ZXUTdHSG00ZkppSFhqRzZX?= =?utf-8?B?UnhBYVV3aFNSTkFZaGU2OWZVYnRudUh0TUJHWnlSckdhSnRMTG83WHNtQWE4?= =?utf-8?B?dGdpOVFaV1RyUnc0bXJhYjBBa2Q2VzNKMWluWUkvbkpHMTVBZTN5ZGpveHhm?= =?utf-8?B?M1dqelhlYk9jai9XS0JmSUhWVWVhdHYrKzcrTG1PNUVpUWxUcUcyaytqZXg4?= =?utf-8?B?dHlOVGpiUDUvWWhXVjRUL1BIc1BvSkJRQmRWZTdlclM4a0tJSTdMbGRVbzZn?= =?utf-8?B?MUFsQm9zZlNhbWNTUnlXNFoyaXRYU3FwNGFraHBsRGF2R2lpRncrc3JoMVo4?= =?utf-8?B?R3IyVExxc3QxRnpPWkhZRXVIaExQUXUxYkFiaWo3OG1tZkQ4SjhDd0hIcEN6?= =?utf-8?B?RjRnaFBGdVZUcUtmQ1dRcUNYY0o2czVaenR4SjM4elEwTm1RZzJQa0lrOTNW?= =?utf-8?B?bERuWUpFWWx1SzRvVmsvbGdxVy9Cb2UvWTFUR25FbVJTT0hhbENiRTBMR2or?= =?utf-8?B?Mkh6c2hlbUJtamVDcnh1RlArK3poMVhNR3BCb2JWTHN3SFRBMTFwUEJvbjJw?= =?utf-8?B?ZzZINmpaSDZlaFZYcWVHeGJZd1hJWEwyZVZncXhNeFk0ak1YZU5jYktwTk00?= =?utf-8?B?QW15QTNFbGdhYnkzZjEyTXJWcEZTaEhBVSthSVFPZkZ2cGVPWnpRT2xUM1hS?= =?utf-8?B?MnlGaEZtaFRYNVZNT2J4Z1BmQWsvLy96TTdhVEpYcUZkSjF4bVBkVjFwTDJY?= =?utf-8?B?OUJWaFdjMGRPRk1zbWw2UEMzYnBJQWVhdmJMd1dwNUR1OWxFNnN5Zi85NHJI?= =?utf-8?B?cGptRjRqZElvNTBiajFXY3RiZ1B1QWhDQTVBZUIveTZPNmNHYndHT0NXSHQ3?= =?utf-8?B?N0UxZDV0RjJDbloySERra0ZJV0IvUGFWOFFGbE5hK05xSkF2UGc5UXdZWlRy?= =?utf-8?B?cEsxcEV1T1k5ZE1EZkVYRGVURXh5a0tuZnk3bWc5YkFsUytITXltbDJpNjNI?= =?utf-8?B?RWJiOGgvWHczZHlOam5BeWhNKy8vMzcwcHZEOG92eTlkL25SR2hWdUFhd0xQ?= =?utf-8?B?cGx0QjNocnFqNlEyeXhYYTBsOVdMUEJibjR2YXZFdENmdGIycjhqOWVUSXd0?= =?utf-8?B?c2RZc280MGJycUhRUGRBMHZBVVkzeG81bU5WZkhtY0pkM1JCTGF3eHgvZll5?= =?utf-8?B?QUF6dWd2VlE3eHBDUWZFUHBwemxTUDEyeXJyV29ac0ZhdVQ0UUoranZWeXVR?= =?utf-8?B?d3FDcEdzSUo1bSs5cTZzemtXcmxtcFA5Vm5uUWUvNE1PVlVXY1BCT0d1WFVn?= =?utf-8?B?MjQ3Myt6ek9vN2ZOaW15WitUY1FETHpNNWF1ZVZkQzR3Zldwa3M3TG4zT3Zq?= =?utf-8?B?ZXhSRmlEdjlKeFJxV0QxTTE0U0FjUjREbEdhdC9DTDM1RVpMblRIRllZbG4z?= =?utf-8?B?cE5KZG9ZdEhQYlFJZ21Gc1NsVVhFVDRZSFFHWitHQU1HVHpSWDczcWxTT1pJ?= =?utf-8?B?bzFjMEw2SVJjSzRLQ1p2c21NbjAvVW83TXdlVDNycSthR2FaRmVkWUVVcnpP?= =?utf-8?B?OXdGUTRuM0d6YzVkWXFMaFNrOGhHZ09HTkY4a3g5Vmd2NDVUeXUyK0QwSnZD?= =?utf-8?B?SmVPdXpuQ05mNGxJTE9sZzBQVlpYeTVmM21mTGxGWGxmeVpZVjNFYXBUanhn?= =?utf-8?B?V1dpZE1aUDhaU2ROcGdMY25kYnBSd0RUZkxYR0pXbWhQRENiV2wxMjAyZVM1?= =?utf-8?B?SVNvU3VWblpYMkoxOVJmZ3lHYVh0M2k2UnRzM0EwbkUrajIraHluUEZuTEFx?= =?utf-8?B?SGpvU3dweVV2Y1ZaNXhuYXM2U1MxWnhTSG1VMEVFVUVLOXR2QUl2NlYwTERK?= =?utf-8?B?OWRPdnFZYmxDMmV4RmFVNk1xZ2U1eUNlRFc3WHFUV1A1RlBrVDVkR0IvNzZM?= =?utf-8?B?c0ErMVlKSkpOSUc1Qm9tSUJyL2xTcE1saVRleEZWV2hsRzJPeXpuSlZSYk1W?= =?utf-8?B?cTc5NE1XMmJweUFjT1QwZnp0QXJzUFdMSGN0eEY3NWtab3NKVm8ya09seUky?= =?utf-8?B?ZFlZVG9wL0Qvak5NQ2NYNER3Lzh0ditGTFNISTJDMnUyT3IrNlNMbHNXaGdU?= =?utf-8?B?RGd5LzA3VkRLMWFPUS9XZGd4V0tqY09kREZMWVlWNTI1MjIyQUlPUDRXWlRo?= =?utf-8?Q?8L9yAi/PJS7Kz7fsL8ORMOqXHIV+9rHcLxqZnKf23W5xL?= X-MS-Exchange-AntiSpam-MessageData-1: 3arunWagkIMNyQ== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: f5174ead-a297-4926-45ce-08de5a78eb31 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2353.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2026 12:14:12.3915 (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: W+DbZDl5RBRoHX+y3iS6ZgVoSTEVFNaiMbS6mSgx0FxfJrq5099craYFdd9Jw4kG2ECZ0vx/uHEznxLqH+5UAw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB8162 The current code indexes into `after_rx` using `tx` which is an index for the whole buffer, not the split buffer `after_rx`. Also add more rigorous no-panic proofs. Fixes: 75f6b1de8133 ("gpu: nova-core: gsp: Add GSP command queue bindings a= nd handling") Signed-off-by: Eliot Courtney --- drivers/gpu/nova-core/gsp/cmdq.rs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/nova-core/gsp/cmdq.rs b/drivers/gpu/nova-core/gsp/= cmdq.rs index aa8758fc7723..c26396fda29c 100644 --- a/drivers/gpu/nova-core/gsp/cmdq.rs +++ b/drivers/gpu/nova-core/gsp/cmdq.rs @@ -1,7 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 =20 use core::{ - cmp, mem, sync::atomic::{ fence, @@ -267,10 +266,20 @@ fn new(dev: &device::Device) -> Result= { // PANIC: per the invariant of `cpu_read_ptr`, `rx` is `< MSGQ_NUM= _PAGES`. let (before_rx, after_rx) =3D gsp_mem.gspq.msgq.data.split_at(rx); =20 - match tx.cmp(&rx) { - cmp::Ordering::Equal =3D> (&after_rx[0..0], &after_rx[0..0]), - cmp::Ordering::Greater =3D> (&after_rx[..tx], &before_rx[0..0]= ), - cmp::Ordering::Less =3D> (after_rx, &before_rx[..tx]), + // The area starting at `rx` and ending at `tx - 1` modulo MSGQ_NU= M_PAGES, inclusive, + // belongs to the driver for reading. + if rx <=3D tx { + // The area is contiguous. + // PANIC: + // - The index `tx - rx` is non-negative because `rx <=3D tx` = in this branch. + // - The index does not exceed `after_rx.len()` (which is `MSG= Q_NUM_PAGES - rx`) + // because `tx < MSGQ_NUM_PAGES` by the `gsp_write_ptr` inva= riant. + (&after_rx[..(tx - rx)], &after_rx[0..0]) + } else { + // The area is discontiguous. + // PANIC: `tx` does not exceed `before_rx.len()` (which equals= `rx`) because + // `tx < rx` in this branch. + (after_rx, &before_rx[..tx]) } } =20 --=20 2.52.0