From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11012050.outbound.protection.outlook.com [52.101.43.50]) (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 7F5313C3F50 for ; Thu, 30 Jul 2026 08:57:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.43.50 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785401867; cv=fail; b=LS7aJISC6/J++fmxNqMBOQUJ+1NgaZt3sLSIctVcD9/nuAdq7wtgYXPWX3Bkvn5oyYh3tx//LtzC4QiKC0mSB4k5LfUX8zXUsI2yiihRdwMH8vL+Uf/n9PaOVI3FABCCxBVfjBS6xtKufA/NaPjL3BEZHGJ7n4yhEXKGMtgwp+4= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785401867; c=relaxed/simple; bh=X4Cbgzyi9+GQmGHJuntPXU626YtEh5xkDGXcdOCZdcY=; h=Date:From:To:Cc:Subject:Message-ID:References:Content-Type: Content-Disposition:In-Reply-To:MIME-Version; b=LXfoW4WZJJKTdqXGUYYQ+VoJIdd1Qk0nPL3m6ruzxhwQGZVl6O6wfSSbLWPUw9lHt1hd4hXCdqxq3vaIpIJnj4uKF9GN0SKmpoLiPonhcLHZEO17UU8Xrl8na1nOrN0ZTF1zgDgAyYkrMKAYKEcay8/NSGK2Ty+23ZGFfqd8qxA= 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=M5lxT7LO; arc=fail smtp.client-ip=52.101.43.50 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="M5lxT7LO" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=O60n89ycHG3ySzuRGnyO9BQi4RFiZtMSgOv9bH75PhNwPdD+PzrEkOQPSKC2gH8+BIlcAHQakj/1ttrBBPdr25Gw3ER9MQAioxnQXiyk4/+JBJydqMKej6lUSOMfOAocb6+oCYBWZRNcK0Fce+NZC8JCedUzinGpT5gqVh91qV/BE4GBywYu4Fvsi49qKsmbFFPxQBNgutBI/16q7jr7bTVTKnAL4g+D/KRoY6alA5nOmoDZJg+ZmSmP+wVSNINZlJplTCfUFOH4dJrCkdTCwhZuYoSCUaRMvdhDaI97N0NjsWhsymi+AEb2CN+b+74bNqJ35W9+nrQjzpiqmClQog== 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=814qIyrNsk4cwe4YBlFgNcHjy5gjzpTfWkUM1aqSv3E=; b=T7TielNuT0KMkf8ehee64rWiz4U+Rs+5RyFV02sFeXQGMjISsxeKZlAwtc18UFeJ0FSZKRnfsIYAyy7swWXpdOFT0hlTBTHP0EVD2/MvDcjYVQfn3oJpJfUpT6NfUtAlnzc0/pxr0lu5o/AaxL93sf58aF8zMVeoxGvfGevLjLmlc4PRdU+MAYCOC8BlPp46bAEzQVhlUA/s9s77nBXfDIFKwTxOahwtwQ4NsuB4KTlo66PBDjzIfAsi9zXqh9SSYhuZiNvbyet1WkG5PwWNj9ZCKoCl6ahwMJ+Su/XgUD1JP6sukDYa3iEXwjat9vlXjco7oAZCMZXPnmBn2w5wqQ== 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=814qIyrNsk4cwe4YBlFgNcHjy5gjzpTfWkUM1aqSv3E=; b=M5lxT7LO/hnS6G3eI6PEUHJfniuxMZfqAB80j9OePJQ/5/V0rbUTLkFWPvQiABctVCrSRUi3j7QGVRhBDIT656Ro0DLzYa8Bd6ZuPOYZLvYu4yHIuYSP8HcBu1tgZnJ9xTrtlBfM9bt64AyFR1HCQcpxVt3nCztiW3wwSWwy3j/+YG3/I7Ac2huE6rJr0j2bXpqtoc5dl4sn9azh9Nrb7nPiGeLbzXMshWrTWJWTztV+pv4aejP5XIvu/997kDe540PMVa63e/yBNNrJ7xVwnhCrurVntV08Pd5G9I2XpToA9vKwLgCpnIACBA23RLjSl9RZVrruwRFKdvY3psaiPg== 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 PH7PR12MB9151.namprd12.prod.outlook.com (2603:10b6:510:2e9::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.270.15; Thu, 30 Jul 2026 08:57:42 +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 08:57:42 +0000 Date: Thu, 30 Jul 2026 10:57:29 +0200 From: Andrea Righi To: K Prateek Nayak Cc: Ingo Molnar , Peter Zijlstra , 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> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <93830a3d-c85e-4aee-b293-b9fbbdbf61dc@amd.com> X-ClientProxiedBy: ZR0P278CA0078.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:22::11) 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_|PH7PR12MB9151:EE_ X-MS-Office365-Filtering-Correlation-Id: 6c90332d-b6a1-4f3a-998c-08deee189d58 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|23010399003|366016|1800799024|6133799003|10067099003|11063799006|4143699003|56012099006|18002099003|22082099003|3023799007; X-Microsoft-Antispam-Message-Info: 15IGtXo8jFkgj/05b0ykyfRv+3fI9Eui8Td7IvVpx9j8PTu93U0AO9HtRo54OAd/I4ztWLxetriDOjlDapFE8xHRfTig8OEIdcpOAfaVhUqPbahSYY3VMs1I30ffeNU4uL8VeV5KDRD7ZHBL1r84P2hhG4BwLhqdkm/J6U+v4DEIx9/kM9+uuTEF4i6WJ6fe6qQwI1y74os4RGHZc2Do8A+O3yNhyXDzVycMwiqjjx4skfQ1ZgpO1Gl6yNsLH8oGG0NqLkj8YGSWpJbCmvgrmMcO6NmfQ3RWgEMoQpe99pddfY0pt93n1EU+V4njnf9aP7+uBEUzkkqCUDldF/fGK752AF61LRBPH+e7nU+7FJ47vEcQHlX1k6E1KUy2pvb3BBb6/y34+ixeMMvIXlpY/rQr0vXLSNk7soKBz5B+KMXs3dUdBtOR+ylim6z4V8QMxFPN6GZLVICNoL/UisL879tTbs2P4Ki32oTwS7i7WGPGukE6AzbqNnMEONdu4lKESfAhKY0GB/Vgu1HtBN2ddYoR83HEmEoy7Mj7rtSFWPNruhHjZQyQ60ZF/fBMIzpkoAPhhO/xiI7VRghW2ghrLUJsnxvqkwRQmi8D6hXXGNzT7zWA5kkWuO0mbr90XPghGN2ZvkeCm4H3YADPz5oKTt2TNiu090xl8BI8ihRe7qs= 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)(376014)(7416014)(23010399003)(366016)(1800799024)(6133799003)(10067099003)(11063799006)(4143699003)(56012099006)(18002099003)(22082099003)(3023799007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?7Ax/eD7YBe0hRaqm+x8k7x3lqMxgEPpbUbI9EbPxBjrZB9/vdxRUQLkGj/gf?= =?us-ascii?Q?UYYu6J6zMWY7L76uHtE9ubAFhh2OOikAp3D+oaIY079qak5+Wrx80wu8xQFU?= =?us-ascii?Q?ROY36aczcGcLGyySMb8xldSKt6Z8HsS5ahK210WSgNE4B6KXWT6km1SZkQeL?= =?us-ascii?Q?oM2Yg+3U7gohocmrx4pJbVzIhMhSetZNCbkS23YWEzF2UOh7o/0RHe+Vo/wk?= =?us-ascii?Q?q6gujIe1jl94SMZvoXgOpep8zt++vAJJNpLF7mHYL1jWwP5jQqSdS6mm/W8p?= =?us-ascii?Q?WPhfzy4A5cWJ4hLxWfXJEL6hfzJLNEN/p9TV0aPwXuLMcdjLFGL880UzGguF?= =?us-ascii?Q?YhOp6JmG2HRbvq+7CY9zVFLI5rkehguUc0tH6XgEgZHP4rVvKjIksMRb7kBv?= =?us-ascii?Q?uNxeikDlOEBnR8hASsjoTe6FkZGw+MCt+QRkjBc8uK2s7INWAaS2rOm2MSY2?= =?us-ascii?Q?tIOpC30kuwAf7ss/DbtN1ic9rX/R6zbA5HXtdOGIxLQ5LDhfjpwA+0mxtoNd?= =?us-ascii?Q?MKYo/yewf7cbeoDyWhyNQMExPSbPu2KydxZlTGPjaFr6C55CndCHxsrVkTlm?= =?us-ascii?Q?7GMxfp5GYP1b/U8UgROuwJgFBoGJjxv1L46KNnNaIBZDo4hbbBnnTKgWrnQJ?= =?us-ascii?Q?n0wgf4FC5LdEkODLjc9lGTirQ88yhurw8RHJ8HleIqB2DuEHxlGjFZ7uzx2C?= =?us-ascii?Q?11K812ccG77X7EQx7jad3Pe/qpkzEFEJWHIZXY0WRQxn8ZTU30DfPCu//YFk?= =?us-ascii?Q?LMLC7F2FnBxvgjJiVDMxpcmiGr2StTWw6UoSdkHGQBJe66U2FtZnAW32Jk5+?= =?us-ascii?Q?Q8jdAcA3fjPAgIlhcuwWNRBbROCm8bnQNPKso13mLKrtFbFp/JAHMY4vOdub?= =?us-ascii?Q?wO65sHqzL5o7MRUsGkqKNdA7h9llZoU4kQbsnnQ+2/C3O7wxgygFbJwy5gYb?= =?us-ascii?Q?kOTCl/NFC2gi3byUYB8T/oNF41CH7VKZwIA/qBmutPnfrFCXNMmjreu314fJ?= =?us-ascii?Q?dS6HGzQWmrj8fNC4GPleAvoSgq57ldjl3XdYEyhOtun2zgqobjdXSbYOD4ic?= =?us-ascii?Q?M5oOcPiqXU+jgfmn3L5vNx2DPZUU6sTn/CN7gaoXgDQOaM07h7008klI6fgY?= =?us-ascii?Q?d3wfOzhUoCgFCnJcXReHuLcVu3nYSwtnOHfG9sYNiFnR95Yn5vw4Z8GVdhTO?= =?us-ascii?Q?6qrjIl6cqJbu8r+gYZjS8DFn2p4RreJ7RQuLsHgbJdjA8JdurZ8ZNiMCMP82?= =?us-ascii?Q?QehWWnoEXDrhCy3NWM/XjrggPY/eUANBAcCu+vPOTH5cYBdip6pR4xAL7PVL?= =?us-ascii?Q?Jm6KrTKlo5KWTIbh6tsEeSucrLslOhtGCbjOVK6WuVIVfReJFrAjbbxW5udG?= =?us-ascii?Q?ARe9f2yQMlLBmkYBaWJKVvlS8QEV2gVWGdZhRg8TcZOTavJcrhnE/VPRHKSO?= =?us-ascii?Q?toVqTQ0ox+LK6NfCjWd9Il1QIbRYhBRKDU5W0B0fvRy/NdqsFfrdLvn1MNUp?= =?us-ascii?Q?8/y57UNPQFyJInKTN//56GHuiYQUN3V1reMkFq6tN4qczL0zDC9C2NQF7XPa?= =?us-ascii?Q?BWnsFEptbn9XwylH2/om0ZonPPKUC2UgFyUXFKKkgIsLpubDDR7BfICs7Vep?= =?us-ascii?Q?0xVwMc7S2Omr2SVrJMdO/t0zUzd1KUu1aavWBvnBXniByjZ8iWb0TgeDuiiw?= =?us-ascii?Q?VrCR/+qG8PH/WyKijZtZxSAjgkG+1K0hTB6cxP5HrmtoNLnzEcqIS7UluYG2?= =?us-ascii?Q?mKUVxRtGCw=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6c90332d-b6a1-4f3a-998c-08deee189d58 X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB4827.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jul 2026 08:57:42.1554 (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: UtnAFN47g7zUlLfVVgLSxelsrQY+HMN+gVcaXhjO0jqWp1a/9gAf9xeHXueu7ROeoLG8AVsyWy8el/cTJ8+eAw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB9151 Hi Prateek, 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. I think get_params() only copies the parameters relevant to the task's current policy. For example, for a fair task it copies sched_nice, but not sched_priority or the deadline parameters. Allowing an arbitrary cross-class transition could still apply target-class parameters supplied by the caller despite KEEP_PARAMS. > > 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) { Changing this condition to SCHED_FLAG_KEEP_ALL would execute the full parameter and class update when only SCHED_FLAG_KEEP_PARAMS is set, enabling the problematic cross-class case. IIUC, SCHED_FLAG_KEEP_POLICY is handled independently: the syscall replaces attr->sched_policy with SETPARAM_POLICY, which is resolved to the task's current policy under the rq lock. Parameter changes are still allowed in that case, so the __setscheduler_params() block must run. For this fix, I think DEQUEUE_CLASS should follow the existing update condition, so that the class callbacks reflect whether p->sched_class is actually changed. Thanks, -Andrea > __setscheduler_params(p, attr); > p->sched_class = next_class; > p->prio = newprio; > --- > > > > > scoped_guard (sched_change, p, queue_flags) { > > -- > Thanks and Regards, > Prateek >