From nobody Wed Dec 17 19:07:53 2025 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2052.outbound.protection.outlook.com [40.107.102.52]) (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 7384C189BB5 for ; Sat, 15 Mar 2025 02:22:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.102.52 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742005340; cv=fail; b=EUManVo+InwH72KQZgkwcK2Ew9w+ksJM0WWbk477LWgWk4kyRMmq0wS3R87rV5udYg+98B8w8GP/JV5Js1ps4pclu0+SvRwIp073vB651Sw2NNa4/QYgJyOUvqg9vKWp90ra7GpZyZT2fA4qSC9Cf+zuOeObTdg/GkrZ8K3XNMQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742005340; c=relaxed/simple; bh=LlD5VG93NU+Sl0cBJywwpYceaWCY2v77xYEnEmxWGx0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Sfpxix9ZdouVrv25jUT9D9bVoNzpQz+AmJ5M0syAPkahc76nuv7tAtLbDCtzAsyFHstkTOf6N27VYcJdjOXseqysyjiZF4DSeJLFFBu2EojU3Yfh4MzNmxSX7f5nOAANViEgouI+aw7erg2Lkus39VddXmAuJRfs0Y1LXB5y7RQ= 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=kXz1etgv; arc=fail smtp.client-ip=40.107.102.52 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="kXz1etgv" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=k0J75pxQU0llTps5sokSVi3D3mkr+Qnac0Qr9aZ6OkyS1jVHnRpK7fXqh6TuoqrFrG7+i4wI1CrJVJDqTlOiAvyV41zahXCffmh3ejLOI2Ppr0AZW91qL/thm2a2Qq5QbujPjUvRzbo/A5jX3PfV4yUI2pl9R9XCXKOTGKcsEoWpu/wArs7C1D5bc/EwnQDMgMfZTyozEK5aVLYGQNtmUtPcF74AByFjLtQr3k3XCQiO+pAi/RaHj/ZJncki9FMOYcBrvS3ZzHqbpK+dVDKnuJVdprKbViy2LlQlDuP2bh0vanUVVve/d6KOhMAgllh/bHqjCC7+r1ab4G5hAKqtpg== 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=ez/YohAYm/+srCtNcwNMlKqx/VLfPoYZd4wpiqD5Kho=; b=zJrg1IXCqbn/2gMB7rau2NucnaImFRSOCHBqqH09TFmyifDvaNNJvPc2hqgEKEqfLFqOQyNH0Loxd3VQj3eUwgXZLmgnS1h1X72DEl07YYeEJDHfibAiRqH8iWhX0LF88OvyffsNX0OHo+QpbGCxV6XvzOoX9wDvRIfRIzOet1dYO89qfd8pCktmo5nWytBE4d8M/K7oHaB7lGLKGqo7DH8qPoXIMIJJgHI/1pxmbg7VMhySfdCMRfwjvdZa3NYkIQ9cacc7ssnMN2oNx5kzbUUOTUqjAbI7VYtdL/T8bEQhYjZK20oXF/pZZmJ6DgMM9SB1M0nWnBOIG7QTZTYNig== 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=ez/YohAYm/+srCtNcwNMlKqx/VLfPoYZd4wpiqD5Kho=; b=kXz1etgvdQlJukogNwHvU0AcfdqP/oCA1/c+Blj33Ajk/MR4Mrr4UpX4dM1loJtCKSL/jMKr83SDnVqERM4ZIMENwwKHDuWtr9exTLuOGJegA7r1ov/lN2k6Ch6g0Rk6hlKLjlp3Chzykj/iszVNILUGr3LqJ5Fw/4kGlSYUZU2U7mQOZW80jTXFADMX2Bc7hfIN0FX0S2drQkEdteY3NOu7uIxzFhchm8YXBXkEKq0L/HOiRnP+Uv8IZC099iyHx6MBfpZ5CZD4ziiY0ipqjRutBDzmQYURzPXf/uwL7HfT1BOaMFjhHh7sPtlgG2r9zbMrq0Ac3xKWsb+lOVRbBA== 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 PH7PR12MB5997.namprd12.prod.outlook.com (2603:10b6:510:1d9::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.28; Sat, 15 Mar 2025 02:22:11 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%4]) with mapi id 15.20.8511.026; Sat, 15 Mar 2025 02:22:11 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Andrea Righi , Tejun Heo , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , David Vernet , Changwoo Min Cc: Luigi De Matteis , paulmck@kernel.org, boqun.feng@gmail.com, Joel Fernandes Subject: [PATCH RFC 1/8] sched: Add support to pick functions to take rf Date: Fri, 14 Mar 2025 22:21:48 -0400 Message-ID: <20250315022158.2354454-2-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250315022158.2354454-1-joelagnelf@nvidia.com> References: <20250315022158.2354454-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BL1P223CA0003.NAMP223.PROD.OUTLOOK.COM (2603:10b6:208:2c4::8) 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_|PH7PR12MB5997:EE_ X-MS-Office365-Filtering-Correlation-Id: 5389d765-d992-473b-9e7d-08dd63683127 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?BQ5ePGVFVKMmf6XmUgzmnxqUCiBzmUhzZ9MnQ4x8fwsNDMY4c/2AWYoMLGln?= =?us-ascii?Q?MivQ5ieRb7zi7DmkyFeWmmM1k8r8c8XqDBvsyzV5pR1YnsXCUMpjxghiIAbs?= =?us-ascii?Q?3NCUnpqWS2hwqiq89q0HezEEwv25B2SnJCz1cXY3YXBx8kKoC/ljIZ/26Ms1?= =?us-ascii?Q?la8w96Halcq5QBtl7SHqwz8Yz+I/mmXloR+t77/gU0pJ8/bM23H4TOQPxc6x?= =?us-ascii?Q?EbkRNhSEaTEYWgYRvZlqtX0x7JJOFrDjTFg87z/oJ42Xm7a8xhJaoq43FGab?= =?us-ascii?Q?CprmkrFfkHwlya8YTbsfp55XYaisEvd51jMfdtUfiZ78fIG4Psv03KSL0NjO?= =?us-ascii?Q?/hoYmnK+3qTTNmZcs3NsNY/8OT8LEfChKI/Y/s6g+1I88rQ4O3Mi9Ex/sB72?= =?us-ascii?Q?5YKfYrRR/1+f/aMCREnqWWpUEZiwyHzOy28qm0jyaiceWDH9tWTHE4z5BIgz?= =?us-ascii?Q?1KmHFulWqShIOXQlQ4ACArknKXB5Dx910qlN0kBRyB4ZuKULw2e4+yARKmap?= =?us-ascii?Q?OSLRb4iH3xG4PP5+8+SQK1+UdxQCvhm3KJPJ+Ex1UHFrklTJuGScX5H3sVjm?= =?us-ascii?Q?L2tlQFLb+Oih6+NrqyhZ2To3obIehqAb978cSB3+yYJnGtfaSGcxs0TO/zXG?= =?us-ascii?Q?j9U428vlRRw/aH1E63Bg/Qs4FQ/DPqzBlrXzvcjIjenz4vacHvj1yw2Gf88c?= =?us-ascii?Q?nuVTpdIbHUOWI0rmL2ft0FOmQayw/EII9qxg3nd7C150dLsqOMJYD4p7BnLW?= =?us-ascii?Q?asfpssXvkcLUOMdDqI93/bmf5uXm7kCL1Gxjf+hxHWOdU3i/x1yZCGvBVLiX?= =?us-ascii?Q?1RPw69c8QOa7D7BU5QeMtLHXKSAOZOOamoyC3a2X7/abrgDQq7u1aGk2U28c?= =?us-ascii?Q?EPHpqklnVY6PhSek7wJNpWWTw81ScLZUIbzigmWEKolbOYaRpdoaMstsrjjY?= =?us-ascii?Q?icShk14abnYxZ48s5oBv6THcsB4/SR5fJppymGNQkb3Zfgd8WOMI6W4RfG3q?= =?us-ascii?Q?NFqBstsxzX5HwF6W2ebhqhqoYk18IhegVaGMTkZA7pd+RV3Aw+4gLLjfvcOk?= =?us-ascii?Q?7D1v9gBUsSEy084KTD/iK4rrblzfDeo1CdZz+vN6JBwi5IGYcHPYV2Duo0Pt?= =?us-ascii?Q?AOytRzG3W1ZI/ZK9OOOgbnAZvXMv8aX6uwFNbQ2StQ4Osw14AS56ptunB3pW?= =?us-ascii?Q?6HDFc48aCGsu0JinrkPM3PrKf8ZqdBbnvwhnAZQWADwFrk7hw0+tOvLtc5fJ?= =?us-ascii?Q?zO6+ACdQniZq5lo6o5yfeE5HhzwAy895fkArxrAISRfecPdcy/3Z6SSy4Z53?= =?us-ascii?Q?+7g6bzmf15/6i0kf72I0WBRwyhFnRD6J7ls6MY5Fh6bGGM+DJpGJCojPJZsV?= =?us-ascii?Q?8kq1xLZHbV/Wr5G8mQjj1c8J/EKyJ4GKOSs8ux5Yi1TxoioW37XT2KIO7dhQ?= =?us-ascii?Q?u0GCF8qxWM0=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)(7416014)(376014)(1800799024)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?GibfGWB2NOvAJR2K8+n5yK4GwlwHqRilwDE7zgcqSx+BD2WWvdz0RotJp1n/?= =?us-ascii?Q?rU6OBy/49NCEkpTwB/LnXCCP2KFelEmoxz24kQFDN8PMHTvet8wSxnyd8bSm?= =?us-ascii?Q?QQw5Mfw0HqvcQ0PebPL+STxkes4KS6qaiPHXCOa/unUyZDUjrXSBcY8r4BJV?= =?us-ascii?Q?kEzQ7TdP2iGg/SBUUbsMXxmbC8d5A5+HSZ/u4WAeV56NfCwhEnfPRvdT/Q3X?= =?us-ascii?Q?iw5P8JEDLdZ2myfEzOeXpM4jQmCfOtOKxt+ySnqqSxbtZUO65uDUC+J/o34+?= =?us-ascii?Q?MQ0flXchw2IeX3cL0uADx3a/LIpqL5FT2ecb7+OIBIwvf9y5xLdQMjjYXbUc?= =?us-ascii?Q?cRIRDOxu5ULYuQBoUELzu98MbrbipAmqw+WKjFQRmT6vUw2+xNCgF9aEV0qQ?= =?us-ascii?Q?IG99RxPaDjhGo41Kpct0oNerVLuZ49PY5KrHPGY1bsJGzu7p23ccH/2+ajk+?= =?us-ascii?Q?inuhZb8VxP5QytQYoVKXFzm1ur9EF2y3Pf1xuAFM2ntAexAzevEq/VcZM7/P?= =?us-ascii?Q?QYtM6bx7RLhHKtjjb0UuzLtbipkXiFzSr9YLjRcE5YIBY27K9IOqCD1qXlIm?= =?us-ascii?Q?Zg6t9e4l2luYXuo6kJ8el86dKq8azNEBoIxJ2G5l/AWaO3YA6N4M0RMgmiVw?= =?us-ascii?Q?V8BUXcodOtVGR+xdPlky6ZkXvWdH6gYjvcFxgAkjfLbCfFnBD0bF4Qg+4z0/?= =?us-ascii?Q?FhxtVGnTV5AuN6job4ufOWFWVbG8lq3nstBhr2l44vhXRah8Ud8itlfaYxzq?= =?us-ascii?Q?F0Y1UXgK+LOFo4KY+UB5pYFGME+Gk68vPgpTjr35PgjtWFLfyX09Ffx4LHhx?= =?us-ascii?Q?26/0/L78IGEzPjd/4oPjLHuesv7AJhlcQhwDWCiZTl0KCSavEz6IKhUZI9wH?= =?us-ascii?Q?XX2lx8d5LhYNWKfFqDzjotEy+J/WAAcK2UNRljVK1HPKMLBoFChELc7WLS2x?= =?us-ascii?Q?GPbhwqT5fQvd4QiB0OazQWpfhMfajbG7+XQkHC0n5NmbETUW7mZYWHlb88iz?= =?us-ascii?Q?SyXeLfk+pvHXmTj+D+dNQiTyn11MB/dgfj90dYdE/JmyPwskSQ61hWq1M7uf?= =?us-ascii?Q?4lhWnF1ajhnQ1SM24jou6rUugliW0nHgI4Jnss/jVYXteB9Qya993R+0HDFu?= =?us-ascii?Q?bWP5oPdGf6QC8sKFM5KajSUblcPmwkTthCSH13KbWbD2j8aWnHqkxCVi1YGt?= =?us-ascii?Q?I6aSXRT9rdaQj0raj1awvXZhCUHYZPhQi2XzVcqTzCwdSedHNusW+vUqIpx/?= =?us-ascii?Q?6/IpLVSpIY8Kkfw2rqGZKl0hy/SnOJAhYVvktoYTZ08Ny0ZD4yrwavB/DYof?= =?us-ascii?Q?KuRVp/c6D4M9kdpBvg18L/3hznRcWBP9hHw8Pb1y3BT/gmalEu2hy/sIcQ0X?= =?us-ascii?Q?xzTdKYQ7AM0sgzM26by0ldGEwvi7SXVS0RQ+5vyKoBIGr29c4PqzK17S9++V?= =?us-ascii?Q?yQdSRelbtKrL75Gke2bRZHWalKMi32bwi5rNLinfBapSJuc3CkoNbhJ9oYlP?= =?us-ascii?Q?euBFa1nue/ECgv8q6aIuYNoztHLJuZdrOrtc1iOefocUbGrI0xNkDmtCrmc+?= =?us-ascii?Q?JTYPg7hmA5ipP2L7yL1Di7aG7TL6jqWZuFgXzPT6?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5389d765-d992-473b-9e7d-08dd63683127 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Mar 2025 02:22:11.0591 (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: CaE9fkNEamDrin67COYSjIrLkOxc2ziPZRjUrXAMzHdJPjraXt1MULzur6ozxHkRGukxXtjC+R6yOzAD+GftAw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5997 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 | 7 ++++--- kernel/sched/stop_task.c | 2 +- 9 files changed, 29 insertions(+), 25 deletions(-) diff --git a/include/linux/sched.h b/include/linux/sched.h index 9632e3318e0d..08b1a611bbd5 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -609,7 +609,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 9aecd914ac69..d19e4b7a0020 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -6035,7 +6035,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 @@ -6047,11 +6047,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; @@ -6081,7 +6081,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; @@ -6089,7 +6089,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; } @@ -6189,7 +6189,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; @@ -6220,7 +6220,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)) @@ -6242,7 +6242,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 38e4537790af..3f7fb7251805 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -2421,7 +2421,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; @@ -2435,7 +2435,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_active(dl_se)) { dl_se->dl_yielded =3D 1; @@ -2451,9 +2451,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 5a81d9a1e31f..636b08977d19 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -3113,7 +3113,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 1c0ef435a7aa..734c22fb0e2d 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -8816,7 +8816,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; @@ -8854,7 +8854,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; @@ -8933,7 +8933,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); } @@ -8943,9 +8944,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 2c85c86b455f..01e9612deefe 100644 --- a/kernel/sched/idle.c +++ b/kernel/sched/idle.c @@ -463,7 +463,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 4b8e33c615b1..f946a4b091e8 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c @@ -1735,7 +1735,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 c8512a9fb022..ef6fbc49449f 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -2422,7 +2422,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: * @@ -2432,7 +2432,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); @@ -2595,7 +2596,7 @@ static inline bool sched_fair_runnable(struct rq *rq) } =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_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 058dd42e3d9b..1c70123cb6a4 100644 --- a/kernel/sched/stop_task.c +++ b/kernel/sched/stop_task.c @@ -33,7 +33,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.43.0 From nobody Wed Dec 17 19:07:53 2025 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2052.outbound.protection.outlook.com [40.107.102.52]) (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 875F81F5FD for ; Sat, 15 Mar 2025 02:22:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.102.52 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742005345; cv=fail; b=uQH40AaFJksA4KanGVmL9w/Nit4yjqxKPprfCWLvhlyRey1rL7iVyROIO2HQ2OcJNEpCEVA4sN1M4tlR+ycNBm4GvCxK62VInh03MTcJIMO3hACJHSwxYE3RhATe7+x9cp5D06jKYh2Y6t7/20MU++UNynefzFaIFIV+cTbbtD4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742005345; c=relaxed/simple; bh=hEhcu90qgWVqT/ZFc4OrjtBIH3gojZ3mHIjuVImkeyI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=F8A2arqLVEfXNVKAjVgwP1z3xU0ZXLdQIkw2NUij3EIgm8yvvRlx82Pg12Jpmr7H2UyCX86Z4+k/qxIYNhjt2c9QogCfrFsYSV/NL3K9Ls3RU6vfos9ZTcT/7J8A0sb+tJC99kaAKFopixGeq1diU+pnHRvqRSsiH5OCx9EWWP0= 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=PoaPHVLO; arc=fail smtp.client-ip=40.107.102.52 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="PoaPHVLO" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=BVuiosl0ZNsNo2q+NtfFbFG9BwBwemKrZ702vIsWFJFrBKne+b9oDCIymX+pyvjku+Y/ba2G4nPTMw73Aoc+cMCpoaF4Afw2egfBDERJH0G9Gv65i7lE6Vw7O5m8iUsTyIAqMmIY09vB+r+qnxa1vbiCY2Xr8mFsA6nub67QIbDn3/PpcmgvKkfZdbNoRqBX6Ijv/dfRqOpFBWu8anpASy9Fw4oRLpfx7yzF4DKIru4qE57Apmq6ZOYSlrY4yO2/+IFDlZGSgwRAZjFKiI2QSiGn2hXkcYvUia4grXOI0K1VsmSw24u9g5YbkSW25m/mK63Zlz00We9NEDoISM/7Tw== 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=t6YjNt7Wer+tEmh+QeB5+nCohNVxPLmxi0HlqzNpRAg=; b=v4IBhhtntUEvcoXFmrjQkzJ4QhCb145kUMMcxdXu2MJpYLnR1ot4a36PdeWz6FOh4gfoWkbxHVoJ9jza0uexvMYigFC1Iggsm+6QeAteGjSAw9WV40bImKzRn1NRXPvdRAhj7oRGYC6lbwNJUdxJceKAaEogVTcr8uHDjhhCCTgNOLVe+HgV+Txj50byE3XDkdZQdzICAlN1PzPpIlNNHfbiYYn3oNovSBf4NAv2PSkeCMCxJ0Mb0zQmFdmBqi20w2RfcPv20KNLLVdgg5NnNU4SbeuRRRb59v5mYiiIO3cMoGDsScxn2ooqRdunDqHfZXnKFR0j6RFTiRYGhfDZHQ== 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=t6YjNt7Wer+tEmh+QeB5+nCohNVxPLmxi0HlqzNpRAg=; b=PoaPHVLO+YIkKP4JiL+ZTMUPEME/f24Gl7TFzpvT06ZwedTMz3BZJEPS2BsVYdQx63SenRL2+TWtJO/P4X9ECLOsIJxJrlD90sUE1nfMxP6ma2eiwEH/btzGvQLhxqmnvc1D5+ZNo5/18e/J3Jr0+BSGL6U+q7jox4NEAPI9iE5NajYQauRVmeVJZxNX81xOn2Jnt23iI/Vhd3grJAX4iRKeNzfcyZJUD7t/z45BuRE+haIEnBdsyyR9sB0FCZjE9XYSlYnAecq6N0mfz3y+Ufc3he4sBUjTI6LjnkFmRmeuU7LBWUqJRz56I9XvyXbRJPwtV0nLVV9o5ryV8f3LsQ== 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 PH7PR12MB5997.namprd12.prod.outlook.com (2603:10b6:510:1d9::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.28; Sat, 15 Mar 2025 02:22:13 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%4]) with mapi id 15.20.8511.026; Sat, 15 Mar 2025 02:22:13 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Andrea Righi , Tejun Heo , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider Cc: Luigi De Matteis , paulmck@kernel.org, boqun.feng@gmail.com, David Vernet , Joel Fernandes Subject: [PATCH RFC 2/8] sched: Add a server arg to dl_server_update_idle_time() Date: Fri, 14 Mar 2025 22:21:49 -0400 Message-ID: <20250315022158.2354454-3-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250315022158.2354454-1-joelagnelf@nvidia.com> References: <20250315022158.2354454-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BL0PR02CA0037.namprd02.prod.outlook.com (2603:10b6:207:3d::14) 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_|PH7PR12MB5997:EE_ X-MS-Office365-Filtering-Correlation-Id: a47ee941-f99d-40ca-8ae7-08dd63683299 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?eVwXVvrLebhb/iJnJS0MiuQAdxdQ7gdjU7jT9CFRkf+CGkYJTyb4HluOTuQx?= =?us-ascii?Q?UQBvBnF3M58RrBozUJAFlevhbOJPsaaP1wGfQEYXf8MIzBD7/HkoRXIsMyHH?= =?us-ascii?Q?5CYXq3fpsPlScUOdsTAuP2eLdx2WjUACkpT1UBjVlo7EmeH/HajmY25godT+?= =?us-ascii?Q?91WWizG0jtqrwJtYbfeTYu8NJfvEQlrutBoMrh/cu3+q7aup9KmYHOvviVQp?= =?us-ascii?Q?c0r5s9IVH7xZDRb2bQtweymKByWuy5DlRMJGs4zURhvEVULsy2UqJSiECLwH?= =?us-ascii?Q?xnYOwC5LzH1LUs+bjTtupFvXkFieHdCgvRzrxC9BDAX1eo+cwkVcMx/mOWG5?= =?us-ascii?Q?vJPEv6+5qUsRkOEHkrcD4qbszOSpkrFLqoVPGPvZeYhUPnl3apwLmF+pHzFY?= =?us-ascii?Q?MdCxjNdjeKXhQ8WdnX5NUwJKFeVGYhKVUd/GRrXfFVuIM9/Xm4c56Ti6hlaR?= =?us-ascii?Q?ztIljOnxL02mXIr7r/p6vPCX3dFmQAMrOza3j9X3bCghkOa/JkI3vULTxnOr?= =?us-ascii?Q?TvnjRGSj9H4Dq1SZbfYb8Fuf6/B7J642imnosuUvWC0TaLZpC3QewZ+TEZWI?= =?us-ascii?Q?hDkwKK/pRW/A3XX0n+o5Qir9ioqQSOCs0mD2ciaRZXNzlfptGcTZaxkwcGkf?= =?us-ascii?Q?4Lm+LBV4MKVlYmxe/crkwVictNHPBvbhn07hbyuITsEA8I3QOdOvpCDhiJSP?= =?us-ascii?Q?eok59eID9SiDJ2fDXhN+bFTVzlyv1zgVoeF40RtDT3mgA52Gv+sCCPyUG0Ev?= =?us-ascii?Q?mbO6IkCXBTP13cV3pORqd+tMB5xXzOm/BnmDsx719q3qfrhjSoPVkSD4Swgn?= =?us-ascii?Q?pH/xGuvRjAZMbKIFvxT55cdS2Q+c6tFfbgrn0+k/vCYurtwhLKcJi8L6rV9m?= =?us-ascii?Q?fmq84BMhxq6tOOCk0hPUdCr4BxrqjtWnk6/c7a5YFcQwhZQBTsg5k6Wd6Kz9?= =?us-ascii?Q?767ES7lK298uObJkEXoNuTHktOry7TNNIeBkPTH9rJmtGX4C6PsGotOopy4B?= =?us-ascii?Q?CsKCCLC7mNWcAU/FS06Jd1dRCqfkjMYIfShZczBCl8HiuW8lH2RjSFr9fks/?= =?us-ascii?Q?DdZOiNvBNkqnlupote/gP7OwtSAkOoOE+Hy7WyNQq82agrmJWmuUZzV6mJx8?= =?us-ascii?Q?nH4kaE5NWYQWcbP0/2qCMHVVxGkCJIp+mySqh76FgIG0kFewNUMSFbifWZAV?= =?us-ascii?Q?3TbvIlVDBsuiLlJ1mcirDRsRKxGUtGahziMsrWi2UZAAj8EIPMxlBvFtvyyc?= =?us-ascii?Q?+80dpkcmhAbRWEECo+IeNmpBRPKLiWuSeXoj2OM/SrTBugkQQtWOsjqUvP/Y?= =?us-ascii?Q?Omsb3cRL3gGSD9OCuJSI+HQY8A8T+N0PJppfZQBurwHOZAyc/5QUZ8VrVRxi?= =?us-ascii?Q?PPV3jh5chozU1hrTzsn4pm3lt3w2aeiazAEJyrrGX0pgFWJiouCflilo/5vp?= =?us-ascii?Q?K60+9D7EjhI=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)(7416014)(376014)(1800799024)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?HEYn+Tg7pPGnsCCOTlJCTsL1r90PQ5Vuty/wu0wlnfm18hgZQxRSrgovAnHL?= =?us-ascii?Q?QQjUMsu+t0xlaZOlIraqbQjOvIk0K/te9wnoGpMt1cGwnpTkO+eiiyWe4jmR?= =?us-ascii?Q?ieHGSKZRAB6LRe7IUtzD7I6P6gS6EKUVRc57FiwPTM9+OCBBOPjLzY7ZOPxa?= =?us-ascii?Q?+9I8xrac2VdR1mBXIr/nWLI/w0/QCHx6WF/1Ftg6OJDpBfk+82jSBrbDMFFN?= =?us-ascii?Q?OEUIa+vxzj6pqdgKWeeHH2z7oWaPahdMuHcDdTLpvO7A+c5UruRj1x5KMMDO?= =?us-ascii?Q?MAqS2sJAkYmIjFyKhDUK6SKQtethSbvxKBVCkbH5xNbPaAMLzGlmpXgHAZC5?= =?us-ascii?Q?LcNfeg34z3185LEJwZLX+gRnA1tx3rlYPbva1XH9XOe3a/tVAVhxHaf7zaJb?= =?us-ascii?Q?IWzLt1wZH6JXbtWIGElnv84aLzyHs2NIt4PkjsqMmZCR/gRMSc/yOLlBPLGp?= =?us-ascii?Q?MXn9su+9ZJCx/u2jZj0c/3LB4LuI2Z7AUjT2NsX8zJipllyriCv+oTHISnx0?= =?us-ascii?Q?SpDEirX7+ubmI08bY1zyZr0aeCXCdHTcjcui2ssLeMpaWmEU2XI1O5WU/1Xb?= =?us-ascii?Q?cBFvJPZsfVLv51iGOxcsY9TZOYprl2dd07CKs4j8O8GI7yQ89vZWjG1mMGXg?= =?us-ascii?Q?Jj2fzwlUVHguue3Ne5EgDYj/s1lowhA7Kb3uJ0EwpA5MuLi4OY8WDJOZCEDV?= =?us-ascii?Q?8zbto3P9RlzAhYTjwDjy/a5XQ/CHWeMkXDlZQVgXxS0JFvHpHThUdYQB9jOQ?= =?us-ascii?Q?4BRFS+zEuxuCiI3e6oBBndSKag/MJQFpINNTSzdzUqGOmENUR4/duEpTtjcm?= =?us-ascii?Q?h0QInBq9z4TK3GoSmcEW/TkVaCHuE2M/9Qi9OQHA/yQyfYJledSFJaR1SeyT?= =?us-ascii?Q?C4GEAfKrnfC9DPCJgAVgaKd8qEMsPZwuYOhlIC/Ro28GYf+iJMl9W5Xh3bEM?= =?us-ascii?Q?h59dQNb9RfmrntVU7au74F2Dxpwn0lvVWwjsqIsCwuYr4ID5n4GzoBZOxXG2?= =?us-ascii?Q?nrbNmMQW8wD+jmG0BIsD2mlC1cyC72Ww9KAWgjE+SLxUOQxpKNEgElAzD2cq?= =?us-ascii?Q?shQSh+YlYkB7w/yYDGLwFQ3GC3eQtazsyn+p9INw3jL3kXZGgIgWoLCqeFwr?= =?us-ascii?Q?BRpM6FXj0OxVUyd94Tt5b1EY5KyZSDGSprvM/NcygHA4fxD18fxXA/1ViZMX?= =?us-ascii?Q?4DP0b1726ZdgC2Ha5SpF0F+iTas3GQi01Rb614hrY1K2MLktw979knI+HrPe?= =?us-ascii?Q?/cqCvZgKQqQGUva5ESUgFlTHfcE78f572uSCriwB5bKqtpcnW5OX/npxDMxC?= =?us-ascii?Q?gDvXsHZ2WNkTqYkvFMpUaPzK9mIABs5YGo2ICELZjCLBAwf9T74CvmFJ6l76?= =?us-ascii?Q?CvG6hD8xGhFFZJq+C1sArlAwiJq6WjZhcv4VBUaAqKpe2vdUbLTJPnE2xdf/?= =?us-ascii?Q?PKoPIXz31PnLTxT0PMYFYBvc6ZciXbCcr6Pra82XCnHn1UAccz6lX1P6O1nV?= =?us-ascii?Q?SBmtg6jwoVNlZYOwSjHhkdQ1ww2wq2bNGVXG/dJD/hTQUbn4oZZ1VJTUXnfl?= =?us-ascii?Q?mEW7XQBRQJzOHHym4vsuLY9HYcqhr5f9Y6x4SuHD?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: a47ee941-f99d-40ca-8ae7-08dd63683299 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Mar 2025 02:22:13.5128 (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: 3UmndtZx5HuXVwAI6foM1QxjZG1T3Gr/JICWzKn5oerWHUwu/fohy+aey+mfny6Q1jR1cfltCH4bhTdfVXbKVA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5997 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 | 17 +++++++++-------- kernel/sched/fair.c | 2 +- kernel/sched/idle.c | 2 +- kernel/sched/sched.h | 3 ++- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c index 3f7fb7251805..ef592751417f 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -1610,28 +1610,29 @@ 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, scaled_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 - scaled_delta_exec =3D dl_scaled_delta_exec(rq, &rq->fair_server, delta_ex= ec); + scaled_delta_exec =3D dl_scaled_delta_exec(rq, rq_dl_server, delta_exec); =20 - rq->fair_server.runtime -=3D scaled_delta_exec; + rq_dl_server->runtime -=3D scaled_delta_exec; =20 - if (rq->fair_server.runtime < 0) { - rq->fair_server.dl_defer_running =3D 0; - rq->fair_server.runtime =3D 0; + 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 734c22fb0e2d..f6511eaf0389 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -7006,7 +7006,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 01e9612deefe..13a3d20d35e2 100644 --- a/kernel/sched/idle.c +++ b/kernel/sched/idle.c @@ -451,7 +451,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 ef6fbc49449f..b3d1201b8f3d 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -392,7 +392,8 @@ extern void dl_server_init(struct sched_dl_entity *dl_s= e, struct rq *rq, dl_server_pick_f pick_task); =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.43.0 From nobody Wed Dec 17 19:07:53 2025 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2052.outbound.protection.outlook.com [40.107.102.52]) (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 56F7718B47D for ; Sat, 15 Mar 2025 02:22:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.102.52 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742005347; cv=fail; b=IT7qxHY+vzZdDWghTfn5yCK4+/TCBpUCVFQOKOhMlyp1gZBQVbIAm/hOB6Bu52Y8ulQYaSCCkTP3tXQc/tsS9mDiUQObMjjiJ/ogQ+uAgSGVzQanOYS+juhRKir22syVCoEd/lK4Qc9aVkxjKesp+WLlhW0gJAOf8QSmOF6eWCw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742005347; c=relaxed/simple; bh=sjkCxBv4wChqwOoOnlkWTii8WgtsuYXysunW3WasNeU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=QnZFONc+xTXuF9VBdXsiC1FSngW0+JVUCTiKnRO1MWr6tHvvU8UyMMmIiFoJueB0Ab7oxqJ9pKN7r4k2t1Kw+on7+mHzXBostfiA5BTK0PsV+2HHtbWNznxtWje8CkFlBOiQ8gEWNdw/T4zkpJy2R0KzQZfV+pzQi+VrW8Px+iE= 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=VaWCgXAE; arc=fail smtp.client-ip=40.107.102.52 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="VaWCgXAE" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=l+HuAz327C1uuNUojXT6jPO/H9a0U3rJjXg5GweYmeOcOGjySae0PkJn8V7Y7CVF0VsG84OduWMEP0QuSRjfXx0B/yLlinpJ0/TDzun6ZwzA1moWtDsAs7jsc82P1y37hRDU/afpcMMdpjLQMHNOsuLGwGxN1HPcZHknyqt4grbfqvEjDDFyjJExD/uop686QDlgJqp8G8JRES2Tz+R0MTPSjrbxhqtMIWYRyKRg5m0cQjSJ+A4xxxWPyAnbgB9L32MBSPr+mehNbQPJthiqzrykr/6c61nNWeMznsfsPb1+3k9On8Vj1X7mHCbzK2UxQJjg/SKYempznpAofBqDXQ== 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=ZKcmYMSlI8pZdX+fgHpqivlINFtySA7Mx2ptqdOHI64=; b=bHhjgjeiq91+ddz84/j0ITCaaBgxcsscrKZVcrQyvdin7QSR4WV+wd5xRapc+bK+9ySWgDq1sxn0cTOQjgWA0f94de4A+kt98S3+Az9zlQbhyq9Q3bS5TbbIP8MkK1IxqSyAmI+h8UQwmyzGtCWgttdv01XN0pLe6vifIRzRUm//TIwPKo6+p33xjYM7d4yu3JQVACtbu7ZOw+NKN8spWbXK+Wpp00y10nzhqSzQO+oMPm6JBwo67iTsmLu63+TeB+tBNR7662nh9ywXs+JBQQbY/lAJolFqMZNzuoik8WFNwQToZPrt1f+GNiFNT940epUgUMCqIlnM6eTJZKcH+Q== 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=ZKcmYMSlI8pZdX+fgHpqivlINFtySA7Mx2ptqdOHI64=; b=VaWCgXAE5sMUEG2hGLDkgU2DSFQ9zGzy/ltGxT3LeDhq2tJOj8XCXImzS3b86rAL/VYej4j8ykiNOoRcWOLsByrB4VN2sw25d5KuLnlyroJ0GcSoTRJn4fYI1bdTCxL+jvECJ7vqyZfdyfsFF3NnXFx8shEG2rM8OzYGuQNqnTzquPTdrXweGRTXiHMK6BqiQ4/TYEKskB0GvSVx6X/ZsfYM3xIwV5/LqX671XNOEDCagsOp5hkTQFYDStT/jeOKt7/601/uGih/haOeGi+uSTyAy9AmyrotI0zYW6NhsAdqNW0IKut6tgUi75he4eEXLlN+3PeOfwXcecih0UZ7ew== 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 PH7PR12MB5997.namprd12.prod.outlook.com (2603:10b6:510:1d9::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.28; Sat, 15 Mar 2025 02:22:16 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%4]) with mapi id 15.20.8511.026; Sat, 15 Mar 2025 02:22:16 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Andrea Righi , Tejun Heo , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , David Vernet , Changwoo Min Cc: Luigi De Matteis , paulmck@kernel.org, boqun.feng@gmail.com, Joel Fernandes Subject: [PATCH RFC 3/8] sched/ext: Add a DL server for sched_ext tasks Date: Fri, 14 Mar 2025 22:21:50 -0400 Message-ID: <20250315022158.2354454-4-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250315022158.2354454-1-joelagnelf@nvidia.com> References: <20250315022158.2354454-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BL1PR13CA0199.namprd13.prod.outlook.com (2603:10b6:208:2be::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_|PH7PR12MB5997:EE_ X-MS-Office365-Filtering-Correlation-Id: ba5be301-2db9-455e-42f0-08dd63683423 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?s6zjkldZDamMX1fO2feQjQNVtjZAt1WF9tTyFo6V6IV7vvG474wtHMZHgz6z?= =?us-ascii?Q?Jg1RWtEjyZvvSAzj1FD3l0cxCTCdJyhV1tOQp+qbJLZp54ASm39PrGCRXLhQ?= =?us-ascii?Q?BS2E2us5ZZp8drlnmqi69FhKXlV7BP1MY/KxQYidcsCUHdci+nINfjNO7M2d?= =?us-ascii?Q?WG8pR3n3oqb047JUZapBmBpSv3E4wmyixTTkqxoVSZd/HgAk3jQfyJqRnZWv?= =?us-ascii?Q?eteAKQmIh8tndEWuckfDJtHWMctImUpKjDS+cZMJlPzKCWeoCUT5X8E/+9L8?= =?us-ascii?Q?6ZvzNnAhnYxS+s3anyhemPBfdhHnAiBpe9vJN2EHZIDx2GvjdVEt9lSz3jUu?= =?us-ascii?Q?jBDABnbdY+suKRAuJw1VSPuLYQA37r/9lIVcmgFT5rQMU03XQGzhYj/Jf5+y?= =?us-ascii?Q?zUKeiztzc9kB74Gaa1eQdnQEnDhcGBB9Sd97mSKaPkZYB7ezAT06aXdu+Vgt?= =?us-ascii?Q?PcAy9g88itQ3YSscjDjnPD95QBBpyRUYOyj0us8IsFDwD/nkfCki/qcPSAL4?= =?us-ascii?Q?8qGCUgH7dKbfD982Qj/If9ef6vqntC9koXJ7dUf+DPUXUqBGmETbQIvVjXxD?= =?us-ascii?Q?+ug6kWj9tVJqBqjWU+qKKAVlOzQ23YSiF5eB+oyKYXiDaFzYr3G36UkpzXav?= =?us-ascii?Q?TXYhmxrYkZBxT1pSQMmTR7qvPegHw3pZqzphMvEk9mwDSOsMSTVB6eqyN20l?= =?us-ascii?Q?F+6AxP6OZiAj/FsDK5hGiE0J9EwU/FP9/5BR94JV69eyuUW9YWeeh+sItaiH?= =?us-ascii?Q?bkDVN09RQqwyqQn3FrJzEn/vieK7uQRgCnM1c6kQeUAmmTEsTcftG3WHlfdZ?= =?us-ascii?Q?TIFoHmsyAoRV0pgkU4iMto21VEeAiPR7NN6nUG7MmJJ6w0yqfKkeDF5a0Xzt?= =?us-ascii?Q?mxZcKts/iKH5coOZNJd91+nDCS5Dwls7fNJXpWBjuc1c0H5QpEimdnSW3gJE?= =?us-ascii?Q?CkJAmFf5zU5OR+VF7KCEVCU3mSnWb0C2/q5b5R7ynPYJ/yN4AqhQjQz+ctPP?= =?us-ascii?Q?3KFdK5kVC/5HHzqnvloc/V17FRwe1xUdU2uCGm7j8fjOXSc1v1asgD77AGKA?= =?us-ascii?Q?1HqGATX3FxrsSTF5aYad9hyz5PzTetDF+VC8ZDw819Hdcd57r0zdYT2tY7xm?= =?us-ascii?Q?Re0iTQYU9ktp1bdf0aLsFwA3lUAG/S5bbN0VZWYnF2S4ZkHwEC+s96Fc1/3/?= =?us-ascii?Q?jqypf3t6VphOXHW0CBfJAdfcyjjTxxVGcvJic0gfmjC82qCOepM/qoguGI8G?= =?us-ascii?Q?xLGCzUNv/sQ1hth8EjJQBr5zH7/yUGWdagoWJQfn+pjT5l9qxBAPMH2+Um5z?= =?us-ascii?Q?YFuj4YbJA+nKcBLhXugHlY3D1uXJZPzJfNRJ7P8GLLyT1iLcCjR+YuTSIoky?= =?us-ascii?Q?cIGxiGTx1TxvFyX2T2UjAG0hCpmGotgc5j8nCyStIF6XMAP3qun/VikKLSBu?= =?us-ascii?Q?lNNr7Ei5N+4=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)(7416014)(376014)(1800799024)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?NMVvoISsSTfkplMgmcpvTmjU3MXd108RWLb58CQPVE+OvnunfPoj0dMhOEKl?= =?us-ascii?Q?EsUqiY6lkU8XMGXM8n5fm9NX0HufZ/KFE4vUGeR2cBw7rCBZycPECTC9K+j8?= =?us-ascii?Q?vy2z7ZvInWrbk3+GEb+FdZ2viOiNWTlWWJc3EbxMgdoZOspEefHeaB563UDa?= =?us-ascii?Q?z5y2Ja8Xh38AJmHQhlpF/aVjeiG+J2LcC5yG6KrfCzGavNxQMo32llvdlx1/?= =?us-ascii?Q?xNRShkAfBvoNS+LmaUaoCV98h0ogGGLDs0JEdu92Iig6/k6jZWDscwpFA7P8?= =?us-ascii?Q?Yn5qkb58EqO7XwahaqSJXjpzJtDJPC4ot3QXv7u8WgtrjhHxFsnQWAfG/jv1?= =?us-ascii?Q?q7LgpXLjJkuUDgVUxthw1xU+6oDwSc/msM8D3NGqNnrve5Qz1srl2VjPZg2g?= =?us-ascii?Q?WHNFqri5i3etoFTuMxQtC6M/C9iRU47qRrd4aJWyfRvt4jfr7UjpQQYqHUA4?= =?us-ascii?Q?CxkciDI7Vx427FX8gFuxKMCTVRLGyP9wUGmAYFMZUdsXj3BhbzlHB2hapXRR?= =?us-ascii?Q?Gbd/LeQJxWQ2CCsLWaaJEDgKc6D8Rf8YLGrUjUV1L6fnLPY6J/aSygCItvD5?= =?us-ascii?Q?N151XjvgDkbwl6mEVVy+hgkonV9W39BWphj9kpbA+mW0nim4zN3AVy9GvOgP?= =?us-ascii?Q?iqO8pd0nDjWkbAaxy1uNBf4q3F1zJTg4oohQPupchmGrcsWLtsnz6N0iakTZ?= =?us-ascii?Q?Fvdlvlo0J+3Rvhk/LkbUm5NxiF2452sUd21krrkp/HXHDHPKvxHmAx5ZUMdm?= =?us-ascii?Q?cDyOFfhWbAW297hJiEoDjWQBmITibnOAVHEpJ04YqmIO6ob3/C6DMY6+c0mt?= =?us-ascii?Q?8gadbPsKe/SZTo5hFuYSDI3jG5L2eiDzLIDjsw6xY4TzLd/hHQLccehV/MSN?= =?us-ascii?Q?LNhfy17BrTiuBJB9W1AhcrB8mg7TRs9rg6NumVmZxj1hnRJFYN0VA33AYE9Y?= =?us-ascii?Q?6tgMs0J6+ZnBhV9KD/PPIEBsigerjHc63dYmYtTztg7R8KZsxSgfgBEaydBI?= =?us-ascii?Q?1/o5sSP/Dto5odCU5a4FxKBoTpSAOiBCmsJlNFKI0Awt55SPQoQbmOGeCSh2?= =?us-ascii?Q?RH6G5cZIlg63sIuLD46gDXdEQy1+02jZhm9Mb6h3Nk/ADMgP1YZ8TJRfGwew?= =?us-ascii?Q?9qtBC8y8pOJLqr7puJ4T3fixcYt4eeMs8dhBXWw0u6yvd9fKD97zdfU47jJE?= =?us-ascii?Q?tzH9GEUf5XSkstq5Uu02TkFO90yIxkho6tTZmGX8/g8AAtAD0rfjTFVE2lCd?= =?us-ascii?Q?jF3NWoi9EDMrWdi9wtmxveRAWYgXHkgwnIOm0ssLdtQrrA7V4k2gm5CS6XRM?= =?us-ascii?Q?SeSUb2KXT4mhOQYhndVcvAxxRirSLG3eNy0mhTLyrfT6gXx2W50OLOomA1Az?= =?us-ascii?Q?nLioyVLGVnqoSXBAUsZ4A4bdWa2f8In2+HAihQE5+AXjn7FW/j6/5/vBKNnt?= =?us-ascii?Q?30CrJA4rbf9+ev8sNFt149WLDFnCgZsWJVOc9X1ERoLcjufddrb93Q2PbJU/?= =?us-ascii?Q?nTE/WYxF7Oz3rAaxICmx22FZ2prpjeXuTqTzjRSemHe1goxiaM1CHzXbeMT9?= =?us-ascii?Q?dkLg6/085nI1c7xv4z2fRCYUsokCOTQboSZzaR4z?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: ba5be301-2db9-455e-42f0-08dd63683423 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Mar 2025 02:22:16.0213 (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: JuWQuFd1hKkNmc9UAAKShSbwSozHy9Yvle518RP7qYolBGJJ2ArhC3V5vw3ZpeG6jil3lPtMnHsGEI19nykTUg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5997 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 d19e4b7a0020..09bff60c22d8 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -8617,6 +8617,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 ef592751417f..bcb66d9692ae 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -1571,7 +1571,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 636b08977d19..553d3e6087fe 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -1677,6 +1677,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, @@ -2147,6 +2150,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; @@ -2238,6 +2250,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 @@ -4207,6 +4224,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_ops_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) {} @@ -7440,8 +7466,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(). */ @@ -7793,6 +7819,38 @@ BTF_ID_FLAGS(func, scx_bpf_task_cgroup, KF_RCU | KF_= ACQUIRE) BTF_ID_FLAGS(func, scx_bpf_now) 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 b3d1201b8f3d..8421eb56c50b 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -395,6 +395,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); @@ -1141,6 +1142,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.43.0 From nobody Wed Dec 17 19:07:53 2025 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2052.outbound.protection.outlook.com [40.107.102.52]) (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 3F47B189BB5 for ; Sat, 15 Mar 2025 02:22:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.102.52 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742005348; cv=fail; b=K03z+BYNs9jjf33eUbFiLXNTf6z3Wo5+ZcTxLmOPEDZ2ZZ1WohVKRH1ajzxwqkBra0o1C8vnyF3yVQ4Bww8o0Ib5R+2L6ulRjc912zydapXaSUdkL75GUqXrqr3eZQY1vhoeNM4ZoJ6Z4aRBFDfz4xC07UowxGa7rEcKCn9P+jk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742005348; c=relaxed/simple; bh=FA3/30cdCJ2KJkpIGNjWuYm3nTuw+fQESsE9GdJqOfY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=j9wndFfbYixrdp8YQJKB5U9lshX7WnFvsnL60uSL4mIKDhcB2rEYOrF3S8Cp4YS6k7JyJ1ZuqtHbBH9SfoAYbnWWV7JiEy+k4ZApo6/tqmo+LFkVlCEIF766Kn2m9usBP3i71QRE4ygrk+kkssNyRZbVx0Hc9KrxUWkH8Wm2TUs= 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=HQ5Iuav7; arc=fail smtp.client-ip=40.107.102.52 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="HQ5Iuav7" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SPi3wdUSkCsjTdf6E8pVgzsr16uhcZdoqey9pnm/KaJe5HPvNHZLh1kIpYz1kt76KXPMzEgVgswtNUndZ3MC6WrfvRhsugkG8rkRUnIFk9pf/YY4AcGAyTrKWtIJE/2EOrPiUdmHUkFoOBbLkUGXK92BGLGF4o0UflxCDs90P14AamXvYew0zsfBiGl8x3tfVGljPW1H0+gQOz2jAOiEfcR0GNjZE0KC5JddQdCsxggcVBeCjyomi2l4uH9Ao0KNdFxwXqmh0hRUkalrbSGamPI3fOUSDLRS/gKC7yONXhbdwmRVGAD33ni3Jd2f0qxJmGse0nCgtlZJAm3bcGTHRQ== 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=tMY56GfI8gNfVBD4JmlSWWK0BR4UtqSgI4+lAJksnO8=; b=QiAbwbOHhidr0+A/Hpx/nDEeyFEZRXdkq22EQLaPw91wZpq4UyXwQqH5NLGlE8QjnQoboNJYdmw1w52wjZE8Ugn1ISat6mEa7sHgTVotV5fB9stlMkRCHgDqUBmESzpfWAD8uKcoZaBXrFh5qBgqI1ievMqPrHlseODaUzIt5vu9Wrq+XQiKZIw51BTal9xNpGEQFgGqaso69mhfUDMhc2RcFKhaUuOro1KCU1EwHaprixsAMf2g6IFlMMyjBUT16z4WxlCo8RO0B1zg0RYkHJGkrxJ0Y7ZfJS8P8Qtpd2tlSi2fbfs6RxWhDOFew5sETlQUfj0q5GJNlWLSUaPVGQ== 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=tMY56GfI8gNfVBD4JmlSWWK0BR4UtqSgI4+lAJksnO8=; b=HQ5Iuav7HlOiH6HJTU3M+oIvDFDiOnQqt0sQwC0xFUyqFl27VY9f5UCANjnSG4LMbaTiLUt9oSrndPWJIL3jogUctSAKfGNbNt2AS4ncPbRK0fiMSgZ18o+Gv2LliVB/ZgT+ZjVFWyR3mDRiaVblJX9+czOFEqbaJqxdvOCQxkQlxX6+xQLphYhCqnMPLD9+1IFZzlCGCdp+v75rPVe5+V8J/RVPRkhBxJLcgj8R8T4Qnm1Q993bUhjEvjuACNVjRIgEgLLFxxGdDCrKVUvprEyv3H2AR484OWSi55AugtDj0PZX8rzaIMOygfkBsk0YaeNDgrh+pdm4kXjT3LC0/A== 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 PH7PR12MB5997.namprd12.prod.outlook.com (2603:10b6:510:1d9::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.28; Sat, 15 Mar 2025 02:22: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%4]) with mapi id 15.20.8511.026; Sat, 15 Mar 2025 02:22:18 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Andrea Righi , Tejun Heo , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider Cc: Luigi De Matteis , paulmck@kernel.org, boqun.feng@gmail.com, David Vernet , Joel Fernandes Subject: [PATCH RFC 4/8] sched/debug: Fix updating of ppos on server write ops Date: Fri, 14 Mar 2025 22:21:51 -0400 Message-ID: <20250315022158.2354454-5-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250315022158.2354454-1-joelagnelf@nvidia.com> References: <20250315022158.2354454-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BLAPR03CA0015.namprd03.prod.outlook.com (2603:10b6:208:32b::20) 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_|PH7PR12MB5997:EE_ X-MS-Office365-Filtering-Correlation-Id: 903ffaac-6272-4992-0ad1-08dd63683581 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?qvYirwrJwyPu374+jTZMOVZDLtnNUi7vM62Tv2bb6Gl5LVaqpyPM8BrJ4J0S?= =?us-ascii?Q?04BzU4sCnf18U64KXKTz/2KRFdOJHygaB4iSpyC7L+whiq+wG/Iq/0nkrxfU?= =?us-ascii?Q?RscUEMUxzrbFCeaeW+GJpGpclaf8ZZRQ4xVqz2oeZ2HVuU37h6NhVJOhTqd6?= =?us-ascii?Q?2NePzXe9rHVCIHfog2FKiBZ91jlFZf6F/JOUg+lz7DLV2R0vPdIXk7vzvZlz?= =?us-ascii?Q?WpAj8qUhK1rACBXQMt2dPeMx7ZNW76CM/vaw4pa4EFv8MXS3PYzL8+w1sIC7?= =?us-ascii?Q?Fi1SoT4MmFFJ4EQv8NNbINJmjpqQhDjgI2uEfzOS8bguAK8iY28cPH4jP1pt?= =?us-ascii?Q?6YdtJjTFcutIg9eFH7/eOO3fwBnJmMMGDee9QCIpK9Kfpir4Lyp0GqkAlMku?= =?us-ascii?Q?lfmvpZoO4bR9AYz5eVeAfc0VK/3oKsYMLXaNsRH6PBm81GCfKNe9POVM15KO?= =?us-ascii?Q?gbqpn7/aZxicwQ+lW8SsnJXZeRMGeAgnERFLJxI1ELmec7R64WLvzJP9Sxvf?= =?us-ascii?Q?rM7fsbxke9mU7n0EKLqwTWdizq62VZTXLL3m1qMSkdiE8YD/reWJmap+hgHS?= =?us-ascii?Q?ZHvjhSonoD/cDCJCZdYsC+PN9vI4I2/Vhr6SZEQSBaqozJnWGDGkooQYqyQj?= =?us-ascii?Q?aDwSo9BzUSrbQa7P3hFGoFDiHLJ+l93yioogc94lhygRKhJ752EC+cu3r3wp?= =?us-ascii?Q?/LmwneZZYWkPNljvstlwgZqVhE1T59TBo7NX3L9j6hc8GHFRnsj1NYpCuqv7?= =?us-ascii?Q?+xFtADY2WjvTlr7J9OFHCmt66GfQO1c9+2BmOeKN5htC7GMaMQ47t1W9o6d3?= =?us-ascii?Q?Gi6SNjfq2Lj9ZaOh5LDwwRnvTKdA4Ro+sBoO/56cypsj5hEeHvbzXOsyJIPI?= =?us-ascii?Q?ZEGl4tQqlVM/3t2n2NsGJdULM/SoPfFqJ4oqUJoOFRgfVklEWQpN3lrBIpff?= =?us-ascii?Q?DoMf5qyy6yiHFGVBw9kty24Ckgfvbm4QaInHYLWfQeyxatdH3hvOswLK3GnA?= =?us-ascii?Q?NLxCKVZmN3c35+hfmbqL1hWcutVN5jfFIFGdlWcIZqVuONmUVp7X7ruhv0kS?= =?us-ascii?Q?ucZRzz6OznhsfgWvl73/73rcV9OR/kzSnxwoiKXrrHRO4KRg5ro5VXgJqku7?= =?us-ascii?Q?hksdm0trwCDrSUzLa4H8/ghB4ac9WOfhrY2qEs2m1SBlPntcRqPEVYdoInN0?= =?us-ascii?Q?mmV+2pyb+obJsRMdkOhzZFMPArllXlyCPxDK/28hHjSoMePUmBgWjAzi80r/?= =?us-ascii?Q?eOO41IR/C2AkfZzNquvty6X7FhtNrZIP6LxUx9W2/84dvteeEANsB1QpKGw1?= =?us-ascii?Q?tOYDysoBnQ9k87qWGForCKOdTpr8+3QqDjbiVlm5DwdfYHlIK1nEo/hVOSdG?= =?us-ascii?Q?fDeks78C5LDfrLp3UN4qm68bmrjQPTd1F050AAMF+HtfVasxKdH0i8W9wlyf?= =?us-ascii?Q?iEOlpgVsR/0=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)(7416014)(376014)(1800799024)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?wmXQJTo8fwGhlITX22qUo+c7U8a/Rd/qe8Lc8ADQz+O1hC/+onKhFtfPntOz?= =?us-ascii?Q?Ft/HqSnPMQTugJgjQotPh0tfEtQ+cZqjmffTjyCZxACOgUdJlA2vhjxD3i4E?= =?us-ascii?Q?DKG5J9ekjhgx7JMovT6K73PN9tgpsNo8IsSTUF71gwpuxV+pbDP1YZAjav0v?= =?us-ascii?Q?d0Th2Qxm3ps3OVsuu+Qkdm8vZcPcwYj7wEil/p2LsLN9WaFiQdnvqVdF15je?= =?us-ascii?Q?vEAo+UZ4ouzYk78KZ+/d0r13+GXfcsqzcCctmpzD0NTTJssvg0Ri+IbhsN1K?= =?us-ascii?Q?0mT2XkC0+lGxXZOiE8tS1qJE8blQgQyr+A2pSB5cExI311vTApn5l+vC0/UO?= =?us-ascii?Q?yhubDTCi57qkNjnR/AhKYMwPJXXnVeG81qMG6vG8KIryozi6g2z5cpJQfoj6?= =?us-ascii?Q?nZTJv7evNVZfkSx6Htr8znvh5rTfuDzYYRmCGD6N2qR093aEqCcwoe8kw0mu?= =?us-ascii?Q?9lTZxeLFJpA6FwV5NuqRovLFss88ELwSrX3Qkv2JdL00N4ccLtph8rwV/GU6?= =?us-ascii?Q?tdr3gg3lZEBk5FhuSyKRwWnTbNPzCkrZ5Kx6RujseFr6Sv9XxZVS4VvrcMZR?= =?us-ascii?Q?LgRib53S2a2YK7ti/V4V+PDZEsitfZmkWSCWdrqoJ+0Ec03gARKIPBRZMV/n?= =?us-ascii?Q?jWR3RyN3V+kIoMV6BUS6+xNKS0LQ11hZuTBO3hOpz0S6Ejvh80kqbHM37648?= =?us-ascii?Q?B2EGNAi2NTcJVGXdk/QhLlnbZoN56tvrRXRTAfhXV1tBAtQ5U59Osw13UHi2?= =?us-ascii?Q?Ny4/74Kxs7GQc+316bXvtLiWidtoBBfx22BPYouUgByFVGLMqDSxm0L3D4x6?= =?us-ascii?Q?BXdZDbAVJxoOXuuL8ls98dg9w75gMO5kUGvE6HocaciOaRKcRBs0ip/MWDb/?= =?us-ascii?Q?TI9DdwBHbTrM79Nb5Vsi3ahdjO1EYmCl51jZY1fIe6sFzB1PoZ0uB9/u0dSQ?= =?us-ascii?Q?GIT1IhXyooUn3yFbcVVcJsZ6vKNDARkskpWgmM6F91vqKM/rKySqs1yntS6g?= =?us-ascii?Q?GOJnO1rNJIGGNTqQBvAQZLkLdgCR2DPFEYhl+HqlEmXaIQQsAglIyLajGUqB?= =?us-ascii?Q?Ouc+QkSUftOxfBO5Mn1SfBVozJ0oc0Fm4UK2E73uUYN4J/8S39GXONlQHUfK?= =?us-ascii?Q?K4uRuw2QBcBs/kWEy57omzyITsvhyoVboaAYreBpHO3PC34R0nQQenDDTrKi?= =?us-ascii?Q?1716yO44yHstoHJY6uCDSe5vKyCXka45IUVkx4R9tCwDZZ/rORaN8DCQlRJk?= =?us-ascii?Q?2sm6+DpgfmRySg9VrTxxjNYiMDxlhmrG7kyApT+GWe+OfG2rXyDu/r7aGCw2?= =?us-ascii?Q?kUPi4SdQvnWTv7NEIzdOrQEepKVj7DUJFpIjkUCy5uTFor+p51TTgU298Tz6?= =?us-ascii?Q?P/+aMI8PGXfGMHu8vrQOT5wLuiAdaD9pKTe3RtHrETJ0IzCTHHPv1kStCFHj?= =?us-ascii?Q?FKd8AFpbGsqqy9vD1biP+4L6xmDrThFq+UbLZByiMyUsHQMKODJCgenYQI4J?= =?us-ascii?Q?eH3a036iGkxwqqfl43rlqOrujRXrVfmX6/wsPrl1wbsY7Vyh5AnUphAZ7guY?= =?us-ascii?Q?IO6uSharMmb4gUMmWE2osQHzHsBM1d4arDNjDrYn?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 903ffaac-6272-4992-0ad1-08dd63683581 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Mar 2025 02:22:18.2887 (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: 1KPKMtVCjDluQH/kMcqepb8XtXtzi59rI3WG8041ziucLNcI0JJc3bjWegvuG+bBJTCGKdGEtWsjo1GeJtFt4g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5997 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. 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 ef047add7f9e..1ccc7687e1a8 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -348,8 +348,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); @@ -385,8 +385,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", @@ -394,6 +392,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.43.0 From nobody Wed Dec 17 19:07:53 2025 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2052.outbound.protection.outlook.com [40.107.102.52]) (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 01C02188736 for ; Sat, 15 Mar 2025 02:22:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.102.52 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742005350; cv=fail; b=MQQ1iRyfvlFUU0EHTqnzZkZ7Cd9T0s1HCrrEc7ISJDXiElYEGdyB7Lhm2acmIIPFQ+CVMpfpWaD3jvLkLMpTBimvpvwGJV2MxlXXXxifUPWDC+9LkC6a4KPHGIHj6f/bqnNcR/uTAFaZxtV4nYdyWrS5ynUn5bssUWP4C0aQHQI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742005350; c=relaxed/simple; bh=EEgecK4kKUT5VoczdQqCkMyQjN47LfP9AvxlWh24PB4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ODXXrMcz3MEhEfxvXZkoMDj+3uO6tMvZn+YS957YGiXccbS0RAqeG0CYp+Q0JcvNi2CkYa18Oa7G9qIczxUqBiz/pLvUPvcECF2PFXhv2EcPTs9l09NUKx2FKKJUQ2cLlNvUdNewB5o85gdxmWpKipunPnKzKMg28NUtVtqMbSI= 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=eaq5erEU; arc=fail smtp.client-ip=40.107.102.52 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="eaq5erEU" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=k3gyftVVynXdWpCKRLtQR2xL6EILOIPe4wKK3MKDKHXIug8DIhpfTrcIX9NkfuytPoSVdyC1l4egVTHTUqMk65xVHkywQtcU0vg52+kZAyuTLlCVxnP49HCoWpxQP9EBCLZxKbsJGG4OW9hqPRFvpX9I34zCukeibjF02h2AgylyJmoYu4Jl3fsuW0YUpbYm04GiqyW+hlW6msCSlouL1tr9Y792Mwc2nt8A/OFCDewivrqbWVkYARrgTUqRzn1h9tT2qh/RNoIeon3UOnixgjEAanBEIJWK+foXwbS086v9Ms1v3oqRCIQi32XRc6CJ6izQlGvavlaDZ5GJgKLJVw== 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=e3j715JQ4L5YJGHWrDWeMYBBW5Rmn3UP/X3tr4cSc1Y=; b=S9uIxv/QmAKZzOls9UdMPG+6m/lDUVRb7R7OeDSnA8f9PrKb1Y1BwFjVDm/hvBWs2bevemd/cXbVBy0ws+yM/eamom3jcKfMtadb7WsyP5Js6I+YEPuvgZlL/I7LMuu3CnEKrOfMUl7oUtKKSqBWgF7bAS5TZRDH99SOb72L9C6iuPUOYRL74ItboYjc6v9d2aawR5s0dV/Sfe/amq2c8bliB49M0LD21JrU8OOsvXAL04xOiYe1HKeVvaCu5Wu9/aJBU0plXCJhvA5TbTK3DP7m4GVXRtxobHF5hqPoSAps4euD9tMgUlzky+ZMyhQTytksuYGpkYHDj3u2tq2cVA== 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=e3j715JQ4L5YJGHWrDWeMYBBW5Rmn3UP/X3tr4cSc1Y=; b=eaq5erEUbJH0chBEoUaGMTRrDAwTCxRwMnnOHSiOPJW2T0i5pZRegeoSS31itULaqMxRKXFm0Yf1v1UNaTPLdGtJ25Y6mtrK8UvbTwmjUGSaJ4p+tEufBOukaSZ1g3W7f5Zz2sY4F8sxKqleFdqGjXavgVK7C+SJFE63U5IGKKeXIGUFtNrbcvJzywfLbceDuPgaXdXL4Y47t8wZHyXHlRK4qqm3i7arjDNngr+I+Cu8GuZXaEYPQq3esDSfA/IaI2PE4ItgIWRhTpBQpwoNbmFRWeB5k+x2w/gbBpgZhvbks1UOHS7CQBbZa6PwhdCy1f/7D/MNkwxz6aBYQsnMzQ== 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 PH7PR12MB5997.namprd12.prod.outlook.com (2603:10b6:510:1d9::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.28; Sat, 15 Mar 2025 02:22:20 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%4]) with mapi id 15.20.8511.026; Sat, 15 Mar 2025 02:22:20 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Andrea Righi , Tejun Heo , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider Cc: Luigi De Matteis , paulmck@kernel.org, boqun.feng@gmail.com, David Vernet , Joel Fernandes Subject: [PATCH RFC 5/8] sched/debug: Stop and start server based on if it was active Date: Fri, 14 Mar 2025 22:21:52 -0400 Message-ID: <20250315022158.2354454-6-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250315022158.2354454-1-joelagnelf@nvidia.com> References: <20250315022158.2354454-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BLAPR03CA0073.namprd03.prod.outlook.com (2603:10b6:208:329::18) 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_|PH7PR12MB5997:EE_ X-MS-Office365-Filtering-Correlation-Id: fcc20d88-20d5-430e-8153-08dd636836ca X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?/JX/O8L0dc3BKtIj0O+drjNaTTm/9EfAmw4ZvobVljBJFqxfyjsjrfnvq8HG?= =?us-ascii?Q?klg67KW58p6NJXcdPPZFUNbCZJ0ANCsi5fbivDmBJTQv5k33Mxx9E5GYQ/xv?= =?us-ascii?Q?jWMdOPeSCFDIjrTsFnWrWwj/LejEyh+3Cv/fggaj7EXMLAKUDC3G3zS7I4C/?= =?us-ascii?Q?fjMXc1P/xny8/eZDaPZohV+CAww2gfRtNnmdGVFrVPKSdF/fLkUT2wJLzmEK?= =?us-ascii?Q?yyojhO3Pg/ly+cGFXCvk92V5nVeIFSqnQ+Q4gyAQbIC2TD/E2c4vcsjYzMyQ?= =?us-ascii?Q?WplEOF6f+6LF1s9+xoE2F5hJe1FfEJEn2/YS8eneBCgT3sGQi3smKca+BQtS?= =?us-ascii?Q?XO9gO91k3fNkKL04NTsQ8vuft2Z4U6egLoKlhGLUGj6BsYelY2/MTgcBr5ex?= =?us-ascii?Q?7lI9ag1IQnZXO4dI5kWJu6jWh34xUMaw7SDCtyPCJ1vVtE9zRDmtxxW3jEU+?= =?us-ascii?Q?0oaoj5mM3TeXn+OUBPK49Uf841YlIP/ySXjalaazAIOeJoUhq6A62lDri0/T?= =?us-ascii?Q?WRBULL9k/1QBB9WJ7Nv5T4Tk2T/reFAnWPMMZOiZcce5vKd6QA/tx7yj+DHL?= =?us-ascii?Q?1BiNVMb2UtiZdJmLsUQRhWqImyH3HS+w5oy6+Em9MdDx8/snU/RXRtkfkUUb?= =?us-ascii?Q?1g00WzZVNZLFoYfAfk2+/WonQMEjhQ73bqj1LEKXdCm4BXFhExUaDBfWDiK/?= =?us-ascii?Q?yJpaYDorauzpC40IKdU2ujKTOUpoKISkH5LM4ZLHHk2zKRc09WSlZ5DrZ7qt?= =?us-ascii?Q?+NSDqAfXIlWqcerpYd3V07+rWnF6UO1oRDDcq1A/gQW/aBH6DvVveuhEDmIN?= =?us-ascii?Q?lMH6a4lXKQ77jsnoJZliqo+SbZF0SvyB6mQVpLtMg4PLO9UYEi5RFvxsuS8h?= =?us-ascii?Q?16x3TPe35uAZe4z13cHZNFqdgLJNILFhK3kKfFTLfk95Og6CotU4GJx7Ql9R?= =?us-ascii?Q?qmwS0Mm9fkX3Fe8LTMw+Lo9ocZzP77dYdAZZnMl/Gw6LPWe5garWUNXxtHmx?= =?us-ascii?Q?i7QJWP4v3DpQIEPGU5rq7WvNDK/ssFOEHSgJQiBgMBWJn7wEKRS/2MSFmxmN?= =?us-ascii?Q?it8rYpJVqZS4/9MSnXyk3LaHFH0GqUW0GPeXEcKgpVqjZnDm//4PLGZ8Ftmu?= =?us-ascii?Q?k4k2GGUuzaVP7/d1lxHfaEU5Q697l1KzkvFNQqHgfbCo8JMZ0lJ7qKnNRy95?= =?us-ascii?Q?QNMBj9bP/yP8GtjEq4ZByGrhEZETPVBmr8TyJC7E+y8wf/J2QwCVzsXfJPtL?= =?us-ascii?Q?oNA6iW3Iv81EY7NQufZVvM3j8BaJvwzLw5Ixf4hoy7LhZ5Ah8U9Df7ashFBr?= =?us-ascii?Q?C0IYDTvXhJcSJCpbCv/PYedYc/41BC7+ToMDhIGJCPComr8vcBZv4u4bkEZt?= =?us-ascii?Q?+87Ew50INgfeaaOa1sm4Xvqfhlc4kF2z9y5d34IKF3U/5zBETAtSARol/0Wh?= =?us-ascii?Q?4PJN4exMNBg=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)(7416014)(376014)(1800799024)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ldmI7HHpZ27ewSrRJaToxPioOTlztdPT3dKDcvNYTTMIx65IajyTUlY/afCp?= =?us-ascii?Q?XoWw9Ch6Ky0RpkCKrMyKM3uvkYY4EVKMSScyFMP+4LEN3H+g8i9g0vHpgd22?= =?us-ascii?Q?FiVONEADCwIJlr6/dXznGNi9bt4ITgMMgGzsCu+8iTsX4T0cS0oRSS9bLOdj?= =?us-ascii?Q?To57zGxCdqcJ6KARBz2c+FKW2HvXTpEsGEgUvaFtDUCpm1pwczwP1mT/Mjsj?= =?us-ascii?Q?rDcudnxRx19sWLn2Rc00HIw8aMlhvL79W7Kp4l8r/Wpp0eGwMseGkymeOvrp?= =?us-ascii?Q?gYCQ29WeqapbvA412zH4sHakoDaK2Yusk4PL8XvlCDwYF/FvQqojbIMIKqGs?= =?us-ascii?Q?v+CJ6e6g5V/GJDKl0+rnki/7zfN06zvobi2qZx7D/kMJ8ArX3uWj1NLXo53j?= =?us-ascii?Q?XTEOccsmm3l+Jz8Hld9dWurkVv7LSPUFdiiGgfa4K1sLw9XBhZkBcMe9LsbJ?= =?us-ascii?Q?RnGPupnlQXrS0F8jYsgSC5JoiHIlgL/pjeVCPYecYSAFRNprECwvodXJcE4K?= =?us-ascii?Q?G6Gta4bicXOnHg3+2UvrHiz6AgOspDKj7/ES/JBDEEwo6hFyU7cll/pUKfuR?= =?us-ascii?Q?Zqi3b2FE5Ue3KUiRWCLV+0Zy+Q+9ex9xVXY+zGYfRN3pL6IzErFUGpB4YJga?= =?us-ascii?Q?55xTjDHX+y2zBLyhzTD7KZfQjucmSL6H0szdPYQO9lAI/8YOFuSXorfvykYw?= =?us-ascii?Q?vLKtPrNVZpsCKoop2YrPTKOACbeo/UreQS9spGbhib+SB2SNVddcGl+wA4z6?= =?us-ascii?Q?3AiEcAbQkgCZT+FN5badohPQb8H2bPuIRkxIVPK9m73xKKPScSUdtFyLVRMb?= =?us-ascii?Q?YW1/2zpIrb3RrfXqRt5axEUSQzsYGaXh5js6e53kcHQs8lNy7BNYuKLO4b5T?= =?us-ascii?Q?csoFYu9xgrb/oFGWdo6RgIjrsXMhCiaWzF7wauZzRz3evyQHI2oBI7E8sLo1?= =?us-ascii?Q?i8Ajqd9/hfCsg8hVChZ4lPiMbiTaf7p69RgsPILt5v9+CNoFgI1DN2or2tRd?= =?us-ascii?Q?Kw8ZW9cq7FLaVoCfQHkxLXRw7B3liPYcs8/a/XOGoJL8BtYztgxulyIc+Cc/?= =?us-ascii?Q?wE15/s2IDmqAhRrUGKkJPNmgBrmAvqNAOERSlL31HdiOH4wpUNsUVNPD4K3D?= =?us-ascii?Q?B/rahVAlpKylne+WzD3C8xJfnWg+0RrnwR7Ehi3Xs/kyFJK32OvUUTRIlVtA?= =?us-ascii?Q?O+YF+wnFwSsOge0cB20YRjr5IJNc06pz2kxQ7m9IchtntejS6YTTN450PEZY?= =?us-ascii?Q?4ojdZl6qhCcWODS4z33Cp1ncMhrCTtGyc1u5bxYg1FESUfhNiwjiueW5/jxp?= =?us-ascii?Q?9dgMa+yws10/pt+BtHANLZIxZ6Rg91+okjRGN3wRHjoYRV9TpsjIxl7y5aWF?= =?us-ascii?Q?R7YrzqU1ig9uFqAAh4hYcp+R/kC3KcsJSSnVm2n3tXErQ4LHmV96tt8y+Nb5?= =?us-ascii?Q?9bk5KlCbdskWTc8QRvLVm1SS+v+MyddXnGE72Kzi34QUVIoDxmhLCEP8Tz7/?= =?us-ascii?Q?OiRaFlNXMxyV4g4jTWh/GPb/yNMs61NTLxdHcqxTcOrzZWyELOZm/Pq+GB+K?= =?us-ascii?Q?ZKyCdU5ZaJirPZv1XpyWuLTszU5ySq/PbPUXh+/0?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: fcc20d88-20d5-430e-8153-08dd636836ca X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Mar 2025 02:22:20.4578 (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: Hg/E7bgQg1ZDVx6Ry8uyiCFxDuleRi4loOA9aOitDhmaLvZ/YxzUes+J/EUAJHuuGipxichS8KQLdJMx2bJNUQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5997 Content-Type: text/plain; charset="utf-8" Currently the DL server interface for applying parameters checkfs CFS-internals to identify if the server is active. This is error-prone and make 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. Reviewed-by: Andrea Righi Signed-off-by: Joel Fernandes --- kernel/sched/debug.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 1ccc7687e1a8..83cb695d6d46 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -347,6 +347,7 @@ 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); + bool was_active =3D false; u64 runtime, period; int retval =3D 0; size_t err; @@ -379,7 +380,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) { + if (dl_server_active(&rq->fair_server)) { + was_active =3D true; update_rq_clock(rq); dl_server_stop(&rq->fair_server); } @@ -390,7 +392,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 (was_active) dl_server_start(&rq->fair_server); =20 if (retval < 0) --=20 2.43.0 From nobody Wed Dec 17 19:07:53 2025 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2052.outbound.protection.outlook.com [40.107.102.52]) (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 CD66018E351 for ; Sat, 15 Mar 2025 02:22:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.102.52 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742005352; cv=fail; b=crjK8fbqLhUa4ROjQmNKkXT1epQlwWXefYF0X49uCWC84njUZR1ljhwYNCFBLE19lzcT5y2CYDjNISaVFrc3snf62H3HwpVfIE78YiOTvOqDMHEFB99NmI+lBXXipSNMukv0wcxoT7GrzBndBz13vGBDUuxTbWquUVSmPXhXAZY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742005352; c=relaxed/simple; bh=QSdnHJwENMZQW7QJ/5oyyWJZDhpNUD1y1Xyt2z/MKb0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=hoh0O15B9n/W9pJYYmkvVU8OxtF86vnfCdq1dNJXIJ1J97tLvK5yUTFb7DSnWxQDTJpSZXvj0eXoOhc7a3U+XFIfIXFEIFt/kBW+GFbe4kNw+2m6neWsjWKEJcQrqbWtRUC/vzhHMnj2SqJ9ktmoFMwL7h+2y6pA+oWENo9K4nI= 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=ZLA8QIRs; arc=fail smtp.client-ip=40.107.102.52 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="ZLA8QIRs" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TDJkG4R5UnJGdfUVYsI6UrvUya246gHny3l+hnqNNLEVRAbugMt2CbHeDwEUIyX0HELV1hcYy/S6tZNGZehoxvb3UYrB+lX+AL7I3hIP2nTzgQipWLw3UrnI58D91JJ8Neka6GwOiOofW3tqqYtJktY52oT+u8Yxz6+rn685/psao7r/gndymdX0mqOF+48xgTD74FRBmmONa04fysKF+CfHyT+yLIe/fHhc17GwdUL8rjZsVfpnrguEy4FqbNOT0Y9d1gxFYR7Kfy9PaneHWndsUSXzOFpf7HoTt9tF3AgMwJ/I39g/PDvuYsrWuF3sRYjmRyvme5QDy0sZzX1Sfg== 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=M9g//EEbvmDbGlccouXKvKN4d5iga2LG9QQDJBTEj7I=; b=IfQaxYNoi6FYl7XDNrcTEejO8Kt6VHnMf3/pV3exLQDLhpaUTPm1e4Ax67yHaMnRpV9x6KhcOnmbZTbkU7tUHq7l1KUwUote3tApCp14IPvkZnrYMWipAYpBKYPksOlVrqmLJROlw8oo0uyXmlvPvwKQ3Q9vkgZNBkNPR0apYyOTyB13MFaYbLx2TP6xc3xo36yoIFd5m64mrzgfeujzCjXBtzZtMqw2I4Y+aR/uW5lIcNeGxWzCKxwuymp16JhRM6viG3ahHmuVL4CjmPK0JGJdLW9sTF/iAaIqKhXhxriIEuVj+8sf/T+NeguZNuQ9DIJgsWuzm4DyZrVVx3AHfA== 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=M9g//EEbvmDbGlccouXKvKN4d5iga2LG9QQDJBTEj7I=; b=ZLA8QIRsQhkmCrAM5X9TMcloixEtiFjdZiL98HuoxuAXc4usMIKMgIEH1UMf7TEXKIYFoSCVgPJ/qQsaYTxDPOOpbU8gj0oN3XsbQEFuu0dhAOXNGdoX2hXYR6Lr0w6H9a3VL9hWUSdsdCZfJfkJAXYp9mgYUHPi3u1wJuDEMCYdtg4S6JNrqC2TTckbqex+BrrLHkbA+McTXzYYRthDgiWmIWUPxSZXkQernbxhwWaJAGLWnIEiUGQVDEG/W5bnQl2HC+u3vocOhHxYAjhD0M12CWExUQBK1XxGUyY5b/t2QTFYo4tQ0TsFrLJELaI93g5q/oBu1++k9r5t8b2zxA== 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 PH7PR12MB5997.namprd12.prod.outlook.com (2603:10b6:510:1d9::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.28; Sat, 15 Mar 2025 02:22:22 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%4]) with mapi id 15.20.8511.026; Sat, 15 Mar 2025 02:22:22 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Andrea Righi , Tejun Heo , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider Cc: Luigi De Matteis , paulmck@kernel.org, boqun.feng@gmail.com, David Vernet , Joel Fernandes Subject: [PATCH RFC 6/8] sched/debug: Add support to change sched_ext server params Date: Fri, 14 Mar 2025 22:21:53 -0400 Message-ID: <20250315022158.2354454-7-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250315022158.2354454-1-joelagnelf@nvidia.com> References: <20250315022158.2354454-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MN0PR05CA0028.namprd05.prod.outlook.com (2603:10b6:208:52c::12) 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_|PH7PR12MB5997:EE_ X-MS-Office365-Filtering-Correlation-Id: 02694c90-a066-4609-d228-08dd63683817 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?r++sUtcZSdkp6kgmYE9tgZRx7VT8LZZlSuvaN+j+X3V/X7Jq0JbOAWINEPl5?= =?us-ascii?Q?pV/79qJrT+3s+gd4bfRysWv8+tbdp2fpHbFkKRXMe7foCD0WNkYUwnjoZLGQ?= =?us-ascii?Q?ERn8rmk58Thpk7jYN5bN5iaUEHkmaIZilCR106hCATF7I3oYWy6Et7uuhpG2?= =?us-ascii?Q?dyXtS56UhNiNMkJWpXCboKwwqq41IBeTXpR9ME9Ku2n+FzupI4zSnuKzEIHR?= =?us-ascii?Q?3crgit0ZZvNpLBGKSq6rx41ICVOofIIiUD/lh50hd9wpnnM5oowIMRA1sGlh?= =?us-ascii?Q?UD1rqKaSNTudhj4Yj0WjHooaWeQePsZ04ORO9dRIunhSKtrM0yXBkiJZmgOH?= =?us-ascii?Q?BnVSOzvk7GmkS3DAbb+T94LMduGefX+e/8ucB8PZEYeGTj7hsswfGsncZNeJ?= =?us-ascii?Q?OEVJxMeXjzW2BhaHn+dW0Os9yXxnHgQhouGBW50USo5zf4XFlYNj/CKJ/fsr?= =?us-ascii?Q?LXngrbmtyklchpR1p2+jdcFwil2TqRAdvgZwercXtoVMs322GBYBfmJUaCQG?= =?us-ascii?Q?fFEIm9G5K+VDao/Dbugprtd4Sh14x/D6b2Da4lISkT3ymUZFBsSCH6Wu0iS6?= =?us-ascii?Q?StVEWT+smD1YYy4jz2X2AdsQ3SFqkRQaQAe6Tj+Ias1GbBst6Jf91bj/bFtA?= =?us-ascii?Q?P9Y133B91MX4P4zuWaHo7VlWsyLF/xBoSNuOK19/NIdxsUnRbXjFHcc0CoPs?= =?us-ascii?Q?vcPbr/+RC6npE3zWgh5W3xTBjNdSQBo+hajBEdgFiW0gcmZER0rnae5AVr2k?= =?us-ascii?Q?Q6vZEVEhYfTyt0fuEemG8kdcj5hGqJNoHkKvX53K2hLqa2ffvHFuqz/Xw5Pm?= =?us-ascii?Q?LFU0ew3/FWlD4ktnfUD8mR+YNMvM45Ifeqhu+GX5amYAGO99jDHAWJad9TV+?= =?us-ascii?Q?Db9Rlw8ckySB9z+jcwCB1pwpg04J7gs8xNRiLTB8mu+/8wrm8+mzFuvEhq9M?= =?us-ascii?Q?9NyQIl06ZyTJI7B6+RukV83CcX+LXRFzz2bSPlLrfKoxgLWe88YHlvYm+dSZ?= =?us-ascii?Q?8H04ZdboEXhpBoRNvSGhoX7hHZe/1bV0f3866+WlcT9MspLOVtDxWb3C1TGA?= =?us-ascii?Q?kFnJ6XAE/SK8kGe13Hm1eFkRw1iiOsCbtzYpsvRMR70InjZzfSUvYeF6Gf1p?= =?us-ascii?Q?cQdqHTz2R40NRansGLrZTuTisT2H+bkJUB3+49JaHYGBAwIFOOsYFKTz1IGb?= =?us-ascii?Q?QZuIKGcNdLXnNvy3r0c6a/YKwyw+/xm8aLA4U9Ekt2vBW7YUPWQFTPrm8yHa?= =?us-ascii?Q?DlYznIFlCHLte3wC88t0m+FXdL7aRgyfhE95D49u51PLxbhtuNQu6CKDsaVL?= =?us-ascii?Q?dP3dT0TSUXdse1ZNOa+JBWeP6tOlMzvPFO6wt3A3KGHhoyZMOfYiorgMrf1A?= =?us-ascii?Q?zobdXo2AgoWjpfYgziZZCAOGs+qblrr0h7YYIhzBYf+9rSG5cavVFrZp011h?= =?us-ascii?Q?BlabCODhnCU=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)(7416014)(376014)(1800799024)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ldmZPfmSaX7dl+6I5jK+I1a84kz9P7VGDSakmbx7O58NLRTfDft/gvStPDmy?= =?us-ascii?Q?clMi04RqeQ2M2cxOTvC03TI8Ff6wdFZJXmUi3KI7qbFfXcyqBSDjHHEbSFps?= =?us-ascii?Q?Z0BL57dkTaHARCKW9uXOdOi+XoVIaPy7coGKa1TEK/EtNXJ4Qv3kdwOMxi1b?= =?us-ascii?Q?NdenYE7hbzVCeY3MuReOShQSMOI4W18oxlX7M0ZGchVyfDIWdCCRPn3KOL7n?= =?us-ascii?Q?DPkBRfyL9O3PosR6G+4KG+kG15l2fATvl20M2BX9cBvMMYGI/z5kXUfLi7fR?= =?us-ascii?Q?UoLrPFqgMEFZnOxfhUPjeQXoeWvNKIVCeUa6VkoYfGtDP9isliWLM050GXIG?= =?us-ascii?Q?tFSupaFPK0EzSRCdEbSAjZcOwSRXMplINlrsOqHUgFw+3RqTqfToLISCqMQa?= =?us-ascii?Q?IDpkWxfYbecs1o19bSEWJdhxsEiAKemoD9HKvMpeB8iC5AoQyBxHuc1ilxWa?= =?us-ascii?Q?Znprxso4RWKT9chNasU/qiOcB86awTA/eFd/br+5k98fL5qN3qUJ/7ODdcLp?= =?us-ascii?Q?npxsYeqZrVVFYDKtjHrJHLpjLIYovLzd69EOjcZQAUYkFNyc08SqmGV5n0cE?= =?us-ascii?Q?NHeNcK7rDqT2aBis3W/1+66wvodPHfI6bAV/U2DchWXdSXl2H332e/mx530c?= =?us-ascii?Q?1qXZGVYF4/+Pis7BBhUZFZjKvGiCG4J9k+gW8EPgp1MQ8Xw7BC/im7Sqp13Z?= =?us-ascii?Q?SbjmgjXbJgJNG33eUd/lXZvOz7Hv48KSGEX0AOxecC3wh5pebrxS3j/rLQ02?= =?us-ascii?Q?1amqWlDM55ZgDnvvrtLXRZrtXRCfgmd+4wSTpW60pX50xQnOcLxuBL+AnA5W?= =?us-ascii?Q?+j56SA/dJ+g3z87VCJiY/i61DvRjVQ3DiK8MWx4qhr9AnILwk6bNQmDp8N1Z?= =?us-ascii?Q?0UMw7m70YauBdu0UZGpmw6yx68aJJx+wS5eZdYhzhxVE+JYRd4BndwMN91Yx?= =?us-ascii?Q?NV9TPqK/v93kCDcvNeBXHtoI7TgGPp/KaB6NIiklAEsCXbBBUQnCbRaqOyUm?= =?us-ascii?Q?EN1NihEEmQhasWyxsM0jzY2i7PP9QeGlIpec1tZqKw74sfO/8DaeoLH+GjOM?= =?us-ascii?Q?m0nSwa6EojjxmM9YoCpuLmMfriHdD+u/7B6hISAN3uOWWpcPONeCJfQFJh2A?= =?us-ascii?Q?k1/t86JaNtMhMtpwGjRBqvdi7HQFjLwFWG6UMKKwgxaWfIMLEVX0SaZlMNc1?= =?us-ascii?Q?Gj5dYCbBbtQSToAoOABFc/Dph/H4k/ikaSEvTP9bIDOyYmiRS07Sft/SqmLg?= =?us-ascii?Q?OZj1EaBbYZL5ckgIfCX/bDGH8J6KJFEGDwNlXYCKJIgusN7NnNtG23hUv0xL?= =?us-ascii?Q?avf9EKibqMP2lZmF8eFeHK+JcvmZzw/lAnBJzo2SY0EIm14/4yZg/+yJMMR+?= =?us-ascii?Q?23xbn64RhiH0fnK6wMTkgtMXWvJQ6Ayl7oiyNv87eEfPG3uIb+SoRvfhirf4?= =?us-ascii?Q?RDHBHqRpVCnckcifQB75DoZcArSOZTAhCSwV3aWYTNt/T7kE7tKsfzjMJK15?= =?us-ascii?Q?/nUOKraA1ELQJfFmeqi1cuF5Hjh15JPHJIn59x1gqmUwQdbjJm2LqFvrTiYr?= =?us-ascii?Q?239yx917ftQ/mdvjYoG5HmuojIcCb0+2AkEx/dIH?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 02694c90-a066-4609-d228-08dd63683817 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Mar 2025 02:22:22.6376 (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: 5rYjK70CWjuiU682tIJRGlxtRIFIkOryVRsF+P2Oele1x74KNysAXfXUaROILlLYz27QsKd8xGtfX/hEkyXzjw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5997 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. Modify the ext server parameters as well along with the fair ones. Re-use the existing interface to modify both ext and fair servers to keep number of interfaces less (as it is, we have a per-cpu interface). Reviewed-by: Andrea Righi Signed-off-by: Joel Fernandes --- kernel/sched/debug.c | 91 ++++++++++++++++++++++++++------------------ 1 file changed, 54 insertions(+), 37 deletions(-) diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 83cb695d6d46..218b3e239128 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -339,17 +339,18 @@ 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, +static ssize_t sched_dl_server_write(struct file *filp, const char __user = *ubuf, size_t cnt, loff_t *ppos, enum dl_param param) { long cpu =3D (long) ((struct seq_file *) filp->private_data)->private; struct rq *rq =3D cpu_rq(cpu); - bool was_active =3D false; + bool was_active_fair =3D false; + bool was_active_ext =3D false; + int retval =3D 0, retval2 =3D 0; u64 runtime, period; - int retval =3D 0; size_t err; u64 value; =20 @@ -375,41 +376,57 @@ 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 if (dl_server_active(&rq->fair_server)) { - was_active =3D true; + was_active_fair =3D true; update_rq_clock(rq); dl_server_stop(&rq->fair_server); } =20 + if (dl_server_active(&rq->ext_server)) { + was_active_ext =3D true; + update_rq_clock(rq); + dl_server_stop(&rq->ext_server); + } + retval =3D dl_server_apply_params(&rq->fair_server, runtime, period, 0); + retval2 =3D dl_server_apply_params(&rq->ext_server, runtime, period, 0); =20 if (!runtime) - printk_deferred("Fair server disabled in CPU %d, system may crash due t= o starvation.\n", + printk_deferred("Deadline servers are disabled on CPU %d, system may cr= ash due to starvation.\n", cpu_of(rq)); =20 - if (was_active) + if (was_active_fair) dl_server_start(&rq->fair_server); =20 + if (was_active_ext) + dl_server_start(&rq->ext_server); + if (retval < 0) return retval; + if (retval2 < 0) + return retval2; } =20 *ppos +=3D cnt; return cnt; } =20 -static size_t sched_fair_server_show(struct seq_file *m, void *v, enum dl_= param param) +static size_t sched_dl_server_show(struct seq_file *m, void *v, enum dl_pa= ram param) { unsigned long cpu =3D (unsigned long) m->private; struct rq *rq =3D cpu_rq(cpu); u64 value; =20 switch (param) { + /* + * The params for fair server and ext server as set via debugfs + * are the same, so we can just use one of them + */ case DL_RUNTIME: value =3D rq->fair_server.dl_runtime; break; @@ -424,50 +441,50 @@ static size_t sched_fair_server_show(struct seq_file = *m, void *v, enum dl_param } =20 static ssize_t -sched_fair_server_runtime_write(struct file *filp, const char __user *ubuf, +sched_dl_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); + return sched_dl_server_write(filp, ubuf, cnt, ppos, DL_RUNTIME); } =20 -static int sched_fair_server_runtime_show(struct seq_file *m, void *v) +static int sched_dl_server_runtime_show(struct seq_file *m, void *v) { - return sched_fair_server_show(m, v, DL_RUNTIME); + return sched_dl_server_show(m, v, DL_RUNTIME); } =20 -static int sched_fair_server_runtime_open(struct inode *inode, struct file= *filp) +static int sched_dl_server_runtime_open(struct inode *inode, struct file *= filp) { - return single_open(filp, sched_fair_server_runtime_show, inode->i_private= ); + return single_open(filp, sched_dl_server_runtime_show, inode->i_private); } =20 -static const struct file_operations fair_server_runtime_fops =3D { - .open =3D sched_fair_server_runtime_open, - .write =3D sched_fair_server_runtime_write, +static const struct file_operations dl_server_runtime_fops =3D { + .open =3D sched_dl_server_runtime_open, + .write =3D sched_dl_server_runtime_write, .read =3D seq_read, .llseek =3D seq_lseek, .release =3D single_release, }; =20 static ssize_t -sched_fair_server_period_write(struct file *filp, const char __user *ubuf, +sched_dl_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); + return sched_dl_server_write(filp, ubuf, cnt, ppos, DL_PERIOD); } =20 -static int sched_fair_server_period_show(struct seq_file *m, void *v) +static int sched_dl_server_period_show(struct seq_file *m, void *v) { - return sched_fair_server_show(m, v, DL_PERIOD); + return sched_dl_server_show(m, v, DL_PERIOD); } =20 -static int sched_fair_server_period_open(struct inode *inode, struct file = *filp) +static int sched_dl_server_period_open(struct inode *inode, struct file *f= ilp) { - return single_open(filp, sched_fair_server_period_show, inode->i_private); + return single_open(filp, sched_dl_server_period_show, inode->i_private); } =20 -static const struct file_operations fair_server_period_fops =3D { - .open =3D sched_fair_server_period_open, - .write =3D sched_fair_server_period_write, +static const struct file_operations dl_server_period_fops =3D { + .open =3D sched_dl_server_period_open, + .write =3D sched_dl_server_period_write, .read =3D seq_read, .llseek =3D seq_lseek, .release =3D single_release, @@ -475,13 +492,13 @@ static const struct file_operations fair_server_perio= d_fops =3D { =20 static struct dentry *debugfs_sched; =20 -static void debugfs_fair_server_init(void) +static void debugfs_dl_server_init(void) { - struct dentry *d_fair; + struct dentry *d_server; unsigned long cpu; =20 - d_fair =3D debugfs_create_dir("fair_server", debugfs_sched); - if (!d_fair) + d_server =3D debugfs_create_dir("dl_server", debugfs_sched); + if (!d_server) return; =20 for_each_possible_cpu(cpu) { @@ -489,10 +506,10 @@ static void debugfs_fair_server_init(void) char buf[32]; =20 snprintf(buf, sizeof(buf), "cpu%lu", cpu); - d_cpu =3D debugfs_create_dir(buf, d_fair); + d_cpu =3D debugfs_create_dir(buf, d_server); =20 - debugfs_create_file("runtime", 0644, d_cpu, (void *) cpu, &fair_server_r= untime_fops); - debugfs_create_file("period", 0644, d_cpu, (void *) cpu, &fair_server_pe= riod_fops); + debugfs_create_file("runtime", 0644, d_cpu, (void *) cpu, &dl_server_run= time_fops); + debugfs_create_file("period", 0644, d_cpu, (void *) cpu, &dl_server_peri= od_fops); } } =20 @@ -535,7 +552,7 @@ static __init int sched_init_debug(void) =20 debugfs_create_file("debug", 0444, debugfs_sched, NULL, &sched_debug_fops= ); =20 - debugfs_fair_server_init(); + debugfs_dl_server_init(); =20 return 0; } --=20 2.43.0 From nobody Wed Dec 17 19:07:53 2025 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2052.outbound.protection.outlook.com [40.107.102.52]) (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 D02361917C2 for ; Sat, 15 Mar 2025 02:22:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.102.52 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742005354; cv=fail; b=sEWySwrlWeSKt2oKhbQMHGIj5lXIXOikkE+ozqqH/30/FFRhWa3P23vp1ZfKtfdxllrdNFbOIa0ij6lfiCVKpdOew1+o6o7h2f5jqCotjTEq6cvB22zjU8lGs4HaEEgDXT+Wa3/6QDDu5rOWJ/qnZG/W0Hmtn/4yZA3f5hblRoI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742005354; c=relaxed/simple; bh=UnwprWv3hnS/bEKmhMxI3ahnfwE7O3nWBzvwTqhdq28=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Npb4tEYx8C7468s6E90WrLOASYWqHLQ5IyqmEpVfJ3hhgID5uWtKbdLBPq34VUNDTaKrfy4Sd7Ylt+k71M6mSLj5sBrJHjyqkqoBQv8kB80w9q5qQN2058jUraxVjHLIeDvCH+1+zD7Wxl+0rW6cs0Nj9E+MPIPe7S0z0z1AP9M= 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=sMBx1uTt; arc=fail smtp.client-ip=40.107.102.52 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="sMBx1uTt" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=srBCoqIgfxZmiN97l7kI2WJYlTpTwL5erNBCYzib90KSKlQYsGuwi3cnlAs/sRAOfE3x6Z6dRaPghhaeWoQT45qVv34IFAQez3oArhol2G1cLGt/5qbw+fvg0Tfl+VNZRLuOpH2TtNVWzWg0JDJFzXkO6BL3Yi1ihSraEU5TUfrACh23IhTTI8vDqEPixDyENdyaDROkjwM9lq9CwamcSnN/MLQYdMEEv7oqaT1J7wW3k2DhNLDUcoFIdjZutxQJilj6GkHGtmFWsdROk3zi5XdCWNJBlw/4iBjROx+G+aEQk76LFvaSde/nZIjVbzsdqVvBLiR3HVzVW4Z+aqga/g== 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=97rnMfP3wrdbk3l7LDSIEd4lQxRMMfWjhpGvU6SZhZY=; b=hCHrS2krcits2OR7vubnStSz6+VVvYJWDBzO/MZ5m10foEua6oim4VdSko1mYbCWHSVPrskXsACrbaypp2EQs9UvWg2LSBS8BmEi6Qc+6py7hX+CgKF9T5wmUSMotkwKnpYUonoF39ElyY88xVaefg8Y6K/4bn4b4iYBN5u0lGaaKSGQ5DAf/W+hcZUl+gYdQHvYWR7d2L5+Mxs36Xfxul0kuHLFuS5YpOBJOT2FdjEXy2eM0hGGLJNye5ETZl0F9hCHHTeep07kObdE4S02xUlFbGn49FuR5hJVzqPjxQg8SR1v3vAwB+kG/YEtkgyUKNsuUo1+Nsrfqd25Ft9DFw== 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=97rnMfP3wrdbk3l7LDSIEd4lQxRMMfWjhpGvU6SZhZY=; b=sMBx1uTtRWQhXmn3KQvV4blLRsKTu/jrZ2JMivCme5RaXLVR1Kor47OrflWG5cD9DfvSShDFeW4fyHY1elr7ERVhFdoqyuRERncrRx7iwiARzpoF6amfLW4XH3mj2rUqL2f3lA7Z8bO1xK9R/Yp1fUuAi2ukN6MoV/Oev1VDsiMATu0ZflQVCVczWtFkbd67S2XzJpHPhnDG8qUd5AVpTHJb1h+DCegADgZM2b5z4ssZVmCfZpgHhBYGQa8odbl/Umrp36aXdAjnbQ547r9bt79wfOOubePWRjzPpVfxnBlnvwzXTtwmidOG+O+jeVWhG6vrJ0YIwTTVsYw0Ii0myA== 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 PH7PR12MB5997.namprd12.prod.outlook.com (2603:10b6:510:1d9::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.28; Sat, 15 Mar 2025 02:22: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%4]) with mapi id 15.20.8511.026; Sat, 15 Mar 2025 02:22:25 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Andrea Righi , Tejun Heo , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , Daniel Bristot de Oliveira Cc: Luigi De Matteis , paulmck@kernel.org, boqun.feng@gmail.com, David Vernet , Joel Fernandes Subject: [PATCH RFC 7/8] sched/deadline: Clear defer params Date: Fri, 14 Mar 2025 22:21:54 -0400 Message-ID: <20250315022158.2354454-8-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250315022158.2354454-1-joelagnelf@nvidia.com> References: <20250315022158.2354454-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BL1PR13CA0207.namprd13.prod.outlook.com (2603:10b6:208:2be::32) 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_|PH7PR12MB5997:EE_ X-MS-Office365-Filtering-Correlation-Id: 6ad33650-28e4-4ed7-db61-08dd6368399b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?s4UdBy3+WY1SOx1o0jhz6dP5LibjfefO3rAfo6UYm3ONU82v72adu7U8nXVP?= =?us-ascii?Q?LSnlzKTZT82/3b7S3nEPniV3wreu2mJfHIwHSSNzJXNQH5PS6vf5WfGX/Wb8?= =?us-ascii?Q?V07dnMRadLvWgUpuX7baaYebE7Fg3kKOf1dPE9I7Ys6R2e9Iq/kS9WygDJaQ?= =?us-ascii?Q?ZPsbDtPa42u3SRYgz/+0Uoemnjd7PJTOS1f60P7XLU6zdRRSvBFyOoKneu+9?= =?us-ascii?Q?5kqgl709pTGWZGuHQQGA24sEZ6JPR2+75y6o9ueKSjdvjoPfIT2T0O0Zludb?= =?us-ascii?Q?WWDvQJLVHeKo9kSFsTQs3BKxrP5TN/XQxnaKXu/242EIRqjRUyQT0CPfciJE?= =?us-ascii?Q?jhDmLY2W5i7W+IvV/ttnFDbGtOjK0JGRMzg29/NnQnHCqEcsXKRT48d+Fpdz?= =?us-ascii?Q?RKpfJ2BJ5jRiUNrNMhhBmcmv4LMKCzpDmtgDqls7b/+dWEQBrXlqRV2mqaba?= =?us-ascii?Q?Ehl87SwF9YuQJMf8ViBhyCijsfIIIpsUP99WawyKsOY9/5JDWawOvkwAeQ9V?= =?us-ascii?Q?LbgeYxRfYAvdSgGakKnTI9elmgvdxgx+ph6gEkXLkCrfhJUzw0/hrC0ZmeS5?= =?us-ascii?Q?xRhBuJ4jyScsm7tnNsguGp9NuqsAnCLlLe1776j4d/5oVqDPRfv8vJ6w3kTO?= =?us-ascii?Q?4GbynJMWzyAC2eXr0xfLDTJubqWKwVd3sVSEaqnIXi88wLWt8xn+9dDpLYI6?= =?us-ascii?Q?ge6MIh/IBmYC4O7wnYeNU1vGxLrsMmxgeD16hWxCw4HMN7dKFPbqJQsZJ18q?= =?us-ascii?Q?fmvULGXy7yY7ee1Sfrhh3ohJlfbs38myDVZRMoiQ1wnhIHNeDpiIEUdJDeja?= =?us-ascii?Q?PN0Pi772iUTw0l8YbMthd5tMr+xUz78skz6asUuCujtpSTJneAfiffgwBZTT?= =?us-ascii?Q?1gF41tunuXRfzbf67voxc/bnugPGoptCNBiuMX009bHmnrvV/Lt6HGjxrayS?= =?us-ascii?Q?VdVQ48UPrLB/3k3K5YhfVh6Qz+vcHAk56sUs7G2PdegsKGNYMIAodQ7jbY5U?= =?us-ascii?Q?gXyY2VpkuGKHPG6VMJ6qMoPEUTaB17zjpygWotQVbc2azJaXyOFvXNrWAyw9?= =?us-ascii?Q?4OAf8fjrr6uhXjVSOOosKgKZhp+Nwbk1UocnDxzRp5+WBPXj9BfT4IAm5XIR?= =?us-ascii?Q?QeCtN08i7TQ7bSR1kQa/ozxJkpGD87TeO+CM91RDy0Pkb4xJfqw7IijoUvG+?= =?us-ascii?Q?bWL2ZasbtG2FbzjANItVfXACz0l1MkhG9cdIPiI18ktmvXKkrNvu64efms/u?= =?us-ascii?Q?hmTLVoAVZ42dhdncLDElCIwtVERdYX0dMiQzzv00aZXuXuXNUTP9SP/VN+YO?= =?us-ascii?Q?HjYma3jipG5uFSLvEcDXBgR58qwkcJaKaczMbEOPOU4Qc++xF3RVkIuYUVS1?= =?us-ascii?Q?1nI5T+O149s/ERTOA3bfYBY2B6GWh6B/B7TrufeHSdNDWzMxS9OGygzN0+T1?= =?us-ascii?Q?Sp9AuQtPQKA=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)(7416014)(376014)(1800799024)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?zprDn2bU2/23ulAPJ1C4S8GbR0+yDSHFmFCr+5otNFLQnmOO+BLhY1WazvO9?= =?us-ascii?Q?ivsFjtFetJRJ2S2OiZG9yFikH212VxCXV6mE6WabyB+JFIWLpoDI8ydOMHJ3?= =?us-ascii?Q?/ob+rC63AkZx2dO0kS4m6YbYXrOQ/Qan5qBsDO79sXv/0rS+aHL3yd4sT6Ig?= =?us-ascii?Q?gJSltnN8CMI4/9AK7V/reQDiyoFier007DekPlxIaNb8pAFj54Q+MtR2Fixd?= =?us-ascii?Q?tulww5WiRBZ8mmm/Xir78hwjtjfnEl07Ee8Y/26wK5AwpiBnhJtLmuBeC6Qk?= =?us-ascii?Q?9FuIX94e2XfB/jDp2RscHeVO384FX/KdcqQqfnFYfxr5hxrwA4NpqiUTj7+N?= =?us-ascii?Q?ktYZO5V+fvSvx6oVHebY+ctD3DKAvvAvnZH5bZn+wH9SdG4YvLFCBcShNR5F?= =?us-ascii?Q?UeqvXCVENnVNcrhv7oRAb8b5yIOSyk+DxPFec5M4ZG/VKB8Zi0yCVNt9X1VT?= =?us-ascii?Q?6pwOWXKsvE+GOJHoUM9i4/1oQNhdSzOZb6zj94hv0KxpgDDWyzKHXOXX/JVt?= =?us-ascii?Q?YyROHg4Wlow9aDvDQOagXbKybUbchuIIHdEksIQVelj9otsuIpg+g8Oj/4ir?= =?us-ascii?Q?82B86VoAO/MKh/eKMn5oQADli2zMbnsPCQhgNdPgHa4gsotFrlD3UVDJZhip?= =?us-ascii?Q?2wb/CVmsrAwgN2wckpNIxPStKwTuqV/HV2lCikF1d/gNILPNm+3OdVN4ZfCo?= =?us-ascii?Q?r4RGz2ORFZGEM6FdUoHSdO+4JZ0CdgZhsgIpnqgNjtguhC1+FnreAHY5zISX?= =?us-ascii?Q?E5dBj5FY302Sb9DD7M0VcVcR3WJU5hkKQ3STWfhy1hwRdZaElhvfLVWg5fe9?= =?us-ascii?Q?JApmsQfLg36mXx1mzIeqxlyKxRTpP/HaE64tm505AHneMGQMEVNWU5cyBaKT?= =?us-ascii?Q?OoSyKdsROVmVSThYsX8jXUkRbIZyKphUt2mtFmGBVTFH0LZSOscbVTtjddZU?= =?us-ascii?Q?LGGd1hPbwnQFPX4A/7pa5qIZcHld0EaXLWaLd2sWtLDtSLAjNxig5eKjlqHr?= =?us-ascii?Q?4LDf4hsZKe4URSMsnDWzz9Sh2RZBMBmZu6yqJhxjMdIxpqNv9E4VtT/peToB?= =?us-ascii?Q?xfi7twM6g1AfmBKnUIkny7Xr2Ba45zOaKL4hAFXsS+FcnGYYM5//FatYELbL?= =?us-ascii?Q?L99I/9hV+OBRPbdyqx1MQdNIyNlQQtVNSkoXr4JoOZ8AWZcftQQZWN7XCRKC?= =?us-ascii?Q?DOCeMEl0dZtOZY5IFHztdyn57g0/Q2+k8f6vzabgjGcmeFGjJM+Wlz/lFYRO?= =?us-ascii?Q?4Mgman24lJevKLmNHWfw83PhiZpUtxQasK2L+yxd6E7b7uBOn4CgYRCeS3er?= =?us-ascii?Q?o/MmhhQGzQjoiXk9DaVu22/gecws+aKzTDyudQP4G6Y/j/YF21uLTTuetNzO?= =?us-ascii?Q?BogqkolZA5egHI+OWNcm6oXZV6G2qQwy+KcpRfmcQkCP4PrUL6iyUb+nsF6T?= =?us-ascii?Q?yPVig5Zsshjv9X5pL5ar3XJtjDIpHz20H+jU4mVX0H9IGXXN+BbJV6TVhp2q?= =?us-ascii?Q?adcDPG6BED0dxbPi5OScWdEjEcMzpoo3jqjz1nJ7QNk1WQCfs+p8/KCQYfSd?= =?us-ascii?Q?7CsbeNoIbz4f7f7oQKatEzg5FCFwfcfyf8QW1bbk?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6ad33650-28e4-4ed7-db61-08dd6368399b X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Mar 2025 02:22:25.1696 (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: Qh2H2OQ6wt7eDJUg4A9pUSah6khQd/QbXEMH8Z0LQus76h+H3NmUdLkF5fLZY7gyN7YSoleMDichhvaxtARVig== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5997 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 bcb66d9692ae..1a9c697a795c 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -3427,6 +3427,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.43.0 From nobody Wed Dec 17 19:07:53 2025 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2052.outbound.protection.outlook.com [40.107.102.52]) (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 9F5BD192D6B; Sat, 15 Mar 2025 02:22:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.102.52 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742005359; cv=fail; b=OQOowQKH/D2bSZfwtEYDCKFatJ4P++Zst4TeR+DkVm6uarcafqTvnLniIuxFwl+qAl8DpOCVI5cAQXO+lnM8QE1o55nWOS8d9pQSNnxzSSeDOLJezrGK/KjFO22eOTY6zFti8FY5c+F5UvRsQj6aUQBD5szpYwjnwR8FjJHHSWE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742005359; c=relaxed/simple; bh=SUCgDuWpq95usQF3Q6ew7c14zkaK27vi0F4WnOQCWFc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=LGIRXte79Eh64SXdw4AYD4p8JkmcmgasMCnixZwOfMVQfHTcYv1TRXJUNBQkmWoKjbNelpN2+aYuS33+likWZ3tSoPohOy+uTQU8k6owcck0FBWmLvB+2nxwKri0C/c8zcY3Amk4TDBBKVcuIjxyyRvf752i209aTKrpjneUIkw= 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=GujQswQY; arc=fail smtp.client-ip=40.107.102.52 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="GujQswQY" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=h4i7LnZjLcAep9Wjnam0Efu0fanWeM6PXnF4NlxuM/xR9MboQusFtg9/09ByZSSpKxkLW/JzGaJY8Tdj14sgU9XoP/sFO31iUI2F2jUYb6VyjJ0DIV84QQP4fO8omFUbapr8Pg8u3m/go0rlY3ky9gYFuwz9J20+hSG17YwsfTN5gYkwXS6051kndpI4sM/JCoE6B/Jep6YT/WcNTXC6noRbcqIoD6NU7y8HC4F4a5+1UHqm7zUzw62Z1D00GlDn8YapKDpN5pe/Ye/lkBSFislmHhjutpFLxjNqK5IBPz6FTaWpFqHa6pMqZfxTpN1xXeQXQ/6e/mEHRIAFq54cBA== 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=ggr76cZVP4BWjXYUKwN+tIoGEGAAD6wecE9I538391s=; b=x/ZVFAkG75f2UFiwl6zwNvg5CFiweFARWlq1f/yUuu/AdYihZ5Qq+beUYeg9iLPfNtvR4TMmOqNYF2IRZbQtnCLhw1RP4czQVdu1KIXHWRQDjq4XuHV8jn0Up+QfAEqozS0yDcEZvC8Dizh9vyWe/EIjiI0ynYcSqSC5VV/eS/tHpaRYf69oHizMCTH+e4Ik+8vPwjgChunp0nKWr3aVyuKWFQpynLRen6jwqb38bB2AKNHXZpVTCaRY5VUjkUzLbC/+cte3ttsShKWrsOqtVtVEubq/QG4mCEda2fly0aLn27ZGpMapmdPy2A/4wo58Je5ngOdfkaU2l4uMJOqodQ== 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=ggr76cZVP4BWjXYUKwN+tIoGEGAAD6wecE9I538391s=; b=GujQswQYC0LYBnTxN/UeMgAhihvFpfU6yKHhBq+5tEP8DD4YrJ7Ct0hwYKC2kJtdaX6fsXZPIQtex1oYPO378nk2RxK8fV49Gc//9u4Wr2wf3v1Ya8bh8bqDM0OSPPp31Ka7Z1sGKhjvJ6BWjLamrtkFBrcTYgXey3PGAQElf/JzzsL6DAoBu2xmU0bFgc54B7YohE4MeRpewIqjtIW1tIyfNXNKEY6YUIdqV47zRewRp1XQHgcaEei6dE5QWEOlCcPldnGgyu9XCzF8HPiR05m2uRJB8Emnw2IwehjBmCwbozP5pft4k3WKE8WoVPYMbaxelZIVqjE2j68orGdk6w== 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 PH7PR12MB5997.namprd12.prod.outlook.com (2603:10b6:510:1d9::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.28; Sat, 15 Mar 2025 02:22:28 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%4]) with mapi id 15.20.8511.026; Sat, 15 Mar 2025 02:22:27 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Andrea Righi , Tejun Heo , David Vernet , Changwoo Min , Shuah Khan Cc: Luigi De Matteis , paulmck@kernel.org, boqun.feng@gmail.com, Joel Fernandes , linux-kselftest@vger.kernel.org, bpf@vger.kernel.org Subject: [PATCH RFC 8/8] selftests/sched_ext: Add test for sched_ext dl_server Date: Fri, 14 Mar 2025 22:21:55 -0400 Message-ID: <20250315022158.2354454-9-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250315022158.2354454-1-joelagnelf@nvidia.com> References: <20250315022158.2354454-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BL0PR02CA0055.namprd02.prod.outlook.com (2603:10b6:207:3d::32) 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_|PH7PR12MB5997:EE_ X-MS-Office365-Filtering-Correlation-Id: cf6996d2-cb62-4d0a-b50e-08dd63683b28 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?+sus0TqgEfz6xOc+DsUBlYUZ/CFewOrtNlbTSDlOPW0rJFbVU4H6P5wGiNNX?= =?us-ascii?Q?hNfYwBXkLB6EtrpDjbOoUlf/WaWuCo3AiRyoXGBlvKToIt/LQMdFsaDlFKk0?= =?us-ascii?Q?req/WbYx8lJuccrYH14ahITrD52cFxueTVcgeBGtNkF3K6K/F+LMXiBswkRb?= =?us-ascii?Q?dmT3cnN5gTdf3PKCnmojV7wds5IKTazhbMt4SAMMQOzCpvRDSsu7VuWrOhFR?= =?us-ascii?Q?NOx5mlFfuZr3O82gwNQYw2ToQVkx3tluT70IRdtWlOvBhciyIA6o1mbZAw5R?= =?us-ascii?Q?m68JtDk6z7LH/WKsQahdSzU4foQZWAYwDpjQPt7v2Y8Z3cvqodGXX60zEx9N?= =?us-ascii?Q?zmeJHQ2aJZpYH4x1FTU5VcQH0VInDJ/YIjI4Uqt5ZiIe1SykRx84d9TbhOoM?= =?us-ascii?Q?TZSc8pxC494PJ77Kn3JTNYcFKyfvPG6kj9cpmqfQNL51iY2d5w8nPqVnL3os?= =?us-ascii?Q?Hd/XHlTgFMutINH87BAqUyae4herIDnnFML/jpaFUW+05q+deEmAfHWllLTi?= =?us-ascii?Q?xAPzkYqeBLXwQJ1R5bSpe1U8s/sC7h8DkqUnzw8O/kR+xOBCz2CvfKg1/jG9?= =?us-ascii?Q?CLCLLtAwio3jFE9zQF1iuiOaVdvDOKdzRSzmh5PMXF6MDrpTKGqhHWZJYAA9?= =?us-ascii?Q?0xRcOQj80TYFxQfPBkGpA/Z3iqCDKCkyF8rhjD40rzt6PLA9RmTpgnaQCV6J?= =?us-ascii?Q?CDcC57cDbYl4OhUvByLU+JC37tePrJ8DVe6XB2dTRi+cHPfH1av9G9dP6VTL?= =?us-ascii?Q?FGPjyvyVUURwVTcgB9Ulv82RQiYVXQkHFY/AlcMiEB2LDC46xnsP84Z5Tedr?= =?us-ascii?Q?/DdmOLDXFcSJrsuDkuUiQ1w/lTiXGTom/ltnpwVeQvnww6radSu/SqYehXua?= =?us-ascii?Q?ZH6AAS53jKBQnlpwaaLR31hc3fHLA2YJsm66oS5xZs09sLUjtTJz36kQoo5F?= =?us-ascii?Q?TA4Y6a6xiuQiV0AzyVmj2scpXhH2NwPIXntT8HLHTV3yDaVC7nVhwAsOD5RD?= =?us-ascii?Q?TaLstpRMWR0FVTxfaPvDXXtzBy9NgNPPlquX3DJF7OrbUDQabq70Tleu/drb?= =?us-ascii?Q?haP7ZC1lqbnk8s0elfWaFjNbg25CEpzyv49Fl+wCh4eYb+lv7Xtq3yz3zDkb?= =?us-ascii?Q?zNmTmgXenB+AOwYi/alsrmyNCLoY+QFMYhUHO6TusszfGaR6typyjDnvHzkX?= =?us-ascii?Q?NgwY6jBs8W0dR/CiW8eHFjsCtCTYBhWPuyt4UHQvS3Psw0VJoadocqFPPDk7?= =?us-ascii?Q?FqxiriausaxY5yf7+K2C5hv4ox3VlfxbGY9WtC2NjgusgQ/bAJ148djkcfDs?= =?us-ascii?Q?Wh5ARF/gAf9/Fzk8ayFv31KhRIol+cV3WZ5lw/B8rI+/GifoDpAa0rm/6r8V?= =?us-ascii?Q?wJM5uwAtfIbneW1MmbcPO9cBKppz?= 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)(7416014)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?PUXU1RLTGxf4ALtLkvIMctMZ28sCWIPUsO279uDlQl6hTMcnQqXZKz9edhcc?= =?us-ascii?Q?P6tIBHUuixYO0vSaECXZIpX4a5N8r1LDYVznbr6KnLLxXy/qCLsKDYfo6a1B?= =?us-ascii?Q?dogIXds/f+NzKKurykZB9VN3LcLLWSPr4RW6/BKgAK6IYgJC4Lo3XBEjcITP?= =?us-ascii?Q?5NYVJ3zSTm4vCVmZomOSDrMgsXgFks6OGXxwHjGEcydo0C7/s0xm4cLFz0ds?= =?us-ascii?Q?UQCnSLlxyNHvXiPWl2mpiFaRaCVHGvuBarfJELP+vONzVc4X09h/6g5PS5uU?= =?us-ascii?Q?pPfFWM5BxTh6npV2TMhXJ+QFcdHtC6nbQZryNVhOpccvJms/oYfmbmrGjHEE?= =?us-ascii?Q?CTGeMndnAiVWrsy97XVS2NgXTjPVnAG10z6aV+e5HQ30A3wgQ/wggR0yO8iW?= =?us-ascii?Q?5qDFAJbf5xPdrDaeeiYFpW+Cm5nuBETqsmInM8UCP5rbc0YwHI2Q5opLRq/0?= =?us-ascii?Q?2EnZIFWPlcZ41+gblPjrXMQEqkkfrGmhxJL3upd16pt76GmSWz3f/z3X3q1y?= =?us-ascii?Q?h0tu8cPNxrb30WHAItO/fxRXZi5uSxh6iAgLYmcRkD0gl4+qcrDf0Xilmx0H?= =?us-ascii?Q?kbBmsZVrqXg741peF1ur+UEehJ95zAgDLw5iONAvkr6MQteA63GsqigJXs+B?= =?us-ascii?Q?msR6FpFNxQ1jA1PQ9fqE5lP3jPW5UweScssqNMm4VVrsl5rCM8l53YHqRJEN?= =?us-ascii?Q?nuP0sMW0tkkGMuuLA+CiqbncLrnpGJ0SuvrI5qkYl1PyQuiHB1gq4+l4wGSL?= =?us-ascii?Q?8N/xSx8pxOM3BA/1p1M8VdhGQuIEIBSO27mdvjUYjB8tLZaj/PGpQ+HOPkxG?= =?us-ascii?Q?tzfaLlMSyKEe6z4np1Ood1YMhO6xJCV88yZy+3+gl0+qd3BVba5LKJqWqIrD?= =?us-ascii?Q?tnrUa5y+tL6tSc+J9I2J3Hiu5sss06yLasJxA077Q6WxD9CdtTgoXgnztCDI?= =?us-ascii?Q?i+dOeqsgpE1KReNCI4l3hkTxcwe+/c/yF/TWUb0RtIig69c8pX+NAHmuPLGU?= =?us-ascii?Q?j8lb8EPWeKTuMtIyDb67oPzeanLWmvhviT7WJBcQ5UiHKLzcJ12JW4VhAL38?= =?us-ascii?Q?y5yfJdN9N0KBPZaYaEmspeA6e86gc9IRzZlqJbyrE2Q6Wv2N3rXAik0wHLng?= =?us-ascii?Q?RaKlvzvEUtgB8sbjt/+oGvo/km0+cIyBZhAiAA756IUWaCh9qlez8j+LkarW?= =?us-ascii?Q?Zoju7vThTMbQxByFCH1IWmyjQtqHbECRt6+9cKbikY8C0MGCWUB3utAhPDul?= =?us-ascii?Q?DWV/8XUO914+PIKZeY8nUfjPRv52ua6XhfF0oUKg03GpixYMQ6x2VwacdaYf?= =?us-ascii?Q?fhAlimgd8UxbwPlkTvNOXWg6tb74poQv11COd3c5/n6T6HB9hFX89h3603NH?= =?us-ascii?Q?ezuJH6gfdWUVPJtsQTed3g30lGZjfagISwwVml5ENlBH97K+KE2+9/Fw/Jrc?= =?us-ascii?Q?R8qhzLDrEHKzn3jYoet+mgqO7A75PwyiSMdJTno1YXUyDgKyej9UmeHLDrE7?= =?us-ascii?Q?h7YRixNbntgFxEvD1G5gvDsqKPTtIlW5p582du1DJlGRuwoyKHBRk3HXUdrY?= =?us-ascii?Q?5EIFXkhCzNJIoVkCPIKAbHMPsu07l4n2HnxgpipZ?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: cf6996d2-cb62-4d0a-b50e-08dd63683b28 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Mar 2025 02:22:27.8521 (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: 6Wy7EX07vLZwR9MQLXBowRCJOpaL/gBJBaqBqdk7Pykajm6bi6pOL9+kZ7nJJrCCSBldq6XqZMJ2okrBX2HscQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5997 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 011762224600..802e3d8d038f 100644 --- a/tools/testing/selftests/sched_ext/Makefile +++ b/tools/testing/selftests/sched_ext/Makefile @@ -180,6 +180,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.43.0