From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from DM5PR21CU001.outbound.protection.outlook.com (mail-centralusazon11011022.outbound.protection.outlook.com [52.101.62.22]) (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 BBE4E418A35 for ; Thu, 30 Jul 2026 11:43:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.62.22 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785411794; cv=fail; b=Tg/6miRV9AFKbSbyvxL0yLwEG/AeaU4NfZB2yoXeiOcZSKr1qi/E0n3ndqYSUqGYBW/HwqGHUNS6UHOANvL3IqQjkA/yprNf6ijyhL06jxjPOsJQFhD72rNUOkHAWd5PKTnz+Be5++CSmz+mR4zDm68Z8ndCAitYSQXGSWb7Hck= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785411794; c=relaxed/simple; bh=Q2URTMEmgjNHmVqyWsmmTPoZKEDq1UcR/uR/WR1Va8E=; h=Date:From:To:Cc:Subject:Message-ID:References:Content-Type: Content-Disposition:In-Reply-To:MIME-Version; b=iLtmWbMPVBxFSzLbaF42xXg+eW33M4ENwj3CQiZUYTRJ1xnH54XrOe+NoFFjO35BsXRdecIWaQIAejVFjJK2ZjhcK9/G69QwK3y3g71kyMGDV99wLjFqADLqjXqx9vfuQeAyUUJpudpdErJSu2nZ9/ls3wa5nzFKX44zMX8VLHk= 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=bHP8c4L0; arc=fail smtp.client-ip=52.101.62.22 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="bHP8c4L0" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=i09gMrpp8KAEsdTJt2kyqsumSPHCPTUdUlLG274zis645zM2FcmtvhAdX/kBtd9MwRyY05I+XISPN+8wo+5VxFyzd7w1TIcmsemTs43MWbQ9v57Khe++4kcTqOWGoeLw6QJ3QesZ6FzqTuEhwep0Gg9WrwKF6Z+Av7h1NwZ0rvvfy5GexDcJ8X9lQWiEV5bSo1bMzmOEfNCBR817UZT1TnES26oOtFW/PsdB/AaStcIBpSczWGDgML4q905he9lMIQCdXNxCNqJ64orp1foL8pZD3+3HuZXSAeGOmTczPwm+q4DDWOuT34d3KYQsl+c+zf54SPrQ4TXS8jys9BySUw== 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=M9PRK1rFP03rUH8Uhmn4OhWjkg+UdZt1yNXA6htyIc4=; b=eLXWXYaZJIBz+L4+pcBJIEegmKngDEyjjx0GhEQiz0h60DTPm2yExfXweBmQP9u432xI7m2bPVVfXRsFRUXR0lqPfeVZZc/j/3AmB9pR8jIVl8n76FH7PTn+iPy7DnaeXwBT3m+hQu09x9f4O/48Vil49U0FeHqTC9WXv/HCHZ3HUMctgiY0MPZY8DuRVzJgQ61NiTPrRiRAzshf1Ke05nISDrmOtJiFfQW90CaniJXW2wgjcqINZBvBHenyokbG579KERJBCYoM3S1IWIwXa7nK63dS5LLhd9Ix7hTHP54KdIh1PR3YF3de1xGD6xW9zKYqkvhTSJMye4xlWikGfQ== 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=M9PRK1rFP03rUH8Uhmn4OhWjkg+UdZt1yNXA6htyIc4=; b=bHP8c4L0Dtx+Vw9KU+8rIkPrBqnMh2sFmzasIWmVJtWVM8+cJB++X6NQGI2ZGTCCegiUyhoKoi+r5WubZzAwRiaTrJRw1wwAFCuT57ozBZai8mwX4AGSmWYFNXEfksdewWIsFFca8LyXqv92HjuSc822lbz263UIktSKc1lrQaI7NVlXrqM11HYAoAGzu5daMA5QALH2EozmOVi8RQjbsG5F0KseQPYuXLffTRMoTuX34lJKywJCfZipOwVBBidZL8/zW+xMM71mGf5yrLtmTmkU/ukl1Y2Ir4YDbqiQFiCCBzjJmoNiMpvTYJ0mroRodaZAVfMncjxeI/ZKjSx4lA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DM6PR12MB4827.namprd12.prod.outlook.com (2603:10b6:5:1d6::14) by SA5PPF80B25317E.namprd12.prod.outlook.com (2603:10b6:80f:fc04::8d2) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.270.12; Thu, 30 Jul 2026 11:43:07 +0000 Received: from DM6PR12MB4827.namprd12.prod.outlook.com ([fe80::6261:3040:864b:159c]) by DM6PR12MB4827.namprd12.prod.outlook.com ([fe80::6261:3040:864b:159c%5]) with mapi id 15.21.0270.012; Thu, 30 Jul 2026 11:43:06 +0000 Date: Thu, 30 Jul 2026 13:42:56 +0200 From: Andrea Righi To: Peter Zijlstra Cc: K Prateek Nayak , Ingo Molnar , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , Tejun Heo , Patrick Bellasi , linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/2] sched: Skip class callbacks with SCHED_FLAG_KEEP_PARAMS Message-ID: References: <20260730055011.2267333-1-arighi@nvidia.com> <20260730055011.2267333-2-arighi@nvidia.com> <93830a3d-c85e-4aee-b293-b9fbbdbf61dc@amd.com> <20260730095737.GO49951@noisy.programming.kicks-ass.net> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260730095737.GO49951@noisy.programming.kicks-ass.net> X-ClientProxiedBy: MI3PEPF00004EA1.ITAP293.PROD.OUTLOOK.COM (2603:10a6:298:1::450) To DM6PR12MB4827.namprd12.prod.outlook.com (2603:10b6:5:1d6::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR12MB4827:EE_|SA5PPF80B25317E:EE_ X-MS-Office365-Filtering-Correlation-Id: e6028f3d-b1da-4532-7f13-08deee2fb8bf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|23010399003|366016|1800799024|4143699003|3023799007|10067099003|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: VKE23VwecyXKj+E6bMmIdqdEQck0LGnY8+e1A3GC8X25Oln0Rj4mLkqn7I9OjLVj0AKp4Fj7tI2zGJ71q9tNWrqJs4KWVSFc1zqVG+F1IVsj2HBHKFwGZF1nkqUqpslptkf11JAAMWrlX8XB7UytE7TYfMzGRcwEDb68ZbnnVYB65DV4GW1Fd8kAD4wQ52q10COJ5fi3kQvdcKhT/Iu8klnu+GH+lm/6uX2AEbBqAnbkBQGRcwQFwDt0IMd1sTTSkZhJ/ltYLG4usnunB0zdRD1KQkulQWyI/EGOl9hjhhUe0mLOp9zG4v6INdFuPhXJPnY+AqtBGoCsFd1Cf+QK7G9xJCbHzg8kNZcDpA6rSkbQBNqKGSYP77PY3l7hcAApZE/TFOfveK+hNquZFCdE30nlhxiVg1Vq8U25EekeCm0cy8filVZ69Y5akoWiHeftTkOvneCSMtZvZYHDZt/WXdJfGmHLJDcObbq+LbRXSvTzURQkIP8bEWzjOnlOK4/NyH/Ui0bK/y/yppL+wiQXLWjbVtJAqYWciqMq5CPDCSCagOE+I6xveXhEQLqv/GBt7SB4+qdddD5p9iOIPsVItk0QwgFGOVaFBzLdiW5GAVlDOwTMNBJg1e32TG1+spQiCJxgP4lIa691q3laiKaYqui5V4ySZ01XZ42x5jEi0Sc= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR12MB4827.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(23010399003)(366016)(1800799024)(4143699003)(3023799007)(10067099003)(18002099003)(22082099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?SA0n0IHjZW1xJz9aD1uMh6MZfRhdgjTtowBJMNzsOiKo7P6RAinANLZSIYvn?= =?us-ascii?Q?9qaEJwf5nusZIb0nj/gPE2HaqTcr7sWYtI7OVc2nIb+6ZwaRQ6q2HxT+LROI?= =?us-ascii?Q?ELqw7DGsv0qd9PAGzyHoudRL4kbP38mCAXiUqB8uy0d8sewmQP2LvCwsovYx?= =?us-ascii?Q?s2Fv+BCHD22i5amx96hnBGWya+tz/b+u/Q773mPvVUtQ6Fej7LQxVA5xZA8x?= =?us-ascii?Q?GV1Dk/P77C1gMHr+Q3zGzL//sOnQLRZw5j5cL3KyQcu66BX63yicQdtaVZh7?= =?us-ascii?Q?Nzz6Y/93FGAbvtA7yQWrXKHsKDkOrg52mouqxhuA5GP3ak0I7LPtQdrOME23?= =?us-ascii?Q?97T6sg692Aydb21iKT6jiexD/k0vVeodaJwibnWDHeDUJsts637vtB/H/S0Q?= =?us-ascii?Q?QMKTFhZRq6v9JwigfJsuQys1joA5m6Bh0LVMYYJY15H/0Bvku+5shsjC0MYI?= =?us-ascii?Q?370Jt0V3feZT0NkmWehbEDysczSQXmbH+9/OXxHBMCToepAJGyyBjHRCKRha?= =?us-ascii?Q?GGaohLdPF4UQK8fs45JcLa2Jvy0jnz0mUfTpINBvVzw+FTjGDnm7xL90HIqJ?= =?us-ascii?Q?F+8BPEUPMM7YfT9Xn3Vba6/AI25OUHkgjn7JFzRSZngdjrWkqKspay16YrSq?= =?us-ascii?Q?Vu+MS7q2srMNSEhRdUWRXRFl7NWvc/enm58FopFjU/9wk9EW4mVW31hNcuYM?= =?us-ascii?Q?/Upm2uxZtylq2kDN1vgmkdhaKihiLWs5YOGrvRVSO6XQn9xHae6dy5/cKOdJ?= =?us-ascii?Q?x/D6m74XWQ4GvrO92nbB/MoNDq2cWywa5/egT5/Jh2p4+7ninccONBgMI0hq?= =?us-ascii?Q?wUWmaggzJMeGO4tXFmkahE9c+FizwfnVwPDl7FdNUipYRCwmgCRruUVs4KKR?= =?us-ascii?Q?B35xUowI/nC9dvQNiNXAfmXOjFfRvkGaGzD30VgjYZM/vtisweckNoZ4eyoV?= =?us-ascii?Q?6BvWDfDmMLOIGgEXsk+K9vFfDOUIzdvZVapLohh7ev8DVn/QLaofOksfYNvX?= =?us-ascii?Q?VVrFJucY6wWNrPmgNiwp8deht/YfAy4bNV0WEBGb6dkeJyHFq+GK3K087yOW?= =?us-ascii?Q?yXhzSSTi1QlqIk3+kib5y+QmsLPAIW5V54CRkc9pRMMcN4rZL5hIxLQfYKkb?= =?us-ascii?Q?TkkgXNWzmlPZSRLrUV1WBIh2iCkpM9HS9iFe+nd8Q7hiheILJ91zt7GvV2FI?= =?us-ascii?Q?liQsTVbOcmHbgfxhGoDVFUHycMnkxM/yRJ6leulliv+I8McQ/XUWJHAUYWO1?= =?us-ascii?Q?asNAFawbRcqJT0s1/ryJNX3fVFt3U2uaXMf7K5on4D218C1rshQlSduV4aku?= =?us-ascii?Q?Artf0K0WhGpEU6yFRwQXG/EkRCC5XgOYg0o8c+RHSOS2ZXBzvSdAUc9QV4sE?= =?us-ascii?Q?ggL3tZOnKMPRyETegQ8j0YB5OsMGms4WjmQpOzCHfx91bAJ/Uws0lGqXVXnu?= =?us-ascii?Q?A7dSm67H22QTvIvIvnKrMnZdRAv+SalnvCPyWmtvqHFJX3d53NPFKnPNNUF6?= =?us-ascii?Q?okHYzrHr1LsxaZCG+ubCbJvNcN7m4al9uvkuS5qLj9Lq2k8CZgDXV3YBZu1q?= =?us-ascii?Q?2ufwGymTfJJrmqc/amHusQZvT2Wa9kWfg0wpypLfkBHAXlhSBNtSufth2npd?= =?us-ascii?Q?LHsvI7iusC4qiOAUxwADsyK9hq/1oQBNaSrlSNrsqCX2Z1BWzdGOnnHef7UN?= =?us-ascii?Q?44HCdLTJl55N3Wp0sVyk6ls1tIfr6jAX9/Tdtn1HqJT6h9bTf6hVUz6CTEtS?= =?us-ascii?Q?/MwBYrSblA=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: e6028f3d-b1da-4532-7f13-08deee2fb8bf X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB4827.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jul 2026 11:43:06.5085 (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: fkGOoKow0zHNXzC7rICXGNu+EgMd5Nu53MVyDZBrLquY0TLDAwWm9iM/2PG4G4VS3z/DZYAcVrLhnjuRLxMwEg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA5PPF80B25317E Hi Peter, On Thu, Jul 30, 2026 at 11:57:37AM +0200, Peter Zijlstra wrote: > On Thu, Jul 30, 2026 at 12:59:37PM +0530, K Prateek Nayak wrote: > > Hello Andrea, > > > > On 7/30/2026 11:20 AM, Andrea Righi wrote: > > > SCHED_FLAG_KEEP_PARAMS suppresses scheduler parameter and class changes, > > > but __sched_setscheduler() can still set DEQUEUE_CLASS when the class > > > computed from the requested policy differs from the task's current > > > class. > > > > > > This causes the switching_from(), switched_from(), switching_to() and > > > switched_to() callbacks to run even though p->sched_class remains > > > unchanged. > > > > > > Set DEQUEUE_CLASS only when the sched class is allowed to change. > > > > > > Fixes: 637b0682821b ("sched: Fold sched_class::switch{ing,ed}_{to,from}() into the change pattern") > > > Signed-off-by: Andrea Righi > > > --- > > > kernel/sched/syscalls.c | 3 ++- > > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > > > diff --git a/kernel/sched/syscalls.c b/kernel/sched/syscalls.c > > > index b215b0ead9a60..903b47f5d0b74 100644 > > > --- a/kernel/sched/syscalls.c > > > +++ b/kernel/sched/syscalls.c > > > @@ -675,7 +675,8 @@ int __sched_setscheduler(struct task_struct *p, > > > prev_class = p->sched_class; > > > next_class = __setscheduler_class(policy, newprio); > > > > > > - if (prev_class != next_class) > > > + if (!(attr->sched_flags & SCHED_FLAG_KEEP_PARAMS) && > > > + prev_class != next_class) > > > queue_flags |= DEQUEUE_CLASS; > > > > It seems there also exists a SCHED_FLAG_KEEP_POLICY which should be used > > to retain the policy. By a quick look at the syscall path, > > SCHED_FLAG_KEEP_PARAMS should just do an equivalent of: > > > > get_params(p, &attr, 0) > > > > and match the some properties of sched_attr with that of the task. > > > > The task is still free to switch classes if the attr->sched_policy > > differs given SCHED_FLAG_KEEP_PARAMS and SCHED_FLAG_KEEP_POLICY are two > > distinct flags and there is a separate SCHED_FLAG_KEEP_ALL to combines > > them both. > > > > I'm having a sneaky suspicion that the bit in sched_change guard below > > should actually check for SCHED_FLAG_KEEP_ALL like: > > > > diff --git a/kernel/sched/syscalls.c b/kernel/sched/syscalls.c > > index b215b0ead9a6..baf1fc59069e 100644 > > --- a/kernel/sched/syscalls.c > > +++ b/kernel/sched/syscalls.c > > @@ -680,7 +680,7 @@ int __sched_setscheduler(struct task_struct *p, > > > > scoped_guard (sched_change, p, queue_flags) { > > > > - if (!(attr->sched_flags & SCHED_FLAG_KEEP_PARAMS)) { > > + if ((attr->sched_flags & SCHED_FLAG_KEEP_ALL) != SCHED_FLAG_KEEP_ALL) { > > __setscheduler_params(p, attr); > > p->sched_class = next_class; > > p->prio = newprio; > > Hmm, but if we have KEEP_PARAMS then params are loaded with the current > set and actually re-setting them doesn't matter. So perhaps we should > just remove that conditional entirely? > > --- > diff --git a/kernel/sched/syscalls.c b/kernel/sched/syscalls.c > index b215b0ead9a6..1893938c76db 100644 > --- a/kernel/sched/syscalls.c > +++ b/kernel/sched/syscalls.c > @@ -680,12 +680,10 @@ int __sched_setscheduler(struct task_struct *p, > > scoped_guard (sched_change, p, queue_flags) { > > - if (!(attr->sched_flags & SCHED_FLAG_KEEP_PARAMS)) { > - __setscheduler_params(p, attr); > - p->sched_class = next_class; > - p->prio = newprio; > - __setscheduler_dl_pi(newprio, policy, p, scope); > - } > + __setscheduler_params(p, attr); > + p->sched_class = next_class; > + p->prio = newprio; > + __setscheduler_dl_pi(newprio, policy, p, scope); > __setscheduler_uclamp(p, attr); > > if (scope->queued) { > @@ -979,8 +977,11 @@ SYSCALL_DEFINE3(sched_setattr, pid_t, pid, struct sched_attr __user *, uattr, > if (!p) > return -ESRCH; > > - if (attr.sched_flags & SCHED_FLAG_KEEP_PARAMS) > + if (attr.sched_flags & SCHED_FLAG_KEEP_PARAMS) { > + if (attr.sched_policy != SETPARAM_POLICY && attr.sched_policy != p->policy) > + return -EINVAL; > get_params(p, &attr, 0); > + } > > return sched_setattr(p, &attr); > } Rejecting a policy change when KEEP_PARAMS is set makes sense to me. However, I don't think we can remove the conditional and reapply the values returned by get_params(). That snapshot is taken before the rq lock is acquired, so a concurrent scheduler update could change the parameters in between. What about retaining the existing update conditional and rejecting KEEP_PARAMS with policy != p->policy under the rq lock, after the existing policy recheck? KEEP_POLICY will already have been resolved to the current policy there. This should prevent both the spurious class callbacks and the deadline bandwidth accounting issue at their source. Thanks, -Andrea