From nobody Sun May 24 18:41:55 2026 Received: from DM5PR21CU001.outbound.protection.outlook.com (mail-centralusazon11011058.outbound.protection.outlook.com [52.101.62.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 D20B33B7B76 for ; Fri, 22 May 2026 09:25:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.62.58 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779441937; cv=fail; b=ABVQ3kbZWZVedRCwuzJO+7E2fjFgjtqC8IzWvO2oXo7WsOeXJCkj4gO1lTOCO05kIDr+lJOD4YL+2eOATk8PmkS48ugFbUIqt/onHOxOXGmEq0+NUY2NeHd5vuwAomS98wb/EBRYXPgAEO1LwFi0F7fE3contRWt8q+sxCfG+aE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779441937; c=relaxed/simple; bh=WqbCxz7ENuSoauWRzhFchYm/H5BpsDa83qldoBRUVyw=; h=From:To:Cc:Subject:Date:Message-ID:Content-Type:MIME-Version; b=AIdFPEmetI91fpApQIxGg8a5hJ/OMUC8tbZN1eKfjviynB2N1DZxQL3QMgdM8weGqiSoD+1YEcJMmiZCGILQfQKKY72mcXhFaKsx9IQRnTGzbArFma/qblrR/TjaSBz2J3KPnIJk4pAFoqObw9wPs4f4/dEN/8tkcDbxV2Pzwyo= 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=ji5/VljL; arc=fail smtp.client-ip=52.101.62.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="ji5/VljL" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=f5RsWBp8vLJ6DU22OgDedVVbRP6RBlFaXSyuFk3lXoYzmepk+85e9sTRZAFxp82L+/jZ/KvQZ1O9abeJlDjVHsf1Ydi8m6WEUs3Q09b0mIdId/b1OvpTzX+RNqXcvlBSvabgIwueK6fAg7zd76DoG0aetrpB6yDEXIPco0Z666cTp+605O56OxCEFTyYurONiU69k6KXM7RHwtSU+4lZx22MZ1GIU3mMFbDB9RtXuD7NkZT2ZcR9CtCHKWb22iBPGM+xjWahZM+KlNgv7MvYTmadUfXHqYE16xJkWop3Jw/rD8g64tKP8Kz8aQmnCOga4yy8IFlYpcfKGs+hcRyWtQ== 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=5AE6z0YZjGgfk7OO5nV3hOQ8XFkGsMW1iCSWO9bzobs=; b=coedznT1IJjR8FLjcfhYiSTi3n7h2/XG3uFFK+Bx1pJKfKM2Q4+s9DRcpSxj3Nt1ADvpVc84+rGSlpYyDn1YPjzN6ZamMkI4ladftEhzMuRhN+LdUI0Y3q7n+oBQ7bmu3/1ThKzWt6OSGEmAOcROjxaAOVDcz6L4t71Jzi+PjP5gP9RDabyr/c4S4OGCLCwhwuMJjn3ecQUxRqPq8yzapVDsIHtXvEGfZgigC+EfYd119hmOz04gzWUPnn6h63rM5NAL2xvQZfmTVQPbNkwZHAYDwBOz2hEw5H4fzutD/aGj6QRfzx00z2f78la73rb/2icd8Lv9kotOwckFicwxBw== 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=5AE6z0YZjGgfk7OO5nV3hOQ8XFkGsMW1iCSWO9bzobs=; b=ji5/VljLq9qjb+yonbE9LZy1Roa4GxfACt4sivRxVVsYqHHmxGaednHh4j9yAlM71lTmkmEtfGBS5uS5GJBrKQjv2VNcZVbE17PZej9I16PuG9qRbR+efPUs9qkegG1nz7t6GqZmBudAOZjD/z5VF6UmkizY88I8j428+we4m6PIHDj6ZSh2ihn7xupTCqwLuTXFtrajgSYw2nF3ca3OXhQll0CWh+chA7y7SbVk79d7Sm0yh6rOYLUkNC/8ndx/qZb9aEmd8X1EiKPIwnqPVxlMu68dFqgIQMIItUVtL9e9fLfWVqLh0SsVlVSSS+Eh+9wIAWyKr5nGLrv1mPkRpQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DM6PR12MB4827.namprd12.prod.outlook.com (2603:10b6:5:1d6::14) by DS7PR12MB8229.namprd12.prod.outlook.com (2603:10b6:8:ea::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Fri, 22 May 2026 09:25:30 +0000 Received: from DM6PR12MB4827.namprd12.prod.outlook.com ([fe80::6261:3040:864b:159c]) by DM6PR12MB4827.namprd12.prod.outlook.com ([fe80::6261:3040:864b:159c%4]) with mapi id 15.21.0048.016; Fri, 22 May 2026 09:25:30 +0000 From: Andrea Righi To: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot Cc: Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , Marek Szyprowski , linux-kernel@vger.kernel.org Subject: [PATCH v3] sched/fair: Fix RCU usage in NOHZ exit path on CPU offline Date: Fri, 22 May 2026 11:25:23 +0200 Message-ID: <20260522092523.2046095-1-arighi@nvidia.com> X-Mailer: git-send-email 2.54.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZR2P278CA0027.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:46::19) To DM6PR12MB4827.namprd12.prod.outlook.com (2603:10b6:5:1d6::14) 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: DM6PR12MB4827:EE_|DS7PR12MB8229:EE_ X-MS-Office365-Filtering-Correlation-Id: 958a9fc0-6c1a-41c7-678b-08deb7e41166 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|366016|11063799006|5023799004|6133799003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: sDGcNj8mnK13pCVWZBFIV8PigfsmIpSr/bsQLAVQF48KxzsYd9Uz8KNEdb3+KsQJW9Stjw13wCQq9jaRLiqhP1XErxlXDSAdJ61RFuLa9rxlTjmA1i98nsFiuGhlI2dA5p795v+f0RU6+G+aCA5yNzERs30+oGt69Q1lq49IevATG0X7tk7Q0CxyejjKtcSrfGKWftXkDVhIWoafhZ0KsAv6omOJuekbIkp5lisFy2G/tSfMZVOBkhIPkyvv0EyYiW0XFKIHhzd7n1P2pSDBJzlSLXeEXOp1s9EKo4rH/aj0k5AQvTZv3WTjDqB+hEh8X1fVl8mBszaBN71Ea9TGv14731nSMQG7jsadtseTlCfLhn7ZjrmNP8gOhsrtnJZihWcn5wjhf3ITG8ER6psKPmX1cBazEFhI1blMsUA3u3D11uP91mAxIb3rJzM6UM2FErs5Rfza4x+cmipmYOB9iToxMWxKxA19/dXJVX49S6qAwk4oF2FhG+iiceO4jGCh3pNnneDf5MKyGCuCF4vxl1n2CaapWlHLQhFm008bL48gWgrRZkX2o4CYeE/uI02MtaL01SPi+Q/AsfIC4DhmeZsy89mYJ6Q8+UMCDs3Oep1Mhk8Esni9jARgwOGgNRgRcIRZrGtUbOXu3gDSRXWRknJazauQwijjK8eMzpGD3a8w4okHX52xcDNtokvsNKtwkPExKF3jcf3GC8gSmRni9w== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR12MB4827.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016)(11063799006)(5023799004)(6133799003)(18002099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?qfoe7kZo1Nz6ABac15OjQcrwcbII/IytPm+6YqIp2se3pXSM+/G+7QTPHMl8?= =?us-ascii?Q?abZKAEFa5IZkv8OB/m8hUOqcLJRDLHvKKmwTLKVt94B9P75podfP0eZe74mg?= =?us-ascii?Q?2xNn69R3E3fB1w7QlwYuUUPd+K46qOZH4Y2fsqyD3AosFvaL1WB6GhmAH7RC?= =?us-ascii?Q?E5gMufQQUZqp9lQM7r+nWdqQqZOs/uMbkQuxzj2kmwbNQbZulSGdEEYh4dxk?= =?us-ascii?Q?m/21Pmf8PcGvkNPff6koRCZM0VFaH7cxfjrBmJwmRtPIBHKgi/T26+pCTfLc?= =?us-ascii?Q?eCpGv65sgK41SkqBDYDETjksiVdLdFZFb5gUoZvfEgsbGG+2fiQGebY9Q8oJ?= =?us-ascii?Q?39/PH6HYz5dL7bB8eGxIVWChKxNDsHQq2JPD3JGPb9I8ZZqJksafbW7oua7q?= =?us-ascii?Q?kc9PPUdNpmFXnQ951VusI0DphWZntRbsAMkbTQPuautJbUVVR5PhETQutY8b?= =?us-ascii?Q?Vb4d7gTRRQt7SEb5Hfb8aJxoOklBIGM02Yq8ihmXwYGIezyWvprEv51GIxDS?= =?us-ascii?Q?TcqDFi+LT5mvPxMj8swbqjywVgcwrfqyhZexa9SGJKpASUnTV1lb7/Z0imgc?= =?us-ascii?Q?OmgJrK0aSAzsupN14ujqMtZn46Wfv34R/NsZ6m763WUvTT3KqpCepUz9imGR?= =?us-ascii?Q?3H/30w7HKRs/fgYsGeEj3Zd4E022wP2Nb3bpDRQ+yzzqHdVKPSptN7dzWf9Y?= =?us-ascii?Q?0ozEXVF/M9+DT9Q4fHOQ3NQGz0EoEK4tIFHdf+51rEftkLMdi9gUqF7c1igG?= =?us-ascii?Q?Xs8EejhSgBLVJJfHqAJDE5bc89gAQ+gGHmsc6cvgUhYuvN4S3prAzbPZtaHZ?= =?us-ascii?Q?mk6Q94+Ei8XBLrPwuCT3KGhI9tMsS01+B8d+xOHXztW5BDgeXXVTQZLRQQu3?= =?us-ascii?Q?3zreF+Tvw4ofhJTkrZp3Qrwh3TIsOzudZUTMqXv1f+ZOV8BIg0qd+mLhrG/X?= =?us-ascii?Q?9h/ROiqo6fbWxFvw0akHL0YZ/SiCINqTEs5J5QqozS5NmobXpPLKczEFYapo?= =?us-ascii?Q?mp43qEA+EkGOwAn8u9HlbA56RJR3yyGhczWSaAl9ORXeroVy4qNZ8CjGnAUa?= =?us-ascii?Q?JGZXOwkWWg7Sa/HG86HPweIQHo2Hpf+Y8/iLmPVXYAqp7riCcisOkeJpWn1T?= =?us-ascii?Q?IVYNhCsveRW4TLfn50xjLt9cfq41G2Gtk4g/HUsJXA5NDc9+K8AVby2Zunl8?= =?us-ascii?Q?nf4wsmipZLVzoqoQVQg4cpez7nPHcf9rNNgrZtfUTC9bYwA/CbKhvOB+1hst?= =?us-ascii?Q?6IZjoRK5u3t8IxrvKjkIjm+BQvG2Wf3HtrbBmLX3o2Uf4gT/w5JPIshp6PCW?= =?us-ascii?Q?0gabp139qL5GsJWH+c8BX0TzUcNR5R83SOKG68bieFij5pt/fkbHj8dB7q1u?= =?us-ascii?Q?J1nSGLHJAB9NRHcLhCo/MdbOrSgH/j+o+SCZjE5BjNoUWOiLi6uD4OWryaVT?= =?us-ascii?Q?x8n5m0ihHgj5FQCMlo01K38/NyQVH70cPG+2kZHzEsms9LG3JXqPd6tT7jop?= =?us-ascii?Q?4dvSMvKQjST5sEVnjbvjk/H3PqqwjANJmcqXuORk5VpHdzZmTOcaM2YTpODE?= =?us-ascii?Q?oJ0+uAsfVv8cqJpKYb4LA7SO7N/fLBHaw2V4HSGzm4Q59OQDIg7iHvmXpzYx?= =?us-ascii?Q?x3B+O/fDru/6uIBqOw344A+HWDtTC8z7i4vBKZz7EQugbejevZdgK3Nw1fAW?= =?us-ascii?Q?36Z7iu6Jm8zSPqrGy7welPz79QVnjTwujLOrsInw/HO9CY8009KWdxFuEfHL?= =?us-ascii?Q?Ji/XGtvRlg=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 958a9fc0-6c1a-41c7-678b-08deb7e41166 X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB4827.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2026 09:25:30.6939 (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: WNzCv+VrLb1wENPtRwibnrCf1aBEjN3+93eOz8OKG/ZlByFABj5rJC1Lh/dcCerG7zhlM2p12rHuYEmKgLG7cw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB8229 Content-Type: text/plain; charset="utf-8" Commit c9d93a73ce87 ("sched/fair: Drop redundant RCU read lock in NOHZ kick path") removed the rcu_read_lock()/unlock() pair from set_cpu_sd_state_busy() and set_cpu_sd_state_idle() on the assumption that all callers run in a safe context for rcu_dereference_all(): IRQs disabled or cpus_write_lock() held. That assumption is wrong for the CPU hotplug teardown path. When CPUs are taken offline, set_cpu_sd_state_busy() is invoked via: cpuhp/N kthread cpuhp_thread_fun() cpuhp_invoke_callback() sched_cpu_deactivate() nohz_balance_exit_idle() set_cpu_sd_state_busy() rcu_dereference_all(per_cpu(sd_llc, cpu)) The cpuhp kthread holds cpu_hotplug_lock (percpu-rwsem) but runs with preemption and IRQs enabled. As a result, lockdep correctly reports a suspicious RCU usage on CPU offline, e.g.: # echo 0 > /sys/devices/system/cpu/cpu1/online =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D WARNING: suspicious RCU usage ----------------------------- kernel/sched/fair.c:12793 suspicious rcu_dereference_check() usage! ... 2 locks held by cpuhp/1/20: #0: (cpu_hotplug_lock){++++}-{0:0}, at: cpuhp_thread_fun+0x42/0x1ae #1: (cpuhp_state-down){+.+.}-{0:0}, at: cpuhp_thread_fun+0x72/0x1ae Call Trace: lockdep_rcu_suspicious nohz_balance_exit_idle sched_cpu_deactivate cpuhp_invoke_callback cpuhp_thread_fun smpboot_thread_fn Fix this by adding RCU read lock coverage to the one caller that lacks it: nohz_balance_exit_idle() in the CPU hotplug teardown. The other callers (nohz_balancer_kick() and nohz_balance_enter_idle()) genuinely run with IRQs disabled, so they remain unchanged. Fixes: c9d93a73ce87 ("sched/fair: Drop redundant RCU read lock in NOHZ kick= path") Reported-by: Marek Szyprowski Closes: https://lore.kernel.org/all/38fe0a1d-1a48-435a-910a-c278024d9ac9@sa= msung.com/ Suggested-by: Peter Zijlstra (Intel) Cc: K Prateek Nayak Signed-off-by: Andrea Righi Tested-by: Marek Szyprowski --- Changes in v3: - Add RCU coverage the offending caller (sched_cpu_deactivate()) (Peter) - Link to v2: https://lore.kernel.org/all/20260522051923.1840812-1-arighi@= nvidia.com Changes in v2: - Use guard(rcu)() instead of rcu_read_lock/unlock() (Prateek) - Link to v1: https://lore.kernel.org/all/20260521205115.1689545-1-arighi@= nvidia.com kernel/sched/core.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 7fb3f5f2d48c0..b3a416b1c2510 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -8681,7 +8681,8 @@ int sched_cpu_deactivate(unsigned int cpu) * Remove CPU from nohz.idle_cpus_mask to prevent participating in * load balancing when not active */ - nohz_balance_exit_idle(rq); + scoped_guard (rcu) + nohz_balance_exit_idle(rq); =20 set_cpu_active(cpu, false); =20 base-commit: b07a332d9cbbd9cc9cfa923a21bd061cfb69bea5 --=20 2.54.0