From nobody Sun Jun 14 11:27:46 2026 Received: from LO0P265CU003.outbound.protection.outlook.com (mail-uksouthazon11022132.outbound.protection.outlook.com [52.101.96.132]) (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 A004D42EEC8; Tue, 9 Jun 2026 15:39:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.96.132 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781019545; cv=fail; b=Xr8h3BC9ZMHkuM/5pmIkVoCbCceQ0MRbyUp2NFQrLUG+5+sjen0nke04uu9JwY9SwqMLNEQ9in6bAN7yBJukCy+ZTlEuCC/Ft3wS+oHxUNRf6hHSK+ahEjVdqEnhKQJP9JEnx64dUnN1uW451yP91wP5iOd7YVSM+i786MLNhSM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781019545; c=relaxed/simple; bh=hxkwhVK5ToqxSCTusoVQ3qd9f1d4OmS/kjHIq5ZEPwU=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=csVZ2935YF6789S+GDYC187r3qesmp+pqhTLRcnkSY+NbqhjEtwenLFjebRglQRcoJudShA1svmeO8VOLoD0sLfyv5MZvLcE576fv4hKE9nOoOiXgw+VlO6NMlPpVgLHTLTEP6KA0aMoG1FEMBNRyWoPhycL9yn1Gl08qIwCu48= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net; spf=pass smtp.mailfrom=garyguo.net; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b=uEbHrJAz; arc=fail smtp.client-ip=52.101.96.132 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=garyguo.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b="uEbHrJAz" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=t51RIwcSmoUyYid77iHAAfp/aUlReE7TLtLPg5TGZ9dYE1xAlRSbb4p+OocoDGkljhtd5zQyLOLqMCRsSGEuD9sOh15yjhqRZhfGRl0GHw72N3Y1hLYlqT8IFggBrbgan+FRggKVw6Jga5FIuwyYZ9GKonJFC9CZu2N8xZFLJfyMLb+eKIUxnLa3F21A+rhF9aeU1xrBKCiBDhtPpHy/7wmorgBWUMUdwZgdmKZleqUc246E7pYg7Q2BpGaGNDGc8sEw0GXJ3TWAJQnLEiI3A20xiyf3gDoFu2pvsx+N5QQ22JNec/ZncIiJ/lHwvde+akc/Rlde6rwNXbs7rVFDng== 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=cs11+9v20TCLsH9iPRgwrmDC7+Bsj4F642mYa4OEs1Y=; b=sWAvG+uuN6H1tZcpg0aMuQkt36/A/eneCggidn1AB+RXV7i9+cQj2YHQ9/0hcsxkSGi9HWboNIJjaX1ORj65AsIxZgZVBGKVhCL/M8RoHu5cL1jnh6DUD6MC1JI1eeOyu3i1HcQ75F3vSGJe5eftbem11MqISEZaVxjFL7kVUrW2tUhW9sYx+XzHvN1a75h4QOAR72oWVatJNdtSE1mj41CRY4kf8PGsk+RVrVj+Z+0sBgvY1xcCrXmsqn8PeWWDEt/znUw51ISXoP94lNz0mQ+7MtP3DLUm9vlr5eeHVj/B/NNPbSx5ocWxvbs6AijaH0sf79yWMzzmOufQarlUHQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=garyguo.net; dmarc=pass action=none header.from=garyguo.net; dkim=pass header.d=garyguo.net; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=garyguo.net; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cs11+9v20TCLsH9iPRgwrmDC7+Bsj4F642mYa4OEs1Y=; b=uEbHrJAzC/R/mnLdWN+yP6kaI5HODIgxevB5RYNj2KgkmVHILIT3mmZZGqfz/qJCgTS0C5u6/Nt8uhswJado+lqo6SgkNTRRFEVK+SEI/p40VYAzIyVZjF299Fx06Ycl3yQTOfU+P3jQ6btWG47vaN5u2oh2mQi/U9txysyfpgk= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=garyguo.net; Received: from LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:488::16) by CWLP265MB6167.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:183::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.14; Tue, 9 Jun 2026 15:38:58 +0000 Received: from LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM ([fe80::1c3:ceba:21b4:9986]) by LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM ([fe80::1c3:ceba:21b4:9986%4]) with mapi id 15.21.0092.011; Tue, 9 Jun 2026 15:38:58 +0000 From: Gary Guo Date: Tue, 09 Jun 2026 16:38:37 +0100 Subject: [PATCH v2 1/4] rust: sync: add helpers for mb, dma_mb and friends Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-rust-barrier-v2-1-30fcc48e1cd0@garyguo.net> References: <20260609-rust-barrier-v2-0-30fcc48e1cd0@garyguo.net> In-Reply-To: <20260609-rust-barrier-v2-0-30fcc48e1cd0@garyguo.net> To: Miguel Ojeda , Boqun Feng , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , Will Deacon , Peter Zijlstra , Mark Rutland , Alexandre Courbot , David Airlie , Simona Vetter Cc: Gary Guo , Alan Stern , Andrea Parri , Nicholas Piggin , David Howells , Jade Alglave , Luc Maranget , "Paul E. McKenney" , Akira Yokosawa , Daniel Lustig , Joel Fernandes , rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, nova-gpu@lists.linux.dev, dri-devel@lists.freedesktop.org, lkmm@lists.linux.dev, Eliot Courtney X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1781019537; l=956; i=gary@garyguo.net; s=20221204; h=from:subject:message-id; bh=hxkwhVK5ToqxSCTusoVQ3qd9f1d4OmS/kjHIq5ZEPwU=; b=/vdsgPDVUL2v7ElWLurH28PEOGcuSP3l+PO2A9HIlW9mW5n5GmdKMdwW0V3A6kJGi/769oIP8 3pljt/8rDGCDkYbAiNBdR45w2Cmgc/WxjZK2r85zng4yOeNXzY1M6/+ X-Developer-Key: i=gary@garyguo.net; a=ed25519; pk=vB3uIX95SM4eVrIqo1DWNWKDKD2xzB+yLLLr0yOPYMo= X-ClientProxiedBy: LO4P265CA0128.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2c6::16) To LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:488::16) 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: LOVP265MB8871:EE_|CWLP265MB6167:EE_ X-MS-Office365-Filtering-Correlation-Id: 16eecfc0-3077-4be0-58b4-08dec63d3902 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|7416014|376014|366016|1800799024|921020|22082099003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: fwTgSu9in0NCj6gPUmTfHam5VQNce9YQ+vlFQS2lbNm387VkkoPvSP4ctrRDOp5iKCd12rj7hOqjXX0imV+jfvC7E98KYj7t9J3/Y9tO6CBv/4Sfayd+bQfTMNGj9Vm50gY0HhvxvFRRGY9P9noiGHSFcxE1i+n61P+D8Li4YEqjQ+YOiDhVhw3HyGrfo8zJuUuMd3FXeAFbSPevLtTviM7BoCmLRSTFgLbshoFeZ1UjqX3bKs7rY77UtdRFbwPvDJtZyvnfFXy9sLu6sNTwfYXpzLGJefeymK71pQRXU8k11WoTc/ixhrLehqWh+wLkK+8lnkmFU3t5u5U9+5b/x3lp/5jckRi5B5oBaf+4ZoSzcIWBRCB4JxC0WH3gknpL4mQePoNyZ7vMT3R21fbWynN5VCSbCrSsK7wcGctIjeJQttoT7xT+QMqIRPeFRF+h8IHBb+4UhS2hb3vRl8oWg5IXw77/gNmrZith5hQEctH5hxAyNaphXs53nAb84VRJFKgszV6JLZNSVNqPj2CToYVP/PUkwHklwEEKruPTtoNjJ6nNyzPDWzjeujZMj7LN9lX5SP0n43/L0wwKQwXnCSR5BRlWQO6tDEG1E2yUV/cKhUrBCHZHu8NbCI5ROJVtCYUngs3dHH8u9LJcXQZrkIztPWppCz030ZTMQ+zhdGu1gGF9O+XecMkerwJfNBbAadDtl6kqlPzEu0DJl2MxYynkOiv36Gk2HNpq9bsLrgM= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(7416014)(376014)(366016)(1800799024)(921020)(22082099003)(18002099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OWZNL3ZvMklDSG9xNWtwMVNrdmVvZGtQR3FNazlzUGhQN0VKYWp4dG5hbHpj?= =?utf-8?B?YUZ0WEJUR21PeVVxcE8vRVhKdEpMM2Jna1UxdEdyVGhsQTVBTzFLenVIVU5j?= =?utf-8?B?TTljbExOMTVpQnBXMzlHVDhiQmpkS3dqS3VlaDNsbnNDMWpOZENzUk8vTHFK?= =?utf-8?B?ckNkWTM4V2V1WSt3Zlc2SDZydjZqRXgvKzVZT3VGdUErY01FbXk4Yjczc1Fk?= =?utf-8?B?UVM0My9Eamd0cmg4R01IVFEvaDdvdEsxTUkreHhwNjM3V2x2RGgrNnFhWU5l?= =?utf-8?B?Q2ZvZEVhZHhxU05STzRpQ2RMSWdsUXRuRW12ckVEcStZUHp6clhrUlVpNUhD?= =?utf-8?B?Q2h3Zm1qQy9NUnRYVkpaamRoQjBnZEhEUTRMaTN1VVZlY3hBSHZISXdvNTIx?= =?utf-8?B?dWV4ZC9VR0xpRk1iZXZSU04zblE2R1d1VCs3YnBUNml3aHA1ellHWDhRUlNL?= =?utf-8?B?cUpCY2hNVlkwdGlTOVlaNzI1SlVaQ3dMU0hDbG9aZ1RBdVhHdTFGTS9ycitz?= =?utf-8?B?amlaWStpWWtTNkNwamhNbUhkWWZYYkdxYU05eGRTV0JuTmdORkVObkFzZ0Rl?= =?utf-8?B?L1BiU0w0a0hnMml5cXpCdWF4TGhFeTlTU3M1aFNEejI1S0YrQkZQZEZ2VXQz?= =?utf-8?B?bWVuQkIwWjBZcm9BWTZKaG1aaUlHRythYTN3SmUxL21lMkxzSFJodWdLRzlu?= =?utf-8?B?L2xPNllPUjhCS1RjQWpJWDRmNWdLVjVmMGNMYjhNbHdLUTh2MVJkUnUzYlNp?= =?utf-8?B?VDNrZStqTUhpamlwcGdENzArS3lKZ3BvMDl6cmpMMGF1eTZ3NDY0RXZEQlJE?= =?utf-8?B?WVprL25HWDNWdjdTMG5xaVQ5V2NpNW4xWDR3THYwcDRPT0ZyTzYrNDN0Yjls?= =?utf-8?B?WGxNQnYrS09XQTdaTDRiSGNYU2V6azhwcHM5RXkwL1ppYVRBb1YwclFBVXc5?= =?utf-8?B?VnR2YjlRNUVMTEc0bmVvcVhqeU9iZy9wV1QzNzhWY1NiWDB1S29lUVRZeDNn?= =?utf-8?B?Qy9UMktiQnFCYk1CaW51eXhNWEN6cHNBTGxOLzhOU3ZwWXFNL1BPVENUOVVu?= =?utf-8?B?Q0JHWnhpaGlydGhEUFJOUlM3MCt1aTk5VHVscldka0d5WWNtc0RLaEUxVjRH?= =?utf-8?B?UDQ0Q2d5Z1RiemRUMU9rK2xrM0lQd3R3Y0JOY2dUb0FKcHNqbWRYSWtqNnk4?= =?utf-8?B?Q1NlYnNESVU4Qjh2cjRXM25jZGY2aHhTbStmelB3M1ZSMGxyTnI5RDAwbm16?= =?utf-8?B?RnlQbVJXL1NrR1BTUzZhQUJBOXA5UjBNSDczWU1mVWZHQUNxenEvaHozQ2U0?= =?utf-8?B?cmJnVkRJak90SDltcDZCN09JcjhFRTA3ZHhxaFJqOFR4SWtjdnRib3F0U0U0?= =?utf-8?B?dElSS3VlOVNKeHFvcWQwY0FvRE16d3g4ejg4TXlPM3p0bGxqVVRZOHBManhE?= =?utf-8?B?dzIxakhhT3J6QjFzV3VyZUNXa3hMOURUZHgyRmZzTGJWZEl6TWdnMnJGbjU4?= =?utf-8?B?Qll1U2xsWncxQ3ZTYzV0bkhpSE5TNEIxc1BRak9IcmhHM0RaNzJ5dlRrcjNH?= =?utf-8?B?WFNBU0grUFFhQ0pWZWMwTHYvMVRmbytuV1BwREFkWE1XakV0aXpPdmtHeE95?= =?utf-8?B?S2FHa1pPUWc2OVFoMGZxRzliODJjNG1rZWhScGxXTDkwVFNmWnlkWUgyekF4?= =?utf-8?B?RU1WMTJYRHo5c0RmcUpKRlB3QklidkhVZmVkR3FPMDZpeXEyV2kvSVFqTmtM?= =?utf-8?B?RDV5SU13V1hiMzYzNFFYS3dxK040aHpjWHh0VTVCTGNHdmlJUHNRemp6TFpi?= =?utf-8?B?c2FkLzZKcTVtK05rWEFyRlg1cjd3RmpkMklnVFQxQjhFMk94ZTB3TDlVN2VN?= =?utf-8?B?Y3FwL1plSTlQZzV5U2docEN5dXZnaEJIVDZkaE5SUDU5QzRCaWZ3d2k1NFlR?= =?utf-8?B?U1Btc0xValFnVjdjOUUyRlhGL0FlVHFYT043U3JicHdyY09HYVR2REJrd1ZH?= =?utf-8?B?eU95K2JYQ0F2OTlUTDFlbXRTZytJbHpiZzJLbnBmS2FpRDZhYjllbGFWa2xU?= =?utf-8?B?VmtLNllzQ1dxdDBIRFZONy9kczhBL2xxdWJka3p3QWxvaythLzVmbDlhSkR5?= =?utf-8?B?MTZQQ1FiWDJZbWV2NGNSai8vcEVsbzdpV1hrY2FEb1BaWThDUlorbHRvL2w2?= =?utf-8?B?M3dOdjlIdFl2UU9CUzNBZVlEOVFGaEFJY2FiWTlTK0NjSmJkVGpWWXB4bm1h?= =?utf-8?B?RWtjKzV2V0xQZW8zZHZWTG5aVDJZalBPN01kMlVTRGYyTmJpdEdiZ1B3VDhI?= =?utf-8?B?YTkwVGw0K3Q0eDIyRi96N0J3TVZ4WlBVYy81LzBwcHpYS2tlUWQvZz09?= X-OriginatorOrg: garyguo.net X-MS-Exchange-CrossTenant-Network-Message-Id: 16eecfc0-3077-4be0-58b4-08dec63d3902 X-MS-Exchange-CrossTenant-AuthSource: LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2026 15:38:58.5604 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bbc898ad-b10f-4e10-8552-d9377b823d45 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 5nBd3EaAq+zjZFc90Ohzhqssv1ooa6rqiAk0n8GiLN5nLQyM2B34kGXOpaNTmjtletQH/nN5KUlht+RDmrkltA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWLP265MB6167 They supplement the existing smp_mb, smp_rmb and smp_wmb. Reviewed-by: Eliot Courtney Signed-off-by: Gary Guo --- rust/helpers/barrier.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/rust/helpers/barrier.c b/rust/helpers/barrier.c index fed8853745c8..dbc7a3017c78 100644 --- a/rust/helpers/barrier.c +++ b/rust/helpers/barrier.c @@ -2,6 +2,36 @@ =20 #include =20 +__rust_helper void rust_helper_mb(void) +{ + mb(); +} + +__rust_helper void rust_helper_rmb(void) +{ + rmb(); +} + +__rust_helper void rust_helper_wmb(void) +{ + wmb(); +} + +__rust_helper void rust_helper_dma_mb(void) +{ + dma_mb(); +} + +__rust_helper void rust_helper_dma_rmb(void) +{ + dma_rmb(); +} + +__rust_helper void rust_helper_dma_wmb(void) +{ + dma_wmb(); +} + __rust_helper void rust_helper_smp_mb(void) { smp_mb(); --=20 2.54.0 From nobody Sun Jun 14 11:27:46 2026 Received: from LO0P265CU003.outbound.protection.outlook.com (mail-uksouthazon11022132.outbound.protection.outlook.com [52.101.96.132]) (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 3533148B389; Tue, 9 Jun 2026 15:39:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.96.132 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781019550; cv=fail; b=COqQCtHmWkGVyxNjjnM4sBb9wjIl4LKjXlidYvmDk/XDL+dCGCKHPJwJsoW9I0LVyUBVyo1lDHc0w2QU3nrwYeECPqpjVr20621JFxAfq2AZ7qwImFGy/vuHMicdR1KI8TJt9atc6ps5WguDUVHrlY48TaIft9s/gugOv/AlTAo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781019550; c=relaxed/simple; bh=wG4s0Mlub6+whdzeHqbgBmHcmK1O3EYo/fHDF5pP2po=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=aE9AWaCBQ2GnY3dDcE67H4vFEKNBsFHNNWrFfrzdX94HFTTX+QQhJhTPZwnWP9CDm4CxHLLJxc5P4lc3FQehAJbtyvtB8earDY1ikkqwnYU/DO58WvVw39ZhrusGQRw7NbbKLYZR4oM55MkWwMnbn1DWqcTT6YLGPzvCW/xKhu4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net; spf=pass smtp.mailfrom=garyguo.net; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b=uijsNF/V; arc=fail smtp.client-ip=52.101.96.132 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=garyguo.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b="uijsNF/V" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wHuwa/HJTJuPsRV8v8jNDY2nZ1cIA3yq3CGWZ6eRn7ztZC1LIfUuufqbu7Jkjn/EksORF5K2pmDcj0qHWhFvbNLtKQaEtbOvuqjqeRDWRF6zqtQ8HglOu7Vyi8AKGKdEwDcxgUhytdXwWG3LTEllRQXhEcNCuT1WybPJ946GHtzGbXIwm0exn4sObjGn7ypL0NxeTNOUKmCIRYoYAUNGkjUOYqXf9AE3m/j/sIzC/vJA49pmDV0TSvkjjEAMnPposDOkp2RlwUznwMagX/ldUiE9L/8nnCqe+4vLZwi5FtxSWTdWk4R7v24B5u2+YdkfXxO2DlIOca+XhOAmXduuAw== 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=OCX98HN2c9d25qlpIZB8yb3q+oU/LM3Cdz2twWdFASg=; b=OxjRQpOyQBVmMxragZA5w5VeYx6w0OFaFrbCGTHqpCzvM7lJiplmLjL1UHvCpvbiMnJcMOOzFWdRSlOmvaW8G08JZej48CK+L70zgVOh4gHV1gmA61Dw6b8O5ChpWFQKlF2zXlYfd120YtN0/b2gy0pVu9Gugwwh5vMrMT05LR3VWPU2ExOwRIgvheKPL08eOxEIIMS6v27TA5vHouDMx45h6ObxRhzF1FgFAeQezG9RNiPNr57iE3lCWEGueAQjBHEsUk2ibP+5LNG9Ybc9SpRV7cT+5nRF3s/g8nwHfwsZow0BcCn9aTVYlrfVIaEogpD39JJzVBXxZ5WYNAqX3w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=garyguo.net; dmarc=pass action=none header.from=garyguo.net; dkim=pass header.d=garyguo.net; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=garyguo.net; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OCX98HN2c9d25qlpIZB8yb3q+oU/LM3Cdz2twWdFASg=; b=uijsNF/V+Wo+Rj/yFD4W5Vql9UN1IoMxZlDWO6uGPINwUheSHiu1gO3aQVUb9fxyhdV2kFQbhqv8+48CY3aLkHt8XXThLqL3uKugVdDCyfTm5LClRXVOXRkln/ApepCnbK1RyJIKOACj2LHbLw0v5aj5E8uWz7vkK6NC/Ml+ad4= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=garyguo.net; Received: from LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:488::16) by CWLP265MB6167.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:183::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.14; Tue, 9 Jun 2026 15:38:59 +0000 Received: from LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM ([fe80::1c3:ceba:21b4:9986]) by LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM ([fe80::1c3:ceba:21b4:9986%4]) with mapi id 15.21.0092.011; Tue, 9 Jun 2026 15:38:59 +0000 From: Gary Guo Date: Tue, 09 Jun 2026 16:38:38 +0100 Subject: [PATCH v2 2/4] rust: sync: generic memory barriers Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-rust-barrier-v2-2-30fcc48e1cd0@garyguo.net> References: <20260609-rust-barrier-v2-0-30fcc48e1cd0@garyguo.net> In-Reply-To: <20260609-rust-barrier-v2-0-30fcc48e1cd0@garyguo.net> To: Miguel Ojeda , Boqun Feng , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , Will Deacon , Peter Zijlstra , Mark Rutland , Alexandre Courbot , David Airlie , Simona Vetter Cc: Gary Guo , Alan Stern , Andrea Parri , Nicholas Piggin , David Howells , Jade Alglave , Luc Maranget , "Paul E. McKenney" , Akira Yokosawa , Daniel Lustig , Joel Fernandes , rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, nova-gpu@lists.linux.dev, dri-devel@lists.freedesktop.org, lkmm@lists.linux.dev X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1781019537; l=6215; i=gary@garyguo.net; s=20221204; h=from:subject:message-id; bh=wG4s0Mlub6+whdzeHqbgBmHcmK1O3EYo/fHDF5pP2po=; b=AKArYWjZKafa37olqd81KKgaw2WERoLhXOgII/oJTgjpdQsvJ2z+B02io15KIxA+VpD2mSbBf cqwEfiWal2sCdsTk74twn7DsJgFDsNN+1fWVRJbJ+wHAazRcA/t1yKL X-Developer-Key: i=gary@garyguo.net; a=ed25519; pk=vB3uIX95SM4eVrIqo1DWNWKDKD2xzB+yLLLr0yOPYMo= X-ClientProxiedBy: LO4P265CA0128.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2c6::16) To LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:488::16) 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: LOVP265MB8871:EE_|CWLP265MB6167:EE_ X-MS-Office365-Filtering-Correlation-Id: dcfbd3ea-5d6b-40a7-7079-08dec63d3948 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|7416014|376014|366016|1800799024|921020|22082099003|18002099003|3023799007|6133799003|56012099006; X-Microsoft-Antispam-Message-Info: VMIUJu1MiLH1v3O8cL2vrNIRzypYtDpEaP2WNwIT2XWGEb5LQCpSQ38KV05Ensm/Leemy8YlCDoUzJGMIXG956WwV7aikPocgD/C32e11LZ4uRSmj+zAKX65Hix/RJr+v+gwuNTxNA4VbiGtlZ01mTnr7sfBA1ODS3xoOa4gYFW6hljG5G+1thgVx7UFaVGtf70Q7IvDpICDRtR6+fp+N9O4wsLAZqIaIqm+hgxOW8JvHc43pKK+XuAsOe9g05MG0lkx/E9ElpUVK6jpxF2W2fnBuuIK4cKamcJEuioHlCtRGENJ/CacnfsT0EoR3vanx65kZWjPv546uiLJTdFj03nyhshJHUFwmtkjWq3tQs8c0FFQpPA7CbxgUQ7fNdv7jNngW4jrQskm5fLvMDCvua14MpEk4GyNshdrKviZcFDCrKgDsAkoZn+4qxIAYWdIMYRoQF1PkjSbjHOVj7IyYbOA2Sfv861fkDqC80WqCQmlOP1WZLvCk1XbtMrDg4yei7uc8Eh4QQCBwYGTnsXITFumQz/WhUk5HTwaw24Yyf2+qC3BoVzc+B9cG0KIbw7Bu5lOAPkHWfmhuYeczVUgwdDLMN7hMAH3Sffy37FaYHgiSEGhZ5OB4nOjhQnb2SsRfPtovOpYpzG8Bdz4enCJoez6p/9pkRORAm3rBAjrs5jyiDuHDbxaAs8gsTWmtxcD825VajDALxOAEG5GVXPJx4xdf7AlAuum/4/4IMOoxPg= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(7416014)(376014)(366016)(1800799024)(921020)(22082099003)(18002099003)(3023799007)(6133799003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NlVBYmxsTC9wME45aGFXOUhybGE2Z3ZHK2VaVVpCbis5aHR5VEZEUWxBZk1J?= =?utf-8?B?dXJ6YW96Ky9DNnh5QmNhVkZpaERqbDRXSTFuaFY3SHQrbkM5cTNBM2g2YTZi?= =?utf-8?B?MXlkV2JVc2s5b0ZuWjl2WEt6MUxHSkFvcWMybXlIcGpDL2MrTmswd285eHoz?= =?utf-8?B?U1p5WGVTQnNjbFNGUTlhVDVTRlRkcDlnNkJpcHNraTNBT1QzSGxiRG1Vejk4?= =?utf-8?B?LzA1cElkSVhnSzdJVmpWL3piL242OWFmVjlWV0txTVltU2JOSm1NelZnZ0kv?= =?utf-8?B?Nm9LalJ4RDFlNHZHTkFzVXNJZ2p3OGlHaEVJOXV5T2Nmc1F0MU5HVitzYmhp?= =?utf-8?B?WkhyaCszeXRWdkNLVlZ3bEdRL0VJOVZEVGxGQnIxYzFuRko1Y2xnazMycWM2?= =?utf-8?B?R0x0QmU1T3RWT0NwdUozYTg4L3JxbDNqb2VpajUrSDIzdVVtWStjczlxOW1X?= =?utf-8?B?L2M4dFZCUGc3c0hUcFR4L2xYOVc0ZFBrM1lwbWphNVVRNzdlSXNXK3Zrak9v?= =?utf-8?B?YkY1K1lrbm80K1dudUNOOVRjKy9oektFMlV1dWhrdnEwb3Blbk1NVUZsN1Nn?= =?utf-8?B?UmIvTjRLK2pqbU0xdHZVb3ZGb1VBSlo0aGFOQWE4N0NXN1E2RUJqQkFETzNh?= =?utf-8?B?d2VxaGtKNGlsUGpQTlRrakV3OWhWMkF3S1hpRFJpdTFMQ1hLL0Z2a09rM3JY?= =?utf-8?B?LzdzL1JIUDhmQi9VR1MzOEp3SE1NNmYyVjF6Q1hNcWpLYUxPYWU2NldoREF0?= =?utf-8?B?NVErTGxiTVp3SjNld0hDblRReHBzZmdteGc4aUJYQ0g4cFlneHlmWnR2N2Rt?= =?utf-8?B?SGp6YzlwVGZQb0Jmek9uZ0NTaExtRE1VcXBuWHhIMTJ6M3REM01kRVd3TjRY?= =?utf-8?B?Q29yUTJrRXpCTG15RzBMVHZmSGQyc25PT3d4cDM5ZG54T0JoeHpqMmg1QVVP?= =?utf-8?B?QkpXSkt5eVgzVkJTVDJsZkEzSitiakZBZG9tSTFUcWF6SFVjTHgza1l3Wm04?= =?utf-8?B?TFVaL1B4Y2VhV0oydkJRQXZuYkxac2Izek9qbTV6MXJRTUVHRUNQbjhMZk1C?= =?utf-8?B?TEVYYnF3b3lGT2RVVXRBbmM1aFlvbm1UbEd0UnJjcVA2Q3l2YmRWbTRHcjBI?= =?utf-8?B?dFUzS1NtTnlOdEVRdXhpdUtmREVFeXZUUFJNVzAxOEV5eVlrTWt1SHBGeDZF?= =?utf-8?B?RkxwcjFpWjRMRXNBTVcrQTNMRTVmM0QyaWQzQTd1YnJnYXhORnMzUHQ4V1BN?= =?utf-8?B?ekZEa3BBVkZtS0FEcDU5Z1FoSVVCbERxcnpiQkZpQ2orZy80RUU1MHJMZGZY?= =?utf-8?B?QjlkWlg3VDB4azhnM2ZBeWN2YnBEb0lNSmtNOWxNQmE0eVJzS0lLTDNreXpa?= =?utf-8?B?bzVuYTJaOEEwRmU2Q041NEdaSS9XWUxjZUI3ak00WXFWd0FFckt6dllYeEI1?= =?utf-8?B?K0pBVDRSV2ZxR1QrQ002em5vVnROMFRzZHpJeEFYVEJKTEpWMEFyOFV5Wi8x?= =?utf-8?B?VVZNakwxOHN3TlFINWk3M1J5Y05XaFZHSG5SRTMzMXdDZmdmOHVEWjlRREgr?= =?utf-8?B?UmY5K09SSTVRbjVZWU1sMmtuV2wwc09nTFoxZzB0MEZKTWJNdkpXbmkyNHVQ?= =?utf-8?B?K0RmYjdDalpGZTJFR2dtVWVLSUxWb2VkcExjZTAvazU4QUhYZ29CY0dhM2tl?= =?utf-8?B?MGowQmNHbXpJeUNsSkVjMU5ZZkdhemUrVFRqMlFJNnZFbFJFYVZXVkJMRm4w?= =?utf-8?B?KzQ2L1JDUUtjZWtrTThBRy9jNzIyMzRYenBvN2dXdGpYRlRFc0puVVdUSml3?= =?utf-8?B?V0YzNnk0cU1jNkNkN09GdUhqeDI2M3hPcEN0RmRPcWhYOEFwc0owVWkyV1RT?= =?utf-8?B?azhZVVo5T0xNM3lxcE8xOHZWN3dveHVzWFNUeEpyNk9pOUpXWkF2MDhpcnBQ?= =?utf-8?B?YjZLb3NtTFdhc2d5RW9ETklDNmJicFJwc0pMQ3p5RFpSSlN6a0xuTEZyeWR5?= =?utf-8?B?MDlrMWZNNkpidC9KMnZCZTc4OG5QNUlORWw5b0F1Z1IvMEc3d3BCVG9uaVBH?= =?utf-8?B?aDFyMGhSbWY3QmFYUkorSGxYNnRJVXRYOFZIOHUxNHF4YlI3cUJKUWwzMVhi?= =?utf-8?B?eHZINVdsSWRjWjN0ZnRiNCtoQllVM1hSMTBaeUY5Z1RRVmQwR0ZEY0Yzc0NB?= =?utf-8?B?T3B5cFpvMW5NQWxVZ2RTRXNxNnRsRHpVcWwxSk9uc2lUNWpycjNZQ0tiL29p?= =?utf-8?B?QVlIcjNKc2kvdko0ejM1SmRMQWFPVGVHZlJXY3lkQ09qOXUvaURKTTVBQ05L?= =?utf-8?B?M055VnFMcHlGMmhQb3BjMmh1LzY1OHFBZmNCWlljejhDOTQ2U1lNZz09?= X-OriginatorOrg: garyguo.net X-MS-Exchange-CrossTenant-Network-Message-Id: dcfbd3ea-5d6b-40a7-7079-08dec63d3948 X-MS-Exchange-CrossTenant-AuthSource: LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2026 15:38:59.0138 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bbc898ad-b10f-4e10-8552-d9377b823d45 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: C9ZJnqfU3S0WXC3nYx+4JOoolwqZ5zGiDFaoyQuyRNIPEn37RaIchi/OcMZ8p1hJLnqlDwErdCmWBmjVIYzx1A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWLP265MB6167 Implement a generic interface for memory barriers (full system/DMA/SMP). The interface uses a parameter to force user to specify their intent with barriers. Provide `Read`, `Write`, `Full` orderings which map to the existing `rmb()`, `wmb()` and `mb()`. Generic is used here instead of providing individual standalone functions to reduce code duplication; for example, the `CONFIG_SMP` check in `smp_mb` is uniformly implemented for all SMP barriers. This could extend to `virt_mb`'s if they're introduced in the future. It would also make it easier if new ordering types are introduced in the future (e.g. `Acquire`, `Release`). Signed-off-by: Gary Guo --- rust/kernel/sync/atomic/ordering.rs | 2 +- rust/kernel/sync/barrier.rs | 123 ++++++++++++++++++++++++++++----= ---- 2 files changed, 96 insertions(+), 29 deletions(-) diff --git a/rust/kernel/sync/atomic/ordering.rs b/rust/kernel/sync/atomic/= ordering.rs index 3f103aa8db99..c4e732e7212f 100644 --- a/rust/kernel/sync/atomic/ordering.rs +++ b/rust/kernel/sync/atomic/ordering.rs @@ -15,7 +15,7 @@ //! - It provides ordering between the annotated operation and all the f= ollowing memory accesses. //! - It provides ordering between all the preceding memory accesses and= all the following memory //! accesses. -//! - All the orderings are the same strength as a full memory barrier (= i.e. `smp_mb()`). +//! - All the orderings are the same strength as a full memory barrier (= i.e. `smp_mb(Full)`). //! - [`Relaxed`] provides no ordering except the dependency orderings. De= pendency orderings are //! described in "DEPENDENCY RELATIONS" in [`LKMM`]'s [`explanation`]. //! diff --git a/rust/kernel/sync/barrier.rs b/rust/kernel/sync/barrier.rs index 8f2d435fcd94..54c527fdb760 100644 --- a/rust/kernel/sync/barrier.rs +++ b/rust/kernel/sync/barrier.rs @@ -7,6 +7,34 @@ //! //! [`LKMM`]: srctree/tools/memory-model/ =20 +#![expect(private_bounds, reason =3D "sealed implementation")] + +/// Memory barrier orderings. +/// +/// The semantics of these orderings follows the [`LKMM`] definitions and = rules. +/// +/// - [`Read`] provides ordering between preceding load operations and suc= ceeding load operations. +/// - [`Write`] provides ordering between preceding store operations and s= ucceeding store +/// operations. +/// - [`Full`] provides ordering between all the preceding memory accesses= and succeeding memory +/// accesses. +/// +/// [`LKMM`]: srctree/tools/memory-model/ +pub mod ordering { + pub use crate::sync::atomic::ordering::Full; + + /// The annotation type for read-read barrier ordering. + pub struct Read; + + /// The annotation type for write-write barrier ordering. + pub struct Write; +} + +pub use ordering::{Full, Read, Write}; + +struct Smp; +struct Dma; + /// A compiler barrier. /// /// A barrier that prevents compiler from reordering memory accesses acros= s the barrier. @@ -19,43 +47,82 @@ pub(crate) fn barrier() { unsafe { core::arch::asm!("") }; } =20 -/// A full memory barrier. +trait MemoryBarrier { + fn run(); +} + +macro_rules! define_barrier { + ($([$flavour:ident])? $ordering:ident, $binding:ident) =3D> { + impl MemoryBarrier$(<$flavour>)? for $ordering { + #[inline] + fn run() { + // SAFETY: barrier methods are safe to call. + unsafe { bindings::$binding() }; + } + } + }; +} + +define_barrier!(Full, mb); +define_barrier!(Read, rmb); +define_barrier!(Write, wmb); +define_barrier!([Dma] Full, dma_mb); +define_barrier!([Dma] Read, dma_rmb); +define_barrier!([Dma] Write, dma_wmb); +define_barrier!([Smp] Full, smp_mb); +define_barrier!([Smp] Read, smp_rmb); +define_barrier!([Smp] Write, smp_wmb); + +/// Memory barrier. /// /// A barrier that prevents compiler and CPU from reordering memory access= es across the barrier. -#[inline(always)] -pub fn smp_mb() { - if cfg!(CONFIG_SMP) { - // SAFETY: `smp_mb()` is safe to call. - unsafe { bindings::smp_mb() }; - } else { - barrier(); - } +/// +/// The specific forms of reordering can be specified using the parameter. +/// - `mb(Read)` provides a read-read barrier. +/// - `mb(Write)` provides a write-write barrier. +/// - `mb(Full)` provides a full barrier. +/// +/// # Examples +/// +/// ``` +/// # use kernel::sync::barrier::*; +/// mb(Read); +/// mb(Write); +/// mb(Full); +/// ``` +#[inline] +#[doc(alias =3D "rmb")] +#[doc(alias =3D "wmb")] +pub fn mb(_: T) { + T::run() } =20 -/// A write-write memory barrier. +/// Memory barrier between CPUs. /// -/// A barrier that prevents compiler and CPU from reordering memory write = accesses across the -/// barrier. -#[inline(always)] -pub fn smp_wmb() { +/// A barrier that prevents compiler and CPU from reordering memory access= es across the barrier. +/// Does not prevent re-ordering with respect to other bus-mastering devic= es. +/// +/// See [`mb`] for usage. +#[inline] +#[doc(alias =3D "smp_rmb")] +#[doc(alias =3D "smp_wmb")] +pub fn smp_mb>(_: T) { if cfg!(CONFIG_SMP) { - // SAFETY: `smp_wmb()` is safe to call. - unsafe { bindings::smp_wmb() }; + T::run() } else { - barrier(); + barrier() } } =20 -/// A read-read memory barrier. +/// Memory barrier between local CPU and bus-mastering devices. /// -/// A barrier that prevents compiler and CPU from reordering memory read a= ccesses across the -/// barrier. -#[inline(always)] -pub fn smp_rmb() { - if cfg!(CONFIG_SMP) { - // SAFETY: `smp_rmb()` is safe to call. - unsafe { bindings::smp_rmb() }; - } else { - barrier(); - } +/// A barrier that prevents compiler and CPU from reordering memory access= es across the barrier. +/// Does not prevent re-ordering with respect to other CPUs. +/// +/// See [`mb`] for usage. +#[inline] +#[doc(alias =3D "dma_rmb")] +#[doc(alias =3D "dma_wmb")] +pub fn dma_mb>(_: T) { + T::run() } --=20 2.54.0 From nobody Sun Jun 14 11:27:46 2026 Received: from LO0P265CU003.outbound.protection.outlook.com (mail-uksouthazon11022132.outbound.protection.outlook.com [52.101.96.132]) (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 74A9C480340; Tue, 9 Jun 2026 15:39:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.96.132 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781019548; cv=fail; b=NyNSBBX/Nj/4mrRkExCrzUhXrOUY3LsoHLnXBL2ErgN0hkZ7wjXohdwPZ/X4fJ23egkVLkorrKASlKA4ZJdJNIYQ23ncFwrankTS5HB1Ry+56vPHOQSu7g3UsrY2nrZiUwdec/EQMBT1E3mPOvKNxrtcw6CduUU8CWGUfYeE60Y= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781019548; c=relaxed/simple; bh=yfKCyoTjURKZBbetFjk84TsvhfsCoS0zIsnyZZoxNqg=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=TlVWtKW30idd4ztA8J+BXFXpmPhKBafalJwfiVY9A4UGSM1exGUyTdrpxzHemgMe+MeX2teAktEQJQjOoeZlEBKJ+g2jhesCu3A5kD1BZUcX6tNOt0E0ZzccvyUDoXEAYaEe3p+qjuFD24TQd8ah4vc1EKdHv42A0foMPMapN4k= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net; spf=pass smtp.mailfrom=garyguo.net; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b=Oi+RhTd+; arc=fail smtp.client-ip=52.101.96.132 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=garyguo.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b="Oi+RhTd+" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DFBhGz4vUwn2yZ/c8UjaYq6dxGnCM/eHuHTyilri8bXgJvGl3LcrJI/lF/911DECxGBj+0Bf7otjQHPrWeX42fmmqdCcoCXuc2o7KiXnA0KaXgFww2pSh3kUbj9NRoorU0QXrcvdcNk1LKph1O7L6LnhI9mW4Qd80wiL7HWl98bCnk1kOxgb1z2Mt14svEVfeaJGqOyncvsxSpY9UjmrCMbhmk9Ddn+ts2xSmVcK5t2kKGXUGWAzORdr5qAwo/nl8G4ilbSyL2ceU0LtwEvdo0Zs7bUD/wXc2qg9OsNZ1opsxjJMGd7+ziMKOED2eC5RANfpuyHdzRrJGcsB23f57Q== 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=DIH/jeTQaiOF8guY1Zvck6Guk00QdsD7TChSRKy2cNQ=; b=OKbRbvP/d0ICSH5mgeJUwFXNOv0eakSj+4PIWoa7IzT12Nl1GPA/jBVrH8LSYdBtWCDE3lPBvRGCarAb6b4fM1XU+j0YA5fjPqjkNijBhrIC6tNZrrjcpPmogijtrkAp/ZzCGM1s6/DptGVSRL7kgeWD+ajfu8vr/R2XTxrOlj8UZDO5PqLIojwQMBj9F9Nb/+FuSCStvVptKBKuAJ4Pj5eqLL/xdiWpmiZT5xkIiT0VjBJE8pygx54XSt5sY0TOWRqirjy2JjR5MSOOl7LUYRxBC8MbyXU8ERwiShhUbaMNo/8/eqYylgfBsZM60eIxHeRMWI100PU2C4+9OjxbTw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=garyguo.net; dmarc=pass action=none header.from=garyguo.net; dkim=pass header.d=garyguo.net; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=garyguo.net; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DIH/jeTQaiOF8guY1Zvck6Guk00QdsD7TChSRKy2cNQ=; b=Oi+RhTd+anZR7Enk8DMst7hJ8IjI7vOTcPtrl5dTozVgE1UzwuCZxqDykkImhNMyeaAEboDQ0uP1lGdgzlOm9r+NsKCIhvRxdxfP+xuPphhQb4wR/bfjy33E7201qpgYm6J2Z0cvVSewxEZoqEQOMUxDiInzR3w2k/vmfACdcSI= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=garyguo.net; Received: from LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:488::16) by CWLP265MB6167.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:183::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.14; Tue, 9 Jun 2026 15:38:59 +0000 Received: from LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM ([fe80::1c3:ceba:21b4:9986]) by LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM ([fe80::1c3:ceba:21b4:9986%4]) with mapi id 15.21.0092.011; Tue, 9 Jun 2026 15:38:59 +0000 From: Gary Guo Date: Tue, 09 Jun 2026 16:38:39 +0100 Subject: [PATCH v2 3/4] gpu: nova-core: fix barrier usage in CPU->GSP messaging path Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-rust-barrier-v2-3-30fcc48e1cd0@garyguo.net> References: <20260609-rust-barrier-v2-0-30fcc48e1cd0@garyguo.net> In-Reply-To: <20260609-rust-barrier-v2-0-30fcc48e1cd0@garyguo.net> To: Miguel Ojeda , Boqun Feng , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , Will Deacon , Peter Zijlstra , Mark Rutland , Alexandre Courbot , David Airlie , Simona Vetter Cc: Gary Guo , Alan Stern , Andrea Parri , Nicholas Piggin , David Howells , Jade Alglave , Luc Maranget , "Paul E. McKenney" , Akira Yokosawa , Daniel Lustig , Joel Fernandes , rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, nova-gpu@lists.linux.dev, dri-devel@lists.freedesktop.org, lkmm@lists.linux.dev X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1781019537; l=3018; i=gary@garyguo.net; s=20221204; h=from:subject:message-id; bh=yfKCyoTjURKZBbetFjk84TsvhfsCoS0zIsnyZZoxNqg=; b=rZF6nYuMwYTD109dMGRuLUJh/rRTE7jNFtgK1tNRtmhXl6bWTnzhsrr2ST4hb1qEGlZaldChs Vn4vKFf50PmAhM6JFOpL/EvgMB9st+vuACIHd7sLjX3t2b4oF5pDvQ0 X-Developer-Key: i=gary@garyguo.net; a=ed25519; pk=vB3uIX95SM4eVrIqo1DWNWKDKD2xzB+yLLLr0yOPYMo= X-ClientProxiedBy: LO4P265CA0128.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2c6::16) To LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:488::16) 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: LOVP265MB8871:EE_|CWLP265MB6167:EE_ X-MS-Office365-Filtering-Correlation-Id: 9c05f374-90db-4efc-d36e-08dec63d398f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|7416014|376014|366016|1800799024|921020|22082099003|18002099003|6133799003|56012099006; X-Microsoft-Antispam-Message-Info: tszNaShK3r5azFIuFlA9OGuWQ50PDznNKJqRYqarvBVpP36VcZQ4HGhGcZYdYihHKwn7B3nr+0WUCYxE2J8vVEaTJGhGMBsyW2MYYnUO+6rQcUMd4rAqfV4zOhxCGFBPwF6I7G0ZyUjUzR//qsp8SGj4zCua8ukw+7EAh+3ipi9sjSuCnKGAftLU72/F790HMhSxl23AMducZRXid0La8F94CcPLYTeQilGCA7AE9OrabjNIUwK/d/mcYIrykkhfbwEV92xHCC7DbgYmiK7tTZR/Yc4z2YPWOhEFyDOemogUOxlYuJalqRCNSQNAT/WSwU0NbQcrahu0nbgYBBlpUdIgKufdWoWl9UjOi3R/hK8kNZBoGtZNBqgG6goEL1FTpmnEC89kj9Pbp3krr3AT+9hrdRNhynWA2rcGd1jjMZ3krbWATi1a1knTRysVVw7gU79Dlq6PuLKSIwmMulRIg1nzXbjcAHD+e5JrZRy8XWt6nUcxSoGYAPnL31nDmePKZOIzEV+cVn2fofOaN9ra2fXU2ZPn8bA9UUQM9x8XHuVjl35nlReCSv5ztE0kWdAMLDK9Z3O9oaGDtKKGSZp7QXbtl3KOJOIY7sBUFHWZJAONoCnPytsH4qqszgdc4N/9Oo825PsKckJQmuYwepg3rCi1DCYSVNlhoUsi6EEkLM1hvwd+C6NApf4nTsJkHPUAjtuLFpzwLF5TDDI4tHjy0F7wDFRc4TRUWYw9cqTOFPo= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(7416014)(376014)(366016)(1800799024)(921020)(22082099003)(18002099003)(6133799003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OWxvSEJJaDBGNGlXclh0aDY0UjI4Wms3NXZBSXNqSXh6NDVNRnBMMlhRaU1k?= =?utf-8?B?blFqRXo1KzNlV3c5SFF2NG1MTHBIdHpJNGozVEpCbkdsdVN0dThrMWNhcWV3?= =?utf-8?B?NXZxbEFDczBPUEczeTFQejlWYmF2N2VNNytTTERRNEp2a2pSQnM3d1dBSFlM?= =?utf-8?B?ZndQK09ZYUdtd2piTzIrdXBjaTJzdDFZWUxxMGxuNDRkOGlzd0RZR0k2TTgw?= =?utf-8?B?OWZCVFR3L0ErdW9YZHI5MnlIaHFnaHh5N0h2VkdTNGNWcHRQZGEvMUZUaDJH?= =?utf-8?B?UjBoK0dxaDl6OUFZME1td1BPQWwvUi9SSThwbmNQSEd3UFQ5QXByenlMYmZ6?= =?utf-8?B?TytBUGJ1U1hjTDV3a2ptSFRRUmQvVk1sK1JYUThld2s4bUtpdXFCUUc2YWc2?= =?utf-8?B?WU1jMzRRdUlHZXlXdktlM2h0UEkyalNXcTY5MGFaSTU5V2N2Yk1mUVl5N0k0?= =?utf-8?B?TnhzbmZSWmVFZ2NzWmFLRDJQZFFRVXFPS1Y2YzdFODUza0h2QWpJekxabEdq?= =?utf-8?B?a0VVdk4wNlpLK0NYU1VieXowME5Gdmw2eHRpMlU2VnR5cXBEMWRTdkRweFg4?= =?utf-8?B?RnBZTE10ajdVL0ZIZWRyMjJuZnppYzFveVpLK2RKSjdkVEZITWRWM2xWdUU1?= =?utf-8?B?NE04UlFhVGdPbkVpdElDKy9aSlBBbUpSOXdxTUdRaG1SMFhHc1JYNFptWS8r?= =?utf-8?B?L2NBdnBLZXMwRGRNdFFWY2MwelI2Ym5ST3YwLzF6bXpzS0hyd0FISDFma3Iz?= =?utf-8?B?UlRHU29tblg0ZjEza2ljZWpBckpjSlBzLzdPZTFlaVI1TTJOMUhKMU9MYWZC?= =?utf-8?B?ZXIrRDN0cDNCekpVUUVYeXlSTWk1Ui9xdVhCSmYrVE16YkZlSmp4THFxYmdB?= =?utf-8?B?WFQ1ajQrWnVaNnVLM2hMSU13YkNYVDB0aHcwVS9MYndIUFFXQ1ZsSnlrTzlQ?= =?utf-8?B?UStIVi9kZWQyT2dOb2N1aFpGZ1FpaVFYVVdoeklzSnVSeUNsZmlsaXpVUDNU?= =?utf-8?B?Z1lRZ3lMeDZMUktjUUpQZ1hqM2tCb0VjdmhjN1dPd0FWSWV1Mnl1SXpOd2k0?= =?utf-8?B?TG44NFNYZXhGZkEwd0RwbEVpTkljZ1h1blY2U3JBY3FYVCt0Rm9LTHBaaFVJ?= =?utf-8?B?TFc4Znc2bmVRMHY3dWRPbUMvK3dkd2NiV21tbUJpVGlsYVhxYWhXL3l6VXVF?= =?utf-8?B?alBwL0ZvaFYxT2FsTUtPOFU4cXVGUFNFZ3YvaFg0U0p5MG56QzQwcjd6QUFq?= =?utf-8?B?U29EelcxMWFmNnViUWF1aHdKbWx2eE9GeEF4Zmp2K004Z2Z2SElFcEg4QU5S?= =?utf-8?B?VTZ6eE9STFFmdHF5T0pFbDdoM2ZBU2F2bzFOQ2VudGFnaDRuOVZpNnlGQzVq?= =?utf-8?B?aDVoeWhXSUR0ZDlaSWpFSktYTWpjdGMvV0RRbGFWaVg2OW9lOHN0Vm5Jb1hM?= =?utf-8?B?OTkwNldibEpOaTFEM3kySUpaVjlBTUJyWkc5TFJ4bVg4YjBlRVhGenJwR084?= =?utf-8?B?ZnRzTXJEZVoyL2huUnlIbDRBZlk5MStXSnY1OTR1dzVVSlozL3BGMEdEQWRU?= =?utf-8?B?bGFaUWNNT0s4UFMrOWdRcDg1bTd6R2JEMnZwOUtUUGZzc3ZoTXdRZzZNV0M5?= =?utf-8?B?cmxydjhxRGlyeERuWkxlMDloYXMxM3hNWXROcGl1emlrRE9YaGxaUDZUVEY3?= =?utf-8?B?NTNJTXhlczZsYitSa1hPaWhVQWt3RHNSQkpwVUNzWlFycFJ6STlFZHBSK3Nh?= =?utf-8?B?VTc2RWtJSmthOFF5aDZTc0h5VE9RK0Z5WDBnYXpkQ0xLeTl6SC9GcFIwL0tO?= =?utf-8?B?bktEa2FSNnhGcUtEZ3UrWU1yNXp4VnlINjJZSVBOV2EwNEZFL3ZUSGU2SFdp?= =?utf-8?B?OEVkaDFtVGREaDdCcXZlT3l1Wk9mSjAwdUZHZzRxNXgyN3Rlak5BdkdNL05j?= =?utf-8?B?TGc2Z2xBUEIzYldqanNZbElacjVqdEtGOUgwN2pEOHE1alh3em5hNm84WjFI?= =?utf-8?B?U1JTcEpWRjd1clROSi9JdEFPOHM3ZUIrcjNuODNZWTJJSmJLMTYxRGx1N1VS?= =?utf-8?B?cmp2MWRMK2FDc1N4WHp0WW1jUnZvcEdVK2U2ejllSnI2S2JqdmxQeTZNNWk4?= =?utf-8?B?ZGZ4bVR1VzE2TzRXOXMyMFJVTERwLzNTdTVlS050M1BiYytvQlZsOTZJcXFY?= =?utf-8?B?ZnB5N3hHUFJQQXBPWUM5czM0eTFoNlIzdW5OZ0l6MUNMWEtkc29lak9nem8z?= =?utf-8?B?TTdiQ0o0R0doM0w1a0ozbTVVZkVwWXRCdHZCanNrd1RvTG9WQXJrN3RWb0tR?= =?utf-8?B?S2RtU2hGOGRVV1RrN1ZQb2I0VUdRM1VsbVNVNXgrM2VIa1dvQ2YyZz09?= X-OriginatorOrg: garyguo.net X-MS-Exchange-CrossTenant-Network-Message-Id: 9c05f374-90db-4efc-d36e-08dec63d398f X-MS-Exchange-CrossTenant-AuthSource: LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2026 15:38:59.4822 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bbc898ad-b10f-4e10-8552-d9377b823d45 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: pYb0zoTCKYk3sJKV/nOFqf5C3FsjDNtIDfx4/G3629aJdfnT04AQDQty6BVifstmeXlQIZv8OUadNkakrCUojw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWLP265MB6167 In the CPU->GSP messaging path, the code reads the read pointer from GSP, writes the command, advances the write pointer, and then notifies the GSP. A LOAD->STORE ordering is needed after reading the read pointer from GSP and writing the command. A barrier is not needed here because control dependency provides the required ordering. Still, document it explicitly. A STORE->STORE ordering is needed after the command write and the write pointer advance. This is currently incorrectly done after the write pointer advance (and before GSP notification), but this can cause issue if GSP is still processing ring buffer, as it may observe the write pointer advance before command write. Thus move this barrier to be before the write pointer advance. Note that barriers are not needed between write pointer advance and GSP notification, as MMIO accessors already carries the required barrier. Signed-off-by: Gary Guo --- drivers/gpu/nova-core/gsp/cmdq.rs | 10 ++++++++++ drivers/gpu/nova-core/gsp/fw.rs | 3 --- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/nova-core/gsp/cmdq.rs b/drivers/gpu/nova-core/gsp/= cmdq.rs index 070de0731e95..94c2790d943d 100644 --- a/drivers/gpu/nova-core/gsp/cmdq.rs +++ b/drivers/gpu/nova-core/gsp/cmdq.rs @@ -20,6 +20,10 @@ ptr, sync::{ aref::ARef, + barrier::{ + dma_mb, + Write, // + }, Mutex, // }, time::Delta, @@ -274,6 +278,9 @@ fn new(dev: &device::Device) -> Result { (rx - 1, 0) }; =20 + // ORDERING: control dependency provides necessary LOAD->STORE ord= ering. + // `dma_mb(Full)` may be used here if we don't want to rely on con= trol dependency. + // SAFETY: // - `data` was created from a valid pointer, and `rx` and `tx` ar= e in the // `0..MSGQ_NUM_PAGES` range per the invariants of `cpu_write_pt= r` and `gsp_read_ptr`, @@ -443,6 +450,9 @@ 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) { + // ORDERING: Ensure all command data is visible before updateing r= ing buffer pointer. + dma_mb(Write); + super::fw::gsp_mem::advance_cpu_write_ptr(&self.0, elem_count) } } diff --git a/drivers/gpu/nova-core/gsp/fw.rs b/drivers/gpu/nova-core/gsp/fw= .rs index 4db0cfa4dc4d..fae2eae495d1 100644 --- a/drivers/gpu/nova-core/gsp/fw.rs +++ b/drivers/gpu/nova-core/gsp/fw.rs @@ -91,9 +91,6 @@ pub(in crate::gsp) fn advance_cpu_write_ptr(qs: &Coherent= , count: u32) { let wptr =3D cpu_write_ptr(qs).wrapping_add(count) % MSGQ_NUM_PAGE= S; =20 dma_write!(qs, .cpuq.tx.0.writePtr, wptr); - - // Ensure all command data is visible before triggering the GSP re= ad. - fence(Ordering::SeqCst); } } =20 --=20 2.54.0 From nobody Sun Jun 14 11:27:46 2026 Received: from LO0P265CU003.outbound.protection.outlook.com (mail-uksouthazon11022132.outbound.protection.outlook.com [52.101.96.132]) (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 D9F7448C8AA; Tue, 9 Jun 2026 15:39:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.96.132 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781019552; cv=fail; b=A9vp3ny2Bv5YKZ2W5MAisHpdOjY030QogbKmwv7rRJOlxVtIx2ViYlsxcMiZRTfylV64DC1zF/ypZhgcd3xK5jrytBFFNWtt6aMqX0VVRs4RWsq3y6suEVwm9qplSVPimToyCkXmBIYzQgoqOXamImxAiJFCUl558WzGAIt3HBA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781019552; c=relaxed/simple; bh=w4oRsqyqOvP6/Pm0p3EcktDaor4KF82lYT6fPTqd8K4=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=AaWR4DhCUjcg2xOxf/5alwCAErzy3Tl88NvFXWp3CCZl1hEIKpyQikOL181YF7gzebJfMMD/SdUbGnhgWhDkbNeydq779Z83XttHmPuDuzL9yGfX551HV3Alcqbo+ylKEFNwCgL77lnfk5y2ceZvfdqQAPIank0BpvIr+QXYTrw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net; spf=pass smtp.mailfrom=garyguo.net; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b=h0hW3YKx; arc=fail smtp.client-ip=52.101.96.132 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=garyguo.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b="h0hW3YKx" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CYWSrAaJbRv8P/suxSHs3fVSCu1nIxg3Hw1xuLsZRE9LR4XGLXIaUprP6K5TzfNI6VMRjVkzdwwmqzavQzFUZdxORbDQ/aSUVQfFfy9jCSfD9N9Nj4cT0HyuJcPbpYXXiaJYzc4xsmyAr7Rc2P9PF05bv8JvuvWgLf7nCVdtLGqrsPNg/bkUFq6UrXIo44AYdH5REFpwosh4aGazsF62oJLqreJlY6ebgGPf/p5NITJg3rb17kXNBCseoqn4neX0HMVjOSBkR+D7pHprPRWs5x+f1WRItb5i0W45WxHa2eqIRPQ/qM8zXyYm0jvO+d0ER82DiIAhcuibMrODZioemw== 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=1Ho6eQa514E4Jc6fX5ZN59nyGFrcUSabM31KRwmz278=; b=ikDnl4h9R5x6PUIDGcaKdSrsd7LMJS1Cyx8ijzbGUoq55OzvdE8At+sh2SYNIYuq1CmdVwToNp7qlVIDcxOGNKU/f86AYsRftcsbrMTbp883DZRWvqRrmFbcS+Y9CXKcyDrFCHkgS0tXxH6eoYybmwUxcCAs7gaUanUbH+suyZVAv5geuvV8KB623ipJgj7zTtFTMyN5KHMoNIX7Zq6LsbKVnP6e1urTOHAAumN1P7SdrrhKMFTLvxLs3yFxXVzFYHlAKG/upnx2UWqiWGpvecADjs94yQNm8dbkMHyWyk5MIx+KPks5k5yU2ZWvyYXcgR4qK8ixgmrVzFCSWTR8kQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=garyguo.net; dmarc=pass action=none header.from=garyguo.net; dkim=pass header.d=garyguo.net; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=garyguo.net; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1Ho6eQa514E4Jc6fX5ZN59nyGFrcUSabM31KRwmz278=; b=h0hW3YKxtd2xCGB+JnbZFMwFO+esTJ9EBFXWVG8SXABaOLw6UsLZELbuEhGQPiSncmnTpO/Shk0jiGYCIvUZPIHcr03zet5j1UiqDhtdfNLz6JeKSC/k9Xd5JvKPZ4FODVczcCEmFyxoDWozC48nAePE3ZExTfqbaA/BM9YZSBQ= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=garyguo.net; Received: from LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:488::16) by CWLP265MB6167.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:183::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.14; Tue, 9 Jun 2026 15:39:00 +0000 Received: from LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM ([fe80::1c3:ceba:21b4:9986]) by LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM ([fe80::1c3:ceba:21b4:9986%4]) with mapi id 15.21.0092.011; Tue, 9 Jun 2026 15:38:59 +0000 From: Gary Guo Date: Tue, 09 Jun 2026 16:38:40 +0100 Subject: [PATCH v2 4/4] gpu: nova-core: fix barrier usage in GSP->CPU messaging path Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-rust-barrier-v2-4-30fcc48e1cd0@garyguo.net> References: <20260609-rust-barrier-v2-0-30fcc48e1cd0@garyguo.net> In-Reply-To: <20260609-rust-barrier-v2-0-30fcc48e1cd0@garyguo.net> To: Miguel Ojeda , Boqun Feng , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , Will Deacon , Peter Zijlstra , Mark Rutland , Alexandre Courbot , David Airlie , Simona Vetter Cc: Gary Guo , Alan Stern , Andrea Parri , Nicholas Piggin , David Howells , Jade Alglave , Luc Maranget , "Paul E. McKenney" , Akira Yokosawa , Daniel Lustig , Joel Fernandes , rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, nova-gpu@lists.linux.dev, dri-devel@lists.freedesktop.org, lkmm@lists.linux.dev X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1781019537; l=3210; i=gary@garyguo.net; s=20221204; h=from:subject:message-id; bh=w4oRsqyqOvP6/Pm0p3EcktDaor4KF82lYT6fPTqd8K4=; b=0dCL0Qi3h7EpY/GNwEKNxfBVbRRnSLcjQ+mfT+lBJqedBA2G1zOydM8iriyt/veRFsgVnMJDX TJdm3wSpGpQDGYiPlS26Izr1g51sbfF0+eOpccEOzfSz3iVTUg0RPfh X-Developer-Key: i=gary@garyguo.net; a=ed25519; pk=vB3uIX95SM4eVrIqo1DWNWKDKD2xzB+yLLLr0yOPYMo= X-ClientProxiedBy: LO4P265CA0128.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2c6::16) To LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:488::16) 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: LOVP265MB8871:EE_|CWLP265MB6167:EE_ X-MS-Office365-Filtering-Correlation-Id: e4116ddf-693c-4c7f-2f4a-08dec63d39d7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|7416014|376014|366016|1800799024|921020|22082099003|18002099003|6133799003|56012099006; X-Microsoft-Antispam-Message-Info: vs/b4ZeyIE9VZ1MpNxBGlIFHxje3WaGMQgIgOGqPMCb3axfgykPIiSCAGbW/FtCV0y827cetSRvbb/wqSCv1DuZ1D+JiAkPbiI7wMxjptxgYg8zE5XvKMO0LDKtfKJroY+wbv4fIdkk6BLdIZhi510yFKjdteILxcyPEMwttrUWrg9ujqdmd3TlSVB8BpAwMF48F+BDJ/MUw52pnws1VYpFjNXeGqPkxo9BcEDPprm84wiNiluHyPEoSPdycBF12wAmXA3kboQZE69u0A+PILGAA2F3kxo1tOfu8kKIj69sh8/9wtE+j0ATkXMMdVlLvmecE6aI7pdA8ZlryfbxvJaAONQZX3KMEHcyhwWOhJ7kf8PMB9sTNY8Qd/yplj/nX14VsUYlmRdsMc1haIthNvxNZmo2QWvhd7biZmEjkTNT5Hw139pab58mTY9sYvjKhIz+bxRRmWHWMftToGNTRAbZB8fuTOiVAobRI2VHuQcxuc4TbXB0QYzccBdVinD0bvQnFGp8uZD54l5B/fvRUxlj4UIPi5HgyHyI2pznv4/TffWjj4F3nLBxQAY6Qkgbk5am0fwsmCB+F47UhpFVFoz5hagdMWfgEtbeJivQWg4VsDEvaz1kf3f1tLYpQb3p0bAMerAha4cyIQ5f5fQYQ/RfHV8/Ne/TkqaXdULvGKd0WmtGS3IOjshV76xnqXHhuDqUGeWZPJAQc3LmLEn26LC36X33QOCb8mvmVsBFM5Mw= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(7416014)(376014)(366016)(1800799024)(921020)(22082099003)(18002099003)(6133799003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?eFVOSkdQOFhWYUZQSnVpNVFHOUVBRWg1amM0NnR0WTU5RWNjV1Q0Z1JUQWVv?= =?utf-8?B?YXhHb0swNVlZbW9ROHA3ZzV4bDRncUMyYnJoSDcydU5waE5EandXKzJjUFVj?= =?utf-8?B?WWVLbzFCdGV3M0tQSjV0RENrRXdqWXFKYncreGRMdGI3V1Q4Z1gwTE0vRWVC?= =?utf-8?B?UjlZWGd1TnVlR1gzZjlId3Y2c0crU2dEU1BoZlhvU1haSGoxV01rYkFDZ2t0?= =?utf-8?B?UmFaU3Zxc20wTUJ3MklKY0xzeFRLamhxVUVtMVFvRjNlTitOcjJGdE1OdklZ?= =?utf-8?B?WElCYTY4OU9wZGtwL0pyTlNwaUsrWVByVStRUzViYklzcFlGR3lLdnIzcjU3?= =?utf-8?B?SmhnRE5mOFQ3Wk52Zko0RFlsb2lobm5HRzNGYSszMlpsVGlKZFpxeGUwZVls?= =?utf-8?B?YWZJMnhtdU10NThYM1E2eFJCdGQyYmJ0dTFFdFdJb3F3eGZwcjdRejdyS2ZL?= =?utf-8?B?Nnl0c2I1clNkNHJDdm10WHFxRSsxTXh1V0toV1ZyTjhocEFBNjVLdnpMSnFn?= =?utf-8?B?SDYvNzBReTRWektMOUZ6WW9ZZysva005MG5ST0pCQkJJMHgyaUNWbzU0aWM3?= =?utf-8?B?Q3hMU1V4QUY1NWI1eXV3ZXBDdUhJUXFUbnVQQXdLbk1iK1UrQmRLamNPdUpT?= =?utf-8?B?WkxkTHNHaGhmY2ZFN1V3OGV5TGZoUGtyb0J3ajJlNDF6VU1mT0Y1Q0JCZFVm?= =?utf-8?B?cjg4azRBTUhVMEk0WnZya3BxMHZOT2xjQlV6dDlWTDhCR2JKSHBrOGJlMWlQ?= =?utf-8?B?SUEzNFM5eURHOHl6TXQrRVFPdEVjVmFMRHN4T1VRL1RSbmV2am54ckh6Ym9K?= =?utf-8?B?cm5sbjA1a3FrTTBiWjlKdHp2YUpHcUlQVUs2ekFweTBKcHlDY1c0dnRrMTMy?= =?utf-8?B?NkhUdE9DQmhzRU1hd3cvSm8reEErck1UQmtnZ3dMZXlLZ3BwZEVIaWhwNUpN?= =?utf-8?B?NFlIOFZsblVaMUNSdWxySFVhSExodEZtMUZoeUxERUF0VzFmS24zVFZyNVBR?= =?utf-8?B?SXJpY1Z2L0NkLzUyVVJxN2Y0cEpxazVzN3p3Ym41eWpDSUJwYmFlNVV0dlpG?= =?utf-8?B?L2JtWDhyZ2FSM1RCbjdvMkNCWVVnUEVjdUE0blJNOWpadTBKQTJRK1I5aGpH?= =?utf-8?B?UnV2bjBRZW1Ed0N5VWlpcVJHYm13aCt4akNZZUM1UHZmWVdPNis4ZEozc3NO?= =?utf-8?B?UnhBLzNUMWszRVB6M0FBK01WMXh6dE5lWXVTbS9YWVpoMkw2ZFNId1NrZzZX?= =?utf-8?B?czFFQVMvVUpHVjhBWnNzaXZ0LzJhalo4U2lUUjJiUzQwYmdTU29yQkVKMENk?= =?utf-8?B?UUEyOHhkcFhhYWJCSVNsdUt1K24yYmJPbWhEL0JjcXY0RE14UHpLV1M3L0Jl?= =?utf-8?B?SjJsM2RsYVU0ZE5JYzE4OG9HOE04a0xacVBHcnN3QjJTa3N4andCamNlRENZ?= =?utf-8?B?Qy9ST0hZWUN1R2RLdGFqL3ZyQ3h0VXJlNXhRMi81OUlqVmY4cWJBS2htTFNr?= =?utf-8?B?R1J1ZEduQTRUOTlTS21PN2pJKzdraHMxQWg0Q1RTanB3eUZwbmZqYzdpdlVL?= =?utf-8?B?VHY0Zk9CaHdzYkltZjJRSFNIZExPblNyenlFNWo0Kzg1VmREOEpFYTEwTm00?= =?utf-8?B?UG13WU9HVDlPMkFiTjUzREZzc0I3LzdRQVlhMno5V3V4SHBRZW5RbExRVTNw?= =?utf-8?B?WURoNnl6YUtWcGxJMkZwbjJmMFJOR1hkSE13dVlrMUlKOXovM2I1ekI0dXNG?= =?utf-8?B?MVJpeXVkZVgwdXl5S3dXRW8zdm52OTVkdEtKaDZlMmEwYUc4WXpmR2N2RWRs?= =?utf-8?B?MGtwVVBXcEg3bElOelpnZEZIRmJQV2xqK1p3aGZxOTVjUlc4cVJUVzdTdzVF?= =?utf-8?B?T2pOVmwvQ2lCd010ZUhOWjVETFVKZ3BRUkFxekF1cVg1ZjJpaU5qamNxRWV0?= =?utf-8?B?N2RnSmgyWnRDOGYrRm01WHJ4ZVNiempBK2JJcXA0ZFpsY05zK0pyQ0xKRG12?= =?utf-8?B?aExoQ2tvSlVCOFptZEV4NnRZMlZqU2Vaa3JBYkJjM0FMWE03dUowSmpuOWt1?= =?utf-8?B?cDEzODAvS1JmK3p5ZDJKSnhkTXQ2M3l0U1VXUWJsWnpsZzNZUHdSaE9sbW8r?= =?utf-8?B?cENWRnJxR3dMV0o2RitUdXEzN3pNUlIzVnZuYzkyZmxoSTFzcFh2MTA1RkhP?= =?utf-8?B?aFNvbTFGbDFGSkR4RklyV1g4QkRPOFpISFdFNllGemc0cWxUZnlrVmNkT0xq?= =?utf-8?B?SFEyY0xNMGpaWW5jZEMzdjA0MTlpWTMwSjg5a3I1V1dacS9rbnl4bldMblN5?= =?utf-8?B?UnQ5TFNUVXl0OS9ReFlnTTNsK1F5WHhIbXNHM3VNTHM3d01KY3lVUT09?= X-OriginatorOrg: garyguo.net X-MS-Exchange-CrossTenant-Network-Message-Id: e4116ddf-693c-4c7f-2f4a-08dec63d39d7 X-MS-Exchange-CrossTenant-AuthSource: LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2026 15:38:59.9588 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bbc898ad-b10f-4e10-8552-d9377b823d45 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: xRRgFT3iy4QhsJ3Dzj1WD+2QlnfwG/yeH9RRplUJoNtUFUfdkb2BM6VZ+GJP/5U1t3xKY9SlmJVseJMw4pwfyw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWLP265MB6167 In the CPU->GSP messaging path, the code reads the write pointer from GSP, reads the response and advances the read pointer. A LOAD->LOAD ordering is required after the write pointer read and the data read. Add it as this is currently missing. A LOAD->STORE ordering is required after the data read and the advance of read pointer. Currently a Rust `SeqCst` barrier is used, which roughly maps to `smp_mb(Full)`; this however does not order DMA operations (notably on ARM, the generate barrier orders inner shareable and not outer shareable, which is ordered by `dma_mb`). This ordering does not need to be in between read pointer read and write, because it's for ordering between the ring buffer data and the pointer; the RMW operation does not internally need a barrier (nor it has to be atomic, as CPU pointers are updated by CPU only), so move it out to cmdq.rs for clarity. Signed-off-by: Gary Guo --- drivers/gpu/nova-core/gsp/cmdq.rs | 8 ++++++++ drivers/gpu/nova-core/gsp/fw.rs | 9 --------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/nova-core/gsp/cmdq.rs b/drivers/gpu/nova-core/gsp/= cmdq.rs index 94c2790d943d..229d49a67077 100644 --- a/drivers/gpu/nova-core/gsp/cmdq.rs +++ b/drivers/gpu/nova-core/gsp/cmdq.rs @@ -22,6 +22,8 @@ aref::ARef, barrier::{ dma_mb, + Full, + Read, Write, // }, Mutex, // @@ -339,6 +341,9 @@ fn driver_write_area_size(&self) -> usize { (MSGQ_NUM_PAGES, tx) }; =20 + // ORDERING: Ensure data load is ordered after load of GSP write p= ointer. + dma_mb(Read); + // SAFETY: // - `data` was created from a valid pointer, and `rx` and `tx` ar= e in the // `0..MSGQ_NUM_PAGES` range per the invariants of `gsp_write_pt= r` and `cpu_read_ptr`, @@ -436,6 +441,9 @@ fn cpu_read_ptr(&self) -> u32 { =20 // Informs the GSP that it can send `elem_count` new pages into the me= ssage queue. fn advance_cpu_read_ptr(&mut self, elem_count: u32) { + // ORDERING: Ensure read pointer is properly ordered with a LOAD->= STORE ordering. + dma_mb(Full); + super::fw::gsp_mem::advance_cpu_read_ptr(&self.0, elem_count) } =20 diff --git a/drivers/gpu/nova-core/gsp/fw.rs b/drivers/gpu/nova-core/gsp/fw= .rs index fae2eae495d1..b213385c1f01 100644 --- a/drivers/gpu/nova-core/gsp/fw.rs +++ b/drivers/gpu/nova-core/gsp/fw.rs @@ -46,11 +46,6 @@ =20 // TODO: Replace with `IoView` projections once available. pub(super) mod gsp_mem { - use core::sync::atomic::{ - fence, - Ordering, // - }; - use kernel::{ dma::Coherent, dma_read, @@ -76,10 +71,6 @@ pub(in crate::gsp) fn cpu_read_ptr(qs: &Coherent= ) -> u32 { =20 pub(in crate::gsp) fn advance_cpu_read_ptr(qs: &Coherent, coun= t: u32) { let rptr =3D cpu_read_ptr(qs).wrapping_add(count) % MSGQ_NUM_PAGES; - - // Ensure read pointer is properly ordered. - fence(Ordering::SeqCst); - dma_write!(qs, .cpuq.rx.0.readPtr, rptr); } =20 --=20 2.54.0