From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from SA9PR02CU001.outbound.protection.outlook.com (mail-southcentralusazon11013028.outbound.protection.outlook.com [40.93.196.28]) (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 6F7822459C5 for ; Tue, 19 May 2026 07:54:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.196.28 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779177254; cv=fail; b=FMOJppmJmP5jVCFLWJR5/bzDCM3wQ8TrqVwOvFMYoij4b4qps3Eb8meznfZytzZ0nCvSD1u9e8mcvqzReWtW2z4aJxVWUHU5kc1MMatnXKYWGxyA/kvJxuiD5D9GjXEGvam9c6fYcF0JJLg7Tuh5e/dJ7enoTOorgLLTLyZ6hEI= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779177254; c=relaxed/simple; bh=FIc45RwySfhN+qtMabsJQtavS+X0HktsL76/zOwmco4=; h=Date:From:To:Cc:Subject:Message-ID:References:Content-Type: Content-Disposition:In-Reply-To:MIME-Version; b=EqEEu9YJuD0kOyu491D5If8ar8r5pTp7foW94zYCVj86P6h/PxEH0zrF6MXR8Jn5vtauauuDvkO1j0c1sQ/lssx6EWdfntF17GzxceKf/QevRc9FpZqbELE3y0IA1uM5XGoWSHlIEd5p3K6IBMyMIgxXwiRa/no0zptrjCImlMM= 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=uTWSltj1; arc=fail smtp.client-ip=40.93.196.28 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="uTWSltj1" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=E2hP2mzIDsAzjswo1v1zzEN95GV93bsWdZckk+avZyg9o7Uo8Aj5jJj4JQFQ3dscawjantA4WKGNb8VDVOeL/djTu5pPw5qSukdy1CmtAqDunUXki017kOWnlUFrMP5kBtdpwhsSDpGakKrWlG8ezJmD7NB/KX4rEhSNsSkg77zLkqZYfElraB24XC3L8ZHsGXvUXcOnsI5V2Xb91MclmVIHFCRY1nGnGG/nhNJ3uEjdaHZQ7glYfGNyLlqkqOvTyQ/vxI5EKLX/HivkbDObQiiEApb2uJq3eRzoJ5eqOh28Y1YUQipma1IwEjI0ghrazX6WYeiltn0RwNwQ5DtdPQ== 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=nVcZTvDB9Qiz66n23NNJ9ujdKFUX1WKSen3GsNL5he0=; b=FaS27SQl8PmuGRGElWb1kZXYzTuJU5RUJVLP3ivaNLXB3E1OtvjHSHPrzxiLPvYDPAUi2wYVeNi4Yp3m0zOVbWpxziwiYvzTpZQjMpqerJBviWFOoIcD3WvtW1k1b14ClPggc1V8gV6eIX1yRVVutVd99EfgkPqQBM/ugNgaKYhQVt+CbHF/PtNAnHFuecdmZTbKqeL6NM2bGL9oMIZL09lMLdu9kCv7KuYsqCX8ONa6B0T5Dyam6Cv+pCn5wMSY7483Z8ds/SfsCdPSgdZyqG3efaN54zJk8En8q+eY8PXA/qK1sv9MR97JBFaUORLlo6ajTHJs8WGbuCsrtfAYIQ== 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=nVcZTvDB9Qiz66n23NNJ9ujdKFUX1WKSen3GsNL5he0=; b=uTWSltj1e/6drjuFhVCpjeFg9kNqgn9pYxEcpvDJ7ikq/nO3hNmGR99fXPG4kFwDFVySvXSihd6572nAxrGhSZcKzx++LhPmR0cckk3vcrKl7frWpA0hnorhDqhLMt81N4Cc5exdMr+sSNVNbDux5MiU+BVjkIqY5VEvGOPleVw0+iCspHlunPRTzAJZ+6d78+WLtZ8WcdrMDQ4VfDSte8ngbF/OIw1X2sg6q5xKgaC+G1CmrNDiKjvWOAzzaMaTh+dokWnGw7bsCyGxhaE/IGFBmTRefd6a6VNniZnTe+0syJPLDeiqVF9/h/f3R83o+MP/yiB9UfIA0bh4zFwcXw== 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 PH8PR12MB6867.namprd12.prod.outlook.com (2603:10b6:510:1ca::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.14; Tue, 19 May 2026 07:54:07 +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.20.9913.009; Tue, 19 May 2026 07:54:06 +0000 Date: Tue, 19 May 2026 09:54:02 +0200 From: Andrea Righi To: K Prateek Nayak Cc: Peter Zijlstra , Ingo Molnar , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , Christian Loehle , Phil Auld , Koba Ko , Felix Abecassis , Balbir Singh , Joel Fernandes , Shrikanth Hegde , linux-kernel@vger.kernel.org, tim.c.chen@linux.intel.com, yu.c.chen@intel.com Subject: Re: [PATCH v2 2/5] sched/fair: Attach sched_domain_shared to sd_asym_cpucapacity Message-ID: References: <20260516055850.1345932-1-arighi@nvidia.com> <20260518205859.GY3126523@noisy.programming.kicks-ass.net> <81583f79-facf-473e-b756-31af724245bc@amd.com> <55196e3b-ba1e-42c9-b80b-5c91306df452@amd.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <55196e3b-ba1e-42c9-b80b-5c91306df452@amd.com> X-ClientProxiedBy: MI2P293CA0013.ITAP293.PROD.OUTLOOK.COM (2603:10a6:290:45::8) 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_|PH8PR12MB6867:EE_ X-MS-Office365-Filtering-Correlation-Id: 4a86ffe0-3a3c-4683-c104-08deb57bcd5b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014|7416014|11063799003|56012099003|4143699003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: QPGt108haLizkVTjUxA5eiCYjb6B56S32aotk8sSCgwnJqdPDiN40VEcMNxv/Ndv1ZGu7RHHPfocN0CrDfdoKzLwFvNWF6Dmw5Gu5o3jaEM922S1fzVqVhlWFkvochDcT9HXzKJUNTR8ye7xFZulx65hLm4ikb8+wVtj7HJaQtE2nqQvFSy9NXpYEsYsuSMwINxDDX2fhkMdVd5rg3QxJ7N8HJvYdkWOEPAVT28PaBgqWZ0Gl3WgaGRodC5GSKtZKe+CkynikkChOYZDO9dAoi6pgIgyPwcVTouGdHd1uPLn/Xz19BNrYBeYm5tE9GATJD3ke/Hes6IMiEwrAwL4weeL2kYZ8ToPYhskSRdgxcRqcHi5vF6rs3gcwSPLx3D9vjMooEEBve8PBqHbrYxGUrFdUQiiBlrEystlmacAkBOG7VWYEVQ4lWW20jhJXCnJgljC4FNhsQ1sp3yNWLN2oje/rsD8FcHQOglRhhQ4UNpCzyHQcjoBq2XkD+HvQGEkeNRcuu63QKhQxvE86bFSp2d6KvsjeZcTpFEFe+4wveZ/+WNvZpO7SYqL4q0D+ZHEgUfkibBzzL4p9zytNC8/jwk8/DuoYXGXzW+9dUfwGgcMn2OYafkneW49eAsr1KOD5caooruHzmcAA8G5hH05PjIT6WAzZRz2qkKGOb8FP3eO8s5zxilAkuohuLjBH6pW 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)(1800799024)(366016)(376014)(7416014)(11063799003)(56012099003)(4143699003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?6SZ559IO/1jiREWsNHmhDYS+8+mUuFIq/pamAddWmeBXNfzrGxynBBLPwUO6?= =?us-ascii?Q?8NUf/RWV0jSkzuGPZS5GL2XfpOXgPCw8Ba+l340n1jAfYkKjMifMhiN3LZJ5?= =?us-ascii?Q?hh2bF+Dry+PF2Xk5X7HUDegjE626XB3N9zPk1HWMAaTEp445FNSugcQYQ18o?= =?us-ascii?Q?jQy9XKcYqEC0Rd7Pps6dvngih/G8yexYEGjn+nQu465PVss0C7HNu8L2OUcD?= =?us-ascii?Q?0RHWooOLYk/LnCwvjw/JYbvmJh9RSkehPK7YmYThosg77pxLMK1NJwlVXfxj?= =?us-ascii?Q?Ret8n+RjzVSOSevrLYpnsbgh8sNgnj2bom9ibKPQj9Ay6khNxHLa4uXvF5F0?= =?us-ascii?Q?EalKDKU8J/SoVesKgO2s/t27yFM9TA/IdG668jwxzSlmzgpIlvM++G3xleTi?= =?us-ascii?Q?aMI4b/36p0PTTjez+v4gajNiyw7lJnMok75cqNxGuwmJEUBlImlsXr/vEh0h?= =?us-ascii?Q?V+6Cx1W7UB92ah9Lt8s2J2rgs2r9pDitoDmnZHQdOLNQxKZCVoS4hlcuJIz4?= =?us-ascii?Q?ZATIwmdBLjLjy4cBSBNqJQX5vxVjtOXprqtC4kvBG91za+GjWo3S7KyZ8GRT?= =?us-ascii?Q?kBa27yYPK1xMJn7AF+sHHgBs2Hli5mBg7u2DOMyxcS01++EC5CQrx0qib0/R?= =?us-ascii?Q?yZ+777P2ZJxBTnLfJZ00KbiaXT3cHEZzappb3UJPjBto81FgRAlZdYb6XOVJ?= =?us-ascii?Q?YNQ7oTCvhCSgajYSS50xw6MLTj2avxGf+vSBZYzXD/FdrQlHohEw0jaxWIHm?= =?us-ascii?Q?jAfEa+EbWwd+agwOXM60+p1xG/adJmgUBNV6xy6mM53mJ6FgNexXbZwHAz0E?= =?us-ascii?Q?K40o5BMwGOPP7adiAFK7vEC9J4Vk6hhMX0fjT6l3Psi9gzOMSm2tVj/OFrgE?= =?us-ascii?Q?AdBufQMR8ihBJU7tKDc3Jclcy4xteHMuxmW+4+34/wzrLbfN0zUGme2o9jPX?= =?us-ascii?Q?JW9fj3yTI/AeaDRySMW6J52s495YLwZeBSRTNzpyRgvKrnWcLtHRsuu8ZxXc?= =?us-ascii?Q?WZrtefzPDRN0WlFRAVJ7GjyPdzWaKN+EyF3KHK8begkMq8ZpfF9xBaKrSlfP?= =?us-ascii?Q?gDblqOARduJ6Doyxzk7Q20Rr57x1KWagVq3w0rYCC41rRPsO4fvVBiwajwq9?= =?us-ascii?Q?xPFokzaIOBIV46CC54mi7xgilSo8z/of++nY+Sf2ialTMl3AzKu9PuNiXH22?= =?us-ascii?Q?U1CqqPE1SkkerdI/VeLoTEJJzEg6c2WfP9Q1vYXBjG/wvW34OUvctfl1//e2?= =?us-ascii?Q?QDPElv94QjCMKzLlTNrulfjcKxRMg+B4jiI4G/4PQFlaeTfGANzRN0/kTN9c?= =?us-ascii?Q?YkvO8JBBVGgdGNoM2yJ+1MixH0YewRMfFEvQmUHdT4Hih0yet122SVT2VGq/?= =?us-ascii?Q?jTHKB5E42XDhJfXaogeH3KJHJ8CSnzAo6K5Yo+WyS9Sn7UjYg6VBNcYdvWuV?= =?us-ascii?Q?eIH0vNVyxMhxy/PUUDpr0C4qBdY/+o5qp9B6e2w4XdIdyhVygKxrsqF262Kd?= =?us-ascii?Q?azWJhEwa6EHq/UjxN+oEgEBPayZU5lKbG1FpesnUi1w+rTsppmXAChrt68My?= =?us-ascii?Q?7QqV+ukCupY4YNpnLkmFmPfVqigFJpowyMHpLu7W4LqL3w1hKY8kMDNGeofj?= =?us-ascii?Q?/QwhObUoUNh6JWqQuYGyghvL86K2seP91DNYoa6LvUOKZ2P1MSpp9fW58faq?= =?us-ascii?Q?Co+ULdEDObj8vzphSM2nYO3JA3TSMWl+dteM7+FWCva6LRYj?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4a86ffe0-3a3c-4683-c104-08deb57bcd5b X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB4827.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2026 07:54:06.7200 (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: D0CZKM5UQmK4odBtOPQ9Nv+kSZOcDPpEz916f2DHu7QWoWqiW1JdGRFeSJLk81Hz6joO6V41Bs8IjETNFRk39A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB6867 On Tue, May 19, 2026 at 01:17:20PM +0530, K Prateek Nayak wrote: > Hello Andrea, > > Thank you for taking a look at the diff! BTW I just re-ran the NVBLAS benchmark on a Vera Rubin machine using queue:sched/core + this on top, all good! Thanks, -Andrea > > On 5/19/2026 12:13 PM, Andrea Righi wrote: > > Hi Prateek, > > > > On Tue, May 19, 2026 at 11:22:32AM +0530, K Prateek Nayak wrote: > >> Hello Peter, Andrea, > >> > >> On 5/19/2026 2:28 AM, Peter Zijlstra wrote: > >>> @@@ -2775,20 -3049,16 +3107,15 @@@ build_sched_domains(const struct cpumas > >>> if (!sd) > >>> continue; > >>> > >>> + if (has_asym) > >>> - asym_claimed = claim_asym_sched_domain_shared(&d, i); > >>> ++ claim_asym_sched_domain_shared(&d, i); > >>> + > >>> /* First, find the topmost SD_SHARE_LLC domain */ > >>> while (sd->parent && (sd->parent->flags & SD_SHARE_LLC)) > >>> sd = sd->parent; > >>> > >>> if (sd->flags & SD_SHARE_LLC) { > >>> - /* > >>> - * Initialize the sd->shared for SD_SHARE_LLC unless > >>> - * the asym path above already claimed it. > >>> - */ > >>> - if (!asym_claimed) > >>> - init_sched_domain_shared(&d, sd); > >>> - int sd_id = cpumask_first(sched_domain_span(sd)); > >>> - > >>> - sd->shared = *per_cpu_ptr(d.sds, sd_id); > >>> - atomic_set(&sd->shared->nr_busy_cpus, sd->span_weight); > >>> - atomic_inc(&sd->shared->ref); > >>> ++ init_sched_domain_shared(&d, sd); > >> > >> This will run into a small problem with "nr_idle_scan" if > >> cpumask_first(sched_domain_span(sd)) is the same for both sd_asym and > >> sd_llc. > > > > Ah, good catch! When cpumask_first(asym_span) == cpumask_first(llc_span) > > (big.LITTLE typical case), both sd_asym->shared and sd_llc->shared would alias > > to d->sds[0]. > > > >> > >> Load balancer at different domains will populate "nr_idle_scan" with > >> different values and they alias to same ->shared if one isn't > >> degenerated and I believe there is at least one way to hit the WARN_ON() > >> from cpu_attach_domain() if the SD_ASYM_CPUCAPACITY_FULL comes before > >> the last SD_SHARE_LLC domain and the latter is degenerated. > >> > >> How about this: > >> > >> (On top of queue:sched/core; Lightly tested on !ASYM_CPUCAPACITY system) > >> > >> diff --git a/include/linux/sched/topology.h b/include/linux/sched/topology.h > >> index fe09d3268bc9..1d2c98dca211 100644 > >> --- a/include/linux/sched/topology.h > >> +++ b/include/linux/sched/topology.h > >> @@ -67,7 +67,15 @@ struct sched_domain_shared { > >> atomic_t ref; > >> atomic_t nr_busy_cpus; > >> int has_idle_cores; > >> - int nr_idle_scan; > >> + union { > >> + int nr_idle_scan; > >> + /* > >> + * Used during allocation to claim the > >> + * sched_domain_shared object at > >> + * multiple levels. > > > > I think between build and the first LB tick, readers of nr_idle_scan may observe > > leftover SD_* flags in nr_idle_scan. This shouldn't be a problem and should > > self-heal soon, but maybe it's worth a comment? Something like: > > > > * Note: between build and the first periodic LB tick, which > > * rewrites the union via update_idle_cpu_scan(), readers of > > * nr_idle_scan may observe the transient SD_* flag value as > > * the scan bound. The flag bits are small positive integers, > > * so the effect is just a slightly relaxed scan bound for one > > * window and self-heals on the first tick. > > Ack! We start with 0 today which isn't representative of the system > state either and depend on the eventual correctness to fix the value > after a hotplug / cpuset. > > I can fold in the note and resend it as a formal patch. > > Peter, would you prefer a formal patch or would you like to do this > (or something similar) as a part of the conflict resolution itself? > > >> + BUG_ON(!sd->shared); > > > > Unreachable in practice, but should we have a WARN_ON_ONCE() + > > bail/early-return? In this way we'd fall back to using LLC's shared for > > sd_balance_shared, which seems nicer than a BUG_ON(). > > Ack! We can just use the last CPU's "sds" if we don't end up finding a > free one as a backup. I just had the BUG_ON() to easily spot my VM > crashing ;-) > > -- > Thanks and Regards, > Prateek >