From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from BL2PR02CU003.outbound.protection.outlook.com (mail-eastusazon11011025.outbound.protection.outlook.com [52.101.52.25]) (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 30E793F7ABA for ; Tue, 28 Apr 2026 10:43:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.52.25 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777373017; cv=fail; b=adr4DY0Cu2fCpU5vG9Q2LxpPZKPjAZ2Nl855S6M3a4RkWtyLvU06QsBo6A+bvVkUtz+Sa5bTmqJcb4Z6699ZslbZ6f4TzcPT+BziA1grNakL18KlzGPOyO/vLViETJnZBMQzgsqGAUqR6yhohgJRfMuA2PTEkQyHfGCTBPBeKi4= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777373017; c=relaxed/simple; bh=LWkhzY64HAla+Sms2qCp/bxz51zFORbh7jSrWb5u2Ho=; h=Date:From:To:Cc:Subject:Message-ID:References:Content-Type: Content-Disposition:In-Reply-To:MIME-Version; b=DUc7R/w2iexUuP/ugMz0exIQOELxWEXfvYgtqhbzTgJGuPh2Dh8/QSg2ClTfLU6fRfcaqPYeoqSgqG7zKTmcLr5m6fePa6FtH/aQ4fLhsU7w3WSlNhO1WVOC00YTdZkkOayFKnXQy1ZKlAx9m/URgvwref1md14S4W8JnzSIsSk= 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=hI/mkqgu; arc=fail smtp.client-ip=52.101.52.25 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="hI/mkqgu" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tRRB/0hRQT7sDnuT0M/ekFqL+7ZOZNixljPrGd/s7Ex/4XEym40j1klSD2s/vEjbXnyoqgIQpZiKOts99jfKenJ9gRmPD/U17YdmiScW5cyrbCQoKndfBlsU/5odkFxXjvZOWxrJkJ4k4Yb+3a8SFyDRvnkoTje/tBfeypjKM/OrzQErQtGWoF8TTGXB7KrWzhvfU4BsfTGpzsnWh97H3kZAn8Nfj9n5Lb4fBSmAI3jD2R+R98m1kL3tuSYBC/79MSZJCoHiUuglK36A/bnN1seZG2XKpeBlUv98BLB0buJKjTA+Q/6rcvsGm9OwpdiZcbQfARrrG9uPi/N0R1Qx8Q== 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=9FPw7Cy6iLSMvverdBaI0M87MjauWobpTn3mWd1cVlY=; b=n52navAnku0xRdf4G35swXxB20lpn2+g3a6pxlPTPRKpR0bo4JxOsSS+fHYVJqqslJaimOhYLnCwkYgq+q2lGwBimvWrU+FBwPilNQpIJSXBQb9ufNRuNlyQV19flMKDnGztft+fXytviJpyLCT74BP0vHGxW73fVDzhPzZnGPOWK8s0AxULUrrAv9HOmwPtOj7JawOjBAiymf7qPaMq1ejsZI6eWM4IhA2Pi7kIc8LlMR3E+sGifqaAZ+4urCS+hxu/o+4krxFdaxTlWlYPkFlOoT6pq9XgwTpLyY7GL/9qbx6hBTNcsLh5sm8/jCRSffWcIa5bFLAPNQQko2Qs3A== 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=9FPw7Cy6iLSMvverdBaI0M87MjauWobpTn3mWd1cVlY=; b=hI/mkqguuwDPqjAMryH+Kcghu7XbM0uFZLCRH6jHpobaZUz01uFuKyRd9pEZB7QWRF47k5AgfMLxNiV6T3t9TFynBdrznU0wTY50aoeYs6K9601X39cABg2vnpcEKU3xUMWmsIOX1iITDzia8lz7lYyrhZ1Y1g2n9/EtAsAsjQP982FJPHXJO/NslTLLHD11wvKHWdPOdyo2YvnPXM6MAZiMaF9unbdhsKNJWQu50F4XWPQJWP0/VjMJvpk8dKmc9Xv0jxwokVRsMSBhGpIhAA53mmTFXJ0+Dn0vB2RUM2RwdVkurMLVAUuE2zIkwseeYXGiEV9RGaQ8UxJbUw3mfQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) by DM6PR12MB4060.namprd12.prod.outlook.com (2603:10b6:5:216::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.16; Tue, 28 Apr 2026 10:43:31 +0000 Received: from LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528]) by LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528%5]) with mapi id 15.20.9870.013; Tue, 28 Apr 2026 10:43:31 +0000 Date: Tue, 28 Apr 2026 12:43:22 +0200 From: Andrea Righi To: K Prateek Nayak Cc: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , Christian Loehle , Koba Ko , Felix Abecassis , Balbir Singh , Joel Fernandes , Shrikanth Hegde , linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/6] sched/fair: Use guard(rcu) for sched_domain RCU sections Message-ID: References: <20260428051720.3180182-1-arighi@nvidia.com> <20260428051720.3180182-2-arighi@nvidia.com> <0882ce78-a51f-4317-a1b4-624e39e65507@amd.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <0882ce78-a51f-4317-a1b4-624e39e65507@amd.com> X-ClientProxiedBy: ZR0P278CA0094.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:23::9) To LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) 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: LV8PR12MB9620:EE_|DM6PR12MB4060:EE_ X-MS-Office365-Filtering-Correlation-Id: c80f7dce-7c1e-4544-0d80-08dea512fd3c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|1800799024|376014|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: Pt6o5/4ocmAejZoI7t88wt7zYyJ9/PCPgNGVh4oATIMoEojLRhMjCVOLAgD4xDQPTSVJK8eKaG2H4YfO3bla+0Pph0FpU5VnSuUbD7tRyRw0EuYP2J2riLmbYY6LkiLMBu+e2vPHsaByCvwMECuvLk3qhcLho9Yr8akhE2xHAK23fHSIQzXTGZmzJ0y+jeRkQy5twaonjh3tQSDr2IZDClYsycIQ7UUI3hp4oR5YyKhPgdxXhKJVGK+l2lwYPCC6WN8koNb0KChCiRTqqMWU42Pu/RGXBQSkeqjhD4fFQeqVjYbE7fPXP/I38A68bOAud1kRo7+hjYW5vSLUUV7P62EwKHlGbXsljUFy7LocrBF59J6a9euAhoewQHTTfHxTfkpN0aVHK+6cv4cXRMu0QVOmvdKtL06J7/6akarvUL2Xjc1/2FzvRWRPmhlkszd8Nn6mWz2o6QQe5f+3HlGjkDLXnRTWt/g9nqjuO5HQtdd2ga8f7WyLaEYlo58448SKGAfchu8K34USPFMASjHItb/NP4xkTuKvOXTnehtGhPCmkuHo1d0wA9K2Oj6zBmFcHeBvjFROqDqpt8qA6E8a5PTFo88AxIQUgFtEFa041OsulmbqvVf/VISV0WOCFFl/3XqDKckbbxAJtkfO6/xypCeWDOGRO1ObNrjVw7Bk5Zcg6Q7BoTbzRJFgSf6xgvqCDJxSPt+YqRusZJcdU/nbsL0NNAinPPDnMv8gLRV50UI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV8PR12MB9620.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(1800799024)(376014)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?/Hav5OQSqwxJBjmfrP/K1v/GMgn4OO3ZQ3O+cmZupUZra7+RVRkgOHpKXXzM?= =?us-ascii?Q?mR4Deg+XT3wAZujP5/dTa/g14akJID5tE8o0VfkJVQMEaIah5A/RmpBg2p5w?= =?us-ascii?Q?0p8mDLUHRR4HVaZVb/Fg3GwdaF3Ja9saa7XbSzrU1PPGNFeMXd6Ji1zpe3A2?= =?us-ascii?Q?ETmpkCzfUSca1dIfKKvRzSsHOk60sfvJTLfQ0pxl2rjZKBrS0Lt6uUk8A7rT?= =?us-ascii?Q?r3mtFez7QaQqu9z8pMcPCjCeO8RE3sbkQrKitKAE4LZSo18O95rPlfhWxkI8?= =?us-ascii?Q?iiJbC9weQodtUPWVOHKkbiJ1bEhCgPBR3cWhLfKNxuGb5kKIcA3+o5idlEOq?= =?us-ascii?Q?ZieuXcySwVrDGgoPgaDcKjmlsu8yA/+/C1tMNaJ1KftsQFV6sOnwVqSMbcNa?= =?us-ascii?Q?xel7HEcHKYOaHBqTj86RV4STfGLrbxbxOL9CvMbTcb6oN2LelSyXUAMAQ3wT?= =?us-ascii?Q?jgyg4ly02BM/pJbfyoQ1N15Ht6GWLmaDi5q8rvapD2PXpa7T/pvO7HV801bc?= =?us-ascii?Q?UU8mvOtAivK/3prY0RsvXULE9lL4/kKvyxyAuwsRHBjLmrWiZCxGgKSCzaiO?= =?us-ascii?Q?vDEalB4YPBpufprvuImqYJ2PbuOVDgsjwkg3CoS8urmG7zrU8EnKiB/PJFrb?= =?us-ascii?Q?uiSKMT2iyCmkYRqlzSXTI4G0JLfalLQcDGLSCJROq0Pp8/SgFc5v5tUUnBT2?= =?us-ascii?Q?Xmnn1sgSixXPwb98HquiHgaXSNex61s4I4VPo2lpl9VQ9brK53Ysnxukj/a1?= =?us-ascii?Q?7l78kK2abAWUEm2WhsIUqrSpknNGN3klWFzr7ffGe6TAnnkWkEIsO1iiuAkd?= =?us-ascii?Q?AdcUQ/lIM9Vtg+q7ver78hG+IirnODUccPLh9U9SMi0KKZaZL6h4J69iKxrz?= =?us-ascii?Q?x0wGfYERIJpMlRHQNPVoCTAuEY1ch3mYzXxlME9THJiaFupOxZlpzwxu8ZCk?= =?us-ascii?Q?pdIDKjSYaIhBvGA82x4MB4Vi8ZDgw7COtWf0GiHNU+gCCikf98qyKegrU+7b?= =?us-ascii?Q?bkDgIrc/dr81bOhZvqkHQ6RGunFepqrM4B/Gj6f0nV37wNzRulK9t61GOKw4?= =?us-ascii?Q?Uc9xERKXtgrSK+7xL/w6mZ2nxZ0ytyL2SEq2yG8ej5+fZa2jnN/s5L64rDCm?= =?us-ascii?Q?mSqu++QakBw0wo8t2hB9y+eCSCcHVqTjEggz+WCOpLvJcFek8oOWOz/DmTZZ?= =?us-ascii?Q?DpF6VIR/rXu+okzg/zTv1LoA/pLi2UORBtC/2wEIWP7wC2MUSx04QNiPS5GG?= =?us-ascii?Q?PP2o0GZgZk3h59sRVdV3ZUMzE0zuTgAFbfw6K88xwFH2zc5ZPxTXMUSS5ob7?= =?us-ascii?Q?GkfH+EgrYNNFVdAf2O6kOeNE4fktK4ittbi1/99vSM0JGbRMftHeco3oybe2?= =?us-ascii?Q?XuUm9ozN33241Ak3S/m7bTznJOxm7rvXVzh7i8d/fMfGXXIEIULjbfKmTciQ?= =?us-ascii?Q?9eDpEvovjoe61NVOLBqaT5tmWDk/SP3fVzr7VvcAV5cW4wPInUVzUKD7TEZ2?= =?us-ascii?Q?16dY9Ds6ySJ/7ZzmVa6gY7UnLR6AWpzObYBpfg7jTfQrGwf5Gk7dLCJ862Hp?= =?us-ascii?Q?MI7KwCmgd2cSiztnIkLqVcSHVL8NQcuGZVbgWjqn5TPMW9rSBN8BJX8i0l2a?= =?us-ascii?Q?5OG6UJg0Kklaxq+s2uKaohCdypjAoSnNTDQeGZ6s5QeR62uA/x2BHKE7DY5u?= =?us-ascii?Q?FzkJd4RZolZx0LkQRddx9ztdmK88vVQnkWOnpI3BheyUjQzAGGvMYPwMjRmm?= =?us-ascii?Q?4tnbUnQh1A=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: c80f7dce-7c1e-4544-0d80-08dea512fd3c X-MS-Exchange-CrossTenant-AuthSource: LV8PR12MB9620.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 10:43:31.1607 (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: qyDYnIQDd13YUbPNCCIzfQSPGr/DiWZcBgXkL7/NBWtcDdwfe1MitCs1cqlAgZBCvPSD8wbzokpaO7aNyhEH+g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4060 Hi Prateek, On Tue, Apr 28, 2026 at 02:03:59PM +0530, K Prateek Nayak wrote: > Hello Andrea, > > On 4/28/2026 10:46 AM, Andrea Righi wrote: > > Use the scoped guard(rcu)() helper to safely access sched_domain > > pointers. > > > > No functional change intended, this is preparation for topology work > > where sched_domain lifetimes are easier to reason about with explicit, > > scope-bounded RCU critical sections. > > > > Suggested-by: K Prateek Nayak > > Signed-off-by: Andrea Righi > > --- > > kernel/sched/fair.c | 141 ++++++++++++++++++++++---------------------- > > 1 file changed, 71 insertions(+), 70 deletions(-) > > > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > > index 69361c63353ad..fc0828150c780 100644 > > --- a/kernel/sched/fair.c > > +++ b/kernel/sched/fair.c > > @@ -8083,6 +8083,8 @@ static int select_idle_sibling(struct task_struct *p, int prev, int target) > > */ > > lockdep_assert_irqs_disabled(); > > > > + guard(rcu)(); > > Since IRQs are disabled, we don't need an addition RCU read lock here. > See a03fee333a2f ("sched/fair: Remove superfluous rcu_read_lock()") Ack. > > > + > > if (choose_idle_cpu(target, p) && > > asym_fits_cpu(task_util, util_min, util_max, target)) > > return target; > > @@ -12701,55 +12703,16 @@ static void kick_ilb(unsigned int flags) > > } > > > > /* > > - * Current decision point for kicking the idle load balancer in the presence > > - * of idle CPUs in the system. > > + * Decide whether the ILB needs a stats and/or balance kick based on > > + * sched_domain state. > > */ > > -static void nohz_balancer_kick(struct rq *rq) > > +static bool nohz_balancer_needs_kick(struct rq *rq) > > { > > - unsigned long now = jiffies; > > struct sched_domain_shared *sds; > > struct sched_domain *sd; > > int nr_busy, i, cpu = rq->cpu; > > - unsigned int flags = 0; > > - > > - if (unlikely(rq->idle_balance)) > > - return; > > - > > - /* > > - * We may be recently in ticked or tickless idle mode. At the first > > - * busy tick after returning from idle, we will update the busy stats. > > - */ > > - nohz_balance_exit_idle(rq); > > - > > - if (READ_ONCE(nohz.has_blocked_load) && > > - time_after(now, READ_ONCE(nohz.next_blocked))) > > - flags = NOHZ_STATS_KICK; > > - > > - /* > > - * Most of the time system is not 100% busy. i.e nohz.nr_cpus > 0 > > - * Skip the read if time is not due. > > - * > > - * If none are in tickless mode, there maybe a narrow window > > - * (28 jiffies, HZ=1000) where flags maybe set and kick_ilb called. > > - * But idle load balancing is not done as find_new_ilb fails. > > - * That's very rare. So read nohz.nr_cpus only if time is due. > > - */ > > - if (time_before(now, nohz.next_balance)) > > - goto out; > > > > - /* > > - * None are in tickless mode and hence no need for NOHZ idle load > > - * balancing > > - */ > > - if (unlikely(cpumask_empty(nohz.idle_cpus_mask))) > > - return; > > - > > - if (rq->nr_running >= 2) { > > - flags = NOHZ_STATS_KICK | NOHZ_BALANCE_KICK; > > - goto out; > > - } > > - > > - rcu_read_lock(); > > + guard(rcu)(); > > and since this is only called from: > > sched_tick() /* IRQs disabled */ > sched_balance_trigger() > nohz_balancer_kick() > > with IRQs disabled, we can get rid of that rcu_read_lock() entirely. Yeah, all makes sense. I'll update the patch dropping rcu_read_lock/unlock() completely. Is it worth adding a lockdep_assert_irqs_disabled()? Thanks, -Andrea