From nobody Sun Oct 5 03:40:34 2025 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2043.outbound.protection.outlook.com [40.107.223.43]) (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 A75321EC006 for ; Sat, 9 Aug 2025 18:48:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.43 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765304; cv=fail; b=dkBeFHGB1rnp0EG7q06+WvQ3aW05Y1O3CJAaB/rcnYGU2r9O17z9FPv3+BDdW6S5r3Lel2o9CFA4v70r5Bjc8eL8FoKVoLW5TECMJW4Kw/uaVI44c7Ut2RZPhIOdlv3GjRmV8KQPv95SwOHf+9108cgDpYou2hUlu975gGNhdME= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765304; c=relaxed/simple; bh=GI6RTEquJw+235yiGn5+tKg6z/+eCpmIh8bzkVClpuQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=ES23LQYfbr7Kr/bW6Perb3+HV0RRWjeZA5CTv4mkSVuFDsnxxi7lpY0ly3WthHwIhdHXikS/TwnPlb1HLNTJrMXu1qd0SqTdNbA10qIkKnHf29XCJXPdBSEWfRVnrutwoktI3fk3Rh4+bz3/HprYOVywo928Lfg4MXWl5QkW99c= 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=Fb6Azumn; arc=fail smtp.client-ip=40.107.223.43 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="Fb6Azumn" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Qav0/HTnE5luagP9tj17WMAPdLiU7iT5+6nmQ+6g/jMD24CLcnY46aIVUG8gVq/gDSF+HAYkpKvGM/eQKnxEmRnz8tiff5C9+FoWYwz2JbGrn/0MVwIkzBqO9YlJJS5r9dHcHEAwhwb52pe/XCDWh/3dtW2hHPCGqtFJ6hHqxdSwosuVfooxDCLZ16v77Sg3FhWWfZ5Zm1xxw4u0LPlR8qvJMlRaQyvaOdIjIqB8/RuRN65lepSg84UZBX02+h76uJ+T/UQpq1/ed+juwqLO8rXVmRgu4LrOyRMLh7hbK5XOQdam9RoVn7wX2u0XvwZuvAepRmjyMiM9al2K4pj9ww== 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=ged8g6lTaitVT9SyKr+vR3XERwmTNlO1bjOTKYxmKMc=; b=ms8jdUDr/7A+XNo4xORDWpGFPapAG2j2XgYgXB30Be3gQQfskZSot9UFRKQ38FC1XRXkTPhT0rMmaFGTJ44sP3VzsymPkYVdnBqIFA2Apu//NPiVwFC9FDRtgv/oMvDXzECrLRts9vXTj7+XBxseBJgV1zkX54hrfJ15FWUIg/DId5IgnRCaShWESWGfmoxrZQ6fHt+B5UCYf2ytLPA5g4fF3aWbXTMZbZdXS6cF9wlwupp8SM/UfJUUNJZ41ElAJX+nR/O1V6SBF8DdxRoGO6RlhZEmoW4NCPHEy1wrUQlyulSthC00yUqt+0FbRqU4aMxWLwMYPKSzW9h2am478Q== 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=ged8g6lTaitVT9SyKr+vR3XERwmTNlO1bjOTKYxmKMc=; b=Fb6AzumnwrA6SwHz5osFukrh8ODRV8+9MPwUiSUy4jFS0lLq7CNthYiJP6xsZLv0tRf0+N6Zinew1sMgs+z1NyoH7T3JzQ1MPcinj3fkFpqbA7e2X8zH21bG2OtNfTFC4rLyM++qYNHOzKtqezmyd6hV4+Vz9f+pE6oJOvfh4fIgldxbbjk6I+y44AYGI1RuCvZShf0FKjt/2y6b6hUl+xoZ2NjXy4yKDyTmMUHt4eN+vxK6oMGQyzaXH3d+5SEHGOyzmU/l/8+1v7QDkQKKxfdaKxWIX5ennU8QnwKXNgMYka3MvvZ3CDFeVuIAYeYMsRkXRdUwQIzk0d+LeIeH1A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by MW4PR12MB7310.namprd12.prod.outlook.com (2603:10b6:303:22c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.20; Sat, 9 Aug 2025 18:48:18 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%7]) with mapi id 15.20.9009.017; Sat, 9 Aug 2025 18:48:18 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider Cc: Joel Fernandes , Tejun Heo , David Vernet , Andrea Righi , Changwoo Min Subject: [PATCH -rebased 01/15] sched/debug: Fix updating of ppos on server write ops Date: Sat, 9 Aug 2025 14:47:46 -0400 Message-Id: <20250809184800.129831-2-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250809184800.129831-1-joelagnelf@nvidia.com> References: <20250809184800.129831-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN1PR14CA0028.namprd14.prod.outlook.com (2603:10b6:408:e3::33) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) 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: SN7PR12MB8059:EE_|MW4PR12MB7310:EE_ X-MS-Office365-Filtering-Correlation-Id: 4039c6ee-d6f1-4928-f4b7-08ddd7754e9f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?UVc4rbnhOOWPc9zwWmys1pKEe2x0ziAHxP06MU1gWpuWkUynCB5vMnd5av8y?= =?us-ascii?Q?WIHtGTcCD5NoIwNvEpBdZQGXpxMJGWkBe5LSI0oN+drCIRSMs6jgWkP/4j6p?= =?us-ascii?Q?x7o9GsKo0yw8wiZRIoR6JBL4qSrfB0tAvfQqaYqlk9Iv3w1pXxv3cX679GzR?= =?us-ascii?Q?eVUp+M3uFxavCos96QD5gTb6N9csvkZ2c1PWvAEkGTIPvQ9kx+qdkOHRydAp?= =?us-ascii?Q?oE2OgTqNayA4mPTY7vc2SWFFA+4uzWll3uLXaVyqRgemvKby1g1PHHJgE+H+?= =?us-ascii?Q?fwJ+Aq+Cw6+huEeSRkJC6jq7Tcvqd0bFCkM3bQW8ZtBnWrZ/Wd6TQWuCg+aL?= =?us-ascii?Q?p8zcJAdn3dVZo/4AmZbsb13p8PfzhcrO6WugaHQGT82bk2HHMTYTXde7lslT?= =?us-ascii?Q?479KQh75aUjCWBpwxh8Kj91w+EbxcXieKzESsWILCHdjJQ6qGa1I65vvMWe6?= =?us-ascii?Q?a6WM5HqwzMDM2lFK5E5+1xUI3j8Kpby3IlwuCWPC1qAGdRX5VuBtIGzJbNUT?= =?us-ascii?Q?bsh5aW9kW5W+A3ArfntRsLyJiUa3iFvYnP0QLsqn1P1zyM7DKkix1034xUEK?= =?us-ascii?Q?jHODTeluDiKm9A0s7YeRKsD0uOvL2UxSDrbA4OJ7xP1c0XAeoMZS0niE70Bd?= =?us-ascii?Q?CJIKVyLvM2jTNCOz75CrTX9FyTIgpyDNWj1BZ9DpfGYaKcV6ZjX+kjFv2ASM?= =?us-ascii?Q?zSfX9QC2vEAA92zf5eKdf6dk0KvarvDHmBiGBzvUAq/pWXAvXUCUys8i9oQk?= =?us-ascii?Q?5OZgF6XEyQMhELVn/LiOnJD3dtMSxWZVxbbXE707ZP9WjLYv8qpUFRyrUpAG?= =?us-ascii?Q?NsnXIrCxP49UmD0b2gz8jSGVBqKCqdgtqLhJz8DguVaLOM+PQ0QZRCqa46cQ?= =?us-ascii?Q?5YEn0PICeR/9rB6winUiCHFh3i6KLejoWHRf4Uu6Zb8o7jdU1Gi9BP02wH1R?= =?us-ascii?Q?1dGs+nsii8vpWqZHYSUFSQXC/G8DE6xZsU4C8NvxlS7AR8cv7XzZOLHAtJ+q?= =?us-ascii?Q?7uARHDXckjCin2n70UkD9ut/GKy9GU2YBel39xCeXEIaWzmSnAtKarLLjBbJ?= =?us-ascii?Q?YOiApxYTE/wqZTQrb2UPwL5h8OkOF3rREs4uezno6MMzikn9e+8FMGiYSFVx?= =?us-ascii?Q?NyCO/cNZOhfFzW1jf373ydrjT16UUwVCY6949jWLvvvQr2ctqt4uv3c9Lvzj?= =?us-ascii?Q?IzfisKWxBu8kBJ3F+l+1qil2+26igx959ESmrtGOqFpYUhTmp+rPGouUZUM/?= =?us-ascii?Q?ciu9Y/G3fIdCxifXjVMR+Em901655lu3/pDepFdkgIaC9ie8UgfPsQ0ntjU/?= =?us-ascii?Q?XifsFwXtIzHtwXM9KmLHMHVjWD/SfQ47vj3km/tVCcw41mc3Nd9bOsIFOfwn?= =?us-ascii?Q?mPmkTzvcFXsIAFkGr6Bjvh6a8d58YvEenRvZtNnHmlB5aaxoAujByUtPHOem?= =?us-ascii?Q?pU6h8A09mwNVRcZdXC1aG0JihsEkd5j/38EVk480Pu0BHYyb9BrXDQ=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?iziUhhzd1D/A8OliKpLaVf0qDW+Ni76FkOb+m5NQB6GJXdnW22G3qJV1MEmS?= =?us-ascii?Q?rfHc27e04LIZwHokmn3Mcj0BcuDBO+/G7K/16IcO0lckAAQ7+yVfv6SuMHVB?= =?us-ascii?Q?qDeMOtfy+JR8cdA3AM+MoGBlWajOON3un3g1fpjZJn6jH6nbwV3UhPY6zW27?= =?us-ascii?Q?AmuUQsP7OpauE8fRIID6+hw+WTIQ/7gTjaG2Y3jMoJ86owrWLfuA3UrVDpO9?= =?us-ascii?Q?c987BQl8pTwROtSHWX7G+PWow3RIry5nyCyPRugw8i5gP5xtzaPxEIAyTCNP?= =?us-ascii?Q?8UA/AK67qcCl9QSTCyzP1ODVcSVkI7Wr/JrLHIJtiJ7SN3dWEF5Orph6Mi07?= =?us-ascii?Q?smKasGE5V5F1yqk0/wEiNaF4x7S69OGAUwInctYB52XSQa5xESqlWp0chDSu?= =?us-ascii?Q?3ihy6Hg35U8LpALVCSSpMTWv94LzJdtnBwbwQkUvZVYgZJozb4xjdwtG/O4f?= =?us-ascii?Q?QMduvzIHqmnTfeORXnl6wv0capHcNkiaifaRP9N6Tx4d0W+lGiBAZzvrReoH?= =?us-ascii?Q?eTodoIhaCrOYWeZeNoql357z79kVO7NRlbLPfgjvwo0xq7PiYevH8lKaQq/q?= =?us-ascii?Q?EERCJS4i5TYIKafesmybfBjyVPFH3jgR8rZiR7PfKPxXqYpD1iVMGlCqxS9e?= =?us-ascii?Q?ThXiJAILDWtHWEgT9fdd/OKlNy7tyk0XrDQdSSIYJwBWsImJEcFfoSUBjURM?= =?us-ascii?Q?r1zcB16iMBw8JmqyhHeGNeWc50rPzSkeR+kfiMIWJMkdCR002vLDn9gPUFGu?= =?us-ascii?Q?xvIBLJHmr8S6GQnYlFIEiyxN689RqxLGMLPqbsnF6waqBQwMsH/LWNz5dsKX?= =?us-ascii?Q?24D2P49349YGroPwbIe7yhZhZ3I+OPoOD3goGT3V3yWNwyLibiZEc+8BKbrG?= =?us-ascii?Q?W/fPO4UJEzUSHuyS+eU4E15PV7cwU9qUPLGOBg7uDSXci+hi0DEtKpKXfTX1?= =?us-ascii?Q?In432h2C5kdAzSiu1LhKMmP+MnjlKEwPQs9O6eSTMG1N9jEQDiONvPRXs40P?= =?us-ascii?Q?6vPGj0PKp9PW5F8B6+NG+bS6sh9bm4DMdBmX8QsSoMX1aZxWyA4lLHfLGj1V?= =?us-ascii?Q?A3CGMavHNwTZHPdk15KlEoufEkoZndHrwl6glIN1dfgXEToAUcKGGwIppeUW?= =?us-ascii?Q?Fads9myJ5JMnO0XyAioHt0MRpyx3eWMuq55cuIRiZDgYpG9c6PdiWTo6FiJA?= =?us-ascii?Q?ArsMEw8/TaqF3XQHck7RW/g0XyVB8NUltSonCHMDRCiF0rUszyBm4ewx3PIY?= =?us-ascii?Q?rCp0kf00cHnSSxJVrsp/WhMRePeAM5390g4Cl7xDW6xthhyHg+6HjKhfF6Nt?= =?us-ascii?Q?qeCguUb4YlnbOLpMkXULqaPG5z1RoAt3g73gX05xyjkwFpToWnjxgkDSMKFW?= =?us-ascii?Q?iRls53k6K56M7cYxwU/p3QmKQdBh+oFV787VfzNTLu8+n96uk1v5BAlskk2A?= =?us-ascii?Q?jgYIFL6BhTAu9cSbpKtc5wW0u9Mu79QSY2vunQJqWH1tiny0FMIorc6juKTA?= =?us-ascii?Q?UZeviKRe+PVeQaSESVW9ZyGFg6FHmzPgulDdmlTmZoXnKtnu2C+waNzCkzgu?= =?us-ascii?Q?VLMgsRl9OpdebqNSA8S1G2+oOdNBrogoyOohiZaz?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4039c6ee-d6f1-4928-f4b7-08ddd7754e9f X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2025 18:48:18.7456 (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: tboH/DSaZgoDBilOniyBxc/7FfOhdnXMhk4VuhkDQ72knpbqWlQhhNhDX3IVF9WBLqjwMfUiwdUO3PxHAcU9PA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7310 Content-Type: text/plain; charset="utf-8" Updating "ppos" on error conditions does not make much sense. The pattern is to return the error code directly without modifying the position, or modify the position on success and return the number of bytes written. Since on success, the return value of apply is 0, there is no point in modifying ppos either. Fix it by removing all this and just returning error code or number of bytes written on success. Acked-by: Tejun Heo Reviewed-by: Andrea Righi Signed-off-by: Joel Fernandes --- kernel/sched/debug.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 3f06ab84d53f..dbe2aee8628c 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -345,8 +345,8 @@ static ssize_t sched_fair_server_write(struct file *fil= p, const char __user *ubu long cpu =3D (long) ((struct seq_file *) filp->private_data)->private; struct rq *rq =3D cpu_rq(cpu); u64 runtime, period; + int retval =3D 0; size_t err; - int retval; u64 value; =20 err =3D kstrtoull_from_user(ubuf, cnt, 10, &value); @@ -382,8 +382,6 @@ static ssize_t sched_fair_server_write(struct file *fil= p, const char __user *ubu } =20 retval =3D dl_server_apply_params(&rq->fair_server, runtime, period, 0); - if (retval) - cnt =3D retval; =20 if (!runtime) printk_deferred("Fair server disabled in CPU %d, system may crash due t= o starvation.\n", @@ -391,6 +389,9 @@ static ssize_t sched_fair_server_write(struct file *fil= p, const char __user *ubu =20 if (rq->cfs.h_nr_queued) dl_server_start(&rq->fair_server); + + if (retval < 0) + return retval; } =20 *ppos +=3D cnt; --=20 2.34.1 From nobody Sun Oct 5 03:40:34 2025 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2043.outbound.protection.outlook.com [40.107.223.43]) (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 4D0202BD033 for ; Sat, 9 Aug 2025 18:48:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.43 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765305; cv=fail; b=Vx44BjCUHCmEwzkXEK3IAeK6qGqXJnE2vOfmxrLfjZMjcKJfKAX3UCX50q76ECO7v6fsi30Q3Y9bJUBCMN9BYuIU5JA3G392LZ6z5txAKR82RiIGptZppUpRn7HpORZwRZvjumlYatHGf/FxFnYCZYiFDVn8GguB6FqnkoMOvWc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765305; c=relaxed/simple; bh=cFjGbieWWmmyxYsLTVnBGzA5Gl0M5RRK1zXSVYGJg/8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=QZ3CzE7Xo/M54ft8EvFSBrkiAY+0B2iLvvPaB+tiNbt2c/mJtjZNOeVFkCr7Adg9cIB8SEGddzYamt8InUSG2LhWDTh12Hulp4Matkatu+SKZMULFscRbDwEE3wh9hpC/bF2vN9waXLz1XP9EwTN81uuBMrc4ulyaaJAHzBZ+Fo= 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=nR+tDcOu; arc=fail smtp.client-ip=40.107.223.43 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="nR+tDcOu" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=oFikGr94ovlGrgmrbTmlj7O9TD0/GhYP5vH8j9OmZopIrmz8mQbpr0uZqp7D455oabLOUQ+9I8671w1P431h3QEk8vk3QZzB7isXH8atYFCzP9lj7conFf0zB4SM5TKFHQt3KOT9Bx7lGp79NINSsLqQUNxAbIi/8jVYgHtvT4XGCaun1pWoj2+c5tiaup3X/CHoq+AjRh6z8eDtxSGit+q2VgxIUewsGoQZF54TPP45HqTQ1csdQxtq8+gpB3rpoKxizcFEki/+F5tXyER5bHZMAKUvEejerORBzr7g7bGGg1fLm3E4aQ/DFQTJOg8USlTazzhgvJ9InUatjyynnw== 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=qNO7+uO4ojpahb2yoxzWkqr6iDF/1aKx0A+EcTEHfvg=; b=L3/e49IOdELl02fE3nPOkAY2ETu0BaCovgdGE81ZDJZbW4DlMf5Wm2zbQp5t/bBrCPXzbdHCbkEApTo7LgeNEAVq7GEyREM5x/5aj+c/CsppSUFQ0owxQblJ6jIpMYheR0BAcDPvYKv44hajmoSjEKvc9bH6uZ8953a3T7uY1+NFapAwjjuNq2AAcf8Zvm0mWn2m/c3iX9qmTJWeAQQm4tX9NcHpOfZxfvnngLgIoMDUq2G7ZTE5UcN54e+xi62B/OBU+obAPfykdqKu6iPERdnZdNSuBYpHFN6kwG1FaowOSEAbEBNdvXoIxQxNerrCPEgytj75f2yRsKzkDHFtkA== 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=qNO7+uO4ojpahb2yoxzWkqr6iDF/1aKx0A+EcTEHfvg=; b=nR+tDcOuzIh49hNSBWmqHIG67A+THoYaqE5RyFTEOv2IO47clET7DcDiDaWaCm2BPnyRcz0hABkseag/EpAqLL3QF872oYy4UC1+QtxeviX1DBAbR/juF+8SvPkx6Jt0dx0Wgh48NJ3rfuT8weLORkZ1qd/A9hUBf/t7UGeVp7D6CTLuH1PjWpZSvQ6IcXLp/jADrhhAeOVNYnZkYPi8vEAWLe0JBhe6lidmhob2lHfc6ZI2f0bO4kVsg2+YrKDSEEqXv+6bkGQwSHgZresY5IrHOtFzh44OI4JWa86HzFdJVhv1OGBU15y8eKT/y+NPRNbDHoG+MxH5tzxznky0zQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by MW4PR12MB7310.namprd12.prod.outlook.com (2603:10b6:303:22c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.20; Sat, 9 Aug 2025 18:48:21 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%7]) with mapi id 15.20.9009.017; Sat, 9 Aug 2025 18:48:20 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider Cc: Joel Fernandes , Tejun Heo , David Vernet , Andrea Righi , Changwoo Min Subject: [PATCH -rebased 02/15] sched/debug: Stop and start server based on if it was active Date: Sat, 9 Aug 2025 14:47:47 -0400 Message-Id: <20250809184800.129831-3-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250809184800.129831-1-joelagnelf@nvidia.com> References: <20250809184800.129831-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0304.namprd03.prod.outlook.com (2603:10b6:408:112::9) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) 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: SN7PR12MB8059:EE_|MW4PR12MB7310:EE_ X-MS-Office365-Filtering-Correlation-Id: 06129fec-57af-48cb-ec80-08ddd7754feb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?xIA6oCMvrWXsds71GKIfs4GKe65ftznCy8K7I8C8YIcOkmrR4oI/zpPEvicD?= =?us-ascii?Q?Vn5d7eUZf15hh4IJSHFqiagPI6aa3YggCgK+x1utW6AOfMQq2MtPcBSmUpXC?= =?us-ascii?Q?ipEfHZXrckZUSH+rOu+FgUFytQ1bPaWVHWg4RZF/ys1Dd1BxDYPqtb7OtLy/?= =?us-ascii?Q?Ye8z6JpCKMPcpY6aYdbh50HLO3im/Quet4MA9wd6ILmRy2OQ7lhvdLaZX2zt?= =?us-ascii?Q?Y71xqfDpID+/+6jBC4IYVdB0dAlO4HprxHV19JWxNdi/3/INAr1CUrU4yy74?= =?us-ascii?Q?Sz9yrwvZ69sRheiQpEAtpCAY3cFsXLMaVrLxVIm6al5gNHSntSvEW/ylGKyv?= =?us-ascii?Q?u+fTlFlu81PPylTnve4WGDVXBL4t7QI7BNXudK1XdFifHiEB4WgUq7YEAFsW?= =?us-ascii?Q?3IK/xGCFquYLH3Mueov/6WEyYxoR8kyfVHlmhUdxu2TXDWhnT7GbsYgiSAVZ?= =?us-ascii?Q?EBAEevmmRscFgLBcSHDUT1igZOjbe4d5cvYD+5/WS/75OCFCk+O3dtz0dAMN?= =?us-ascii?Q?HqJ9SQeSGwzhuJNhEq61yqTuTlEz2rJHEflY4aF95n2TIONP6u2kdd9h61nN?= =?us-ascii?Q?EfHgsjBcsF8GEoDxaiLuiQ68sXO/iHbUwj/e1Vp3wrzFupx8jBCepN25dqL9?= =?us-ascii?Q?njIUNmd0sxPLaL3sMn4Ji2OLZFrEuUL9mV3AAwfHH2v+A+rim6NjYkQEQEEO?= =?us-ascii?Q?HqUi/qqexeJBr/ST4v5S8KxrNEZzBHkqtMjheWIi62BL5MFYzcdr6k5T+as5?= =?us-ascii?Q?HaBc9V05nrSR5JObXoYZ603gpdY1M59f30Oj+VGPup7hL0SSa3E8rExS2e2l?= =?us-ascii?Q?HRMZi09lqNEMj5cvJ/XoPatXS3o0V22EQWVZL/lQ4rWG1wApmdrinejBTFOe?= =?us-ascii?Q?bmn9d6MGavgy49UVYUOz11oBx6vY2XY/hOn+rWAyg5Dk5ZBZSspvFSu/7FMs?= =?us-ascii?Q?Jk56rbRYfj7sQ6AJacEk1eSpZpqQVDZ6o7T8m72YMoqn/JpvmSwAlCELGFu6?= =?us-ascii?Q?Qlz2esdwsB0R2UbkNWVuJYf0a2TrGPiGWEK8yWk2jkhzRQ5VhyDbwiisjojM?= =?us-ascii?Q?5VROtZh1uIIrGBenTMDn/By09iY7Ki+qEI/DKFiwT7xBiBlReDesCDctk2Ic?= =?us-ascii?Q?JwmMOUQAZeR0zvNgKd27VmlHriQC72oAZtTV0k218liQbUmolzS4hogZlcDH?= =?us-ascii?Q?aTsilEwsGTXZpxblnvUfbA8QXx3PJS+lAn+Wg809uTpEYSXtnvf5bWv3JbY4?= =?us-ascii?Q?toyod92iY1QC4BvK7qkWHSQrDhOjZil4mG9ymrfRDIW3yJ2dRNNrmrlEAk7A?= =?us-ascii?Q?dm7gVkxanwJJQMQYZydnowmILzR//LOyDFRmuTwYqaqkZ/7e1kgM/oqiOnZ8?= =?us-ascii?Q?KonQaSQKvR6j4lcicdLZMOP/cxaDrMx/V5Ek0ScBUiXc3NIVomEVmYtAiyfD?= =?us-ascii?Q?LaQDFOb0d6sbS8OTBPHIrcnGY+IhCoCeiaMEnC1FTSVNTaPWpGMmTw=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?VjO3oa/cf0RUiSWTvnq1bKAPXBlHYLR3DuXfd0Sq/CqltV83pF6iKZEYtbkS?= =?us-ascii?Q?aPCjTMAOOQ/5o9UB7ptspdKzrx/hq2wB2iWLzYKsTR3qcl//mwqaii2hOkrt?= =?us-ascii?Q?EsKDPVHcP1o8jx5wwnDBJqW6aMn2pQCpc3SD7g5hzeDoE1R0QTJDW/2tUqWA?= =?us-ascii?Q?CDVeqxqUElmlGdhn0Ff6nPLDhsSmbVUNZm/DxmuvcoOXp08CUlTUeZ9nwLN3?= =?us-ascii?Q?9Tt66bKB7S09VWByxPqm7mnbVAzFmfL5fYGgYmivrK/TTHLlTRP6/YCAjc8e?= =?us-ascii?Q?Z4d/6/VKSUk+oxiCxv3TJ9WXqa/xjoQZjIbEqTDnyaaB7T9Nwm81T+Sp2Gjz?= =?us-ascii?Q?f6NkWqiqloJi2uo8UQ5mPD6ErH74t7UDqMUS97f15bGQ+l6oR0clh9y/EqAe?= =?us-ascii?Q?CAel4pVWQJCZc3T/YGeaDUMSIol6LXV0T+3RAbNNH84FZ+PRIPLGgvBrc5pg?= =?us-ascii?Q?80U7c/aEN4pBBrrIbWO8ZOv8MCKojlJFgjxbVbbo9W3DlrYnFXKyhIM+xt4d?= =?us-ascii?Q?1L34BFzTe76sEWPamhjgTeU6OOGTllHU6Zwiz9ztOHphwAzqUcjBJyktHsXa?= =?us-ascii?Q?aJxn9Bb0Rtv4lFZGAoHbmYkmmPz1pWy8wl9QjlGyfTqO8N8r69zKM8YVKRja?= =?us-ascii?Q?LVzlUptcqtZc6y9yPg367EzQM/XWjoV/fZSSvMgxwbv05EDEkl+BLF1kFd8K?= =?us-ascii?Q?pDjUgELut4+FXCqxe4acfVvAX/gjpTIrZY876bH6esGMBAcMSyi66FY/PXVU?= =?us-ascii?Q?ijon8sWKxJvgt8pN4Ilz8/1EFKOc/QZ4d7i9YDOSqVMp297GFHANmYcGypzh?= =?us-ascii?Q?Zji5nHlVQhGaduW6UGsxCb9W8IISEluZLzm8/JKq5QZqHY+BNcEgQ6JFO4x2?= =?us-ascii?Q?KS5lSBW9mgHaNPNFUN9eCy39MFlWyxNpa6k0c9CBK67uiZeLhBq95vjxLa97?= =?us-ascii?Q?Io7sNTSfVGPJQJwHUFkQemPaVxVJtXMhXb6ZvH1kbbL3brP51GINOQMQ81FJ?= =?us-ascii?Q?uzlEiHQGCR3xa9W9fJdd2mkJc/4H++sl0d8m9HqyCKxp+lmgVIQP8wSe3zz9?= =?us-ascii?Q?/fhbWvroRkngHrI2TSLrUijf6Yewl2k8VmNbZl0kObp/BEX1R2vl0OVk3yKO?= =?us-ascii?Q?eo7LmNb+jbVhPXZMlHTlwwjYyPHJDvx1gE8Z70Inka+J0TR+C0Nzd1mO++iC?= =?us-ascii?Q?AiiDGJCdxAbboyPzhPbpfqM9PfpG/qGo5+QccA5zqI0pWVl4rozgNY+IbAD0?= =?us-ascii?Q?JYGsV9z/5KcrKRQTNYLE+jGRu4eTi4SNy1a1qBD3pSQ8hITyXVykphR7Ofig?= =?us-ascii?Q?L0lxBoOKBmzM/9byltgaY2sAa0GrlrjIESTspx3X7VBJDLVcaW7xnRKS4vn8?= =?us-ascii?Q?pgMSEHzEulZ0lNu4SPsNcQAREmDzybOCcR7aEQ9fHm5aDWlabMIS+etSf3jG?= =?us-ascii?Q?DGKddvVCqKntY+hyINZAuAiVW0OMp6eAPt9BtdE65+2gJGh3v+K+3Pti5P24?= =?us-ascii?Q?ZQlsU1L6iyQefFZ0z0+aUb6V46lP1bRi439i4Uf5EmpUZLoCczJipaAPDbHD?= =?us-ascii?Q?c7jIh6kdo7au65snX5TMOMRHkeRJOWaYEmtqQTad?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 06129fec-57af-48cb-ec80-08ddd7754feb X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2025 18:48:20.9168 (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: Xu07vM9fzkB34DNSz9WVt2hFhdk9QqONemflfvOvTrwbyhtHhPb+Z1oRL9UkPwQMxyruXDT0QivdO5UUm+XStw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7310 Content-Type: text/plain; charset="utf-8" Currently the DL server interface for applying parameters checks CFS-internals to identify if the server is active. This is error-prone and makes it difficult when adding new servers in the future. Fix it, by using dl_server_active() which is also used by the DL server code to determine if the DL server was started. Acked-by: Tejun Heo Reviewed-by: Andrea Righi Signed-off-by: Joel Fernandes --- kernel/sched/debug.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index dbe2aee8628c..e71f6618c1a6 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -354,6 +354,8 @@ static ssize_t sched_fair_server_write(struct file *fil= p, const char __user *ubu return err; =20 scoped_guard (rq_lock_irqsave, rq) { + bool is_active; + runtime =3D rq->fair_server.dl_runtime; period =3D rq->fair_server.dl_period; =20 @@ -376,7 +378,8 @@ static ssize_t sched_fair_server_write(struct file *fil= p, const char __user *ubu return -EINVAL; } =20 - if (rq->cfs.h_nr_queued) { + is_active =3D dl_server_active(&rq->fair_server); + if (is_active) { update_rq_clock(rq); dl_server_stop(&rq->fair_server); } @@ -387,7 +390,7 @@ static ssize_t sched_fair_server_write(struct file *fil= p, const char __user *ubu printk_deferred("Fair server disabled in CPU %d, system may crash due t= o starvation.\n", cpu_of(rq)); =20 - if (rq->cfs.h_nr_queued) + if (is_active) dl_server_start(&rq->fair_server); =20 if (retval < 0) --=20 2.34.1 From nobody Sun Oct 5 03:40:34 2025 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2043.outbound.protection.outlook.com [40.107.223.43]) (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 E0E2F2BF3CC for ; Sat, 9 Aug 2025 18:48:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.43 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765307; cv=fail; b=mWhg58Waa7ppTY1fEwQctnMDadOpAouVzKLgFwF4Ok4dssyhgUcZ8bwOg7sSk2m9dN7gakZNfyl6OlQ91IhNu4XFXpo2U3xYspJ+E7MifSAyArqseAQikXzUoRMTdhWNF1MJryjqyOJAkgANfvtv2GMb30D9voOxZH01zUkcU4U= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765307; c=relaxed/simple; bh=Ql+/Un2trNbMr+Vv9ekJ/k+vLdiEj1JUejdCJh8ItRw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=lcE92PJUTIkYMNU9ebLhxXTkXQ5hIF44xEcLm+NYidCot0WNbEQq7u/vj+usGALCTxJ6PxOpN8pdORKazV+pkG33VPTh3m9JPe9efFJGYJkNZPWJA7k7UQUpEK1+fjSUI+Q5s7NNrs+K2EWNPKT192vl+p9lZ/wtE/BNVDDCVaI= 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=Zj2Yatnj; arc=fail smtp.client-ip=40.107.223.43 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="Zj2Yatnj" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UocOF6je3nUltk/9JYhtlLXwooIMlpaZpeSx0v77D+TsXYDk6a3sn5DXMtc1dmLj68UlNWLLIwaPR2f24+rJf8C0Atj1Vx7nYkYwqDs7emZ9ua6VJOrEZmzVfBSo8dEWj12BS6bpURLDvGYYlFD8k/Ec7jAasrprOp/pBm9alsOozzaYoIyIiXGJ09jUev+gQtigi6dYeox9WdsJ/0vkqH1lwZJWbKqj7nLBByukD1+Sbcag/Os8/ljNw7CHbBJIzVMe52V60poDJmB42/yL30oQPrXftRmi4NcR5M026CGN29Y5OjLEK37ovu7H8V6Cai7J1Uwtf9TOZji3hkicUQ== 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=znYVJZh8W5eS1K4oMuOKzYxkvzqKvkxEyadZaHzgwmU=; b=I+JM/WzjwRwsq8Z9ty8PMZVEe59G05AXejKImrLyvIJ6g+hSRq6z96uQq9lsZVxrnK0meGPd33W72irwYDIjNV5O651Mu7reSBjXIcBW2ZFoLY2VdYhlayrED0toizWdBwRPDJFViZZZZoNf1tG4/af/4JeUdGwCUCd2Orbx+DOI98VvCFInfL0EKofvnKEqdU8NAzTgUz5rO4zNQe1UVyr6DFU+HG1R471hkjBnnwYGcH8bUe6a56SywRV3ced0sKAOzhdXU7mJCzgscwVeJZaGG6BE+dGOuhzRlu5za4icETJAxooEp5wnNDEaMoK7+7w+htUqqFc6mmBK9uyElQ== 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=znYVJZh8W5eS1K4oMuOKzYxkvzqKvkxEyadZaHzgwmU=; b=Zj2Yatnjk/BoQBy8wzInox2oR8Gg/NSDwKoMsJkvHIGxo9Nx4gaJ48j6LENGAWNxq2qNO78pg4iB0zu3X6oeLnRrKBaUeO2cB3HL5D/g30sxpi8/CEpZdY8eXX2HxS7cRseXZKPLxf2loFshQywQzg+dYysmN6vOqExsdGvfm0buKHnOjyq0WJFtVNCg4as28halTd3HKFo4hJ6BHqZzrTEJYL5PzS4I3K/lv0gqkBfSrm4xgMNYhK7UP7nRe3K75cqFK5DA8sbSPwWb2uCh3XISAUBjxd+Xh1hndsTzz1yeXYKuCMAEeVooPQ6SWO69UNyQcyQMI1n6jFsjzns/AQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by MW4PR12MB7310.namprd12.prod.outlook.com (2603:10b6:303:22c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.20; Sat, 9 Aug 2025 18:48:23 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%7]) with mapi id 15.20.9009.017; Sat, 9 Aug 2025 18:48:23 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , Daniel Bristot de Oliveira Cc: Joel Fernandes , Tejun Heo , David Vernet , Andrea Righi , Changwoo Min Subject: [PATCH -rebased 03/15] sched/deadline: Clear the defer params Date: Sat, 9 Aug 2025 14:47:48 -0400 Message-Id: <20250809184800.129831-4-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250809184800.129831-1-joelagnelf@nvidia.com> References: <20250809184800.129831-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0328.namprd03.prod.outlook.com (2603:10b6:408:112::33) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) 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: SN7PR12MB8059:EE_|MW4PR12MB7310:EE_ X-MS-Office365-Filtering-Correlation-Id: ad561d75-e8d0-4524-1e1a-08ddd775516c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?lQhUwxlz74fGq+cFTwB5iTkQYC1vdfGSIE69foi4di2vQTUpuqGe1eoL8S9H?= =?us-ascii?Q?4t+vAm1Sob9kGaCDZEH9Ju87GAxlbv5qcWd3qW3qeWIN9EtWXow+c5fd471/?= =?us-ascii?Q?5c5VM1PpwyX5D3e2RSJ0RfLzKWh/5Ur5yLJ9gzhkxxlSPjSpvcXUcwd9wfTM?= =?us-ascii?Q?X+wUcLJt2+qVibjxW1sXN5dbdg3LnR4VSh3dPb41VrJGC4NNi51alP7MqFMB?= =?us-ascii?Q?Q/nfNYXIUu8VXnsMA6Rdk51w0i1tq/MnXIQVTc9rfO5mbaszor1IQ7zDMQc6?= =?us-ascii?Q?t6VaZyZjsaAQNFM2jPu92axB7LCnJU0l7iqE26MgOpwL28EX89+N7Z8u3bMq?= =?us-ascii?Q?J7HBFrAL53lRnZBPZ0kZu1fzjkbjnXpL46a8R1cyRnVUXdPfZr4b3G/iNnFa?= =?us-ascii?Q?1Wh9MlJT2WqMThYqvJ4yktD+/IGHtzmwOoQJONNlR71TIIsA0ZLA2Iu3M1qM?= =?us-ascii?Q?A2rXIuhnzgauYX1+sfjFW3OmU2+hfNiwmPfLq2ce2uwPz5ftcuwsVjE4uaiJ?= =?us-ascii?Q?6z8vga8BuJRFV6wmATTDXRpz4VWudfVrWCJSxGL7K18kd2tFfIfHYkJiISnh?= =?us-ascii?Q?h6UqMZjagO5r/uOVe5dlhB4ssmCWdrCz6yRmVs0/MP9u1B7lJBFzDG5Z/Q3y?= =?us-ascii?Q?UoCHGFCsaKz/5PVhKULdIELUKpjf9BuXsFIJjXUAh7vqrR20A3msFGoqgsBK?= =?us-ascii?Q?8RvipUzAeh+I7an/QbTG/DuiFVWDhi5j/hS2iL4TnjQ5DEx+pURhZn8T6Mz+?= =?us-ascii?Q?fg0MNg6pbGowXyvY8Sm5/koPd7JM/QaUj80Y8GH+5oWNH4hbYS9F+SObtWhd?= =?us-ascii?Q?vLeYjCzMvrCoP21Ie1Ybyc6ZyPe/hRUsIpNd5mQWTff7z2X2wy1CPHBl8beV?= =?us-ascii?Q?krcB0RzxKtpnrivruoCPWZ9F+MwK+0WWngtsaXBybsRRkX+/QUiWCcmuMHoM?= =?us-ascii?Q?/MFhc9zgGC+Nl2T/aBAu2O0KGA3k/FFBtev+FZoy9+SpWLMBsxLk1YhFtYdu?= =?us-ascii?Q?oxE/M6uC+8v4rijv5demJzmN9M/wDUGOGbo1avHE3nyveu8PPycZkyfWhM81?= =?us-ascii?Q?82z2eIEM0mg9AnFujijeOWiWC6TxggP0ZkiOc3eGxLdLHa3ywvLjUpKyjtKi?= =?us-ascii?Q?DeNlNWW6j6smVx+fSzLKpBlsUwQ21+4wtN2Y2Zak6Mf6cxeFiok2LjSWeRYp?= =?us-ascii?Q?IB77Uob1+GQw6pRPunc4x0uyaGQo5Fh9F66b+TfzQdCpBePlRboZfFxNJ76W?= =?us-ascii?Q?xXsmBBeitLVN1VVLxC3KlGzXNQwrpp2qbrKzC0IDySHrGFCj4YI1/26UUQRg?= =?us-ascii?Q?A5gqaKLGPkqBnkYA4bcbrHkEuH5MpeksBYzrcm6vxnvRO3RmFoK+qqXZLy0b?= =?us-ascii?Q?+7Aj7/B3p3Va8UIYv+wPeDtgugfQgnbxP/0ap0kHzBktOetsYc3kHT6biZg0?= =?us-ascii?Q?lv2RIER3CLP17vlmBGxCoIDMBIHuWP3rOu+eALQxAHL2QLRl9nVl8Q=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?KfOGbF69zsKNwnXOqOddhNOUJLfN+9XAjM5U4WGddusoNEdLu+oe4UQ2XThs?= =?us-ascii?Q?m30V2DtkmuyvlaW6aVUaQldqkdHTmEOboR1WRltH8J7P8V5E30sW8pWwqKZM?= =?us-ascii?Q?d+l0YQ4CQvjh6WWpUNv1Zcz8u2VZFcSPKVjOdZADbH56tFNfrUml7J+qt0hH?= =?us-ascii?Q?pt7Z9vDMpIfcNepWuVcVoUSdod5z9gQgbx2X6pCQhqDh62ay0XfdiURYYK0Y?= =?us-ascii?Q?dIdW5mQnN4rgpkiepQknc7/hzyaqnSMjYJm2u5zuNG0+byjOVTtd4HO2BiBg?= =?us-ascii?Q?1RrmT1QUfPHNEHhw2gVmSV2pZOHnIk3PaidBVP1l0CNg8WDfTvTj1T1YKYPm?= =?us-ascii?Q?0HTJ4UVz9qOHQ/89pxVT9gKegEc7fjHXSetOLomKyS7myfjamehS4UTn4W9/?= =?us-ascii?Q?JiHK/9N2en/TgtfdBwFQrC/dq/9EQ1tyn+i+HEXgCYFvpcP7gt20tI6JjBIS?= =?us-ascii?Q?VKmpvRK3ADybJO2rBveAFUzD+KQ/DFuMSlD3TaJl01XqsOrfGsuId9dRrROq?= =?us-ascii?Q?fyzgHRIMSzkKxpU3Vgqpcg4X3Ewah3sDFOWUjR8+geF6lCjQBgHlT1OWDGr8?= =?us-ascii?Q?CBDhTymZcZ+If8hj6+k7HMaJF19K5zGWbAg/UgOBBxMg6gUw7EKlWUJWbyfc?= =?us-ascii?Q?MRMOy0xgaCAbFMK6ImXUju/Yq2f0+lDvgtBHGXj7hSQtx0Ep6EWhTO5IVVkh?= =?us-ascii?Q?AdQtR2UgW8oT+cWmFAj6ykx5CWIWdjXNButqnTYMHSulVewkHd6xvi9i+tKm?= =?us-ascii?Q?DlWDIwe2TjpsRxKISZ90dU70i1FvYSNoCehNc7ab8JChdXCTVD6hDV0gkAdq?= =?us-ascii?Q?0XZtlzL9l4ynDOMcdHDVFc8qw5sO8gZwYaf0ea5NvxBGEiOKhLVYpFfdbcPt?= =?us-ascii?Q?q/phayXBREKj2hRWTT8zzysqAZq5BRqxVkOk6S/3Em6tSyjz5+75zLG3T+ga?= =?us-ascii?Q?HKRECJgeshXBvu/v4DKz7hnAqz42m3tBRnBdCB2IV1WHCwSUUs24Re8wikr/?= =?us-ascii?Q?r25C5gl1M072dFnvxZSRr+o4BH1Mu57bS3diJaFANqX0UfG+sIjrIabCgfFf?= =?us-ascii?Q?A25bEdHa1cXNxusiYsGfmeMzR9kvaPWFKtGdxt69+5/ntaOMaZS1SIKk/o/u?= =?us-ascii?Q?VC12wvISClyObo4H/JdYkNNSKOhEMnT3eI9hTdyqPkD8VeAYxCNbJ28jgw53?= =?us-ascii?Q?gO7gy01HRiYDHm0QyKBf+zV59PQftAQJhXjTqwJyxT8rtQ+lCjPM1gnnG1ll?= =?us-ascii?Q?cZHxebKt+mFX+6UT4t1eLi+wun9pYAjRnEuhyZ1zuZ228AhmTVnEbifnO45n?= =?us-ascii?Q?Vz/gT2QtT67xVCFxmHL5jFpYZ0JNorcHxOtuDw4wRk6O9/Yve3sqxUZCYme3?= =?us-ascii?Q?o0D+tPM8bA2AWIBxrcEBi1E6dLaedsmTNEKJeQnRFYqnnhQh/kp2luB1+Ut+?= =?us-ascii?Q?wRQfEbrllHtBwl85kU/z9iCuyaCEPr9FdEbx6SU0nF3SfLbyHz9W0l8heMkl?= =?us-ascii?Q?hml9u29qUL6ZEfTuXPF6GYYtoa9Dt6v7h5XJkE6dI5KybcQqeftJeCYwUrIK?= =?us-ascii?Q?kg1QbU4NS/lFPDf508298YBVRx2zp2Sv8BnijM+k?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: ad561d75-e8d0-4524-1e1a-08ddd775516c X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2025 18:48:23.4445 (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: NlxYiVZ89PQwjONGL14Uc9wScBVeI6mm7XRvJuNnx8X2pK1p2yn1TlZiSiHBDZN9frSedYDoWiXKlhOFTpjkcw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7310 Content-Type: text/plain; charset="utf-8" The defer params were not cleared in __dl_clear_params. Clear them. Without this is some of my test cases are flaking and the DL timer is not starting correctly AFAICS. Fixes: a110a81c52a9 ("sched/deadline: Deferrable dl server") Reviewed-by: Andrea Righi Signed-off-by: Joel Fernandes --- kernel/sched/deadline.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c index e2d51f4306b3..3c478a1b2890 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -3381,6 +3381,9 @@ static void __dl_clear_params(struct sched_dl_entity = *dl_se) dl_se->dl_non_contending =3D 0; dl_se->dl_overrun =3D 0; dl_se->dl_server =3D 0; + dl_se->dl_defer =3D 0; + dl_se->dl_defer_running =3D 0; + dl_se->dl_defer_armed =3D 0; =20 #ifdef CONFIG_RT_MUTEXES dl_se->pi_se =3D dl_se; --=20 2.34.1 From nobody Sun Oct 5 03:40:34 2025 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2043.outbound.protection.outlook.com [40.107.223.43]) (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 776B72C08A8 for ; Sat, 9 Aug 2025 18:48:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.43 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765308; cv=fail; b=UB00ViUzlnc+dqXZDDMieJWktp0PE3k1ECLMFEzsZLMQlIVNGvhVLJir8y8WRoA/aa3vbk+Y60jxGpVDCzWiEKI4o+YY6FV2HtuWx8bUs+pihWBAGfwwOlQam9ebYzH0JKlhtGPC2GktAFKy9rWwHE4OlpsFQYoPws0BFDWDwbs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765308; c=relaxed/simple; bh=Ip+rnZl5Sa3mfucsQUTA/hDYFZIMNFmpVMnZmaREai8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=BcSgPyHUw0iL7Ko+WeBHi0CBBr/5+iPbH/qpLZ3/LP2/PDqIgXBo1hYhQJhEqUQLKsSGIwEvv+hFQCwcWOvgtVOsIxXwF6FQDaz05nIZ8tCtsnE3KgpRX9RaMS1Wy/zr8B8WbGfcwigiTdVyo9helif5uRhruw1WRro1bCcrT6Y= 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=OZEl0guT; arc=fail smtp.client-ip=40.107.223.43 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="OZEl0guT" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=zJAcwyYGjMyAGxsxSDvq07C6sNhKrJb4L97IgVX3h9qx/dNlidH+PIrg0HlQ5M+/92XabcNDYxOK2yjme2qSGjnwmtE0XtZtc6fIaZIAZ5XPx+ZkYWM4AFNQsLKRaKz2I15K3dfo9OSFKL/E/mChCq1hDNZ9PCn0QXKpi2obDr4pqjQ484FkK+875tTuGnnWJQt+R7WKYbhFpHVgR2eXek2G5+dQawLkZEg+xTfwA7XBDxttHNXa8ADtVGCN/hQDIeS1t8Y3UnvV4nP2eh1a73VM/FV3Fb5nacx3yq8pXEFWFb3esMNpFkCfhar27ObjBc5VGrfILIvVJkaRHc0vYg== 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=a+RHdAKkeult/IX818u+cXGYVaztUfbM+oETcAjInW8=; b=zFsbMRItK8MWAgsULLLV5VPWYoild92nnAkHKojKzxs4EkSnWHk7A3HteeB3O+lcuV6BiYyvSp0SnU8jrXY5j57/af5j+lidK2vTWFpS9XD4VPLBUWlL6KKaNo2jWhH/5A35O17/Z5Go1zoURBLV7j3fm1l/zD9evelcC5F5lk/L+kw02jxEmi2b8OVsns7yhLZ2/bYBsoXQod3UFgXHJX0EmqFJmEJVW/D2wj0/iEXHIjIMQDzAZEYUZyxu3cULpyKhQEjz6EFWYuK7cCCM+sM/j7K1KDwOoK7zIUIfQa5ICo1SfxENEOaOx/Tde5zjWtxMMpNV6dqzxenEpXe7EA== 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=a+RHdAKkeult/IX818u+cXGYVaztUfbM+oETcAjInW8=; b=OZEl0guT6u1PjWQ1IbmL6ApVvphyDy9GAxot+M5XDdnvCSph7jruZiwI9FTi7fXfeuDlpaZ/EvtOvzGRsmv5+5Iouyrv7DAVsk6HQyYut/nqdCaMswx4m5+AHjMEqxKxPK2PpNnXenN8W2k+tQe7vtBsybhTAOGYGoOvQDIcy2Js4Xql0V4qqoEngjayWRBYNOwufuLLXQfZEdlB8OdgkIlxGlg/MBqB83OgFLXoMr8rGrTAU9PiR+V56fZvqtizxVcgNxuIl/ujNhm6k+J+Y6407TYpjnRiMEG8/gzb0yt1Ey0C0cPhVvaJIpEXuwmHuwSavphi7YHuKMpLlD9gNQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by MW4PR12MB7310.namprd12.prod.outlook.com (2603:10b6:303:22c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.20; Sat, 9 Aug 2025 18:48:25 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%7]) with mapi id 15.20.9009.017; Sat, 9 Aug 2025 18:48:25 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider Cc: Joel Fernandes , Tejun Heo , David Vernet , Andrea Righi , Changwoo Min Subject: [PATCH -rebased 04/15] sched/deadline: Return EBUSY if dl_bw_cpus is zero Date: Sat, 9 Aug 2025 14:47:49 -0400 Message-Id: <20250809184800.129831-5-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250809184800.129831-1-joelagnelf@nvidia.com> References: <20250809184800.129831-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BL1PR13CA0098.namprd13.prod.outlook.com (2603:10b6:208:2b9::13) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) 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: SN7PR12MB8059:EE_|MW4PR12MB7310:EE_ X-MS-Office365-Filtering-Correlation-Id: 3de2f98e-3343-46b3-bcf3-08ddd77552ad X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?iiTWET2BnTs6biHI7iJD1BK9SQxTzkh9CyELpoZbK3DJvBAk904n8H5S9+FF?= =?us-ascii?Q?sZuIs942cZd9+ISnW89DRiY+24Fa2ZZcpbMap/nzLubFJuyZ/tCbAwrojk8e?= =?us-ascii?Q?dkzjS7eOpAc7jpLSDraB1Oe3CLASI8Ibelb9d+hr9y8CV+mJxFzuJtHwEMB4?= =?us-ascii?Q?ZyYiDHVnqJ7VbIPu7dkzeFZMUg4+MRpNQgsLkIgFZxJp2w4kcIcdsrRDv87X?= =?us-ascii?Q?QMtV8HBQplI+sWHZXIqE2RkektXmLIkIy7WsON66L/H2SLsItRN1EvUwXBQz?= =?us-ascii?Q?wyePBX4nkzx19yx0Y6rKbZebhA3UH8AdXEas4fnx0TqYxN7iofi0hYSRsRIB?= =?us-ascii?Q?eFFm+m0T/5eZ44Hbp/7Jj6ffBCFI3exnCVcxW8MtxmHqqS5mImwPWfMNYuhN?= =?us-ascii?Q?XSpOwFInsKvsy8g7PmRSDK+b4gUA34I0wjXQavGaIB53XJEvWFN4n0BfQC8P?= =?us-ascii?Q?Cr3fTBYkk2Sbf0Y/AtHGHxkTfsVlr7P7s1OnD6cfjslaZCfJOqLA3d6UzTtw?= =?us-ascii?Q?WwavQ2GMY9JwxDLZ23lL2pUXi/kvdL4NYOWMu2qskOF0UDpQZhvJ+d1UO2R7?= =?us-ascii?Q?ANvOaMRpz0FsheKJkLSjHpQbs1YF9X59v5meCFhlnjh4mLZlKSIENE0NKJhw?= =?us-ascii?Q?6n3Xj/BRjBbIq8aC+HbpPJ9nAq3geWqKYgEkkCjG9iJCalYHbWybU/P3ABwE?= =?us-ascii?Q?i2I0Aatk4MMWTeCU/YO7bl1vBEobxm7SWu5EZ5+6bxd0ZUTuqf8bRw7HpnJG?= =?us-ascii?Q?xsRE4ChH4yalbNl1py1wxnx6yb731lNx9owvH0RQErBzH0b6xjOCbREqgMUG?= =?us-ascii?Q?/S2s8JlacdQwxkCWAoLyaOZJcpBimc0HAbUw2UA7r5pRRLFVQSkUz1j4p640?= =?us-ascii?Q?jr1uLi4789WBA1GwE1BAxE6kpJIg2w6zgJ7gGdPsjV7DcjYeOYKTH8of6BvN?= =?us-ascii?Q?JFqqVhYvGw1Z5wTopbFn9jeB5dF66+3EPVW7b0y1kzmgXcvp9m7h1y8Kxd8H?= =?us-ascii?Q?FFQBiXzOhMSGzV60U2vWdpNg8oi5gE/BohCiQ3hZJWC26njE023STgQvPhJf?= =?us-ascii?Q?aFaiTrmgdHjuV6u8AtmG9OkN35JizSF2INRPnqA+jY571SYWE9Q8qZkAkicN?= =?us-ascii?Q?oRpJE6Aa6geuPXrez4vl51+XOhwL95fOGBAxULWmGvcAEA/WorLUaCWOqEER?= =?us-ascii?Q?0ocP8glzydQdrSKDMl0wJ5mkjQSr5mi9QZa6waw5lqpZcDCG3cvIHU1H4XLE?= =?us-ascii?Q?+N+FKGwWfsFd628cdb9q0QC9JIagnK/Vo2p6zOarW9aeofgAOCQ1ih5CqFoZ?= =?us-ascii?Q?eJbKA0/GXpJdVF3oStWfwyX2wuKoVGdl3v42vkSspgYhL5W4xk2ynrKg2ZC1?= =?us-ascii?Q?/PGpHVdPlBBLNITdlW1ouyMFWVZO5Qt+Z+kv9KzjCHqX7+TkQk9naByuklHM?= =?us-ascii?Q?Ue6DDYz73DpEW8CxPq2hzdKZoD4lhKQpQypVQqtVRwKJ2TsysKynOg=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?0HIPhZT97lMAm1XzCgCvodwDBKWazJz73ZE+zrnpDFzsfpVVzTl5NHRVkdz4?= =?us-ascii?Q?ZmYTEOKWAcN/DBIlE4Qf0kDTXcfAJMyfGlmEfHRs0vx3iVY1qRs5OhlsU9X9?= =?us-ascii?Q?4IAXge7D6KcDUWaQEH1slJuxzHWIm6Gf3TzlBXinMiyD4KKRH+wprqRrUjzg?= =?us-ascii?Q?X1raKFY7287vbRu5PyQQCC7T+gdYZWeos7xAUmUhataHJG1bevspwKK1hg5H?= =?us-ascii?Q?fzI/wKRnrtCtvvgcwckh5IfeLM+ak3qbJDnYUp0gRQE7qb+/hYowv2nuFh2X?= =?us-ascii?Q?66NxMoH4ybRuMVlkak/z7/fWtNgchisfJrlbmQOzVvLaMst13rFvol127i13?= =?us-ascii?Q?9RIMPBSKOXfGw531dNjjdN/U1lnqNItNGyh7aeCi3QDf8rBCmbT9GidmSt5X?= =?us-ascii?Q?Gr65ESstl4XSb0gW0fNL+Nw8lGhAyz9J+QLvXuOpzh/KKQSsYdX4obvcCn5D?= =?us-ascii?Q?VQfvz27VMreRwf1WSfaFrKTnH+7ss/hr5edYo7jqrQ5L6ocQaHNNAo5vrDyY?= =?us-ascii?Q?UwCx5TDpubPo3qbO6O6h391x7GABJGEgwyskTXzqm6Hehxu12M4f3P/xGKnk?= =?us-ascii?Q?oB0dTBmwWO9xVzQ3//KvYTswmsYc9YpvnlDqCcXvUiInj2GFR0QTIcrOIMsj?= =?us-ascii?Q?5CRr1HipoQA9OqQrdX0yugFP/K8060WtNWHjYdR/2g+t0E8lBD8KH2tyOVUX?= =?us-ascii?Q?XhX0N2rV8ofMGlRvGYwroNKY9AWKPkILKpC4hcdtd4FMcQbD020Zeb15Gk50?= =?us-ascii?Q?xAUEQWIgfFWcTRT6UcGBO8IVMfwy6qUV5hCJiAWgbPn83iKjyiOsbnrvAumL?= =?us-ascii?Q?W/LXxOmG5V0welu4YVLSM9r2Dl5UdK/SB+44nBLFf1jMgpFiMZ5g1VWzlmye?= =?us-ascii?Q?DlYaWYjwlsF5fBYODS6+jOPhdIP372E2/ct2QSP6Ae06dk1fM3xHP2g/Galj?= =?us-ascii?Q?P+KkePDj0uPuyYQzuT8Ybni1E9fg6sNYrtu8Ugdhp8b7SfjUX3UVczCbStkf?= =?us-ascii?Q?FGPnZdw2CJn129N6HwwXH//+zg3HuqmSA/8uQtaDAs367h6zwNGg+oMdMIS6?= =?us-ascii?Q?K+Xn56M4VGtxRdPesF//ntHikXt1b6/PEnFBDeVrphERtl/fErhIgDKTNaHE?= =?us-ascii?Q?9T6vSKofqoOKNxKCvudSVVRIcCYwPIhM0aigLlwjVx632IF3ZeW4WfbBtNNK?= =?us-ascii?Q?uN+RKFBrVnzV/msuErut/Q9cuPjO01l2UluHv5Cqp7QXqmtFwl1F11y1VcFX?= =?us-ascii?Q?xjP3L3ZlUAEmjH/dxo/BU/sVkQwg1jfQUIvUgp9lVw+2waImjuRIPqQqSbE+?= =?us-ascii?Q?fCaUAQ5gC9p5wOZhnZ0oBdt9gyPztzUAGpcHhNEXGBaP6RjHrFUCxeEGUSoF?= =?us-ascii?Q?fHgg5zZ5O6gPeZtpjgWT3gf/yuFa/0j2P6w4cF4D9E+hSRaUCdWFehhUiTcj?= =?us-ascii?Q?SFpa5182ahxwGmlfddlOYpSU+CrCumz03Kyk55vtuYvvQv3xhEaXi1Lfxxmt?= =?us-ascii?Q?O5+/6bsSqFrpP8XfUfSsAMtD4UJJ+ciBmjEgki/zzGmKpssR7AjQlfH2VVfC?= =?us-ascii?Q?g2rQ9jAF8mNSVxc+MKbF43Uac3wRUURit9NdEDcg?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3de2f98e-3343-46b3-bcf3-08ddd77552ad X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2025 18:48:25.5487 (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: N9FC7byjfyFFIlb8tCjs0hn2pL4k1Q4EAtFOeGeIvVnrPU/NpZ1AJOEholTInBU1XLFPiuGgMYwighRdkpsCQg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7310 Content-Type: text/plain; charset="utf-8" Hotplugged CPUs coming online do an enqueue but are not a part of any root domain containing cpu_active() CPUs. So in this case, don't mess with accounting and we can retry later. Without this patch, we see crashes with sched_ext selftest's hotplug test due to divide by zero. Signed-off-by: Joel Fernandes --- kernel/sched/deadline.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c index 3c478a1b2890..753e50b1e86f 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -1689,7 +1689,12 @@ int dl_server_apply_params(struct sched_dl_entity *d= l_se, u64 runtime, u64 perio cpus =3D dl_bw_cpus(cpu); cap =3D dl_bw_capacity(cpu); =20 - if (__dl_overflow(dl_b, cap, old_bw, new_bw)) + /* + * Hotplugged CPUs coming online do an enqueue but are not a part of any + * root domain containing cpu_active() CPUs. So in this case, don't mess + * with accounting and we can retry later. + */ + if (!cpus || __dl_overflow(dl_b, cap, old_bw, new_bw)) return -EBUSY; =20 if (init) { --=20 2.34.1 From nobody Sun Oct 5 03:40:34 2025 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2048.outbound.protection.outlook.com [40.107.220.48]) (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 E91DF2C158A for ; Sat, 9 Aug 2025 18:48:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.48 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765313; cv=fail; b=Qt2Phlg0RCU7+1OXI7NR9SHxpW7fDpcn5v96cT8LCjNdTsyc9p5ECAorZ4WRUA2VW7LAXmGcQMzsA5J0P8YmfHEh3J89SW6wnoKsL3EYqx6a/yYBmO+B6aRMabnVT/iHX6ZsDnBwsYBRgwhF9tpCnlA1wVXQOvszbX9qQp54Sxw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765313; c=relaxed/simple; bh=/OzvQxs18eSHHmn4oaoaLYLK8emxG0fO0GD0vjQcMOU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=Iv1aITO4oq8RfQ4zAJZNW5bCGYHjFACsCKmCzn8uY2qqMmsmiz8itUeCKKwp92rYN/GklV+NQNiLcx+18TnI60LRq4YpkAeVVOZ7GhRrM8pVKl1A6FNAz8ofGPhli/eM/tj1oJZNF5PN7toyRNb3d3dtfNB/gc6FRNfgu7FmMLs= 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=nnlvcpK4; arc=fail smtp.client-ip=40.107.220.48 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="nnlvcpK4" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wKT1g1eCsMazOgvSNLE5OjDDTlmkfMc3dWHw2Aseh+0XnLaxc1X2Bm+twvq4scXFzzQ7LTIrdyrhqu5ZUmCqKjuEC1AxUuys5bQKaJLMGFFLCmCAluqhvUuOZtNKoNFDPhRqOzzBzrUZEpl18Q5DOadkLncvYWai6G1MsXChZuM4dhXsdJpU5Eithvc++fhK8/gk88C+/AFwDeYzRKEZM8r0J6F2r1C+/OFW7UY3O/AQbS30QxG9m7LEpUMV5WtwXNp4GvdPezKgsifjw/XStrcTtJ3qv46JnAOE66/fqXq36Eb7IHpbAsH31arFj5Y6Kf2Tydp78rGqq0jD7akLZw== 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=sLbGcHsCTQY3Cta9c3Kg/oPDXLsocUs+v6HVKWPAefg=; b=FqQsSurOQ73vJ60XowqR1k5tB4uFa+ZyDGggHEvDfYFE3j9OqncvAUZRNVJvFMGv776m64hlNU3xTPqZeY5UKsg0l+7N14DGyQ8F/i8nHXgdx4ocnEDsyNlKlzI0i5/kBWOCpzkXZ9U+gvf8c1R2GRJqaSfZiTwfAkuAVvGdFz2VzwvUb+Z2IId/oLUMTkRyAZIt7WMbVe2O2LukydPDJZjhaMk/yPQcugUzDJHSZJjDtolE9kqrKRXlSjIJ+KyeMOOoldIAhXuxBZ4Pdjmgyj+2aaNY4wD+AZKq6+hEQwruka3zDwMWG8LGqeInasgmFnx2Ilw0sDk5rva1GakzgQ== 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=sLbGcHsCTQY3Cta9c3Kg/oPDXLsocUs+v6HVKWPAefg=; b=nnlvcpK44lSQC46fmiH5AN29xStULxJbXdlDyFCqevrAj4q7OLksZL+owjA5uQhizoH3IFebFeF+f4VQb3FA8K3WyA7X2xVYKDNY0W2kHf4S+LgDGZZFTk9AWgwTSvShjyMiItgGzaoGzmLwPXOlDALOUOuZKae67G6b+LeRJyWhJkskzmv/oCMBFw1MdWFw3VNfwFH4w0GKTlattsHGqN4goGj5u+0lprbwCF9SeKPvZftOHypp3d21cN1A3OU+4tawBTWBFDWY5RVPROk+0A0VBDe1o646ZZUc5yCaTm7A9dK2Nf47UM9NcUw1Pq8Q/1ESPYVN/IhVgPu9swZD6w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by MW4PR12MB7310.namprd12.prod.outlook.com (2603:10b6:303:22c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.20; Sat, 9 Aug 2025 18:48:29 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%7]) with mapi id 15.20.9009.017; Sat, 9 Aug 2025 18:48:29 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , Tejun Heo , David Vernet , Andrea Righi , Changwoo Min Cc: Joel Fernandes , sched-ext@lists.linux.dev Subject: [PATCH -rebased 05/15] sched: Add support to pick functions to take rf Date: Sat, 9 Aug 2025 14:47:50 -0400 Message-Id: <20250809184800.129831-6-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250809184800.129831-1-joelagnelf@nvidia.com> References: <20250809184800.129831-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BL1PR13CA0021.namprd13.prod.outlook.com (2603:10b6:208:256::26) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) 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: SN7PR12MB8059:EE_|MW4PR12MB7310:EE_ X-MS-Office365-Filtering-Correlation-Id: bf29c71f-4a89-4476-6234-08ddd77554c8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Lgplc2DR5RWqokWIQcCHDMq0FJm2GpELEswZGJMmXde/N+mSkasLz9QY5+Kh?= =?us-ascii?Q?VYRi/Ic1bnJQ84ynMvPrMz+hBbLBXf04Hvy4crijL9ai5yHMPceiucSTzNFp?= =?us-ascii?Q?rpU+uRFOJ2BiEfKgfLjohtW4eDuE3yklTccq5AoSx76gmq6wZqVbsExtMjvp?= =?us-ascii?Q?A833VCB9eINbe/ikkGxjwItwGyM9SBHf7evZF+RUvFfX0MOcF+CjMx8DUK/N?= =?us-ascii?Q?jxaRFQLaHXzwJVBKH1tWER5rufEeWZkO4De9r/WeR07JrVg5KqiK6RlGIArn?= =?us-ascii?Q?xEa3IEWlblDW9Qktyq6oOP6e8OUn4MNAQhqDg+tTmrVDmxJhFivJqurgspBS?= =?us-ascii?Q?yfEXzxACAtR2h6nGLz5Ep/QdcnJO0/NUFIZmwKNG54zPbkd9vyIQiF678DM9?= =?us-ascii?Q?QbjhnXNUpgz/D171MaassU2rGZvzGApxEkUYiTYKQgUs1seFZIN0Cc2Wj1tE?= =?us-ascii?Q?7b7zpVSsuWIGkZYJiROPlPYDpzAFDv2SwtcY7rHaAMa3d45MPQ7jdWObuJFo?= =?us-ascii?Q?7po8J307V9AaMw9gN9S5I7UE1vMgIeTFI5EHsh1J9z0+lBMVxZ9H/yU/fdJl?= =?us-ascii?Q?CZFMLtmLatwcME4UmNK9htC6MatJ1Jsn2ct5cmiksi+b1Wahpn9pRMPTljtO?= =?us-ascii?Q?qmwkDqOEN+T0NxcQat+eNHOMXSlCqLr50UIQrSgPR41jr5pyWC9Oi9KGHcnu?= =?us-ascii?Q?L7bpbJa7LD12Of4Je3RepX4q3tNgHvKeo+smYVXqZ0bzBOa05SrvJ8ppRobe?= =?us-ascii?Q?LXK9m4P8K7mk8LSHBtbCjLbwmWiSGausmu/I8UWdCnG/V2H9D9BBbixpIZn+?= =?us-ascii?Q?f/OZKGu5i3Z5NubbXIaueWt0cyW0XYFcFiitCIxxVfsLo3iSS/LbRDN0h42x?= =?us-ascii?Q?ztTTzWAyriuVKEDbRCtV8089z86dKdGyLvuT/hB17fxduqpa4o++GdKrmUYT?= =?us-ascii?Q?obTaL7kKM3HcKgV1XjsVnKdTeHmnjxxrDJ0qTEJpJ2VlMm0DyJPoPRRykhld?= =?us-ascii?Q?VViN9/P2msxnrFpHPHmTnpfN3u3V6DmXh6T1oAy7WkmC6pPemkOa8F740iB5?= =?us-ascii?Q?mmhb11fHQcPNmyIJTIdu2dsFoqcomw4zxmZKZS+q9iEXmseTcJ4vzxt0LbwX?= =?us-ascii?Q?KF4xArr6YeA1p5tRubS5M59AGytTHhUzG43igPcYJIcrl3jYgFsHP1jhTqsr?= =?us-ascii?Q?QCl6BJ7JMpDenFISXTqtWCcO4ZVOYHDtZUrFsJszyZ3S8/m2Z3ZyFArtWaID?= =?us-ascii?Q?+mPDaTJhEm58PiOE1QGzQ1vbhC4mD5FlaWMBO1LrACGI/U3D9ZIh7XjjWhx8?= =?us-ascii?Q?PVOfx+C23TA0pMn5pEp6nuTIbiLKQEZ8bDiMrJ83Uxmxvk5lr5kRo/+5Mv+S?= =?us-ascii?Q?d0ymPGAqSGWLfPTUfN/b+Q4wLheOCt8uo8/SRIAM4Umibn+J1JMcl4LKrxuC?= =?us-ascii?Q?fDoRhdcd8KrOpHkMIdqBDg9gWGXVm8btmolwhWWE3I85PXXyTO7Zaw=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?lqc6kLxE4g2ba0rfYQDdBUhCwtTWuvF6wflJi4MniRfbY8p7Z8RGaeo1PQWG?= =?us-ascii?Q?22ufCAx1Jqphl17l9AaksZsXlARX4g+moTqRZ8DQw3aP2gTaSCsMF1PDGrAD?= =?us-ascii?Q?EPa2YToJCuAvXKLcjI+j7I62VybMvzkyh6HoXmIAOxgW6wqPpAi25UrEm0bP?= =?us-ascii?Q?U1ftLtHjX0U+YpDUmjhai4O6hRXeHAnYvrLhPPrhXZYA4wBh+APXyf7E40aI?= =?us-ascii?Q?hU537VE0idj23t3rQUyTCk9CeHARbvo3OBtPlPhRYPmbUegTpXs6aDLQW0t5?= =?us-ascii?Q?0jUwbef3W89GukABnNUXEwNNX6p/iNkRqTpyUmLAqG95PXw4KEiqJow2mmRI?= =?us-ascii?Q?7dQLVw35P/ul8v+ViZYNrjxs7lK8bGofAh1y2r4sw2M7Pth+CKM/h6cAAxWJ?= =?us-ascii?Q?e/9y24vsGpTnNDxQeX4TL8RUBRuN/cPNhUgl7Y5SSmy7N3/P7jPjFhIwgs2j?= =?us-ascii?Q?RhLitrFiE2A7CmPeGcD3iiY8pzIdoEcJtNLrcqlPGS/zC5k/pcZ1iwj2olY5?= =?us-ascii?Q?yFvZxjm5GkNrD8V2JiX0fmbZVnQJOcGNEI6Sfu/53rhL7+7t6VvRVXvpJv60?= =?us-ascii?Q?A2TbMudrvs7Pg5IVt9rtYwhMtrjc0m78EH7TMRLk6FeUikepcUXdyIHkVNqW?= =?us-ascii?Q?PKGwCQaxHoSxeOkHdAZt6kD9RSc2ZQIaGodWQFYFr28bx9x08RQcw/PL2u/F?= =?us-ascii?Q?U0M7ge5EOB3uqOSbkNWoCiVi+jmBqGBw9nh7UAeT/4PUa3WKAtyrwdfDIZ2x?= =?us-ascii?Q?5Sleslj7lamGHQOnDZ8DFU4GtpwWtd1R0ZDrlB2ydu8wZokwcyp4sNm79ZM/?= =?us-ascii?Q?gOIBYDJZTNzZVoPAA3SvVPD88oUv3rMe5ehamvpgbnLurRc/wm1l4y6jGCjn?= =?us-ascii?Q?h9nuoWDc/BYs/BEjbzKgHtVMzGBxYBUTgmWgHYcfaDZ8AlFCdJRzEjpWRWHx?= =?us-ascii?Q?LqkLtnIOQ/qqdkFpqyLwPrV4tZBc1gbF8l1a+Luai3kkGv39WA/i3N+1XiEK?= =?us-ascii?Q?NAKBopzY3lWe0uPePZF7z9qP0CNmL4MMmxDihHsqW0hAgBlvxV1chpqzVE5z?= =?us-ascii?Q?o1bmpflFloKwPcyDfsJKvhRjlmLHc2uZZ9p+t7OLJVAuqZ3EMWpP+VHfxMMN?= =?us-ascii?Q?FAnSw890iLjBpfRYQ0m7j/QgmcJzDFibQO8VJjnoHb9x9uVhvQOJG05SNGrF?= =?us-ascii?Q?LgU+K+44USkmPJLU1pzH/pDbntzxIo0R9PCuSRlY09w/6fzr81I2E55pWLcJ?= =?us-ascii?Q?d3j7rpfxWAOgYwF0CcJB8JpFxAXpw8eBe33KzYusRe4/+knmb1hkeyja2ICz?= =?us-ascii?Q?cr1FE7jqPSquVgmBrzSRiJl9RuH37dI/2HWzKXtHSKAnLkRSGpyR6l983P7W?= =?us-ascii?Q?ZhgEdxlQ+EHGEKTDFlHl7eg4FeTCh2UtlhYC+xZyNjGgaPp9MlwUMoh5YlpQ?= =?us-ascii?Q?3euLJZt12AWSl1HrpADINWCS3dyfw8/syNqfcJgMbg8eaqYS8n90W1ufDmCk?= =?us-ascii?Q?CsYFisLevbYOMWF3OEL8XneUJjrTBFFsCrUgO/TvMIwSgGBTY4/dlAQAbGxk?= =?us-ascii?Q?jpf4uCUncOBtYOZJIhW+elvSTFG9eSfIG4yBdsay?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: bf29c71f-4a89-4476-6234-08ddd77554c8 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2025 18:48:29.1036 (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: h+rn62gpP7s64gQgr30V7OSf8B+U6n/tRx5SjGA25umzjNviFWpiu/LNYv1vA/YRoCumwytCjE//ikdFV8tAIg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7310 Content-Type: text/plain; charset="utf-8" Some pick functions like the internal pick_next_task_fair() already take rf but some others dont. We need this for scx's server pick function. Prepare for this by having pick functions accept it. Reviewed-by: Andrea Righi Signed-off-by: Joel Fernandes --- include/linux/sched.h | 2 +- kernel/sched/core.c | 16 ++++++++-------- kernel/sched/deadline.c | 8 ++++---- kernel/sched/ext.c | 2 +- kernel/sched/fair.c | 13 ++++++++----- kernel/sched/idle.c | 2 +- kernel/sched/rt.c | 2 +- kernel/sched/sched.h | 10 ++++++---- kernel/sched/stop_task.c | 2 +- 9 files changed, 31 insertions(+), 26 deletions(-) diff --git a/include/linux/sched.h b/include/linux/sched.h index 2b272382673d..4ce4434e7c4f 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -635,7 +635,7 @@ struct sched_rt_entity { } __randomize_layout; =20 typedef bool (*dl_server_has_tasks_f)(struct sched_dl_entity *); -typedef struct task_struct *(*dl_server_pick_f)(struct sched_dl_entity *); +typedef struct task_struct *(*dl_server_pick_f)(struct sched_dl_entity *, = void *); =20 struct sched_dl_entity { struct rb_node rb_node; diff --git a/kernel/sched/core.c b/kernel/sched/core.c index be00629f0ba4..f3a26d13b926 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -6004,7 +6004,7 @@ __pick_next_task(struct rq *rq, struct task_struct *p= rev, struct rq_flags *rf) =20 /* Assume the next prioritized class is idle_sched_class */ if (!p) { - p =3D pick_task_idle(rq); + p =3D pick_task_idle(rq, rf); put_prev_set_next_task(rq, prev, p); } =20 @@ -6016,11 +6016,11 @@ __pick_next_task(struct rq *rq, struct task_struct = *prev, struct rq_flags *rf) =20 for_each_active_class(class) { if (class->pick_next_task) { - p =3D class->pick_next_task(rq, prev); + p =3D class->pick_next_task(rq, prev, rf); if (p) return p; } else { - p =3D class->pick_task(rq); + p =3D class->pick_task(rq, rf); if (p) { put_prev_set_next_task(rq, prev, p); return p; @@ -6050,7 +6050,7 @@ static inline bool cookie_match(struct task_struct *a= , struct task_struct *b) return a->core_cookie =3D=3D b->core_cookie; } =20 -static inline struct task_struct *pick_task(struct rq *rq) +static inline struct task_struct *pick_task(struct rq *rq, struct rq_flags= *rf) { const struct sched_class *class; struct task_struct *p; @@ -6058,7 +6058,7 @@ static inline struct task_struct *pick_task(struct rq= *rq) rq->dl_server =3D NULL; =20 for_each_active_class(class) { - p =3D class->pick_task(rq); + p =3D class->pick_task(rq, rf); if (p) return p; } @@ -6158,7 +6158,7 @@ pick_next_task(struct rq *rq, struct task_struct *pre= v, struct rq_flags *rf) * and there are no cookied tasks running on siblings. */ if (!need_sync) { - next =3D pick_task(rq); + next =3D pick_task(rq, rf); if (!next->core_cookie) { rq->core_pick =3D NULL; rq->core_dl_server =3D NULL; @@ -6189,7 +6189,7 @@ pick_next_task(struct rq *rq, struct task_struct *pre= v, struct rq_flags *rf) if (i !=3D cpu && (rq_i !=3D rq->core || !core_clock_updated)) update_rq_clock(rq_i); =20 - rq_i->core_pick =3D p =3D pick_task(rq_i); + rq_i->core_pick =3D p =3D pick_task(rq_i, rf); rq_i->core_dl_server =3D rq_i->dl_server; =20 if (!max || prio_less(max, p, fi_before)) @@ -6211,7 +6211,7 @@ pick_next_task(struct rq *rq, struct task_struct *pre= v, struct rq_flags *rf) if (cookie) p =3D sched_core_find(rq_i, cookie); if (!p) - p =3D idle_sched_class.pick_task(rq_i); + p =3D idle_sched_class.pick_task(rq_i, rf); } =20 rq_i->core_pick =3D p; diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c index 753e50b1e86f..7baf2ff11587 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -2377,7 +2377,7 @@ static struct sched_dl_entity *pick_next_dl_entity(st= ruct dl_rq *dl_rq) * __pick_next_task_dl - Helper to pick the next -deadline task to run. * @rq: The runqueue to pick the next task from. */ -static struct task_struct *__pick_task_dl(struct rq *rq) +static struct task_struct *__pick_task_dl(struct rq *rq, struct rq_flags *= rf) { struct sched_dl_entity *dl_se; struct dl_rq *dl_rq =3D &rq->dl; @@ -2391,7 +2391,7 @@ static struct task_struct *__pick_task_dl(struct rq *= rq) WARN_ON_ONCE(!dl_se); =20 if (dl_server(dl_se)) { - p =3D dl_se->server_pick_task(dl_se); + p =3D dl_se->server_pick_task(dl_se, rf); if (!p) { if (!dl_server_stopped(dl_se)) { dl_se->dl_yielded =3D 1; @@ -2407,9 +2407,9 @@ static struct task_struct *__pick_task_dl(struct rq *= rq) return p; } =20 -static struct task_struct *pick_task_dl(struct rq *rq) +static struct task_struct *pick_task_dl(struct rq *rq, struct rq_flags *rf) { - return __pick_task_dl(rq); + return __pick_task_dl(rq, rf); } =20 static void put_prev_task_dl(struct rq *rq, struct task_struct *p, struct = task_struct *next) diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c index fedc0dcb8b38..f6a55cb823d8 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -3395,7 +3395,7 @@ static struct task_struct *first_local_task(struct rq= *rq) struct task_struct, scx.dsq_list.node); } =20 -static struct task_struct *pick_task_scx(struct rq *rq) +static struct task_struct *pick_task_scx(struct rq *rq, struct rq_flags *r= f) { struct task_struct *prev =3D rq->curr; struct task_struct *p; diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index b173a059315c..2c44354b0ed0 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -8737,7 +8737,7 @@ static void check_preempt_wakeup_fair(struct rq *rq, = struct task_struct *p, int resched_curr_lazy(rq); } =20 -static struct task_struct *pick_task_fair(struct rq *rq) +static struct task_struct *pick_task_fair(struct rq *rq, struct rq_flags *= rf) { struct sched_entity *se; struct cfs_rq *cfs_rq; @@ -8775,7 +8775,7 @@ pick_next_task_fair(struct rq *rq, struct task_struct= *prev, struct rq_flags *rf int new_tasks; =20 again: - p =3D pick_task_fair(rq); + p =3D pick_task_fair(rq, rf); if (!p) goto idle; se =3D &p->se; @@ -8854,7 +8854,8 @@ pick_next_task_fair(struct rq *rq, struct task_struct= *prev, struct rq_flags *rf return NULL; } =20 -static struct task_struct *__pick_next_task_fair(struct rq *rq, struct tas= k_struct *prev) +static struct task_struct *__pick_next_task_fair(struct rq *rq, struct tas= k_struct *prev, + struct rq_flags *rf) { return pick_next_task_fair(rq, prev, NULL); } @@ -8864,9 +8865,11 @@ static bool fair_server_has_tasks(struct sched_dl_en= tity *dl_se) return !!dl_se->rq->cfs.nr_queued; } =20 -static struct task_struct *fair_server_pick_task(struct sched_dl_entity *d= l_se) +static struct task_struct *fair_server_pick_task(struct sched_dl_entity *d= l_se, void *flags) { - return pick_task_fair(dl_se->rq); + struct rq_flags *rf =3D flags; + + return pick_task_fair(dl_se->rq, rf); } =20 void fair_server_init(struct rq *rq) diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c index c39b089d4f09..6c6cc82ac2c4 100644 --- a/kernel/sched/idle.c +++ b/kernel/sched/idle.c @@ -466,7 +466,7 @@ static void set_next_task_idle(struct rq *rq, struct ta= sk_struct *next, bool fir next->se.exec_start =3D rq_clock_task(rq); } =20 -struct task_struct *pick_task_idle(struct rq *rq) +struct task_struct *pick_task_idle(struct rq *rq, struct rq_flags *rf) { scx_update_idle(rq, true, false); return rq->idle; diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c index 7936d4333731..145a91ae611f 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c @@ -1695,7 +1695,7 @@ static struct task_struct *_pick_next_task_rt(struct = rq *rq) return rt_task_of(rt_se); } =20 -static struct task_struct *pick_task_rt(struct rq *rq) +static struct task_struct *pick_task_rt(struct rq *rq, struct rq_flags *rf) { struct task_struct *p; =20 diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index be9745d104f7..0175946568a2 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -2380,7 +2380,7 @@ struct sched_class { void (*wakeup_preempt)(struct rq *rq, struct task_struct *p, int flags); =20 int (*balance)(struct rq *rq, struct task_struct *prev, struct rq_flags *= rf); - struct task_struct *(*pick_task)(struct rq *rq); + struct task_struct *(*pick_task)(struct rq *rq, struct rq_flags *rf); /* * Optional! When implemented pick_next_task() should be equivalent to: * @@ -2390,7 +2390,8 @@ struct sched_class { * set_next_task_first(next); * } */ - struct task_struct *(*pick_next_task)(struct rq *rq, struct task_struct *= prev); + struct task_struct *(*pick_next_task)(struct rq *rq, struct task_struct *= prev, + struct rq_flags *rf); =20 void (*put_prev_task)(struct rq *rq, struct task_struct *p, struct task_s= truct *next); void (*set_next_task)(struct rq *rq, struct task_struct *p, bool first); @@ -2550,8 +2551,9 @@ static inline bool sched_fair_runnable(struct rq *rq) return rq->cfs.nr_queued > 0; } =20 -extern struct task_struct *pick_next_task_fair(struct rq *rq, struct task_= struct *prev, struct rq_flags *rf); -extern struct task_struct *pick_task_idle(struct rq *rq); +extern struct task_struct *pick_next_task_fair(struct rq *rq, struct task_= struct *prev, + struct rq_flags *rf); +extern struct task_struct *pick_task_idle(struct rq *rq, struct rq_flags *= rf); =20 #define SCA_CHECK 0x01 #define SCA_MIGRATE_DISABLE 0x02 diff --git a/kernel/sched/stop_task.c b/kernel/sched/stop_task.c index 2d4e279f05ee..5de508f9550b 100644 --- a/kernel/sched/stop_task.c +++ b/kernel/sched/stop_task.c @@ -32,7 +32,7 @@ static void set_next_task_stop(struct rq *rq, struct task= _struct *stop, bool fir stop->se.exec_start =3D rq_clock_task(rq); } =20 -static struct task_struct *pick_task_stop(struct rq *rq) +static struct task_struct *pick_task_stop(struct rq *rq, struct rq_flags *= rf) { if (!sched_stop_runnable(rq)) return NULL; --=20 2.34.1 From nobody Sun Oct 5 03:40:34 2025 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2048.outbound.protection.outlook.com [40.107.220.48]) (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 BBFE22C158F for ; Sat, 9 Aug 2025 18:48:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.48 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765315; cv=fail; b=pCgk/33cOE7DPQL+p4UtAuly1Gls3KCwE3w7uqA/ce5m/Vl5m/AeV37rKtfMY1LxGrVeT9wzg+WHAvBTg/OMc183TJ6/Pr+ZUmNcOiHrqY4b3TumjeN3Qi8FJmGIwVQSEOjzuEAPq0qHKcFsz4H0+A9vQt+vpnHtDVliI5UP90I= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765315; c=relaxed/simple; bh=+NNb6ayIkHAahjMSAauDQ80p1O8ZyMQsU0Cn/7VSyrU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=csJBviPz7J2oqggi/PMYBBJVVE1xEwC4NAZ8uuR9AXRTzGXiggrDU64roW+czOLOtTDtagL/FNUxNt+esScf/twqCH8aUf1v7DkownMAFsDjyalLelUZfeTSMEVhMzxywA428ICICqXaELalHldqRAYDrSzw1i4jBOO0Hn3dZvg= 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=ohPfdRtG; arc=fail smtp.client-ip=40.107.220.48 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="ohPfdRtG" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MozphUFJA6i9dI8x39vOojWRAsFQcqgOAsgjUZKU9dQJdyVe9syU8xGH4ayJietTqIdav8utMkf2ltlfADNZocj5Adjau1FCmOdnO8BcotNL0LoiuVk9NzoSPo+13MN9q+jYg2tM/eUtWNbiI2QN0jVqAsqaiH/AWPX37mFuf+uaTBmkk15yfPkWZ59+xBfu9CcFxCG/TJzYChlyAstv9ZCxzkQ7v+RoT8SUl9rfysjkf2+kQqJWBA+xI5wJTEUMDKZ0P7tLkyi7Ho+xx53/vwtoV3NtgL7YdvC+IwmzkRXTEl3XCP/1ZUphGWTqDZo8ryVtrs2UEccJbu5v5Bbbqw== 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=Vzbwz9EilSCqRcRkFluDC/wvh56LIO244ci3VBnqwTU=; b=tarLPiSqBi7FP7e+9H5SV7k4BUZtoZQ9ujSqWyEHMulYxXq7BCfRMYSjtAvp8kFAYFK4oobCUy7gxH2Ci2akEJYsRWo2xX45NHCbxKa2r0ojDYhd1Lba/42TTR7RYZrpnmwNsmeL14UBbaAZmCeDu8b5K6rByYLvB47HR6wCr7+s9HLSfu+LmKN/AbxoIgpcISq5Qo08x3V4eAp6AbZb0xt0C+OZPgVPzaLOvkKyDeBO9DxCSKR+IItv4ajJclTe6Ut7HrL8c/LD/UvMB67YypwHzwWXm1Z3V4A2OnBl4cL1tUylXHu6Xyg5Q9mKPCdl/toA2m5gvvDWZ1b57KWS7g== 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=Vzbwz9EilSCqRcRkFluDC/wvh56LIO244ci3VBnqwTU=; b=ohPfdRtGk1sHuyJy4ucanlhVy/P6qwNDwS/lSb8ii/dKSj3gFRX2eajAYNwTmHUjiDEEiUBew64NDZd0Afo0T/XwrEIllYCXn6GsDZpgfXOQfysqnJuRtTcqJ6zl6JKfmtdb76FBJURki/x5DBCt5VneUAlCGC2nWuV6rr9QuY3fHX6OmMfbk3qLlgm1s9olYK3GaQEbfspV8SA7kjS/l+QtvFdeQ3yeBNzf6zsEQ0z+AKZB9EJLk57s767pvdZgdWnJNCJTYSheMLSxkhUFis6MGlH39EVDTQEMXKTYA6WD4Mb1m4KBtRN1mgvfTMfazCYfn3WEFHDJmIZ2IcMe0A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by MW4PR12MB7310.namprd12.prod.outlook.com (2603:10b6:303:22c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.20; Sat, 9 Aug 2025 18:48:31 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%7]) with mapi id 15.20.9009.017; Sat, 9 Aug 2025 18:48:31 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider Cc: Joel Fernandes , Tejun Heo , David Vernet , Andrea Righi , Changwoo Min Subject: [PATCH -rebased 06/15] sched: Add a server arg to dl_server_update_idle_time() Date: Sat, 9 Aug 2025 14:47:51 -0400 Message-Id: <20250809184800.129831-7-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250809184800.129831-1-joelagnelf@nvidia.com> References: <20250809184800.129831-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BL1PR13CA0438.namprd13.prod.outlook.com (2603:10b6:208:2c3::23) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) 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: SN7PR12MB8059:EE_|MW4PR12MB7310:EE_ X-MS-Office365-Filtering-Correlation-Id: 327c214c-ea2a-48bf-6ab7-08ddd7755661 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?7bYZWClnrvMLCHKDfiaE8mmq7as2vT9Ej+Sz7DUqWS6BkfJdJZkSNUFyHfbj?= =?us-ascii?Q?yHZY028Y2sDYqZw6wY6UOWN7b1hBa+CQAF1OI2+LrNsiPVV34oQYtYTQFDeb?= =?us-ascii?Q?TfmjFDK+rqsalMQdFdo/kbJYfWchEueMXP463f7k37dRogjv/xGSqoAPb0/8?= =?us-ascii?Q?vfawoU1gD5e5IEt1uSSTPxzt+B8SXFvCUsdU2TzdWMhNhH6EZFg9Buzg3bFQ?= =?us-ascii?Q?xn1ahS+n9zg2aiZYPgdcN/xC9J2kPwj0Vx4fTgfXxG212wyLOhl6zrBDANkq?= =?us-ascii?Q?KSKoUhUv4DvooE2waIWwoRgazBTT9PA14GpY9PiKsnYVYPz9NyyncPDwlukv?= =?us-ascii?Q?sB8QBp2Ho2wOmQPlPRws7XqEjQlrac25iI3sNnQ+nvewpyHvfp2WBVyXV5Tb?= =?us-ascii?Q?11/Zfv6rdL4KxcNhYIJuTAkde8CuZ/apQxRte0ms4XHtnY8iR4MdymbrPcjI?= =?us-ascii?Q?TfsMbwRbJ98GsE60K3Dw3wpE3kjFcYfYkLeyvDd4UGOfvL4WhGqc2amPHDZg?= =?us-ascii?Q?fm0mZeTxTxaPIfillCzv3k00weyxn5k8xe+w2GP3n7aZEExohbFY2cqKtED3?= =?us-ascii?Q?k1qZXr4V+TiJBjYFwDVzg7A5xrMet536IYc4Qhr3u3EmwgXx5CvR1V4AQzDN?= =?us-ascii?Q?251gvWNRSjEHeY7wCzn2JsnNtdPdTl2IKHlWUgvcPzxPt5QEvBFDT1qR5mdT?= =?us-ascii?Q?2M+XPK7b93KHrlPjLq8PGwn835NFcB/CsmCJ7kNOyYzIay0tO4oevqlfrnQT?= =?us-ascii?Q?uS/NfgnKPvrr/XTKn58PexGdLYkVnm8SrdKPW/OTcNoZ/JaW8P+5dVJ+MVzU?= =?us-ascii?Q?IOPUA/4QiCC1n/5gTT4/p2wXHVjmARdEUUiKNi1/tbnC2hO1lGYzVfK+TMxm?= =?us-ascii?Q?QP+L3CCls4m6KUpECkvRF/fO4ZQ83QlLKFv0/pbX2FV8vu4wVdObHgy5D34x?= =?us-ascii?Q?UUPOkUTiUGlYPF5MLPY2wLMDKPus9OzCLxD/OweRcv+qgRCgXLsK3XAplqKh?= =?us-ascii?Q?0V+0bUcfA2XIDKU+m1m1rq0NGJRpCOlooXYU3yzD8ONXgHK2Tv0Md7rJVzms?= =?us-ascii?Q?mEco12nX3mG4kBkf8FqK8MxDktI4omDoF0pq1w19pG7qpbtF2K2ivLhu7cdj?= =?us-ascii?Q?dYX/mJ5tCsbrs9Vi/PsdNBq6MtwCaCBxBIdSlqGXdt9DJCujsSBAfY2tvLFC?= =?us-ascii?Q?dzYxhZTkopihUYP3hWxCQW36CWstFW7cQVr6oxRHAQMdLUaLrRvIUH0HwSJm?= =?us-ascii?Q?6+SGUnI14x7MU37mQhKD2K1nayxyFa+zeWqyqsrW1KuMNnYfnVv4t/TQ7b0n?= =?us-ascii?Q?qh7ixGecwhToq239CIjuvMxrb6RT8aYq1qgscGl4HayiXsiKAHHiU9QhEflw?= =?us-ascii?Q?TYfSAivYuiGPgu0984ca4TSUpf137riQYaaUxpvPRMLzxtCeMw1jH0WTNQxx?= =?us-ascii?Q?CSOQgLzt9f+sM8HljvE8dAYrdNeVbIhrw3RtUT3y5yqbjlUrj9Z/AQ=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Bx6InseR/oh0s85V7F2/MSm313QQhgQuLKyREOevi4L/NdejkQIe1A4sHP7z?= =?us-ascii?Q?eItRMlhvJ/UnbSxSWoUvkDU9EodedH9NRNWu7GPnQ0JjXF+4erb1DOMIvEsw?= =?us-ascii?Q?cf3w+Olj1d0XCcotP1+yLV+idt8IFBKQ+T3V2bgAF6CV1hP3MI19m90uevVU?= =?us-ascii?Q?CiHzyxNXbmkhHW3vfdseCVh6jb16X1ExrTObt3xBpe0tZI36gzgTZ3wR/g0g?= =?us-ascii?Q?6dvqE94gx8mNt+t5o5az5bsqF3PxxtpbyVvCVz11OLoibGaJ+fIYU1O140mA?= =?us-ascii?Q?VGga59EFP2fBd3hbHgJAQC8zKOt/vj8S3b0VzCxl9eeAs8Fxpt4w7SgMH+J3?= =?us-ascii?Q?R4wvZKQ8uG1qUzUezXG1iYpUYrDK1og5kpR9IGHFpv9pYsi7u3zswynncVCo?= =?us-ascii?Q?bQ1jtoxwBlx3O0I/hngkpY2eGtpC5/d0tA3DZF1tGeQ92NubtJ8LHVdkzVtM?= =?us-ascii?Q?J+C4fp2UosYGV1ICRR5Vlasi85ni6HBwXHOap38feM0OiGlM345AAukpvZek?= =?us-ascii?Q?AZIRRsH3n3L997x4ReX789Xq68OBCT7xwrgbd+icwo0YDqo9jsQGDzJStRNF?= =?us-ascii?Q?NtLIJ06m/a9U1OwAHFJSxiVy5ROUze6g5NtYs9YcPHUPbPpZPGETicEZ+F6r?= =?us-ascii?Q?9GYWCTCz01K5kHw8T4ATOwOZlWObnWOiK/u5w9R5cZvdPAjFulbpVeK7odvR?= =?us-ascii?Q?8rHjuGxlVxKxM9XLDdASx+Re4kixK3zJClKiYIB0YGoibCfmKv5dYo7aE2tA?= =?us-ascii?Q?lIVeVvkyEYAR/28boZeoandqJviGnrjSPWRJoMI5b67c4nxKdu0d9EyHvtqD?= =?us-ascii?Q?81jsbGemAhx/ocZAOoaCukX0WGiTn+t7yz4a/z4AknfiFXaXfgWfhSHjtRCg?= =?us-ascii?Q?90n6jRHfcsEjz/gChzDnt5y1r7Cj6EZTr8VQtDBx3iFLeBiQaJfmVri1F4nl?= =?us-ascii?Q?HTgXZNXmr/1YNDDZ9irt0oxDz+iB68w/afnEu0jqseHWGNoiMk0ixiVRhw4N?= =?us-ascii?Q?KA/1M4kBHeQEAujIetNlC5vQTUre6ZrBrQGVGiXP1Vhgz+rAkTKYy/InQrLL?= =?us-ascii?Q?Rs16o1XYLWpuIVAVO/bT+wNHuobep36JL74LSd+yUztu8hjzFL9oENr6jeV/?= =?us-ascii?Q?2d1iLYmjBOltF7insbeeUe1kYXnlfzqmeZpZkJyvonumJzeUPUcZT90vCI8P?= =?us-ascii?Q?cNBfMkGXzyVCBYpZ+zkSdYsnp2CKJ3wjfZSPZiXRy5ui7Ma/K2QJeXODPhtL?= =?us-ascii?Q?nkW6fnlNxfmlSqpOkWGXKeGZ3nKgMffTTFs3pqpIbOAgZwSZsucL8TCUX3gS?= =?us-ascii?Q?GZAdmFbCgh3HoXWbm8WtD7im99fNTTxgHXRCeeSkXX06Lw+oVt2+5oK3hm9N?= =?us-ascii?Q?5QwF9XI+7DwbQWPkpHFIINflWUbBusBloZifeG3DHgq/7LsyNlYFVX8+7lSl?= =?us-ascii?Q?A6Rk9a3V8hJo9QRzz68EAj5HIYVg2jBs8qwCG5zR93qM7cvvHH9i9+q8ldSo?= =?us-ascii?Q?B2iHqMFpge9yzCE4RSjNwPAsGphBNyCSBY7KZdRNkBma0YWb2VNuDj1zBYke?= =?us-ascii?Q?3pv6+apVAYWNrNjX1Y9kk4QHsiRfhQ7dtjLLr09F?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 327c214c-ea2a-48bf-6ab7-08ddd7755661 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2025 18:48:31.7673 (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: N3sFKgS+2UDSt6zxRIHUHqrPI5zLSYblHWuP7wxum1vGuk75IbBQGRg7hXUOciSVZQrUXaO6m3nlaejDWAcU5A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7310 Content-Type: text/plain; charset="utf-8" Since we are adding more servers, make dl_server_update_idle_time() accept a server argument than a specific server. Reviewed-by: Andrea Righi Signed-off-by: Joel Fernandes --- kernel/sched/deadline.c | 16 ++++++++-------- kernel/sched/fair.c | 2 +- kernel/sched/idle.c | 2 +- kernel/sched/sched.h | 3 ++- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c index 7baf2ff11587..8b3535b8fca9 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -1549,26 +1549,26 @@ static void update_curr_dl_se(struct rq *rq, struct= sched_dl_entity *dl_se, s64 * as time available for the fair server, avoiding a penalty for the * rt scheduler that did not consumed that time. */ -void dl_server_update_idle_time(struct rq *rq, struct task_struct *p) +void dl_server_update_idle_time(struct rq *rq, struct task_struct *p, + struct sched_dl_entity *rq_dl_server) { s64 delta_exec; =20 - if (!rq->fair_server.dl_defer) + if (!rq_dl_server->dl_defer) return; =20 /* no need to discount more */ - if (rq->fair_server.runtime < 0) + if (rq_dl_server->runtime < 0) return; =20 delta_exec =3D rq_clock_task(rq) - p->se.exec_start; if (delta_exec < 0) return; =20 - rq->fair_server.runtime -=3D delta_exec; - - if (rq->fair_server.runtime < 0) { - rq->fair_server.dl_defer_running =3D 0; - rq->fair_server.runtime =3D 0; + rq_dl_server->runtime -=3D delta_exec; + if (rq_dl_server->runtime < 0) { + rq_dl_server->dl_defer_running =3D 0; + rq_dl_server->runtime =3D 0; } =20 p->se.exec_start =3D rq_clock_task(rq); diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 2c44354b0ed0..92856513024e 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -6917,7 +6917,7 @@ enqueue_task_fair(struct rq *rq, struct task_struct *= p, int flags) if (!rq_h_nr_queued && rq->cfs.h_nr_queued) { /* Account for idle runtime */ if (!rq->nr_running) - dl_server_update_idle_time(rq, rq->curr); + dl_server_update_idle_time(rq, rq->curr, &rq->fair_server); dl_server_start(&rq->fair_server); } =20 diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c index 6c6cc82ac2c4..fc3c056158b8 100644 --- a/kernel/sched/idle.c +++ b/kernel/sched/idle.c @@ -454,7 +454,7 @@ static void wakeup_preempt_idle(struct rq *rq, struct t= ask_struct *p, int flags) =20 static void put_prev_task_idle(struct rq *rq, struct task_struct *prev, st= ruct task_struct *next) { - dl_server_update_idle_time(rq, prev); + dl_server_update_idle_time(rq, prev, &rq->fair_server); scx_update_idle(rq, false, true); } =20 diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 0175946568a2..2c73d538f34e 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -388,7 +388,8 @@ extern void dl_server_init(struct sched_dl_entity *dl_s= e, struct rq *rq, extern void sched_init_dl_servers(void); =20 extern void dl_server_update_idle_time(struct rq *rq, - struct task_struct *p); + struct task_struct *p, + struct sched_dl_entity *rq_dl_server); extern void fair_server_init(struct rq *rq); extern void __dl_server_attach_root(struct sched_dl_entity *dl_se, struct = rq *rq); extern int dl_server_apply_params(struct sched_dl_entity *dl_se, --=20 2.34.1 From nobody Sun Oct 5 03:40:34 2025 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2065.outbound.protection.outlook.com [40.107.223.65]) (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 A6AA92C15A6 for ; Sat, 9 Aug 2025 18:48:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.65 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765319; cv=fail; b=Hm3sKT3omI1ekBFk/y65im5C2Niucvq0soO4ryAOVtzbzKYgITtUJ/wZrf3n65sjKuvLpJ4dX667ShWrcgsiINVHZUg60ZD38mDQpI6yKYZhs72htvYuQjByabkmUdSVDgfJE6mKptqNBSN66v/TgnnCXK/Wc00AEmqjntFXRp8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765319; c=relaxed/simple; bh=uQH7p9dJ+rjg54GvUMD02h8Ygloo5kbaHjylS8otCN0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=WLFQiy/O/EJNfLseytjaldhwsI4svV0yiv74emgKpy1iuEtMxdadSrPuP53YIwTnOPfUvNJmnPBAKOdI34muFbcL04mEwll3WmDzeJopzxhGvG0pXJIYc5yllMXdFygeIdNaIHeCk8mZ8fGunA1j51e9WvBWQE4tKwp71dq1C08= 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=CYVRIhDC; arc=fail smtp.client-ip=40.107.223.65 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="CYVRIhDC" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XtdRe5uPRtKdnkra1CCLUcm7Qltt0tFuqkzycvLackpbhme2GA7qxqnrDoCXVkxary7VIq/Bw868uDmkOEdIlboANsfFh4dFq17F9JRxFz+UlpAZV8UbcTxFU7TMk2VzCJzRc9uv0Z6zzp99c5MwJJXPPHhvyr/VIlByE9XgWVR01HF6JwvVuOOCxUqvLchTwaGsVp+DdWkhXDyYyHkgdhaiYgwDNUlAHvnDqukBVyPiCO00p/774Dj7Z7JjUMFB3HgAk/1KovqQDjp5tYP9t3ANNKLIlmVdb90oX2OwjBQZRDk/guXvl5lX+lrSAGColYtBGb+XpOwgalKRexgSbQ== 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=fSpOTnAG5kp0qnQYs6/UCkqiTrQ03myb6xjH0kECvqQ=; b=kA0enEAkqP1zg6IuCHi2t7GdfAqXQ9smSk4aUmMO0SkyE1n5uL/e/f+uyQHHoZx1rGkoezIZswv8uwuXvTIbG7hO1vo5y0EKLYD8EllzmW9JJmnz8ctupgBZGn3Ow8e+BMtp5iDOBklnecPfQkbiC84h4zg+t+of+Fg0F7etZgvzGElqBIQeWKT8F3SeObmJT52+fdqQ5gZbneKlqltWQCojabiMTuTboG02yg5m/gDB6MH/JYSGeXm8IHmuLa2BCztu4PRqcbnxWZL3Ns7to7/jUe5t5EJe5YUHVVvpj2NQol2MszCZgtIn0fNZyiqw6FsZJqqB5W3ctWeFHeT64Q== 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=fSpOTnAG5kp0qnQYs6/UCkqiTrQ03myb6xjH0kECvqQ=; b=CYVRIhDCLREOgdRzI1QmjC1l6aMu62GBWiLWDr4tGvJCalFAJ7v7uEMU/X2cmjww1c9Q7VGJjvmRBC9O/12Wyvlnmu1y6RZPm2NDh9xQmKHGG2xWBgvqXJRfjn6hAb3KnHouSu+2XkAAntmtSbds0nMmB8BnQEJSg1USNwUTdLW30SCI007yaZdtaOKnrheQfT3Aje8tSM/O3q8lPyrLUTuU7Wixnvc0A0hYOowdsi1/cbmjXzFxZAkv/afm+ZowO/kHFI157qDmujs9Tf7L4KXYBuw8Nrdfe2UUfQ5sgky7qoQRFcF5ZCL5D4qArDWEuSerOMeLYjJ85d+Je6TLaA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by MW4PR12MB7310.namprd12.prod.outlook.com (2603:10b6:303:22c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.20; Sat, 9 Aug 2025 18:48:34 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%7]) with mapi id 15.20.9009.017; Sat, 9 Aug 2025 18:48:34 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , Tejun Heo , David Vernet , Andrea Righi , Changwoo Min Cc: Joel Fernandes , Luigi De Matteis , sched-ext@lists.linux.dev Subject: [PATCH -rebased 07/15] sched_ext: Add a DL server for sched_ext tasks Date: Sat, 9 Aug 2025 14:47:52 -0400 Message-Id: <20250809184800.129831-8-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250809184800.129831-1-joelagnelf@nvidia.com> References: <20250809184800.129831-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BLAPR05CA0038.namprd05.prod.outlook.com (2603:10b6:208:335::19) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) 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: SN7PR12MB8059:EE_|MW4PR12MB7310:EE_ X-MS-Office365-Filtering-Correlation-Id: 8adb611e-232c-4f8d-54c2-08ddd77557fc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?AP+kpsGKKxpcOLX0KGz7ktrJhwYU9jY406xaU73hJvsLGeokYk+clAFcLNeW?= =?us-ascii?Q?Gbj6H5WkO3My1ysnWkNeCVokr+pfrZH1ddSuw7aFWwPF18sSZMXX4b7rPvox?= =?us-ascii?Q?oib3du9pFnIbzLBDBrElhcLNc5MrZSDSsjEMyZVFGSvNyYpzohWMRoBG5sMx?= =?us-ascii?Q?WM1P0J+tp0VPDioY6EE6p00QkJcQ/Uk0WctzhV4O5TmTEdmI9u57ATeFKKDQ?= =?us-ascii?Q?T2Mugbt0mSt0jA8XM3u/pTYqjm8H5tvyWI/wFi20PcGuaCbZYYv5UfcOTbnV?= =?us-ascii?Q?2Dy6wDfly4ZxHPa3+SRHvr6TbWcJ6isR0CLyQXjBu2Rv3fLru3PnH9Q4bjJB?= =?us-ascii?Q?smeD4q6RKk8ewitHUXYjPRJamHpWfuCiwv40pnHJSpEYDwtFGLjI8+5U/NII?= =?us-ascii?Q?NOabyeeseYAP2TrVuQekymMbW2NYH4CW6ZUR2eBBJ9RCwVw08oELhoOEwl8m?= =?us-ascii?Q?dzWo7P71Jb6UOwUl26bmVdquY3bvxke3wBBNvpDHsZhth34+OTG553cYRDnU?= =?us-ascii?Q?Qc1g+ydlj5ff1aI8pLqv2ent5Ud9rEttEFRwnl6p2ue+ho8/yKgqGhdXybHK?= =?us-ascii?Q?vCPTVJ0QxMDePOSdxeTNGIjleBsQxmdlBhGShMttsXqiEZfHOpCTXfbnSu5f?= =?us-ascii?Q?sLyXPTtwGB9FXkc1AgL/h4vQ9+qhtvn6jNzgdLOfDb2uc8Lw5alMTuje1uq7?= =?us-ascii?Q?PTP9QBJgmrCMyDwM1R83C6V1D1M4yMlfMmH4mLWUDHzISCxZKYtPJEfbVkkU?= =?us-ascii?Q?lr5B4lSEKDZsbjUNRsmrd9S4+qgVHgJ3xkxgjKXORXSMHPP8mSRJZJuo8hZg?= =?us-ascii?Q?UKDWoNsqAUewPNY4MdhmyuYPikmerdgr+dzf6Ne9V1P+j+qKzkVx3lBeDD/d?= =?us-ascii?Q?CX2S/TnABEn39IscSJCsmlP2ocn84BXa5zOQNBMHleLqXx2CgY+4DLadFjnz?= =?us-ascii?Q?8rmHMmayTxbTy4DhVdI0DDSL+Rm7jIRdq7l+Klj18+1Qq29AR+wT11I57NBr?= =?us-ascii?Q?D5Mbh0TZdjcqJUUkRTEpODLeIxw4etSuQxjMMCT45g2zbzOhRaMazLLHZYf+?= =?us-ascii?Q?0dgSeG1JeHPBaKBIR/w9gN2QvheLHKBhCBeMYbZLbUZId4reRKSMFTTuZ2Gp?= =?us-ascii?Q?PrIDvqXZWRgtoA6UjV8/A470uHHO61sj5f84SgzIe8a0FLhPR/faYAdLrF7g?= =?us-ascii?Q?SAxXr55+QTAbuqY0fxoE4mQHZUARQmyLbsSBcH1p8UgASWTgGOZRcssKuKuu?= =?us-ascii?Q?GzQTq3sceFkFMWAM88yhAvziAvKgzJfIqrHHUeuqJiOvA237mrCgAlUGbgsP?= =?us-ascii?Q?PiLQxbnUeYAektooGK0cZCfkl055U6BLDLJ/i6Xg56QTTUJphfDVl8VYNYX1?= =?us-ascii?Q?AGTEDoVDPOXp6oaXC4PAWKdtDKa6/faPIaFWzp+4WO7uW1nDHNcsBjZIsYMQ?= =?us-ascii?Q?evt6konQAfy1A6y84T6cEOPs160Sm7hZLw14vZMpZ9P2j+mwstbGNA=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Pl3i/gM4Ov+CO0FQnqB1CBV1+gReeH9mvLCZMUnHl3AEG0SmMIVsHdT7E/0R?= =?us-ascii?Q?ztczyqy5/Q7I4/qzUgCD7KeZsc10CgKSOMVTzyKXXbqR9MVszs3I22p6LRDA?= =?us-ascii?Q?pS4zgdyj0254OY5VwF6e6Lgv9ZV/nkvW0vrY/zZJmjFSmUDETVHEE1h6Mtug?= =?us-ascii?Q?F87mfw5xzAE4CY55kYUWD4dGd4ihVYKz/uZ0WjnaK4MU4J2AxZr0+Gi0gHjZ?= =?us-ascii?Q?qNF3GCQ8NF/Cu7GvG8MePC/tSkz5GlBhO+IWWug47PHaOSCzbAM3oD9GPp/r?= =?us-ascii?Q?aDLiLWJVeygNHBKCiiMfd+nHZ1JKk3B6roU+qzCBhGSCwtK+FsUC+98KW3XQ?= =?us-ascii?Q?GCDpM7imX7kZYm3YRCqL0tHOv9wfC+Mh3Woo7eHWb80203DTIKvItfMmO0yc?= =?us-ascii?Q?lu8Y+PnNLWaUGFc9YLgzGwXH5IhlGQSaNztfWZuq1AcJAllZve2Dn8YmM/A4?= =?us-ascii?Q?fZ7jFDTfTeiQhxLk0tMJM4DpsgSID7N13QXOWMoeHmrgnUdJPaOWZ5oHUjVy?= =?us-ascii?Q?HmWKUmIuYt4qldOcEXNZKwKjWbBUcNm7tTHLNLWgAPPh5tZTE8quX061CBmM?= =?us-ascii?Q?jJXof3VYXcsUUuM5yY+pGtLctfuhckz5kNx6WlRc27I5bg6jiwc+m8s8SvZ8?= =?us-ascii?Q?KqBnhfHq7oov+9HHDAWD+HeoCJkxQYCjP25kU+CTeyX8/3Rg3XNrsBKQuRQH?= =?us-ascii?Q?X7N6F3we76+Q2oqCtOO2epDORU3d8WyJ+OsLq1pDRiEOefrn0w4+JRE/go4q?= =?us-ascii?Q?hkiX5i2hzH4Urmq80uy7Vp6nuDRHDzaBoQuZNpNMF0e0YneG5cLBjUUh/E5u?= =?us-ascii?Q?CXEqLF+yGDCEFHCw5uP0t2vtgVPs5kgzbAkEXMOrNWgerXnViTX3jzu1Lbhh?= =?us-ascii?Q?F3fNpyB3qsawEEP2007Ghg0jO0c8jJUO81X5/7ZzhsrYt/9meZ47Kudk1KNV?= =?us-ascii?Q?JIMZ4gtNNUvoozzVjH/dn+PCgL5mZ9HVkCWnxJstPxcaHj1idId2oWtMyaMT?= =?us-ascii?Q?Y36NVR+QET+rqpt/UY8IACBmXHybTkQg9JKxavz4S5rPoHu4W4/eX83a6Krt?= =?us-ascii?Q?mbLMkhGAV2t25MKqE9PACdSGSXGGp5ymQFtixkAxFiKs1oFVjYMYrOZupEJ3?= =?us-ascii?Q?dz4ZmlUByP+dFafRBF0pg26UMRo5yCF+TeZ1fVa3EKWPYDPP53UPYy3mpW6X?= =?us-ascii?Q?pexH2+/sQngwK9oH9WgVwtUlzI+xE7KG6gzXxL/K3AclHHN8/yP0iUpDWhXO?= =?us-ascii?Q?q8mQwyBAW1pLgzNq3yy61G/zBGfsIwkJ6FGPRIvM54VTLOoCLo0Nz/+yrDPW?= =?us-ascii?Q?mjNkspRRNyKxmCSyEAoHQ4Y3QgjPRM6BKxn50c+ewNO3wnendnoxou1305nq?= =?us-ascii?Q?ZM/igaqo3z4X3Le0M2fY2RaDAurStXi3pMOpOjJlHYA2w/QmjKDWItQLWEpz?= =?us-ascii?Q?oGoBrgE23AZt+Xore1klfuVksrMzPZMlTKSWwTHgBYmyu+K3gCxzdvDHx2a+?= =?us-ascii?Q?KKWo1PWfZKZzVpGhTsOQr6wu9SgoTJPG0RJdRdxIUgB8PxnPKLR8GAl1EfyW?= =?us-ascii?Q?Go40fTsl0WTcDwA32QcQ02ojP+P8VDYMOiVjXQAH?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8adb611e-232c-4f8d-54c2-08ddd77557fc X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2025 18:48:34.4585 (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: BeetFHHT0slJDR756NIAUlgYgwUgDNzOzJIThxoCt8rFF4Vr9bzwvH1RhWVjd1e+xXJVTeNa+Pu954BWr3ZmwA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7310 Content-Type: text/plain; charset="utf-8" sched_ext currently suffers starvation due to RT. The same workload when converted to EXT can get zero runtime if RT is 100% running, causing EXT processes to stall. Fix it by adding a DL server for EXT. A kselftest is also provided later to verify: ./runner -t rt_stall =3D=3D=3D=3D=3D START =3D=3D=3D=3D=3D TEST: rt_stall DESCRIPTION: Verify that RT tasks cannot stall SCHED_EXT tasks OUTPUT: TAP version 13 1..1 ok 1 PASS: CFS task got more than 4.00% of runtime Cc: Luigi De Matteis Reviewed-by: Andrea Righi Signed-off-by: Joel Fernandes --- kernel/sched/core.c | 3 ++ kernel/sched/deadline.c | 2 +- kernel/sched/ext.c | 62 +++++++++++++++++++++++++++++++++++++++-- kernel/sched/sched.h | 2 ++ 4 files changed, 66 insertions(+), 3 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index f3a26d13b926..ce5b51faf9d5 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -8808,6 +8808,9 @@ void __init sched_init(void) hrtick_rq_init(rq); atomic_set(&rq->nr_iowait, 0); fair_server_init(rq); +#ifdef CONFIG_SCHED_CLASS_EXT + ext_server_init(rq); +#endif =20 #ifdef CONFIG_SCHED_CORE rq->core =3D rq; diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c index 8b3535b8fca9..00bafa434fb8 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -1510,7 +1510,7 @@ static void update_curr_dl_se(struct rq *rq, struct s= ched_dl_entity *dl_se, s64 * The fair server (sole dl_server) does not account for real-time * workload because it is running fair work. */ - if (dl_se =3D=3D &rq->fair_server) + if (dl_se =3D=3D &rq->fair_server || dl_se =3D=3D &rq->ext_server) return; =20 #ifdef CONFIG_RT_GROUP_SCHED diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c index f6a55cb823d8..1f68f9e69d03 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -1923,6 +1923,9 @@ static void update_curr_scx(struct rq *rq) if (!curr->scx.slice) touch_core_sched(rq, curr); } + + if (dl_server_active(&rq->ext_server)) + dl_server_update(&rq->ext_server, delta_exec); } =20 static bool scx_dsq_priq_less(struct rb_node *node_a, @@ -2410,6 +2413,15 @@ static void enqueue_task_scx(struct rq *rq, struct t= ask_struct *p, int enq_flags if (enq_flags & SCX_ENQ_WAKEUP) touch_core_sched(rq, p); =20 + if (rq->scx.nr_running =3D=3D 1) { + /* Account for idle runtime */ + if (!rq->nr_running) + dl_server_update_idle_time(rq, rq->curr, &rq->ext_server); + + /* Start dl_server if this is the first task being enqueued */ + dl_server_start(&rq->ext_server); + } + do_enqueue_task(rq, p, enq_flags, sticky_cpu); out: rq->scx.flags &=3D ~SCX_RQ_IN_WAKEUP; @@ -2509,6 +2521,11 @@ static bool dequeue_task_scx(struct rq *rq, struct t= ask_struct *p, int deq_flags sub_nr_running(rq, 1); =20 dispatch_dequeue(rq, p); + + /* Stop the server if this was the last task */ + if (rq->scx.nr_running =3D=3D 0) + dl_server_stop(&rq->ext_server); + return true; } =20 @@ -4045,6 +4062,15 @@ static void switching_to_scx(struct rq *rq, struct t= ask_struct *p) static void switched_from_scx(struct rq *rq, struct task_struct *p) { scx_disable_task(p); + + /* + * After class switch, if the DL server is still active, restart it so + * that DL timers will be queued, in case SCX switched to higher class. + */ + if (dl_server_active(&rq->ext_server)) { + dl_server_stop(&rq->ext_server); + dl_server_start(&rq->ext_server); + } } =20 static void wakeup_preempt_scx(struct rq *rq, struct task_struct *p,int wa= ke_flags) {} @@ -7315,8 +7341,8 @@ __bpf_kfunc u32 scx_bpf_cpuperf_cur(s32 cpu) * relative scale between 0 and %SCX_CPUPERF_ONE. This determines how the * schedutil cpufreq governor chooses the target frequency. * - * The actual performance level chosen, CPU grouping, and the overhead and - * latency of the operations are dependent on the hardware and cpufreq dri= ver in + * The actual performance level chosen, CPU grouping, and the overhead and= latency + * of the operations are dependent on the hardware and cpufreq driver in * use. Consult hardware and cpufreq documentation for more information. T= he * current performance level can be monitored using scx_bpf_cpuperf_cur(). */ @@ -7642,6 +7668,38 @@ BTF_ID_FLAGS(func, scx_bpf_now) BTF_ID_FLAGS(func, scx_bpf_events, KF_TRUSTED_ARGS) BTF_KFUNCS_END(scx_kfunc_ids_any) =20 +/* + * Check if ext scheduler has tasks ready to run. + */ +static bool ext_server_has_tasks(struct sched_dl_entity *dl_se) +{ + return !!dl_se->rq->scx.nr_running; +} + +/* + * Select the next task to run from the ext scheduling class. + */ +static struct task_struct *ext_server_pick_task(struct sched_dl_entity *dl= _se, + void *flags) +{ + struct rq_flags *rf =3D flags; + + balance_scx(dl_se->rq, dl_se->rq->curr, rf); + return pick_task_scx(dl_se->rq, rf); +} + +/* + * Initialize the ext server deadline entity. + */ +void ext_server_init(struct rq *rq) +{ + struct sched_dl_entity *dl_se =3D &rq->ext_server; + + init_dl_entity(dl_se); + + dl_server_init(dl_se, rq, ext_server_has_tasks, ext_server_pick_task); +} + static const struct btf_kfunc_id_set scx_kfunc_set_any =3D { .owner =3D THIS_MODULE, .set =3D &scx_kfunc_ids_any, diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 2c73d538f34e..51ac373554de 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -391,6 +391,7 @@ extern void dl_server_update_idle_time(struct rq *rq, struct task_struct *p, struct sched_dl_entity *rq_dl_server); extern void fair_server_init(struct rq *rq); +extern void ext_server_init(struct rq *rq); extern void __dl_server_attach_root(struct sched_dl_entity *dl_se, struct = rq *rq); extern int dl_server_apply_params(struct sched_dl_entity *dl_se, u64 runtime, u64 period, bool init); @@ -1125,6 +1126,7 @@ struct rq { #endif =20 struct sched_dl_entity fair_server; + struct sched_dl_entity ext_server; =20 #ifdef CONFIG_FAIR_GROUP_SCHED /* list of leaf cfs_rq on this CPU: */ --=20 2.34.1 From nobody Sun Oct 5 03:40:34 2025 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2042.outbound.protection.outlook.com [40.107.223.42]) (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 6690D2C15B8 for ; Sat, 9 Aug 2025 18:48:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.42 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765322; cv=fail; b=mJlV0myBA17CA85er0YMxIetZDVEFeAnWpR0m7hdRDuoOAn+yctAWld3xyp3ohCqXrAeKerd+lKSwPSGaW/3L556av/7Y43Rx5lb11POkiF/re4gp4rcNKyPmJc6eunpxeOzkNjNJdUWP0UpZ2ojGsR2T1nP/n7JK1HOaPjokOY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765322; c=relaxed/simple; bh=capl0j9ELyrMeTaIz93BSDRa1C0xUHoQ0LZPCkZLK+Y=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=BzmmkgH+qmtfe8yyP8OcPMie0TE46nrpjhCsv3VUaXLNLl68HqkhWc9DS9T3uziBZ19qsvwQAdEd/UguiTZxAYXYDcpClg/93Co3C7yAK39pTuM0q6dtQqHZXHhBfTQNcmB+GY8uBBYtup202XGxukttqrqdHstd9EU3rdOM8dk= 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=QVdBTMWx; arc=fail smtp.client-ip=40.107.223.42 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="QVdBTMWx" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=n7tOrRGtbYFrdjgydxoFcozXM5JRTdmWzKwT0tTquMTGDmIV7Nbg7ITWxtK2rbN85GvXbIqjCJMsV1xsnythe0IbUQaqTdu+RTF8LQqGaU2rtLdhpFcFeUg54wyNxCoISuSYY/2HMBFNZHbSBIkEzCrP3PVlzfeT791Y03B3tMvAy2EouSYpiMPbeoEikoRV68QrzG0zdjv4zKfFZD4OvRAAP8ibt4fXTmqNNif1/L1GsBoRzIF62eu1YFs/CalOqFRXfibvM1HMrwm8Uz1gIveWpyIBqYDK3n+BushGs77jvq3mFPFgEpiKY+fW3RpP/TsW3gkzIse9cBL5wIInRw== 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=5NhVv4T1H8PtBtpyW75kwikCGA5Pj7hpogrZWx6hSYU=; b=MvW7ZSPgg+nClv4Sl2JR01Stmu/NWb80ByBkISDudZxeL+HwC5/JBvM0sNDbd5CriUiZwrvknseHQPsbwBoh2DveCvlMQcUJQA5tQa0A9GzK8Z9se03/sp9cjjol94KNZeVCbg17OqKqWaJ3Wnu2nRFKZQx170pmk2PTxg6d0CUY0ksh3He51ntL1MgaZj16sjmHNPUYDsYmTitQ1LW7NaT2/oQPJ3eC9owQj+L/iOX4IJlnS3hlkiTKUToE0+z/Uc723pDON3Y+9vlKpjiZ8/Wb3zzEn/0pUE5iwuODK3UVyrcqxB5ul6LMKsgR3mSg+T1o1gudiN2MsvSrD18kiw== 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=5NhVv4T1H8PtBtpyW75kwikCGA5Pj7hpogrZWx6hSYU=; b=QVdBTMWxIe2yU6aUCUFF09w2TN8SPn//VvRj1VDxZS6nhcUMx3JMi0YMJ0vjAMxzEpp1xNmPVt8xlBgtaP99yYVTFXtAiQLhn0FYhjKb9rQ4wRNAKAzIlC1LbCvZCXkfvb3DDP99mKvsxLxgigmW7PuVc372aTkHZQDJqwY0GA8DR5kOPGmBUEV9g8PB3BaXQwNXzaT4zlEvYwKOGlRG1Ga6GfKrCurX4UdVz6bNEzqWwDwiZnzASQbPQGjHnv1/Z4/7h9avPDltNT2n+OeFkynaMaGEbooUByLa2EjScwN5TeRED0PFovCEkqTlqLXA0NmJ2vYqPZMkBbv2MHwwzw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by MW4PR12MB7310.namprd12.prod.outlook.com (2603:10b6:303:22c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.20; Sat, 9 Aug 2025 18:48:37 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%7]) with mapi id 15.20.9009.017; Sat, 9 Aug 2025 18:48:36 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider Cc: Joel Fernandes , Tejun Heo , David Vernet , Andrea Righi , Changwoo Min Subject: [PATCH -rebased 08/15] sched/debug: Add support to change sched_ext server params Date: Sat, 9 Aug 2025 14:47:53 -0400 Message-Id: <20250809184800.129831-9-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250809184800.129831-1-joelagnelf@nvidia.com> References: <20250809184800.129831-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MN2PR05CA0038.namprd05.prod.outlook.com (2603:10b6:208:236::7) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) 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: SN7PR12MB8059:EE_|MW4PR12MB7310:EE_ X-MS-Office365-Filtering-Correlation-Id: d5a6bd06-0f0f-4709-7126-08ddd7755969 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?xsKesPGcMnWHZyVT8b2I2SS8tcsYgzRsdN6Inqi294+f4Fi9717uxJOmQQFn?= =?us-ascii?Q?39HhkHwupVEpd/M90zkhgaMKPAw2Mq3yzzf4KHXxAtsdTSCtwqVUoojY3vCO?= =?us-ascii?Q?e+wq2JpFLRtVwaxkS1G6ZGRbsiYOAD3l+r3JWZQzuR/B+qlUI3t4jZ2Y2Lh9?= =?us-ascii?Q?ykOlV4zL2XrsEW7aLvEcpW2Mo9ZNszlYbZGi5PfxaZcvB8j3/aqxb+QxGWNT?= =?us-ascii?Q?A7xu6OUAngvbteilzfG9hUphjv6vuOS+1MC5NBMjysWNBbobUTKv6dYi83gr?= =?us-ascii?Q?NvsjmAPLrCk6lWia8fu6Gzf4qJkiue+TmPAlnxz/s9ZUaH2qaQA+vpMG5kRa?= =?us-ascii?Q?ElX/yDR0jt9BM7SdEAJPEtQW5fg7+uUZMU8Z8Oa/umMkmtufOHjpwKssOITP?= =?us-ascii?Q?UXSqxjfA+3uZGqCQvSVCbNEjJLjCMiskKqYP6IlFwVidPSzI1G1XII8Ofobu?= =?us-ascii?Q?OOGgvlK1SDnoMrlG/zf+0j7THZZhOU5SWYmQ0B9A9sNrKWdcWen0VcYKzz3j?= =?us-ascii?Q?WZxBRUZaACJ4pfV81NKPtBS4zocVWxLvNUPP5bEYPa2R3b/G6eHhxb633GA0?= =?us-ascii?Q?acXCgNQAyGrSgMI24aF/VVX3/63WzjdJPUqRTcihEsND72s/uyZsWnYQ1OaL?= =?us-ascii?Q?MaLO+J4N4uuULzo1DK48KxM9TQCY4yjuMOOV3eavLzrGYyD3NkLG0p7yAOq/?= =?us-ascii?Q?2Z+FpWqU0DokNDaMYERfa+oC6AHXSkIlotMyXI1hivdwDoOc9f9SeZuW+We9?= =?us-ascii?Q?b8FC4kZnjzhTxdjsevP3K5LjFtgG3ArSlsrqAZvY1n6wPpG2HMrgMO2cQILb?= =?us-ascii?Q?Rj9wdPGXeRsi2wLuQ/miAkm/OBVs4EG+6P97h3T1mG4d3P21dKgFkA0JhtOc?= =?us-ascii?Q?U2KnjNoDTYayAeFWiwS7TMY6JBKsVKUgn++KEOrJzvfRCMswuZMFFBYWbD4r?= =?us-ascii?Q?FhaDT5mLRQCtVu743FY6vyc+AYuwxz5VQV5ySUKf2BHQkLr07IVA170FN2Wl?= =?us-ascii?Q?V6G/MwgIW/XhdlENNAU/XL3v/04IZ2ifYHt6jGN1+DeMy2PxXiB9o/7XaTIm?= =?us-ascii?Q?yiMCZuPEW2UPw0J8D/glE3BKXqlN2tIbjf2Y6KOz90lrQw7W/VtNkWEFQ7vS?= =?us-ascii?Q?8dfobOXTYJPVo/o1EEOadF+oWZr2cQlADAb5mCSGaFbJv+BYFW7jrsGW8JOy?= =?us-ascii?Q?fdB7XON3NkocOUvZi1UYp6W5ysuFhzDgYfYoU5VKgDOnJvMbzWeKSDGPM46U?= =?us-ascii?Q?x08o82ildwQ/Gman1tXYoyAU/2STIbSGnJ8hCeSO1+zICOFS1DQQcvCS1tF2?= =?us-ascii?Q?a+FcxUgQ+14rWWMuQ/lMKShtWCUEUmG1jtk2CFss0SRMJ91rd6dB0aCbhAGe?= =?us-ascii?Q?q09q94zDgv4/jwONYzDFMd8qfeEt/XP6Uj1nso4rM6h7oe2aAfcMTwM4IxRn?= =?us-ascii?Q?eAxRiWvsyqGwbuJ0rIv9D/XY3suVVKPSOdbIgrhHZy/8P2quod1UoA=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?L+fHoPPJXIOUQCtamcXhhJJDyZ5u+jDa4noFBVBk24DJ6OK9aK/uNdu+A7i4?= =?us-ascii?Q?wO6GgxB7Mr9bNGnMmc9ZYNVwgZ2MebLsmxNuLvhIL8ovCePO4u3xmn4uvdC2?= =?us-ascii?Q?u8I1u33gjv8fpDpEoYlas7Dx9A7zkrHOPYB4+C6WosIRNMv0xzrr5YQZJsXI?= =?us-ascii?Q?xhhpy9GRTggQZuizmTiP7ogPndOAM3Aiid2WafQ8CirNCthjgtEuvDKDIn5/?= =?us-ascii?Q?oK3zGA/0+2JYnPO/3Rdk5mYd37qqM1MHtBvu2Fx5jiPVIPI3LhbuiQIx05XR?= =?us-ascii?Q?ZmbJfAg68tE9ASKTEyMMZ6V0wAfC97nGs2zP8R8irhpfcR70VtA00x6CvOol?= =?us-ascii?Q?SuzfNr1ei2k2PNhiHvcQ1jHBhIdA0uoJmNpypWDsPY2iUH4tWpN+ZwPDz9O1?= =?us-ascii?Q?LM3ySe5NIGTPtw6JVToxwxTVVeb8G+YMwlct2cYUDn6wZWJTgpts8OkjpE1R?= =?us-ascii?Q?aBzSctZR/D6/AsDyMApzT/FAIsVWDOtiJuAK99c7z70BGxw0+NsUz+Ku/x48?= =?us-ascii?Q?O+5xkI8kNIvy0wMsKdCAUXpaD5J+PNXP1VwpYRUZDnsaAukPrCbObxqQc1Se?= =?us-ascii?Q?ihQXRXC3lxMUTiz/IMclEoOtjxxitDBQRQyB5T925Bo32k1Wx5N+vTdhCGem?= =?us-ascii?Q?KM28YbwFVsL0ZubKc9laNx/1FBX06plRehANn0aaSEIUhF9PK9Xec824Wh0t?= =?us-ascii?Q?IYScbN9gp45T9uE8RPxdcOBM6IJEp9NMBoiaIq4+USI50HPZUc28t1XAoc89?= =?us-ascii?Q?zTinQtptu1A9RYI0Z4JEC9iooUCzjT4B1iU3A7KdSACTYYaEZRFlPMERQlqu?= =?us-ascii?Q?z4mjx+DmPqpcyF6bbmwTmOaYy9rqjQA8UEVs6JssyEv+98FQojZKbyd1OxS/?= =?us-ascii?Q?lrYI25g2bppP/uC+I6G6Q8DYSIr+/+klr74qS92aCXh6fHYgWXqWQnrMOgp5?= =?us-ascii?Q?eqPDkpZCNOSdl0tzyeOV1mr7G4jQwf/bzzr7eJltwRcCxo3qGRaLEFMsBuqT?= =?us-ascii?Q?b2IZyCCmyVPCfZgBmQlYALZs5obNy7ZAC9pB7uAz0AXTpf/Xvb9DiW9iqClF?= =?us-ascii?Q?0TGznUQifkqOMUVv4Jr45ieBE3NmKXUmJP1132J688g1oIEaZiPiUmRvpfY4?= =?us-ascii?Q?gMhQICRKnkTQ866nkg0HZN70lahr8v1TUxkRXUaDuCO2fseJlSF7jIaJ8kdV?= =?us-ascii?Q?gvTsg5/aYFEXD8zf3D3Py3DChsDgmqdrL+BRR2y4TIXmzQtNvdgpylKaj+Wd?= =?us-ascii?Q?9FwB0YkT6pOdsQN79WVxWwQH9WBFsWDWeXu0o8Uh+mlTdaGo+fXn93/EaFsU?= =?us-ascii?Q?wcbVqpbPgeihAp0F0lzc5AxmCIJtmLZROWlLkBFEwA0TqA9xAPs3PLP4KXmU?= =?us-ascii?Q?ZmBoSohptrKPVNbhbl4S8jDB2kfabuN21Ic2IFrlbbRdF154P5jN5lj0Uwri?= =?us-ascii?Q?WLhUqma+dTeMc8LAyhuDssTZ/kdQ//Drv4R7DaLqM/T+mZB0b05HpIrctIRh?= =?us-ascii?Q?Gp4zqSp1upvXXeaqfrBBQnQ3M4OpueUqXPSF987aJYvvw42Ox7dce7HilRJa?= =?us-ascii?Q?yokKG+b8l/klkJenYY+zBpVY3YvpdQiFrcWfqko3?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: d5a6bd06-0f0f-4709-7126-08ddd7755969 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2025 18:48:36.8556 (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: sOVYElY1v95OBXcirYByUp22SlO+t/NIsMT6DO3AoH8IGd8+CWg+zjTNLOOfEc9dEzgUlIgJ+Lp/LRUNCPFXDA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7310 Content-Type: text/plain; charset="utf-8" When a sched_ext server is loaded, tasks in CFS are converted to run in sched_ext class. Add support to modify the ext server parameters similar to how the fair server parameters are modified. Re-use common code between ext and fair servers as needed. Signed-off-by: Joel Fernandes --- kernel/sched/debug.c | 149 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 125 insertions(+), 24 deletions(-) diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index e71f6618c1a6..00ad35b812f7 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -336,14 +336,16 @@ enum dl_param { DL_PERIOD, }; =20 -static unsigned long fair_server_period_max =3D (1UL << 22) * NSEC_PER_USE= C; /* ~4 seconds */ -static unsigned long fair_server_period_min =3D (100) * NSEC_PER_USEC; = /* 100 us */ +static unsigned long dl_server_period_max =3D (1UL << 22) * NSEC_PER_USEC;= /* ~4 seconds */ +static unsigned long dl_server_period_min =3D (100) * NSEC_PER_USEC; /= * 100 us */ =20 -static ssize_t sched_fair_server_write(struct file *filp, const char __use= r *ubuf, - size_t cnt, loff_t *ppos, enum dl_param param) +static ssize_t sched_server_write_common(struct file *filp, const char __u= ser *ubuf, + size_t cnt, loff_t *ppos, enum dl_param param, + void *server) { long cpu =3D (long) ((struct seq_file *) filp->private_data)->private; struct rq *rq =3D cpu_rq(cpu); + struct sched_dl_entity *dl_se =3D (struct sched_dl_entity *)server; u64 runtime, period; int retval =3D 0; size_t err; @@ -356,8 +358,8 @@ static ssize_t sched_fair_server_write(struct file *fil= p, const char __user *ubu scoped_guard (rq_lock_irqsave, rq) { bool is_active; =20 - runtime =3D rq->fair_server.dl_runtime; - period =3D rq->fair_server.dl_period; + runtime =3D dl_se->dl_runtime; + period =3D dl_se->dl_period; =20 switch (param) { case DL_RUNTIME: @@ -373,25 +375,25 @@ static ssize_t sched_fair_server_write(struct file *f= ilp, const char __user *ubu } =20 if (runtime > period || - period > fair_server_period_max || - period < fair_server_period_min) { + period > dl_server_period_max || + period < dl_server_period_min) { return -EINVAL; } =20 - is_active =3D dl_server_active(&rq->fair_server); + is_active =3D dl_server_active(dl_se); if (is_active) { update_rq_clock(rq); - dl_server_stop(&rq->fair_server); + dl_server_stop(dl_se); } =20 - retval =3D dl_server_apply_params(&rq->fair_server, runtime, period, 0); + retval =3D dl_server_apply_params(dl_se, runtime, period, 0); =20 if (!runtime) - printk_deferred("Fair server disabled in CPU %d, system may crash due t= o starvation.\n", - cpu_of(rq)); + printk_deferred("%s server disabled on CPU %d, system may crash due to = starvation.\n", + server =3D=3D &rq->fair_server ? "Fair" : "Ext", cpu_of(rq)); =20 if (is_active) - dl_server_start(&rq->fair_server); + dl_server_start(dl_se); =20 if (retval < 0) return retval; @@ -401,36 +403,42 @@ static ssize_t sched_fair_server_write(struct file *f= ilp, const char __user *ubu return cnt; } =20 -static size_t sched_fair_server_show(struct seq_file *m, void *v, enum dl_= param param) +static size_t sched_server_show_common(struct seq_file *m, void *v, enum d= l_param param, + void *server) { - unsigned long cpu =3D (unsigned long) m->private; - struct rq *rq =3D cpu_rq(cpu); + struct sched_dl_entity *dl_se =3D (struct sched_dl_entity *)server; u64 value; =20 switch (param) { case DL_RUNTIME: - value =3D rq->fair_server.dl_runtime; + value =3D dl_se->dl_runtime; break; case DL_PERIOD: - value =3D rq->fair_server.dl_period; + value =3D dl_se->dl_period; break; } =20 seq_printf(m, "%llu\n", value); return 0; - } =20 static ssize_t sched_fair_server_runtime_write(struct file *filp, const char __user *ubuf, size_t cnt, loff_t *ppos) { - return sched_fair_server_write(filp, ubuf, cnt, ppos, DL_RUNTIME); + long cpu =3D (long) ((struct seq_file *) filp->private_data)->private; + struct rq *rq =3D cpu_rq(cpu); + + return sched_server_write_common(filp, ubuf, cnt, ppos, DL_RUNTIME, + &rq->fair_server); } =20 static int sched_fair_server_runtime_show(struct seq_file *m, void *v) { - return sched_fair_server_show(m, v, DL_RUNTIME); + unsigned long cpu =3D (unsigned long) m->private; + struct rq *rq =3D cpu_rq(cpu); + + return sched_server_show_common(m, v, DL_RUNTIME, &rq->fair_server); } =20 static int sched_fair_server_runtime_open(struct inode *inode, struct file= *filp) @@ -446,16 +454,55 @@ static const struct file_operations fair_server_runti= me_fops =3D { .release =3D single_release, }; =20 +static ssize_t +sched_ext_server_runtime_write(struct file *filp, const char __user *ubuf, + size_t cnt, loff_t *ppos) +{ + long cpu =3D (long) ((struct seq_file *) filp->private_data)->private; + struct rq *rq =3D cpu_rq(cpu); + + return sched_server_write_common(filp, ubuf, cnt, ppos, DL_RUNTIME, + &rq->ext_server); +} + +static int sched_ext_server_runtime_show(struct seq_file *m, void *v) +{ + unsigned long cpu =3D (unsigned long) m->private; + struct rq *rq =3D cpu_rq(cpu); + + return sched_server_show_common(m, v, DL_RUNTIME, &rq->ext_server); +} + +static int sched_ext_server_runtime_open(struct inode *inode, struct file = *filp) +{ + return single_open(filp, sched_ext_server_runtime_show, inode->i_private); +} + +static const struct file_operations ext_server_runtime_fops =3D { + .open =3D sched_ext_server_runtime_open, + .write =3D sched_ext_server_runtime_write, + .read =3D seq_read, + .llseek =3D seq_lseek, + .release =3D single_release, +}; + static ssize_t sched_fair_server_period_write(struct file *filp, const char __user *ubuf, size_t cnt, loff_t *ppos) { - return sched_fair_server_write(filp, ubuf, cnt, ppos, DL_PERIOD); + long cpu =3D (long) ((struct seq_file *) filp->private_data)->private; + struct rq *rq =3D cpu_rq(cpu); + + return sched_server_write_common(filp, ubuf, cnt, ppos, DL_PERIOD, + &rq->fair_server); } =20 static int sched_fair_server_period_show(struct seq_file *m, void *v) { - return sched_fair_server_show(m, v, DL_PERIOD); + unsigned long cpu =3D (unsigned long) m->private; + struct rq *rq =3D cpu_rq(cpu); + + return sched_server_show_common(m, v, DL_PERIOD, &rq->fair_server); } =20 static int sched_fair_server_period_open(struct inode *inode, struct file = *filp) @@ -471,6 +518,38 @@ static const struct file_operations fair_server_period= _fops =3D { .release =3D single_release, }; =20 +static ssize_t +sched_ext_server_period_write(struct file *filp, const char __user *ubuf, + size_t cnt, loff_t *ppos) +{ + long cpu =3D (long) ((struct seq_file *) filp->private_data)->private; + struct rq *rq =3D cpu_rq(cpu); + + return sched_server_write_common(filp, ubuf, cnt, ppos, DL_PERIOD, + &rq->ext_server); +} + +static int sched_ext_server_period_show(struct seq_file *m, void *v) +{ + unsigned long cpu =3D (unsigned long) m->private; + struct rq *rq =3D cpu_rq(cpu); + + return sched_server_show_common(m, v, DL_PERIOD, &rq->ext_server); +} + +static int sched_ext_server_period_open(struct inode *inode, struct file *= filp) +{ + return single_open(filp, sched_ext_server_period_show, inode->i_private); +} + +static const struct file_operations ext_server_period_fops =3D { + .open =3D sched_ext_server_period_open, + .write =3D sched_ext_server_period_write, + .read =3D seq_read, + .llseek =3D seq_lseek, + .release =3D single_release, +}; + static struct dentry *debugfs_sched; =20 static void debugfs_fair_server_init(void) @@ -494,6 +573,27 @@ static void debugfs_fair_server_init(void) } } =20 +static void debugfs_ext_server_init(void) +{ + struct dentry *d_ext; + unsigned long cpu; + + d_ext =3D debugfs_create_dir("ext_server", debugfs_sched); + if (!d_ext) + return; + + for_each_possible_cpu(cpu) { + struct dentry *d_cpu; + char buf[32]; + + snprintf(buf, sizeof(buf), "cpu%lu", cpu); + d_cpu =3D debugfs_create_dir(buf, d_ext); + + debugfs_create_file("runtime", 0644, d_cpu, (void *) cpu, &ext_server_ru= ntime_fops); + debugfs_create_file("period", 0644, d_cpu, (void *) cpu, &ext_server_per= iod_fops); + } +} + static __init int sched_init_debug(void) { struct dentry __maybe_unused *numa; @@ -532,6 +632,7 @@ static __init int sched_init_debug(void) debugfs_create_file("debug", 0444, debugfs_sched, NULL, &sched_debug_fops= ); =20 debugfs_fair_server_init(); + debugfs_ext_server_init(); =20 return 0; } --=20 2.34.1 From nobody Sun Oct 5 03:40:34 2025 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2042.outbound.protection.outlook.com [40.107.223.42]) (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 486292BF013 for ; Sat, 9 Aug 2025 18:48:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.42 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765323; cv=fail; b=mwQy6IlKG2z6glD2l3wxn16wkeyYi1NDmUP4M34P4VqhZfIgoPDvc9M2bD23G1ZDEP6zKn/MSnUFUeX2OBE8gWMVTcNxHiQUGa8KDweAvR11lixhJKl+jeUu/ief1IpFk6zlgj6DIWm2WRSRyJrJ3kkY70CN4RyJ4TGMP4HqqKs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765323; c=relaxed/simple; bh=dbuebLBUootjrGp0gr9xGLYKZnwF/aMIgr/kH5+LOTw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=kdaoG39CGMuEJxD4UmRk+Muj9LtF46DcwDzwSRYdXWqFvGpdUBxuzVLkBCEs+CFCb/rVgwN1/dofHsUgriE/YE7rneL4fKCnamzpIKweofBq0Iud9D2eTClLSQHhCV/os716aes7z66A5rVPBRvhfC62CGcBhaYoXi+Pq0HbBQA= 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=ITMq6Su0; arc=fail smtp.client-ip=40.107.223.42 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="ITMq6Su0" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XbOzC1vJE2xcHV2iKaQTkPy4t15WSUcaDEtKPnB1uRnnOnYSQSWZ3HfOR+Rdn8zc3JlHV9ijyq8DvYLaAMSVx1RqVUu6oX5ZvJUv5zR9MHj4cd0sThA8Zq65aFUUw8zxPJKfHp4qmKBbbDPAfMf3dhpzxeNiz57jk9qYwme3S3YMkZMSKIOExAOUgzle5bysSY9rT/yGmPI2/I9YxQ7bYbTcyGDCACHIkFRgAmrpn4UeO3mBVB2nTBJy2RgSta5KRtlLranPQeLp9Sut2yw/y0rFWjelOSkAUCvQlQ6bRjObBwbaZElsTGAK+0pLlZvdySel5p0mw8ZkhIGctlPUPA== 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=ccykrcY4XyAOBLhFI7Hu/x5eJdDtYHsFZip+WaE/ySY=; b=ouFuEiw1iCuPVFmbBTyzxsZ4TqfWL2rSEhwGhNq+PHbNM6+dYvPXyMXU5B9uZmqt/BWz4f+Rcgbi9sGpu7XyPguTAuEL2I9J+a3MesvoJwlcYTq1oms267ZOpVBuxf/1WAbEX8BmqU81slGWRpx6b4AZB6oWuZNMysrBFeUfhFoKmDaqzZwi5i/tcvYrXE80LG9QomFpZBeG3VRk4g40pi88ORidp1fA+qcqQw9EiPrIsHw6uXljI3BwKKKS8obV5ho4Nt5AkzEV6QtgEjhlFQ0vl8IQrZOOyR85SWzfGiyqkl/SCpKoHaP7uG1yvqpjXoMNkn7zXyqDy9tv3STVUQ== 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=ccykrcY4XyAOBLhFI7Hu/x5eJdDtYHsFZip+WaE/ySY=; b=ITMq6Su0tybVXkhIuvywVjk1tTq5xR3NN2zmGgQaaraXaMPUGohbmz+ssPBR+LsR+oNdAlibEh/8FKUXhH8Ek8LMEQIvnran7YARP1KdjB11nDLncml8szc00xW1LswEGgWa8KCa8ZhIXEKTIOhXN3tFImCgcOrlzgCH1PW++2Ku6/2gPO9frEUYuz6u6u8WTQG+S6TFXJ+X77Eqz0lYjWYKqiht7QLKmg6jP1QgVlw6bK7gybzpoubLiazkJX3fXsdiWp/Jhx9GJJVT+aNTaUHVo/RV53TZhgY9FNNy6KbSwddAFbiZC52hxFn2z5JEIc+L+P+u2EdnsDRTVLBCIQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by MW4PR12MB7310.namprd12.prod.outlook.com (2603:10b6:303:22c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.20; Sat, 9 Aug 2025 18:48:39 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%7]) with mapi id 15.20.9009.017; Sat, 9 Aug 2025 18:48:39 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider Cc: Joel Fernandes , Tejun Heo , David Vernet , Andrea Righi , Changwoo Min Subject: [PATCH -rebased 09/15] sched/deadline: Add support to remove DL server's bandwidth contribution Date: Sat, 9 Aug 2025 14:47:54 -0400 Message-Id: <20250809184800.129831-10-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250809184800.129831-1-joelagnelf@nvidia.com> References: <20250809184800.129831-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BL1PR13CA0282.namprd13.prod.outlook.com (2603:10b6:208:2bc::17) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) 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: SN7PR12MB8059:EE_|MW4PR12MB7310:EE_ X-MS-Office365-Filtering-Correlation-Id: 22e4a663-e261-4f2f-f811-08ddd7755aed X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?FILefFJvl9Fd8ua+1XTa91iERiTOQeHBuvElMLuNY81K6VVB96UegyNDUMaJ?= =?us-ascii?Q?wl4UQKwRShGzCAQEJbmFjtVlFutX+4R4BG8Hcke49KFjlF6TFCwz9RbnlDUL?= =?us-ascii?Q?T9KlQbcDnd+3urSkk5OCw3Xpgb6YHseBAekZqEnyoiddPzXISo+sECg453S6?= =?us-ascii?Q?Oma6hFS0IV8o7GGfZZY5FA0vMYpcrsduqShqanFbjvxjU36aIGzSmuOC+x9X?= =?us-ascii?Q?TvaZGkD3P08yxtTs2k0RUKU3XUAz1ICowR0/q7wW0HEBDHhm6b0UEVucm4K5?= =?us-ascii?Q?uAywqFbC7Y4wjrvFF3oHA7s5Mtg8oLJmJpWQ+6co8TsfPvTxBQgIEXYXAofl?= =?us-ascii?Q?vxPkGJQIdVAjoB+12AgzO3o9Yc0xTdaO2Ly9ZNXrH5kQLO6nN2leeGm/mnNH?= =?us-ascii?Q?HYevRjGv87CFluKYc+HS9cJwE+y7StBp62rgpt0F4/HnKDU2Ws+r3YstwODv?= =?us-ascii?Q?ecZN5gs8eRZDZbaej1uoEDXSY8samj0fo8wS5ZQvWULPTCGk8+FjGgrA1Xl0?= =?us-ascii?Q?77JTxFhfIdQYncpc23w58jfQlP/wGDq/4px1tsl7GJOWAWnVW85GUsV2ZDyZ?= =?us-ascii?Q?XFyDwrFISEABM1BLEjhfu9FsW6D6lXtOMmJL9VDpBsbgXcqz6d9pAO8eAAIe?= =?us-ascii?Q?Jtna2rFBFgKQh9Gn5576aTazx/9u/DIM3Nh90xyTCxmkBBq1LwcrG2R/PJzO?= =?us-ascii?Q?kqTrDF0R+b2Pr1Pg1OxQh2nxt0YSr9euMNJbkr8AMb4pI7bwQq6nTVsdm8EF?= =?us-ascii?Q?q9Z0I8brdP6L6y/7x8BBQZgcZ0+xOG6M9/1VAB7WjON8mMZE7WClAbEV4b1e?= =?us-ascii?Q?l2iARCi0ftqqQkJmyuuMtHBBEzI2BpqCs/rIO8b+RYG+CBvGB6e3S5F1vFRJ?= =?us-ascii?Q?bMTPFaqzaIbybqkjjnDffE1JTFXeOPpBbyCPV+oL1EtiNpsr5dpCEyxmEADj?= =?us-ascii?Q?I/F1qWVDOOA3uwm2natqoYc3/3WTGzcyL7pgChIgrTFWDOLrFNLq7s6yGtPV?= =?us-ascii?Q?kUyZcMS1wlt5FBlrhM/vmjDdC/0oxSaJRwF+Q8C17DENnlbf8Sy42vCGeZ0V?= =?us-ascii?Q?YKCfrIYuLrDGpZpltxzJxuaruyCYui8aKW5k67Ti+hSjCepYrBYjQQZ+bo/F?= =?us-ascii?Q?17he/xolCZMD1/I+HXK2wTM3pdoFZeMVNdRb6uRATNXHUg0VY+ZQ6veIgNIT?= =?us-ascii?Q?OCp/rVkobxdLm191bphnyq6IgwUOM+LSAX/sn5O3we5hNWljbI2XxOweBovW?= =?us-ascii?Q?VzNtBSVQWY7vm0hr1Q8EjzR499BGeV53OcbluzSFw/hSCzxHP6puGlI2iVIt?= =?us-ascii?Q?Lpe22dTaHaCAjl/icvfPrE/tti4qoO0Z0FLUE0AB4DnTsnJV55Qw8N0vQjej?= =?us-ascii?Q?RjCcqrqMN1gmGrC7XoRhTvWLLCOvRGWMSdkedyxRGTkJ9WRj7jTsn0bRiyHH?= =?us-ascii?Q?oCcs6vmEZRJi43RAKp+W8H5mqivmwU+Y/9ryfkN5gaMimivLiZFPNg=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?FD3c7UrcKPR/2CtrtCUzhgoPwemBhHRDo1hn6EqSjqkZtH116VPKPHd4Y7NZ?= =?us-ascii?Q?3ewztTFKrZPjCogxnXhS0lrUzTTtxXEHOTPhad8ZO8R0XJX9kGJODA+LPbHs?= =?us-ascii?Q?eb16Cgad3X+wnJsglscso5eYFaj7FN2mkV8U/SUgkxyEx4fNBcOklvBB0lbQ?= =?us-ascii?Q?ew3cQfP9llQYqhs24cwl2SzY4eYTFkXNYcGvKCueCD10/5XCQlp6wRnRJCku?= =?us-ascii?Q?FbhARHzalm2PZyJ1NtZ8CtF8p1aiqkNyk/Y5OHnxaD/M9Ukgb731jna9I62k?= =?us-ascii?Q?n2/u9/2dhGXW5fxvw0ayeP41BJW84X2OpvGgugwfFmxUhyk8KLfjO/hh6Sj+?= =?us-ascii?Q?KHJG63L1A3Elq0XSlt47V009X2o16ew5XzSgOi+XFmLFebaDVMjRNEpcYGEV?= =?us-ascii?Q?VEWm77FTQnnYzMsxQYc053vsgyiy6x/x4WzBEu0FLYhNsi4bg9B3eLt+ybg6?= =?us-ascii?Q?POHqbVklhEzBP/tFk/mIboufuyfmSNDBekMoTlUE0TipihTssQHKXeX4Ecnp?= =?us-ascii?Q?2IBlv4yO9bBuArzGy8GH07/UAchildR4fYv6IYaDrdJroUtLTS7t1zXdqtI4?= =?us-ascii?Q?PzenkuKOQZc15/L+fiyWlG/I+Ux6bQdX5pcr+qiLUPA4ZxjlI0w2eM8y9xXw?= =?us-ascii?Q?khACFuzCa/VV+cTlsz1gYii+aoeYeMiLyramknRHfuY35AqHD3mjeY+QomTX?= =?us-ascii?Q?X3iqvIYNGedrtUPxpn4+q7DDSAmKDycjhvZcRs7wtZci03YSzgmmlu9DXQPH?= =?us-ascii?Q?3/a03V5sNVj/7hw4654XTCnLub04QCS/2rv2jnC/YzK+T005fAoSCdQO+Gjr?= =?us-ascii?Q?AXY/HoL0obZxUGPxusxKnfi/lG1xa6I7p5Gk44l5GVHXLj4JfWO37RFO9lN8?= =?us-ascii?Q?KjELDCNHfTwkFK3hj8xpkQbK4QeaDw1ALIFlLa5fc8GkjbLWR7S5HU6Ax2J8?= =?us-ascii?Q?Ws3/NF3JcYhI43js0OKL9XkG6tvm0uriDtwl60jAsRHAI5slYWHRq+0OMXUM?= =?us-ascii?Q?ahxb2XRSolh0NK7/yS4lVBx6L1Dh8iUvOQ6Pi+YtbylMOUL0mJBAeA83toEM?= =?us-ascii?Q?3xCQee74gOKJ3j1IhAA2kB1Um2NYOmED9fMCjUOSgRiI7G2SpTjNUGVxQUMn?= =?us-ascii?Q?4OJPjGDJsaW1PqijEo9wIXGHpZmmmIf4RjchfY1aGOL7q62hvqOopaHlVo/r?= =?us-ascii?Q?NOg1b0YXsPF5VSLLvy075/4zQWtd2Kl2TkqP675xK00UPd791jS5eIyxGWoO?= =?us-ascii?Q?cmxssn18K1Akry/BhGkgEwTd0RPEndBtjvkaCNiFhVdy6XLCGMRpH73HgD1N?= =?us-ascii?Q?RkWLePSPjB4+0o9vwElkIxSS4gfP9/CyRMikVDIICToHKc3nve6nVrokh5pi?= =?us-ascii?Q?Jwmj+fz5LUT80TLknAInd5nkViVVlH/qZ61JMWG+zcqO5mTehYzCbtpCXKWo?= =?us-ascii?Q?DxmLlUfWMVchL3YTLWb5C67QkKKqzGdjmIHedgp7nKnKZdWzl2w/eNrkJEbW?= =?us-ascii?Q?LA/vj4p3+45mlpd2W2KesGv7d5rVeu9h19KG3zHLUpimenU4PLE1OFCLoh9R?= =?us-ascii?Q?CJ5GlgGdQY7AX14yUYwdB0rwEfk2kleyRjz2EaV1?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 22e4a663-e261-4f2f-f811-08ddd7755aed X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2025 18:48:39.4012 (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: 8nZLy95G0Fn5v24qZjE1GMoXSxVUmJW4uWyYQh7ItEZv8ruYR4Nc0W9njIOsTodCbSF1lFC4OmFcz2RIPp1sMQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7310 Content-Type: text/plain; charset="utf-8" From: Andrea Righi During switching from sched_ext to FAIR tasks and vice-versa, we need support for removing the bandwidth contribution of either DL server. Add support for the same. Co-developed-by: Joel Fernandes Signed-off-by: Andrea Righi --- kernel/sched/deadline.c | 31 +++++++++++++++++++++++++++++++ kernel/sched/sched.h | 1 + 2 files changed, 32 insertions(+) diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c index 00bafa434fb8..17f8cd5df1aa 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -1707,6 +1707,12 @@ int dl_server_apply_params(struct sched_dl_entity *d= l_se, u64 runtime, u64 perio dl_rq_change_utilization(rq, dl_se, new_bw); } =20 + /* Clear these so that the dl_server is reinitialized */ + if (new_bw =3D=3D 0) { + dl_se->dl_defer =3D 0; + dl_se->dl_server =3D 0; + } + dl_se->dl_runtime =3D runtime; dl_se->dl_deadline =3D period; dl_se->dl_period =3D period; @@ -1720,6 +1726,31 @@ int dl_server_apply_params(struct sched_dl_entity *d= l_se, u64 runtime, u64 perio return retval; } =20 +/** + * dl_server_remove_params - Remove bandwidth reservation for a DL server + * @dl_se: The DL server entity to remove bandwidth for + * + * This function removes the bandwidth reservation for a DL server entity, + * cleaning up all bandwidth accounting and server state. + * + * Returns: 0 on success, negative error code on failure + */ +int dl_server_remove_params(struct sched_dl_entity *dl_se) +{ + if (!dl_se->dl_server) + return 0; /* Already disabled */ + + /* + * First dequeue if still queued. It should not be queued since + * we call this only after the last dl_server_stop(). + */ + if (WARN_ON_ONCE(on_dl_rq(dl_se))) + dequeue_dl_entity(dl_se, DEQUEUE_SLEEP); + + /* Remove bandwidth reservation */ + return dl_server_apply_params(dl_se, 0, dl_se->dl_period, false); +} + /* * Update the current task's runtime statistics (provided it is still * a -deadline task and has not been removed from the dl_rq). diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 51ac373554de..719f9424b417 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -395,6 +395,7 @@ extern void ext_server_init(struct rq *rq); extern void __dl_server_attach_root(struct sched_dl_entity *dl_se, struct = rq *rq); extern int dl_server_apply_params(struct sched_dl_entity *dl_se, u64 runtime, u64 period, bool init); +extern int dl_server_remove_params(struct sched_dl_entity *dl_se); =20 static inline bool dl_server_active(struct sched_dl_entity *dl_se) { --=20 2.34.1 From nobody Sun Oct 5 03:40:34 2025 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2042.outbound.protection.outlook.com [40.107.223.42]) (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 E5B162C17A8 for ; Sat, 9 Aug 2025 18:48:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.42 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765325; cv=fail; b=dyQaUypeajQPb4+C50A5/L2t91kCojJRvk+NQ4ej84BwQOGaE5ICynpGYRAV6fK7ZtUqjjn1Mze8YQy/zR2OioyTTbUZ/jFNxQod3c8dicLw2f0mvEDn6muHPNrkJPSHWHvuy9afqSDl7CBSqD6mSMK1ZrhGExL/ImU4Uv/UqB8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765325; c=relaxed/simple; bh=ZKsZ6jmuUZI5/k98cjcQA93j0aYGZevewdLUvMCP7q4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=oFIGbq4owJmJeObCaFgUnDdvmGlTo9KOl6RcZF4sdlXEMoOVG9/cOxFxSEhCBNkLwR98tj3KD5ks5OrC8TNX5IzrroQ/9ObjLgHoznyDyRIBdszGs4nZ/WDi+Nz6lsM39ZnJO88JPaIOp091zu7EyowgPPHnWAY325pum8bYzac= 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=K+3Mfuox; arc=fail smtp.client-ip=40.107.223.42 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="K+3Mfuox" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LWnGQjc9536D6Q13O36NPWtDZemruDzxleeVS2ZC4wi+NZj4TyWS67TQZDUNfterWQ7CmePk9MGqM54ULtDtpBnATt6Lmo3BPQjVAK3WeCErgqbQ5pzZypH97JYEHpDs5RYjJple3om7QLtjns8b6urLbTKjHE5UlwYiWMwF6qw3cxammyXgndeKjVXj2+9LGooQv37i8W7I5Tto54rop1fH7nLge28bEGNazuT39gU5Cbtq7vS74EVIrToW00iS9O0MfxxLRz2B/+WgMivkayVPhu/ZqiYKi4qVTWArItjNok0zWF5Lx7E9jrb/qYaPxxthbhVRdYdmuAFZ8DzY/Q== 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=V0mTrP5X5JYE8VGEpoAv9DzDkmGcHOehaaJ8duhxF/U=; b=sosV3DBp/uNLelSm1gQ+EojE0Pi2usC5niaWiiJSWBMidwtmDIOYY3cEv9cvnXOvyS4gJDuFFmvehU9m1Wa/2U7czAE16wLpSANOvo8etcMV6woqCIK4bRzYOKT1qAHNwuhFlxaOkfHdjcsVR1hl/32Kn8OGJtuRtiH8csS/G8GLutFkFRbqjQn85+Wg51BbHhMJKGyTnl4r322c1b3Qpvbv5YPixwub7UPTly34gAkWrbJS4lsiHKjb0jCjgBHx9GlKiGnAj6c00ESKLpQhjelOc4xHXDBaWFxf27MG/gGWiMAqjtK+q1H2tU4xEC3EKDF9vz5ZKClebTX+rUv1TA== 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=V0mTrP5X5JYE8VGEpoAv9DzDkmGcHOehaaJ8duhxF/U=; b=K+3Mfuoxvdj5IE1QOUJCKBDuKm8zKBZP5fgK5ZsNYn/+TAzqH/XOA+OxFUt3IRi5l0mFEw8RQSNS5XYbQEbSvTeM73SxhT3o43L+8BjRSDbdAUz6NO5mqCIfRiNsE/fk4x1yfxcsKN4J7QIF+LKWjan5zzPXIcCf/EqkULxL4Cer9gPpGpNYUlpdU5PZGWq4QpsGxdsGeAm4DtIiW82NFBBJ/JWa+2Mwbg8r4O7AsPxylvnkUlObfzac/KohKw87yDIbTcvTZkapW42n9xnvkaOAfrEIXnCnvJSocSMdDWfL/DKdSGZGjz2I+j1RMLQjVC50fYoerGuPIw8Dkd4+8A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by MW4PR12MB7310.namprd12.prod.outlook.com (2603:10b6:303:22c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.20; Sat, 9 Aug 2025 18:48:41 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%7]) with mapi id 15.20.9009.017; Sat, 9 Aug 2025 18:48:41 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider Cc: Joel Fernandes , Tejun Heo , David Vernet , Andrea Righi , Changwoo Min Subject: [PATCH -rebased 10/15] sched/deadline: Account ext server bandwidth Date: Sat, 9 Aug 2025 14:47:55 -0400 Message-Id: <20250809184800.129831-11-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250809184800.129831-1-joelagnelf@nvidia.com> References: <20250809184800.129831-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MN2PR05CA0064.namprd05.prod.outlook.com (2603:10b6:208:236::33) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) 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: SN7PR12MB8059:EE_|MW4PR12MB7310:EE_ X-MS-Office365-Filtering-Correlation-Id: f894b1f7-f0a9-4872-e4e5-08ddd7755c55 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?lPzk8mTWhRhA+ULoIRRbg9JerCS6MHIcOhnIRHJHazFOmlKSTYc/e/VJELn3?= =?us-ascii?Q?lfa7YCYU2pgezcPKYi+I/ipnKar/RE7S0IXiUhwH8ZED3rxc5I/k+nVmNzmC?= =?us-ascii?Q?t4pkryJB58acGZMyQ0Bae6L6eQN/pKeXAjmVGwd7tn2HipW7i3C65VnyK4zY?= =?us-ascii?Q?EDhCmKuOvHYOS5thHhbykhCqpQYiv4QV8pWGqCg6UL1Hbpq8yiVUeFDyQUF/?= =?us-ascii?Q?6D7jYBDKiKe4zxja6W4/desuvOd3LxVsfoITJi8mAb+n9lAaF3I0D4vu/ovq?= =?us-ascii?Q?5cAHQ0kLMuw0wTXhgjpYdlIA5j5fg2y4lgejOlHd2lAVLZfH6mC83E5eAVDV?= =?us-ascii?Q?PYRutJ9e9J5agR3CUwhVNgHWv0FV18ha7Vsh6xa703YRKpFO5N6TP0bUT0Ny?= =?us-ascii?Q?5v66L7KI/GND+73ZxVoIS+shhqKPvRkc3Xto64UkTvRH1IRxvHo24w8reD2U?= =?us-ascii?Q?eo6Ty4NEvzX7iJozy2gnltdLiRxGdiOYzUhUB12wJxJPzNW5ngcvi96AZR5E?= =?us-ascii?Q?FXIxb7wuwnc8z04Ie8HJRvXjcfcO3B23KrO6F04BKSFp6BCgXq9+ZqzNC1rj?= =?us-ascii?Q?eOp0rdO59oXwIddN5UbvYjH9WrFnfcdN7qKkoLyYCNFcnCxj7I7/phtXqCQR?= =?us-ascii?Q?/Zc+FF7AOMRWRg4fsv2yirx3K2LHIbcPH378YJ8CY0HyUqDaR8heKaqtDozt?= =?us-ascii?Q?e50jlo+hCO8NZFWWkVXvM/0l7BygGEf/gIQy/JrK5JFtTG7E8aSoq5PqFNQO?= =?us-ascii?Q?dKiYeUTVAjg6+v88KREXbbHQt3MbBNjA5a8urvP4rTEZj6pvNn8bztRYgIPT?= =?us-ascii?Q?kJEQJV+UnxzFTICYnog+Wpx3KSf/iHbMKSpI94CZ5yjBaUVlvZSPxTrnZdDC?= =?us-ascii?Q?1XNde8pkPqHxA4kXi0R4Ua71J6DcxQ5Gh7DK5nxqCxxDfmcNCe52B+DNM+iZ?= =?us-ascii?Q?LFrhNwb5pl9H/M/OOcwfXti+yLiz4arjFcgk28A65u6p3yDobaVZLCbZCvG0?= =?us-ascii?Q?Rn8UoKO3EkprmUFwXhwhvwSULKOeA+8KglhC6W4uBNgZ/nL6u1d/0Kz/KyMx?= =?us-ascii?Q?exBsdyA3vgUVcLgfZ5j6BcRBk0s35bYMFbYgsilGtHFROtMrSM4BzFiaPgNW?= =?us-ascii?Q?jZVPi+aCE9fW6HK5IFNj1nEJe7O2nVUzz6ID1peh9dQ1MMemd1fi1FXKnM5M?= =?us-ascii?Q?X0wHBVEImkCZpgOMNnO3L691EurQ2e7Gj/IeFNrMTnosxe1Fng/TlWpk7JoN?= =?us-ascii?Q?BsqmkiiA95rAiCyF876nKKlJI5hvjAhZ4bjY6PsUl4m4AtWyLcRhgAwxaBIw?= =?us-ascii?Q?6ddBeVmKLlmfIXgjI6NOUWiTLNto8ehERpdRNbc/m0osEbvOWs3ktacP8O2G?= =?us-ascii?Q?TwAGNLewLjjzy+esn6qe7oC6ONwfNh7BgJWDQ6dt/v0Rv54UklQOxC4rUiu0?= =?us-ascii?Q?DJuiPJKs0jkuw8nmZLAM7NXqdcNHQw6CSjrtsB+dc15qbxRqeShyPQ=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Cwr+gKXJwPMmsihXKxt85R57u/bngsP1SxvSy1nQ5m/MafwDZ+UVQ89+au+T?= =?us-ascii?Q?7REvMhiRG3R7RIYyre5TcZPOLptZhRkJbQio58nA7suGQyeWasV0+uUGO7M0?= =?us-ascii?Q?5stJ2+MoIn6Ed3O+USYtbcS/5vVulF2ZmUsukCqirgQmCYiV0KeBkfd6jcU0?= =?us-ascii?Q?KRQ1aDtTRXv/tjulpUsS9q4D2miWCfIT94fw2O4k5qY74KB+3Igr3Au2BrTS?= =?us-ascii?Q?7gsiYdkgmSSoX2oTORYZCeZc0cpaCaLdWBGaaC56LLSkxBn6ZJLTM7EEC0p9?= =?us-ascii?Q?rvV2hI2L7w3qCZ+xxRW+Fu1hTTj0XTU8Q3Q7+kyhNlEC3ihlnlSIftPsWYjv?= =?us-ascii?Q?S/uI+b7yoScoDz68RsKxyCnBlIcyf7BYbbqFsIbFtDFySwdP6ObGKv/oITMz?= =?us-ascii?Q?MmFl0YbQ7YLOSYIC8FgSJ58bvePb39nx3m2DvNqhxWCFtpnVioeYWkhphVJc?= =?us-ascii?Q?jIJIUR9xkXz8xTmjtXAHql5bzugfUucpQGfGAOsr1bs5sttfgzpu4H2aL0Rx?= =?us-ascii?Q?6ojFfpSsUGGwKCnZYGppcDrq7mQtL5mH1/S7IYj3bVgKDxvCf/sAujXOM2yv?= =?us-ascii?Q?Yseq3/x2A3DTawUeosSIIF3Es8SW72nWjf/6mQ9IoYemhWsPX6HgYOcF/n9a?= =?us-ascii?Q?WXJL+OpKHOiUzCqxGtqkP4hfP6YwBDNrpx71BHsKJ8rSQc6xk+0Bs14MZirh?= =?us-ascii?Q?xG6U4CBLOWPqdYOR3r+jGMyAzmCGiwnhrKKD7DcNRGN5e8ernkeEBFMJXLx0?= =?us-ascii?Q?v98/tV4+m1Y9e9eaZbfQK75fmyGk78URl2yzsbRg6WUHHWavM/13CKk9Wbb1?= =?us-ascii?Q?to/ZgsMiEnSik0bd2HG4afXDCtFMNd6CAXR1aJp55acS3OYid2cYI0+Xk/+5?= =?us-ascii?Q?l+zGZ9v/0iUcXMJ3k/9clvbRGT7ig30BpMkYY/uGhTmqkCT6ng2f0Vi/U1Tu?= =?us-ascii?Q?73QQyt5T2/tQCI6eeQvFbv7OgUiEZ9O61XEi6fk9cli2mns819B6YZFiC62H?= =?us-ascii?Q?4CuedgE9XM4zdcV6Gb+z/lRmMiG5YKoJD8cRi2byEMB9vkcvzBHck0h3WAkd?= =?us-ascii?Q?LhLvrFXIV+0IDhlaWfuPXgyxFjcC+DdDlJazHUHqhKeJLeZKwB3MDyR5m4aQ?= =?us-ascii?Q?HvfRJz/DTsD7+tDUf3ftlGCrdRlijgw0ShGJLuHhlqERyaGNcYHzatcvsvlw?= =?us-ascii?Q?gwjOJI/eKA7cxofER57uacCE8cfXeczNRv28fEj1TBLHcrVdXG3GSK/yctt8?= =?us-ascii?Q?vZ2p2/dbAaNEVyr3kMltWhHJ4G69zYdBm4fQ6/tFsrdpcFb9JATCqDW+gfMW?= =?us-ascii?Q?/UtsW3En5Y8PHSOR7Jp0FsqsMIHEs4X40NQCqXf6P+SKyEVPoCD+sshhGc+W?= =?us-ascii?Q?tCpougPQ/+oBLDqrUlsWNQG+Z39MoPZ6naMILRlnSoI9FGkhNmZi+Gb+2PJ7?= =?us-ascii?Q?n9sjyYcOlCSKvZpQvBIB56WGwKHveLJfiUEUmQg7LAb8u9HH/14t0ClCYgj+?= =?us-ascii?Q?U1SbuSQD03d2xIbVxsETJrxY4NegOwVY1hygzyrAG5zezXXfLQKh6eosdZab?= =?us-ascii?Q?dMLg6meqw0qNHxvPlZRDVMjUm/VXnjXSQ+0dB3d4?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: f894b1f7-f0a9-4872-e4e5-08ddd7755c55 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2025 18:48:41.7548 (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: zOR0hAlyy7SSjG/zik65860HAh3Muez3veuiM4uJ9lBjfJWExuPc2TE2/YVaHfSzbPA9lIP4Rl8z1lins0t7fQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7310 Content-Type: text/plain; charset="utf-8" From: Andrea Righi Always account for both the ext_server and fair_server bandwidths, especially during CPU hotplug operations. Ignoring either can lead to imbalances in total_bw when sched_ext schedulers are active and CPUs are brought online / offline. Signed-off-by: Andrea Righi --- kernel/sched/deadline.c | 29 +++++++++++++++++++++-------- kernel/sched/topology.c | 5 +++++ 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c index 17f8cd5df1aa..92ca2f5b7cb9 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -2981,9 +2981,17 @@ void dl_clear_root_domain(struct root_domain *rd) * them, we need to account for them here explicitly. */ for_each_cpu(i, rd->span) { - struct sched_dl_entity *dl_se =3D &cpu_rq(i)->fair_server; + struct sched_dl_entity *dl_se; =20 - if (dl_server(dl_se) && cpu_active(i)) + if (!cpu_active(i)) + continue; + + dl_se =3D &cpu_rq(i)->fair_server; + if (dl_server(dl_se)) + __dl_add(&rd->dl_bw, dl_se->dl_bw, dl_bw_cpus(i)); + + dl_se =3D &cpu_rq(i)->ext_server; + if (dl_server(dl_se)) __dl_add(&rd->dl_bw, dl_se->dl_bw, dl_bw_cpus(i)); } } @@ -3478,6 +3486,7 @@ static int dl_bw_manage(enum dl_bw_request req, int c= pu, u64 dl_bw) struct dl_bw *dl_b; bool overflow =3D 0; u64 fair_server_bw =3D 0; + u64 ext_server_bw =3D 0; =20 rcu_read_lock_sched(); dl_b =3D dl_bw_of(cpu); @@ -3510,27 +3519,31 @@ static int dl_bw_manage(enum dl_bw_request req, int= cpu, u64 dl_bw) cap -=3D arch_scale_cpu_capacity(cpu); =20 /* - * cpu is going offline and NORMAL tasks will be moved away - * from it. We can thus discount dl_server bandwidth - * contribution as it won't need to be servicing tasks after - * the cpu is off. + * cpu is going offline and NORMAL and EXT tasks will be + * moved away from it. We can thus discount dl_server + * bandwidth contribution as it won't need to be servicing + * tasks after the cpu is off. */ if (cpu_rq(cpu)->fair_server.dl_server) fair_server_bw =3D cpu_rq(cpu)->fair_server.dl_bw; =20 + if (cpu_rq(cpu)->ext_server.dl_server) + ext_server_bw =3D cpu_rq(cpu)->ext_server.dl_bw; + /* * Not much to check if no DEADLINE bandwidth is present. * dl_servers we can discount, as tasks will be moved out the * offlined CPUs anyway. */ - if (dl_b->total_bw - fair_server_bw > 0) { + if (dl_b->total_bw - fair_server_bw - ext_server_bw > 0) { /* * Leaving at least one CPU for DEADLINE tasks seems a * wise thing to do. As said above, cpu is not offline * yet, so account for that. */ if (dl_bw_cpus(cpu) - 1) - overflow =3D __dl_overflow(dl_b, cap, fair_server_bw, 0); + overflow =3D __dl_overflow(dl_b, cap, + fair_server_bw + ext_server_bw, 0); else overflow =3D 1; } diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c index 977e133bb8a4..f4574b0cf8eb 100644 --- a/kernel/sched/topology.c +++ b/kernel/sched/topology.c @@ -508,6 +508,11 @@ void rq_attach_root(struct rq *rq, struct root_domain = *rd) if (rq->fair_server.dl_server) __dl_server_attach_root(&rq->fair_server, rq); =20 +#ifdef CONFIG_SCHED_CLASS_EXT + if (rq->ext_server.dl_server) + __dl_server_attach_root(&rq->ext_server, rq); +#endif + rq_unlock_irqrestore(rq, &rf); =20 if (old_rd) --=20 2.34.1 From nobody Sun Oct 5 03:40:34 2025 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2042.outbound.protection.outlook.com [40.107.223.42]) (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 A62A52C3247 for ; Sat, 9 Aug 2025 18:48:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.42 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765327; cv=fail; b=SmCK9XFGfg/MF+XEBsk71HNgLfSSRLAJ7JZmljD/2S2MJT8zDwwK6VERy9zlfcDJXnwalRqbOfrPPpYNlXhZgfggjGwqU1IgHXFRBZemBmxoyAckFB8Jf/YDWyvgBztHWIVR1tzSerqgCTFuMQASYCgJeWj+oPvts0w1UzTWbYI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765327; c=relaxed/simple; bh=YmEuh+TL7VPsEBRHU8X2+IWCOsPhUnTRfPd1uiaW6nI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=ZuvqOZ5KEJR2Uxs77cUCF7QaTiIebD2EWwlBd0xdQpEc6OFjGmElnlf4Bhas9gzR/hfi0x6XMs2nUhhu5kUI90qpQFrDvgXtgd4r3LX98eaY487BF2KMANC4EN8J7AEIO6bGJtntWpus6S/SBqF0fDZ7jnWbuNFdSSNfGaS68B4= 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=TSXNlWjJ; arc=fail smtp.client-ip=40.107.223.42 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="TSXNlWjJ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jwTXIhdkgbb57JAFuRwlvZfT9WH5z2V+cECP+IM8alw06xvpcJkLHg8quXBb7jMo1bf7+GHUrWRNaU5AxwA9x2FEWPVQDc3wBl5hDMNCTUk+ed31bJKxobLrEk7MZdV9/CpUrhGfhUphBs8MbO6KpKlmdMKRnwqo6qUiUJ6x8/8FAZwOrgDzEAoGFgCLeUlzdpogC/eEm8pCdZsfRnBSQQbuIzqoxaC2ENsXXqMqQuLk6oh1T9hTPpgGsSLsqara+tB/UwN4bGtlcN5snBPtxDWwZ8+6Iirjd05TxWucNHLEGIBk3/oe7YoKKPG6B1b2phcVNMjEhH0OdKyHcq+cNw== 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=KsBc5J7XU91s1pFVMNob5FGV9VZz5CrG4SdmCgKUZO0=; b=CUvI6NH0uhGsGB3XRj+x30R4t7WhKujDhX3oEuuaS33ZI8SwxLjYp0N4l6ZMizyMtfCapGubAgtCh9GDgBuLNhGB/zwI7Uv2ztIcbh6zxE+AZN6p6zsB5+HZhNx9WrSdqetLaVbyUbn4pVv1janpO+t5nEKtRFRnogHTE6yDEcE7VuUMhaOC/ft+lQ3g0NeCkwvV960J8exRXQ2bjzt0RBkLax5//6TE+aEa8YYw3dnw33buqaYLIsYmKAo9ITjT555m/iG0TwielXyxIq/+BoAArkpaM1Y1vpXYrITt9CXo5OdpreQzf+AT7d8dmAtI1LaGQv5cXgcwOGqfbK79GQ== 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=KsBc5J7XU91s1pFVMNob5FGV9VZz5CrG4SdmCgKUZO0=; b=TSXNlWjJuiY0dM5MrRfqZtwE9Ch9Afa3vm9NQXUAO3Aq19kthlqpy2N42a8vp6ciS7Hfd6kM1N2YtxSQJaKkAgbLHAAza9Ty2AGIhCkwdYjVkXeunhUjFfbzE0VgAglZORTqdn8ZWyHjKEeG/fDCHcFgQuNQ34MYVFLWjuB9KqgolWHIwGXQUc7O7Bb5k8wYUaGBchXsyIkU3PjdMDgYkdqBjnA/CVQcLl16bNNfhatOjXTB9n9+avOJW9T5iyQZzdW1dtlc8nd0CCLJ4eKuetIFDhqrqX53gdwu1+90X6Uhi/yarFUUF7tiKpEFnVLu4XGowRMm1W3lZbED06Dr/w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by MW4PR12MB7310.namprd12.prod.outlook.com (2603:10b6:303:22c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.20; Sat, 9 Aug 2025 18:48:44 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%7]) with mapi id 15.20.9009.017; Sat, 9 Aug 2025 18:48:44 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider Cc: Joel Fernandes , Tejun Heo , David Vernet , Andrea Righi , Changwoo Min Subject: [PATCH -rebased 11/15] sched/deadline: Allow to initialize DL server when needed Date: Sat, 9 Aug 2025 14:47:56 -0400 Message-Id: <20250809184800.129831-12-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250809184800.129831-1-joelagnelf@nvidia.com> References: <20250809184800.129831-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MN2PR05CA0059.namprd05.prod.outlook.com (2603:10b6:208:236::28) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) 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: SN7PR12MB8059:EE_|MW4PR12MB7310:EE_ X-MS-Office365-Filtering-Correlation-Id: 3f2fad7b-09a1-4c3a-6279-08ddd7755da9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?R+E7Yz4wNpPiBHB+IVswM0k6YRzgW4j1nxsB2wSRQ7yM32O3/raIhxHQnWtn?= =?us-ascii?Q?eHWam7JJv+qmKH2kzAq85HI7vrFeUEKrNQYBEIVj14vjQQB5KgpH3wAYerqv?= =?us-ascii?Q?J+67QTPg+kd+GALuHa9Y30/i4OIkpyZoCviOQo2xq9+vMX7l8fZiFgxrzLoi?= =?us-ascii?Q?DkfT2pzFe6lUeWJOiNTKOK3Thos0LCpRoMYvUjyIs3a4WcwKFBVLQ1VVTaoA?= =?us-ascii?Q?C1P7P7cXONYB6ikpB/81mAtyA6ZDDOCn8a2EUHWjxa124NuD0+xhP45MWg2e?= =?us-ascii?Q?ZUU0uqZy1AhmWQFhsP2P+NatYBx4rnqFxC1a+tE6YcVhrxIeNYAjj3qkptok?= =?us-ascii?Q?DDSeb+t8aEH2l9Jl/swWNlGy+Quv+TehlETBrhKPUySM0/1WkqC3HsR/zbId?= =?us-ascii?Q?cvvRtf9aawsC3A1fMCqzY1jKI3c/scSGNuVzNKsAbntpXAU2AwwD77sUFl8W?= =?us-ascii?Q?9l34w3fLrQHK6ZlmjgFSN1fFJ77tisk7gRECw5cpUF1NiPqdbQM99dwuGTl2?= =?us-ascii?Q?x9vkh/66fzbRe72CQUyD/E1XYIrgWuTmM8Hutw3mZxRbzn/MlqVhD2mUd2n2?= =?us-ascii?Q?pc0pb9Pu590AOMEPNAKnCXqgzw8hggStsQp4JQ6UQAGH26y8836DUJFot/bv?= =?us-ascii?Q?y8cjfW70jc6BkvsWa/uzitm31iSaUiyGenDfKhpxRBCk296+Ik4EqY3W+3AS?= =?us-ascii?Q?GVfOVargxQOo7fqb6f575gA4bQLN3uyr9pTz0Jujtnq+ODzIeX0jaSxT5VqD?= =?us-ascii?Q?Tu//MWY/UFTyBcgC/056x4kwGc1fLi6ygRp0dXl3e+zbqMA8bOVPUr6at3Cw?= =?us-ascii?Q?35YituNhZJa/p4PhxieL+TOiQQjapw+6gOqrPCexjbuc0xFZbyoWxhpum8kF?= =?us-ascii?Q?utsx1E+6DXjMsJOqrzEKcscWG74VVrJycLe1jZ9Pgyrb6WepP6RqSHCM1aGE?= =?us-ascii?Q?Dz9tZgW4h9t4c3Bwdayzb6VTt1EOR26LgX/qZQ7KqYLTPSrzBUvHB9EiyaAR?= =?us-ascii?Q?c0bgzjgCSbMOHkPtoX0YoqMTmiwOQDvi1PNWSX11QtPuJGm8fdQ1iknEsnW4?= =?us-ascii?Q?8yJtozKxPIrTuf6j0zOOjJKqkrjbE1aLd0XmJFkU4RPNp0TwdbxnwYvuNkih?= =?us-ascii?Q?yu+q5roVoa0dya14xHDIYbu82+YhA857pOGldxn09pcPU0L6RDSyDht6VoYb?= =?us-ascii?Q?GHynggzo9aDhfEXpNQnlP5OqYa49UMrXI9c1poM7gH5vkZg5D+RwZ9F9TRal?= =?us-ascii?Q?5o/6tNY72zm1HzEzcRvjFE9WgfE7X1wlqspittm2uk2/m0vguX8Miq6mbGX5?= =?us-ascii?Q?K0z3O+rxAd3L9sQusjDQizwbg3AENkeJFBKBwQ4L31q2caW00Rw0d+W0kmQe?= =?us-ascii?Q?5qBc0cuHjAtsJdACGK4y5vQba/JRl198FcTq+r31oTJRTgBOG1clt2TXgso4?= =?us-ascii?Q?cKSGXkH9kCNseAJ1Ukc3hkOyv6FKLyhRstvDmN6iFJSQ4xwH63fnfg=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?moCL5MhIDzs6vf2XVb9xHcIGLMNLsTBo7MriZ374mPFporI7AEmyJC3vzL2+?= =?us-ascii?Q?4mpLEVVv6ZagyhDlrEd+FKbiJmBc/eltxnqyr3YJrmsswreZZVZsXyoovkPR?= =?us-ascii?Q?+nLWyNeyvG3ulv6Ob1wZaBbHHCnwDaBDXx+uNt6QNHd3x0YPhTXsgzGpMVKx?= =?us-ascii?Q?jftAn69GKMJTUXI8CqC5e7QelCjjDFlPlXwz9H6MlGBWGcPV1uMj2W7QyQgT?= =?us-ascii?Q?eHbvkJmwth3V6qpbXmcCpS240Tu4ND1m6WzV4j0MHPff6oyoF9l+kMVwr19L?= =?us-ascii?Q?P0SbuEef3Iwrgjnb+j0QHqDCTCMOkx8wBp9zzNsQjtiMZ6qPpUcz9ETsHOKs?= =?us-ascii?Q?P9dUdScruo+hjsvz76L6MrgpKyx3HizkAjpJ2Jq0k2XJ0hiiXCI/x97LO/hX?= =?us-ascii?Q?Hp2f53cgFiQ8rzr/YnS+z+t7B6OQvzWv0CBas+tIzR3T37YRlmTD1jjZANhC?= =?us-ascii?Q?fYCWbsBJjzlZgTadVD2jZ3l7fhpA9lJb/O88t8u1OlChpXYhU1pJiEEweRK9?= =?us-ascii?Q?Ec/fik0Whv0XaLqXBy2A4timjDVYjktm4f9PxKvptSw//y6qjkzmi7zd7zQi?= =?us-ascii?Q?eBHX+y3k4r4H1DnSDvJJFDldYIjcjp+/nkoB/MUD4eqwO2w/A/GL8sxePTRL?= =?us-ascii?Q?aFzpLu/OW/VdMMn9CMbLz96hs4OyefZyfto+hJgI7ilycBcGkUjYckMBlpRw?= =?us-ascii?Q?z6qPNsVwbqzxfvHDYmLibGYg6nhUasIPWRVimoHCG9y5+QAZOy4woT8Yomio?= =?us-ascii?Q?gYRnlLNo+4GGEb1Y7alo65CBxbTk0Y/1tDPB47uHiOuG6WfD1aDNLQKoGDHe?= =?us-ascii?Q?LZ9NL3AQAhZ3HQ0znW0OySBMRZb9unIo2wGZETlYfdMOG6+VVy+lCAzJuP8d?= =?us-ascii?Q?iYJrPbLOJYQPP3j3oqBm0nCXoiYNBbKCOaqlKcrdvp65nFjkFOFeXGsX2rKG?= =?us-ascii?Q?qqlpXtaQrx/MXy8SZyDRQR5oO4q/zgrhshg9dpunVxNHxJ+6OTCH88sn3uZl?= =?us-ascii?Q?6opa6A8fpCuhWooVWEokFhpS2OSoPEzcwTqB4+uHRP2GodEi6IMJyYH/Av9E?= =?us-ascii?Q?u1GXzS6qHvYAlUxUtg9mKdhoPOWcbuCluKkUgZdVKX4WzPkVryBzkLmmiqJo?= =?us-ascii?Q?CkMRwZsrRYs1M4XYv0JjqaGBmfkCnH7iqfluW4kts6UwOauDt/HKp1eBLMi6?= =?us-ascii?Q?UYEmM2cQfA6sFxMtQ9l3Evcba9m/QV5BsHaG6cEjiCqAgc6TpL8m3T6vz7uN?= =?us-ascii?Q?e2ngAUaTMo6wYbyH0+UaDFQrSOEvWKOBpzSbGmth0j7HpNvD69SDAdrBo63O?= =?us-ascii?Q?7KuHHBKTO9KJp/g5xo6f99Z5wK0I14tch5u+/fKywGarEpkFhuyW1zGp6JCW?= =?us-ascii?Q?HWadHd19kEWNk5tXKsa/1aUHsDsgiCP60opirZ70XK7CEuIHIp6kFZ+kT0tX?= =?us-ascii?Q?7HvMku0zbdfVtS246nYH3fc+YwMsa5Naz2C6CMX4/bO+llIKmQilA8OyWxwS?= =?us-ascii?Q?Jl26tkZkUfxjOsAF5TuDlb8f/tKH9HerDmagio9ve9tsXfFo8KTr6mSEfSrn?= =?us-ascii?Q?edFlz68HTSvo811L0x4l+zN8qfjOxaQbZBtsoQq5?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3f2fad7b-09a1-4c3a-6279-08ddd7755da9 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2025 18:48:43.9746 (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: 6ZKM58Wya+Z9bROiaKu2/uY2u7o41sJCW1csPbf19K6dzX6rONxtbSQ1kJJ6jU9Vc8sM5tCGXC42Y0y2awXAJQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7310 Content-Type: text/plain; charset="utf-8" From: Andrea Righi When switching between fair and sched_ext, we need to initialize the bandwidth contribution of the DL server independently for each class. Add support for on-demand initialization to handle such transitions. Signed-off-by: Andrea Righi --- kernel/sched/deadline.c | 36 +++++++++++++++++++++++++++++------- kernel/sched/sched.h | 1 + 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c index 92ca2f5b7cb9..7891a7bf43d6 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -1583,6 +1583,32 @@ void dl_server_update(struct sched_dl_entity *dl_se,= s64 delta_exec) } } =20 +/** + * dl_server_init_params - Initialize bandwidth reservation for a DL server + * @dl_se: The DL server entity to remove bandwidth for + * + * This function initializes the bandwidth reservation for a DL server + * entity, its bandwidth accounting and server state. + * + * Returns: 0 on success, negative error code on failure + */ +int dl_server_init_params(struct sched_dl_entity *dl_se) +{ + u64 runtime =3D 50 * NSEC_PER_MSEC; + u64 period =3D 1000 * NSEC_PER_MSEC; + int err; + + err =3D dl_server_apply_params(dl_se, runtime, period, 1); + if (err) + return err; + + dl_se->dl_server =3D 1; + dl_se->dl_defer =3D 1; + setup_new_dl_entity(dl_se); + + return err; +} + void dl_server_start(struct sched_dl_entity *dl_se) { struct rq *rq =3D dl_se->rq; @@ -1638,8 +1664,7 @@ void sched_init_dl_servers(void) struct sched_dl_entity *dl_se; =20 for_each_online_cpu(cpu) { - u64 runtime =3D 50 * NSEC_PER_MSEC; - u64 period =3D 1000 * NSEC_PER_MSEC; + int err; =20 rq =3D cpu_rq(cpu); =20 @@ -1649,11 +1674,8 @@ void sched_init_dl_servers(void) =20 WARN_ON(dl_server(dl_se)); =20 - dl_server_apply_params(dl_se, runtime, period, 1); - - dl_se->dl_server =3D 1; - dl_se->dl_defer =3D 1; - setup_new_dl_entity(dl_se); + err =3D dl_server_init_params(dl_se); + WARN_ON_ONCE(err); } } =20 diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 719f9424b417..fe587b3bb88a 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -395,6 +395,7 @@ extern void ext_server_init(struct rq *rq); extern void __dl_server_attach_root(struct sched_dl_entity *dl_se, struct = rq *rq); extern int dl_server_apply_params(struct sched_dl_entity *dl_se, u64 runtime, u64 period, bool init); +extern int dl_server_init_params(struct sched_dl_entity *dl_se); extern int dl_server_remove_params(struct sched_dl_entity *dl_se); =20 static inline bool dl_server_active(struct sched_dl_entity *dl_se) --=20 2.34.1 From nobody Sun Oct 5 03:40:34 2025 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2054.outbound.protection.outlook.com [40.107.223.54]) (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 2A6692C327F for ; Sat, 9 Aug 2025 18:48:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.54 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765330; cv=fail; b=IsuXaFDy16in8+TGHnv/z6GFEi8C/cv6XJKIJc1hKioNxLmTvroqkTo6TmUmy9LgrvJPIRIoiz/59aP9dbREXe5ZXK/BMTOT7fsMq2P/Xesv7fO7WrpOfzFJMdWS6rbNYYu5MWK96xzPjTM0BVwm8bClnNaaD9BFVZp7fyzWBf4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765330; c=relaxed/simple; bh=Ipftw5pjrSl80IjGQ07seXjC+iLbSLpRPV8DApcHq8k=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=TNm2G9hKH7h4JKNL0YxrIqPuKnzepb1Df9gtyirrspWOoyijnsXneB4WbKgsRDeXmRyJ97inGhGfZpdLR9mJuUAY90MgK9pX1kf4H1A1nUbJ/D5QP4y4kNtgtGbP9YhKrxB5sSir8CBD4qptHJrJQyexqqlcWdhPclq+4Dq/I8I= 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=c3MyxFM+; arc=fail smtp.client-ip=40.107.223.54 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="c3MyxFM+" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aG3SAFLtpZMh67tKLlrPBKv1n7m6mIbWrxZjkbdg3MEP4b4Y5xgU8r8rfXLsN5YNhhvvBv1iy42P6Y5M4lTe8g4HVPzbWulSbKSv6TdYTnVJ/xjV4uEMTpyNQ37y1J5cn7GxYFLq2p1n893+lToJZNZ8aVXJ391mFZagc5+qlg9cK8JzMC2fIrHQb4KnSzNsBXTo3RQq0zEm3MU25S5uFN/Z/gav9o36+YTHYpeyiM9JF8uu6mxnE/G1JycSo+vEqLypdIPq0R6lRWaSjOsDUFATUTjc/zsKu376R+5cXUiBSKVSKgauoFcowLidyngizH38UDjMKzYeZ/g7+paDZQ== 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=0YAFOuE3qQrqpfIZ480g2WPDhlK+bXpKgk8cqa9ZhHk=; b=kSVXgKKFgSddKbE+GP6Fe/BYllsdIze1XAaTaPr64hiGmqKydRNe53twxi01H44LGQJhXn39mgf9Du7X86EkN75cKkCeDpAeIRYgQHsr9lmk4f0BVm8W8YWIkbkQJ6YHrcXrdM1XTIG6LgycnrEj09iKJz6Ko9FqyxQp/TnKJLT6OD3auYYuXgqYqObRFcN2VSfpTmcAIPPJnx/cShAk7FRSLI6PQhKP4bmALWN2rWozub0axK2PPWj06wIpy5jFvrFUIxebFkV/Auticz6MQ3LVY2AK+a2p2ohRxBFXxk+RnpMNWCKm0J+8O7bB71AKQNY1fyXMh9gQMGOsgKSgzg== 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=0YAFOuE3qQrqpfIZ480g2WPDhlK+bXpKgk8cqa9ZhHk=; b=c3MyxFM+4XRk/gXztFjikWCfCzgtZ9RMGeenu+NccW/7jnDs4qJ1itlP0jOnZ5sY1f3tgArv5sjKW3Ze6pyUX6PbPdRRKTo0yfKlwjvrsWSLmGbbB0jRiTlbtEZU3piMYUVtIujWhcZr/RZuLJnczToYDL7JenH1js4o6GcMMWX1rleeamXyAGdh0n2uLbUrUuly3vfV4qAsNCnhGuFMAeDdFbWKg8Su3IdixqeZl/tRppbZiuJrCGAddh/bzmAZrZg5YDZOYYozdfddJ2/8jx8Ra1Y/jZom3Om0q0y9TtyDnNXg/RUZ+X5C/dwmUccUPTZ44Vok0m8V7edVTgVx9Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by MW4PR12MB7310.namprd12.prod.outlook.com (2603:10b6:303:22c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.20; Sat, 9 Aug 2025 18:48:46 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%7]) with mapi id 15.20.9009.017; Sat, 9 Aug 2025 18:48:46 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Tejun Heo , David Vernet , Andrea Righi , Changwoo Min , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider Cc: Joel Fernandes , sched-ext@lists.linux.dev Subject: [PATCH -rebased 12/15] sched_ext: Selectively enable ext and fair DL servers Date: Sat, 9 Aug 2025 14:47:57 -0400 Message-Id: <20250809184800.129831-13-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250809184800.129831-1-joelagnelf@nvidia.com> References: <20250809184800.129831-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BLAPR03CA0101.namprd03.prod.outlook.com (2603:10b6:208:32a::16) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) 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: SN7PR12MB8059:EE_|MW4PR12MB7310:EE_ X-MS-Office365-Filtering-Correlation-Id: eda7ab6a-2864-4b1c-1a10-08ddd7755f2d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?mly1BEJQAzs/TZCrMBj4O2lDMepgEdkjmBAlLD3NqC8X7QbBy17oogL0prau?= =?us-ascii?Q?xeHnwmq2V9vmRQNOC+rCKAtdkk+Oczqnxy8OtlKaQMf3p0oMf1bYhCUfoN66?= =?us-ascii?Q?8LS8ybO4Ukg3xECllSjuiLrGMF9gLG2NNmVGyq4SusfdIPP9f5//xa9D9Db8?= =?us-ascii?Q?zfiCeSIwylp4ByxcWFU1Hq7Yys6Q5hl5LTrZU6MBDNt6SeNzAUUVJOmsS3Gl?= =?us-ascii?Q?XCq0c5fdBIvUY/oyqk+GIU9LXmBdw9eHOjak1s7GvwuP6ERyL2mBLFKD+imS?= =?us-ascii?Q?Xj3Ok2Oa2RusbiPw+Eyu/7oLCjgAngZsuxjl9Uz/ye/cccvWb4OKrJ22c4Nn?= =?us-ascii?Q?21RzUj2z/bmrMxk3w9lRQNnXb8k7vS/MF+aUuM4JNoHaP0Ay4CJPQ9kXjtxn?= =?us-ascii?Q?FsuGyjz1vFBHwjxG1DaHRyKBtiq03cguIyH8gE+Jz2OL7zteqR8zRPQ0UCY5?= =?us-ascii?Q?SMcBphXv/qvVR+qlGNi3EWN10QGVyO91Kop59MXjaPbpQr6cp758IdwrDfzD?= =?us-ascii?Q?T7ZjTpi8hluymDLSaxIbTEUdKTVQgZwU2vQcaspHij+K9ajZATRm1zm8bu/E?= =?us-ascii?Q?hwP7V+M8NisKz11/K88TxprBY3AFhlY8r3vNJgu1r+06wqRZ8KNbD3y3yXFG?= =?us-ascii?Q?oVAOHdVVfIpH+ekWclUCITSURq5UVYfM6eQbwlJcjiYNUyWrLkJTKLeLImUr?= =?us-ascii?Q?FURaBZc21KzQdYOHhqEDhuh7OJLuZDUZA5eyxKzL+aOd+cxd0hUNtn8j/399?= =?us-ascii?Q?jwLDeIjy8uF3oUWThJH07P6dsWjcTX2STCOSKiZE/grfdiBjKawrPKdp6GKz?= =?us-ascii?Q?xn3Mazsiu35BNOOI03vsHTLLJEbu+9XdWT20W3jvbPfFYb/Y0Oy2EkpoIwkA?= =?us-ascii?Q?Skz72U7yWMxZJS93qiS9ANRcCu9BdUlDE5rvUZPpdeSAB1h9URiSaMi42PIz?= =?us-ascii?Q?schFGvaTUfuMm4MdGrKe1UOI9g1pGZviIsrMOeiCyP5Rpe70uH1qOYWRSyMz?= =?us-ascii?Q?cK4hysJr6uyy6Xg1SYFqhCNFheUTg6+j3XrPzETWHAKnKAnsYeYlT3q+lNMM?= =?us-ascii?Q?Bhw812KbvJK1Z4d80tXiIDtlu8MZ+7T8h8FkE0T6ZrT2otDXYUjLnXB86cPX?= =?us-ascii?Q?v38gdbFAEXCWYSZuvKvP21JfP7ClZZ/QZBVxti+40TPbmu2RJ7HxPPgCfwIL?= =?us-ascii?Q?udUrRdp3swi6FXcY/sI7pRcng19u8w4QyCwexWXqEC0bAzSWsAFJqLkv3unu?= =?us-ascii?Q?R2jbdlxADawMVLDWlKF7gKN7we8HpIgby4PLieF5l2onDF8Xc1UNLnPXTCqs?= =?us-ascii?Q?rJasoijJV12/PUWsoMVjoWI2sIJ971Yy2moB4+WC6zKzjvxTgeV9E19nbrDo?= =?us-ascii?Q?yNC8L9uCvEwswceFV9+3torvHU3nfsIiD8NTY60NCqocR9F1Ho4TDFKgtaJP?= =?us-ascii?Q?g718rPd9zIAbxRBwdsmJmKpdmWkrohY0LZIrE/i6hp3HwcKyEs7YTg=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?mjGmR112gBPlAKQROqZqyXhPTBcA/qHu4K+E4yoToAEXWOledZUY84u7sTeP?= =?us-ascii?Q?0hdujbLJMC8Lb9F3MC5OQLW5b5qi8R6w/u2+mYuVgXHtkSNTXpvQA0O75Anf?= =?us-ascii?Q?dNNZECMWq+v1Xrc138KgRbs5/TIykTDnryRty97L02NOGkoC4MIitKoCW5FP?= =?us-ascii?Q?B62Ux00ygW+8p4/Gg22pdzOpmUbInuOBx3abau00IwGg/h02auNBUnUXm1SS?= =?us-ascii?Q?TSBNZxMYG1uo005w2aqWfISa99dvnTZu2lEz/O5QywAQrH6mQ4fvuVOeidiL?= =?us-ascii?Q?L0Efiw6zQbSvo5Qhrpu3Of6w6MBq649Hvd1BPD2WbyX7OQzAbawfnOtJPwrw?= =?us-ascii?Q?/VJKlOa+f0Wnm2m6gVYrmuC1618bj6fF+WcvkrJqDhOb0iHsaLUPXRh1DqY1?= =?us-ascii?Q?3T3R4wg/JcIwPXsMFcPYu3j3Gg79xohvJbdDEDAGm+Y83XuyjmDTBgA8NSzo?= =?us-ascii?Q?Jq8fhD5r10ca+4HSL4fTr8kftzk6D5SyrD2YmOKehLMdR5sgSEhtiFHgoG0u?= =?us-ascii?Q?mo7tCdiD5dk+SRLBl13Pw6REFegkSUqAMvorvkhd4ra5Mcg9nDipfES3/zCw?= =?us-ascii?Q?D3JpLiYjJhpa1PIng+pXGLbMTH2a471i/5tbHcAN6te9JkJ4m80OkFh8y9XF?= =?us-ascii?Q?++TB+c/PF6b8RmEpgx1jvU207JxcSprBt/ys2T3V4oh2Tbd/X8vM2puQxwwI?= =?us-ascii?Q?Nf8gIlT+wWWYuJ0KT/E6haO1BpxErfW/cHBioQm24I+634mcJ/k+ndfIKjsQ?= =?us-ascii?Q?C7V2OFNlUeUg+n58y3ijfdqzJ7nUIn5hk8m5kbYaMGmVosC3Dn+3Gy4j5qU9?= =?us-ascii?Q?ajMCDtpOAC72d8AWgA10oCVcHuiJG8M1NwcHTnUGSzghzcbLp7RZ8WS3kL21?= =?us-ascii?Q?zFQS8up2xcfVZwvbI9WtAUlQ6MDzefh5MoNeMsKHum77nLXZXCyY/vRtcRpe?= =?us-ascii?Q?WXA2sNAlUS1GlhWDGQzunnotl04xFcNOtfLYxCB/Fjh9pP7eaTuWjljmyiur?= =?us-ascii?Q?WFE19nSlLrHSJYMmCnVWXjDNxezkwDd0Sq2lW7b1mQAwqBkJ43Z8eFeLWEvK?= =?us-ascii?Q?b4bGV/EnU45RooWoXIRmbTMV4heiPtenzHfDDFIeQLu8jeJOPpu7ep8gLgEp?= =?us-ascii?Q?HB0UyxFGJjOD7VFxo3LpyRy3ZtOAsZ1kJaayrZpIRyFp7vq6Sr66OUN0D1ca?= =?us-ascii?Q?ZvBVgdJLU61MSBBfdf1iKeyfLRQeVXqsSeHLCQpEbjp7KFwzypkGS0LDdG3t?= =?us-ascii?Q?Ve+ww28Ll9ZUCW6voeNrTr3zD2m3YTk/QHeJ+1z8xYHme6X3x5qcbItk2GYQ?= =?us-ascii?Q?yAP76mXT7/adcitrg0Qung22mfCsEcVzAk8SoZbpVK13mCIFj+aiMrLgCJc9?= =?us-ascii?Q?x6Vw8gZ0BOpg1lgFdf/B5c/lrkbfXpalWE0wNJyNEgxqWv+P2kSJL5F+9TJr?= =?us-ascii?Q?vxvcmx19JvlWb9dqRc6xWcZf4skjn2AW62uNy3rgmtgxZasCuOl42/V8Jdld?= =?us-ascii?Q?Sapap7PlcPlhPD/kPMyRBzUdpbX8L2lTjfGLAiyMSxc4XVpRsgQmmBHRY0Ia?= =?us-ascii?Q?eFUc+PJaquEYfDpExYxQBW7DZ3B5WKnZs5mzy1E0?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: eda7ab6a-2864-4b1c-1a10-08ddd7755f2d X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2025 18:48:46.5156 (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: azWmgWqu+WLX4m+5Iu8IDiZZhlv5jTVT5y3WHrqe9GRzkSMSS2fBH/uzuXeZi8gw4VvGfxoeCpvre2IyCuvGTQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7310 Content-Type: text/plain; charset="utf-8" Enable or disable the appropriate DL servers (ext and fair) depending on whether an scx scheduler is started in full or partial mode: - in full mode, disable the fair DL server and enable the ext DL server on all online CPUs, - in partial mode (%SCX_OPS_SWITCH_PARTIAL), keep both fair and ext DL servers active to support tasks in both scheduling classes. Additionally, handle CPU hotplug events by selectively enabling or disabling the relevant DL servers on the CPU that is going offline/online. This ensures correct bandwidth reseration also when CPUs are brought online or offline. Co-developed-by: Joel Fernandes Signed-off-by: Andrea Righi --- kernel/sched/ext.c | 97 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 87 insertions(+), 10 deletions(-) diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c index 1f68f9e69d03..2e01a4ad34ff 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -3603,6 +3603,57 @@ static void set_cpus_allowed_scx(struct task_struct = *p, p, (struct cpumask *)p->cpus_ptr); } =20 +static void dl_server_on(struct rq *rq, bool switch_all) +{ + struct rq_flags rf; + int err; + + rq_lock_irqsave(rq, &rf); + update_rq_clock(rq); + + if (switch_all) { + /* + * If all fair tasks are moved to the scx scheduler, we + * don't need the fair DL servers anymore, so remove it. + * + * When the current scx scheduler is unloaded, the fair DL + * server will be re-initialized. + */ + if (dl_server_active(&rq->fair_server)) + dl_server_stop(&rq->fair_server); + dl_server_remove_params(&rq->fair_server); + } + + err =3D dl_server_init_params(&rq->ext_server); + WARN_ON_ONCE(err); + + rq_unlock_irqrestore(rq, &rf); +} + +static void dl_server_off(struct rq *rq, bool switch_all) +{ + struct rq_flags rf; + int err; + + rq_lock_irqsave(rq, &rf); + update_rq_clock(rq); + + if (dl_server_active(&rq->ext_server)) + dl_server_stop(&rq->ext_server); + dl_server_remove_params(&rq->ext_server); + + if (switch_all) { + /* + * Re-initialize the fair DL server if it was previously disabled + * because all fair tasks had been moved to the ext class. + */ + err =3D dl_server_init_params(&rq->fair_server); + WARN_ON_ONCE(err); + } + + rq_unlock_irqrestore(rq, &rf); +} + static void handle_hotplug(struct rq *rq, bool online) { struct scx_sched *sch =3D scx_root; @@ -3618,9 +3669,20 @@ static void handle_hotplug(struct rq *rq, bool onlin= e) if (unlikely(!sch)) return; =20 - if (scx_enabled()) + if (scx_enabled()) { + bool is_switching_all =3D READ_ONCE(scx_switching_all); + scx_idle_update_selcpu_topology(&sch->ops); =20 + /* + * Update ext and fair DL servers on hotplug events. + */ + if (online) + dl_server_on(rq, is_switching_all); + else + dl_server_off(rq, is_switching_all); + } + if (online && SCX_HAS_OP(sch, cpu_online)) SCX_CALL_OP(sch, SCX_KF_UNLOCKED, cpu_online, NULL, cpu); else if (!online && SCX_HAS_OP(sch, cpu_offline)) @@ -4969,6 +5031,7 @@ static void scx_disable_workfn(struct kthread_work *w= ork) struct scx_exit_info *ei =3D sch->exit_info; struct scx_task_iter sti; struct task_struct *p; + bool is_switching_all =3D READ_ONCE(scx_switching_all); int kind, cpu; =20 kind =3D atomic_read(&sch->exit_kind); @@ -5024,6 +5087,22 @@ static void scx_disable_workfn(struct kthread_work *= work) =20 scx_init_task_enabled =3D false; =20 + for_each_online_cpu(cpu) { + struct rq *rq =3D cpu_rq(cpu); + + /* + * Invalidate all the rq clocks to prevent getting outdated + * rq clocks from a previous scx scheduler. + */ + scx_rq_clock_invalidate(rq); + + /* + * We are unloading the sched_ext scheduler, we do not need its + * DL server bandwidth anymore, remove it for all CPUs. + */ + dl_server_off(rq, is_switching_all); + } + scx_task_iter_start(&sti); while ((p =3D scx_task_iter_next_locked(&sti))) { const struct sched_class *old_class =3D p->sched_class; @@ -5047,15 +5126,6 @@ static void scx_disable_workfn(struct kthread_work *= work) scx_task_iter_stop(&sti); percpu_up_write(&scx_fork_rwsem); =20 - /* - * Invalidate all the rq clocks to prevent getting outdated - * rq clocks from a previous scx scheduler. - */ - for_each_possible_cpu(cpu) { - struct rq *rq =3D cpu_rq(cpu); - scx_rq_clock_invalidate(rq); - } - /* no task is on scx, turn off all the switches and flush in-progress cal= ls */ static_branch_disable(&__scx_enabled); bitmap_zero(sch->has_op, SCX_OPI_END); @@ -5800,6 +5870,13 @@ static int scx_enable(struct sched_ext_ops *ops, str= uct bpf_link *link) put_task_struct(p); } scx_task_iter_stop(&sti); + + /* + * Enable the ext DL server on all online CPUs. + */ + for_each_online_cpu(cpu) + dl_server_on(cpu_rq(cpu), !(ops->flags & SCX_OPS_SWITCH_PARTIAL)); + percpu_up_write(&scx_fork_rwsem); =20 scx_bypass(false); --=20 2.34.1 From nobody Sun Oct 5 03:40:34 2025 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2054.outbound.protection.outlook.com [40.107.223.54]) (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 1435C2C032C for ; Sat, 9 Aug 2025 18:48:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.54 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765332; cv=fail; b=Xht8yl5W6IQcMzfGbauUFRe7rhD+BPOun2XXG+p4uLGM+16dSVXMG83xHc5G4H1sac+AxQ+KQ9BqFFgdwWRriBvv+1W4laXWsqtpnHf82YO67Q+uvwIZe3xao+0duIjbm90v9GU+ZwbWQ8JQd10Dd0nj3P9ixja6aIO4uyww/Gw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765332; c=relaxed/simple; bh=e8HxjyFgK7DJQ7GceirIVly0bhlri80ZkZYf9vxLl3I=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=IKk623lNE8tRYO7k1ra5PC1YahIGHkhvgSylLZw0kSqyRMIm0Kjozh7F5O0nPIFZ595luz5PY615nwXkCtbFISF/I+uijeuemfB/N41AIFo/GnAACcTBBskpU9LAn2ENBp1jNSkFhTQlJVNutrzxtE/Ki9MrvgTSjXSvDz2IgVI= 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=WAxWnscq; arc=fail smtp.client-ip=40.107.223.54 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="WAxWnscq" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=OCUIdhDB8YQg/O45iydPeui+1so9vAlGSqpzxshDWCRpB95ejgfu4JYx8Cbu8ttgWtbkB1OKyiDyqQuI5pmD57AGIOSPWdcpe+QSSL/f5TfXQMwKuLuZhyE7c/8RJjzQOWANi5AUMv4Q0U8nUBa2y4zoNd93NxEonabBXVhIkHXjVO2GHfYy/tiQwubo46TttqCbR3ozdP4AtUAayuwnxxPG1EGxy1n2w561N6seMoWp/7lIlQY0mJzIwKrCdSlz9vIWpj7itIwp6DPilKH/2b5FwIgo3HZyS9v+fdbxccz0RbHg2Urx6QCQlNhK1tMOM7tEwZu2ctvC6IdMpKuNEQ== 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=a/3mNCJbtr6vYORhdhpdg10dQbRKUq1MUPmgUP3ROXI=; b=kvuvBIGnMq2KC1omk5XKMSOL51//ARpycvQW91989ZR00YpGn8Ui6+ZrgdEP266NBsFF9/f29ZkxHZuCPcCbCeUxr3aB++nzvAAUGL0YHgP4p0eBjPCtEUT7R4DsqI+smHg4uvOp4fAHvBKQafmhUgQEF7cmACHtYoSaidzyx/Dv8k5KpsGqnRVH8AzwQ2X182TETtWDMtdnaUN7Pe9VxF5qpcecdTGbDU3qpqa7yXnvTxtpIL8s2GhjHZAAufQpPwZMH0nnDrPL+9UfNpuT4WYTDcwPlo0RRMcCXfH6GimN5bDJb9K4ZtY2f27GjbggxfkxnkEoR5cByChfg9sPWg== 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=a/3mNCJbtr6vYORhdhpdg10dQbRKUq1MUPmgUP3ROXI=; b=WAxWnscq6NSgsYgl2rK/JlH1j75ePMTaL/Ms1wrQJ9aM7M90NMW8qOdVzmO9ldtub97PPDz7ulnVHs0d7oMBQzH0zS/qv4NGACh/cGkmeYjTQGgmDT3hF8ZBB/D3HyDoA3XvSgHqEXz4fCYdpn7VwnOsP7itvi7D6Tn84Kd82GvbeqGcJ2NSBDSdbdPr+TX8sAAwLtFTihIbQ1nA+NiNeC/Edz32hhrox6nAguAy1Yai3gKiRPW/VkLZAujW/2/BrXT8BPElOP3Hx+6SGkL1FTZwm1dCGRZ72nrRtL0tPqFJN9pi/f3QKWi6sRCyQ5GI7VvUUWyLdoQSsuamtvSVQA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by MW4PR12MB7310.namprd12.prod.outlook.com (2603:10b6:303:22c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.20; Sat, 9 Aug 2025 18:48:48 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%7]) with mapi id 15.20.9009.017; Sat, 9 Aug 2025 18:48:48 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider Cc: Joel Fernandes , Tejun Heo , David Vernet , Andrea Righi , Changwoo Min Subject: [PATCH -rebased 13/15] sched/deadline: Fix DL server crash in inactive_timer callback Date: Sat, 9 Aug 2025 14:47:58 -0400 Message-Id: <20250809184800.129831-14-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250809184800.129831-1-joelagnelf@nvidia.com> References: <20250809184800.129831-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0619.namprd03.prod.outlook.com (2603:10b6:408:106::24) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) 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: SN7PR12MB8059:EE_|MW4PR12MB7310:EE_ X-MS-Office365-Filtering-Correlation-Id: 5bfc064a-a97f-4529-df79-08ddd775608b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?44QuBjWLQgNhIqVtOtiLcYVXSLds+9NECQTOXCWdjnbKBlBJCXoq+Z9o34Tn?= =?us-ascii?Q?YWb0wUAAdlmk8CxTi0glYctrL2DPgI78oZf07eAgAleN/KED02vsodErrEeb?= =?us-ascii?Q?sh5JFFEiCjqDF8GT9oEIBRE/BZfc9IUPar5iX+N0GNxwdHY2Aebq2oIJKc1a?= =?us-ascii?Q?g+rMFfgWPYm8nebNEJkBDLeI8tiG8EKJZxtDGT345eI+Zu90xlGmbRR9JBfp?= =?us-ascii?Q?TtE+urBdgWQoNix0+XuvlJ+KL5Q+Gjlqfsf5oRvug1LU483PHRL6+Lo9eet2?= =?us-ascii?Q?Xckv7eCcVwt5/t5d2QKJsOBk24l8DwRcNAe6gWcYhCjI+3L0Inf1J0/8h/1y?= =?us-ascii?Q?HncVfbFfwWkzfCgaLplzIqEAwENjWLA5OeMFRWflTkco3ZOvN8dKr8MYsprA?= =?us-ascii?Q?3hXw6JuWIlV6IiY66DZy93OQWaEsbaDUuvEjXFqv3v+Ji8ohcziT/dwpJji5?= =?us-ascii?Q?hbm9y3wAxdOhGjcq+ANEj+gabrncaQ3WtZy5rTV1RRMj7H1NYoefbvpgAWZW?= =?us-ascii?Q?C8aAQ07Hhqg5SRSITYAmgd45T+fAWQAseBwIElMkpFUUi9v7yXR+VAuEpiRe?= =?us-ascii?Q?TyLfQ2jqgWYNPUJNbaSXBGZPOi2tx0OeckxQkcdsLYDWwkHLYQqDM48DUZSh?= =?us-ascii?Q?eLbba8heJIA3ocGOSXawDU+MU6VajGU5FpHqs1BPSUftrrH0M4oFbZwaGQ/I?= =?us-ascii?Q?HAjhJ5c7xEqvQQFgbYhVr+jicvHDXazB1KXCK0Fi99lAw0g38tq2BLXw8Wa2?= =?us-ascii?Q?3bfxHZmq1xQvUDGAq3Ai2b2kCXEvzN8W7RuLZXbNSvhQlk0eBEQSW2HuWeag?= =?us-ascii?Q?+f5TPyRcDZdhLyuGpheQjD6/V5weqiWAZFwZMqUzdDAbm1RyPMyMAIKyTxPv?= =?us-ascii?Q?iPqaMSKb9noGmnKi6K1PnZ+qOop/jYKV3iGfcjBPKQ+GAl/JOn3ThKspbztY?= =?us-ascii?Q?LBlzkvHiuGPie+L1CQPB4PiMhSIU8dnMi8iijkUzpBedcTM1nbEYdcCZ+0dm?= =?us-ascii?Q?8cxPCaPDnKKqb5UV2d/BthKAClOC5VTPqXxSW3xiczNA1J2dag1r0CLtTUx7?= =?us-ascii?Q?QI4O0bbEfY07HYO/v0qOTgweVRG88q8HQhCjOjFQ/3ohpMJr2V4TQ3u+Vvb3?= =?us-ascii?Q?ioHDr4ZEbh4WkKie373uiRk8l0rIGr9QWUX+A6PSKEBtU0McJJojLmIYkAwD?= =?us-ascii?Q?n81IYaiAl/7l2hZnZHC+cBTKvNouaGPUIDh4VVLtl85DiZ2CqPe7imLoMpka?= =?us-ascii?Q?dHKF2DdfL2Ljla2TdqfoNWY6NYcfs5+M9eMEJLPLu+wwcCIUyaoUcp3v4wF+?= =?us-ascii?Q?8RL/q/4H04NCweWfV6drPzGStIHqb/fPmPYC6gtF5iMci/GP1ZKgaF2EX8RG?= =?us-ascii?Q?/T4D7F76EdFA8wwWAiQI1SPR3PUAw1g4DEEM/BWXSPc95xaW1nPeLodSiyIg?= =?us-ascii?Q?0otbOEfZyCvpnIDpkG1ec4MsaRhRqQFZZRh1WCe72ySH9VFGI+R4gA=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?S7tZbqa1fJ1qoGeahpn9LTAHxwctlXf/mtjcLGjJ2HEvoBjc5UPcN4R2Rt8t?= =?us-ascii?Q?XC8T8n4qmiN4w8OC2cmFbaGchIJ5Iz/lepcEUxMqpIS0PTXxHG1WGVOJZ6sl?= =?us-ascii?Q?oToDjYgCh45DqYACQ/NMX/Tssmxf1z8XwurD2++UpjwrBzNcijBaYsAD5Avm?= =?us-ascii?Q?DWhcHxBbgzPAkZwp7dUsO2U8UYbv7crTUChP3k2P+8cRUzWttmsEQ7UwjBs+?= =?us-ascii?Q?yuK//lw6fRj7rnNGp3u61YBNQmEod3url1y2lvMYlb7kWPV66YEA6PMrVa81?= =?us-ascii?Q?Ujy/97KTPuaH5GuuQqJ1RFw9CQAdBAymRPKWlSn4Ki0wzYsRZ44kRcDDvPSU?= =?us-ascii?Q?ZK+lansMHGjh+GvvDJfoZxpNl3E/4IG/dPR5SKHwK4UMWXgtz4oL8v7OIOVy?= =?us-ascii?Q?DjB0t6GKPjHATltg1wlt66a7EHJfX3IT5bsxirXgrKfWJuvhtomJAi8hmRQp?= =?us-ascii?Q?FHGM0+3fcjG8ziPADI8Jy9260t39gyMUNkipaamzoaC94lkJeM6ZVnAEN7IU?= =?us-ascii?Q?7ICTV36dPowYnwXp0eeh3MmVrwz5vS9lJIabBZ9ECH+BCCGGxSNe0Uyy58HN?= =?us-ascii?Q?4FEgyy6dD//FcUxGcBfXF4T+jpbKqFMxSJ6WfEXPdPw9v57Ep6cad7YdT9Z0?= =?us-ascii?Q?o0uhl3+8amsjWih4/bSsjY2w1rFAgIPaHo9C69I3lrSeUmD2dQJSc7p+2qrU?= =?us-ascii?Q?53Z6oaR8Uvr29luQvweOgLy+5F4qcSM6qFozy5sdVqax60UD8Ysi/NMjMt69?= =?us-ascii?Q?hq8nbSXFFltqHgrgHwDM2KZsXG//uc9xdpc1ApBziZ2Hf8dMaLJKk494A9Q0?= =?us-ascii?Q?wtsufECmGn88i2xMcPAArGWwc8mq+CNdusFa58utjFkD8jfL4fMydHJihorD?= =?us-ascii?Q?cyCjggj+9i7g2H2Y+4GlyFmw6B3h6Fvqm1uDQCwN7yORbaV2ExWbBj4B12ME?= =?us-ascii?Q?sGyVt6H8AWjkmvIv4GY08QzHJV3zojD+p1i+vCGpWqEe3AkYzaGYfD+FRUSF?= =?us-ascii?Q?ID6MUNQbI2LJGIkmOuF4aWGgmGDs4DDDOScPnoH+yeVlrwTD6OwkKZ6MjXsw?= =?us-ascii?Q?WSkFXzA4+k1q5+r85uqQUKpJa8gC622qW//yevloJTeoa6I2rJYqXqELHwrI?= =?us-ascii?Q?40p7yzkvpNRSZ3Kn0GvHKYTL+HsltuDalTBV3sHTjCdo3sGqkMaVhQYh5irY?= =?us-ascii?Q?3NDXjMtLki0uxPB/h1DeigKeDTmxWFEG3VYsBDntVNc7pxTI8Tv84JPLRFch?= =?us-ascii?Q?gKiEc4ZePcS2Qe+A7DU5Zsw1BGB5N5mWSuOnCrVmy72B5xLUOhgh+vsp/pFb?= =?us-ascii?Q?+0X1DXi/z6AY3ZWSw6HD4rsa3D1du2wTnN5UCh2AKbzYCl7tvZbHrrDQ/kiT?= =?us-ascii?Q?2MsR0AsSrgeprmnUYm5bw5ek65pMBhL3Pi9nMHyDGB3q7j7PriEw/yJVd0o0?= =?us-ascii?Q?CAaOLIUSM4vnKX3ULnD3T974Jb0ygB4chabhl5DtCQ6362zBU9Q6Q5cLvzjZ?= =?us-ascii?Q?hYcxSAaEfMV5YHB0v3sz8EI+xSYH0LDRl0kIveLbpJnaDL6IAdm5815CIec9?= =?us-ascii?Q?EBJNDB+79WFojOZRETptSSWs7PewAPqXOkre+r11?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5bfc064a-a97f-4529-df79-08ddd775608b X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2025 18:48:48.8154 (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: gpBpldQX4b3VCTnla6YLrWKYDKVHs00WLiwf2Gdsg+P+VKhTPujNPpUc4EM0h9nYfYov4Gd2ejDTcJQyPPGjnw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7310 Content-Type: text/plain; charset="utf-8" When sched_ext is rapidly disabled/enabled (the reload_loop selftest), the following crash is observed. This happens because the timer handler could not be cancelled and still fires even though the dl_server bandwidth may have been removed. hrtimer_try_to_cancel() does not guarantee timer cancellation. This results in a NULL pointer dereference as 'p' is bogus for a dl_se. I think this happens because the timer may be about to run, but its softirq has not executed yet. Because of that hrtimer_try_to_cancel() cannot prevent the timer from being canceled, however dl_server is still set to 0 by dl_server_apply_params(). When the timer handler eventually runs, it crashes. [ 24.771835] BUG: kernel NULL pointer dereference, address: 0000000000000= 06c [ 24.772097] #PF: supervisor read access in kernel mode [ 24.772248] #PF: error_code(0x0000) - not-present page [ 24.772404] PGD 0 P4D 0 [ 24.772499] Oops: Oops: 0000 [#1] SMP PTI [ 24.772614] CPU: 9 UID: 0 PID: 0 Comm: swapper/9 [..] #74 PREEMPT(volunt= ary) [ 24.772932] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), [...] [ 24.773149] Sched_ext: maximal (disabling) [ 24.773944] RSP: 0018:ffffb162c0348ee0 EFLAGS: 00010046 [ 24.774100] RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffff88d4412= f1800 [ 24.774302] RDX: 0000000000000001 RSI: 0000000000000010 RDI: ffffffffac9= 39240 [ 24.774498] RBP: ffff88d47e65b940 R08: 0000000000000010 R09: 00000008bad= 3370a [ 24.774742] R10: 0000000000000000 R11: ffffffffa9f159d0 R12: ffff88d47e6= 5b900 [ 24.774962] R13: ffff88d47e65b960 R14: ffff88d47e66a340 R15: ffff88d47e6= 6aed0 [ 24.775182] FS: 0000000000000000(0000) GS:ffff88d4d1d56000(0000) knlGS:= [...] [ 24.775392] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 24.775579] CR2: 000000000000006c CR3: 0000000002bb0003 CR4: 00000000007= 70ef0 [ 24.775810] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 00000000000= 00000 [ 24.776023] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 00000000000= 00400 [ 24.776225] PKRU: 55555554 [ 24.776292] Call Trace: [ 24.776373] [ 24.776453] ? __pfx_inactive_task_timer+0x10/0x10 [ 24.776591] __hrtimer_run_queues+0xf1/0x270 [ 24.776744] hrtimer_interrupt+0xfa/0x220 [ 24.776847] __sysvec_apic_timer_interrupt+0x4d/0x190 [ 24.776988] sysvec_apic_timer_interrupt+0x69/0x80 [ 24.777132] [ 24.777194] [ 24.777256] asm_sysvec_apic_timer_interrupt+0x1a/0x20 Fix, by also checking the DL server's has_task pointer which only exists for server tasks. This fixes the crash. Signed-off-by: Joel Fernandes --- kernel/sched/deadline.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c index 7891a7bf43d6..836adfb0201c 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -1807,7 +1807,13 @@ static enum hrtimer_restart inactive_task_timer(stru= ct hrtimer *timer) struct rq_flags rf; struct rq *rq; =20 - if (!dl_server(dl_se)) { + /* + * It is possible that after dl_server_apply_params(), the dl_se->dl_serv= er =3D=3D 0, + * but the inactive timer is still queued and could not get canceled. Dou= ble check + * by looking at ->server_has_tasks to make sure we're dealing with a non= -server + * here. Otherwise p may be bogus and we'll crash. + */ + if (!dl_server(dl_se) && !dl_se->server_has_tasks) { p =3D dl_task_of(dl_se); rq =3D task_rq_lock(p, &rf); } else { @@ -1818,7 +1824,7 @@ static enum hrtimer_restart inactive_task_timer(struc= t hrtimer *timer) sched_clock_tick(); update_rq_clock(rq); =20 - if (dl_server(dl_se)) + if (dl_server(dl_se) || dl_se->server_has_tasks) goto no_task; =20 if (!dl_task(p) || READ_ONCE(p->__state) =3D=3D TASK_DEAD) { @@ -1846,7 +1852,7 @@ static enum hrtimer_restart inactive_task_timer(struc= t hrtimer *timer) dl_se->dl_non_contending =3D 0; unlock: =20 - if (!dl_server(dl_se)) { + if (!dl_server(dl_se) && !dl_se->server_has_tasks) { task_rq_unlock(rq, p, &rf); put_task_struct(p); } else { --=20 2.34.1 From nobody Sun Oct 5 03:40:34 2025 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2044.outbound.protection.outlook.com [40.107.220.44]) (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 6DF452D0C68; Sat, 9 Aug 2025 18:48:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.44 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765336; cv=fail; b=hNaWC/YS9V4qBPukeUb/L4rDH00Wlr8XAAUuTLBL+B1SUXx2mNellIcnPbNbj7kVJAhnBJkTghrqDiKQVQA4YFx2uINPzHQaTPNMwzKHQ/1h1VVRgF/q+3sXYh/hpNqf0F2IIx7zP9p3LL1yR67o2vcMCSr/5Hjmbj+L68yHPiM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765336; c=relaxed/simple; bh=Ebev+Z60KYQfu49sWa+QTYaf7qEFeHBbLA8GNlPJ1g0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=KLv7dPewVSHwk4cKAUso0Dxt6CvJAIbDedzvRzC4g4o0faKik/nbsT9pyUVJ5nDpbSqdCnqBGA855mFmTRyNJdyRB+TJ4L6tMQPb5Zs5cou1cmIaxkXQ4J3I2Y86ZnrjfymZyvLkX8NC30S/hYDLcz5GtngrKTE++LXdQcE7skQ= 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=Zh+Nga31; arc=fail smtp.client-ip=40.107.220.44 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="Zh+Nga31" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nwf8eJVcNFZ5Or6lrEjPB0/+WEdmmFxSvDadQHT6GaJdVTbOH5usP7pCV8WtDgbBUPhKnTcmeAQrFhqjTczbU0EGkx0I0WyYYmoBnrY6g1KTHmkpYp3l1pyub4tUPyc0wbd6Nq9cUNTeAKwCwphgTzQLmLg8XFKmhykQHaIyuwuRlCq3tmSWU+eXhK29iyY2SL4Ho/cpQ72iM3Ev72tRVer7yrYp8sj1U+N9z4EFW5uly98FUZDctIKyDu00vZkvZgusv7V28eBmSkpMxn7ppkT2fapBq9NCyVX0XD6/I1qWplUoBE7zRw0ryTjCmCdK1/cfbcNS9O1/WOp068d1gg== 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=M5WUGDKZ/pwPNdpsepCF7GR1khVjxjyfRTqSzHam+eA=; b=sUlvFoEs6jMMA/OebZuoKEHKrPFLjtOVHrutcSmpKcMxHAAwW3rPf9Q6LjeMdRU6wP18NWqr5abPSuSv/8r3bOczPZCB/JKKofhRz2xNyq19yMBrwaMJCnE7PZnJSGtMih/4T2m82WY2yGigKRaj+NVw0YJ0lpO8X4gopfKKdktJU5j+5u1/0Lszjiqkn4MDz7u5T3QDsMtxOiDpQVFSfxV3qZVtXuo5D4pb3I0lQzziBWKH2sgWJWV3W4g10CQ0X9RSV0Wtrew8pNs2bVBvNGxQBFO1eQ6Zv6nF8FOlEEs+7SWWesTBv7pueYuP21YUQAmMerDHoGvL9l5KNz5Ixg== 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=M5WUGDKZ/pwPNdpsepCF7GR1khVjxjyfRTqSzHam+eA=; b=Zh+Nga31Gt2lDgRx/vjeFKL5GM8R3kXnme3K9kSEg7YGGFjcasIf3mbatte1BNzlHtKpU8xpTmrqdclZTY3MsnVzu0RXe3g9ZSGjr3QDjeRfkSxkjGqSIRzdhG4mEsCeBy9rCsEL45W+cLQOiDesJ+9yQ2vnDci2lf8bLl8R2j64b8FssvNKEBm/PHSKyD9sm/xQIc7UWkthBS0e8dALd21BykyY1H09+52yLLBrmU/zN01guQD0WZExEoPhag1sx06rL0M0FuIC6/TMNfR3vhLu92FB7R2Opgf56XPjf/p0bBUCTOl8CMpOrwoLPhQyOftmgCT1DGsN64IEVJSk2w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by MW4PR12MB7310.namprd12.prod.outlook.com (2603:10b6:303:22c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.20; Sat, 9 Aug 2025 18:48:51 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%7]) with mapi id 15.20.9009.017; Sat, 9 Aug 2025 18:48:51 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Tejun Heo , David Vernet , Andrea Righi , Changwoo Min , Shuah Khan Cc: Joel Fernandes , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , sched-ext@lists.linux.dev, linux-kselftest@vger.kernel.org, bpf@vger.kernel.org Subject: [PATCH -rebased 14/15] selftests/sched_ext: Add test for sched_ext dl_server Date: Sat, 9 Aug 2025 14:47:59 -0400 Message-Id: <20250809184800.129831-15-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250809184800.129831-1-joelagnelf@nvidia.com> References: <20250809184800.129831-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BL1PR13CA0233.namprd13.prod.outlook.com (2603:10b6:208:2bf::28) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) 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: SN7PR12MB8059:EE_|MW4PR12MB7310:EE_ X-MS-Office365-Filtering-Correlation-Id: 508eec35-919a-4b2a-0ce1-08ddd7756240 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?RKdqxuRvnWg6C9e4J1LiQcpmchorlbqHTsB35iT5mWbSNRqncfTdLU2RlE2W?= =?us-ascii?Q?rl3eTJSrcf+wnMvfmSHNlQdAmhAQ5odCztywyafyi7itlEoAcEs/4TnGW3tF?= =?us-ascii?Q?a8Kj2igq1H/rBI87K2Ps6ot/OXqc6grHVJMVQPcD0xLUZod8gbMtoEp7vjA0?= =?us-ascii?Q?DMtp41ZfTDLmQfR16b8Yhb2jyBK/D+whwnuCJJXTGYx/fbAIQ48YKAiPijTB?= =?us-ascii?Q?jRdGlicgsM4eSj33cMNaD2OrSs3x/N0xWcP8ujnyAIuoRsIYFjCNCMczQTje?= =?us-ascii?Q?KtffQBeYze0o3VvT8kWzfEwHV3XgSFJ/PlsUagsoCl+ea/KD3tvxCN4/HDKD?= =?us-ascii?Q?372wLPwirkvaBuqCYzR3YwtjUijlvsuiY9QBNOst3oiVFbjiOu+gTSPorXse?= =?us-ascii?Q?GOBi5qmVLxll0oE8/V1A9CJbC4m7rFFETMUgWwsmQOuS5bG/k8kwDNcSZxhb?= =?us-ascii?Q?jQOXV9jdpokWpapfcU5k9it3RhHCZfJTlMtBT8iAcLHGMukJsLvL8/u1emTe?= =?us-ascii?Q?dfzUXZmdIuu7OCsfSx6/VBILFLDyRtcy1PiC4GtMtjKt9+Qzw2eyB0WV6k/e?= =?us-ascii?Q?MykX2ZuAWlm9ZbP+f3pFxbZreeSq62dGpvJ+jS0N95/uW1876njdSZ2RGlkB?= =?us-ascii?Q?+x7T31W38vYtiMyRP1g46O2VEorYyXBbJF/nUD3yA+d9MySWN3OhjIr9lTVB?= =?us-ascii?Q?+elSzgK+ZoUB72uvEH7qzS7gLQa3tfFjghkw0AawKY4S1g0nxpz7uJwG6e2L?= =?us-ascii?Q?GBVSUUHA5j+ICHdWi2mFfuumFNb3pGxehFcD2poh1KtUnkxNVzjtC/sTh6ZC?= =?us-ascii?Q?56eK0hh9C1NNMEMGF3df/Ffa6D4DpmMfu6hvynwu7CKvFwgQyFMJpHK/T9Xe?= =?us-ascii?Q?j5m3UUgguQe5Zv0I9VaFP5Vqe9mPR4Cv2sTmF12iD7kgS6JBLAopJyDdPLJM?= =?us-ascii?Q?UnFdyc3sfEXbn0z61LMBRG2P9XF/FeqJAr50VLRctaZ8p0X9s4i8IUf+LGRr?= =?us-ascii?Q?9G2VOHfH00n3KjLWjwhKg24CVSNrtSoDJpzVBQ4J8FavcZs378wGpsTbETq7?= =?us-ascii?Q?5CKbQNsnp+B5/qiMutq+q57cDV6Vjb49+CVRqPT9LgNA773YcALITnwXrLec?= =?us-ascii?Q?UD02smRRW+w6vajeQppLyLIG59Ln3ezX+sMaty6KR0rOjWDNfB+jIdYkvTmZ?= =?us-ascii?Q?iY77yLiawHgcVzgaVzw6fE5Tb6njDTWy72eKtCiQ7kvOjuSJM5wexvAVz5EA?= =?us-ascii?Q?eHOE6SntF9DUx7us42jq0vAyFFbmNWyQlI0RvCnUGdAg8E2CUB7i/Zf4Xxpm?= =?us-ascii?Q?88sJuv8hjpTR4C3xXWoOphUYOdwElLwJC4OmtrNsbciVEmc/G6RFSbFDHEZS?= =?us-ascii?Q?eu0RCYx/OGzIvO9yremltFNJQS6slgWtYNj1BrxKoD+1jKhkcCDnVLfZC+P7?= =?us-ascii?Q?klx9ECQZ4Zw=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?uGJjaUUUkjzJ92f4NpCPGI4VU45AY9AfLPObdevypWqKhEYgXdYMCElpJIyi?= =?us-ascii?Q?jmcvjI38nc1JVh8RT/9a3L9yWwnZ0Gk6hi5orD3UE08baemIIvNct5du3dkZ?= =?us-ascii?Q?OpIXtsYILX0AYB8x8K9lmlU9TaQnA5WRhoTMZB4jtIzvp9ozxoFyBmpIWOiS?= =?us-ascii?Q?l4NxtVPdJK70M6sCJToOhL5PaBlS4Bj7768L1SFDC4rTXAexIxvTdM8S4OjV?= =?us-ascii?Q?+VtJRpTu16KfuBCge/r5EqPTcIGn6fOKHkBNMKF4fQAPcUdfoo4KwlUmLdp3?= =?us-ascii?Q?tGq59RqN+5Kwn1+DJTPbgp3/A2eUnRdG+Bp+uEQCMzjCvWw1LXtx2XZAc5Vj?= =?us-ascii?Q?JEeZ/EzjEbhdJdPsypDSpblFxDSnjoPUhFaHgExO/dAIvVq3kbt+00ts9jC4?= =?us-ascii?Q?/erk4BqVSYLFvM1GNg3unzPzrNCva9OQmBuNmjxFTXZDLAOyqU9jv14vwAEv?= =?us-ascii?Q?IvdpIAq4TQgbNI3EB8orinHSedgYut6LdDXE84fqiLhkiyJl2sWjQxzsx178?= =?us-ascii?Q?TipBhdvPh/gHh5+o8B5DfvIZXt4bNkk3uoreO6ALRxY9Dh9pKvZWF0Issnlr?= =?us-ascii?Q?CNjinfeSBVLCHKbA20xiB0ygK7zfcdD6DxlUPLJPkEjnB8TOGfQZ5ytorBgl?= =?us-ascii?Q?kFBn6bYvHxRzID39jnIoYPGfSUdwQKVNtC75HsuVkbjZ9gfCA5NmSWCRdFC+?= =?us-ascii?Q?JHhyrHu/zLWMtxsruK0vkYuuRFGJt8LwFKSDFafHqcTEDKyR4/NuxaWivSs6?= =?us-ascii?Q?6cmqXVsYBFUxF84mmwbIAJ9E/wpNwkmUKr1h5/kAEpQFgaO5vGhF1jiAOFnD?= =?us-ascii?Q?G5YIdelhxZvG7KyygiYZBvoyTslZs/mU0CzHajMisyi1N2GibCcuJrhCpSqt?= =?us-ascii?Q?KEM4pDFH4wp63WDT/OicPGMYcCxbk/64YyBNYfzemawNaqKmLHZPa1mUm8WM?= =?us-ascii?Q?DYpciv8mvHEfqDuxrPWe3vFNzR3gHhLlduVt59iW3cxWqQwwnGjp8y1pUz1U?= =?us-ascii?Q?1dptdhJg9xnpwz1rDyLO9FTMVpf0ZdG2ib/eJczM9f+I9MAdPKjhE/A6RNSj?= =?us-ascii?Q?ZtFkeof2kJANwQXvVqWNXyFoNR7jrpRetKLh0VrdgFEXuySDAGJFaaPSHs2B?= =?us-ascii?Q?KHtRNB2VootE7s2HRtc0v6RAqJXa1pZYeSDahOuU2Fl5iemIMqG0u8Vq4cDg?= =?us-ascii?Q?0B8T4IonK5nVFxgTtGIVTwmz637RPQ1yRRizrpWm0Q4sVnLC1IMW3rcYmyTH?= =?us-ascii?Q?pgi6VgVB00NhT/YGIVd25yxzZT/U27aX4rV4ihvBiDsL3CVRWquYc0+cRTr5?= =?us-ascii?Q?U5i1mBcKAOz6is0wDraNyL3MYJ3s+ya9TbwGyhRi764eYROC+9M/60A7IGrr?= =?us-ascii?Q?BTknIxZUCXIUpgGL8iJfJrfZW1/SktqAXGBLWI87K2h5UTWs1ACtGWqsErvr?= =?us-ascii?Q?lPCEu8ihZdasJdcja1AbEgex1oO7C9a3BSod0iaMqyXdxrNkWB/Rr2RYKror?= =?us-ascii?Q?O5mjK4TmDgVC+SFqvlw2omrAZl72dc15vFtcPtxY1Fky09sHk4uCWv/Frtjk?= =?us-ascii?Q?PKsVs+IoyosFZhsQx5haK6c98DJmUhx7D9sLqZYS?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 508eec35-919a-4b2a-0ce1-08ddd7756240 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2025 18:48:51.6879 (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: PKjC8oco1fGvPdvIFShZPWU08PKYHQExPuRVNj+YcyTBU373AYTch4TwY6LUVUrA9WLuUyh4n689uUWAMhQkjg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7310 Content-Type: text/plain; charset="utf-8" From: Andrea Righi Add a selftest to validate the correct behavior of the deadline server for the ext_sched_class. [ Joel: Replaced occurences of CFS in the test with EXT. ] Signed-off-by: Joel Fernandes Signed-off-by: Andrea Righi --- tools/testing/selftests/sched_ext/Makefile | 1 + .../selftests/sched_ext/rt_stall.bpf.c | 23 ++ tools/testing/selftests/sched_ext/rt_stall.c | 213 ++++++++++++++++++ 3 files changed, 237 insertions(+) create mode 100644 tools/testing/selftests/sched_ext/rt_stall.bpf.c create mode 100644 tools/testing/selftests/sched_ext/rt_stall.c diff --git a/tools/testing/selftests/sched_ext/Makefile b/tools/testing/sel= ftests/sched_ext/Makefile index 9d9d6b4c38b0..f0a8cba3a99f 100644 --- a/tools/testing/selftests/sched_ext/Makefile +++ b/tools/testing/selftests/sched_ext/Makefile @@ -182,6 +182,7 @@ auto-test-targets :=3D \ select_cpu_dispatch_bad_dsq \ select_cpu_dispatch_dbl_dsp \ select_cpu_vtime \ + rt_stall \ test_example \ =20 testcase-targets :=3D $(addsuffix .o,$(addprefix $(SCXOBJ_DIR)/,$(auto-tes= t-targets))) diff --git a/tools/testing/selftests/sched_ext/rt_stall.bpf.c b/tools/testi= ng/selftests/sched_ext/rt_stall.bpf.c new file mode 100644 index 000000000000..80086779dd1e --- /dev/null +++ b/tools/testing/selftests/sched_ext/rt_stall.bpf.c @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * A scheduler that verified if RT tasks can stall SCHED_EXT tasks. + * + * Copyright (c) 2025 NVIDIA Corporation. + */ + +#include + +char _license[] SEC("license") =3D "GPL"; + +UEI_DEFINE(uei); + +void BPF_STRUCT_OPS(rt_stall_exit, struct scx_exit_info *ei) +{ + UEI_RECORD(uei, ei); +} + +SEC(".struct_ops.link") +struct sched_ext_ops rt_stall_ops =3D { + .exit =3D (void *)rt_stall_exit, + .name =3D "rt_stall", +}; diff --git a/tools/testing/selftests/sched_ext/rt_stall.c b/tools/testing/s= elftests/sched_ext/rt_stall.c new file mode 100644 index 000000000000..d4cb545ebfd8 --- /dev/null +++ b/tools/testing/selftests/sched_ext/rt_stall.c @@ -0,0 +1,213 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2025 NVIDIA Corporation. + */ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "rt_stall.bpf.skel.h" +#include "scx_test.h" +#include "../kselftest.h" + +#define CORE_ID 0 /* CPU to pin tasks to */ +#define RUN_TIME 5 /* How long to run the test in seconds */ + +/* Simple busy-wait function for test tasks */ +static void process_func(void) +{ + while (1) { + /* Busy wait */ + for (volatile unsigned long i =3D 0; i < 10000000UL; i++); + } +} + +/* Set CPU affinity to a specific core */ +static void set_affinity(int cpu) +{ + cpu_set_t mask; + + CPU_ZERO(&mask); + CPU_SET(cpu, &mask); + if (sched_setaffinity(0, sizeof(mask), &mask) !=3D 0) { + perror("sched_setaffinity"); + exit(EXIT_FAILURE); + } +} + +/* Set task scheduling policy and priority */ +static void set_sched(int policy, int priority) +{ + struct sched_param param; + + param.sched_priority =3D priority; + if (sched_setscheduler(0, policy, ¶m) !=3D 0) { + perror("sched_setscheduler"); + exit(EXIT_FAILURE); + } +} + +/* Get process runtime from /proc//stat */ +static float get_process_runtime(int pid) +{ + char path[256]; + FILE *file; + long utime, stime; + int fields; + + snprintf(path, sizeof(path), "/proc/%d/stat", pid); + file =3D fopen(path, "r"); + if (file =3D=3D NULL) { + perror("Failed to open stat file"); + return -1; + } + + /* Skip the first 13 fields and read the 14th and 15th */ + fields =3D fscanf(file, + "%*d %*s %*c %*d %*d %*d %*d %*d %*u %*u %*u %*u %*u %lu %lu", + &utime, &stime); + fclose(file); + + if (fields !=3D 2) { + fprintf(stderr, "Failed to read stat file\n"); + return -1; + } + + /* Calculate the total time spent in the process */ + long total_time =3D utime + stime; + long ticks_per_second =3D sysconf(_SC_CLK_TCK); + float runtime_seconds =3D total_time * 1.0 / ticks_per_second; + + return runtime_seconds; +} + +static enum scx_test_status setup(void **ctx) +{ + struct rt_stall *skel; + + skel =3D rt_stall__open(); + SCX_FAIL_IF(!skel, "Failed to open"); + SCX_ENUM_INIT(skel); + SCX_FAIL_IF(rt_stall__load(skel), "Failed to load skel"); + + *ctx =3D skel; + + return SCX_TEST_PASS; +} + +static bool sched_stress_test(void) +{ + float cfs_runtime, rt_runtime; + int cfs_pid, rt_pid; + float expected_min_ratio =3D 0.04; /* 4% */ + + ksft_print_header(); + ksft_set_plan(1); + + /* Create and set up a EXT task */ + cfs_pid =3D fork(); + if (cfs_pid =3D=3D 0) { + set_affinity(CORE_ID); + process_func(); + exit(0); + } else if (cfs_pid < 0) { + perror("fork for EXT task"); + ksft_exit_fail(); + } + + /* Create an RT task */ + rt_pid =3D fork(); + if (rt_pid =3D=3D 0) { + set_affinity(CORE_ID); + set_sched(SCHED_FIFO, 50); + process_func(); + exit(0); + } else if (rt_pid < 0) { + perror("fork for RT task"); + ksft_exit_fail(); + } + + /* Let the processes run for the specified time */ + sleep(RUN_TIME); + + /* Get runtime for the EXT task */ + cfs_runtime =3D get_process_runtime(cfs_pid); + if (cfs_runtime !=3D -1) + ksft_print_msg("Runtime of EXT task (PID %d) is %f seconds\n", cfs_pid, = cfs_runtime); + else + ksft_exit_fail_msg("Error getting runtime for EXT task (PID %d)\n", cfs_= pid); + + /* Get runtime for the RT task */ + rt_runtime =3D get_process_runtime(rt_pid); + if (rt_runtime !=3D -1) + ksft_print_msg("Runtime of RT task (PID %d) is %f seconds\n", rt_pid, rt= _runtime); + else + ksft_exit_fail_msg("Error getting runtime for RT task (PID %d)\n", rt_pi= d); + + /* Kill the processes */ + kill(cfs_pid, SIGKILL); + kill(rt_pid, SIGKILL); + waitpid(cfs_pid, NULL, 0); + waitpid(rt_pid, NULL, 0); + + /* Verify that the scx task got enough runtime */ + float actual_ratio =3D cfs_runtime / (cfs_runtime + rt_runtime); + ksft_print_msg("EXT task got %.2f%% of total runtime\n", actual_ratio * 1= 00); + + if (actual_ratio >=3D expected_min_ratio) { + ksft_test_result_pass("PASS: EXT task got more than %.2f%% of runtime\n", + expected_min_ratio * 100); + return true; + } else { + ksft_test_result_fail("FAIL: EXT task got less than %.2f%% of runtime\n", + expected_min_ratio * 100); + return false; + } +} + +static enum scx_test_status run(void *ctx) +{ + struct rt_stall *skel =3D ctx; + struct bpf_link *link; + bool res; + + link =3D bpf_map__attach_struct_ops(skel->maps.rt_stall_ops); + SCX_FAIL_IF(!link, "Failed to attach scheduler"); + + res =3D sched_stress_test(); + + SCX_EQ(skel->data->uei.kind, EXIT_KIND(SCX_EXIT_NONE)); + bpf_link__destroy(link); + + if (!res) + ksft_exit_fail(); + + return SCX_TEST_PASS; +} + +static void cleanup(void *ctx) +{ + struct rt_stall *skel =3D ctx; + + rt_stall__destroy(skel); +} + +struct scx_test rt_stall =3D { + .name =3D "rt_stall", + .description =3D "Verify that RT tasks cannot stall SCHED_EXT tasks", + .setup =3D setup, + .run =3D run, + .cleanup =3D cleanup, +}; +REGISTER_SCX_TEST(&rt_stall) --=20 2.34.1 From nobody Sun Oct 5 03:40:34 2025 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2044.outbound.protection.outlook.com [40.107.236.44]) (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 4B9502C327F; Sat, 9 Aug 2025 18:48:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.236.44 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765340; cv=fail; b=G15ta3LCKvex+gUgf6LIOSxFyYjyMkT0Sb3+XwPgTTMWUGg7a2zLH1AQkjs0FtJorlUSM2IxB0QypQvRm9KlcGnXegi6dojgzjRfz7S9Ny3zOEM1TkwTE5nAevJWV9kF60ClmbSxWYQWtm3dScav9aGfndptdWtdEJzaUP/t+pk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754765340; c=relaxed/simple; bh=+2eFNI2iJf21rAnk/i3arTJz5GL1+1S6ItPj9sRTz1Y=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=IZTHy9gCZm1fIyTXoYlOuNxLse/tXwZ9IE2rU0CeoFDCAQOqsVSRIPiknVfc4tKBVuQwxGWYu6CryZwV57sLYUjnN34Jd6oI3/61ILK6A4RRgdA0PLMIwYc51ADWvhfBx5hQJ0EFa/BLc1+Wdx5TLhJsB6vmVARDHFKqzk+5tmI= 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=CIem37Fq; arc=fail smtp.client-ip=40.107.236.44 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="CIem37Fq" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eHVDJliH1hO6UYocfsjNauMa77Yzr1vBFriYOhIFkZPc8KPNrcgdvefl0OC6edLze6s5FB3b4rYKO8swc/S207frUp+zGEcrm4sQQF3EmT7/OCt74Cgnz+dZtBDFwAKfjAPRWrbwkxX2P3Gh9pLx2gPJSI6nnRwEsPIGUbCAaEhFbI3LYSOj1MWxm1n07sHCTcjYt7pZUejCyRndOWRC1XwW6IMcbOsyM8bu6IpyYqLUdvltYNgbt6ot3wKxSFB3Jz4DOh339viW7zaCmabAbkj8gWcxcrmzILFYhkWD7F93Ygw8MOQ1Hoswgwpw5L/n69YhdCAW4pUNBrb9pA+HFw== 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=jbM8bSOqMvXoKc6HAbs1mzHj0ep+N5+2OlrEkjS2W4o=; b=X9LYLL034ctnLfymjOpuwT4kfKhzQl8xfeDj8js4CSQS+2iYkC5AvS3IcsuRNn1mES+YsAAZX8Ha1FbVkO+LIKm7zhgF2WoyFx5sBxcoZp7XYsyWWVF4NCmn6Wz05QIzNnJEFvKyvZcp/IFjIXL2Bdc92JFoZ0rF6HqM/R5Sv9y8vLxLF7kCMGhx+QFIx6lU0luu7N2V0saHnYrL182F/Zw8pacoOGu6rND8AwthY9NgBlpl4/ACdpZEKS0qJJheChkmrjpcAGo647gPtAUsoOEpZXhq3W8ouEjGWzaq3wTeP91pKIz5Kw5agBdBS/96QTrztBURvQDqAw4piL9KDw== 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=jbM8bSOqMvXoKc6HAbs1mzHj0ep+N5+2OlrEkjS2W4o=; b=CIem37Fqmce1CMHylvNcfPFE+CjZfVgAQ6u/R3mvtYF6Xom4CoJkGOIkx3Vt5WRqxDNuF7es6vnmiQoKPa60WE+8FFQ+JGvbCsGdPb8qXzOaxs+CiU4bvKmcWeiJ0Uuj0d4Kx+ombGp8OtAEEiYQySbIsmGerHSNUQMWTcdDHAUutjilrp2eI5AJmkGLtfSzWuMxjCKbIB3MMFWJUqwQ1BJqzIZgsBRwUoJzvFB9QRg2lKbLs5/SCN+o2oSAk+vPb+UHDn3CQbzV7d5LVlDAroTWrV4+wq7BLXrhjMkT14P67AV1yWM7BCPZ8FkEjgMQQoJ3mnNKawhd1gFvrLciQA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by MW4PR12MB7310.namprd12.prod.outlook.com (2603:10b6:303:22c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.20; Sat, 9 Aug 2025 18:48:54 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%7]) with mapi id 15.20.9009.017; Sat, 9 Aug 2025 18:48:54 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Tejun Heo , David Vernet , Andrea Righi , Changwoo Min , Shuah Khan Cc: Joel Fernandes , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , sched-ext@lists.linux.dev, linux-kselftest@vger.kernel.org, bpf@vger.kernel.org Subject: [PATCH -rebased 15/15] selftests/sched_ext: Add test for DL server total_bw consistency Date: Sat, 9 Aug 2025 14:48:00 -0400 Message-Id: <20250809184800.129831-16-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250809184800.129831-1-joelagnelf@nvidia.com> References: <20250809184800.129831-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0649.namprd03.prod.outlook.com (2603:10b6:408:13b::24) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) 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: SN7PR12MB8059:EE_|MW4PR12MB7310:EE_ X-MS-Office365-Filtering-Correlation-Id: 158ebbf1-18f5-4de3-aa57-08ddd7756412 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?U+8Nz2zEFYPhI09JX8FkRM1ZfXLPj5x3AD7an2Ecqrz/mfTcPRjvq5Tfnyby?= =?us-ascii?Q?n/9ueuDZSkZZkvDBvd6vhPARUCjfb0eHZ3bGYw5fLuJluOTewjOaMp8Xpiz1?= =?us-ascii?Q?DWj51eN1bJ9BEYtRM5QhWtjMxj8qQ0eusSU2F+Ejatn1VoB7rZ9axSC4xN+a?= =?us-ascii?Q?OayfaAUkwtutiwUXWQjYmj7Zw0KbQRJn/ueJn8INqvjE2PihXdxbpHS9EQFt?= =?us-ascii?Q?MrMCxuHiWOSFCIwZbapxc3tFbBTFrDQ/DWABeVHPFjstdXotOOmORiyGBDfJ?= =?us-ascii?Q?xb7nOeK19oxbTZ1T+/QnCnpHZ+u8DONkveFVy6YVhdoy2eC39jpQBxHxS7Pe?= =?us-ascii?Q?nDY6slSwpHATKjiN0NLXv5xCvIFgzMRrvQSnNgIvp2AFQqBjtm0EJ+l2IGp5?= =?us-ascii?Q?iLFEFvgv6fPoIsFW6DKYEXu9m4I3nRDerq2ahwdsbUwe7PO7Xm8TLgdLb9yg?= =?us-ascii?Q?kpmDmpUOfHlbhbndGY1NZKEOtmani58XxhVfYeHgap0B06s0I915Z+Uo+zve?= =?us-ascii?Q?3/3bK02pR55YDN3+zW4Wtxgiq0iGuhQCbVJLRh3scLt/vCJXkGG78tz56zGA?= =?us-ascii?Q?7qIYoB4DfO62PH0griMAk7MlyJhj779qDfldCVNEDvsC61gGffJuwS3Ora/A?= =?us-ascii?Q?WHQTeli8EqNwyYYVudE8Rh1V+zLEyDOC3Y1RhouRzL8wQY6Zs60w0KEshL9U?= =?us-ascii?Q?rdUZjoIpgLKSny7TQlltnjCEOuPoSuwDJCHGH0+xkegUg+oJzbrRZ3kiGvmb?= =?us-ascii?Q?FO7e31Zs6GVwxhWWO+6WSr2Di5jf12lVSrIaePEEVdCqqyOBBic3ry460w2T?= =?us-ascii?Q?KLQF5nTcigwaM/g6GYMjOxrieVidKDvupYgXxo4IjGFtmfwUcl/WXwDD1RzB?= =?us-ascii?Q?RENEDvfDc2idHRXJgevuO78MChKzpg6fADZKESoZe9DIFeYGbd5y5HXLv6Rj?= =?us-ascii?Q?41dyKx5p7aM3VKCrpoTvEn5NAXZlvrWlezv9yoaHYuowlEYx/CfniQhPGDmE?= =?us-ascii?Q?8SGbCbpLsl7HWzP9Hu/61myFmSkh3B08Oa5GxSeZ8whEqJoYqIhhaCE6Te7z?= =?us-ascii?Q?5O83/UgiePBI3BW4J3fGJ0Iy8xrjcwAg7Q0YCHHrXx09jONc0KJ2ZMjGesSQ?= =?us-ascii?Q?32cV/GlQPxLdWL18WqPyAbKjgrTpcNs9BcUyhfwJ6fFTdBToO82Kk2WW6N+8?= =?us-ascii?Q?IAx7qtUB2tglyeMp0dVRp7biDlV+Ze1y29+qSn1pAQDZLzdY8UpPh8T1kW6B?= =?us-ascii?Q?qAkH+ap/ynFOjtndazI9ymxzOPNWEIRj35zBkkN3nvnUJ49HuwqcMdxpTXSU?= =?us-ascii?Q?bICjhQf6JDyp8rOxV9HAKu4jEw3grHm6B/ZcM+/Q/R2jipoSPzfMH9N2adUE?= =?us-ascii?Q?4OETFvslANuwfE/B4WdStGd/SKEilFpctjjyXyyDzm1g3s6DasrOUScKQy2C?= =?us-ascii?Q?+tFV+out/GY=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?XromI8KUjRItY5GyB34c94p/dETPp3JU3eotGvsgVeam5qrCviBE7HtY9xhu?= =?us-ascii?Q?mUUzu0pGlWCcXV7Bopet4n/laiBik5cZBpu/OGsEbb5cR2Mb6H5PeD22lvUB?= =?us-ascii?Q?ghVTDSLpqCFjEuNZBnaMb0nkau3FQCaImtQZqaLgIMlNK8IAxS4galYqywY/?= =?us-ascii?Q?26dvwF9Uvp6UnCRuTwrUmXnwWg1rdVRMJXi7MDNTxDy5EOiX1Zfyk8P7oPay?= =?us-ascii?Q?tVNa0UpFskWIi3bi6S3tUEHAy56UpGs73e26M3LowGBznShUeJcpMPzifHOA?= =?us-ascii?Q?xWY0YXsmgOyoRSoZso40W63IL6lNsU9sPc+Rw1Zv2chw5gB4AXt45IzGS2Dm?= =?us-ascii?Q?n31dtPBExewpxy/fZJBKQgvSS3blsNrIcztKPj9mFTKedzIo2WbUyV8gj8He?= =?us-ascii?Q?uKLxvaG/IhIXUGv8kENDw4HxR2GgNy2piBj6wvd3ZC1vX0CmoEPDu6ljtYMS?= =?us-ascii?Q?YQ1Q8nlYK2TKqKz18K9j/iZi5MH1dcUHVOHKeZ7P/nWbGKvLx5ZpOUlO3HlT?= =?us-ascii?Q?Sb3ddzu6SVbZquzHW7nOHB4wQLSyxcl2dj1e3AmTVcmXG4LTbBWxCCpztE2K?= =?us-ascii?Q?Ry7+AtaffxTHW0i35KsfaWCyz/72Kv3JEw/2j11wne0CIXG/B3ibVDExO2p7?= =?us-ascii?Q?LUftfGV3q0QSDLeizkeRKNFqypPu5r8K5dvxTXVUIKBveNPgHn85xgGN2CaF?= =?us-ascii?Q?cCL4NUYJtpXsUxoWxRBCAGMd4xMiRzOupwscDJz6H9ZswuwC3zqfzrIiCYer?= =?us-ascii?Q?VbcIUNyWNGeux3GiHKfsyc8ycKFhwnkoGfaTpsb7SUbEL+6M4WDWmg09w2HX?= =?us-ascii?Q?SYFxbYkpgLnixnEq1hTLz37eVeN2SIPIV1MPW7TtDsDSROHGi2EwSmhrTws3?= =?us-ascii?Q?jrbRJZ12RXuudrkvwFj+22vRvElstXbUKpUMvvjsxeorA1WV5LAIZUW+Wn9s?= =?us-ascii?Q?K3bSkDleaSx5pmr5EDgn1CFW2wnViwqIghYBsla1p2li9g0hfnh3H+dk2h8y?= =?us-ascii?Q?R6wTo38sUyzj0bx5p/kIhY0ltc5W3c0oPIYs0miZWj24Yc53WvVp9FPQ4Y0j?= =?us-ascii?Q?MmM6BcA9j9eN0PxEkmPQh5B1e4+PZ/KVfZP4QR572fKsccbhqQggf0/QHNC1?= =?us-ascii?Q?HnXhU5bDC2BvXfDBFRdvIZ/XGRlXhyADt8iBv/Q4IBXGGyM/2j5zdSb5athS?= =?us-ascii?Q?y16uE7qqsMstLnAdZ8DPF0977TpiDdOo8H++UfU0T7wMFxozRZIouATjatdk?= =?us-ascii?Q?1ENzR3weL1l+hkPk7UyMMX9APyi7nuY6HuYBguAWZaDVH5ky/yQY+qzV2LNj?= =?us-ascii?Q?KjTJ875GOoezP24wnFqropgEONFplwN/3E+ZQzcIGTUdS7AR0cCqQulp1FBQ?= =?us-ascii?Q?SrxjXYyfVH0JbWngxhnqkciin/wM9VAvKjdWSInxFx6qCV/juEIopOhuaHWz?= =?us-ascii?Q?Vmk0KwzOu0+4UWS902jRcR/lQ8YHeqpIVC9NKdNDLtQb3dUuWBupgb8gHQLP?= =?us-ascii?Q?3uDvLEBoZP/vQ2P8UKAyLAKRJbFniSFwQRR5FwUPH1Ep9duigr1CB6hubJs8?= =?us-ascii?Q?DEEmEgZ41M4w37I9JSYDJRUdeQ/Y5UJXL3NgwQUw?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 158ebbf1-18f5-4de3-aa57-08ddd7756412 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2025 18:48:54.7648 (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: 3k0hDUhLFSHn1hPl4qb2qh3QXekJl6EQgAl9XKyWw1TLug1tLC7X+8ppxHbIk5/PA0ruOG/at7bn+JQTxwc8Rw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7310 Content-Type: text/plain; charset="utf-8" Add a new kselftest to verify that the total_bw value in /sys/kernel/debug/sched/debug remains consistent across all CPUs under different sched_ext BPF program states: 1. Before a BPF scheduler is loaded 2. While a BPF scheduler is loaded and active 3. After a BPF scheduler is unloaded The test runs CPU stress threads to ensure DL server bandwidth values stabilize before checking consistency. This helps catch potential issues with DL server bandwidth accounting during sched_ext transitions. Signed-off-by: Joel Fernandes --- tools/testing/selftests/sched_ext/Makefile | 1 + tools/testing/selftests/sched_ext/total_bw.c | 282 +++++++++++++++++++ 2 files changed, 283 insertions(+) create mode 100644 tools/testing/selftests/sched_ext/total_bw.c diff --git a/tools/testing/selftests/sched_ext/Makefile b/tools/testing/sel= ftests/sched_ext/Makefile index f0a8cba3a99f..d48be158b0a1 100644 --- a/tools/testing/selftests/sched_ext/Makefile +++ b/tools/testing/selftests/sched_ext/Makefile @@ -184,6 +184,7 @@ auto-test-targets :=3D \ select_cpu_vtime \ rt_stall \ test_example \ + total_bw \ =20 testcase-targets :=3D $(addsuffix .o,$(addprefix $(SCXOBJ_DIR)/,$(auto-tes= t-targets))) =20 diff --git a/tools/testing/selftests/sched_ext/total_bw.c b/tools/testing/s= elftests/sched_ext/total_bw.c new file mode 100644 index 000000000000..d70852cee358 --- /dev/null +++ b/tools/testing/selftests/sched_ext/total_bw.c @@ -0,0 +1,282 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Test to verify that total_bw value remains consistent across all CPUs + * in different BPF program states. + * + * Copyright (C) 2025 Nvidia Corporation. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "minimal.bpf.skel.h" +#include "scx_test.h" + +#define MAX_CPUS 512 +#define STRESS_DURATION_SEC 5 + +struct total_bw_ctx { + struct minimal *skel; + long baseline_bw[MAX_CPUS]; + int nr_cpus; +}; + +static void *cpu_stress_thread(void *arg) +{ + volatile int i; + time_t end_time =3D time(NULL) + STRESS_DURATION_SEC; + + while (time(NULL) < end_time) { + for (i =3D 0; i < 1000000; i++); + } + + return NULL; +} + +/* + * The first enqueue on a CPU causes the DL server to start, for that + * reason run stressor threads in the hopes it schedules on all CPUs. + */ +static int run_cpu_stress(int nr_cpus) +{ + pthread_t *threads; + int i, ret =3D 0; + + threads =3D calloc(nr_cpus, sizeof(pthread_t)); + if (!threads) + return -ENOMEM; + + /* Create threads to run on each CPU */ + for (i =3D 0; i < nr_cpus; i++) { + if (pthread_create(&threads[i], NULL, cpu_stress_thread, NULL)) { + ret =3D -errno; + fprintf(stderr, "Failed to create thread %d: %s\n", i, strerror(-ret)); + break; + } + } + + /* Wait for all threads to complete */ + for (i =3D 0; i < nr_cpus; i++) { + if (threads[i]) + pthread_join(threads[i], NULL); + } + + free(threads); + return ret; +} + +static int read_total_bw_values(long *bw_values, int max_cpus) +{ + FILE *fp; + char line[256]; + int cpu_count =3D 0; + + fp =3D fopen("/sys/kernel/debug/sched/debug", "r"); + if (!fp) { + SCX_ERR("Failed to open debug file"); + return -1; + } + + while (fgets(line, sizeof(line), fp)) { + char *bw_str =3D strstr(line, "total_bw"); + if (bw_str) { + bw_str =3D strchr(bw_str, ':'); + if (bw_str) { + /* Only store up to max_cpus values */ + if (cpu_count < max_cpus) { + bw_values[cpu_count] =3D atol(bw_str + 1); + } + cpu_count++; + } + } + } + + fclose(fp); + return cpu_count; +} + +static bool verify_total_bw_consistency(long *bw_values, int count) +{ + int i; + long first_value; + + if (count <=3D 0) + return false; + + first_value =3D bw_values[0]; + + for (i =3D 1; i < count; i++) { + if (bw_values[i] !=3D first_value) { + SCX_ERR("Inconsistent total_bw: CPU0=3D%ld, CPU%d=3D%ld", + first_value, i, bw_values[i]); + return false; + } + } + + return true; +} + +static int fetch_verify_total_bw(long *bw_values, int nr_cpus) +{ + int attempts =3D 0; + int max_attempts =3D 10; + int count; + + /* + * The first enqueue on a CPU causes the DL server to start, for that + * reason run stressor threads in the hopes it schedules on all CPUs. + */ + if (run_cpu_stress(nr_cpus) < 0) { + SCX_ERR("Failed to run CPU stress"); + return -1; + } + + /* Try multiple times to get stable values */ + while (attempts < max_attempts) { + count =3D read_total_bw_values(bw_values, nr_cpus); + fprintf(stderr, "Read %d total_bw values (testing %d CPUs)\n", count, nr= _cpus); + /* If system has more CPUs than we're testing, that's OK */ + if (count < nr_cpus) { + SCX_ERR("Expected at least %d CPUs, got %d", nr_cpus, count); + attempts++; + sleep(1); + continue; + } + + /* Only verify the CPUs we're testing */ + if (verify_total_bw_consistency(bw_values, nr_cpus)) { + fprintf(stderr, "Values are consistent: %ld\n", bw_values[0]); + return 0; + } + + attempts++; + sleep(1); + } + + return -1; +} + +static enum scx_test_status setup(void **ctx) +{ + struct total_bw_ctx *test_ctx; + + if (access("/sys/kernel/debug/sched/debug", R_OK) !=3D 0) { + fprintf(stderr, "Skipping test: debugfs sched/debug not accessible\n"); + return SCX_TEST_SKIP; + } + + test_ctx =3D calloc(1, sizeof(*test_ctx)); + if (!test_ctx) + return SCX_TEST_FAIL; + + test_ctx->nr_cpus =3D sysconf(_SC_NPROCESSORS_ONLN); + if (test_ctx->nr_cpus <=3D 0) { + free(test_ctx); + return SCX_TEST_FAIL; + } + + /* If system has more CPUs than MAX_CPUS, just test the first MAX_CPUS */ + if (test_ctx->nr_cpus > MAX_CPUS) { + test_ctx->nr_cpus =3D MAX_CPUS; + } + + /* Test scenario 1: BPF program not loaded */ + /* Read and verify baseline total_bw before loading BPF program */ + fprintf(stderr, "BPF prog initially not loaded, reading total_bw values\n= "); + if (fetch_verify_total_bw(test_ctx->baseline_bw, test_ctx->nr_cpus) < 0) { + SCX_ERR("Failed to get stable baseline values"); + free(test_ctx); + return SCX_TEST_FAIL; + } + + /* Load the BPF skeleton */ + test_ctx->skel =3D minimal__open(); + if (!test_ctx->skel) { + free(test_ctx); + return SCX_TEST_FAIL; + } + + SCX_ENUM_INIT(test_ctx->skel); + if (minimal__load(test_ctx->skel)) { + minimal__destroy(test_ctx->skel); + free(test_ctx); + return SCX_TEST_FAIL; + } + + *ctx =3D test_ctx; + return SCX_TEST_PASS; +} + +static enum scx_test_status run(void *ctx) +{ + struct total_bw_ctx *test_ctx =3D ctx; + struct bpf_link *link; + long loaded_bw[MAX_CPUS]; + long unloaded_bw[MAX_CPUS]; + int i; + + /* Test scenario 2: BPF program loaded */ + link =3D bpf_map__attach_struct_ops(test_ctx->skel->maps.minimal_ops); + if (!link) { + SCX_ERR("Failed to attach scheduler"); + return SCX_TEST_FAIL; + } + + fprintf(stderr, "BPF program loaded, reading total_bw values\n"); + if (fetch_verify_total_bw(loaded_bw, test_ctx->nr_cpus) < 0) { + SCX_ERR("Failed to get stable values with BPF loaded"); + bpf_link__destroy(link); + return SCX_TEST_FAIL; + } + bpf_link__destroy(link); + + /* Test scenario 3: BPF program unloaded */ + fprintf(stderr, "BPF program unloaded, reading total_bw values\n"); + if (fetch_verify_total_bw(unloaded_bw, test_ctx->nr_cpus) < 0) { + SCX_ERR("Failed to get stable values after BPF unload"); + return SCX_TEST_FAIL; + } + + /* Verify all three scenarios have the same total_bw values */ + for (i =3D 0; i < test_ctx->nr_cpus; i++) { + if (test_ctx->baseline_bw[i] !=3D loaded_bw[i]) { + SCX_ERR("CPU%d: baseline_bw=3D%ld !=3D loaded_bw=3D%ld", + i, test_ctx->baseline_bw[i], loaded_bw[i]); + return SCX_TEST_FAIL; + } + + if (test_ctx->baseline_bw[i] !=3D unloaded_bw[i]) { + SCX_ERR("CPU%d: baseline_bw=3D%ld !=3D unloaded_bw=3D%ld", + i, test_ctx->baseline_bw[i], unloaded_bw[i]); + return SCX_TEST_FAIL; + } + } + + fprintf(stderr, "All total_bw values are consistent across all scenarios\= n"); + return SCX_TEST_PASS; +} + +static void cleanup(void *ctx) +{ + struct total_bw_ctx *test_ctx =3D ctx; + + if (test_ctx) { + if (test_ctx->skel) + minimal__destroy(test_ctx->skel); + free(test_ctx); + } +} + +struct scx_test total_bw =3D { + .name =3D "total_bw", + .description =3D "Verify total_bw consistency across BPF program states", + .setup =3D setup, + .run =3D run, + .cleanup =3D cleanup, +}; +REGISTER_SCX_TEST(&total_bw) --=20 2.34.1