From nobody Sun Dec 14 12:13:35 2025 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2058.outbound.protection.outlook.com [40.107.237.58]) (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 276FD21B9DF; Fri, 18 Apr 2025 16:20:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.237.58 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744993253; cv=fail; b=S9JPnsLHosuKDviKxicVo6NoMu+fI+QneneQrH9kDtkrdL2pxFtgHdETQD/lTqeIfVuRahKlYBnUCUeLLsDIcTD40ZnU+6DGTsEr6IeSQGjW4NDcpPCYlDrc+H28YjnlGPhoyzYVdyzzy0vW1hiUdkCSQiFkoN4uD2Qvg70+EsM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744993253; c=relaxed/simple; bh=8mvPBLBnX8hYxLA1igFTLQ3Kqg/m41KHzWjUN9Uq+xA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ufXxyvLpilrv8b0sdQ6cMs/zOrvGjsxv3bBlJ3fEGTveqVUdQWSt89Nqi8qkg1LAW7GTGe1TZOJuAxMaKzKx+QB5aKC1dLmFnU7piZiXMDNfn7793GPb0o0K1tqZAM/GQU8ry6sWS5Hcgoep2G6zhfLP75e9AB7ue3rAdnGKgK8= 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=pa3bmmSF; arc=fail smtp.client-ip=40.107.237.58 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="pa3bmmSF" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GveWR5AntM9uklh/DZscDN20oaYPnyuRfJ2PmD920K946PsDg0ClcD6TL0T++j7X661wlxpJdExSMqMZhJUzzoJa+eRA38D0YzJNh3kwL0CLb2k02tropbZzXHJvSKHSROmdNp7eA4xK+jZSsBAZkC+PdV/5umm9rzFqwV42RTDr/3EWdB2Ko9fAx7YxrkUzL2WRfRKrNeLUwKkauTr/s7hBHltwjXEs9aOeZ1ikv43TegL1y/5+MoIXMpOp0zVzZRTLqV0fue4VJ/vbXJWt+FUN8fgY8cg8xrlO/0QKBOhdjN6sTylGWg2U/72/CWkgAgtrVSNh6g7zlR8eWrFe2w== 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=xf6A4icAUxF7bH99Eyn44zlzuJv3d2q4qSWWDEvfb9k=; b=PxndpiboX8Klr5RKNncKxx7wpg94NpHbTOJuqRjdXlzX83tnAVstj+vZtcIqo/upnF9GSr4xBbpJ0sbjjydXYZPfd5EdtF2o3fqfTtXwz5ZQKXIik/pXLxB5mk0OjQCHLbjqoUFm+hRD5ypRcpbBLhK9JxG1I6ZIlys0vEzfpwpH0jdIsRltp0yqTUnEfLXFf830sY/YQ6OU40RRw1qw8SFP8GmRkCz0xMihWk70ntbcpme7LYS+CRTGz+o6Nmu2DaT76DCKxeRpu8PkxAlvEd9ilV9OIWrZzKVNDXsZrQFFZ5P2qRGn2JS4A33brUCjIq+YYqv2Te/3ck5RmwNBIw== 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=xf6A4icAUxF7bH99Eyn44zlzuJv3d2q4qSWWDEvfb9k=; b=pa3bmmSFcaRHe3alhz0Gm/eXvqa1mpr/WIKsF7qG19iPbioOlxpFMowULV89sBRKQA81sovDKQIhZyGqc27Y+lzCk2mybZbL/OzzEXTrrc6ut/q3FwQgKfYTPSxnRIY+sA+0uAzvqUNEIdYWGpfMp/uzRPzyflN0JcPiuf4vGgCZNxFndJQsFyuW2Ro/cy3otmpZ4f32Rf7nNHBN8X7tXqxZVKAMldah/GM8tRHLTHgeCGSyYdL8OzTJez/L0jnRtfNBjKZzYeRE0AYDV+aeEftS8YukdOO0GdFtatuvnzGlfAS57rYFZXBu97RvSZJvShqpww/+4RvPVG7S0dOiuA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by CY8PR12MB7289.namprd12.prod.outlook.com (2603:10b6:930:56::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.27; Fri, 18 Apr 2025 16:20:49 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%6]) with mapi id 15.20.8655.022; Fri, 18 Apr 2025 16:20:49 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, "Paul E. McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , Boqun Feng , Uladzislau Rezki , Steven Rostedt , Mathieu Desnoyers , Lai Jiangshan , Zqiang Cc: rcu@vger.kernel.org, Joel Fernandes Subject: [PATCH 1/4] rcu: Replace magic number with meaningful constant in rcu_seq_done_exact() Date: Fri, 18 Apr 2025 12:20:37 -0400 Message-ID: <20250418162041.2436282-2-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250418162041.2436282-1-joelagnelf@nvidia.com> References: <20250418162041.2436282-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BL1PR13CA0344.namprd13.prod.outlook.com (2603:10b6:208:2c6::19) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) 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: SN7PR12MB8059:EE_|CY8PR12MB7289:EE_ X-MS-Office365-Filtering-Correlation-Id: 5eeda875-b35b-4ac5-1c00-08dd7e94fb14 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|366016|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?RpTDYE9hikjoBz7YG91k9Z7FzgBuiAFL9ahNzbHjpccjb7ZSNPodYKD6rdNR?= =?us-ascii?Q?A63/JUguKho5jKRd9jfkukVHbFmFhjayQY+k+tBUG9KqZeTHBVIZHgCp78/u?= =?us-ascii?Q?AIvq2KBvEUFQ7chGaFyc6ixqmOL9/wWzsoNKwjC+u4/ttsIhSGD5dXAYqJxq?= =?us-ascii?Q?jrisHylUOzayq26BmDsi/F7KA0Ls0dfTNzVh74f6P5FazQWTAq/2Z8wQlMpx?= =?us-ascii?Q?6G0Xy3Z4o6bKEeoIaCkuT6XdquDRxlhKq/LQP6Lt/t99MSQdIjewaEoMlBVO?= =?us-ascii?Q?PYNrtybrfymjnPQ1E/2F4r04gor9ScPskx6jH97qj9syjia0OP8jzCf40v0H?= =?us-ascii?Q?TI98yffMLh939eJbXp4gmVUjFxaTP4WcwZ88KCo/xxOAH8vX+HyIvkyeXaBh?= =?us-ascii?Q?vTvBdFUns04fQG6VQ6twdW/uHPgk0PBAAc7YHf+zkAmQeehm0kFJVCE/XyzT?= =?us-ascii?Q?LLD5szOB56ayw0oayG696/f7qCLa3cHW60z3+18B6vuY5O6lVsOwy3dB8wtA?= =?us-ascii?Q?Y1Jos7UMv+nOX4Zg3DFL3hAi6l8DFuw8uvvgKR0yaHDUVdyC09ebPlDN8rhV?= =?us-ascii?Q?Lx9pc5yIrgTGh/HHkT8R6szhcHEtJwb6xToIR1mmM4ZbcZ3xfCef0YN2+3rl?= =?us-ascii?Q?zAu/kIxRYksEWR+pQRMtZnrbJLoi5h4Z3BLz7YZbzqWsu+KEWVjrQsq842ta?= =?us-ascii?Q?X8Ro2Kwfmn3eOOlEKSHNdLrUdXIsyiRlpZVxa0FLEl0OGQnh6e5xrHJvVEr1?= =?us-ascii?Q?aGBz7LNPzfpiAoTmQUiZmvMHuG/Bv1+Ozl8fykBHHzexSHYsgcecBg/pNUFN?= =?us-ascii?Q?U99SaqAJdY8h4NUJ5FciquDnWR+GzjkewiG5F5fI0gwN9/wBbFyvbrEeyxR0?= =?us-ascii?Q?FaYuAYhCCth6HAJQ3LTqT9IWT3iAbLTrFwUKiQDwqprrGZlMqHYFyAs+qXRf?= =?us-ascii?Q?IGZbxTJsM5YXQ17EFzaCjruWEA4FJZSYpGdQQHA8I1Gwy/p5ru/uXeh19BTk?= =?us-ascii?Q?uowR+YkbTrWQ1pZrSv3T88ZKQJlt9J1CGUKvQ3ghQheReE5JjJo9a5FiDEBr?= =?us-ascii?Q?D5ECXuFUXKIazmv8GrNmzbLt5a+tdANxO2fVtXM6v98WMsgRbZDMZmpkvZne?= =?us-ascii?Q?5bnLaMo02ol7MDic5V5gJfhlUrTpuPiFP8QDFdsLn5X3snjLVEDgZG9SSaMK?= =?us-ascii?Q?+bCf3ZXAubh9UM2T403JniA83wOzXEuZhsli/VrU0/KmlkIgBryPn5/RK1hn?= =?us-ascii?Q?oSX3UB3UqCTkyVca8YuJFQGEgnXWedvw61O0O+O8pZ4YFUUMuyuhJi18VPyB?= =?us-ascii?Q?JOAEB+48kuFSA/wfEUKlXRQYoxLstWCeT7NzQ7zbm0fvSW3sjAeu16eYDIaC?= =?us-ascii?Q?/blvo/tlS5RJBhXr+5d1hc0AHjBgm0z683hFgw32VY5gjiIAiqD5jeRHjO3X?= =?us-ascii?Q?cfa96pi4z2u06tAIwcMXvPG0ywvJPnODTg4H2ZGp3AzZoSkF2Q4Wjg=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Gj74o9hj54cMmT0aB++vyD1ZYDHidDd0/4esnWyK9HqOXB0QJ8l+8emimBya?= =?us-ascii?Q?024WBuQLbW5OzZxsksdvuMflP8fMx9hvXN3xBlf9Mw6xLbvfSKyFBpOjAZOD?= =?us-ascii?Q?dVaCziRGAmpVuPQQo8Er1y0xBC/1RrpFiS3YFIbDoGmoAjTBKRAJNVF5Ydye?= =?us-ascii?Q?N6iH/pKK4Hr9RD54lTfPKQo29aPgvARCgqr1lFlgZ2Yk9SE+BG5iOjYQ2jzM?= =?us-ascii?Q?NCyUc2yUsLlhJopxNSMbBPRm634MZXeeDNXdZF7WPstIJH+J/3bIFfpCFKvY?= =?us-ascii?Q?mzQbP7ubRzzSAytvf9gGTpJNpZeuqV2ghfBiwvBYSrM8pofwgz3wbmuSUwAI?= =?us-ascii?Q?XKCTXKWK1i0H9PS40XSPkcmRPfIqhD5webf69Kl4KPqhpa5k46tWVOofOuct?= =?us-ascii?Q?9JJnPL6KnQbr7ZK41AB/SAj90Dq0if6c2H8ot5AoI31pujJHlXa8yKWoo/EH?= =?us-ascii?Q?Jh6KWqO3kXJ9D1xuE/WDbYgZSz1mHKpBbjaQW7SUAsaishl90GnJop1dkKAm?= =?us-ascii?Q?mEEAqTqvRJbrAZ7LSBk0UiSZM2qzdPXZ5xpIj++KXtxOPvyiJdeWr8LfnQPr?= =?us-ascii?Q?A3gWwNkXej0VMO1JZo46jczvwoUTLFao8h0lZFAg2AwiqD2jdRv7KSg5/twK?= =?us-ascii?Q?CKj1av7JehOLA+XR8JBVhcj5Z18xTLkh5DP360aYS+qEGRiTFISvPsaarf28?= =?us-ascii?Q?hdBb2IKw33HiKt18pAJDqF8WvRih+EKEhA3kZeZalDcbklffiNIog0T2w1lR?= =?us-ascii?Q?dmCBZX9jI/1PQOacrh5uxYgd41DSTs34Jpvnh/By88cnkHKc9rsyxtqbmoC5?= =?us-ascii?Q?bFJtmoZ2mz/DiNXCDXUCG5cMr/z2gguVok+AWAQ+V0KtREP9WFtfejyi7RUy?= =?us-ascii?Q?hl2lt3Mi3Ud7JII0gSnHZlw+6A1NyegNTsIAjaoZEDFqD8MTojFTXr+Q/Jt6?= =?us-ascii?Q?srC0bCSPzqL5XEdE1wvWGh8kxaEBWE7agFyeW9Fl8TVJy+upRPx2R0fhhsVv?= =?us-ascii?Q?qL3VwPjPZCr+J7MwM703sUUIX/qBllJe31P5sP/aE8yyq8EJGeW9iRchbr2X?= =?us-ascii?Q?8gZ7boMZxRVhIXydbXKxgvVLzS6woPgR+wBOnB2kU61udZfsr95WgyrKe4QV?= =?us-ascii?Q?XEzKAmCzH2OZZp6kCCWokwpqK80VLOXi/g8Ps77Tfiy+y0JWORNLGPQ5qX4p?= =?us-ascii?Q?g22dzJ7WWivycTzw34gaBV+rNfKaWoqAxFzYOC6OZEOR8PNFtvrIr73ZIFme?= =?us-ascii?Q?GXfumw0nS+8wS1PJHvKRZ8lo7u7sA0AfIoezWOJya0su872bbcEj1mgIS+SR?= =?us-ascii?Q?PhXnqttnNB8ZF2u0VWn4JLax4SAvp6d4I9kV2ksf0cQBeC6wsZsVuDMYp2jM?= =?us-ascii?Q?2Rnbpw19lZcletnmKVAKswSCJ7kXawKstZA3ZjqSnUgRJ0/9j1VQ25XZecdl?= =?us-ascii?Q?7sKxVA2KdXB/JdgbscgGwFgZdtPhfbmJG8VvxI2iSwS9BPsQy3lRUnaWhIcu?= =?us-ascii?Q?t4rcqepmplzz0D5xMaY3IWxdvYIdfIMAk1N2NwQ4R14xCQAq2pssCcG59s3C?= =?us-ascii?Q?bwSzJvSWH8ZAENEKPjg36n/dfWwnvs2nHQMjn/IS?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5eeda875-b35b-4ac5-1c00-08dd7e94fb14 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Apr 2025 16:20:49.0348 (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: zPLPbivDEw0YfuUYCMUT/sxo8jGYid10WqcsMzLf0fdosXVKmSymugH/BGxDNDB3/Uw9l19P+4hfzqMvXid4DA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7289 Content-Type: text/plain; charset="utf-8" The rcu_seq_done_exact() function checks if a grace period has completed by comparing sequence numbers. It includes a guard band to handle sequence num= ber wraparound, which was previously expressed using the magic number calculati= on '3 * RCU_SEQ_STATE_MASK + 1'. This magic number is not immediately obvious in terms of what it represents. Instead, the reason we need this tiny guardband is because of the lag betwe= en the setting of rcu_state.gp_seq_polled and root rnp's gp_seq in rcu_gp_init= (). This guardband needs to be at least 2 GPs worth of counts, to avoid recogni= zing the newly started GP as completed immediately, due to the following sequence which arises due to the delay between update of rcu_state.gp_seq_polled and root rnp's gp_seq: rnp->gp_seq =3D rcu_state.gp_seq =3D 0 CPU 0 CPU 1 ----- ----- // rcu_state.gp_seq =3D 1 rcu_seq_start(&rcu_state.gp_seq) // snap =3D 8 snap =3D rcu_seq_snap(&= rcu_state.gp_seq) // Two full GP differen= ces rcu_seq_done_exact(&rnp= ->gp_seq, snap) // rnp->gp_seq =3D 1 WRITE_ONCE(rnp->gp_seq, rcu_state.gp_seq); This can happen due to get_state_synchronize_rcu_full() sampling rcu_state.gp_seq_polled, however the poll_state_synchronize_rcu_full() sampling the root rnp's gp_seq. The delay between the update of the 2 counters occurs in rcu_gp_init() during which the counters briefly go out of sync. Make the guardband explictly 2 GPs. This improves code readability and maintainability by making the intent clearer as well. Suggested-by: Frederic Weisbecker Reviewed-by: Paul E. McKenney Signed-off-by: Joel Fernandes --- kernel/rcu/rcu.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/kernel/rcu/rcu.h b/kernel/rcu/rcu.h index eed2951a4962..5e1ee570bb27 100644 --- a/kernel/rcu/rcu.h +++ b/kernel/rcu/rcu.h @@ -57,6 +57,9 @@ /* Low-order bit definition for polled grace-period APIs. */ #define RCU_GET_STATE_COMPLETED 0x1 =20 +/* A complete grace period count */ +#define RCU_SEQ_GP (RCU_SEQ_STATE_MASK + 1) + extern int sysctl_sched_rt_runtime; =20 /* @@ -162,7 +165,7 @@ static inline bool rcu_seq_done_exact(unsigned long *sp= , unsigned long s) { unsigned long cur_s =3D READ_ONCE(*sp); =20 - return ULONG_CMP_GE(cur_s, s) || ULONG_CMP_LT(cur_s, s - (3 * RCU_SEQ_STA= TE_MASK + 1)); + return ULONG_CMP_GE(cur_s, s) || ULONG_CMP_LT(cur_s, s - (2 * RCU_SEQ_GP)= ); } =20 /* --=20 2.43.0 From nobody Sun Dec 14 12:13:35 2025 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2058.outbound.protection.outlook.com [40.107.237.58]) (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 F2D5321C19F; Fri, 18 Apr 2025 16:20:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.237.58 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744993255; cv=fail; b=W/YCJtGO0OumgWvY6sXQzVVsVUW/3JixLgodajucRUgKOoHNikvGuogQUnTkxnWyvn0ce+wFxtB2NPL9vrvHKuZtssFgwzMprLbtRJrhDBwxEsBwR/KcfYEhMLaMyoWoNyHqk5K4NKe8WFTpVkufJIgxVwLtuYvF2/nz4+Ja1/I= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744993255; c=relaxed/simple; bh=L1/IuZPvUtqdKAuVx57AXttu6SfeSMIZ0n9wAA3z6xg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=aS8QXAeh5+N4V0Rx3m5tj4S7Bi6avtst6S/n7qBB8BGZUSItLQh9emdnOzNADB1TTPlNcheKyD+rcWiMv/1Ap9Cn7b1/oSPmwI7UcRYCawzcWBqE/PmVKjt2eYeBZbats14lnSXx7xQw4DUqy56exikpZnOvgEiNK8m9NTQ2xzY= 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=dN5wVI8/; arc=fail smtp.client-ip=40.107.237.58 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="dN5wVI8/" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TOkLDFwpTFnIvn+hoH54gfps5n7dJKc9vtPorKPSXg2CbjozPg4xnZSCrBvGH5PCJTUNWKU884cnvDlGFKkyzdh0XZaWRzjNOiXb4PCd0J74YD+IN2vmI5gYSxAmphqYcyRPZ+BQpnuo6lOQQXZMsP6KK/nWmLOhhcZbEEYX9Njb+VjQGa6/U3lmeAPCmLTboN2fTBOYG+207OJCqB8NGu2AHabsSGwPeUGD6P1IQAtHboGVt90ORmzoNO+j8NfNS0BTZaFGFW1NkfYRiYz2FEJ02sYteFDNaKGdF/69lqqT31UtubgAG0eNaqDdvUYxXGN+Ox0/avbJiwmNOcSPTw== 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=TKo2vQwJ8/X4AfNkPGU6QW7cAxl+DPzoNvzJlZrpwbg=; b=Gw6/ObIErxAGjGBSiKcRQG4wzJHxUsLBh9SE24lp1wfhDw+XO80b+Ca4RPQQcEPYFDQkti1G1FJxwCujPdwhJbGMq7YULOmH0gn8et6Or6ViMIeHjMjQNRladIbzFGtdKJG0ZR8b4nkFgBcryIEYIb/661UtTUEkMXn/iwoMQVKxiNStwjnny3VrgGKvNpSbrDxknkIUtaK7JGlbMOM7vwfw+mj3Q2/b7ilQtx4y7ZwO4ZHHRB8bVrMocVYcbi9BKhGVgbAXmjmkuQnSSBDmph9xqbKn0fiOVfBN/Th2weW3SqaHvZqHwmtJH+qjLnyelCQCXHo48+Zqoie4O6y5qg== 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=TKo2vQwJ8/X4AfNkPGU6QW7cAxl+DPzoNvzJlZrpwbg=; b=dN5wVI8/B8NuSRYgfeFQtEDx2zdkQC7bSqs2qkNNPto9VWSLcOFPa4oG5z/gsbn0MAMDieKC1Sgn9fQGFwY1PdZbNhc+44VfwvoOlNZvvT5q4I4BTOXdKizoAKlakTPWPhz39ybXmJ3l32cqUc+wmWFgEL00mGJ8PXWTY/ir/bpR1BtYhbhR0n49au9+sq+mKRvRZVI/7/gVxVO2UNKDjhWhHRodREA3JY1F2h52OPuzPwo/Jnen28/BRN43k7HN6YYBf3z2mkoQWBakzFcSM8XkGgm2pGSWd9BEoQYFVYtlKN6SxPELoy9Z6RjoNICI69lGwYpCia5zEUvzIzEEVA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by CY8PR12MB7289.namprd12.prod.outlook.com (2603:10b6:930:56::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.27; Fri, 18 Apr 2025 16:20:51 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%6]) with mapi id 15.20.8655.022; Fri, 18 Apr 2025 16:20:51 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, "Paul E. McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , Boqun Feng , Uladzislau Rezki , Steven Rostedt , Mathieu Desnoyers , Lai Jiangshan , Zqiang Cc: rcu@vger.kernel.org, Joel Fernandes Subject: [PATCH 2/4] rcu: Add warning to ensure rcu_seq_done_exact() is working Date: Fri, 18 Apr 2025 12:20:38 -0400 Message-ID: <20250418162041.2436282-3-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250418162041.2436282-1-joelagnelf@nvidia.com> References: <20250418162041.2436282-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BL1PR13CA0333.namprd13.prod.outlook.com (2603:10b6:208:2c6::8) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) 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: SN7PR12MB8059:EE_|CY8PR12MB7289:EE_ X-MS-Office365-Filtering-Correlation-Id: 2cadd40f-f79d-46a0-237d-08dd7e94fc89 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|366016|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?NPQgroSIs65QgbMqMCni1NT6ffZhwycX30t5zMgKeMpE69SSt+i8bLaBcIAQ?= =?us-ascii?Q?9JRK/OtjkTV/2V8x3WrPGFkunGjwOKxYWAyNQ8s1XQc4yB+6rq2zF21xixxR?= =?us-ascii?Q?gz+FuUZsialSjS1KMuB0gSQaiKDG3NV/UgyZYb+HwDSkjQPXzlfqRMoTqyqn?= =?us-ascii?Q?6GC1Dzzy6ncu27Lkkw1NWOg1eoH7Ut8Zqw1cl31ssczOaZD96Vqpb51igVMU?= =?us-ascii?Q?ee1cJz1eekAZcWYHgOPWta+2yfL6TxzU+yNx12SkX/AGW+lATvSfhsy33N4R?= =?us-ascii?Q?WPOIcU9w4J69C+At7l30CB68F8ZNMCX5s2vpSbqGuEXAxQ6sfwJKvq5J5uAZ?= =?us-ascii?Q?kNYwQxXEJMrHshIVaopD9o5SwBkvowUWaR0vR9Gfb0aN2Mpghbt4Ky5s0bty?= =?us-ascii?Q?Uo9eIi1hUMrXrNtOd7hKpQPy8Powih0K57kg/qOUdBJfG3Ss8FjlDcYJziay?= =?us-ascii?Q?T63vIT0phoR4cWaMyJkRY6tgWiGFMkdH/V9za7fM70a8oKvPYzbUH9S4Rdmq?= =?us-ascii?Q?4q8yxscr8QLRlRL4ifqi66Z9WkFMtg0tvemWQFnm+2Un7V/zGbk0i+ZVLfzd?= =?us-ascii?Q?n8xqWz0rdmwRvVLIc3mWlhB+W8WkM0JBF/Xae6u+p4xYfTFByL5ku08FKdbp?= =?us-ascii?Q?2/e+s9wikSBGfsISHYt2vuOTcTiwlKpTt0bT1FD3nwl6EGytepqOo9dMVqEs?= =?us-ascii?Q?Tuq5nnErUmUTD2NZSHYhU8EO8HuQtPxGsUNds/nkxaQcWp4xmbQdz752hTc8?= =?us-ascii?Q?hMoZCAUiwpWduKB/yrwaJzlfDuC4J3GNoAVsNNqn9KMVbtnyvdQodEFcQI8T?= =?us-ascii?Q?F4SGcgArAm7e7ajVEC4eOMcldoKXmpGCXrUykAYXNjfWL0e9lEk2UlaplXdC?= =?us-ascii?Q?iNC+ke1hMTPN7TOrfGXFJ7yuasTz5mIJmeEV0kpstWMGh2LNC4sgO1C5RZvg?= =?us-ascii?Q?jsv33YlM4PrX/g0fJeCn739E6M4SlKgckoKTnWvKwtiRZiFPCXidMescIU2Y?= =?us-ascii?Q?OcawHBpJ3PeZGIqovQL2slX5toS7UqPAvnv9pRx562bln1yBZz8hT8cwBofx?= =?us-ascii?Q?kKL1UXfssJy/2S41n1KWwBv0ler0mqVHfzTJq+jgTEJdH79sSeT2U4H4Gg1c?= =?us-ascii?Q?9unejAcx42AxVPjMO847RT5IUY6nAVArJqwVMeUUote5j6fZOYFuZYc2vX7E?= =?us-ascii?Q?JClUPPT/0P/s0TKQ/gOuufs/6xejJnQd7qLLtrjm4ozPNwLPUtewUJ+4I54X?= =?us-ascii?Q?7q1CqKCCrbZEj4amZjjI1l6IePsLUm0jY5mARE+z/BOVyjAZ99FuVGEiuOqx?= =?us-ascii?Q?h7SrDHIVgUp2VGpjBKCzLfdJWZpk3E+LiK72uDiyG/R0nelyVnmLGu4ci0PB?= =?us-ascii?Q?CU1bUg5xvg2n1OcEdjBqZbhMB/yX6BfXt2anJNDR5+kcvA6XX2FGfujjwCAZ?= =?us-ascii?Q?6me2ATbUKvbk2o71i/hhaJ/3rlzdce9jJCsqCBKwENAiGNtzDB4imA=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?o7XbXz3nNZMGWNK7CLIfH8zTb/iYGvUJ2Uihgl+IIBt2e3pxq+TfqSdg+rXe?= =?us-ascii?Q?FPj3TCIS+m64FIf22e+zPq/DH7+crfV9aUqTRXtgiPU06TUZ1pOFgM8pK7/A?= =?us-ascii?Q?1oHM0iC/kM1WmqPFf649CSdZNb0NbBh8tDUOIXyo8dleUvZJGl61wN3N7Jkv?= =?us-ascii?Q?D2DqDetMWTMmSYzqTF17s0x+mTlXkTSzycHXQIx2Or/pJuM5FbwyL2eWqWSY?= =?us-ascii?Q?tqrzCgAii7wQdzkpUJW2+LpLcAbjMiVPK1C0tvAs/2ZAazv/w3kNbfeS46Wc?= =?us-ascii?Q?PTgyIjkd2/lbhGjuAg3n6dEfjFt7yW+i7ItW0EW6xL5FUA2OIcv8xlWnf+WF?= =?us-ascii?Q?zhOPC2oK1wQGPDq3CNvrgDr04aUKA1Mxl+RLqhW3/Grrux3CkVdlywa0tuyr?= =?us-ascii?Q?s/3BPoYn7a6nOaH1OKtZ+sE//QiRc7r4oUk97crYHNjhKV/7mne577IiC5pt?= =?us-ascii?Q?+WXC4I9XIAF4HkWYbV1dkJhnDv491qdRN/o+2k98vDULCLIpH7LyrEaKctvi?= =?us-ascii?Q?rczV7ZzHID3vHBfPE4WaC4ZO3iFlEGkLTqr96EXWfoYfJEBvaAtLphbxuJlm?= =?us-ascii?Q?lAcyUWn1LIvAgqNUvDAMM7CgK7EJfLmjlI4891NectL4SNFJN9JxSmNBT66o?= =?us-ascii?Q?nG8S/bFl9UMotIcSVY5kcTWBQzWbOCtAXMXlpvPlrZMfoLMFTrIwVa3TlZ4v?= =?us-ascii?Q?5rwBPSADfBMt2gurW5Z362lOd4bfdvVRYe+r6RZKpdE2y8xEMIsV12v5n9pX?= =?us-ascii?Q?zuEjQSmazNxTN6AqMBN7abL2RQI6DNlnQJ6F2i9kDBeAKtUPrebN5mAzzqzT?= =?us-ascii?Q?eMubYsP72RkW/13P8aoNO4efeZ8L2lzFrRKE/4b+UC9OyHc8NayCKuXWzavM?= =?us-ascii?Q?cpuEKiW1Nj5+iu0C/HJV8EZQSf1wwfbhQPy0oQ0V8mcHYe2Mrjbg3ktHsFd+?= =?us-ascii?Q?RmUw1joX1lGzJhbWf/ts2SP7u0pABw0V/4MztgAWM8Cogsj5WIrLAf14Efpe?= =?us-ascii?Q?7OMALhaPpoU0zgHRXJVI9EwLvb1p4Bwz1UFDzXId1LfRKK3N8oVV8gQ9/bpM?= =?us-ascii?Q?AVCUjrcsphgtDIVT5G9t1YKKTIg9+ldSwMN/y6fsDDmmTj6xTHEIwEotvPHM?= =?us-ascii?Q?1+m7CNOc6XjwB1IDt8ovxMWSRDfFHJJTCE1tbr70+ofYHDqeeg7QhofiDL9L?= =?us-ascii?Q?aTXdZJ0qXFlj9ggplCo1FzZ6Di7biERUToSJB5ZJ1Lw6E36/UDJeExnJ5eP+?= =?us-ascii?Q?GJIbsKDugCvkg2r0BZ2w+J3PqiXCNCSAd+RGJPh5VQo9Ys/bVUeLMtOCKSnZ?= =?us-ascii?Q?3RnmyIm30M/5BbjRCzGLEYF9+ZTYU0jSjyZF72nvewGZL/THBq6KM8eAau86?= =?us-ascii?Q?U2QESv7Y1d4fYiBGZXmF9kCcSwjNnxoxC19xxRqLKDWOfL241ASqrLyD86ck?= =?us-ascii?Q?Pv8OCqOXaFdUu1jiEdfE85eVO5378vPSnS3uspcFIQloodOzIZ5fVwQfh5iy?= =?us-ascii?Q?c648hyhmoOyUezFlJvgTNcoTVYRagpdHcnfpwDbvGNJt7GXDVVr7tOXzd4FS?= =?us-ascii?Q?D4YilVO6J7isbC7Sr8wIAhwsaL5TfyNB1ptjCq4n?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2cadd40f-f79d-46a0-237d-08dd7e94fc89 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Apr 2025 16:20:51.4689 (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: YSKRjcN2ig3NAf1S67es1XJy68El2vhucpwvNm9Fan+yx1RFYrWJFsGr1zX8I3SP4VbxykPiiWLeVuWQyK4MXg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7289 Content-Type: text/plain; charset="utf-8" The previous patch improved the rcu_seq_done_exact() function by adding a meaningful constant for the guardband. Ensure that this is working for the future by a quick check during rcu_gp_init(). Reviewed-by: Paul E. McKenney Signed-off-by: Joel Fernandes --- kernel/rcu/tree.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 659f83e71048..6b1bb85b2a56 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -1798,6 +1798,7 @@ static noinline_for_stack bool rcu_gp_init(void) struct rcu_data *rdp; struct rcu_node *rnp =3D rcu_get_root(); bool start_new_poll; + unsigned long old_gp_seq; =20 WRITE_ONCE(rcu_state.gp_activity, jiffies); raw_spin_lock_irq_rcu_node(rnp); @@ -1825,7 +1826,12 @@ static noinline_for_stack bool rcu_gp_init(void) */ start_new_poll =3D rcu_sr_normal_gp_init(); /* Record GP times before starting GP, hence rcu_seq_start(). */ + old_gp_seq =3D rcu_state.gp_seq; rcu_seq_start(&rcu_state.gp_seq); + /* Ensure that rcu_seq_done_exact() guardband doesn't give false positive= s. */ + WARN_ON_ONCE(IS_ENABLED(CONFIG_PROVE_RCU) && + rcu_seq_done_exact(&old_gp_seq, rcu_seq_snap(&rcu_state.gp_seq))); + ASSERT_EXCLUSIVE_WRITER(rcu_state.gp_seq); trace_rcu_grace_period(rcu_state.name, rcu_state.gp_seq, TPS("start")); rcu_poll_gp_seq_start(&rcu_state.gp_seq_polled_snap); --=20 2.43.0 From nobody Sun Dec 14 12:13:35 2025 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2060.outbound.protection.outlook.com [40.107.220.60]) (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 03F1B2222BB; Fri, 18 Apr 2025 16:20:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.60 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744993258; cv=fail; b=fybK9bKbXJ05UXUVMf1WE0KefQEFV7TVLEtTZ5Ze0BOItgmpteFKE7XiI5VvWhuNHBhKrrSVColzByUR/ImpVutP2xbarX1kGSGLAJdJPH8CqOGO2ex0kExkBa4FXFpdCejBekB5CK4aOGmZmm5QVADQpfejGt8zg9+X9eJ12/Y= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744993258; c=relaxed/simple; bh=H95hVklH24R3FlSo9lsaTw7bvUyrzBIfRe7PeltmVOI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ZDD7qgEuTIMjmtWT+MXipQtClYfgrGPgchV71QWn9jpW3zsReqJ/Fxa1lfbMAaiG2JjvU0tOZqdyk6509odEhsd7YSrux1hb52cw01Rf/ddBnMOk21K5GT6cTOWZu1DRdhgqYvNYjIRpHYSHw56QkQ80YvCpY705OwBGq/Ykp/A= 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=cTb6LzrT; arc=fail smtp.client-ip=40.107.220.60 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="cTb6LzrT" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jXFSDnLwDmsBVjSir7JwcLzoH+6Rbwo6Bre1AzWGBsLD/ylQeVdDju34JC6I51RkYaMkB0HJUHylgBKcpIM3bIhJpM3H7fMbDOM3MjWghwXA5Gq4IUNE3cfB1bi3TJxRjAAPZvt8JNAnRAyBR3duIVOcP8GCS3rvh1xXdjZsLuPMppqOBIxSx1x6+I9oF1cHQogQwHuGeushHfy/gbUEi0FE+/2MiFCk384Lki7PXA93w/o9nvww9oEbnbIS4VDBPFWxSJ015MZBNXhBZVmVDBfukd6VYPlAztmehw88naKLlT1gJ+N4VPSYcv1brxETN33yMCeQIRC7vc52tD27dA== 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=mt3wdWcdnkChPtNzKKYPgjGTDNQrKKMKSwzqzP4j3v4=; b=YFgJWndn/NTjfp6pttLolqn1oz3MiJPivzJCkQ3slnIbN4I0NHDwaZJcPMKaxeAc5cV0ebRjbRkz/L5EjRQDeCbcbroKN8cKGTicxjriE6hETP2wEgTQOTa3yR+V3/qVR3gsmWzmkxKFLfrCrQu9Yvc7XCNvLZDgoJbcJAMjdqeGqrzTODLFnm+IyGIqLnX26glQ5W9H+XoAs6TNSujOMmW5RvDPSRw6LM4k3HKJxtpJKVEsrUIfB0DNvIq1Z2wLrzAIltzRN5xqSXt6Uu2MqJkq/iLZOuONyh8TG0AiEhU85FsXG+8vlurdV2cW8pGOTQdTiMv3P1y8DkN0xj9tBQ== 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=mt3wdWcdnkChPtNzKKYPgjGTDNQrKKMKSwzqzP4j3v4=; b=cTb6LzrT4kBatvic2tcjwREWjCQ7dlByTXRBHAe2HPChr0gKEBxxHAKWwc5NhZiPuyVBemjo+LNUYDHPIaIyl1yz3klCSU8BVjvBjCDne4+5bAJozTOJdVSYcwLEVPZUy5zwWhVeEULCclHWnXRV2pjDQxafBncOU4kFEoQ+HGWwJeVLGEPLz5GNGQntetqwsOA+rKnYXMqSqMOQD3MQWJ6EqaSXR4TkO6LrjJ9BFIFl1ZWiYGgz2ZZNTDv7Y9fqLpeEBXGuhXLMvoAS0iHv2NSZEGYFI2/KFPRRQnM6dCydvZQJngwATT+WwluwmISNsOmlw0+z1jAdCVcQ+43Q7g== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by CY8PR12MB7289.namprd12.prod.outlook.com (2603:10b6:930:56::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.27; Fri, 18 Apr 2025 16:20:53 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%6]) with mapi id 15.20.8655.022; Fri, 18 Apr 2025 16:20:53 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, "Paul E. McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , Boqun Feng , Uladzislau Rezki , Steven Rostedt , Mathieu Desnoyers , Lai Jiangshan , Zqiang Cc: rcu@vger.kernel.org, Joel Fernandes Subject: [PATCH 3/4] rcu: Comment on the extraneous delta test on rcu_seq_done_exact() Date: Fri, 18 Apr 2025 12:20:39 -0400 Message-ID: <20250418162041.2436282-4-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250418162041.2436282-1-joelagnelf@nvidia.com> References: <20250418162041.2436282-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MN2PR10CA0017.namprd10.prod.outlook.com (2603:10b6:208:120::30) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) 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: SN7PR12MB8059:EE_|CY8PR12MB7289:EE_ X-MS-Office365-Filtering-Correlation-Id: 595e1720-feb8-4877-f84a-08dd7e94fdcd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|366016|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?K0QjVHvgAe2Ze1xXRy0LxJCRF+BWXdJxH+t8ynQ+pMMo9H6hcjyamHCc2wkl?= =?us-ascii?Q?W8j+TcLUV684UriZXtXGY+VcT5YDP/JDUMMlRGLi8ZBEb+2c2sadAaNHV5GZ?= =?us-ascii?Q?kUH2ne4X/1mk8DWXN2s7lRdZL/04u5jpYSH/slr2TZYSEkwPLpCbgNkyHhO8?= =?us-ascii?Q?IFf+GFe9SLhVDNomvZRd0P/rS8HlRfeQZimu9IZ4Ik9p3cDwU0n8wa5fLgsI?= =?us-ascii?Q?olFcBLPMHckvBXlZ3JCm0RtqyP7BxtwA62WwFpIf9dvrLfjEW0JR/pvqDDuH?= =?us-ascii?Q?/l51wLqJlDrW2Fxs3Thz33PL28Nbpd8WCVTrN8FwllJQNszMbR0DkJRHF2gf?= =?us-ascii?Q?RcjJTzEZjf/60IbUhvuNoxYl3IoI7DyknCkaLlMRas8Rkv2Xm6Y/M9qQQV51?= =?us-ascii?Q?+JL2XsPwP+aG1wMEL3DWYeCj71JsvXNbUQfS5JNciBVpXRiBECQ3YxAtreo8?= =?us-ascii?Q?DmwwTzJJcDIq48V7ve0aywwGNJ47V36SGkWEHZAHmCOR+oZE4W3Nemx22fjj?= =?us-ascii?Q?R/l/uiAfOYP85XGmlM4mBz9ceL7ZVrKHe05uO7+DR1nkgJqFTLUcJFJl4ny9?= =?us-ascii?Q?nn0flOskRUmnuADAfWxsEWN5yE5fPVeXa0Yd+FfLO0KyxSIuLn9eAo1aVu8n?= =?us-ascii?Q?SC/ektftHD9/i9TAANBo7vv7NaIVlgUIVmI/HNAYFJMZX0NcaInOOmLekSf9?= =?us-ascii?Q?hgBLzS/o3D4LmkIMNsxSMaxWUzIyGsyuJJ3YJWhjXrKm730jZsbb+3e7cxnS?= =?us-ascii?Q?2fuwARX0W1iYGKY0XaGU9zGFCH50x2Y2lQa+QjjbSf9mZTHEd8aDE53fvcU7?= =?us-ascii?Q?GsT1VDBgYaWeYEp6Kj8LibugR6JIkOg4uNA/bG/Qj3vamVJOXIqo79z9E3/q?= =?us-ascii?Q?Y3ro/vHYMVOD0RH58NvJ5R3fMjDqNzhNhTnU9TbAwfR5ua9FyOP6F7nQ723T?= =?us-ascii?Q?InGgsLb3sdW8ra0hMWtPqKpuy+IjxYQbbOMVRKeT32G6x1QcVSg+0aPK7gH5?= =?us-ascii?Q?Pm7VVN5GDkpcZM5lUbKpRaLiyMbMwCVuzJmcQySV9I3m41BZf4XL8Y7FWS94?= =?us-ascii?Q?7O9KhtAthrbjCxpCREhWx9iDMI0G+NWnnRh18QcLfWh5PwbwGjqgFY9jvnTs?= =?us-ascii?Q?6WX5KcSlH4whsL5bUXtA6iCsVQK2eNDLqejY1DqQ09U2Gw/YqNEDYuxMR0wx?= =?us-ascii?Q?7g8b5VbFP3HxoN+DUXfb0ZelegLKjM7xa1r9UE/pbKjm02GkfiI9JkAueDIi?= =?us-ascii?Q?+2+kNgIffgLHGiJ4mCF/D9Vp7z2QLAA42Kbj4gNoxS+EXYQYHR3JuZnMMBTE?= =?us-ascii?Q?/msLUag+bzgrC0oLQe/2cJv4F/SSfolEa39LnXIaxcuaY5vUD16OgDAXWjCl?= =?us-ascii?Q?7ZUG6XFXD0D6NLgIJlr0d+vcwuMElgsrFzEHfQ5SHc8QjI7QnjNonkXQP2wt?= =?us-ascii?Q?MI2eqYNB+VKmui3Ynf2xG2uiH2gLVXwHJ5tyQwdS7y949G0T0JkJFQ=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?DieuFv3zqipa8n5knwcYrG8cO2i9FgpPCrrf0fSJamqRR/2CsC9kRr2snJF+?= =?us-ascii?Q?gzXeka9El0H7R2kUt+VvuaMgiIiGXd/CZNv4oT01s4jqcWnGO5xEzNck18Go?= =?us-ascii?Q?ICczIAnDSsisnssq1StE/XPvSGwLrxw2qzsNU3/QtDEVsJEvRxfocEIfeaq8?= =?us-ascii?Q?eUBi/TshIQaZxMLN20c+9La9FdGwlojZ1RvMS0gmRCNQYkGWCkSZbpeR1AOz?= =?us-ascii?Q?y0yFH6qoDATwzEx2s3A3sOKh/Wy+OcN4TAwjGkQ4NIL2p+aJnsmrSGhnRKq/?= =?us-ascii?Q?2c8Tco+oUlsZ3IqfevPmS9U+Xcgz38wMCaSB+NP4vPGvLqhEuuKp+57PhEhl?= =?us-ascii?Q?lWEb+wgTcVO3a9rGuc0t2dVF6ncnLxFlSFYjOID53thIqY7LFAI2TNEr1Sw4?= =?us-ascii?Q?7OIkXKDXDDuuZlq/OrLbB+hUw8qvPfTC2dRZs24hhGwEo7pGmrUPdPcJNkly?= =?us-ascii?Q?ScSe47hRa4MxF9t8XIS/moQLPPOwdJT3DSFNZUE0NjU46KxKlLsbXWROJE43?= =?us-ascii?Q?N7VZ2aGqC07CtTtrQlZeKm36gwe6SIm9SuevK+zW5MDlJS0d/KeWOdCMmIm2?= =?us-ascii?Q?VHNaTGy58p9ayOFBC0Exu6k8NbLdMJcYYTcjHVuUtbU55Z3gDd1QYH7H6xkI?= =?us-ascii?Q?J0AJPONZIITHcQ5QOJFhvqNJvZp9OimCdrIPfDuUiAzD2uTMeacTkO6YFhJu?= =?us-ascii?Q?AzaZ03AChfm/a4QWVnXnC1X6PqE+XVmKd6F5HXObQBIEPIUUe5qZbLj1PFiK?= =?us-ascii?Q?aqq332hZjYB567HrniKjU0/2Kcy8EkqZ6OwGMd7JDNGkbPCK9wA6qv/UKhdV?= =?us-ascii?Q?1n3Ub8r5ovPMVaCJlFgdZDnVT/R/lEo1Lpa1QZ+co6mfFNA9uIVv5/DYRdgm?= =?us-ascii?Q?cb4p0cMpKp6O8xjGr0c86p+f8zMyOoPai3PhJeizE5+WRcp3WOglJJugqm0L?= =?us-ascii?Q?CAtCCQweolDT73SsCOZumEPtj2uIr3559IS9Jsdj5Jf4bSjGcJ1HX+Yw57ae?= =?us-ascii?Q?yzDu4GpV83sT0rFkaevP1ghPvAJCpRZSpSIdpIjpMZFFM4x2EwZ/k6dFbdFU?= =?us-ascii?Q?sAF4byAurxR3BYF17acx+hUw0CkRX3d7pyvozFOis68qfwTQKrNmJc6w4xil?= =?us-ascii?Q?CjotXkZbdI0PVzLbntnr5Dyi6/zlpcN1pGIKXsCN+R7h8sxkOxEpuP/NhVjO?= =?us-ascii?Q?BcDvruyA470+niVrR5H1VZ1OhlV1uN4+NImci/+KpaF3a8dbP72kQErHOYW2?= =?us-ascii?Q?TlC67jesTyq/ScKpVcxL910Xl8h76A7UY+4Swm4g/BatK3zpRJJplf5xkFef?= =?us-ascii?Q?3JbBMIUkHRE820oXJU0AARfAW3hsxo22Bl1J0+yaH9xpMoFY6BSZexd+JkrQ?= =?us-ascii?Q?QS5s8lLX+CtoL3RcnmBdwz4H8dAOB9k8092wjTM6TqBFU0qSryoJBv2pdwIm?= =?us-ascii?Q?llT139VxgB91kVvnuqOCmK4NDXVFnIgUtQP8n69KWul2BldmylEamvSZM4+0?= =?us-ascii?Q?Vu1s8Y8H1PuXvfX4MmSDCAsyh1W3woEgZuVb4oAhA7bbUfGQVlfgkedbjxAp?= =?us-ascii?Q?yFFOfsFUdXrs/oSTn56cHXGyPLKOULZgO/bKb7gg?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 595e1720-feb8-4877-f84a-08dd7e94fdcd X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Apr 2025 16:20:53.6187 (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: Y6ult6uh0hglAgSaoy/UsiKr/dpwI6lGl98A/wV+e9kzHCKE8YMtxW6RVOqk8NA9x6TFFolTWJhq3sxUyS+FSQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7289 Content-Type: text/plain; charset="utf-8" From: Frederic Weisbecker The numbers used in rcu_seq_done_exact() lack some explanation behind their magic. Especially after the commit: 85aad7cc4178 ("rcu: Fix get_state_synchronize_rcu_full() GP-start detec= tion") which reported a subtle issue where a new GP sequence snapshot was taken on the root node state while a grace period had already been started and reflected on the global state sequence but not yet on the root node sequence, making a polling user waiting on a wrong already started grace period that would ignore freshly online CPUs. The fix involved taking the snaphot on the global state sequence and waiting on the root node sequence. And since a grace period is first started on the global state and only afterward reflected on the root node, a snapshot taken on the global state sequence might be two full grace periods ahead of the root node as in the following example: rnp->gp_seq =3D rcu_state.gp_seq =3D 0 CPU 0 CPU 1 ----- ----- // rcu_state.gp_seq =3D 1 rcu_seq_start(&rcu_state.gp_seq) // snap =3D 8 snap =3D rcu_seq_snap(&= rcu_state.gp_seq) // Two full GP differen= ces rcu_seq_done_exact(&rnp= ->gp_seq, snap) // rnp->gp_seq =3D 1 WRITE_ONCE(rnp->gp_seq, rcu_state.gp_seq); Add a comment about those expectations and to clarify the magic within the relevant function. Note that the issue arises mainly with the use of rcu_seq_done_exact() which has a much tigher guardband (of 2 GPs) to ensure the false-negative window of the API during wraparound is limited to just 2 GPs. rcu_seq_done() does not have such strict requirements, however its large false-negative window of ULONG_MAX/2 is not ideal for the polling API. However, this also means care is needed to ensure the guardband is as large as needed to avoid the example scenario describe above which a warning added in an earlier patch does. [ Comment wordsmithing by Joel ] Signed-off-by: Frederic Weisbecker Reviewed-by: Paul E. McKenney Signed-off-by: Joel Fernandes --- kernel/rcu/rcu.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/kernel/rcu/rcu.h b/kernel/rcu/rcu.h index 5e1ee570bb27..db63f330768c 100644 --- a/kernel/rcu/rcu.h +++ b/kernel/rcu/rcu.h @@ -160,6 +160,15 @@ static inline bool rcu_seq_done(unsigned long *sp, uns= igned long s) * Given a snapshot from rcu_seq_snap(), determine whether or not a * full update-side operation has occurred, but do not allow the * (ULONG_MAX / 2) safety-factor/guard-band. + * + * The token returned by get_state_synchronize_rcu_full() is based on + * rcu_state.gp_seq but it is tested in poll_state_synchronize_rcu_full() + * against the root rnp->gp_seq. Since rcu_seq_start() is first called + * on rcu_state.gp_seq and only later reflected on the root rnp->gp_seq, + * it is possible that rcu_seq_snap(rcu_state.gp_seq) returns 2 full grace + * periods ahead of the root rnp->gp_seq. To prevent false-positives with = the + * full polling API that a wrap around instantly completed the GP, when no= thing + * like that happened, adjust for the 2 GPs in the ULONG_CMP_LT(). */ static inline bool rcu_seq_done_exact(unsigned long *sp, unsigned long s) { --=20 2.43.0 From nobody Sun Dec 14 12:13:35 2025 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2060.outbound.protection.outlook.com [40.107.220.60]) (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 BBC5222257B; Fri, 18 Apr 2025 16:20:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.60 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744993260; cv=fail; b=ZCimN6eT6SnlaRgguBBJghSaaNxcjQNsw1TIu8i+MDpDGPdtPDnedsfSwRik+W8OVe5/Y7OTXI8Qm+DXJ6XTbSrHT4WHsWVGDHem1lkeFXdE/gj1hpQIOsr6aOZ8+XuGpz8TlgIwrIpUSNjDVjgnY3JrDYfQ44/s7qPsL70gif4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744993260; c=relaxed/simple; bh=RQKUPUQcwDm4EGQ/QtUESlr9/0zsNp9hGnst96D4b94=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=tLEKsfv3I5PYu/i7Vbo0waJG1aCHBH4zkKmz7cqt1j7GLGjXI/O9HStlFBzCTKkRtCa9mHGKL/hvgBSspp9bKbYwRZ+dE77N0n5uBJBHQULZ31a0uOTomXeGlqdidGirmTagmhiy+nGLonmzBUZ9WyXeaN7TYES8Bi6zUinCiow= 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=OVcRbqOY; arc=fail smtp.client-ip=40.107.220.60 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="OVcRbqOY" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YW9OzAPWWZ1aQU2ZtCF6WL9FherBD50bFpgFQNNc1OlIJZw1A/LO1NdUvAw7q2ZlfJkGvtoAhOLHQ/r7cXXgzgtFW0ofEaYsZqcDlUeD7KgLqUhJgQdtaNMws9c5LUWqerlvzuCYgM0q02XQLjmIPWE0h3uSa6cm9RnuhXI2CxmHnLMKjalmD9oi+ESsCclLAwvMtn5jNpLDrvsjcrxE1K+AET0r5hFgi2jCr5SCFeiKb2kMG1C1K44W5tJPaTZ4e3EcD3bNR7XBKiSitucLYJvVFJNDQsUpcRskCGkXHzCUdFywj3LLZWNi/GVe4oC3E6N3SKG5U4e/av/5kfoqMA== 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=uEgHhgyC5sJGqOplCWQAccBopd1m9KgkxQQ8aSAkW6c=; b=NN8UN5OCXa+RSKombFbSIhw1vCQfoIT+pgLmeGtsakjTG8reGid64Wwr+HXftx+mNHsgW5cmeokw+uEHpnvdNZG6NdxJsIbkdmsRTI/PM/DangagZEsAsLJ3G0lMqDOSn+XGHknJh+bmUbg00kor0dxhelnHCw++JdaNMqpL8nIF/5A2YEYnjW2XPZh+uyNXwT5ENi/ol2KiC4BsaBqPwLZGozuQ8IWg/qFeoX0SAUw/OEg4egFRrLK0PBhyHnvqe/S5/1LDh2//oH4isi0NqNk2GfC1xg+3g9VA1OYp33urfzGP6LIooWpdMO4iyQa9RB5OGJZv+Fm2GTErOpSYJw== 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=uEgHhgyC5sJGqOplCWQAccBopd1m9KgkxQQ8aSAkW6c=; b=OVcRbqOYnXK6fmOAYtQ8ko8TFSpz/2nUYQJwC7vT9t0CE2uX83/pD7C81hGiiMeW79yFcm4n+0gYnIfVOB+9n3T+BOX7+WPAugVYkEsRsFcPlMTHXBiv9vrf8QleAP6JUIGOUhC0g3TMOT6y+ANeii/RJK3IBUKGmVq5gUmCogcVDoB6zKKi8xtDW3z+KwgCcgbjsUK3k6nPnfsKx/1874qTfm6eqiEZt0PEROcjJC8IpguvLPuKe+6z6xzj9T2Gy10a8q+0wfM4uO9YBjV3MFNKgGbjJCyvYYwsAJ3JgruOvz5iO8XPKTdkQZ+KzGmY5ie6Ava6yYQ8Bvkl7UEsdw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by CY8PR12MB7289.namprd12.prod.outlook.com (2603:10b6:930:56::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.27; Fri, 18 Apr 2025 16:20:55 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%6]) with mapi id 15.20.8655.022; Fri, 18 Apr 2025 16:20:55 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Lai Jiangshan , "Paul E. McKenney" , Josh Triplett , Steven Rostedt , Mathieu Desnoyers Cc: rcu@vger.kernel.org, Joel Fernandes , Neeraj Upadhyay , Kent Overstreet Subject: [PATCH 4/4] srcu: Use rcu_seq_done_exact() for polling API Date: Fri, 18 Apr 2025 12:20:40 -0400 Message-ID: <20250418162041.2436282-5-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250418162041.2436282-1-joelagnelf@nvidia.com> References: <20250418162041.2436282-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BL1PR13CA0359.namprd13.prod.outlook.com (2603:10b6:208:2c6::34) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) 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: SN7PR12MB8059:EE_|CY8PR12MB7289:EE_ X-MS-Office365-Filtering-Correlation-Id: 1c6ddd3c-b5c1-4fe9-1d4f-08dd7e94ff14 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?4NZjqGTzrl6T8qJRSv+g59yMdR6NxjCO1b6H3mfNl9UCGMJFLOszlNb04ofR?= =?us-ascii?Q?7FNhOdrDJCu2O2awtnytC5+GqTcCTgbocq8tHOXXXGQa5Daa2ZYtlLw8NRo+?= =?us-ascii?Q?wP4LmGztFElBeqjrMteUqTpNGGW6kPACRGpKpwMSnw6WKTYBNhly4oP4hPSA?= =?us-ascii?Q?ey1VyRfqBOVhrJWFK7HSJOZ335EyuoY951KAG64L54OvhLSAy632MwdEskIo?= =?us-ascii?Q?wsWJdCvphb6Sb9XtNK3YpH5CgEiJZEG81O/c5b+c7+hOWS0wZYUUQcsf4pxi?= =?us-ascii?Q?5nJHjY9Wn03w4Jv3xI4vY7TcNuELDdBfubdZXrsjJ6A6BtkVdGmax1RvRHqH?= =?us-ascii?Q?F1k/hLqTVjEfnT/03258gU9AKm854aTnYzw7HP7QplVSJB8+5e3UoyWlyJDM?= =?us-ascii?Q?WuEbwhk5sM3RvkfpGss3KhGx36k6K2IWH7SivN0u95ilfFqg9NifLTOtejsP?= =?us-ascii?Q?xun7IzF0DqY0MCAz+mMvAfCiQPS2gsmS5aacRagAZ1J1vH4h2hxVAIbqE4zF?= =?us-ascii?Q?rjidiS+w4CAe4rgDRhLBX5u4JEMgmuxkgporRDZtZI8fR4YkJ5tmjftSPTzZ?= =?us-ascii?Q?u6bIJln0Mdh0eQKMR3Q5fsFRc2DF0mauKTAhJm5bMeRqqvkQkAwYPE60FMu3?= =?us-ascii?Q?KPJZ/B37iy942Ti7ehpnjVz+KxnPQxEELAAoiqs9BsQ1vvPjaq0lUtSQxYyX?= =?us-ascii?Q?M/50X39NPcEeEf4DVTxK0t/TdTBY76JQNMc9dsyWZ4NvOp+MrowmqbFjuCW+?= =?us-ascii?Q?0/ChJnDybXibnPDHXXJVTEJpY5AgmRcW1r58coyCvAkQvOd9ZZV0S4v0xz82?= =?us-ascii?Q?MuZmFeMsRj/VexF9IbzY0WFoV7KWIektErOy3A5dG7IJfofZ1nVxVYpEHA/v?= =?us-ascii?Q?OV3J4jYwV5ABLMEdB7tvx+Eiq/XFAf7vibYs5THmgI7w4axWmWqs+ijJFp/m?= =?us-ascii?Q?XL6nB+y8O1PHntPuVBSheIUzZRiR4Z6Fb57O1k1IfOcq7LL9hWbf1saRfMk2?= =?us-ascii?Q?SP8ScBPg8UEeS2h+HHbrDdaUnGXWz06kGa3ivFMUcqZxE/5EhXs83ly+OwYX?= =?us-ascii?Q?xUvQXwnAtIm8uSBwnZC2OmWkY7BEpN0lyAu0qgSHn4kHMP1SQuy8TOWlogKn?= =?us-ascii?Q?HUBQ9WPi9A7thSHGISzgMCWxzJGCPcJWRZhHWvyOWmrQcFRhAwMqsdDPiPPM?= =?us-ascii?Q?0tnUMAkzkRA1R7WhUkJs83Wii27S1dqD/6dJlxTituBUgnNAd5tJJfDS+cfH?= =?us-ascii?Q?WGq1VXhqODN71qQs+cUZKCIzB3UNYdf5EwTPgxkgEc44eSwCixa6Nx/Fng16?= =?us-ascii?Q?09l67RGrh+ZJOWRS53l+t2f9tprx4Z9eCkrJjClZmkKuMSoDWMmkn82xWAh2?= =?us-ascii?Q?ehmREvPLgA8ZE79DmOChIGMILnaRZ7h9YepZnbdl+8LVqq6/GvOj5zagpRrM?= =?us-ascii?Q?5JVsmi3lv5s=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?EJSiCdUHfwuPgoeWRspdDbFj+oHBfDnAQAPSIT87g1Jx793cS879jnsN71Tt?= =?us-ascii?Q?5sUDSQJoTe1P8VRUNppl0HAseNgXm7wKbzU95gcpvircneg7yCF0mUoSkm7O?= =?us-ascii?Q?lDryFk5cMi0IqNLulWrNST7wLEJ5ecwI9sc/aTF2IkS8XA2tiMSNx4GPe2WR?= =?us-ascii?Q?mrxgO+NSKax5u30JJ/DhpYtOtKpYMT8D6+LZKR2pWTOis/Ddh8MMt1le183S?= =?us-ascii?Q?rOJFjis6bPTeSyVq6WW+h0qOQmp39lhH350N6DPN0j4o55f5gytceONeTJCl?= =?us-ascii?Q?MqZQN09IB1+aIJ6Wihm5NC/nUKB9xK4nQLmzOQU7ZReLHDyjftxXBfWVWjo0?= =?us-ascii?Q?rsEuXbqrYIBVe+fs7aS8KD9+pzDBGVw617T+yWRMIzA4K5Wlq6RqJLTbtpbt?= =?us-ascii?Q?l+8vlqwzvNSHwK/BP45T/vv0ohytyYlxZBsvTyWXactAEWdxUoMz8h1ZoJIn?= =?us-ascii?Q?pSzAjyaMc6wMNbRdVK/9CM3QqI86PdL2lwmgwV/Cknoop3iqOIl/nhlK7Zbl?= =?us-ascii?Q?HQHxgUxCwuXW7A8ekuMrPfEhGoTYE1Z9hFV7g6AUjc/iXRWZHkQj/pG5YViq?= =?us-ascii?Q?f2MlQpeNp02ZKofAw8U2LAT7bAOIS+obQEodOQAvJpbTk56QvwpwV01nlCXz?= =?us-ascii?Q?/UKk9zELNkmKyr9n+rHrU33VRF57cCkiw01jAyyT0QmQkKPBEYhN1AR5pYz2?= =?us-ascii?Q?b/Qneacr5hhntA88BMi//QN3pcWQtRlMZ4IE2TrUsFLMtTXsYSW9BUrziEQ2?= =?us-ascii?Q?BvYc7OIYHN9YoLapZudoZq6Og5fVSGb54h3zhbYFJban9zuxotuiMLkeuutG?= =?us-ascii?Q?TdRDvNiyoHDdCI99qt1fGk2WFfmWPYVDFv+6u+5nMmvI/FVBj7q8NEPYg7/x?= =?us-ascii?Q?bC2SCyUfz+dY0/pgBxUrHtfwrp/VJEWkA0YfUHssJeCPuLJUZaqCwJlfqHnf?= =?us-ascii?Q?DNUNFm8Z1II+NPTdHUrBmWT1vYoyFku7XpK/MN7Hx7kOkzBSm0t6QDriybjx?= =?us-ascii?Q?2lwZ2GyHmn3w7JPdl6OKcd0kxwjKYjyb7w96Emin830BimeViCmnqYitma8K?= =?us-ascii?Q?Y5ytgD5wqWbAhfYM6LPBnGreh2jDAvb/e102soACZifzj+jnD67zjY55Qgpa?= =?us-ascii?Q?gMcaP+FbvxkEs4dJRQdwzJCeYHNH7MOswW4NXSdv9E7ZZJhlCQS52HU8J84V?= =?us-ascii?Q?qA7XKU65dPNzQhsfTV66UaZwocz2bAzuvAw2UfvuZqpG+4dSBSYUv1s8two4?= =?us-ascii?Q?7tL7LAtxD0BB6qEChvBKoSB+7JbG5/pT8eyZYAwasWM4j4aquqbusSn77zxE?= =?us-ascii?Q?9iWXoKjBVLUpWpi60Yr8SaJYn1m+XUOu3zVVYpogroPzpA4Q4xcERh1MIIA4?= =?us-ascii?Q?zFvAb0z9FP5b+q1hMPju0aNsAXVFW2aVopnIHY0UYBEe4matLL64oUEwaL/7?= =?us-ascii?Q?l1KXTG5mXPyID/zObQMmiXqJxMhD/JtHGrMMjpmCSXri4yo2ZdEGEhFJbtCV?= =?us-ascii?Q?HxC2VWHWzP+zAgym0pL8RzhI62w9USzrDKQl1eq4mWDJ2ynTyzr9zLWyaJU0?= =?us-ascii?Q?8ncaOA2e2NwDRmq4/RdXc4VnxKAg+sJtqyQVAnum?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1c6ddd3c-b5c1-4fe9-1d4f-08dd7e94ff14 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Apr 2025 16:20:55.7283 (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: RMBNL2jVRpjUv4U6vUws4KqABN9EgnjhMqWX58XiU6q/M8Vesdoeo9y6rV/84RFnojgU78dLQkcnqLJyqyL0CA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7289 Content-Type: text/plain; charset="utf-8" poll_state_synchronize_srcu() uses rcu_seq_done() unlike poll_state_synchronize_rcu() which uses rcu_seq_done_exact(). The rcu_seq_done_exact() makes more sense for polling API, as with this API, there is a higher chance that there is a significant delay between the get_state..() and poll_state..() calls since a cookie can be stored and reused at a later time. During such a delay, if the gp_seq counter progresses more than ULONG_MAX/2 distance, then poll_state..() may return false for a long time unwantedly. Fix by using the more accurate rcu_seq_done_exact() API which is exactly what straight RCU's polling does. It may make sense, as future work, to add debug code here as well, where we compare a physical timestamp between get_state..() and poll_state() calls and yell if significant time has past but the grace period has still not progressed. Reviewed-by: Neeraj Upadhyay Reviewed-by: Paul E. McKenney Reviewed-by: Kent Overstreet Cc: Kent Overstreet Signed-off-by: Joel Fernandes --- kernel/rcu/srcutree.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/rcu/srcutree.c b/kernel/rcu/srcutree.c index 9a59b071501b..48047260697e 100644 --- a/kernel/rcu/srcutree.c +++ b/kernel/rcu/srcutree.c @@ -1589,7 +1589,7 @@ EXPORT_SYMBOL_GPL(start_poll_synchronize_srcu); bool poll_state_synchronize_srcu(struct srcu_struct *ssp, unsigned long co= okie) { if (cookie !=3D SRCU_GET_STATE_COMPLETED && - !rcu_seq_done(&ssp->srcu_sup->srcu_gp_seq, cookie)) + !rcu_seq_done_exact(&ssp->srcu_sup->srcu_gp_seq, cookie)) return false; // Ensure that the end of the SRCU grace period happens before // any subsequent code that the caller might execute. --=20 2.43.0