From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from CH4PR04CU002.outbound.protection.outlook.com (mail-northcentralusazon11013010.outbound.protection.outlook.com [40.107.201.10]) (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 B355E194A60 for ; Fri, 27 Mar 2026 09:45:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.201.10 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774604743; cv=fail; b=JHa2zhaGszIy/dgz82qsOQ3apMzQfRDbCeh6QURCkBmKnIhJramx4bMjXaxJ6yIUOLQtThWcQ2YfjamR6tXiT0GxIFt7kfl+vOflX7kOW+Xqi4Vbom9OWQQ3J6mOQBqyPt/NkC+v+dSpii0hnyvSXkfBOme8KFlwk7jLkcNXJPY= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774604743; c=relaxed/simple; bh=BMQmrWfpml6LMaxobftr7a9NkeI5GObL4Hv3Zf9UA70=; h=Date:From:To:Cc:Subject:Message-ID:References:Content-Type: Content-Disposition:In-Reply-To:MIME-Version; b=B1C4UVUUjpKEASEN2NBM02LQHkLVko4T4DQXgu72xLkvM3K0cyfuUYKmi6UTT4Rl+eqFCFnIZx8ou8oK+f+KaSrrlAca/UX7FGv0AD3WjLDqPtbbhV+RmJ8+wyYBgOnwVRSWjXZyhDtqOnnGMXB7drxivOPcivhKiVJ7Nd51rSM= 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=TgMsKyMN; arc=fail smtp.client-ip=40.107.201.10 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="TgMsKyMN" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=K04VfQuOr5aQQikvBZCkdwjA2r9uKRGFjDhczwusqmOoJ8Q3P6UnODUSg0LkjcN5iAGkxWLdN9QukUb5Mfwm17LT61Tkn9X7OzTPac5qZECj3xXB7DbjK/a3e5jG09gSHRtVXlXkQF4ptX2ZqWORIa4La8EKCbi3vtDqv7BW66kCWGy9AMZT9Vx5WDKftxpt3tXLGW3wgXZlF0+/vnhNCwyfdoacey22JtecsRM2F+sQP9Q1snoZmvjGtShSr85kFR56rysmjL0ACv0fWcw9+MSK7b347i1a5E1fDFuMQf+VLd6ObAxBfPUbsdJVvhn1L65d5Tv6aAcTN/TxmxIpBA== 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=ZOho9w4/OiqRgb8hOV5HRnJLjCrk4so/A7toX2DfRcw=; b=eVtVYpGwrKsAhtn67QtiIF1yqLTulPyGWOBycWacEd/ytDOdpcmlaeSU3d7CurrpexvlfPWQNGeOkNE9wzEvKEzwhnz9j7nFeDuhiffsTvFUG237wQwSkqDtqBLrREzD9zz7nzxCtZB99I2uG+XNOrcXUDomPYzvRe12gWChpck+7CLoERxdwzKi/jr6afMYeucIrhvzPQ2IDsmVDRPMiFCII9jhFkwZm90aM58yntlImt15kxC2BKr9jJnLlmUuvVkg+fbmUlTJYgOFdAtEoxi1LN+PX7w4I4nfq+67a1WxTMa8f7kgTsbRnk+JrsYpFmZs54sLBEfx13xQnqfKUg== 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=ZOho9w4/OiqRgb8hOV5HRnJLjCrk4so/A7toX2DfRcw=; b=TgMsKyMNNn1Z/q2ukTxLH1G4ilBXuseMJGGPkOR0vGO+FzamINXTBIuWxthlYCAxYR7ZZft96xOJsYqjjxLCnfedfnoaXfNKWpvhJ1r23blsh3oqaUcy5lU3JWEiAeYW1feoQkX4/Ib3A1LYyy8xEyDaBC81Nqsgq/wWicB2KgliqqL7pjde95rLWTUgoLg5pw01lYzU1ag3BPWr+u2Eo64sG1gN6EToaBKp/yZRdRNb/b+pYf0oJF5MD5u6va2QWZkDgDukcz055J89X6N87g6oz+K/lYxtRkxpdk8441Me4u6nfLqvmn51cBtxVibRsBRmE8QXSp9I19gzClmQHw== 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 DM4PR12MB5866.namprd12.prod.outlook.com (2603:10b6:8:65::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.8; Fri, 27 Mar 2026 09:45:35 +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.9769.006; Fri, 27 Mar 2026 09:45:34 +0000 Date: Fri, 27 Mar 2026 10:45:27 +0100 From: Andrea Righi To: Vincent Guittot Cc: Ingo Molnar , Peter Zijlstra , Juri Lelli , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , Christian Loehle , Koba Ko , Felix Abecassis , Balbir Singh , linux-kernel@vger.kernel.org Subject: Re: [PATCH 3/4] sched/fair: Enable EAS with SMT on SD_ASYM_CPUCAPACITY systems Message-ID: References: <20260326151211.1862600-1-arighi@nvidia.com> <20260326151211.1862600-4-arighi@nvidia.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-ClientProxiedBy: ZR0P278CA0069.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:21::20) 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_|DM4PR12MB5866:EE_ X-MS-Office365-Filtering-Correlation-Id: 74992284-c3f9-46b9-32e7-08de8be5980e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: 3qxFGGQ7Dxba2Eyxr6RsrxjoAu8rC3RLm5pB6+3chAgAyyjG/BDFwaIZItEDqVhpDWtCGUNKUp40npIi0K8oWkvNt9edPqCCraOr9bwdPY9QTfP4QoJi4vEdKDOuQSfzpY5YiZ+vmQNWtWsPy/iG4pDGiEL2ut2lyPS+SLsBizDpGSgOvI3vv5mIglZPqMq3xwTNN+TdtAax4vAYKf/v/TU7uOtM0RpGG7O+CDvEBDOS4ILgS+YHAYQJ4WY/ruhqQ3nGKKhWIFFWvsrs5YsSy/FHaEkEnfbA0oKFvjkpke9Nhr5/lJ0dP79DSN7iErIIbVqBxOUTdjYuEoFN0fNmiGyNL0WHjJ6ingjCagTmMUgjaiYIT9fBO+yMgVB94aiTwgpNrvIxqyf0z135NAtBa6qlo0pEB7q7fuYm8AbWDVrfv6uoOG52LoYsVkmVU7BhHNX6LIanwu2xdhD2zmz0ARaLxIj3C/qtoqT+psuH9Kym5PaH6RrqHgjOt6QS5P22rgaz0lOWBK4y8Jj7PcYOEMERekEhI/yKh7KsqeIvST2k7BcZAP2cjYM4wRJAfK+TZeIG8/o/NhklerHOqV7sKnNjTJqsRD51Nt3JzvKG7K5XNRYOXzSX8A++IEVS+UATKTH7bIHowlQQ9Mro7lQQWZlNrcdM4CDnuIpUWlnIcPii62rXRxiwfN7+TXMQCK3aoP9SDE28Hz8XHLF4GUqnSTMqMLzuQutAHvn4BjuwvA0= 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)(376014)(7416014)(366016)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ai5KZGEMJls5Cy57hr1sUVHWPs1djaE3uAPxQzmvS/pCVg1Ms+1BNl1x0XDN?= =?us-ascii?Q?RpTBcLkuAcvPAPjBGF9a9rmVYHWufRLvlQid/u3o+ALZSN2r4osf5XbXY7u8?= =?us-ascii?Q?ufzZZyPrKf60SGPLQuztU5rWNejP0Y27JpRR9FdpeSQC7Mtyzv+tYZwD59ur?= =?us-ascii?Q?vOzXjRERLOP0QhOhwq2T1uMJg/c/eFGszd2UhVPQQuExB4tP1Xj7TiQ5crns?= =?us-ascii?Q?zsHiL4OdPzkIRt2lS1INRU461+Qcky25o3OktVn31IIWSUBvpl2RH7+DBG08?= =?us-ascii?Q?6Q6F6QSeb8LvDOeWioLzgkYu6Xydk78GL0JneTch0lpvzmRZrfPV1fKPoT+l?= =?us-ascii?Q?HnpZTMiHv01jItSkkl1NO48n6QggBnWBZNjkMu4ZvL0dVHFubr/ZhsLyGzRg?= =?us-ascii?Q?ysUqZ8S1qvViQi/bAhFQUUJWOImh/uOHgc/Vv95YooHpY5ObEoOPI9+IR3tw?= =?us-ascii?Q?h/UBAAN8T8Y4GiYfmKdgLo0/pR46L0BkUp6cNiaxy/7KihgBZo6dIjGPl+3L?= =?us-ascii?Q?O7XKyA569NWEICesIod3Uzbg+nmCkIqcq7fM1KRJMcGux6e6CxKrWcamkovh?= =?us-ascii?Q?F/ignJ0Yfv4uD2ymgWjvxY9bJ1bEC57nTHUWi6xURgh6bJV2NtD1mSXPHLPU?= =?us-ascii?Q?NOl/r1U9o/Tclluiok/ROlw0t/DCbScXIoeAP1Sn3W9T5DcY4n1aINWT3CC4?= =?us-ascii?Q?6K4rTsb1a39+7KCvZRMGBVfYpUb8Fz+flL8fWYl7Yph/AwAP6VnZGs7OjICq?= =?us-ascii?Q?1eVf1z+FY199lZmG54AOEOgEaYR6mXxS+pyy4kETcirgw522cTWDA3OESgTF?= =?us-ascii?Q?CKAx4MBVK9dZi5k/KsLxjQy97iGnLdwP+k9NaaG7Kgl3RB8rMy50zRXRdjFx?= =?us-ascii?Q?6ON5Kq17E9JL+T6s45kiiNR6cdgccrRckRP+lGm5IThve03m2DGcweUTvYwN?= =?us-ascii?Q?TXss12FdjcXUWs7tE6XhV6mX/Npm/oQZIRyxuoEGI7XaXiiOinKqNKA2RF0t?= =?us-ascii?Q?W8bLQ/3KD2nbxQE4tSpq6tuxvhthqPVgwcDtIkN65NcdCw50j83Nm0O/cf/W?= =?us-ascii?Q?ThxZB6L3usvxNLYc1LS8CITaMosVVZf00L/UkWn9u6rOKtJH+yLpjTMXVMWU?= =?us-ascii?Q?cP48H4K9spQ94rKvgvwEgoGFrEHfeZjv3xblvhQ78NtSQQXvwg5xszNxAeR+?= =?us-ascii?Q?6bC1VhqA3bICFfNb1H5x/8tLFw9CZJEDx94ITWZFa0fq24+EzVV4x3kbumRh?= =?us-ascii?Q?mVvgl4x3zt7xVeZT6ZfNl4e+dgrhZ8NBSvifUX/DXElCVLiAQwIQy4e4WP5s?= =?us-ascii?Q?PjW9WfEV6ZxdX49ZiOlQRky5KL38OGlKKZ6rDnUhobS5hlHCdr2Mq5V5ZyxW?= =?us-ascii?Q?sSlAN4opjLhk+d9bc+F0xF60PN0P7bdOp4dkqiFSSNNzSaqmb+wkMsL4ClXA?= =?us-ascii?Q?HlJdHmnn7Xg8tDKwHV+2JrM6tA5ERoLjixSMaRdWBbkJzebZGRMcDoQrn3Xr?= =?us-ascii?Q?jaLzyEC35EmagOtVk64+49J1Fbiwg66VlV1nYnyR/XgXjoj5BELRJxUt79xH?= =?us-ascii?Q?aZx97At/JIip1JVX+9+dwhY1gFg2sCMcKHpYLxlVE39nFSuiLEy103dBJwHu?= =?us-ascii?Q?S3NQT6CjsO1ZAMqiM+9cMIPYD3nVE4j/6/mtYOsx4ZL4rufZY96dIsbJ8Wjx?= =?us-ascii?Q?88zpmMm8wuEqbXAtaEwkNOtT4AETMlvuRWHEbIX81lO37epJbcIx9dEQJDKb?= =?us-ascii?Q?Wvg6I2ixWA=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 74992284-c3f9-46b9-32e7-08de8be5980e X-MS-Exchange-CrossTenant-AuthSource: LV8PR12MB9620.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2026 09:45:34.9044 (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: 5L8vgOtfFu7Y0A6MFEwEml+9bEx3NhvJtsed2ZDW7eFWHHFkLSTAjtmFqGowTgSrKZTzaXqpyom9jeYDVTzdeQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5866 On Fri, Mar 27, 2026 at 09:09:35AM +0100, Vincent Guittot wrote: > On Thu, 26 Mar 2026 at 16:12, Andrea Righi wrote: > > > > Drop the sched_is_eas_possible() guard that rejects EAS whenever SMT is > > active. This allows to enable EAS and perf-domain setup to succeed on > > SD_ASYM_CPUCAPACITY topologies with SMT enabled. > > I don't think that we want to enable EAS with SMT. So keep EAS and SMT > exclusive, at least for now Ack. Thanks, -Andrea > > > > > > Moreover, apply to find_energy_efficient_cpu() the same SMT-aware > > preference as the non-EAS wakeup path: when SMT is active and there is a > > fully-idle core in the relevant domain, prefer max-spare-capacity > > candidates on fully-idle cores. Otherwise, fall back to the prior > > behavior, to include also partially-idle SMT siblings. > > > > Cc: Vincent Guittot > > Cc: Dietmar Eggemann > > Cc: Christian Loehle > > Cc: Koba Ko > > Reported-by: Felix Abecassis > > Signed-off-by: Andrea Righi > > --- > > kernel/sched/fair.c | 50 +++++++++++++++++++++++++++++++++++++++-- > > kernel/sched/topology.c | 9 -------- > > 2 files changed, 48 insertions(+), 11 deletions(-) > > > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > > index f8deaaa5bfc85..593a89f688679 100644 > > --- a/kernel/sched/fair.c > > +++ b/kernel/sched/fair.c > > @@ -8658,13 +8658,15 @@ static int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu) > > eenv_task_busy_time(&eenv, p, prev_cpu); > > > > for (; pd; pd = pd->next) { > > - unsigned long util_min = p_util_min, util_max = p_util_max; > > unsigned long cpu_cap, cpu_actual_cap, util; > > long prev_spare_cap = -1, max_spare_cap = -1; > > + long max_spare_cap_fallback = -1; > > unsigned long rq_util_min, rq_util_max; > > unsigned long cur_delta, base_energy; > > - int max_spare_cap_cpu = -1; > > + int max_spare_cap_cpu = -1, max_spare_cap_cpu_fallback = -1; > > int fits, max_fits = -1; > > + int max_fits_fallback = -1; > > + bool prefer_idle_cores; > > > > if (!cpumask_and(cpus, perf_domain_span(pd), cpu_online_mask)) > > continue; > > @@ -8676,6 +8678,8 @@ static int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu) > > eenv.cpu_cap = cpu_actual_cap; > > eenv.pd_cap = 0; > > > > + prefer_idle_cores = sched_smt_active() && test_idle_cores(prev_cpu); > > + > > for_each_cpu(cpu, cpus) { > > struct rq *rq = cpu_rq(cpu); > > > > @@ -8687,6 +8691,11 @@ static int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu) > > if (!cpumask_test_cpu(cpu, p->cpus_ptr)) > > continue; > > > > + if (prefer_idle_cores && cpu != prev_cpu && !is_core_idle(cpu)) > > + goto fallback; > > + > > + unsigned long util_min = p_util_min, util_max = p_util_max; > > + > > util = cpu_util(cpu, p, cpu, 0); > > cpu_cap = capacity_of(cpu); > > > > @@ -8733,6 +8742,43 @@ static int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu) > > max_spare_cap_cpu = cpu; > > max_fits = fits; > > } > > + > > +fallback: > > + if (!prefer_idle_cores || cpu == prev_cpu || is_core_idle(cpu)) > > + continue; > > + > > + util_min = p_util_min; > > + util_max = p_util_max; > > + util = cpu_util(cpu, p, cpu, 0); > > + cpu_cap = capacity_of(cpu); > > + > > + if (uclamp_is_used() && !uclamp_rq_is_idle(rq)) { > > + rq_util_min = uclamp_rq_get(rq, UCLAMP_MIN); > > + rq_util_max = uclamp_rq_get(rq, UCLAMP_MAX); > > + > > + util_min = max(rq_util_min, p_util_min); > > + util_max = max(rq_util_max, p_util_max); > > + } > > + > > + fits = util_fits_cpu(util, util_min, util_max, cpu); > > + if (!fits) > > + continue; > > + > > + lsub_positive(&cpu_cap, util); > > + > > + if ((fits > max_fits_fallback) || > > + ((fits == max_fits_fallback) && > > + ((long)cpu_cap > max_spare_cap_fallback))) { > > + max_spare_cap_fallback = cpu_cap; > > + max_spare_cap_cpu_fallback = cpu; > > + max_fits_fallback = fits; > > + } > > + } > > + > > + if (max_spare_cap_cpu < 0 && max_spare_cap_cpu_fallback >= 0) { > > + max_spare_cap = max_spare_cap_fallback; > > + max_spare_cap_cpu = max_spare_cap_cpu_fallback; > > + max_fits = max_fits_fallback; > > } > > > > if (max_spare_cap_cpu < 0 && prev_spare_cap < 0) > > diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c > > index 061f8c85f5552..cb060fe56aec1 100644 > > --- a/kernel/sched/topology.c > > +++ b/kernel/sched/topology.c > > @@ -232,15 +232,6 @@ static bool sched_is_eas_possible(const struct cpumask *cpu_mask) > > return false; > > } > > > > - /* EAS definitely does *not* handle SMT */ > > - if (sched_smt_active()) { > > - if (sched_debug()) { > > - pr_info("rd %*pbl: Checking EAS, SMT is not supported\n", > > - cpumask_pr_args(cpu_mask)); > > - } > > - return false; > > - } > > - > > if (!arch_scale_freq_invariant()) { > > if (sched_debug()) { > > pr_info("rd %*pbl: Checking EAS: frequency-invariant load tracking not yet supported", > > -- > > 2.53.0 > >