From nobody Fri Dec 19 13:09:32 2025 Received: from CH5PR02CU005.outbound.protection.outlook.com (mail-northcentralusazon11012040.outbound.protection.outlook.com [40.107.200.40]) (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 0BDEF324B1A for ; Mon, 8 Dec 2025 09:31:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.200.40 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765186279; cv=fail; b=sZ8ZKhRTZfOvRChlCGjQTLeXMNGXBYVseHjrR3KGF4uOS5YbA1GEU+Zsk9XBD2zbE7rJed2CCHgxefgNoW1jeQ3Yh42v1W9TvNPKig4xJdtF0VzhXyzNSTrWMpJP+dE+xemw0zZe4+T+iE4CDTcn8TnRixRClxyw7Nzr8qmwL3g= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765186279; c=relaxed/simple; bh=XdVRm6MQKdv0XQBa/PL5f/3NgsPBhy3krYrtQuLL7ig=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=PAayFWgOuns57KRNCLmj556R8enb0mmPWQ3oKBjolC7aErMkgTJPI1+KgzOSvu1ceki0wG6NCDpJPP99vQM56H21GevTFIiuMJw9yhJj6eKZGvNRSH9ApJzkXkQOWRBCsSB1HF65Tr3WT5uH1ZPqtFZq8LQjjClrLPVzuW4M0ak= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=Mff6tfTg; arc=fail smtp.client-ip=40.107.200.40 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="Mff6tfTg" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lMAWyz3YOmtzb7Ofvu1tXbAeyCG26ukKJQ2XzKiGFcrtvpZ7qaT2MFjLprIwWMxXjHX5CcI8SkfpeQ8992L/003uLWnDLJfg7reVr9Z7dLN1NEl8NNJczDv7Qn9OYu5DLeADbX9JPUMZ2G+AH6785d1NSzvX1C4tkGG3I0LHm26gjU6Jjf3LDP/D9D0FxLSEF9LXwF7A8DgfbQ0Fd0Ds55/ngX3Mz/BTu7+2c9x81k76Z0eQ7rZ5VKeCXjA5ZWdSc8piyD8gsOjjDqWDdkMHF58B0z4yGJn2lXf6zMia2rLe31Bit43LpxazQ3BOw/SFfZkvNCmBWfbg5iXbLuqu+w== 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=DbPK/vKM5nGwjrAAktLS3Xf+uPayk4Vhiyijo6IZxjM=; b=hpkzJZkfmw1zADKAqe6UZjWLjyMxoZeLDMoP5SPABWr3S+9GSAIhntewgsjqA4ppkXVCGcpgHPI+x9tsICbTuiZU8HFy4vZBYPHliHbZ6mHQpjtvkxFpsnORrNEuPIMh670sqV53HzzDIPZMuk2ddGm7JrsH2AphHmHzECvCAjE+ouZ0jkXKjO3HYNuKrDsXO71o4H4VhbR64+RaNqkKcQVO8WhtYIQt52BofcFgHcx3S0UR3OByNOH6l6vn7sL785lF2dKPvzBLPzEvXcR6n2T+KLMz+KNctRXZbqXvHkxL2GiUHP/3a4EoJdPsdDzLduHF8YcBRUmWlE9kbe1q8Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=redhat.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DbPK/vKM5nGwjrAAktLS3Xf+uPayk4Vhiyijo6IZxjM=; b=Mff6tfTg4x/ck+vppLnEswWnUbxgpd2TDZXJArWZymHgFr9ggP++U4o5yLPGYl60W9e2SMRiRweGausfOufT/CGrQ9cW/O04aoUDYoRahDlzqs0uZZbqJrW5da2/ZLLt99k8gEzTV7XmVutvo8aw/IpDmQXLaXmWVHKTcqiCRwk= Received: from DS7PR03CA0051.namprd03.prod.outlook.com (2603:10b6:5:3b5::26) by CH3PR12MB8257.namprd12.prod.outlook.com (2603:10b6:610:121::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9388.14; Mon, 8 Dec 2025 09:31:14 +0000 Received: from DS3PEPF0000C37A.namprd04.prod.outlook.com (2603:10b6:5:3b5:cafe::30) by DS7PR03CA0051.outlook.office365.com (2603:10b6:5:3b5::26) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9388.14 via Frontend Transport; Mon, 8 Dec 2025 09:31:14 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by DS3PEPF0000C37A.mail.protection.outlook.com (10.167.23.4) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.4 via Frontend Transport; Mon, 8 Dec 2025 09:31:14 +0000 Received: from BLRKPRNAYAK.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Mon, 8 Dec 2025 03:31:08 -0600 From: K Prateek Nayak To: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Anna-Maria Behnsen , Frederic Weisbecker , Thomas Gleixner CC: , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , "Gautham R. Shenoy" , Swapnil Sapkal , Shrikanth Hegde , Chen Yu Subject: [RESEND RFC PATCH v2 12/29] sched/fair: Fixup sd->nohz_idle state during hotplug / cpuset Date: Mon, 8 Dec 2025 09:26:58 +0000 Message-ID: <20251208092744.32737-12-kprateek.nayak@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251208083602.31898-1-kprateek.nayak@amd.com> References: <20251208083602.31898-1-kprateek.nayak@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF0000C37A:EE_|CH3PR12MB8257:EE_ X-MS-Office365-Filtering-Correlation-Id: 36504905-f7db-4a95-4c38-08de363c8855 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|36860700013|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?7j14z6L5dX5WZKuXQQuER9FOuZkuqxa+6I9GLLUra1nyx68uQTC7cyqGf3Gk?= =?us-ascii?Q?F5WnJ1sOemSDdxLqWLI0wx8KQi/6FFTkkNZ0+jo0wlpyxw9u4y+1nQf6NQFM?= =?us-ascii?Q?7QQiChrLyrAwfmoMm9JnDvbfD71BCbN/j8ni0ZO6ddZFI7UvkMvECn3TURd1?= =?us-ascii?Q?j1LioU7gJg1loFGP46SVp462+HqxGe7WQqhMT24I7v/Sws7DRdUuRzS8oAbW?= =?us-ascii?Q?kx3TFFTSruCJpjbgFo0J3qJ8pSZPc5WAq1ijuaotTraNDVtRdqOmVsUf4eqI?= =?us-ascii?Q?hmga5FxAYEcaCOEeI1gwbltKCMxX69IUI9zZ48Hw58tEIsH3vGDXcEOvHUFP?= =?us-ascii?Q?8q6m/rG0TOUeWU+mvm/8hcappKM8zG8UTHDwzzmPMo6fhlNBVOuQuGaagWq1?= =?us-ascii?Q?cgDNS9REQ263mRgirYPBAGjqODc2oC1Zbf//V30DmgilmzXvAsV2EIZ1vMy7?= =?us-ascii?Q?0fnPN6EF291Z7Yd+loPIEPxTN4AWf++kxWrinyuxlt65QTT2Hrr8rWFqRYek?= =?us-ascii?Q?krtgyXtbacCNbB2ufvfFyqf/gjrTyvo4vII3LSurNBQCuz5jr3c6s9+jMPYy?= =?us-ascii?Q?Zmmot6p8NLa4eOeT0W2s2KPCCh8ZbCpe/ZpO+7vWH1sL5hBDv9qKe3XWA98p?= =?us-ascii?Q?o56bxzL7uHMRd1De/nFzmNjt7Oz/OnLyHnYBI23sNafyGJTxhw5mcznQN4l4?= =?us-ascii?Q?Ff8vFyrGaml82nd6UTtBPpG4MTJ2QOOiGL7J/FZu0Hm0fAj0tQ5oWjCcC7Dk?= =?us-ascii?Q?4zQbWAg2IvYGR1d404XZhw5CHve1Y1jbm7VzJWOGF9ft5e34hZshTYPDEsCx?= =?us-ascii?Q?2aLYV+QWCGZA7k81MXHTu2P7Qv7QcuR+q4sST78xgWquH1dCmpyb05gwJ/Iw?= =?us-ascii?Q?d7WbYhpXxtIEkk48CvfEr27vepQ8pmvt4Hb7R0IN/Lnci2AgoBsit39zKIB2?= =?us-ascii?Q?07lpLWTHRaU4KIK0oqwsO0mS9yxFXAwe8lg9eR52DdR/Ilh++z87nio1O7zd?= =?us-ascii?Q?EO0UsG2ANR4luMcqJ2wghUJBS1j7KQeG3mLqntujKVRfXMr8K6TXmYqXm0+K?= =?us-ascii?Q?3W2o+1c/n/I+Z/jkZ7IUSGyLmQ2HiTrSxFSbJhKc9M7GIue5bWtm2Xxzfg9T?= =?us-ascii?Q?DIzuff1bHZkaQ7fw72infpcPWnGSGfcm8/dP73pYA4GEPjr28GexiYrS9xbM?= =?us-ascii?Q?fACO7YZHBmyzuwIEEYgn5rGTA7vfhddmWl9qUMAqV6HX8N3j3PX/Zw3pSLDo?= =?us-ascii?Q?zGRlp+XgSLP7THu1rQoA6PUD6ZImP8of0pIS11jY2CPq6D1Z57U1WBCEyy6h?= =?us-ascii?Q?uVV3R0O6yOZg9pVthvhv3viKwtpAJcAgwnqZMbCDAj4uuNUT93WyWHzv4Usb?= =?us-ascii?Q?1zy2DWtUCRbEBtjKnthgt8fAIO05ZFsfREuKMdr5VLCFhNFX5HKiC0686elN?= =?us-ascii?Q?Md7GUtjbmy85HvWD6e9k/wWYhCc+m+bRnxfcKfzE3+qa96mEw8EiV5C0JCCi?= =?us-ascii?Q?OSi12hFT34aeWfyg+MUi4rbgKDuD7wT3m6uxootxTcFM/OupRoXHL8nhaD0p?= =?us-ascii?Q?PkwsrkfGD+p7aGKUtdI=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(36860700013)(7416014)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Dec 2025 09:31:14.5901 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 36504905-f7db-4a95-4c38-08de363c8855 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF0000C37A.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8257 Content-Type: text/plain; charset="utf-8" When CPUs are transitioned offline, set_cpu_sd_state_busy() is called to exclude the CPU from nohz idle balancing. Currently, it is done independently via sched_cpu_deactivate() but subsequent transition of the nohz idle tracking into the sched domain hierarchy would require each CPU's status to be updated in the new hierarchy generated during hotplug / cpuset. Call set_cpu_sd_state_{idle,busy}() from the fair_sched_class' offline() and online() callback respectively to ensure "sd->nohz_idle" of the updated hierarchy reflects the same state as "rq->nohz_tick_stopped". The changes from the prior commit to always update the rq->sd and the top cache domains from rq_attach_root() ensures that the offline() callback works on the older hierarchy and the online() callback works on the updated hierarchy. Signed-off-by: K Prateek Nayak --- kernel/sched/fair.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 3128daf1d5d4..de9e81eeb93d 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -12595,6 +12595,18 @@ static void set_cpu_sd_state_idle(int cpu) atomic_dec(&sd->shared->nr_busy_cpus); } =20 +static void cpu_sd_exit_nohz_balance(struct rq *rq) +{ + if (READ_ONCE(rq->nohz_tick_stopped)) + set_cpu_sd_state_busy(cpu_of(rq)); +} + +static void cpu_sd_reenter_nohz_balance(struct rq *rq) +{ + if (READ_ONCE(rq->nohz_tick_stopped)) + set_cpu_sd_state_idle(cpu_of(rq)); +} + /* * This routine will record that the CPU is going idle with tick stopped. * This info will be used in performing idle load balancing in the future. @@ -12845,6 +12857,8 @@ static void nohz_newidle_balance(struct rq *this_rq) } =20 #else /* !CONFIG_NO_HZ_COMMON: */ +static inline void cpu_sd_exit_nohz_balance(struct rq *rq) { } +static inline void cpu_sd_reenter_nohz_balance(struct rq *rq) { } static inline void nohz_balancer_kick(struct rq *rq) { } =20 static inline bool nohz_idle_balance(struct rq *this_rq, enum cpu_idle_typ= e idle) @@ -13060,6 +13074,9 @@ static void rq_online_fair(struct rq *rq) update_sysctl(); =20 update_runtime_enabled(rq); + + /* Fixup nr_busy_cpus and nohz stats. */ + cpu_sd_reenter_nohz_balance(rq); } =20 static void rq_offline_fair(struct rq *rq) @@ -13071,6 +13088,9 @@ static void rq_offline_fair(struct rq *rq) =20 /* Ensure that we remove rq contribution to group share: */ clear_tg_offline_cfs_rqs(rq); + + /* Fixup nr_busy_cpus and nohz stats. */ + cpu_sd_exit_nohz_balance(rq); } =20 #ifdef CONFIG_SCHED_CORE --=20 2.43.0