From nobody Sun Feb 8 14:22:18 2026 Received: from CY7PR03CU001.outbound.protection.outlook.com (mail-westcentralusazon11010022.outbound.protection.outlook.com [40.93.198.22]) (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 D91C52C86D; Sat, 27 Dec 2025 00:12:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.198.22 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766794376; cv=fail; b=kOkHAlvdm/gRY4LuDWtH6OAXII1dQqqY/sNBA/6t7ZCvtsXg45LmdQZJHrllEFAo4lvOL1jsqWlZcwvRTjiL9xQJsdaFMpxBrBIcwK5G36Y//CMcvoDcOkXi2klrS1ubzwYx0cFbx2uMYNe2GTLa2mggLXr4fS6aNkA0ssmSOGw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766794376; c=relaxed/simple; bh=zEcThlkR8p6ApY+EKfqs50x04vp+Oas7DdIudWckDzc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=izz89h4mTLscW1p0XHGhiDKNN47WO7YdX+WkibC9dLCC6YdIC6uir9vGelqwES3oJNH0Cq4wf5KyOXGHeJZ6IS63tkY/XvSMSGpWGJ4cG0v4CM6XWSPiZLTxT/gpGssVnC6jXIga4V+Y3h/bDOBGaA2yH5s6HHKd+Ldpb2/BBuY= 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=KzRb+9f/; arc=fail smtp.client-ip=40.93.198.22 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="KzRb+9f/" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DmDxr9zwzv7d3TCUGJDnKUo+WTGiaQ01sd7morjZJC1ECF4qbOZt2WO+TkLBFIq2wTi2lujV6OTdJ4C19laiRigVnJFVDyVe4EyCOVGIrjfVymadHNVFl75HrXQWNsh2OqY1LejEmFpcqgQ82McRGh2IMq4YRerOAy3b9S8dQc+ZrASWM735SOnmMNZGHwcLz+cHBCFdTaJAEHn6bo/HuadIp/jrd4mI9STqlIH+I7Fu49QZxOCnkgD98+e1Y3Nyfz3ZEiU+sImlfvQZz89Er0OEIA/6CiDEt5o66rVwl42rc6VjR+w877z9Xb47W0QkBaOmzscYH0+encfFtA6HAA== 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=Ivfa0FJ4UVp3jJOWp+jT0uCxt/pxGuCr3M88ZgWRjqU=; b=Kp7OfCIDC8fRVfPlRC2XNCif5xySAx48kbTHIC7o11o0Trrek940jnaiFIBJtrpN6+ArvfXqxKWG0JGvVGnLFnRwhgttS7G11lLdRG0pyDwp5916JCeGyNuzjFy9CHFh0/kAag0D2c/lc64Zo4vf/ABIEtPoUMnxhklxXPFZ1YDcA9LExIjQ1ZxpyKFMcthSuGGa/yuezB7a6IgJ2bAS8yCKN0TZl8num2aqW84c8hO8VFlIUfKBUACQfz5LZRHSuxb+7bNbMXlgmA2lw9o2za7VeJ295GXHH4vKzlGnZo5VpgUgnjIy/Wxvxm8ZbZFmZNY3xsaNOPQpmvq+qJpckA== 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=Ivfa0FJ4UVp3jJOWp+jT0uCxt/pxGuCr3M88ZgWRjqU=; b=KzRb+9f/OGotVFjL/VJ+sTbFBcwqfQf5ckmZSKFwL2vkTtAFQGAiVd/h+1i+CTWNB3zYiefNjLgY7LueHLKaXYVQt0XndLvHBAky6uCbMSCzJEEBZRcoGSJENwiuYeRvt4sa4nEO7+inKuLM9r0bGkW+wx7n33LCI+akge9inr+0EBfYBBNCHrCJ1zjMzaka1s/HDh3ixdveRNBRd28W+4FkQYiyLMehCgGD9CTryK02eJ1mx0pJEDm/xRx8ox4LHBVbQ+8PGuwyRQbyRvSKf4ypmMs7R1VjfF/sFc8zvwBQGOBTqmvTkBFc8F1hYbHrsH+mSgJXklCulGlYQtdwoA== 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 MN6PR12MB8543.namprd12.prod.outlook.com (2603:10b6:208:47b::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9456.11; Sat, 27 Dec 2025 00:12: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%2]) with mapi id 15.20.9456.008; Sat, 27 Dec 2025 00:12:51 +0000 From: Joel Fernandes To: "Paul E . McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Josh Triplett , Boqun Feng , Uladzislau Rezki , Steven Rostedt , Mathieu Desnoyers , Lai Jiangshan , Zqiang Cc: rcu@vger.kernel.org, linux-kernel@vger.kernel.org, Joel Fernandes Subject: [PATCH v2 1/3] rcu/nocb: Remove unnecessary WakeOvfIsDeferred wake path Date: Fri, 26 Dec 2025 19:12:37 -0500 Message-Id: <20251227001239.405644-2-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251227001239.405644-1-joelagnelf@nvidia.com> References: <20251227001239.405644-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MN0P223CA0021.NAMP223.PROD.OUTLOOK.COM (2603:10b6:208:52b::25) 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_|MN6PR12MB8543:EE_ X-MS-Office365-Filtering-Correlation-Id: 05b4a6df-96de-41ae-4e2f-08de44dcac8a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?DopYaizp6GFkBtD7b+xIkVHAu40j9+uLEiFZ7uXL3VT2hHEUjw35C8Jy1rd0?= =?us-ascii?Q?KsjuzuwmOQlSKOf/R0lMbICXF9Rm7kmHU9dPoXXFQ8M/4ETv34cj+SN33VYy?= =?us-ascii?Q?j0dnSsxcbbJrHOop77XHAENYR3s3omKj7wX4fm2sKfZHZKeL8tPJPo8f4fnc?= =?us-ascii?Q?7kBAdCuTRsQyHPaNbgjaMMu9nTem8+GlV/uw0vYRd2nV1MqyjJ72UE/x4pf0?= =?us-ascii?Q?msJ+pUMz/cIPOjNbI9plJfn4voVyHgykUrNPbGTGTEufM9qZXKBlqGoCzkjt?= =?us-ascii?Q?/V58o2wJ/xwCCBJbhuRA7jY13rfZvgKQKkwXKITX/gPDD+zk4KF7tXd9BPqD?= =?us-ascii?Q?C6haFUvPRAu7L/CXcf02XFl6Q7WknPv3s7M3G7h9jHWZPCzL7guSuSD/O6Pl?= =?us-ascii?Q?c/JBVBws/rkai7QAKyI0MqdRzaGQGceGshosckZInL8wtIR7cfHrXASXW/eB?= =?us-ascii?Q?x5i8ElP1VEJ+KzH2d8+MifXH+SkYJyEXDWogd1i+L/dXDnZe4eXu6z4CKaCy?= =?us-ascii?Q?9lAUxe7TGjdW5cUqHbHvDl7y4kZRnleHxFdQEc2fRtDP2NglEGalygGUu7Fc?= =?us-ascii?Q?XUab0hjMX6sVxhp3c6EPLwLFfu6MJOeTpYTpV8laJuW9Gurwk+Aal292dYxH?= =?us-ascii?Q?U3cA4LhwnA6DhWnercleyk4+PPM1PTqax+ccRaHeduWGEvOtAQYlkVsUNWZd?= =?us-ascii?Q?fyAG1lcHs+L5miOYhSjkG8tk0VhH8esejaNkCT++bXMt0pHLtRVpErWsTio/?= =?us-ascii?Q?bns6OUBDzTC/ydqUlQb0n8+KKeSuOgpvQ/fEmXqbFRUYcG1UPbrbCFIq/z1o?= =?us-ascii?Q?VRN1CELdq51+Q1mKvlgLpd17yPjmP+7KV1qGutEvPNYuk7wtlQMPPAlkdVvD?= =?us-ascii?Q?YJD0mZbvFeoHmXUNvDYLWVMe4z90BPSvRVqKD4jripuyMgy+qrDMdQZjhjnF?= =?us-ascii?Q?TO8usoEpfqBfNWtcF3O+tgfVMv//AxxictcK4gSaHAX4js2W4LLK0LLPrQjk?= =?us-ascii?Q?Nv3x9SUeVUcaL3zV/TsfuVAJ9DTW6c/i34t9sDyb5k7PLgmrxZxmuQaZvmCl?= =?us-ascii?Q?EjeGlH1OdFzmaK/YPNXWbN5L/c2jPD+WeniHZ/YBXF0UWt7afDbzBS8sTurS?= =?us-ascii?Q?9LZYlLvR0ZsoD5f91Tv2IqGwbGAu6xX0ZX59RFEH6p+zTSeACp/JLEiyjH+W?= =?us-ascii?Q?XkOxG5eAunUzW6DrViu++7SB0ZdOMRfncnh3POHsb30HoElbj3MFsf7wJsMU?= =?us-ascii?Q?UaG92wurlDHB/pEbLd9c5YHHX8wvGsN9zuhxKZlx1Ns3+tMX/P1VV8iz7gvM?= =?us-ascii?Q?xTTbGGxtG1dOfQYov0lsaSm+6pfyddv6lxg0D/pjdXA4+kq0/9Cw0Hu0oJ5f?= =?us-ascii?Q?p+tSy0MJD9zNKAzy9O7FeAQEOORMEasAtLhMtozzzlbZAfRJA0zI2lWiBpkV?= =?us-ascii?Q?oS9aovX5VsBOvLVD4z1bQ2X233kgcR4nevWAxRQA8MGlF8ZAgOsZVOIksnrD?= =?us-ascii?Q?Wb6AG9IaWj7R9ks=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)(376014)(7416014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?E1VimyYvEQ5yqRidvko70rEhOuNN/xpzSGTswOhskSD0OhDVQgYh+vjmo/oo?= =?us-ascii?Q?5MV8ruuD23U9aI1EDd6ZOiymTzjrrJPCrhVVzOG9CoH3Xo1DlAzJdgHKFiYA?= =?us-ascii?Q?uLSoZS3Jj7ZasMjFqPXsY+7E8vpDrlY1j7pVpZQzvAzWnHwyc2wGAnivpE4w?= =?us-ascii?Q?Cc2juYvbMOpEvirvE83a44p4fYiQXDH83rCpZ9guTrtdhxNTi++2qBFdSEIX?= =?us-ascii?Q?WVLsZwwdAp79NWDHjf+VoFp9yR57Z6zYyPia/Xvzk5+XAuYqoCmwGaK881Tu?= =?us-ascii?Q?/NRzxzv8jbflg68yQry1A1+3C9H16MhEcrAK6XPmHh7fvqPW9+YVKLipKP48?= =?us-ascii?Q?TtchVqZ4gbJwk8XOWPQ9vRF9jFw7tq2c/WLyDB6urdaSZ2bMbvmxvc1Rvdic?= =?us-ascii?Q?84wk9pshkwSr9U/lpk82JA6x61DHxwJNPBE5uCTD6CePzDe16P36sbzeZk5Z?= =?us-ascii?Q?hijEEey03zNhmcWqLnaKF1woyzqbMeCX9kxNkP/XTeUSucD0EA6xBIJK+fN/?= =?us-ascii?Q?kNjV/07kmA2nGCXiq8dhpby24M23hYjn2hGb0OySGTKkJPH4wIOwmhLhI+Lo?= =?us-ascii?Q?ThP5+cvSsIeKR4gABq3+c0pjewVMla8O+VaPMtIa5wHzeCTOyoWeUBvL1Eii?= =?us-ascii?Q?zTRH/4rP0g8VLupvnAhi5om2k4/h2KYRs6upRO2svVXqZRMMlXOI9byKoaAy?= =?us-ascii?Q?h/71kzNn82owLMlEszLFQIjMcK38prkKCGKHR2Lrxrm79sydcpw5iUb2ppJK?= =?us-ascii?Q?6PaHzHB2FD3yU4gomL84jLOn1MsNESkZqd6ShANO6ECiXB51myRMs6et4LW+?= =?us-ascii?Q?cWtt2Lt72DRVfjPTi3Jx1gAx5sc/UV3zT25CZHF4V3PWRViKVe/vD4lYqmKE?= =?us-ascii?Q?1G8w1d37fcYc/AXVQ2ZisWuFjhbOs4jF12tMRQr3Yvc/VDyyiXHJ1+IKxS+R?= =?us-ascii?Q?1UoWetTb1g8w9FoV4kh9DPQPIFxFL+A4KxwNlFax4zJ86yLhBg6Es4B3qHq7?= =?us-ascii?Q?0SNetekq3pXW+Kd6mROsYMGXuhwxTugLCHal3yiKLK943BNkCZ2GLrR0+azG?= =?us-ascii?Q?0OQlswggRSnDqgGCkFARr14jX4U3MmYYBdnN0Rh2ziC2pu7+botg0M6ky6SF?= =?us-ascii?Q?ziCPFjqy4mpvTswUKd6qHA758VUB7yi1txfJLZYp+KsXMNNb+6wIRnGmEzrl?= =?us-ascii?Q?2TGJtJefsbpup0yZ8x6pHQDLwSeTpG2m3x7FR1ssDbSaILxI2DPcOrqIjtfz?= =?us-ascii?Q?Jon1v6s2ClmERBi0nXt+VB5tm2EH07OfVgrg0W8P1NkhBb9Wvs78vbOFhcrc?= =?us-ascii?Q?5T1wcOSazKZA+K7PhWuqiUElXpo81hgs4jMIEaOTXrRrK3COg94qgGAGiUOm?= =?us-ascii?Q?wSLwFVtuHr1CmFU6lM+pcitVLK8kkqWyZfuYV4G478qAk+N53kI4EHupVYOf?= =?us-ascii?Q?3GFgwFakLjSobUQrfG26SwoETDDI/fSJiYbADcOhK8LwGAaXnyzLD48GQR/y?= =?us-ascii?Q?7TUh3TPyL4SPCLm9yZTB8zGQL8hjYzZs+i46Lkl5vXSXYotFDRHcEJ1roVUq?= =?us-ascii?Q?TUNcG77Fpu6azDRS/oM1xBsqJcY0RdXuDEZDA8cyctBoxFuyfw1r/1ZZm26Z?= =?us-ascii?Q?QWWaE7vJRRSS6XZWh9b9YkVWBVpSoRCQOiO62zvQNTIPc47ZIIazvcAHsKwW?= =?us-ascii?Q?ruN2W2VbLv4l3EjBg/C+9IN1E+Vy0sjPO2dJAQ2Efw1rd/H/zEOE+zsXXjoj?= =?us-ascii?Q?kCgZsKF7LQ=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 05b4a6df-96de-41ae-4e2f-08de44dcac8a X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Dec 2025 00:12:51.2321 (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: s/V4xJaa/tXfJSKhP0H1c8FNqt7ijCJVc5T+Cah4u4NbdFyKep3ZAY154PRgZyp9a8RVboVlJ83w+3vPpBqETQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR12MB8543 Content-Type: text/plain; charset="utf-8" The WakeOvfIsDeferred code path in __call_rcu_nocb_wake() attempts to wake rcuog when the callback count exceeds qhimark and callbacks aren't done with their GP (newly queued or awaiting GP). However, a lot of testing proves this wake is always redundant or useless. In the flooding case, rcuog is always waiting for a GP to finish. So waking up the rcuog thread is pointless. The timer wakeup adds overhead, rcuog simply wakes up and goes back to sleep achieving nothing. This path also adds a full memory barrier, and additional timer expiry modifications unnecessarily. The root cause is that WakeOvfIsDeferred fires when !rcu_segcblist_ready_cbs() (GP not complete), but waking rcuog cannot accelerate GP completion. This commit therefore removes this path. Tested with rcutorture scenarios: TREE01, TREE05, TREE08 (all NOCB configurations) - all pass. Also stress tested using a kernel module that floods call_rcu() to trigger the overload conditions and made the observations confirming the findings. Signed-off-by: Joel Fernandes --- kernel/rcu/tree.h | 1 - kernel/rcu/tree_nocb.h | 35 +++++++++-------------------------- 2 files changed, 9 insertions(+), 27 deletions(-) diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h index b8bbe7960cda..83773560332e 100644 --- a/kernel/rcu/tree.h +++ b/kernel/rcu/tree.h @@ -301,7 +301,6 @@ struct rcu_data { #define RCU_NOCB_WAKE_BYPASS 1 #define RCU_NOCB_WAKE_LAZY 2 #define RCU_NOCB_WAKE 3 -#define RCU_NOCB_WAKE_FORCE 4 =20 #define RCU_JIFFIES_TILL_FORCE_QS (1 + (HZ > 250) + (HZ > 500)) /* For jiffies_till_first_fqs and */ diff --git a/kernel/rcu/tree_nocb.h b/kernel/rcu/tree_nocb.h index e6cd56603cad..daff2756cd90 100644 --- a/kernel/rcu/tree_nocb.h +++ b/kernel/rcu/tree_nocb.h @@ -518,10 +518,8 @@ static bool rcu_nocb_try_bypass(struct rcu_data *rdp, = struct rcu_head *rhp, } =20 /* - * Awaken the no-CBs grace-period kthread if needed, either due to it - * legitimately being asleep or due to overload conditions. - * - * If warranted, also wake up the kthread servicing this CPUs queues. + * Awaken the no-CBs grace-period kthread if needed due to it legitimately + * being asleep. */ static void __call_rcu_nocb_wake(struct rcu_data *rdp, bool was_alldone, unsigned long flags) @@ -533,7 +531,6 @@ static void __call_rcu_nocb_wake(struct rcu_data *rdp, = bool was_alldone, long lazy_len; long len; struct task_struct *t; - struct rcu_data *rdp_gp =3D rdp->nocb_gp_rdp; =20 // If we are being polled or there is no kthread, just leave. t =3D READ_ONCE(rdp->nocb_gp_kthread); @@ -549,22 +546,22 @@ static void __call_rcu_nocb_wake(struct rcu_data *rdp= , bool was_alldone, lazy_len =3D READ_ONCE(rdp->lazy_len); if (was_alldone) { rdp->qlen_last_fqs_check =3D len; + rcu_nocb_unlock(rdp); // Only lazy CBs in bypass list if (lazy_len && bypass_len =3D=3D lazy_len) { - rcu_nocb_unlock(rdp); wake_nocb_gp_defer(rdp, RCU_NOCB_WAKE_LAZY, TPS("WakeLazy")); } else if (!irqs_disabled_flags(flags)) { /* ... if queue was empty ... */ - rcu_nocb_unlock(rdp); wake_nocb_gp(rdp, false); trace_rcu_nocb_wake(rcu_state.name, rdp->cpu, TPS("WakeEmpty")); } else { - rcu_nocb_unlock(rdp); wake_nocb_gp_defer(rdp, RCU_NOCB_WAKE, TPS("WakeEmptyIsDeferred")); } + + return; } else if (len > rdp->qlen_last_fqs_check + qhimark) { /* ... or if many callbacks queued. */ rdp->qlen_last_fqs_check =3D len; @@ -575,21 +572,10 @@ static void __call_rcu_nocb_wake(struct rcu_data *rdp= , bool was_alldone, rcu_advance_cbs_nowake(rdp->mynode, rdp); rdp->nocb_gp_adv_time =3D j; } - smp_mb(); /* Enqueue before timer_pending(). */ - if ((rdp->nocb_cb_sleep || - !rcu_segcblist_ready_cbs(&rdp->cblist)) && - !timer_pending(&rdp_gp->nocb_timer)) { - rcu_nocb_unlock(rdp); - wake_nocb_gp_defer(rdp, RCU_NOCB_WAKE_FORCE, - TPS("WakeOvfIsDeferred")); - } else { - rcu_nocb_unlock(rdp); - trace_rcu_nocb_wake(rcu_state.name, rdp->cpu, TPS("WakeNot")); - } - } else { - rcu_nocb_unlock(rdp); - trace_rcu_nocb_wake(rcu_state.name, rdp->cpu, TPS("WakeNot")); } + + rcu_nocb_unlock(rdp); + trace_rcu_nocb_wake(rcu_state.name, rdp->cpu, TPS("WakeNot")); } =20 static void call_rcu_nocb(struct rcu_data *rdp, struct rcu_head *head, @@ -966,7 +952,6 @@ static bool do_nocb_deferred_wakeup_common(struct rcu_d= ata *rdp_gp, unsigned long flags) __releases(rdp_gp->nocb_gp_lock) { - int ndw; int ret; =20 if (!rcu_nocb_need_deferred_wakeup(rdp_gp, level)) { @@ -974,8 +959,7 @@ static bool do_nocb_deferred_wakeup_common(struct rcu_d= ata *rdp_gp, return false; } =20 - ndw =3D rdp_gp->nocb_defer_wakeup; - ret =3D __wake_nocb_gp(rdp_gp, rdp, ndw =3D=3D RCU_NOCB_WAKE_FORCE, flags= ); + ret =3D __wake_nocb_gp(rdp_gp, rdp, false, flags); trace_rcu_nocb_wake(rcu_state.name, rdp->cpu, TPS("DeferredWake")); =20 return ret; @@ -991,7 +975,6 @@ static void do_nocb_deferred_wakeup_timer(struct timer_= list *t) trace_rcu_nocb_wake(rcu_state.name, rdp->cpu, TPS("Timer")); =20 raw_spin_lock_irqsave(&rdp->nocb_gp_lock, flags); - smp_mb__after_spinlock(); /* Timer expire before wakeup. */ do_nocb_deferred_wakeup_common(rdp, rdp, RCU_NOCB_WAKE_BYPASS, flags); } =20 --=20 2.34.1 From nobody Sun Feb 8 14:22:18 2026 Received: from CY7PR03CU001.outbound.protection.outlook.com (mail-westcentralusazon11010022.outbound.protection.outlook.com [40.93.198.22]) (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 C209E1A23B9; Sat, 27 Dec 2025 00:12:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.198.22 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766794378; cv=fail; b=tK9W7C9twCXBWkd1XWKtTojSDfzBfxPg6hEt+RDVS5e6nqpzxpx3o3b1/SiB4Ea8W9WERQVKc0V6mBF92fQzdEqjx9+5rWK22KlM9luUZPpPlMbWPkJI7EfBk87ahwSc79OcFYHkSWA79R1BRv/1r0eudW3jzo1zwxanyfZe9aA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766794378; c=relaxed/simple; bh=MFus641xH/6T2aWEyS9btTrPiAmkv41wi3m9ZMJV950=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=IIOZJLN6QuUtcsYnKlesn/fL49KG04Xf8dIpt2/ABMpDCRNON0BCexQbRpdg7A2E9RPoQcwspKDcoZVjXK/+SpBMsQYJX4OFPWmuFbtpq+U7OskognfSsi7lzhmhdA+4frXNvTi9RVeRC2rF7zZwAHgGnxU4wdQZj+5ODrXRv4E= 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=mmvG35UK; arc=fail smtp.client-ip=40.93.198.22 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="mmvG35UK" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TtOrF/r1faUdxVR06Wua1YuFw0lBza/ucEoMZc4BxRrn9vHaTGW03pLse6jKd70NiZx/8BoKQR4e1BxTT9UjRJg3rHhmAjlNRTZjz+3+rDEsM7FsGMtYWO4bynnjHeLD0i6urRSHuVzROS83UgqoZqA5pOOoAUUAWlfCIykylg0SCNrb+gFSXrn6AdkAaonnVGIp1y8tbJXQS2QkWjHvW6E6yTd8QcfTLAVGKeIxRpGl+P/sopmBNWNVnxm7fSBj7n8zywQ8vjDb7FffWrdNEypSVS2F4obS7UxN+GRInVrqjsHmlDyKkWz00V3nVVBkJ7/Eud733SlwzXrekQGtdQ== 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=OeKRYCea2b4xpPa+huEYg3dsv/kSFzdBlk1JVHmTQvQ=; b=rlAazVmlEZZ1T7K7MLAWX62x0+mmy8qLmBYG18ORnY4QsCq8BMwfXoQRQbYzcWzSs8/pCU0bdCUc0S9i17b4DcUAjsZfrydREshrb5Xrt7APEk+E8aaNxAITmE0hWLH9AuhPbB0Oy0Dv2eirHU6F8W1N7cMYPBeS1+7S6uL3ktI3Boe8pSILmGpQXQo46XdjeZJ5nZJwg50S5vrowe2GRagLejOIdZO1Ok66JeNXzgmdUlmMXqmzibIZIhY6XDmWQvjglJg1cOFs6mva31snt9J2M7yHPHACY12KyISnD2L6TOPlHzXTf7pV2UKm/zPgAQd+id15FyRRdupMEvOlKQ== 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=OeKRYCea2b4xpPa+huEYg3dsv/kSFzdBlk1JVHmTQvQ=; b=mmvG35UKrzv9KjhsN+pywwxiMZDjtIdC27K6NSF+qlacLfKWXwB4M4hSYJxOsTILRaOWO2hlBUDAvpJ2gyG3/Vb3/6ZORo3QfnNfh40sWY389lNWOj8oA7wH5kXjhqA5W36+E/F9QbnmjJ8v1wKQhcQ2xKKcRsGpGOdMGkaYq7zVnZjyqHFUAdmtD2+HpoiXu+7l64TleRXHgbHIA01dnVTvuu4KAZilOXKBSZ8sE1McOkuR2itB3+g/0twOm8mI8I4qRa5ARN5dNlb2GY5GWWW8RBrcMXS+wjXJsEmV8q7AoSchDCNR4WIIshJ7DyfJ5pDihzwmU2fmcGUMbDmGwA== 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 MN6PR12MB8543.namprd12.prod.outlook.com (2603:10b6:208:47b::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9456.11; Sat, 27 Dec 2025 00:12:52 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%2]) with mapi id 15.20.9456.008; Sat, 27 Dec 2025 00:12:52 +0000 From: Joel Fernandes To: "Paul E . McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Josh Triplett , Boqun Feng , Uladzislau Rezki , Steven Rostedt , Mathieu Desnoyers , Lai Jiangshan , Zqiang Cc: rcu@vger.kernel.org, linux-kernel@vger.kernel.org, Joel Fernandes Subject: [PATCH v2 2/3] rcu/nocb: Add warning if no rcuog wake up attempt happened during overload Date: Fri, 26 Dec 2025 19:12:38 -0500 Message-Id: <20251227001239.405644-3-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251227001239.405644-1-joelagnelf@nvidia.com> References: <20251227001239.405644-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MN0P223CA0006.NAMP223.PROD.OUTLOOK.COM (2603:10b6:208:52b::6) 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_|MN6PR12MB8543:EE_ X-MS-Office365-Filtering-Correlation-Id: 3fd7303a-531b-4db7-7d6d-08de44dcad42 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?NeBF+TGYBvxinFgnVVKEhdM7yqhfJwC3AVSDtMWcX+yUP2p8mPDDMfle0LEs?= =?us-ascii?Q?8Kw5mTcb1+00Q93mi9k9mQKXgH/N2JvvNHk+mYRvdPCNMhDdewS5rcuM6WLY?= =?us-ascii?Q?2oPjFNafSnVDQY5oqZcZXUAfkx8cKc2dm+EUyEXe/k2GbUXEuPhwDyBcy5UL?= =?us-ascii?Q?HVUycyOL3wa8oKcX14Oz7VVt+3ZVSGNBtTxzdEVh4fskMpKua13xYDAAig5P?= =?us-ascii?Q?/VEwt0dsmFCt9AOzjlAKkSm1KZHLJud3o4Nz+RbhKJieXozl9NkripSNR7NG?= =?us-ascii?Q?usV+/hJweV96Z09nRJiZY8t1wl3My642jNlScZl3OTcUm4FuGA7Cy2qBzRWv?= =?us-ascii?Q?HRysBphA9uY2waonQWPmjbMtOojuBzo1pMfowHCajED3ibUD2F+j+u2Kgtkb?= =?us-ascii?Q?kaNUvLXPLCNlRdaPbt6Vvv+/ibkJ+x+TUTFkr1/4/HUjlmKhMdYCT0IQIUNE?= =?us-ascii?Q?9/c1Qd+oVCYxGkpbgwaGXLppioEpY5FCjoP2deiCCbHUIoGaRtg21ZHU7Qq6?= =?us-ascii?Q?LKonVNwxvu7v49ThI7ppjyWf0aLnITRa+oJ/IySosUbp6LDXAOUHCsecygGL?= =?us-ascii?Q?EWRqNSVs066bJyu6v7wvuOQ9d87e/GNMrJbtRehaVf0C6E7/83BiipENn6JQ?= =?us-ascii?Q?lRaxEFrMWyhbENcfh4aQs+e0A1XTlCZrlCcIBlfexrtD7OsAlNeXLFx7aFsU?= =?us-ascii?Q?sNyHgQU6Sn12GWkrxUswJXyZ9C5VXU6hgWxcGXJkje+6xEFRac17tFtEeYHd?= =?us-ascii?Q?dgWMymYGYHZS9Z04/ccFOeIupvkUwztZUlHUDT8NxgkDOG7a++jcFa2jUaMH?= =?us-ascii?Q?fv3TKRnZXNtp1b3i3rtOUzyTJVBrEZ2A3eZseNyLtSKgOMBmZFHqfi2WvA8J?= =?us-ascii?Q?XE+e3dkNXC/naRYY1y1W71JdRayKVS0hY2gdPoIm4COV1d74FQLfE81gLGDd?= =?us-ascii?Q?2bK+VEGLFPs0cryr3P/L7lMiVJ+vWTZ6SWpTtfpuqAzG7DEeauDRCqj9opyr?= =?us-ascii?Q?36iVFEokpEAVgoieNb4hdzWD0Vd9VezVevDxI8AhnJEoR89gyS4qg/doQSkv?= =?us-ascii?Q?GfnBurohRHQWrqZYtCShlHDa+LeI6KCvaZa1CGsnKSc69fA0RXT2xvZ8De0l?= =?us-ascii?Q?fgX1f67TsfDAcwUp3oR/bjD2mGhGvaPM6DOCf/1lQi3YHzzOLC2D2/6WSvJQ?= =?us-ascii?Q?sBLdLYqPt9uVDtpi5a7fTiVFYr7SqyvN8iruT8YziqtdPT/B2K1pzpOiMT57?= =?us-ascii?Q?nB0S8Ork4ag1DlZaQpXwcUVHHCuY9L9ZKyJNjqyNyTUJpqGMK7kMRNYXSxNG?= =?us-ascii?Q?6mF2/nKGGoQfGOmHUW7C9Jm5wqEysWIjghLUqn/O+lY7at0k20HD78/YKGb2?= =?us-ascii?Q?RKmJxdIuI619PMlrQ3xl4wxeIhQ5AX7tpfj3AM7aBFkfmoeF/2OsX0HELmju?= =?us-ascii?Q?bIHmHo6QJEn0yTmaEf504JYV/bH8y8pkinQzxDMJubsetMtCOWrHv4KHQ2jI?= =?us-ascii?Q?vpKsLOz6b4ILyow=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)(376014)(7416014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?8v8Cry2hr9Q5It59Sq3EuKAn6HWdSNbNCrIx/pMQWwzYnMxK49t7qek95Gb1?= =?us-ascii?Q?7E42V78ELYeH85AltE2UFAzpnPFONrjjoPCqDfYL9lJ2ojZm4lBAIWrUx/6+?= =?us-ascii?Q?EPqwvDyGaHb1NqzdCl/nkgZcQA9n7/Amxz7DXSigoZEcx/m4g3ZvEZzV/5Uk?= =?us-ascii?Q?0Ngd1FBe9+S2tAlj+301hQWVrXCOL4PB+/texlhUh4staX4Rz8fz/qWpvPKh?= =?us-ascii?Q?DoqVyozb7otYscTCDGNWnITdwq6KweNipmwXq4leW6XcWzGHPkOwoEiKeGfT?= =?us-ascii?Q?t/KPoh0tUtUj1oXoSkYkZqWfDFdktsdN2f0TzL2wGQXjCE+xOHktgihSBEa7?= =?us-ascii?Q?Nz8k6aAO7tPsGVwhuK7FB2AxKCvt/tecpl+ZQsdcjbJzmvqKp6qKUg/yXVT+?= =?us-ascii?Q?YAskzxyydzzjAtE5yWLrF1kGkx3ts/Q1sYD9uN/2k/f0ZasudN8DZHe/NGxt?= =?us-ascii?Q?KzyTB//duPPTdDIkcek1wzbVO9gbDDI1b8bEEgrEFifh1ElrfqxDIu0L31+Z?= =?us-ascii?Q?w3JvfmYAt/BwdRk2OWpn3/8RyX7kpQu0Pct0dsqznox2sdx2sb5gfqrwhoz6?= =?us-ascii?Q?Co7XI5p3mMc/m4jIcevvrwaVvRrCXm3LpzGArzxsDrZw9h1vZfYCbm0t4fNV?= =?us-ascii?Q?ltcly16AOhoQ1JSDIrRQ8udHpgNMSIirkJcUDG5CnrYaY9Z1QuRBcqmA4Oqg?= =?us-ascii?Q?YhcLAm9bYUhRN6b37YCFv3K7HBX2qWPSD49O0mSV4xY8woHSsguk7m8Isrnb?= =?us-ascii?Q?6g/TOgqJWkRjGdF5izlzxP+DkbU35N1rRQkR5g4UiW1rTyJeXJg+dB+/b+ot?= =?us-ascii?Q?x98Asck4NObJwldHKkcetuBm0bCRpEkLvwHmKbq37jX19Y6fMWvxRz45UyDj?= =?us-ascii?Q?1hc8aJB+K06z0J6UaOI8t4wU63jS/gnVpwFVCI4VYzMLGiu7QRXrOzTliYuv?= =?us-ascii?Q?X0n/ixMqfRbKK+U7/6I9g2gdjycvsS6rkg1m5JorkF8OJ2BcKYr6MS7CIPVv?= =?us-ascii?Q?yapyJtCdb3ai5DY0SVtdHWv1DG7wFjPvZTj+dhr7d4nBNIzzBVxbu6LzD0N1?= =?us-ascii?Q?0/VQoPWlkxohqfBIyqzcURYolJ/7dtyc0liUK04wUIv4JIVJBCnbFVLRhG/e?= =?us-ascii?Q?2555kFfXggBmwQXoX+lLwljysRj+M6yFDlc61XNe1spub9MTXES6yuaEWGOW?= =?us-ascii?Q?aMyraymgog8pwN9h4pgIMxCinCFyduGILlfRtta+U1VIgKNo2Hl+8XStnqAC?= =?us-ascii?Q?AW6hMvK+Lb7Xiga2ZHUtrwdbq4oeiQLs4qVYJGIuZwa3QHZMy6rw92jcpvXL?= =?us-ascii?Q?8cc/AOPSLEHhsLgEbfpR+iE6ar0+/hwy6AldHylAhg10EvHSWkcAF0oxFaT5?= =?us-ascii?Q?yfzy5NaqMaxwxTXO4V23icbxyVoIm/TIuFSdb0tlLodtoZwpVd9h3R/b9Zqd?= =?us-ascii?Q?/zA6TZhU10Cs2cVO6DiTa2tKQjf4SjXpeeEw4lxkNQTfhFtRuQxqInKeOhWv?= =?us-ascii?Q?pfX35eiOk3Gc/HhQoHNOBzEQQnehvD+pvTfUpOHKCrknwgd24LvBS5r6XwZS?= =?us-ascii?Q?nGeVm4opgFKYCX85mA2racbKMDVYIwKMe/eQDo0pBSdUcvROVqsz8utkAnT/?= =?us-ascii?Q?sGKaUHwqf02ZdIGFSGCPwZzmXPEw1l2Negl8FtvlsjOAnFsokmqHMEGo+DVb?= =?us-ascii?Q?ekwiyQnW3GJOslJUucVXgyX9aUFnCN+mTkeJWplMB+l6TYpOkX2tcTUSkU5w?= =?us-ascii?Q?aVFlV1DtyQ=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3fd7303a-531b-4db7-7d6d-08de44dcad42 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Dec 2025 00:12:52.4208 (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: dlebzfq/e9CjWQh8VEVnbXGWu798qCLZgho34f4ocTPJci0/9dCOJvsrtBXl3zxzcbMS5KdSeIlyumxtgCXUMw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR12MB8543 Content-Type: text/plain; charset="utf-8" To be sure we have no rcog wake ups that were lost, add a warning to cover the case where the rdp is overloaded with callbacks but no wake up was attempted. Signed-off-by: Joel Fernandes --- kernel/rcu/tree.c | 2 ++ kernel/rcu/tree.h | 1 + kernel/rcu/tree_nocb.h | 6 +++++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 0c7710caf041..f3f790238805 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -3783,6 +3783,8 @@ static void rcu_barrier_entrain(struct rcu_data *rdp) debug_rcu_head_unqueue(&rdp->barrier_head); rcu_barrier_trace(TPS("IRQNQ"), -1, rcu_state.barrier_sequence); } + if (wake_nocb) + rdp->nocb_gp_wake_attempt =3D true; rcu_nocb_unlock(rdp); if (wake_nocb) wake_nocb_gp(rdp, false); diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h index 83773560332e..91793b6b288e 100644 --- a/kernel/rcu/tree.h +++ b/kernel/rcu/tree.h @@ -257,6 +257,7 @@ struct rcu_data { unsigned long nocb_gp_loops; /* # passes through wait code. */ struct swait_queue_head nocb_gp_wq; /* For nocb kthreads to sleep on. */ bool nocb_cb_sleep; /* Is the nocb CB thread asleep? */ + bool nocb_gp_wake_attempt; /* Was a rcuog wakeup attempted? */ struct task_struct *nocb_cb_kthread; struct list_head nocb_head_rdp; /* * Head of rcu_data list in wakeup chain, diff --git a/kernel/rcu/tree_nocb.h b/kernel/rcu/tree_nocb.h index daff2756cd90..7e9d465c8ab1 100644 --- a/kernel/rcu/tree_nocb.h +++ b/kernel/rcu/tree_nocb.h @@ -546,6 +546,7 @@ static void __call_rcu_nocb_wake(struct rcu_data *rdp, = bool was_alldone, lazy_len =3D READ_ONCE(rdp->lazy_len); if (was_alldone) { rdp->qlen_last_fqs_check =3D len; + rdp->nocb_gp_wake_attempt =3D true; rcu_nocb_unlock(rdp); // Only lazy CBs in bypass list if (lazy_len && bypass_len =3D=3D lazy_len) { @@ -563,7 +564,8 @@ static void __call_rcu_nocb_wake(struct rcu_data *rdp, = bool was_alldone, =20 return; } else if (len > rdp->qlen_last_fqs_check + qhimark) { - /* ... or if many callbacks queued. */ + /* Callback overload condition. */ + WARN_ON_ONCE(!rdp->nocb_gp_wake_attempt); rdp->qlen_last_fqs_check =3D len; j =3D jiffies; if (j !=3D rdp->nocb_gp_adv_time && @@ -688,6 +690,7 @@ static void nocb_gp_wait(struct rcu_data *my_rdp) bypass_ncbs > 2 * qhimark)) { flush_bypass =3D true; } else if (!bypass_ncbs && rcu_segcblist_empty(&rdp->cblist)) { + rdp->nocb_gp_wake_attempt =3D false; rcu_nocb_unlock_irqrestore(rdp, flags); continue; /* No callbacks here, try next. */ } @@ -1254,6 +1257,7 @@ lazy_rcu_shrink_scan(struct shrinker *shrink, struct = shrink_control *sc) continue; } rcu_nocb_try_flush_bypass(rdp, jiffies); + rdp->nocb_gp_wake_attempt =3D true; rcu_nocb_unlock_irqrestore(rdp, flags); wake_nocb_gp(rdp, false); sc->nr_to_scan -=3D _count; --=20 2.34.1 From nobody Sun Feb 8 14:22:18 2026 Received: from CY7PR03CU001.outbound.protection.outlook.com (mail-westcentralusazon11010022.outbound.protection.outlook.com [40.93.198.22]) (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 AA4C819E839; Sat, 27 Dec 2025 00:12:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.198.22 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766794380; cv=fail; b=h0NY3AUA7pirNHqfCUNTgbB3WiF7Au5DWFhU6PERwc9t5EOZmAYLJWDCVJGYlGM31faXOPIIP1/jCL+rZF6QW/V5u5xR/yjGWYv+MsM56Jezgt3BUREgcXFCddoCXnn2+O2nNQd0+w2rYp4EUf59HdjDbkcgVG4QBkYDwQjB7C4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766794380; c=relaxed/simple; bh=KyF0xXKvBwAN+yiv1dgAfGAxaYaLnKvQedIJO5nqKRU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=WDyeFLaieB6lnJSwsfBdNyQLhN4L6ZcYzumjKWEh5+KoMkZRDg+Ul5fDVAZlYnVe4bSZCnMmd6MC1/4WG0AiHj5uAfj1btiuJYI/17MlvHFlDFqA9x9T/Ay6mE/l8I7gMz1g2iSYSXdtxQo6A7pWg6eYh6IVRj/Hd+YikuJLklA= 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=YB3isls9; arc=fail smtp.client-ip=40.93.198.22 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="YB3isls9" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VzGqmcjmcH3EvJw0Rk3E6Hq6OF98MrBOkp9S5K5xnQZ62RjEABz7NlbmDEYYrkNDjfDqJ1FO/xZT3ODvvwEyPqEH+x4uv3LLYGF5pd6prBAvpjXp1QXugNbe/E9m5N2FpnnNAtaoqrinhWBh+atP9p6rhK/WThQ76ZA+b0o2lsjhTwFcW9mG+xDhC4INPIdGo0z8QrbtmLcaZPbLjFWfmLQf45YyNDwOHjRJzClndorIylW9KaiXopfY6aVMY0eBcD7FDsj3InvYhQnnY2Q+k9Rwmkp6oOKy3tkL5MieEikzP+h2WE86GaF+wb0SQBX0kUBPufsKI+JejH/t7l+hfg== 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=//zyC2NyEe7TuAV4RkC3qdrK/3/JJhsjQUiqoQdogJ8=; b=NbvUFfydQhxGO5rAnB8/rspWF3FHPclntywu172pHouDuJ0fND9GovOiX8TShI+jdEH5Di9zRwK6+hwhA2XI7jKPT/PAhdArHn6FWalp84Fua2Dh0oqjlGsHiYK5hYGSo1bWyiWIJtn3/2OZZxBMKGJ/v2hcc/7vmSt8ORX0wY8WyYs/zOBuufdScXK9gKZpHo97/IbdB2IQs5iBY8QR7+FQLawiqOgr5jbSx3HjmSQLKaXS8XuqftEwYKci6XHtkQ3/cbFKFcjddNQo0xWyMmhUD5QTgmCSIR3vukyAgKjq6m38EFc6Dn79H7xVzQpxvfnfMMZQZ5xnB6prRt81wg== 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=//zyC2NyEe7TuAV4RkC3qdrK/3/JJhsjQUiqoQdogJ8=; b=YB3isls9SSrcXaGAbqFY76ewI1cf3FR1UFpJKorpiPGIpI+z+zRAhp6vFtOV1JHQ9L5H6K3zXGmvwSILFunTC2NGkylJQA+JwGh1H8TiaqVh1xJBmoSpKFujP9wo8W7eL7ZYUBF8NFFZZ7B8bqRvfujC/rLtq3LmNRxF6L1pQjfpB0VpjlO+NpeQGNDJO9ba1ODjxxoxmkiXiOaXjo4RdP9sOauS5oX1Ds2PhUmNbqcTLYb+U2Xu+aJxMK3tqBm2kbZacp3dZlL31uRsDErUU3ZL3aEJb4fsOnb/3eIpt0EAb//rWQvc9yqhSVipw5L6PVceIiGweJ4ONSvZo1tOow== 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 MN6PR12MB8543.namprd12.prod.outlook.com (2603:10b6:208:47b::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9456.11; Sat, 27 Dec 2025 00:12: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%2]) with mapi id 15.20.9456.008; Sat, 27 Dec 2025 00:12:53 +0000 From: Joel Fernandes To: "Paul E . McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Josh Triplett , Boqun Feng , Uladzislau Rezki , Steven Rostedt , Mathieu Desnoyers , Lai Jiangshan , Zqiang Cc: rcu@vger.kernel.org, linux-kernel@vger.kernel.org, Joel Fernandes Subject: [PATCH v2 3/3] rcu/nocb: Add warning to detect if overload advancement is ever useful Date: Fri, 26 Dec 2025 19:12:39 -0500 Message-Id: <20251227001239.405644-4-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251227001239.405644-1-joelagnelf@nvidia.com> References: <20251227001239.405644-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BL0PR02CA0076.namprd02.prod.outlook.com (2603:10b6:208:51::17) 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_|MN6PR12MB8543:EE_ X-MS-Office365-Filtering-Correlation-Id: d885fcc4-7dd8-4303-2913-08de44dcae0c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?VIbPiRupKpnV8LMYMBx6rWutROR0E7gLtDt+tgopbbA4b7Lp9w7vosq2oyyl?= =?us-ascii?Q?fFcHJxaxLIQdKtDastxl+ry/Xk6m2AJZhRFd+Bm2cAKk9zx3XEPCruQnHGCE?= =?us-ascii?Q?EgITKJbfxghdMQPQYg4Shy3zx8ldleSOU1S7UHfjZ8md8Fy2GopAdyllsVzB?= =?us-ascii?Q?I/MKHGC5zSZdcarPaKIDoVoSMI4nIH8zSk67SA5RA9ISIwLpuTstHIMwAOiI?= =?us-ascii?Q?a59HabHKOP8GiNr57F04kZCviw+gGktILJnIcI8yIAoWDpxgWJitVkuuPHGT?= =?us-ascii?Q?9tw9lBUqIBI7lxuHezNOKzKwDsEOjv7JBw/NQZiTK8o6657G0IPRlb8BLcUW?= =?us-ascii?Q?LH48M8E8SPKuFrLejcK4gCzCcahJQiE8lDhSlqgTPSX+/S33ItjvySDgAR3U?= =?us-ascii?Q?NbAgRGVm2sLlRmWPsGEW8SkaprHwdmUl/SQqUBUUDcw12PeaZkhWHI4vI8J2?= =?us-ascii?Q?qPWo48zEx03//l/3bPejGu22z+AYt6ooYib5txnLzGCrnx1ZPy9yAuKB/Ejf?= =?us-ascii?Q?WbeOUV3mGE8GsYisHmW7k2DbV8VAHIvT4KeelBczRYFkfpCktoUM2v479dFw?= =?us-ascii?Q?/X3BDje0wqGHtBByDEHWuhYr8XaoYq5RQtG1jQJw2QpyMKfPllTyb451DZqC?= =?us-ascii?Q?kGpmnysQaf8TJsoRC34Luv4VFHER3kIk/4CTJ8pBJ/0NDdndemWmjAVwguIG?= =?us-ascii?Q?uj5M+Vs9bp4QPAEbMFOi5tlFHpmfjSc+3mGWHZqgnKGPzI+/LVefr2JWPqTU?= =?us-ascii?Q?35XfwziAmiXm2Yjalaeo1v1ybf/nM6BqALmppCi2WWMl/epimPgMnxUT2FpO?= =?us-ascii?Q?nUeFK97FZkf1eXBqayTP5o3qC3PmdIbypUlBl6GM5Loafta53idAFOLQTn6b?= =?us-ascii?Q?Jh8F6sM8QExDp414v129DLadUxT/kKSRA2sgRf8yN2RLA6UNmBQafxkOFpAV?= =?us-ascii?Q?9GnG+oUcvKfTGZ20QF8ZndYccfp60Sr6DpgZ/Ca9P7+aS6Jr4TBkvwK+JAxt?= =?us-ascii?Q?MQBbvIx5eHpZTMtsYvguBfM3hMgrbH9NRxyfxsZk18wR2RrNm6jonlfekQX6?= =?us-ascii?Q?M3YeucidZjbAg/V3GQkNXE+Ad5gO1nTIK7UpqvQGjQ++zlPFzDQRvvclhJq/?= =?us-ascii?Q?vYWSktIOI9It7G/+6SD9rtGoIdkJzCZpkiPFF9nl0EI9Tj/zjOTeHTkW0bGf?= =?us-ascii?Q?YgKiBy2s+7PVxORqCzT5xPFdhkKNodf3BxL5T7uxiL7nn2b6NkiLEDRrGW1n?= =?us-ascii?Q?ECsj88JkiUcL3H/lio21DrZbZFgEYyk+854Rtf6wZdaIAIibHBlP8Z6HL5EK?= =?us-ascii?Q?Qgopary4JGOToCPJQWtAYK5fE8SD8DTmhMPyR9VQdcEy/Ik8Q9s5NDQQY0Yo?= =?us-ascii?Q?QM09U3bH0/7Yb5VxAUWRR/kOyEKkf3+C7OStULwf2FV/oxsE9PdaPw24UFvx?= =?us-ascii?Q?yXrCG8IAASEGo4VED9gERk8iKgNn9f7vUbaVmMkrEnjirCR6QwkFwGAYeRN+?= =?us-ascii?Q?IGsDuYhXs1Em6Ag=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)(376014)(7416014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?PAD5y6H32BcR4o7VJm7UTWziENA7hIlTUyabyKAmrOkUSEgfLBWoZTnS1Lo0?= =?us-ascii?Q?BWqTNHpcbMBOqWycXxXxGHW6n9u8YbKnnu/Y4IZfRKxyppVT1VSJhuu9h6Qw?= =?us-ascii?Q?cGE7MMKzyhOjrAbDgGY6WPItvHENF5/M3giDp3YQAgVn5TaUQEaqnfGRWf1S?= =?us-ascii?Q?XDsADURoSZZDTnElnS/aTDHcbYmF6Ab3hcu9aYvCmbrkhp68C8xb1ZbB6ObC?= =?us-ascii?Q?hz65gr9qGTaXfj+wXYBo/ZREZ8rii2XdgPpdF6nygOg2zUgfvTtxhIDb5V5i?= =?us-ascii?Q?+H0CfbN3kiTR6lccEMmYpXWiO+KPFa6gbE8wnx8gK87e9hlRQLCPwNEwdGwa?= =?us-ascii?Q?SZ6d7ujI4pyr+UGJHmTZDdkDAsdM7osiF0udvADHP+Crs2Mof9eEXmekH04P?= =?us-ascii?Q?wTueqC9g3kU4WvRfBRm6qByvDsFBBgdK2J/O1b8FYU+XOAXAA3fA55VabFLW?= =?us-ascii?Q?gNvAK/sWvdr+nsW1JomQBcFESzOhRDqTlxbRBwD3tp8EAxqBon81b7Kv7Cr5?= =?us-ascii?Q?jHC04MLYYzHj+hRUMRtu7zxOa3QSK2gIAEPzbl4KvWTfm/R4fFbzVi9H9Gkl?= =?us-ascii?Q?G0K+HPeau6nOy1kKx5fdyFD8Rm4J4y6o0qvp5xM7dl8EZfq/BDGugBQCw1ho?= =?us-ascii?Q?nYbUvIEIyEjZ/1J9ZAgvWbSufA4bT+2B9pHklB0m+e8s20EYBR8aebAPqn7Z?= =?us-ascii?Q?VoBPl2+ufE/IXYwqFcnt+wLvawtT7LJZqqLTZS12FHIgXS9Y+cGbETrRZeLE?= =?us-ascii?Q?CRh9oi0dGeGbWoufjmkVOh9zzm+lShmT2hBDS/Jeq+pDZyvrgizOK0/hJfQ/?= =?us-ascii?Q?YQj0itzNRcaqvJTZ2GifD6DKZszgtBp7geZmj3D5vfGu7zU9wiBRBQKbzdxe?= =?us-ascii?Q?5g+anN3whI3dbhB+Yq2VtYLVsuM2YaxLG1QwvBjv9yBDnEesYzzm858G+EfE?= =?us-ascii?Q?El/li+0NCTTdjE6yUtFuUz6J/q6CS/FE+KsDlHZu1BOucixDtxeku5Plkx/b?= =?us-ascii?Q?DnDZ6r1DJYYsQIPyb6J91pf5xSRIUyGjq6CvAc1NPwdrcIDj8yd1wo1ic/oF?= =?us-ascii?Q?4FHf8gAP9O/XCFx9MidY1Ex30TldqiYCJG3f5Lb0bpxAgAMcJHNebth0sej4?= =?us-ascii?Q?4EMH66DKkn3jOg+pmoHPj54EeIHsiNZTOXSECZTkeLpSD8ehxGN+dt0XAoxh?= =?us-ascii?Q?Y6esKVqKnVEjcXSX2bId52UobMM5GYOijVD6BfJLifQsNxNwRqPKezt/R0qY?= =?us-ascii?Q?P2NBiGPRnC37ydQCKn/Hq+RWPHMTZE1YQQfeh0Tl+81lQbPHxgoURTxIAbqY?= =?us-ascii?Q?DM7nCQkxPw0oUlEpqVNLI+FUiZZqVClq79ekgyH1RoD1m+LKb5Lw1MgRDYxc?= =?us-ascii?Q?PBNJshuy9RNu0Xsu60NjIsfmCnXLGaWQ7FvjdkxZXUIv4ZRT+WwUyMOzaZ98?= =?us-ascii?Q?31BzULTQzTqYXp9uHqXkVhBcsrBsiy0i/SGYRTeQ4dOYSIV/YJWiCNEZzdYV?= =?us-ascii?Q?foybQKw1OvR670jWCSI2uOkdYi3EQFh7TQCIyJ9O8Fvq9cvFF+2MYyYU/cdm?= =?us-ascii?Q?/CD23PAysxAwd5qx8xcUB9oRC1a5fMwRVSScam9+wBJi30O8B+EmrV/O9TdX?= =?us-ascii?Q?7GJvICe2AtIDtSSkqA8adB8UCBCSmE8q38BDml0+IUtwvBS+jthfU480qvY0?= =?us-ascii?Q?kijRMnj/G1G65imfelkmmaPEwyam7VX/Eg+6YePGwq6ZJyW3SVifh2MqcGYf?= =?us-ascii?Q?NubrGdN0Gg=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: d885fcc4-7dd8-4303-2913-08de44dcae0c X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Dec 2025 00:12:53.7658 (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: Fn7m2oWD/21AZpK3nkGC3xjpkGipRQ047RVGWI+Wbub7yFfAqLraRgT3nAGN9dyMGCOb4PPIpJ3jMYLWqNB+Eg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR12MB8543 Content-Type: text/plain; charset="utf-8" During callback overload, the NOCB code attempts an opportunistic advancement via rcu_advance_cbs_nowake(). Analysis via tracing with 300,000 callbacks flooded shows this optimization is likely dead code: - 30 overload conditions triggered - 0 advancements actually occurred - 100% of time no advancement due to current GP not done. I also ran TREE05 and TREE08 for 2 hours and cannot trigger it. When callbacks overflow (exceed qhimark), they are waiting for a grace period that hasn't completed yet. The optimization requires the GP to be complete to advance callbacks, but the overload condition itself is caused by callbacks piling up faster than GPs can complete. This creates a logical contradiction where the advancement cannot happen. In *theory* this might be possible, the GP completed just in the nick of time as we hit the overload, but this is just so rare that it can be considered impossible when we cannot even hit it with synthetic callback flooding even, it is a waste of cycles to even try to advance, let alone be useful and is a maintenance burden complexity we don't need. I suggest deletion. However, add a WARN_ON_ONCE for a merge window or 2 and delete it after out of extreme caution. Signed-off-by: Joel Fernandes --- kernel/rcu/tree_nocb.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/kernel/rcu/tree_nocb.h b/kernel/rcu/tree_nocb.h index 7e9d465c8ab1..d3e6a0e77210 100644 --- a/kernel/rcu/tree_nocb.h +++ b/kernel/rcu/tree_nocb.h @@ -571,8 +571,20 @@ static void __call_rcu_nocb_wake(struct rcu_data *rdp,= bool was_alldone, if (j !=3D rdp->nocb_gp_adv_time && rcu_segcblist_nextgp(&rdp->cblist, &cur_gp_seq) && rcu_seq_done(&rdp->mynode->gp_seq, cur_gp_seq)) { + long done_before =3D rcu_segcblist_get_seglen(&rdp->cblist, RCU_DONE_TA= IL); + rcu_advance_cbs_nowake(rdp->mynode, rdp); rdp->nocb_gp_adv_time =3D j; + + /* + * The advance_cbs call above is not useful. Under an + * overload condition, nocb_gp_wait() is always waiting + * for GP completion, due to this nothing can be moved + * from WAIT to DONE, in the list. WARN if an + * advancement happened (next step is deletion of advance). + */ + WARN_ON_ONCE(rcu_segcblist_get_seglen(&rdp->cblist, + RCU_DONE_TAIL) > done_before); } } =20 --=20 2.34.1