From nobody Mon May 25 06:56:54 2026 Received: from SN4PR0501CU005.outbound.protection.outlook.com (mail-southcentralusazon11011043.outbound.protection.outlook.com [40.93.194.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 757744BCAC5 for ; Wed, 6 May 2026 17:47:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.194.43 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778089628; cv=fail; b=s+PzP+oMZ0ntFXOmbisZl15FPMf1UW+GRpwwXX57KELqlX0yTuEJ8Ji6rlGLbVik9oO/ZzGTttq+Yo4sH4W0iw1DSkuSaHCrdoTVIcj96DVeHDMZjwiR6PgQWh3gchBP6P/thFMKwe9lHFF9YEzGzWVDAGBAeT4H/ZrXlj8sB58= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778089628; c=relaxed/simple; bh=3e030VE0QY3zX4DejZAvjQ5mmJMWWVaU4g1feOTzVdg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=NnTq7utsig6lXQo1JY4BRhGJflVBhZHOaQbp8PxwhukctHceZqnOm8DlCEEShHmwfmsNtgP7Z05tHMh8n8fOAWPnesEYWG/KYUhKGo2CSs/gkaD+bwdwiMlNsxWEKmUYwoRQB0ylBhJ0z6SK2F9lgnaC9YuuorJGnMg66HIRZRA= 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=kgyfFhic; arc=fail smtp.client-ip=40.93.194.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="kgyfFhic" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=csmKLG5wh6+qMWj4HnU0bjIdl+CcWgK2rlzemCUYFmvyfZkou+ti3phBwb0vPsUbGr5Xjenk/gKphtFpMV3ubI74ya9RUB+I1nn5wEBLYy5V4YfOxTAf/Wyz7cs7NBR8jXq0bhi6vpB1AAsA4nvR1tLcVqhgHj+lAvKENjkBSMT5LpF/QysYJVSyHE0TAC1hX1GGZ61gSVK4KoC+SZuSiQA+dNrLhilne9Mow+ZcnvGeXngGHbeDXun0DaDYj2yoIuYAYEhlP2Ga7fT6orhgy6yxAinnNe4+bdZHahZiouAGBgxLJTU7Ow8Mj5hzTH4e9Mdiu0fc3QvpNl6bgTnkvw== 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=CFgYFfH28KPWSShjbsztDEOJxOUYwiwTIYmD820FdyA=; b=ujdwwv/vxkQkBrGnMB+s9YBL5Kn6+8WPUKJs4t54wA2UNYvPzk2YVnTwgLiFTR3qwhDzBRmKQYcOzM06T5wo7V2UBIbYnc/pFvOa0C89TiMokT+gERcrTRF0ouel65WogQyFjl5lEOlafpeRyHy7hxsTOZJxpYgxE4fxxuMviFpwlTTr/lfpajnsW78MhZyxnjCi2xlgxLjTomje0pHankJhn1Y+YdoASJdwWwK6gG07an2IBVMiy5ZnMgHw62xBRRxltiXAn+QQn39Wit4UMkoEyprbY5D3+WxY0G0rN5Z8HecnhjVXaIakQ5j+/fyD1R8BVNonLqbazelid3i/uA== 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=CFgYFfH28KPWSShjbsztDEOJxOUYwiwTIYmD820FdyA=; b=kgyfFhic79OD1JajO5PCURWymWV/KmT751SbkCXK4a92jO8vxRQdZGXmc7KKly+hrMTXIJ58a61+6+V9vuEGQEVe+g298TU0dUW16q0/gKrZyS4cZwq0mwAcYrYHhuAIPGzzM4fsrj8Ew+JSmJZo/1qEsZnhNlqil1P4+PZ2/3tGEUHWeeQ6YZUrjraV87BmaEK70zNV0Nl8MJ11JVmxIyNcS+ikfdj+miWPunUk0ujf+i2QI7JmisMct1UG/hY0Fon7v1zx5dPStltVzXcpHP5IjqhOohaVnSSZcliE84Af9xrNMVZE9ZkG/sc6akonW7GJlJUsZHOtLW2SC4b3fw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) by MW4PR12MB7467.namprd12.prod.outlook.com (2603:10b6:303:212::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.15; Wed, 6 May 2026 17:46:55 +0000 Received: from LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528]) by LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528%5]) with mapi id 15.20.9891.008; Wed, 6 May 2026 17:46:55 +0000 From: Andrea Righi To: Tejun Heo , David Vernet , Changwoo Min , John Stultz Cc: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , Christian Loehle , Koba Ko , Joel Fernandes , sched-ext@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 01/10] sched/core: Skip migration disabled tasks in proxy execution Date: Wed, 6 May 2026 19:45:41 +0200 Message-ID: <20260506174639.535232-2-arighi@nvidia.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260506174639.535232-1-arighi@nvidia.com> References: <20260506174639.535232-1-arighi@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MI3PEPF00004EA8.ITAP293.PROD.OUTLOOK.COM (2603:10a6:298:1::44c) To LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) 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: LV8PR12MB9620:EE_|MW4PR12MB7467:EE_ X-MS-Office365-Filtering-Correlation-Id: e2e78cee-39ec-4dae-88ab-08deab977659 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|22082099003|18002099003|56012099003|7136999003; X-Microsoft-Antispam-Message-Info: 1nSxLsQx+W5kprPza0ZY0iDFhTMtTLKsiYxlJkhwot1m5VllfPM73IDFSCMp0slMAIUEnWAHXkVmHranbCuAsqeTQAbF+o+DWKeGGrxrFkWDeVj07TLvZMO99rb94vpOjBrQCa4d+hYKioS8KOT9gouGEIt3YhdfN2H7yXsfRkwQj6FBe4iQ+6dowN4hVrUEvHc6s0GyAcAvJv1dYGmgoaxMJDLnERt5SxgFsCK89sUezu/DGWJ0ubzNYJ3kXzEZHo7y19McgoEBLOWAUsIrTF8cUKggArQChNwdy6J8ukK5eqwH1ydBXuaAwokJnite+qn4Oar4XemKTkfC+2Y0zhotYW3cyMWoi0HdG68rpJ1ccPmAS9RRTRVHX1/z7a/9u//UkIqxrCaeMdJk5ynMp7loe3xOUVKPAzoD0/7SpPlPARZUZPUFfHljRlCKeFKS0EvxEABiO264mTjB/zKtW1HEHrF8fUV2BanH/THPScSd8oFUGGr1gsgHjAcKcmEsZD8d7FswLBQgbFSl4iv5cP6h1sIHzeY/vQl8tIlxrE2lXfReaiQrZyNZUejq6qVO2QXyG2tJg6HQEfjJ0Nk+y9P83BJeg/UJ+j01nJLKG5pKBD5rBF7ORzTFbQuHex5ES7cvsR456G6JqtnwbLLScCaWkLfEGgmNM+geyEwKWbWj8xKxFYDkO/NZA43pcIzH X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV8PR12MB9620.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(22082099003)(18002099003)(56012099003)(7136999003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?7XlMBOpCyvGJmhKKxay9Bxfe9Zfhkqx8TKztlm7P1e1iiCz6s1uNvCHFg+Y6?= =?us-ascii?Q?t/sUBCidSJYUVQF6JaB/Kn50QaTMak3bUbJKCcVUFbcO4/i5U6LcrG0ThUiS?= =?us-ascii?Q?nGTG70cvvd090OASOygTPVVSBdGcCZIUs6DJy9fySTxFyW6+wUTo4ZohwC48?= =?us-ascii?Q?h4hVfGhoZavILiuOHnLZmLA6Z/y6cylnVgas+tWxrUpXZaTfvhh4EYUBjYoG?= =?us-ascii?Q?YG3AXRfRtBiv+VzOjRukwKh2zt65ASLPoPyLhJujZ5yjG+2Ddu9LP+PXpL9l?= =?us-ascii?Q?KOo5ym8fHeB/RzvKphlFgqDk/1oQNASiaOlIdJdZKKkVQ8de5TauLNe5fxup?= =?us-ascii?Q?t2vlofte4g/PQjON5PAmETJEVFjZub0gMsni8l28C4vmoJY9vfL0N8t4I7ay?= =?us-ascii?Q?hhJJvZGooZxfSINvVjJIt7lLzZPYn8ysH2ktWZbszlArrzeDND65SPrI/hm+?= =?us-ascii?Q?rGzXuXn02Tea7CKftwSmW0ohBlK5dQkNKwJBNbIzOaxMlVoN3gA5pgRyPU9D?= =?us-ascii?Q?f8Yyq2UzGXik3Dfen/wvy+HsuszC43DvQVmk1ZkUJ5xwHdfg/djtkRKGLkXo?= =?us-ascii?Q?rwy0kMrVR3rvzrLj7C/uLSXQJm5bUdl2fA25fwtau8faaoty0zFpxhUAmN5L?= =?us-ascii?Q?anYbrvebjHlg/LKGmcnVqTGn3FdmmkYb0Tfh0cY+6RguRPJEh3FQuBq6OU+H?= =?us-ascii?Q?7tOdyqavsnRLxWFkAEMzMyIpyknSVhOIdK0FGbyglEKWZq8FCcWr6UhlB9EQ?= =?us-ascii?Q?G8xPkeVC990OGw70eFZdjaNcdUIBCn039mg6GgH1Gwv/6i5k9Ah0XZSpUEfc?= =?us-ascii?Q?iUYM43VdChgIsyJ1+F0xo/XnK1HsKP2bEYqL65HDCXYngsPA3haUH3XTwJs3?= =?us-ascii?Q?lONG1YDfLdFXPgV/G4Jqe+gQR1b6N8qNRnKDhdkvIb4PJMJaOgey2Qq2Fqrp?= =?us-ascii?Q?4y7WRZYY3KnZ8uW+4ugvzsbe9Lx5TU872VPkk/7gwsA/Go8/Oy5iZm3PGfqg?= =?us-ascii?Q?vfc53cAUeNXMvZnWsHtSouJ4uW5opI1rjbonkoiYdBCtxDIQS8hR70kPA5KD?= =?us-ascii?Q?5SD6Gi4NJnQIc4IIZQI+Jc3+RBSb50AqKqP8PgQ+KWJbXx2Vk+trkmI+f3eF?= =?us-ascii?Q?eITElc/AN8VfFYftSs82QYEOOOOzqz6NiJBnU/tyntwa1/laDu4P9dLvA4yb?= =?us-ascii?Q?Ws4lgv4hqfLMNdKZZ95LP5y2r6rBMytXlBaTghXo9idcrE/JUgvIuc/hHOa2?= =?us-ascii?Q?eZdYGXnjtSkYm0zcnpyyvGc5h8lZXXTDBQX6n3AyV3EbS1fDRXJXp1uToXTW?= =?us-ascii?Q?viE861CWqQVkpGzX/wtUewT1oIG+4gVvq5lcpnoEshLiSrov38s28RGML8KX?= =?us-ascii?Q?pZr/McV++AsYJtrNFDrNoUypJ/baAuhUXKo+Ac6mQKlbJ7QqJMjtj+ltzT1k?= =?us-ascii?Q?FfSurcPF7k314Cc1+0ucE77X14cV17FJlXJAe/xMBz+QgJqVjOznILsS8qGi?= =?us-ascii?Q?TUz/jZvlqLYQz1jQaYUFTqiIfGMnfuqs+yKzp+DiIF4gXPNfBn1Tjo8UdXR9?= =?us-ascii?Q?fWdBtB78tbD8WCsO9ZgQblrHBf0aKlqPvOm0Z7+kyqXpTCPf/Q3L27Woc6wM?= =?us-ascii?Q?D2lYoo5A+yO8PdwBcYLeLF7ILaZTZIbHbpf0mh+OlYj9UDUGYL08OnYPhkKR?= =?us-ascii?Q?IxSx/QuBs2qXYSP9JPqe37F7zogMVde+pQMKi2LTPpQUVQe/?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: e2e78cee-39ec-4dae-88ab-08deab977659 X-MS-Exchange-CrossTenant-AuthSource: LV8PR12MB9620.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2026 17:46:54.9472 (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: zOzg8+QLKbc/SeInnLU+SSjgUNT8Pk41hptNx5kXOHP88T6PTKcRe89UABwLw4JctDFJYHp87GLPVffFEombxQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7467 Content-Type: text/plain; charset="utf-8" Never attempt to migrate migration-disabled tasks or tasks that can only run on a single CPU when switching donor's execution context, preventing task pinning violations. Signed-off-by: Andrea Righi --- kernel/sched/core.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index da20fb6ea25ae..75541e5bb66d1 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -6793,9 +6793,13 @@ static void proxy_force_return(struct rq *rq, struct= rq_flags *rf, =20 update_rq_clock(task_rq); deactivate_task(task_rq, p, DEQUEUE_NOCLOCK); - cpu =3D select_task_rq(p, p->wake_cpu, &wake_flag); - set_task_cpu(p, cpu); - target_rq =3D cpu_rq(cpu); + if (p->nr_cpus_allowed > 1 && !is_migration_disabled(p)) { + cpu =3D select_task_rq(p, p->wake_cpu, &wake_flag); + set_task_cpu(p, cpu); + target_rq =3D cpu_rq(cpu); + } else { + target_rq =3D task_rq; + } clear_task_blocked_on(p, NULL); } =20 @@ -6893,6 +6897,18 @@ find_proxy_task(struct rq *rq, struct task_struct *d= onor, struct rq_flags *rf) */ if (curr_in_chain) return proxy_resched_idle(rq); + /* + * Tasks pinned to a single CPU (per-CPU kthreads via + * kthread_bind(), tasks under migrate_disable()) cannot + * be moved to @owner_cpu. proxy_migrate_task() uses + * __set_task_cpu() which would silently violate the + * pinning and leave the task to run on a CPU outside + * its cpus_ptr once it is unblocked. Stay on this CPU + * via force_return; the owner running elsewhere will + * wake @p back up when the mutex becomes available. + */ + if (p->nr_cpus_allowed =3D=3D 1 || is_migration_disabled(p)) + goto force_return; goto migrate_task; } =20 --=20 2.54.0 From nobody Mon May 25 06:56:54 2026 Received: from SN4PR0501CU005.outbound.protection.outlook.com (mail-southcentralusazon11011043.outbound.protection.outlook.com [40.93.194.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 88A3F4BCACE for ; Wed, 6 May 2026 17:47:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.194.43 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778089633; cv=fail; b=YMgXZ+NaBdWc9oYfp0dhXblL7k1SuCJsMH+b6kgT13H63UL0Jc7N5xBxynO0CN4TZQD7a4eBSnEt8Z0DAKd8OiReGd/CTHF0Oj+onpWYVtYD9/Ct4cTykfSLla8HEtGNK2wo/B6Q3KO6usH0JZ7AzfEmgJHoBEYYbEkBGKutiGA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778089633; c=relaxed/simple; bh=i7zf6FkLHTUrdNcI5LCle42zVp10dvuloLWOvUf2DUs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=nGw66okizOib21CuyhYmrNv8CLuk4Qdun4+/UcmwIRzQN2JkRrZRmemyvLqbVauvitjmA6vFxUYdEk4MDua+MTysrCAdBpk2q68dgBb52VGBz4c6r9cD2yM0EkhUtL16CxGM91YkgBc0JZQgkBFsJdOSyi+C8Z4hwnDKXs5OrVI= 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=AuFnFhcZ; arc=fail smtp.client-ip=40.93.194.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="AuFnFhcZ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yMunHKU8bpx/hOWP+rVOXGCVLvmHAHeVCYITV4PrtDnhDHhV4gS+xTHiUD0RSmg/IL1vHG2YhSHPC8am9lkKivb+YXD2LZl09yFfql2Jv37wS1y2BdWSYQkZ6ih16mIB8ekPB0OhymZKqtn8ABZq2Zyc4vSzwn8OEwhs4PPNwzmSfBzcC+c27EpVjahOV3ve0omF9w2Mdvvbd6WlJjrBhr45kF6tJJBZ36QwL/7MIHZyGL+sBHG/Tg4/kw6pzVrLRkDS0q1u8LG6q31ngWC66duFOTefr8Vo/oDNhuZa4nD8OosnNXkZf3Ib67aet6aFoQcOkLA2AFmVpbcJqYncXQ== 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=NeAbtdz8SdPUu4dChtnv7NUk9iQ/BKVViCIsAVWjVLM=; b=Ck21atnujSd5jYi1+r0rgaZ4wMsqEuIU7+nmPFDxwRzvywgdHnVcoUVlEGARWgNQnLs6aCK6kyzHQ0dZaWSNVsE6WGhEy5gE7tcrL46yr3D5Y/IwXX0zP39ZEdmQhedP5WclfIDjjQabyjV5aQwjujFw3LEdm/hqooFRkgpVZi2a+2li/8nVmE5hkiXe+3CBhHiaASylxkesAg6BZVEmuMEQth/OpphjATF8bDDMtzSXhK0u5H2EuNV8a9ttw4mIytk9Hpr1nLjCfbw1tAxKCfu1Gmd6PXaDUsVtmwxDX8j5cgWM8ey5FqihfejOnQvP/d9NXqsxZ+YMH70hiBr6gA== 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=NeAbtdz8SdPUu4dChtnv7NUk9iQ/BKVViCIsAVWjVLM=; b=AuFnFhcZNdyDHs/tOyllBbH4w+hYSQh3debJKvpdJTxTX+sOE4DuZld3r+Azf2I5j7sE/wnSF/LxSVv9h49Tigsl0ass2USk7yfh02lKvbRnuODjf5IHHocG9/VGeOdfRO6H/Mciq7OWVB6WWkWsNFyNk1k0ZJLgLJlMMUmZG02ivd37ZAs67YrxMjdyGC5NypDbcmqluqbS9lFuwctBFTWuk6w4E7cIWdGMknHOCtUxZ3GHmZDJy0Zwkr5T6y6OGugZgg65zrZy42fimkLg2IxWNm+8F8xG0qHT5U9EJx/zwqLIbNvggjXqhG4Fj59Ia7c30/SyBYCKWRU0GwhyAQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) by MW4PR12MB7467.namprd12.prod.outlook.com (2603:10b6:303:212::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.15; Wed, 6 May 2026 17:46:58 +0000 Received: from LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528]) by LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528%5]) with mapi id 15.20.9891.008; Wed, 6 May 2026 17:46:58 +0000 From: Andrea Righi To: Tejun Heo , David Vernet , Changwoo Min , John Stultz Cc: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , Christian Loehle , Koba Ko , Joel Fernandes , sched-ext@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 02/10] sched/core: Skip put_prev_task/set_next_task re-entry for sched_ext donors Date: Wed, 6 May 2026 19:45:42 +0200 Message-ID: <20260506174639.535232-3-arighi@nvidia.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260506174639.535232-1-arighi@nvidia.com> References: <20260506174639.535232-1-arighi@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MI1P293CA0008.ITAP293.PROD.OUTLOOK.COM (2603:10a6:290:2::11) To LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) 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: LV8PR12MB9620:EE_|MW4PR12MB7467:EE_ X-MS-Office365-Filtering-Correlation-Id: df6b7c18-1770-4c07-486c-08deab977865 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: PePRzlSR45uzYjlpWnd+jY0xyUpaObtjiVR/uhhrSYq9HLZ69dyw2HCfgu+KCPTvF/9z1iQL//Wc/TlDb0WTRIhWtbGprhycf1qoA3h+UCU7kV6JkXSALGtLA30LujyoY6d8eZIdXDCGE5yCnAsnxgtI3sBQFu+evkg5yBIcYVruS7bk239PwrCdP3qAWTLzFFFbIksX+qQ6LUgxihHEmALbRl27w6evtYSxzgFbpOA3/G/ZZhUxQbX7pYXHnhPveBK1fuok2lYEUOnmJEVdC2od3od3yREfwu4brk5DbjSH8Gz7+wJeBnmTTvMKLRe5FUxx7IgvBI+jaeoGSY6lmhKd3/KE30qrFWIXyyir+rqmiariuhu1kL4IcordqJ/x/IN0kVmyt+zbe2QTuAPFE+OuxSA8NtTzCw4rdufJFcn2Oy9dsLp7VmcIitx7lIGx+DDMhqVJLTjYuJmkxXqoUnDFK/veSBtsreHp0nmg+TuZRsu8+bIdUb4pGbIdPgwwuvnye3Sf9igiLj11MsR6cbZ2quO62a8KBTAUCW+6OJ6IKKkrylk12GRaLiX598FcJUbY1pO3livkRyRPnSWfYzffHT6rCygfF0p16Bz4tuLY1OjleaiBiIQSYgibuFxQFMsDwXoP5uz5Whjc6UiS5uza+WYopTSbNnUpzd7vKuyiA+SK3wPep62tUt0EFY45 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV8PR12MB9620.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QetjqSEnhxA8hCP7/4enBIIpkuid5V3i7ANHU6/S70zVwtiQcMohntg5XUKY?= =?us-ascii?Q?RlFP603UqNK4W3wy/fpV7n+3yoz1KAFUfOmnNdXSYF8h3sGL7TZaOkTcWxZm?= =?us-ascii?Q?swtcCc1gDUNbqo0vS1JxRIcseu5o58oF/NDIszlsFvCvDoHRSGGKdJi7Xvya?= =?us-ascii?Q?fpXu05h/zVvFX39+VIdNbJ/m8egYhwx26YD7KFTVagxrMQzaJrTpSflfi3P0?= =?us-ascii?Q?8/J0Nc+ukbWCHSJ8zaMY+fKa3qU+fC6lYBimNyY5qM6l+JyH7TnFJE1gC7hj?= =?us-ascii?Q?fOrJVrc9PrIhT6BISdPufzh1evGmB8y3vKC+BDEI+pOVPdBGFCes7jvcbMKe?= =?us-ascii?Q?aJ6LBD/0rhixdahXtlARvgJks3ehOkPPm+6pYaLZWkT1xCsHeV682CrxNAJo?= =?us-ascii?Q?WoVrnpwarC+ZRO25OOiQsU5H6yulgwp7vvbTwnqwmceiMcBT/jAt0mtmQ75z?= =?us-ascii?Q?jjNGhUeC9tr15Tqn6xZOxCQIsQzpeP0owgzfgG4DQLGH209IJ5Qe05//GtAQ?= =?us-ascii?Q?hRECZd1QRb954ZxKyOMj+QD1sMRhJ4bMwpgVpqouXN80lSaCc5MzVWYSgMYe?= =?us-ascii?Q?SetCA440fbhqYqHdpCHzmCneZn8ZtfEHYPRzbtgS+zSoy6HBQWO6KlfxLcqq?= =?us-ascii?Q?vupusznHoL/b/gHslQFPEoWfwc/j5oOVo7xX3uOYxecFvE+zAsWzDArzuzn+?= =?us-ascii?Q?FITECr0B/4VRKi7oGjDigd4gyq4OdCGQAH7PYB0JXgFIlMDAviw5XffYtwri?= =?us-ascii?Q?n9LWsoU7CNT1AMdGOQc9pEesjiU7910JzDiUjA5gkM3I/qSuHTM9I951mC9H?= =?us-ascii?Q?7Z4lT8qi36ExTJ1K3vxMtJ/ipUnP+dF/JzGp37Lg5ptHcTYC+z3fi/yBpg8y?= =?us-ascii?Q?LOjQxuonInLz8V9H3F3CjGcaexLfIFxOyawPB/4K8ub+K1OaVX8fDP1LZXCK?= =?us-ascii?Q?IdOu3iiUdgzhVeXBGGqTvrFkDS0DOE14WA5CFtltIVdDYgbd4wu1LhRG5YoO?= =?us-ascii?Q?VRQrdszxVDVTt9vAW/qAVP6UqkvuTOuFdOq3dYjevQUQY2pJT5bSVDq3sajz?= =?us-ascii?Q?zs4CjxYJTsNMnesXo7Js+OzxuRH7J4d1V87lZC4rgic/LnMvFBpMj/GlVj2D?= =?us-ascii?Q?uNhekXOjx5yUrlTbyBOLdQ8pqQoXzixO9sEOU18onvLA4wa34EclbFnZNFKJ?= =?us-ascii?Q?9f0BD+jLVrf1VRSQQrx71HGMBbq+W69ScacoMeX0IoPdkG03yeKtvDP5h00r?= =?us-ascii?Q?XV1x/FH8JQTVPo+lC/8BXcG1jxh32YlsavaJm7gpTj7Iwj6f7ZkVNIZxK0d5?= =?us-ascii?Q?LpvQcn/uldBy+wVUJ00vJm5zXGMx5X+ZskZJRNDFZ+gtRyBsg0YTx8Zl1sn9?= =?us-ascii?Q?/j1CGzKNJKDfY2YLxi0ynPOz1rSpYF9v1VHF3tN/IX76P4CdDQxAmucX4aF3?= =?us-ascii?Q?kMD+w+8qSbGfVzInb+R3h02XFvUDwp8PgsZdeVPYnf2vRqC21tQbslQsr6iC?= =?us-ascii?Q?6Rxdmw6Me8yANyOv6/pwtZZF/oC6pZxkQw051JJlfyrreVVs2BpGr0QbksDR?= =?us-ascii?Q?qlhxZromkCOpCwteBBoALVo/aMIlkMNkGvgbuOcuoLnCOt1B9LXmlnbHcbcb?= =?us-ascii?Q?dH5J/ctQ1FuwrotQ7d/nfcWyEiPNHHa4Gq9E9QG4ble9I3Hqup1DGG9vjfBp?= =?us-ascii?Q?XA1T5o7OaKRUH5B4ZJkNV5Ew22/QvMQQA3sQp5k3REAGOVau?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: df6b7c18-1770-4c07-486c-08deab977865 X-MS-Exchange-CrossTenant-AuthSource: LV8PR12MB9620.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2026 17:46:58.3821 (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: rTZn6NysZFBcqe/f9MOahL2lWJBdST3tMPtkLmSf6SE7BqXtUiVBPoUihwyBFwHyCAl1obGcesCKyytNB9FiPQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7467 Content-Type: text/plain; charset="utf-8" In __schedule(), the proxy-exec donor-stabilization block calls put_prev_task() and set_next_task() when rq->donor =3D=3D prev_donor and prev !=3D next. For sched_ext tasks, re-entering set_next_task_scx() for a donor that has already been seen by BPF ops.running via the normal pick path causes issues. It fires SCX_CALL_OP_TASK(sch, running, rq, donor) a second time, and sch->ops dispatch can land on a vtable slot in a state that yields a NULL function pointer or corrupts the stack. Fix this by skipping the put_prev_task/set_next_task re-entry when the donor is in the ext_sched_class, since sched_ext tracks curr/donor itself. Signed-off-by: Andrea Righi --- kernel/sched/core.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 75541e5bb66d1..1c161dd9d7440 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -7147,9 +7147,14 @@ static void __sched notrace __schedule(int sched_mod= e) * anything, since B =3D=3D B. However, A might have * missed a RT/DL balance opportunity due to being * on_cpu. + * + * sched_ext tracks curr/donor itself; re-entering set_next_task_scx + * here dispatches through a stale/NULL BPF ops vtable. */ - donor->sched_class->put_prev_task(rq, donor, donor); - donor->sched_class->set_next_task(rq, donor, true); + if (donor->sched_class !=3D &ext_sched_class) { + donor->sched_class->put_prev_task(rq, donor, donor); + donor->sched_class->set_next_task(rq, donor, true); + } } } else { rq_set_donor(rq, next); --=20 2.54.0 From nobody Mon May 25 06:56:54 2026 Received: from CH5PR02CU005.outbound.protection.outlook.com (mail-northcentralusazon11012004.outbound.protection.outlook.com [40.107.200.4]) (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 2F53844E044 for ; Wed, 6 May 2026 17:47:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.200.4 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778089634; cv=fail; b=WLZF3cPsmLit/hFXiiVzauU1XQjUfqVatXomi08ln8hupmYI8chM1J8vlOsvP+RcyJ/mqOi5aVNsqEWEkB3Yu7rVp1Md6ZGl8V/t6mu+jSypwer5lcsnLuM0RrYciq1IVt4C16NB1CeM0KqoI+oAx58RDB+d+WTHOObHK9aaH60= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778089634; c=relaxed/simple; bh=pEvxWtns1T+r8XBJQSMqOcSCTxuINrVF/vQ+gyfHfTg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=jAc4E6S7z9SZIXLzmUMyz4zIrdxRDkByU4RALrCglohgnLmARg2qBJO2i2am+5Q1dOgJjU6sPMbZ80mzPFyTf6icILfuO/K8UkhbO4fPCLLk+hdhqFA4SDO5mIe+aB2U7eYcHVJT/UmH25K7AQubSKIEs7CCTr0yaCn1Ldia+vg= 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=NzC+EGNu; arc=fail smtp.client-ip=40.107.200.4 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="NzC+EGNu" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PDKHecbw9+VjmK2ywB+XQl7mpWTBfa6fTmSig6G+GjLhDYiaDJ/6uBRnGD820RT0F41laeytGchMcgpVz9ugI2gdrvGrIr2JV7qUneSzr1Rden9dVzmLsVfS0zMcHVnmOCbaO61486/aBktBnpXaThgcQ8edOczwcwtc5licZEB7GKqEC8L7rOucQLnaRdbMWI/QW63/msvHWVz3Jb+eFlMBWB7Fr9RRIO16z3byVpvskwuh/h8W3FvqbBnt7WzbEtWy2ao1tIaPdlibfD9OGyjBwh6zUTelyuVQgv6wIJgNqrUzJdHwKzVMq5RyLPNgHakdWxUwQHZBEsvXim/bZw== 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=oiTwQ7f9Ov6BL02RKzPMPGHTKdrXFmM3I/SXph9PCyI=; b=c/tj/Sceo0qwNjqM1dxF9br1IrWUGeohEg+vt5MgLZvXrbUkU95gkBRsEVozOlT7yBYm4jsokLwKghRy4ewHPEM57hvrhGX1vULiYAl6moeXiXO1wu7Tc/sZNuPkguKZuhqABcywzW0IZ36RS2iSrpwediw8acnYMs5FbTN/6y58fIbTYRu+jrGYNzoHxlu7fqJwUvJDplb5GGNU4nlU+56sgSF6ak2e8B1DHR1ogTtwzja0gM7h6tsnRxhhEgzSErBDgdklkHsxfny+jtn0Du8rXmED2rCAsClhPmNxIuFqGy9h6UbJVVjfbLgXsRJzFDNVjj8Uv3ZaKJH8im4JSQ== 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=oiTwQ7f9Ov6BL02RKzPMPGHTKdrXFmM3I/SXph9PCyI=; b=NzC+EGNudQml9x1GpctILw5o/a01ZPiAtr1nt38KDQ6JA+xxMl57nRVXZwRZ+uPslQrWqWQOZ+O5Y4G0QH8DBIcFnAhUadplEj5y+e6cEkGnoIQky0zs5gf4yggdrgrdFrQpDvRJlV5WiTeMndH59ju9Oboc2KDhWTjbjtBkfVnEERa6M1cIpnwWhO9ewhJbGEb0PaY3/qMQB/vny5Jlxzt5QadL+nJNIaerTAr0obfIkzLkxGbQH4Xhi8GZeDmiMjRoLhq7qbJygE0c+9J9z5iL7Vac4F9+6tBa+k65wpeqDMNmAb60Ky0dUO27xo6M3vcS7RY6751+xhS+4yjcCQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) by SA3PR12MB7997.namprd12.prod.outlook.com (2603:10b6:806:307::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Wed, 6 May 2026 17:47:02 +0000 Received: from LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528]) by LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528%5]) with mapi id 15.20.9891.008; Wed, 6 May 2026 17:47:02 +0000 From: Andrea Righi To: Tejun Heo , David Vernet , Changwoo Min , John Stultz Cc: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , Christian Loehle , Koba Ko , Joel Fernandes , sched-ext@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 03/10] sched/ext: Split curr|donor references properly Date: Wed, 6 May 2026 19:45:43 +0200 Message-ID: <20260506174639.535232-4-arighi@nvidia.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260506174639.535232-1-arighi@nvidia.com> References: <20260506174639.535232-1-arighi@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MI1P293CA0026.ITAP293.PROD.OUTLOOK.COM (2603:10a6:290:3::10) To LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) 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: LV8PR12MB9620:EE_|SA3PR12MB7997:EE_ X-MS-Office365-Filtering-Correlation-Id: a4e7380f-3fb5-47cd-a22f-08deab977a7c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|366016|3023799003|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: XsqaVQSXhIfUJxSH7gFEt09CQcx2/2gnz8Wa10V1CZxjTdiS3rW2b859hgW7V3NNdkPHkWJi6lmn0d8KHKNUgIslIDCGiHg4c8n5ZVkTDTkjDvnpOfKLNtCu+uZy0pntLmmupuCF5B1PRyD40d0JNKYVlUdoVKOg/kfLaLKTozuqOZ3/z1s7nNI0AsEEfhnpmCR5RJ5qQLPM3i0lzVMtMQ2qWk98w8E869qw1TepvF6gzsHXWqTQ6HjzcYL0Oh/PykWBbbP8DwFoM4JqLr3C1xoFs5T2X0M71gWLaSOiBnqJ1ry+EjCp7W6QabYotf4tBdr2/O0PB7NzVULYH97jXF8cpV4lLMgo5eKibWRqZZqz0nyJQADE/I/Mtt7lPxiduG1w8PPxSnEY7NaiklzvSnzxoto5zpYTfIZhEN6eszXWNSO5fGE8Tc1zOaZ1T0+2wRig2PtTM8cAFqgNHPn/Ax9OdPI+VVNbGeh0kGoCbcew9Jf6UGxv2btpmNWRvNmoSY+EZtwROwLos56Ov0oAawub0TORbFvlSOP2gODPpD1gqVfjhCpBK9H9AI9qK2mRIxMdV5/vyIGfLBQ7RKr6/ZFXqM/oJJaJrYBVIyYKBeeR1uWGfgO6PFLvzaF+7rNHntlIJAcSkEF7gSZCLPiurBkupQCzcbz3eAceanJ2K3d46JnudT/5u2968OSNso4D X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV8PR12MB9620.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(366016)(3023799003)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2gMbBJM0Zkm+1lZ+FgN7KtKkwo2yaAuTcuWpMGCH6x75TqUkhwlaNdjQMg7J?= =?us-ascii?Q?adT0QqaToRWfjG5XU3V3Ql8R+yDiCbl07l1DZ+xO7oedJLeYNDRH6+O0CA+i?= =?us-ascii?Q?WwR8+bL864wyBvuR/t/rHGYjsuFXKss8DjKnWD0MChAVLuhBU354Z7ljJ+h7?= =?us-ascii?Q?krwZyi9PZ3UGsZth6WzCVafL4ZzdtnaddFGgDqr43EP7FnUKz6tt+iGM7ebA?= =?us-ascii?Q?64wUTmwa3tcwXnIHDZOihyxgKMGMf3tgMG2kDF6sOar3Qe6rtfJ6cznNjsJx?= =?us-ascii?Q?ToXswqNPFCblUtDx9tYk+1o0CNOaV+3Y2OKEa2Rp8Qn1yxu8TXNd01P4EgBO?= =?us-ascii?Q?zv1Abo2yOg9dYFJ3dxiLSO+taSLza0EB64W6EVfiWJDWKZwOczHKGySAfqZB?= =?us-ascii?Q?ns525To386c0DpZ9pU+IZNor7nRQyDzKfAScBZLuDE/d5AXcH0dceS9JnktL?= =?us-ascii?Q?NdGDJdZRT0YN1N0c0v8idEMwlK4HkhadEY1rSdofYQYLrA8e/ZKaW3pSo5uh?= =?us-ascii?Q?grKB5TACb1yyWzzTvwIJPRA0q/lcnD027WXk1ZZ9CbcvfVb/wQjfsaqK+1cM?= =?us-ascii?Q?zJfQIe2kMswsKgv4gV77OvC9f+xiT/+AgCIbmgofQjbs0x9zJGfX9O8T+OHR?= =?us-ascii?Q?K1IpifVyDzD3x9TO9dXMmYmgjN71CAastIdwsOs1VEnPoxbIRgH5l4eDLIhQ?= =?us-ascii?Q?RGNkS3zRJdtrcIsC65IcyKyI5zY1uiTC5IiQ8khMk1W4kz7jVIy3cUuEByxf?= =?us-ascii?Q?jPLd2zKmV27brvI1DkJJeieh7POp9zFE8EtU979nLRPmKn0Oxztx4XUMwY4t?= =?us-ascii?Q?FkIyQbaS5vQcZ1+gUQDNjOOcnJphqQ51rfGENx/75v0+XdwtQumD+w12bTdc?= =?us-ascii?Q?RjbDh34y9wsptfuSlqKiFlry55/WJUx1LpYnc30HluZCoMs4kGW5XXAGtujr?= =?us-ascii?Q?Xcx3BRRo5qFr1uRl2ZtKn/QNFsOk78OwvUC1N/qeQMzv9lg22WxjEdheODtf?= =?us-ascii?Q?+iigmJrkE002MVYMIrhxPa9yFR1liHGH3PxVd+AzZT9e8vJqYeYIAJqxEo8K?= =?us-ascii?Q?bsp4B85w6J20zbYcnjiWVKWtkSnhFtIK949OSe0IXILbxA2Fha9S5q+N5ADK?= =?us-ascii?Q?y4802sMzV5prdCIVksNtjilA7FhzWDKP1j8nHyW/xFgn6HQu5AROKbVd9GKE?= =?us-ascii?Q?gSGAKhB2bqi2OJGSpOpGM0m4v21OvithdnseOeZuidnfIpf8db9Z99K392HL?= =?us-ascii?Q?sa7lqS71FuBLF+5VKj5HeixyyDtSKLZER7CEZ0+wJBw6PuR21llkRM6Dddh4?= =?us-ascii?Q?lnONAh3tiXTdIo7+1M5k7vxToaGBF8JPa1xHGdYUP0qHG+upTdfr3wULzRG6?= =?us-ascii?Q?ugdCK2iIvZ6F34lQkHtttimzC6VM/sxwLnA5oxrlzmiErtqApwI3VchcgP8k?= =?us-ascii?Q?uEa8anxgLv9bFCzBhyjq7/5h3x7a1ed8ReQiBeM4CledmScLiHuH1sTvZ0Jh?= =?us-ascii?Q?taumqDWV8Ev7TN9AOWbv/2ebuv7MdapAnIHbCtVGPbXWyCPG4djpJjXn4tWS?= =?us-ascii?Q?YaFTwrAV32sLoK9BjyeX/tH2k6m8vDJVaQfa3EHkjGo8LjfB73Bgm7I9vGSE?= =?us-ascii?Q?X6pXLuBBxgNmGp066Bxej8YM/LpWhhBbJGGvWeRRCBtKFJu28PU9n+I9KVSm?= =?us-ascii?Q?nUXKkSItV+g5ZI3isfSpT2BZzRgHEkHPElAPu0xp/hEoBttL?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: a4e7380f-3fb5-47cd-a22f-08deab977a7c X-MS-Exchange-CrossTenant-AuthSource: LV8PR12MB9620.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2026 17:47:01.9302 (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: e+y3nA1q7kgrMUn//qEVwGo+yUDlYxHrmbvAT4k4uh/lAjRWQG4ZE2yjLgiMKU5z1DR5rshLpWtX11sBzDfgGA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB7997 Content-Type: text/plain; charset="utf-8" From: John Stultz With proxy-exec, we want to do the accounting against the donor most of the time. Without proxy-exec, there should be no difference as the rq->donor and rq->curr are the same. So rework the logic to reference the rq->donor where appropriate. Also add donor info to scx_dump_state(). Since CONFIG_SCHED_PROXY_EXEC currently depends on !CONFIG_SCHED_CLASS_EXT, this should have no effect (other than the extra donor output in scx_dump_state), but this is one step needed to eventually remove that constraint for proxy-exec. Signed-off-by: John Stultz --- kernel/sched/ext.c | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c index 7ac7d10a41bef..c410afd28fb6d 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -1370,17 +1370,17 @@ static void touch_core_sched_dispatch(struct rq *rq= , struct task_struct *p) =20 static void update_curr_scx(struct rq *rq) { - struct task_struct *curr =3D rq->curr; + struct task_struct *donor =3D rq->donor; s64 delta_exec; =20 delta_exec =3D update_curr_common(rq); if (unlikely(delta_exec <=3D 0)) return; =20 - if (curr->scx.slice !=3D SCX_SLICE_INF) { - curr->scx.slice -=3D min_t(u64, curr->scx.slice, delta_exec); - if (!curr->scx.slice) - touch_core_sched(rq, curr); + if (donor->scx.slice !=3D SCX_SLICE_INF) { + donor->scx.slice -=3D min_t(u64, donor->scx.slice, delta_exec); + if (!donor->scx.slice) + touch_core_sched(rq, donor); } =20 dl_server_update(&rq->ext_server, delta_exec); @@ -1504,13 +1504,14 @@ static void local_dsq_post_enq(struct scx_sched *sc= h, struct scx_dispatch_q *dsq if (rq->scx.flags & SCX_RQ_IN_BALANCE) return; =20 - if ((enq_flags & SCX_ENQ_PREEMPT) && p !=3D rq->curr && - rq->curr->sched_class =3D=3D &ext_sched_class) { - rq->curr->scx.slice =3D 0; + if ((enq_flags & SCX_ENQ_PREEMPT) && p !=3D rq->donor && + rq->donor->sched_class =3D=3D &ext_sched_class) { + rq->donor->scx.slice =3D 0; preempt =3D true; } =20 - if (preempt || sched_class_above(&ext_sched_class, rq->curr->sched_class)) + if (preempt || sched_class_above(&ext_sched_class, + rq->donor->sched_class)) resched_curr(rq); } =20 @@ -2634,7 +2635,7 @@ static void dispatch_to_local_dsq(struct scx_sched *s= ch, struct rq *rq, } =20 /* if the destination CPU is idle, wake it up */ - if (sched_class_above(p->sched_class, dst_rq->curr->sched_class)) + if (sched_class_above(p->sched_class, dst_rq->donor->sched_class)) resched_curr(dst_rq); } =20 @@ -3150,7 +3151,7 @@ static struct task_struct *first_local_task(struct rq= *rq) static struct task_struct * do_pick_task_scx(struct rq *rq, struct rq_flags *rf, bool force_scx) { - struct task_struct *prev =3D rq->curr; + struct task_struct *prev =3D rq->donor; bool keep_prev; struct task_struct *p; =20 @@ -4323,7 +4324,7 @@ static void run_deferred(struct rq *rq) #ifdef CONFIG_NO_HZ_FULL bool scx_can_stop_tick(struct rq *rq) { - struct task_struct *p =3D rq->curr; + struct task_struct *p =3D rq->donor; struct scx_sched *sch =3D scx_task_sched(p); =20 if (p->sched_class !=3D &ext_sched_class) @@ -6355,6 +6356,9 @@ static void scx_dump_cpu(struct scx_sched *sch, struc= t seq_buf *s, dump_line(&ns, " curr=3D%s[%d] class=3D%ps", rq->curr->comm, rq->curr->pid, rq->curr->sched_class); + dump_line(&ns, " donor=3D%s[%d] class=3D%ps", + rq->donor->comm, rq->donor->pid, + rq->donor->sched_class); if (!cpumask_empty(rq->scx.cpus_to_kick)) dump_line(&ns, " cpus_to_kick : %*pb", cpumask_pr_args(rq->scx.cpus_to_kick)); @@ -7974,7 +7978,7 @@ static bool kick_one_cpu(s32 cpu, struct rq *this_rq,= unsigned long *ksyncs) unsigned long flags; =20 raw_spin_rq_lock_irqsave(rq, flags); - cur_class =3D rq->curr->sched_class; + cur_class =3D rq->donor->sched_class; =20 /* * During CPU hotplug, a CPU may depend on kicking itself to make @@ -7986,7 +7990,7 @@ static bool kick_one_cpu(s32 cpu, struct rq *this_rq,= unsigned long *ksyncs) !sched_class_above(cur_class, &ext_sched_class)) { if (cpumask_test_cpu(cpu, this_scx->cpus_to_preempt)) { if (cur_class =3D=3D &ext_sched_class) - rq->curr->scx.slice =3D 0; + rq->donor->scx.slice =3D 0; cpumask_clear_cpu(cpu, this_scx->cpus_to_preempt); } =20 --=20 2.54.0 From nobody Mon May 25 06:56:54 2026 Received: from CH5PR02CU005.outbound.protection.outlook.com (mail-northcentralusazon11012004.outbound.protection.outlook.com [40.107.200.4]) (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 014814BCADE for ; Wed, 6 May 2026 17:47:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.200.4 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778089638; cv=fail; b=WuYAP2iGjM4w0DWfC15UeSYL9onVFwAdzHeJoTGYMRTQcfzyIfm2sRb73/0D2ZoZXQxu7NuWq79bEAgv3nSxLhU3vmbJPjCvhRZzHrENoMmAKmu8eRGq9FSqYnD/KiduYRfy4sS99g0PxG7EG+u2Rv0TWuVfUVHo0kXHT8qdtP4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778089638; c=relaxed/simple; bh=C+75qp3JCtTOEM67j7iKJ0SOxRoAI/teAHCF49NMtJY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=MU9BBJvI3o5Lp1CKSSeJsMKSdu0uPUIhbitygPYLBcJpW6jMX1jbAn8DqoarcomGutLA6XTcVIln/kB8eZ14oINJiy5CLQ/qn319sBtsf34jr9SprOTKP5pjkK9s6P0KloSgHhjbe82vXY5jvlqpFOPQBSF2YkPe5wGsL3sDDL4= 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=FhuSHbzp; arc=fail smtp.client-ip=40.107.200.4 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="FhuSHbzp" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=agqobRUf1WaDHEQgPuN6eDfF28FN4ec0Q4+i8zI1kluH3GeIIILDTm4VHQSuoEJ7KhWfn/RuVSjHedIbnhaRIrAZHmeDXcCKuOFIRfhJmvFVHjLooECd5uWLVfMNGL2acDCdzFMepTigQP9VK7JSbx3cuNH+JQApoj2ox9WxS/En3v2GU9CjXpIJQDtJmSsyFyl25qYNuv7eCTmFBFON8AckwM2ekeBuyxG+HXlW8534mrS2+5N5ToUX3QP6eZa5PG47VudIkUNeoifPvCUJlxWc3Df8AmHQ6t0iVBopyF8Vr0RHISkpEoIN58T1LWRSm59Bgg8awe3hRiLqgnw/lA== 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=n8v/jptC54ooNtWYQzzxNMCvWsu6w2Pfw+87MKptQ0g=; b=Nfj+FEg97+xaRMEkuYperSPG3lhyXBY4OygROCirUgbS4x0iBbLRYjSi2vPiwzb4BBOYGVVe5UZnhatgksuSwjfuw4Vv+42ijUhH+IZlF5ni/KWLXfJ+Lec5O16bw/XnokLRtsOH/bBQo/vcKcFKjxMndo8vve5uXuXm/IFDZHH1/Dmd1btqqpHYz2x5C2BmS3H8C8Qq6Z5lUAt+uiiUJE8d1gnQZz6lolKo3hPkSV8cHfzDB6sI/LMmc7vamed4/orn467vCi3CvFWaFiidgTkYSHnceekyZErdte+J8DL5aMeZwSlf78XD3cjjF6byCN1d31hGoiM0zp4ldfricw== 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=n8v/jptC54ooNtWYQzzxNMCvWsu6w2Pfw+87MKptQ0g=; b=FhuSHbzp/jcNShopFGjsCiIw8JVnxrTFBhrpJaA1U/Z9m5ShKdjeo2cACYZXLuNDCI/2gJ8MFjRq+5EIpRzrZwgRByDUuG1p2ozu5bWnrtARL2WsyK4x8RMROZhI5ouLCFIt2XaNJU9bpj1aFto8PC/6LCoDdbmfIxK6fxXXT9NMjKJ7nxAiYRfmUuid9uO43CGXGM2meiqaIFcdQCbc3SGnA6qWEdFICiIRnTTGAHBEDnSLQBOFFjJJyMfLnNoPphWZstK2Qv2qu5XrKlkrVTmcBeton2M7rvg7rswYHN+Ni6jgDz8fAsecbM0zVcE7RQDnMtrlWZAmI/Utbin6iA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) by SA3PR12MB7997.namprd12.prod.outlook.com (2603:10b6:806:307::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Wed, 6 May 2026 17:47:06 +0000 Received: from LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528]) by LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528%5]) with mapi id 15.20.9891.008; Wed, 6 May 2026 17:47:06 +0000 From: Andrea Righi To: Tejun Heo , David Vernet , Changwoo Min , John Stultz Cc: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , Christian Loehle , Koba Ko , Joel Fernandes , sched-ext@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 04/10] sched/ext: Avoid migrating blocked tasks with proxy execution Date: Wed, 6 May 2026 19:45:44 +0200 Message-ID: <20260506174639.535232-5-arighi@nvidia.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260506174639.535232-1-arighi@nvidia.com> References: <20260506174639.535232-1-arighi@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MI2PEPF00000B82.ITAP293.PROD.OUTLOOK.COM (2603:10a6:298:1::415) To LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) 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: LV8PR12MB9620:EE_|SA3PR12MB7997:EE_ X-MS-Office365-Filtering-Correlation-Id: 302c5bff-b348-49ce-e4ae-08deab977d11 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|366016|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 1zHKYF0J9x9TcHVrIBM3V3FvqcS9Kta684wIBPeN79HnnZbdLN39EdBs5fCZ4O1iMiK8NMEz2GIj9qJUoZ4PPMx5OFazHtjKdS2v70fHmGr6OGIGzLL9mGuurymrkEOIJADyycHiIsQxE1vhwwnhAfizbfCsHpNdOuOkM/TSxh9b0Acz/Dr8BmKmem/lvQllVRggAiUBAyTtFTljnH+pfURUA8jnQfismzQOKGUBgRRAu9VPju/OHJCq6bEmBLVloDxTONUd1yP3g1SHM3HCemTi+eBXN/g0Z4jDOM/QC6Yj+nd1K74+xvDaQZrGNRg8R4Ku+uswpS6Fa0fdJnORJNbpbArajsxUM0JFxCkTn+etHUcMs+uB1wZnCop/E+YePN73yGfjuVbfty+qXdP8Yo9pC9YonOYQJJRSp4tWmaZvKlflI5cLM0UWz0kDXUfY6lJt+tC8JdvkJvhzouZqWGhUTMsnAzcq3Id6ec+xyhJ9BmU8SLjSaCFk0wemQWt8vyJQDgoX3cJXJ6XC9RAcqLNzQOFGKeqrSdniK8K6D+kewCg5Lr4pD76ss5PP4FONVm7m0KP+/NqEQ3T/5FR5c4O4QHuXBZQHN1sSVkgQ2VNKz92kLNL4OESXioeTrYs1nFBOn/8KIU5iNLZbaNqc4MB8sylYVOZZGfNP2RcNZemzBhSTVbL8heTsqtx/4YT4 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV8PR12MB9620.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(366016)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?es4aLUCwSW/k27Yx7yNlflyyHa2vMZPVpPjyMvhTxyWyqvF9MVzBrt8xz8h6?= =?us-ascii?Q?Jlp/kKFhZNjtACGhoJQT/HpGVA2vG3wfEszmr+yBq1Bw7RCDgSEebrF5XEyi?= =?us-ascii?Q?/DN5WAApPeV/lYIhEkvMP7VXfM0G0/HjzolwTBdijK8f6Vrl8AAAGBzXpmFj?= =?us-ascii?Q?ylJymRF0L9UiHeXYLtfa/U1/SWK1GUva3MDhMv6zac+euQiZd+roFdE4GvZp?= =?us-ascii?Q?x/10rCda2MdphQW+71CrOY2UabOeOFhZBg6bC/3UnQW5UlWeyUVHG10S07Dl?= =?us-ascii?Q?R3/8oB31JrzMAe9QtLK0TJbMgBqNxD3P8+6IDt8Kd3+LTyqpQP8xaaYF0uRR?= =?us-ascii?Q?Ll1FZul8RkYmqPenlWvo+sWmJXvpgRupF4+kSlMzGB+n07sOD49CD88ROH2t?= =?us-ascii?Q?zmf/f+uo0YG/IhSL7dwjzpxHBo9Y8lzjZDqVlDL/XJ/nrYzIZoLgkdjKr51y?= =?us-ascii?Q?n57aABpCEpKMrEShWXLYFGPZ43luLWzCIgBj7zIFyAAJB2oPjijp/GleftbT?= =?us-ascii?Q?OER8rBLrwgtGTI+u/MtxiD8dPAPTrJg8hyFpAI4KVAjx1uYGjtKzDwdZ3Z/z?= =?us-ascii?Q?5AxVBgWwt9vi+S/OeqtbexrmkBPnOlHwhuE2fMjaTk3fqM7olFeWfgjYtoCe?= =?us-ascii?Q?UQMWaEM9o7Dw6b5yX4nSnC5qHS6zUlRSyfmeVndzshXJtAovgmsOTSn13taW?= =?us-ascii?Q?F+Gv0jSnfZ3xTsfhXio16uyktdZP41qhjuVaN4JHtMnFLOceOjJu5DyKTAlr?= =?us-ascii?Q?dWKd8qo6fw0KvugyENim+54nA5o0IKMzcFFJqT8Xqua35irc6+KERYPHGB7h?= =?us-ascii?Q?BO52m39q+M1YypHHTheK7KYV/rOcVq9jv+SEDeqr+Bue3fADoL16BCGM8uW6?= =?us-ascii?Q?aAI5btPW6rLsyMa9t8vLrBwgvww5LRZD7EisDdXX81d4xXS/CLPSWBEsxoDW?= =?us-ascii?Q?bnwLTNVS26CCVuQFzDxqJ4twrXytKpj9P65h7qv+KWakLp8GrDPu5JzLZ/Ep?= =?us-ascii?Q?/XoTKm45vik0J2bUgCAdhzI//Ee5Gfg2t4BZsgUrLmrT7uJVdO+BFJKFdj+i?= =?us-ascii?Q?Wj0wE0GVWnUOTtNJxIK5OmAuKd3RJOXLVr9GfD8LSspffUMINIX05T0DVWv8?= =?us-ascii?Q?JDl7ZBaB5MhDSBz7wiDyQjiVOrLAYbP+R6JPIaZbxoIsp09uSOvVVeHrNjaZ?= =?us-ascii?Q?hkby13UWC9qKUW1kmeLNhx5RKOe4MsGWdZzo3wjwQcyqdFN37X4QLeVR/H3s?= =?us-ascii?Q?6C9oFTfi/fK6w0AI1Aplxd0W/C6LFsEbAutY8E69F9VbxncgWsjQNcz21dJc?= =?us-ascii?Q?Dq6qSMmwWMzzZNB9H1aN1ckjle80SY01biRWllWc+KT5exI0NHjOIR+zKfmR?= =?us-ascii?Q?Ri3+Y4u51sElw6XrO6V09LTrpHXwCGEiTKAAgWNDBDKIzdjIXduesJPMvWq7?= =?us-ascii?Q?zGdtXfVBfmxvVWrbu9Mi4CzjtFzaLSpBjZM+TJ9wL3UH/i9skmflre3n3qWN?= =?us-ascii?Q?hIP/4RTCAh5DghYLF6ngtG1QAtHic8WS9LQovZeKszNd/kLX5l3ZZS10/pOq?= =?us-ascii?Q?mlqXTTtUU7L+WB5rCBSgUt8XeM+5yA6RCtpQgPRANJhH8SQNoGJBOQFgDyku?= =?us-ascii?Q?0Z7FPcnJwA2gkSxyMJUO0X5fqVW0X0uWRFxb53snWqJAF7LDhP/Q95tWCGiK?= =?us-ascii?Q?tXaUiYt+DNCS2xHcG/QPcIEigofex75zM5no8Udzvc6/fbdu?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 302c5bff-b348-49ce-e4ae-08deab977d11 X-MS-Exchange-CrossTenant-AuthSource: LV8PR12MB9620.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2026 17:47:06.3928 (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: YhO6poAVYpfJr6AY9z5fWk8GDacdK/b0qg858o/c155BZQM3i+MpRXaIwHeP2T+nTEER0NCpb6eQ7FWzVfFTfw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB7997 Content-Type: text/plain; charset="utf-8" From: John Stultz With proxy execution enabled, mutex blocked tasks stay on the runqueue. Later with donor migration they will be migrated when necessary by the core scheduler to boost lock owners. Don't try to migrate mutex blocked tasks, the proxy logic will handle that. Co-developed-by: Andrea Righi Signed-off-by: Andrea Righi Signed-off-by: John Stultz --- kernel/sched/ext.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c index c410afd28fb6d..d64b1283fa851 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -2320,6 +2320,14 @@ static bool task_can_run_on_remote_rq(struct scx_sch= ed *sch, =20 WARN_ON_ONCE(task_cpu(p) =3D=3D cpu); =20 + /* Make sure tasks aren't on a cpu */ + if (task_on_cpu(task_rq(p), p)) + return false; + + /* Don't migrate blocked tasks, proxy-exec will handle this */ + if (task_is_blocked(p)) + return false; + /* * If @p has migration disabled, @p->cpus_ptr is updated to contain only * the pinned CPU in migrate_disable_switch() while @p is being switched @@ -3063,6 +3071,23 @@ static void put_prev_task_scx(struct rq *rq, struct = task_struct *p, if (p->scx.flags & SCX_TASK_QUEUED) { set_task_runnable(rq, p); =20 + /* + * Mutex-blocked donors stay queued on the runqueue under proxy + * execution, but the donor never runs as itself, proxy-exec + * walks the blocked_on chain on the next __schedule() and runs + * the lock owner in its place. + * + * Put the donor on the local DSQ directly, so pick_next_task() + * can still see it, find_proxy_task() will be invoked on + * next->blocked_on and either run the chain owner here, or call + * proxy_force_return() and let BPF make a new dispatch decision + * once the task is no longer blocked. + */ + if (task_is_blocked(p)) { + dispatch_enqueue(sch, rq, &rq->scx.local_dsq, p, 0); + goto switch_class; + } + /* * If @p has slice left and is being put, @p is getting * preempted by a higher priority scheduler class or core-sched --=20 2.54.0 From nobody Mon May 25 06:56:54 2026 Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11012063.outbound.protection.outlook.com [52.101.43.63]) (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 30D4E4C0429 for ; Wed, 6 May 2026 17:47:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.43.63 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778089651; cv=fail; b=GVB1PjlymwLA8A8AEjth+HJolmyak2zO6iOy7xmD5DMA3ZgMSzRNd6ALvqZq+/hICJI8i6+RNd6crF8uNJA7TECD3UWnV0kgpb7HyRHOHycaIQcNZtjWYNYmc8o/MFF4RGSKboimws/sA5BVji5qdyTl1tHP4wEmB4UFLgSQZLA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778089651; c=relaxed/simple; bh=6b+2UbHTN/YY0UEJ+rsmSMfSUWBfB1A4zywKFchUP5o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ANvXuf2a71cxdOdSe+QbvER8M8tH/dj0ugXNnLZHbfdWqAS3bStcVL/PwW4MDdJ2pvbu74ffw3F2NKXN6XznBZcjS+1zeDoErbkSzDszrtG6CcB536uZgXwTpED4wbBWd98AyLfxk/ZLDqyA4KyNmxiubMkl09Nj8v5ODBfqz3w= 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=Io+w+ylN; arc=fail smtp.client-ip=52.101.43.63 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="Io+w+ylN" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=i4MGiSLVR5Z2ojZ93xWUUIQ4/wAVdKKh7/gvZvThXP3BOlWQsElE1C3TvsuOdMKYtFgDXN/VQhie6KsIAPin12mPWh2ENo3tf5ET1RNDXZtDecCYfWdQfcQBcqvIqjdtKgq3fJiNc5TG7J510IuMWxgRvASHsk5xmbyF0xHE9KFgrJFNWed0VebzTRK6HsQVi9E/peQhQbjNzPXn/Eb5wTwgyY6LAFUpAK1QgEred3VbJHDRqHtbVYHWFQajSL6lxXdDmrmu0gRQBXnZyjYnijUL6+NkixMk4kb2bfE/e6MDB/o4lW1GsRDF1Vdic/E8jS5IdWvN1umaFovLNtGinw== 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=6NXtTKcdOk1OrTeX6i1+jHoSU/KZMIxSuL5cuNa2cec=; b=EvSvXyz9GI0fPDp/3rP2n6E4p6wokYS4tbPKj8hHit1lEM4QL036hDafk2V70kceN07Q+RLXNxSDWaK7yzMG844m5us6EoatJO1Fbc0PGuEpJBM4A5ixLbvgkwLDgyjHfi0M5cZS1EmYWoqpklpjNdvUDn60bJV7K1Fhxh+BZxAnVJWQza4Rn5KkMXIjsFvjDBBEbSGAi27G+IGf6mstHOM2K1YrbyBHG6w6fDFEZZ8DSc9XgEZNKDuff2JPDTHgtlPxw89GtbXf/Bg3wgb1aDHWuTVlzR3L9atsvUkFwhnDlrTL6lGhd2MYrI8fdzch66uUVSgPRGKNXWLrPRnKcQ== 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=6NXtTKcdOk1OrTeX6i1+jHoSU/KZMIxSuL5cuNa2cec=; b=Io+w+ylNWJWGIT9Rbt5cmAajtR9f9R6cUF0dgc3lPf59+Pw3CbVPTvALonnb7S21v0xJbFycabKQWCELxL29BtqcCQ/NaTInAMDr6bEgazJQcJR6MKV93IJsmpbBiDVS86pAzj+Nj9skmv3MBqTa3ndbOvmr7zGsen0qkwfvkEeDjmQe5kGfsaWRhmHzeM75tG73qxlyEmi3cZ6/hYyNni64rKJbNC4l+CYsL7F3RKJNm8TgysK2Ps0QPOSzQXCGf1V87aRSeT3gTvFTVOV86HryC/7Le5gHjhan5itgIGrvkweqnL3lFqWuhEt5halGy3zI2eqp4rjkWygxMHSXYw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) by SA3PR12MB7997.namprd12.prod.outlook.com (2603:10b6:806:307::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Wed, 6 May 2026 17:47:11 +0000 Received: from LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528]) by LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528%5]) with mapi id 15.20.9891.008; Wed, 6 May 2026 17:47:11 +0000 From: Andrea Righi To: Tejun Heo , David Vernet , Changwoo Min , John Stultz Cc: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , Christian Loehle , Koba Ko , Joel Fernandes , sched-ext@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 05/10] sched_ext: Fix TOCTOU race in consume_remote_task() Date: Wed, 6 May 2026 19:45:45 +0200 Message-ID: <20260506174639.535232-6-arighi@nvidia.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260506174639.535232-1-arighi@nvidia.com> References: <20260506174639.535232-1-arighi@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MI3PEPF00004EA8.ITAP293.PROD.OUTLOOK.COM (2603:10a6:298:1::44c) To LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) 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: LV8PR12MB9620:EE_|SA3PR12MB7997:EE_ X-MS-Office365-Filtering-Correlation-Id: 7ffd3d22-998e-4946-f7ca-08deab978056 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|366016|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: ZyxQqdGJTgQreLcFKvqVzG/ffZVnzDREM2h8ltS4t2Ax9DSuw2pFFBiqnKyTVWk4kDkBY2bNIxipxL9pw/lhNbz0Ovlww1WdPhiXOWpqiMM48ah+PIJC3PKLjb4laOYDoIyCXZKZNAhUMt3eA16MJbD2UCSKNJA3cg4n44kS56RnqAbnyRp68fUOo2aAKgHZ+QyTtFGdiEw/OujjfPLrRZk6PrtOy33A3I+A/UYhP24GHIWfzCoF0TEV9ibIVUjF8k9iHoCcsHKwg0j+XBmSYV/v239q+k5ZWAPvdzN24rnuytV/sy9HapECpFfI+Avp3xKh09E0bxN/pWYY0HmmradgRgohDZG0Mkv96PWyvvHA9RXwqTb/2CnFY5SErYvzg/S5m7MnFrGFyUltjbFuB1cspY4jGqMug39faLKwSt8kCVElZrN+qCcXo5Dq4JKOzKkAkdiPzAcYubpXoEX8JrS6J3VUGbZPz5xRHBDnMQq7BvA7THtLCRsu2/Wn4J2rUvylKuDv7BUFobAmcE1cIqIslObT6+MBOMoI0b5ldffUw3xKFa3PC4xFBuIzYfsnV8o34x1t9EqRX0bjKKyM55s1r1GhhaAUhnNZu1oN2Q+8o5IHgUeHVujajCva6ZsrvAvpl7v3uLMR2wzU1pLiszpmkrx2FE8jBV7420t3rasc05eSwA7t9ZdZLa91oDxZ X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV8PR12MB9620.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(366016)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?JjXApO0KWQMgx4ShsT62nQA6XTYUddWcKn5USpAdK33jqABfwMgn7MigbV+d?= =?us-ascii?Q?3PsxWK3uhFV6uu+eLZk4v9xGkXkeNGJwpBf9HZPaKhM4RpwxR2cp5AwkHBBO?= =?us-ascii?Q?Ug6Zlc14bPtkUP4nMAPdCPQc1tQP56B0lmbjsQQNO4T3G65/CLf7pfkvXmlo?= =?us-ascii?Q?IhSApxcQN4ncPXmPjBIJTLnMmeOsFxCO0WghJbu01/5EfLCyy8dlsVsxl7u+?= =?us-ascii?Q?xGhYVUCrrR5XsiUdbBwX29f6MQmQ3snv/ey3fqUv2xky7CSNQzlK4B8QcFzF?= =?us-ascii?Q?Iy4/xNiFNewrzMBEbKXJ64oukCiSLnkd7PrFsl5e+tBWCpeKPlhU87SsSdfe?= =?us-ascii?Q?n8PlV1or1njOLJ2Rh6Z8ypeNypNjThAISQwd9KcUrDjCHXn7JhSnxxqX5I+a?= =?us-ascii?Q?iwI8PNPuMh26RB3/LGC+hCW2eCyTY2kAqcoA6oaCTw7nQCKd6T3VAUPkRMRC?= =?us-ascii?Q?f+fEcim348k8MvrpUQDfAN1ELGISFd3TFLMKZxFS4HkFPpFkK5pnbdzfsw35?= =?us-ascii?Q?XDEPb22PfZuZFY7rEE2JlTKyuC8UaYchAw80l92yZGwKK0GYYyKc+Yt9OwNA?= =?us-ascii?Q?9IHSf9OTGaPMvto8w5vvFxPmvOztshVZqQv7U/3Wuv2jOz4+sD8vVJZZAGJu?= =?us-ascii?Q?SEw8oHWrl5Pisu/woo9UA6Cz/mtxECGerXQk+PFCmbxud2rdzRrPbPsJsWfV?= =?us-ascii?Q?gteFVXwAR/JJa+FMKe67ITJgJre10yijV6HFb2LE2vuzISXdr7Wy+3h3EVKK?= =?us-ascii?Q?3hzFTum+ljdD0HsyBr6l8DgsiS/Q5gY9EJp4Od0Kszq4HV9B4zAvSEqDOSYv?= =?us-ascii?Q?hMi5iXbRgSW5Ihuo+qJXSI8hf9fFK2Hcb+7frROc/JuTHtm7uhITXWbmpr4x?= =?us-ascii?Q?8RhJO8JECmyJXdrrRt/YGCLsAwF+E9vjcmwyWVfVgCMFvisgVjHC7jIDzlqh?= =?us-ascii?Q?8UCQjOqf2BYIu1FFmR4v49N3zh+V9don7xN+1qHgDjm+/Kqs4OhpvlbxXsqB?= =?us-ascii?Q?AqenVG5i5ceVCGEYL5Gumxt1/4+pouyICYHvpOl/4gXJXLkAtXYjo2ygAwzG?= =?us-ascii?Q?/b22YM/FU8rK7KS/AQ9F1HAY6FDW4BIOiQ2GaZvgsADGq+iRxNkQOl2O5DNi?= =?us-ascii?Q?n22SCtemkqd0lsNETp/TPW+EBZFcxZGlqvMPoycqqeNCS/ow34eUj5w8rwZE?= =?us-ascii?Q?m+/oWEO8lrtQltarTnoRHC3loXUgn22N+RpkTpb5WS0UrBug7k0Dg31XOQgM?= =?us-ascii?Q?HDxoLZXEj7+BljIH/4FLATDvd9ZuECGwpxjkST4+Xa37F3gU2VTxnuLbN4XG?= =?us-ascii?Q?lD3sg0wI8sZdwWiEkuL0DZ7FfYIW8xEE1d9ugCNhuOTeOt+9twBgaCIgiqdx?= =?us-ascii?Q?80n+31oiNAgj8pseMzi95R8m2hj8WtM0B3z7oJvnj6DxYBLm2tMmKofQBnMo?= =?us-ascii?Q?KeEVVOjvmKmR6gmZuOThJ1DIdkf2PGSDOGKpUeX7KbpD9JI2UR45ZMKIgjj8?= =?us-ascii?Q?U5XwP15gNB3W02fCQTEc9xkdZjEJTva93GMt2J/rbGVW07KMdbdjYeM4ClJp?= =?us-ascii?Q?Zkb+DvmQqVLRBut/0rEXzFZ0hoFiAZKv5RfTYLJv6UXvRBqnPMPHdVTxSfmV?= =?us-ascii?Q?RXM9705PKX6+SZ1KcAH6k4UgwV9t6WvzH+9+DsKtDgGHk8/GBNrYQeZa6Q8v?= =?us-ascii?Q?ypRRQxeXkHJWSFIMLqM+5jfIZcm/8T5v9waQRHN1Whj+wn/G?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7ffd3d22-998e-4946-f7ca-08deab978056 X-MS-Exchange-CrossTenant-AuthSource: LV8PR12MB9620.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2026 17:47:11.7399 (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: EvyWdi3TPf/iiE6B8qyFIhy/UWZ9nzq8NTwMdknwZbmdxtr2JQT+9AcchVJ/Hhe1SFovp3w/Md8iYg2VDBW/rg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB7997 Content-Type: text/plain; charset="utf-8" When pulling a task from a non-local DSQ, consume_dispatch_q() checks if the task can run on the destination rq via task_can_run_on_remote_rq(). However, it then drops the destination rq lock and locks the source rq in consume_remote_task() -> unlink_dsq_and_lock_src_rq(). During this window, the task might have become migration disabled, making it invalid to migrate it to the destination rq. Fix this by re-evaluating task_can_run_on_remote_rq() in consume_remote_task() after the source rq is locked. If the task can no longer be migrated, we clear its DSQ association, reset the holding CPU, and enqueue it to the source rq's local DSQ instead. Signed-off-by: Andrea Righi --- kernel/sched/ext.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c index d64b1283fa851..a70f8693b906f 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -2418,13 +2418,24 @@ static bool unlink_dsq_and_lock_src_rq(struct task_= struct *p, !WARN_ON_ONCE(src_rq !=3D task_rq(p)); } =20 -static bool consume_remote_task(struct rq *this_rq, +static bool consume_remote_task(struct scx_sched *sch, struct rq *this_rq, struct task_struct *p, u64 enq_flags, struct scx_dispatch_q *dsq, struct rq *src_rq) { raw_spin_rq_unlock(this_rq); =20 if (unlink_dsq_and_lock_src_rq(p, dsq, src_rq)) { + if (unlikely(!task_can_run_on_remote_rq(sch, p, this_rq, true))) { + p->scx.dsq =3D NULL; + p->scx.holding_cpu =3D -1; + dispatch_enqueue(sch, src_rq, &src_rq->scx.local_dsq, p, + enq_flags | SCX_ENQ_CLEAR_OPSS); + if (sched_class_above(p->sched_class, src_rq->donor->sched_class)) + resched_curr(src_rq); + raw_spin_rq_unlock(src_rq); + raw_spin_rq_lock(this_rq); + return false; + } move_remote_task_to_local_dsq(p, enq_flags, src_rq, this_rq); return true; } else { @@ -2541,7 +2552,7 @@ static bool consume_dispatch_q(struct scx_sched *sch,= struct rq *rq, } =20 if (task_can_run_on_remote_rq(sch, p, rq, false)) { - if (likely(consume_remote_task(rq, p, enq_flags, dsq, task_rq))) + if (likely(consume_remote_task(sch, rq, p, enq_flags, dsq, task_rq))) return true; goto retry; } --=20 2.54.0 From nobody Mon May 25 06:56:54 2026 Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11012063.outbound.protection.outlook.com [52.101.43.63]) (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 2D1F94C6EE1 for ; Wed, 6 May 2026 17:47:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.43.63 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778089659; cv=fail; b=Uo6sKbGhxOiNrCLhL10uZMqKhbrh18btZwrqJC8zLnoY8Nw2Kr6jWFuTUuwwpNu/qQDgrMXR38hReFfD8SS3bF4mnGPnoHTtGQTircoZ86Pepy330W9Dqvn3CRs4b2Qa6hQ6QBT4WdCdgEtg8/SXgdM4w8UlCB1m4F+XGSUQsBA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778089659; c=relaxed/simple; bh=aBuNDuFvuC6u4+8ROBlZFlw7SaXtcH/cnZ7VHFdZR/M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=d8QZoUw1GmfWPfS0xRfb2yr0VbcHq21uY5B/zVEv0KcG/1sDdjcoLToqqwLMwcGxBljpktMwl4rxpcJVU+2L4TWaOuPSFC7c0310FwkBcT0cmmsD/F07tk+iDbz2b7xnt5nfxfOi5CtamXqfc+JDQQLUmxLvuTpt9Goa4CO9Kzw= 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=sknWVvDJ; arc=fail smtp.client-ip=52.101.43.63 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="sknWVvDJ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dK/DovuAtvLcn9EvbIU1l2/G9/pQcmIsoqGB/o0FbycaAjvEWvmFmBDAsH5ogjU+lxR5tDMac9wZsX6S2etO64naD2dVXQC9C3h56kVNYtqrEObi/AQ2G5O8XLhZdkDdTrilFJ2sZK+VIRPUM839IK97sfjo9+G+qnB1wukw71ZWJSUSQBGQNgwPzrAzyukfsxmLoQ4O2fguI1aKLgz88oSO3BgHQeHdVAPZwE3xfYunawzMfGFAWT0gcZIiRwx6o8a0SycJXWLegoRmur8LB7zY6pIc3M6Tv5uragiOJ2CtCn7MLsg3ZA5AKv1Cc8Zb7JZ1NgC95iRRlE7DRRQTqQ== 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=X2+bSx4ahcG3u/tfsQTZvvIWQqmfWibztOUh56NQm/o=; b=t8V44c2Ofphadi9AtIqPSXvLV4AfQynKf3eVjjjum/6S3QDNeL2d2LAtafoJfTvUK5nx5NEY1qMZIsb34LblmETWLbm2yWd7M4U0o3/OlTsCVZUvMFrlBygcpxrJmSB7ghgW5tSTkfdCck/KfS7yHOAoTrBgyFGz3FFYhImp6x5Uvpq2snWGafr1KVvQxfUXmPQ3k0f+61N33sFAZ2WcSzTRBOTWPNsSM4rSFKBYw7L6tvV+k2vNXnz/W0vK7gdi60/UYOZVNe1wTmvOpAY1NxyOxIgTrVs8b0A1Y3f96SFhScsaqXdP/Q2ifmz4PPwG0nmDVIO7aOYazVpfJ0lGfA== 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=X2+bSx4ahcG3u/tfsQTZvvIWQqmfWibztOUh56NQm/o=; b=sknWVvDJyDQc+nLDXZTJpvD9gjHirtQp3a5bnouOliACoUXfjHJjY75yzHCiwBxzPJhsB5g4OY5WjnSd8imjyfgNsgCr/rd/fWGzEdXFl5xufDgLR9Mtbk/yCNeEm5eaS5QQNYJ6GHuY/bZtX0aF/xtr9Jd3//KcY8MuMExnjNzYttM8f/8u6zxShn3diuZvoEDxf9zwJ0sWwLOC6FBDRgzje6raVdDSi9XNBG9UrCCFNdRx+4nfBGViKzQAzD9ef/9BLaWVOeGGfNXfUz41MNYBT37VnjXZpq0ljpJYWtEnikZ3fsJqBVJITLM1HyJZwM9wrfspxEtk/KEEBwjvYQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) by SA3PR12MB7997.namprd12.prod.outlook.com (2603:10b6:806:307::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Wed, 6 May 2026 17:47:24 +0000 Received: from LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528]) by LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528%5]) with mapi id 15.20.9891.008; Wed, 6 May 2026 17:47:24 +0000 From: Andrea Righi To: Tejun Heo , David Vernet , Changwoo Min , John Stultz Cc: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , Christian Loehle , Koba Ko , Joel Fernandes , sched-ext@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 06/10] sched_ext: Fix ops.running/stopping() pairing for proxy-exec donors Date: Wed, 6 May 2026 19:45:46 +0200 Message-ID: <20260506174639.535232-7-arighi@nvidia.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260506174639.535232-1-arighi@nvidia.com> References: <20260506174639.535232-1-arighi@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MI1PEPF000008D5.ITAP293.PROD.OUTLOOK.COM (2603:10a6:298:1::430) To LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) 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: LV8PR12MB9620:EE_|SA3PR12MB7997:EE_ X-MS-Office365-Filtering-Correlation-Id: de0f81ef-9a82-4227-82e5-08deab9787e4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|366016|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: n4hEK7L5WRiOuHvGSxj2Ci8owDD1qvDr8vWBn4PR6crpZz2TAGX1p99gS53mM8FHAxQo0KkuOpdSyiidOVKqh7DEfWTRO04s5z9MtgQmS7WGZIW1Pq1hrhFfqhj5QwLhmckfTPvIvCF+KZ+LYEMYTzVVTK9ZQxZnX3Fp3xaE4xpIcqGVlJiwvio4x/iyX+71NdPwEFGSOjEKOdrj081TfU1N3FoanjxY8s/X9GbA4uFGjO9x1n713qD58qO2zPWRniuQFRxhmkwlsBB6oPc4kpQ2DuTpPKJ71t7lNOHTs4cqSJMMS5SQ/rexV1k1Vi4kGrU2C53tejQH/Jr8bV/RRMY+etHMCCtiGX2gARex+PUdZM3Bz7Ao3N9SkYWtULV0Eb7Pkv/gfo0q5gUdyf20BhTyGCGl4tuLZF5TnA1kE9tzjBOrZaVK/dg46wFs5o3quhP0AyMGbeWgiOeLjSCHkxcbQFgN3f5VoCT1qpuxmwe8PJCfsq2qefpo5mMycwQrlODoHI4iZBsxg/F816gYpmZ71B1qI+FytE2mgnBplyUTcRdxw/HRBzK6bkDaP4D81CjjKsK/h1DfY3rfnr7JdRqqsCmCzRT540rTX5+lW3YW4xx3BFEE4yepvxDh5WmMVKYtmQrfQ1I3pTlkQEONXxS+id5ZUgWiAcvKeLA+GYXGzW6DUmF44QCip3kY7tCdQ8SzE732XeKygDRyxmEY2g== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV8PR12MB9620.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(366016)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?cwsIOx9RQzFN4UVN5o5P07IQtrZBE2Kpq4fP0dRqtT5MlgWO6/fp1dhSA6hw?= =?us-ascii?Q?MrjaGKAoGoALftRI8zUvA/BGDDtleBsLd2qincAVde8wlrXtEKXsvaI6joAl?= =?us-ascii?Q?sIQeATqBHnku3iBD+hilDaV+dHwurz5UeDW6pvhpvCoASetGlOPXLGb68Lew?= =?us-ascii?Q?CLYLTL9Yr1zZ/B6wZAWoU8J3bWgHRdRN+zyFtYNOw9W9nh/SnH3M+01OoeKK?= =?us-ascii?Q?Sh2SjcOhiik0bryPrz9QjhkyyAmzf4cBGhsPXB4o8Fr7+iJV44fjjddm98sv?= =?us-ascii?Q?1KM65lvvaNzDo6WvasNZbuhSs74YYhLKMq2WznR42ppW8VD9QRULrq9CZQEy?= =?us-ascii?Q?VwOpEtuMXKb518os3oQ9QaS5EMP2ynZb8Z1VIcPYqZaY+LgDLuu3HJQEfV5F?= =?us-ascii?Q?vzMVPsi/vWWPHNMERXdYQya+1HS+CagbDSLH5BR6oFy1LY3HEoyQaPcdSQyf?= =?us-ascii?Q?7OaWyR5tlWUMHKeVdVBrH/M60vtnSYeRNtAmoLoq6ZIVS5HztGIqKd79q3LY?= =?us-ascii?Q?IFrOnu53JV3MIvCyuY/MQJW+pOaJ/iPnKPHud8IrZqNZAiegt+bW8RqM/Bmb?= =?us-ascii?Q?qtvKxHUBTOTDETGMUV4D0EAXt/S8ZeH6t8oS6ff4MlliNhJKnUBWdNXep5Cl?= =?us-ascii?Q?f8iYdUFvgdkYotp7q5q4Ty8JbdF4CDrY75NdYQfraElbJn1ZPsSlkwiPgGXH?= =?us-ascii?Q?X1/RvBBDC9Yndszyq9ouf2JMTYdqpV7DSPqGs5dj87XmXRgCTl2I7UMW6Y3D?= =?us-ascii?Q?uzNlTAHa+rqqX9JKv2NosI4nKejJic2PSLcmurDFoCd/m/s3WgAgj+4Eyc7M?= =?us-ascii?Q?gKc+S4m6uIswNwysxmaYbUaGia4POvHgngmNzWLurFUXvJr1yjWMM1Ty2QIO?= =?us-ascii?Q?ffvCJkfQOrJsQYFobkpXPYuFHZkyKVK5dqfOYpPtXbzuluJosZzrspFG9YGN?= =?us-ascii?Q?QkCzrI3coxc7IlM2Ur3vGZUKXGv56g4m2k4OBrHTD6Sidt59QmfHudQZUi+H?= =?us-ascii?Q?1HQXYbym3RbFebL8OXCgp4RDpvR5LfGLGE2EX2iKIa9t4Cf3HVLMcZqJnNw4?= =?us-ascii?Q?4+hPzxUE0vHxTDpGjAX+aNj35PfRQVirHbW0V6u1iZU/uiHR4Js8E85ITtA9?= =?us-ascii?Q?Fa4ZqFiugAMIa3sJafSxnK92RQyGwM+2A5ADrnpDz/9zpD2TNfTAE++P1h38?= =?us-ascii?Q?jHmsthhTpZDGGcC5KuuygIHBdnsDhDM/zoBMNzpZDeQsM17SJpbSXh2k40y6?= =?us-ascii?Q?p0kwIdX2ZrgP4WfSI40+km3F5pj/eb2pu2G9oegG/uwB/G2TmO3s2KlWLU/x?= =?us-ascii?Q?eGy9UxvULoKasr66YuIT8i2/wzSPq3exewXIbeFWd1PXYyPWuSTOV2PPXzcx?= =?us-ascii?Q?C8yiixJwT5EuPHI/El09PL5d1FIF3B99SXSUYP+Cui6W25B6ixGWqv4cg7yx?= =?us-ascii?Q?1CSI9eBblCHaiw8eM1Bp1sC5ylqGbwnxUeE2RnwUGH0jDLqJB2rUZbqg6/jo?= =?us-ascii?Q?TBJ4XmFhXH2/3/eAycp74qCpk2TP3JdPtXwKXJHWQ5qxHtuAKYFLo2HStngt?= =?us-ascii?Q?reYwzHVERPfMcjPvo4F15iiiDikmgEbcYPL2+vTXUE8NuBAyec66cCSNWLNe?= =?us-ascii?Q?3zUWfatkUWzeUpgN6+lsQTKrxz1pqo8tAnpNqYfzISkN9ZOA0oBFsmuYrzuo?= =?us-ascii?Q?LrHi9M3ahlE5Jbsh8to8gapsbbArrABwn9/mDWk8ueSvgMHy?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: de0f81ef-9a82-4227-82e5-08deab9787e4 X-MS-Exchange-CrossTenant-AuthSource: LV8PR12MB9620.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2026 17:47:24.5167 (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: tNOWjQ9UqD/o59wxTX6VE5eyyKnGMWMr0iFVuGAUfxikgy5HaN7IWLzbYcRbnfFLSLYL7s35YczHWlJSvhRk+Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB7997 Content-Type: text/plain; charset="utf-8" With proxy-exec, pick_next_task() can return a task with blocked_on set (a proxy donor); put_prev_set_next_task() then calls set_next_task_scx() on this "ghost" task, which fires ops.running(). However, the task never actually runs. If we simply short-circuit set_next_task_scx() for blocked tasks, we break DSQ bookkeeping. If we only skip ops.running(), we create an ops.enqueue() -> ops.stopping() pair without running, because ops.stopping() is still called in put_prev_task_scx(). Fix this by introducing a new flag SCX_TASK_IS_RUNNING to track whether ops.running() was actually called. Skip ops.running() for blocked tasks, and only call ops.stopping() if SCX_TASK_IS_RUNNING is set. This ensures that running and stopping callbacks are perfectly paired even when a blocked task is picked as a proxy donor. Signed-off-by: Andrea Righi --- include/linux/sched/ext.h | 2 ++ kernel/sched/ext.c | 14 +++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/include/linux/sched/ext.h b/include/linux/sched/ext.h index d05efcac794d6..5096c05d7a978 100644 --- a/include/linux/sched/ext.h +++ b/include/linux/sched/ext.h @@ -102,6 +102,8 @@ enum scx_ent_flags { SCX_TASK_SUB_INIT =3D 1 << 4, /* task being initialized for a sub sched */ SCX_TASK_IMMED =3D 1 << 5, /* task is on local DSQ with %SCX_ENQ_IMMED */ =20 + SCX_TASK_IS_RUNNING =3D 1 << 6, /* ops.running() has been called */ + /* * Bits 8 and 9 are used to carry task state: * diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c index a70f8693b906f..b6d29087ec0e8 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -2164,9 +2164,11 @@ static bool dequeue_task_scx(struct rq *rq, struct t= ask_struct *p, int core_deq_ * information meaningful to the BPF scheduler and can be suppressed by * skipping the callbacks if the task is !QUEUED. */ - if (SCX_HAS_OP(sch, stopping) && task_current(rq, p)) { + if (SCX_HAS_OP(sch, stopping) && task_current(rq, p) && + (p->scx.flags & SCX_TASK_IS_RUNNING)) { update_curr_scx(rq); SCX_CALL_OP_TASK(sch, stopping, rq, p, false); + p->scx.flags &=3D ~SCX_TASK_IS_RUNNING; } =20 if (SCX_HAS_OP(sch, quiescent) && !task_on_rq_migrating(p)) @@ -2986,8 +2988,11 @@ static void set_next_task_scx(struct rq *rq, struct = task_struct *p, bool first) p->se.exec_start =3D rq_clock_task(rq); =20 /* see dequeue_task_scx() on why we skip when !QUEUED */ - if (SCX_HAS_OP(sch, running) && (p->scx.flags & SCX_TASK_QUEUED)) + if (SCX_HAS_OP(sch, running) && (p->scx.flags & SCX_TASK_QUEUED) && + !task_is_blocked(p)) { SCX_CALL_OP_TASK(sch, running, rq, p); + p->scx.flags |=3D SCX_TASK_IS_RUNNING; + } =20 clr_task_runnable(p, true); =20 @@ -3076,8 +3081,11 @@ static void put_prev_task_scx(struct rq *rq, struct = task_struct *p, update_curr_scx(rq); =20 /* see dequeue_task_scx() on why we skip when !QUEUED */ - if (SCX_HAS_OP(sch, stopping) && (p->scx.flags & SCX_TASK_QUEUED)) + if (SCX_HAS_OP(sch, stopping) && (p->scx.flags & SCX_TASK_QUEUED) && + (p->scx.flags & SCX_TASK_IS_RUNNING)) { SCX_CALL_OP_TASK(sch, stopping, rq, p, true); + p->scx.flags &=3D ~SCX_TASK_IS_RUNNING; + } =20 if (p->scx.flags & SCX_TASK_QUEUED) { set_task_runnable(rq, p); --=20 2.54.0 From nobody Mon May 25 06:56:54 2026 Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11012063.outbound.protection.outlook.com [52.101.43.63]) (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 1C72B4ADD83 for ; Wed, 6 May 2026 17:47:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.43.63 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778089665; cv=fail; b=Dm9nZleHhmdfnHrUCaMqXEoyyccJvVNRu3H6kGFWzvLkZJxGpASTaTjOZgVcnCD4DXdXkns8Ul/GW2YuN7aMPuzfQPPj1OiMqiWgwJkAjqlw5A1lEYEAh9oc3CC0zCIPp/VaSbjKsJLPG5RJhdFvW3XbT2MwCNT1PrXc81Tm+Qw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778089665; c=relaxed/simple; bh=WNPU4S2skZAygpxa8PmTF48VuohBD0HLnvmvCMH8TBY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=LX2q6GOvVEBaH2AuSKnOsBZ7BUYgDuhf1rhEHBU2iCx1YJtguUySiRYVl+7TVhAshio+bzxz/tzLH4kuxu63gppVtFDFQ1jwFx5e1ivITmPNo7NkFcCYqw8dS2fbyQYuxIK4CUv5e0vynnomM4RvM4wcNPxYV3mtoZ3rwby5UPE= 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=N1ddwAa2; arc=fail smtp.client-ip=52.101.43.63 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="N1ddwAa2" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=n4PQLa6M3gpuzAvAQpQKqo6PEdgdX7TNmTR4AtFsPowQocUgXgk6JCaRF7FSfuBTlsELC4/MymE4LjT3h9R8M2Ydu72imAkB2vofzVa++y89qSof6HdrIGqhlR0ITWL8LfHy3cQfNvUEtq26USxHcQWDUMgejgtq/TcQz9wtdJLcmffa0bu4dYXGZOGqSPO96A6BntQE6HLvELdawENVIxF/gEryJBoFG7/W9hC9DEXOfqv6GjLmzMlvWAvOKliCBC0LbT9eUDuigQgV1QqHhhJZjy0DF4sNqrBBuYd9fVJusadXgVKPsr11nMxZJAQwryPwwGLRSrJKZ6kDktnsiQ== 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=au7suUdRqD8m7sbp7/FNqluo00E6w/GBXnNBjDecpTY=; b=ANs8BjB1n9+gBastfgx/aoB4pBKF6WbROt7q5MUK3FfYhuvg5H6ofJz+e/h2oQpvLZItvg3YtzR1iMGo9WD0hoYRmliL+49Cpe6TR11Gu1btWOu6YYJ68yXJpATszcb7g3hNjtUmA4L51XOqJgTJ16V29yilZJMVO9G4COzcjpWaMBigNLoyY5RmG0pXHPypvhglFRBBCz0o7PfsZq9D7oTmJIl42tNvfVP/ZyMvRpno79L1WBZ05kMs18m2+nX7QPkQgQe9vhWz/kSliFYCA2HCc2YBStSzOFRyAlcHFACMU/GnYiTfcD8GTA/qYJKk8oneVxegcrNijJnhQc3AZA== 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=au7suUdRqD8m7sbp7/FNqluo00E6w/GBXnNBjDecpTY=; b=N1ddwAa2zqI9oI/2BASpVZGz1znWPVVRqPkHV8+gNw3CkZw3+RcWxWAdUJhWkoYyo2ZeZIjvQ6ElVfi3NmBfdWBV+kv6LD47moRChHKQnUu3ZAzzpdtDVpE01dJEKhac0SHTcviICvpq3klB4kh0i0FFLupuiU25ylaYdaHLlRcMsrrdqFRrbFV++uyR0U5gQT+OR8YyXZv2QerYGv9MmjO0fwyi4YnlEIyr0qyKMTHrDCKzGnbSHcFrlA604ukk6ib61D1BZIUFJ2Gr5gqDRETFpz/bUrhl4HAiDun3ZG1hte78hC13xvFFecqybeDniWl9ipG2vpMwUPB7i7au5A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) by SA3PR12MB7997.namprd12.prod.outlook.com (2603:10b6:806:307::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Wed, 6 May 2026 17:47:30 +0000 Received: from LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528]) by LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528%5]) with mapi id 15.20.9891.008; Wed, 6 May 2026 17:47:30 +0000 From: Andrea Righi To: Tejun Heo , David Vernet , Changwoo Min , John Stultz Cc: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , Christian Loehle , Koba Ko , Joel Fernandes , sched-ext@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 07/10] sched_ext: Save/restore kf_tasks[] when task ops nest Date: Wed, 6 May 2026 19:45:47 +0200 Message-ID: <20260506174639.535232-8-arighi@nvidia.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260506174639.535232-1-arighi@nvidia.com> References: <20260506174639.535232-1-arighi@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MI1PEPF000008CE.ITAP293.PROD.OUTLOOK.COM (2603:10a6:298:1::42a) To LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) 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: LV8PR12MB9620:EE_|SA3PR12MB7997:EE_ X-MS-Office365-Filtering-Correlation-Id: 5a5526dd-3a8d-42fb-8286-08deab978b2c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|366016|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: MjFbTXZlCpk9ub9W3E+fKO05A5P9iih1AthWCDXkNwb0mvex5OQ7JWcN7rVjn3f+visYm1DjgoXopu+dDQvuGGzrw2o1+j/VbXUlCAZuUGJJBgjDVHsXOkEBeACgxqPJ3A1OVqX2L06Pm5Ed3+Oen1iN+CiKHR6iJ0rvZzvkL1BEyXkOirQHgJdroc7H0LCML2KrKxhwaBEFsW3gPhc2sE1hCc+YlT2SK0YhFvoSmgZSSAtsqBCKfsYZdjk6ZcoLOSF7QrGwCO25Sps8QKrQyYolmNmPzG1QSdzcAmi37QFRAdqYDdrbFloSUhiy0kRW2VdV/Ccu8AyVGz32/cxik8hp2GuEb7VfZ8Otvu7xFW47xRqoBNgVGlxa+ZNCTFHYRE1FyBlPYkFkWCkCqN7llhQo2KCz8nXAfcQ+uC621UB+yP9E2oc+MVDFNTqRhpmjqVHbQCHWbECD1ZbJBrWR4U+qu+kHsBGSf1khGFIiTuUIyRtjdmshM+tv7SK38EkngdsgY/aZ+uCTbs506pWy78VKL1LdGEPTj+8y7zb7FfCdyqt6wNASOak3BQJSJHhURwigf4MV6rVJP1fcwwuM5DJzIP/9l/THVBxWwz8ehiiY2rgD3zBZ1ZifxW2HI5XvQynjkAOMBG9NkFpbIyjyDM6DWGxuqPvvTI6aIYXDtSEv5s+38p6u3jlR59q4qjP9 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV8PR12MB9620.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(366016)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?r/RWp83hmgv0Pbi064UPpy3LGEh2/7qtetBYvgAi3QCTdXHVN6Rx4fKuf9FR?= =?us-ascii?Q?Jxaypok2r08RcOcsCWyu2s50cgznNfDhyRleddnjvI+BF8z0vs8KGM79fg/x?= =?us-ascii?Q?krpqXqFG1GYQL6wlpOPxVx/ncw9rOvLqsr9n3WMZMYtLnnFYjyWyKCxDG+Bd?= =?us-ascii?Q?hJ4HpZmSoJwzlQCqyBeQ1o1n8Ch+GX4+FjGaaqtE1i9V60HU1TW5QbMWdpYM?= =?us-ascii?Q?UaL1HwXgJVJiMX33pccZaqF6RI6jPK9YoXO48hRuv40+C397J6b03xi0qMmV?= =?us-ascii?Q?a0k2u6xmde+UTQP6Q0VA5CVkRwlTyv71rZmTR88zaZ1TDdc+zx/MOVseSgot?= =?us-ascii?Q?W/WB+eK+MbvBzV8+EQeHfoQj2lUqm9OlElWfJzq6sMae4ug39HUpTjroemKw?= =?us-ascii?Q?uIx1GWlTd/Jrr5pqNZTlmkIwTfPRVHb5WvNbsFP6QP9lQwsXMynpJ94NalLf?= =?us-ascii?Q?c3xnpvW00s501LlQmQSl9+mJXUWY83Gj6Br+AqToNjU5di23GBqIxTnFADZU?= =?us-ascii?Q?iiPgPk6HBIyXwv0qMrhXKHqGrAjXd2taSwxGoO8IQIU9ACqvuLsGdfuf6W5e?= =?us-ascii?Q?KOZakOt5NKZfFtJibzRkjpnrmSZMypQGhq7sQ4ba3QdUnySWBjlHZl+Pw+3l?= =?us-ascii?Q?F5exM8ki9QS2rM2Zzy4xc2MxHKRuCmkTpurdoxOwOvLV8kerhe3s/+ykqrZB?= =?us-ascii?Q?R5owD/uHph2xXC68jfAP/8d9XJeo31n2xAiuoh7O9Jic+3wu+/zWw4ld1Wnt?= =?us-ascii?Q?ZQaJuQpNmRVjne0JdK/RFFFuQNt6NqNwdGxPOuHvCcz6gTHFKrJsbgJHnE3Z?= =?us-ascii?Q?oKtyq4gWLrSG1cr/E0WfZawM87iEudM0Q9VWP77dRL602FgfF5L5o3NT5F20?= =?us-ascii?Q?hc2cvUtZF9moKUy5/TNkpA1n1nIrFYtOM1imcbppyaN6YABgRCwgn0xK6aSs?= =?us-ascii?Q?NoMs8uyovqblRlgXRl6kpzolC1msFtmJXOgr0qWeDogN1zjVypClBGVuNRBn?= =?us-ascii?Q?jI2ZBIO0oBr0eEv83bsxG3EGSVb6MAC6DsE8wNd/a1cmH0Aew4NgYQh5iaaY?= =?us-ascii?Q?5DUK4gn4zGrutsbkJq7vjw+ljKjhlEFnzd+gd2hSOwjsjJAN6BUklSdDEE6n?= =?us-ascii?Q?wHGmiMs2cA4CTGpxLBR1yFKjzO5GMSewbGcIRz9MGntnXVdZJHvQ3+HX5fk1?= =?us-ascii?Q?cqdsnO3pHxOclWLOelLbN1Y6whpgZGiiPmg6tq9QYvaxNL5391MJgsL+bNmV?= =?us-ascii?Q?0a9VXAYcNArQJW3PK0wTKFZTxmCslKZ+PKIz61AhmuhOydpzcenNrWm9qInb?= =?us-ascii?Q?Nqo+XlvGfUz+sDODvTvytalFrmU+kaPdYZoWgXuHEGDo45upZC4ppTNW6ExT?= =?us-ascii?Q?N5N3B80V7rpqKoZ4GL9x/43vFfNWDERAoNNXv26Q2ifb/Q2XfKVQMuf8wCjs?= =?us-ascii?Q?2I0dcUGF0Q7XqP7Rkavt+uO3em5SYUGfTtKEEmHiXlKtFjb0W7Sc2yOhakh8?= =?us-ascii?Q?qdpOl1aBzgSXXNtJCsdl/6Z3PcCPSrnHhCW2/u30DyJ8yozXHllyyQRfvKnY?= =?us-ascii?Q?lRXAM4/yv5Apto63tyixoTUoolPKIysgVRDrnUe4899NKA75VwXptmw1gWwH?= =?us-ascii?Q?fG+C8uwhIQ5mjBOHItlEdbWeOgk2gQziPQiYn2n2f/bjD8smh6XO/yptt7Xl?= =?us-ascii?Q?L7vnE4VS7ymJ3Hsz0kvyvhNYzsXTUtHLtfcocpG49RvPqlQq4qYwQxLxgXOg?= =?us-ascii?Q?G231S3f1pg=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5a5526dd-3a8d-42fb-8286-08deab978b2c X-MS-Exchange-CrossTenant-AuthSource: LV8PR12MB9620.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2026 17:47:30.0770 (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: mL6hkZMQU4EhjsRTrDWYRnehPv6QOI4BEQ6Tpw2/p5wj3Qxkgq9w4C4OWBW9ChOyLXl/KPUq+H6FSOHjeKMifw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB7997 Content-Type: text/plain; charset="utf-8" SCX_CALL_OP_TASK*() stored the subject task in current->scx.kf_tasks[] and assumed ops would not nest. A BPF ops.running() callback can call kfuncs (e.g. scx_bpf_dsq_insert) that enqueue work and trigger enqueue_task_scx() -> ops.runnable(), which used SCX_CALL_OP_TASK again and overwrote kf_tasks[0] then cleared it, leaving the running context wrong and leading to NULL function dispatches from BPF helpers. Save and restore kf_tasks[] (both slots for the two-task variant) around each invocation so nested task-based ops preserve the outer context. Signed-off-by: Andrea Righi --- kernel/sched/ext.c | 43 +++++++++++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c index b6d29087ec0e8..1ac885eadfa8e 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -567,37 +567,50 @@ static s32 scx_cpu_ret(struct scx_sched *sch, s32 cpu= _or_cid) * pi_lock held by try_to_wake_up() with rq tracking via scx_rq.in_select_= cpu. * So if kf_tasks[] is set, @p's scheduler-protected fields are stable. * - * kf_tasks[] can not stack, so task-based SCX ops must not nest. The - * WARN_ON_ONCE() in each macro catches a re-entry of any of the three var= iants - * while a previous one is still in progress. + * Task-based SCX ops may nest (e.g. ops.running() calling a kfunc that en= ds up + * in enqueue_task_scx() -> ops.runnable()). Save and restore kf_tasks[] a= round + * each invocation so the outer op's context is restored for kfuncs and for + * further nested calls. Single-task ops save/restore both slots and clear + * kf_tasks[1] while active so a nested call under SCX_CALL_OP_2TASKS_RET = does + * not leave the outer pair's second task authenticated for kfuncs. */ #define SCX_CALL_OP_TASK(sch, op, locked_rq, task, args...) \ do { \ - WARN_ON_ONCE(current->scx.kf_tasks[0]); \ + struct task_struct *__scx_kf0_sv =3D current->scx.kf_tasks[0]; \ + struct task_struct *__scx_kf1_sv =3D current->scx.kf_tasks[1]; \ + \ current->scx.kf_tasks[0] =3D task; \ + current->scx.kf_tasks[1] =3D NULL; \ SCX_CALL_OP((sch), op, locked_rq, task, ##args); \ - current->scx.kf_tasks[0] =3D NULL; \ + current->scx.kf_tasks[0] =3D __scx_kf0_sv; \ + current->scx.kf_tasks[1] =3D __scx_kf1_sv; \ } while (0) =20 #define SCX_CALL_OP_TASK_RET(sch, op, locked_rq, task, args...) \ ({ \ __typeof__((sch)->ops.op(task, ##args)) __ret; \ - WARN_ON_ONCE(current->scx.kf_tasks[0]); \ + struct task_struct *__scx_kf0_sv =3D current->scx.kf_tasks[0]; \ + struct task_struct *__scx_kf1_sv =3D current->scx.kf_tasks[1]; \ + \ current->scx.kf_tasks[0] =3D task; \ + current->scx.kf_tasks[1] =3D NULL; \ __ret =3D SCX_CALL_OP_RET((sch), op, locked_rq, task, ##args); \ - current->scx.kf_tasks[0] =3D NULL; \ + current->scx.kf_tasks[0] =3D __scx_kf0_sv; \ + current->scx.kf_tasks[1] =3D __scx_kf1_sv; \ __ret; \ }) =20 #define SCX_CALL_OP_2TASKS_RET(sch, op, locked_rq, task0, task1, args...) \ ({ \ __typeof__((sch)->ops.op(task0, task1, ##args)) __ret; \ - WARN_ON_ONCE(current->scx.kf_tasks[0]); \ + struct task_struct *__scx_kf0_sv =3D current->scx.kf_tasks[0]; \ + struct task_struct *__scx_kf1_sv =3D current->scx.kf_tasks[1]; \ + \ current->scx.kf_tasks[0] =3D task0; \ current->scx.kf_tasks[1] =3D task1; \ __ret =3D SCX_CALL_OP_RET((sch), op, locked_rq, task0, task1, ##args); \ - current->scx.kf_tasks[0] =3D NULL; \ - current->scx.kf_tasks[1] =3D NULL; \ + current->scx.kf_tasks[0] =3D __scx_kf0_sv; \ + current->scx.kf_tasks[1] =3D __scx_kf1_sv; \ __ret; \ }) =20 @@ -616,8 +629,12 @@ static inline void scx_call_op_set_cpumask(struct scx_= sched *sch, struct rq *rq, struct task_struct *task, const struct cpumask *cpumask) { - WARN_ON_ONCE(current->scx.kf_tasks[0]); + struct task_struct *__scx_kf0_sv =3D current->scx.kf_tasks[0]; + struct task_struct *__scx_kf1_sv =3D current->scx.kf_tasks[1]; + + current->scx.kf_nest++; current->scx.kf_tasks[0] =3D task; + current->scx.kf_tasks[1] =3D NULL; if (rq) update_locked_rq(rq); =20 @@ -633,7 +650,9 @@ static inline void scx_call_op_set_cpumask(struct scx_s= ched *sch, struct rq *rq, =20 if (rq) update_locked_rq(NULL); - current->scx.kf_tasks[0] =3D NULL; + current->scx.kf_tasks[0] =3D __scx_kf0_sv; + current->scx.kf_tasks[1] =3D __scx_kf1_sv; + current->scx.kf_nest--; } =20 /* see SCX_CALL_OP_TASK() */ --=20 2.54.0 From nobody Mon May 25 06:56:54 2026 Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11012063.outbound.protection.outlook.com [52.101.43.63]) (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 EBB174C0425 for ; Wed, 6 May 2026 17:47:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.43.63 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778089675; cv=fail; b=CHkqEeOEowrRjIkxqgkAf010I+IUJc1L80gXEpiKlPg9f8bcoF0pm5+Xy7I4U+K9tgcx3DqKCFUU07B0FZEcGpiXufb1OISjDxhCJNLnnJ2i3cdLBAvT/fq66KJ3ZTQ39D3RhjIY65ABqVCS3vNkKbWEYHJoKKTNxMXjB9cyW7o= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778089675; c=relaxed/simple; bh=bV26OnWAAuRpbun0suZqiyCWEmSOLxGoDVOlWxICbDQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=STeg8TEM8hSZVW89tnOkl3ijTMva1g87amiL7Fc6U5WNBnROemZKSVVMJq8mTy5sZeXjchiNSVSa5fQBjJg2PZzPzHvlEs1HV9DLECcBQlkfTr+m9jCyvefoyWmCvvJGEdhkmYN1uf+PEbG55Pu2yyXI+yv/bEz49hmkKslbOrA= 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=iCu9xefX; arc=fail smtp.client-ip=52.101.43.63 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="iCu9xefX" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ap7oIoQDWZ1wJbj/xH+c0MHFl1dcVwarLDy2S5uglfDKTt7N6zv4e/hdxNqh+NrNnwGBkFlHT9XkeSdQsx7uivoETNuEJ0Aj4tPrXL9DbPWfOFUa/VnHPi1MiZhsE0ZZ2TvLSAdBWVJCpe6BahhDzP3MpkW0rTw3pjDxv/o2FSamf9ipzWAnbBgoE260nLFBYSj4Tv+xbYz4uvU+kZXyXO/6UezG2WW7una8wRiD4ULLjd7vmtbhpNTA6+zBf5JiA1XViG80dOHcx8NqE+lC73ZCdpCVgWWvpjCA0vbufASozSY4aqo5SNmwd7dlarB06977fa/vvSIGljUzIVBmDQ== 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=sfYlsTmXBQk6LdSY7qhFPQkgWWUcJxDqo2BpmW1IFa0=; b=qgVoaPau+D5Llg/AMWyalSnsp/at4cbwfMzRuOgP9bOqElrKjslV5oqUj2B1TRSOTwc6gTW20dkQ9lHHDRiy/YZp2c8AhJmwoWZGwPNjuTWE0CRG4bvf/SIv1zA9+xuUvytZDFDO7Q9rThim7uLoAjYdPDlqYx/52P1mrC2HSaev08FggepGBoMGa/gK+gDrBlCXBaGd5spW5ip160daoCHN/78XiQxk4Xam1KaDfoW079Bh2VHIBMN9mg0Du8EoqE/f0YXsYG2LThWrsWw42Wj3h0ANOwjtQY+7olCRCsOWUQEAVeC2jMAzGA51K+X9MG3JXOJWB7CbXzGkUjzoMA== 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=sfYlsTmXBQk6LdSY7qhFPQkgWWUcJxDqo2BpmW1IFa0=; b=iCu9xefXm+KRnTykCME/3+pUYIAeFoiCLitTYZhuDPJJszzMuAX0+gxHoAXpvV1dt24/gMI9Sa8t8mcHLVKeEIr/1p8Mb8B/qRtNnXVWypoLiOhMlwoW7sbMe/XEwxFIWFgJCcWp3HU8AyQezr1vXWgnTJtd3PzhQtvP/Upy/TkNpse3/QieVEzj6xqQeLRUMg7excUcuFARuw7LeYr92myhdFPKuWB/o9074xdstPWaunZBpp2ArXcGx3yGqX3RBla5fP3dMTBjT/58FMBNAl3INaUXMSnOwyAZK7IclhEMmR/ljFJERIpYdTbviTLWriH/kH5mNFHf4gIMMaXvLg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) by SA3PR12MB7997.namprd12.prod.outlook.com (2603:10b6:806:307::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Wed, 6 May 2026 17:47:35 +0000 Received: from LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528]) by LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528%5]) with mapi id 15.20.9891.008; Wed, 6 May 2026 17:47:35 +0000 From: Andrea Righi To: Tejun Heo , David Vernet , Changwoo Min , John Stultz Cc: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , Christian Loehle , Koba Ko , Joel Fernandes , sched-ext@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 08/10] sched_ext: Skip ops.runnable() when nested in SCX_CALL_OP_TASK Date: Wed, 6 May 2026 19:45:48 +0200 Message-ID: <20260506174639.535232-9-arighi@nvidia.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260506174639.535232-1-arighi@nvidia.com> References: <20260506174639.535232-1-arighi@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MI1P293CA0001.ITAP293.PROD.OUTLOOK.COM (2603:10a6:290:2::8) To LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) 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: LV8PR12MB9620:EE_|SA3PR12MB7997:EE_ X-MS-Office365-Filtering-Correlation-Id: fffd492a-473f-4007-b702-08deab978e4c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: 2VKKzg6ugoMpQXI5dRBCLx+H9liksj39r9PPWIAJ4RoF7EkHWGw3gWvxh2G/8Zz5pkKx0S+JD+JjVKbYny8jMhRFFaDT7f0h8LExxdtvkEuUHyU0QwMLUYcIvFmHFQDHYE3KeJ7iq7ZvVlBuR0gRRm3/S9ocY+9N2zV80gdFISKKPKrpFXefckxKfRRmQxn9mVQEFwFXi3VES+ECBn7cYgaLCy9FV/H9v4M1ImcE6VqPnK/8OOOX5Oov60IvAoivd5BWZhKbReB6cGzsGSbJK3LMhEpU4K2E6GAsc++JrrX2JLe43Lr3yNH+yjE/QFkBab16eTwvCVeq5BTxTQH3XbvDOyuhWUVi84On6ArkpsYyn6XvsHME1sk459OsaPdlKlxfFuh95vMJZmNyR+MvvCLP2LBagHXK7v82LQW19r9u5+xvsEIMTEyA1XAWYEudl+SLp8IZxrLvK4BBlGTH8ifP3kATBwrmjpAMq4fapypqLyXPh5/2iLoUJrzZVKXBusHvWgnYuQnyKzfJIBFwMS9h7eAZQKRb7fG2u/F4Gy7WYyFEYrWX7JS1hlnekzcy2Eo0ahPrHxDOMPCI0m12ZvF0Bk5yHtMgYga3QxXNOng4zNx9Ka9iV4Gvhhjl+fPcRr0m3uO4MDko030lJQbcQ6IOonGMZzjhfk6BQ/4frlDdA3u3rm32X5KrqZ6wb6AL X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV8PR12MB9620.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QplUcPlOkFWkwYZS40rRt0OL62PwIGkRiSbhWkvPRJFwfBGDzi9hJCFfp3kv?= =?us-ascii?Q?vCGPuA9T4hHHUIO3U9Brrj5EUTuEPd03Csz8CKWnvzV6i/oZeISJJI6sOjoU?= =?us-ascii?Q?oBFZtgaPhLiS2a0X6CCbVXgwzuxMVb7MQlN7ar48UT6xBGSlcuiXAkAO4dFI?= =?us-ascii?Q?/NC/nCGTk9t8nYuBW/QJsxltghXuIDi00iOroXq3hzL67aC31hULXrlw9zkx?= =?us-ascii?Q?V+EJQFLRYzuux+Jq1JjpVxyACCe+R38QJvznsijNg1n356F1hL+tQ9gUmM/8?= =?us-ascii?Q?M1rfIVYgtbfxryJrtFozTcB9Xt4se++nvfpf+AHRfai6k/wkD3uM30oRkwuZ?= =?us-ascii?Q?4RCSxS4dQcWchL/4zSYP0TnOceb/kelxsPVgsetXL6440yJJ0jNNvzMcHMXL?= =?us-ascii?Q?fa6RDKfwtNHQfG7JPgPEZ/1NrNlhYbeqXxgpTUaeBYVFoU9yGgd6rKGaDMfz?= =?us-ascii?Q?cg/zDJkAa+6UBcPSc5BHgPJxCzrMZZ/fiL4AwtUOzlG3amhrOxRvsshdT2Gl?= =?us-ascii?Q?qlBlXtHdQVknTso8Bbq/1bSZrvsklnRB5T+oQxdYu1dbC9obCW3zSQdZBX6n?= =?us-ascii?Q?mydPRxUG2kNe6zB3GK1lgLbzomIjsPF//0bAzMaqu8346jTkn1bWQ79TpaAF?= =?us-ascii?Q?wCs75S3MTaahrNQWnVV0yfzbUN6uojtjYkYt/qWWVe2iURjQRb0iBTx/0Wwm?= =?us-ascii?Q?b2p13rzkKH6xW4Z84M/XtIl2kzK1Rqjte4RCaA/x+HZcgVdpLrRZ0ix18aTo?= =?us-ascii?Q?NTtrraLerlNuWphOK/h5cdHrxwymSX9p8tEEjfwYldfG0UYR+Gg1wi9ZxSW5?= =?us-ascii?Q?7fphzwxLTWLz/xMMXcPBMO/AcMInsnW3CG3XizGiXZxQGt4HU9K5QaKlsvcx?= =?us-ascii?Q?QsdX39RfbIy15+wruRTNB3gc5fyFx5dTcaToapM6jJYfJviJM8r/fx+pEDgO?= =?us-ascii?Q?f4vq2/KJWdOXqmzVoaJn6p8OrXYd7kGNnSyvNlkFzZCOr1r+aVAkoo2D33yf?= =?us-ascii?Q?SQVFR2Yrhk7OD1G15qCFSh1y1UQPjap/db3zRkFrjTW0cehXO3+BCCVS+fsD?= =?us-ascii?Q?BnNvanA8WlIarrvq+o0H0z5XzhborwdNVd8Yn5JG9a5Ih/bzzY91LvQMwc8H?= =?us-ascii?Q?RSZ/k25w4YNcLxAaN6gvunb+YPAyUjjNCmsAOGOiaaiLbsin2pd0Y84vsR03?= =?us-ascii?Q?AS6pjxrIQFRK1aGfQMoUQFw8fXHeMaAYAB2pwc1D4+ozT7Vw2nVJEQhuMjrD?= =?us-ascii?Q?xULuyEICS8B8SZuWeTLft/n7P6FiKkrgI1fT/vTJ/IEx3r3E8E+PnYxY88Um?= =?us-ascii?Q?78i+iPvpon/dw67evnTCDdcmMyH1Q060B0yVEXFmwh3HVyaM3fhf/rCpecw5?= =?us-ascii?Q?nhkJExZJZlepVx5aau5/H4zqhwrgrQEHoE1+HxTph7u4CSLNTznIyZfE5v8v?= =?us-ascii?Q?O1sQ1KAEssybosj8bEilstmfgqS1oT4rn0XZw1LaLssdr2J3m/+K38CyNIIr?= =?us-ascii?Q?hRUXSZDdlxppDlpHym0tEjdvfXameQQDu60kUYy4/AWE5u/jh4wG+NviRoy5?= =?us-ascii?Q?HCF3KpAaKUrSkMPsO+yJ2lAa/N2aZJGYSxgscW3qikbrIhIUZyO1RNaPEFAQ?= =?us-ascii?Q?REA5rVqyFk+dHXCiemPELN+qu/FfLOp/ZSXbUW546xauyo8dbJ0QuKXcuZKS?= =?us-ascii?Q?4fJi30wXx7jzrDTY1GvYMEcIWpXOLwaqQoQEm9mCvOWTCrhtkV0Hk0eDrvX4?= =?us-ascii?Q?O5jObBZE4w=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: fffd492a-473f-4007-b702-08deab978e4c X-MS-Exchange-CrossTenant-AuthSource: LV8PR12MB9620.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2026 17:47:35.0917 (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: fZtvWQ3j/E9Oyict//m1xo49u7lH/TJd3N+eOhhQuIVibUrsUuSXW2xpJaHsX+4CzFqUnnoem9UzUhizFnsYDA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB7997 Content-Type: text/plain; charset="utf-8" ops.running() can pull in enqueue_task_scx() -> ops.runnable() on the same current task while kf_tasks[] save/restore is still insufficient for every BPF/kfunc combination, leading to NULL dispatches and stack corruption. Track SCX_CALL_OP_TASK nesting in current->scx.kf_nest (incremented by all SCX_CALL_OP_TASK* macros) and omit the ops.runnable() callback when non-zero. The full enqueue path including ops.enqueue() still runs, only the runnable hook is skipped in this case. Signed-off-by: Andrea Righi --- include/linux/sched/ext.h | 7 +++++++ kernel/sched/ext.c | 9 ++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/include/linux/sched/ext.h b/include/linux/sched/ext.h index 5096c05d7a978..8c04edf1bc91a 100644 --- a/include/linux/sched/ext.h +++ b/include/linux/sched/ext.h @@ -197,6 +197,13 @@ struct sched_ext_entity { s32 holding_cpu; s32 selected_cpu; struct task_struct *kf_tasks[2]; /* see SCX_CALL_OP_TASK() */ + /* + * Nesting depth of SCX_CALL_OP_TASK() on this task as %current (e.g. + * during schedule() %current is still the previous task). Used to skip + * ops.runnable() when invoked from inside another task op such as + * ops.running() to avoid breaking BPF re-entrance guarantees. + */ + u32 kf_nest; =20 struct list_head runnable_node; /* rq->scx.runnable_list */ unsigned long runnable_at; diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c index 1ac885eadfa8e..af9b10cd82c4a 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -579,11 +579,13 @@ do { \ struct task_struct *__scx_kf0_sv =3D current->scx.kf_tasks[0]; \ struct task_struct *__scx_kf1_sv =3D current->scx.kf_tasks[1]; \ \ + current->scx.kf_nest++; \ current->scx.kf_tasks[0] =3D task; \ current->scx.kf_tasks[1] =3D NULL; \ SCX_CALL_OP((sch), op, locked_rq, task, ##args); \ current->scx.kf_tasks[0] =3D __scx_kf0_sv; \ current->scx.kf_tasks[1] =3D __scx_kf1_sv; \ + current->scx.kf_nest--; \ } while (0) =20 #define SCX_CALL_OP_TASK_RET(sch, op, locked_rq, task, args...) \ @@ -592,11 +594,13 @@ do { \ struct task_struct *__scx_kf0_sv =3D current->scx.kf_tasks[0]; \ struct task_struct *__scx_kf1_sv =3D current->scx.kf_tasks[1]; \ \ + current->scx.kf_nest++; \ current->scx.kf_tasks[0] =3D task; \ current->scx.kf_tasks[1] =3D NULL; \ __ret =3D SCX_CALL_OP_RET((sch), op, locked_rq, task, ##args); \ current->scx.kf_tasks[0] =3D __scx_kf0_sv; \ current->scx.kf_tasks[1] =3D __scx_kf1_sv; \ + current->scx.kf_nest--; \ __ret; \ }) =20 @@ -606,11 +610,13 @@ do { \ struct task_struct *__scx_kf0_sv =3D current->scx.kf_tasks[0]; \ struct task_struct *__scx_kf1_sv =3D current->scx.kf_tasks[1]; \ \ + current->scx.kf_nest++; \ current->scx.kf_tasks[0] =3D task0; \ current->scx.kf_tasks[1] =3D task1; \ __ret =3D SCX_CALL_OP_RET((sch), op, locked_rq, task0, task1, ##args); \ current->scx.kf_tasks[0] =3D __scx_kf0_sv; \ current->scx.kf_tasks[1] =3D __scx_kf1_sv; \ + current->scx.kf_nest--; \ __ret; \ }) =20 @@ -2067,7 +2073,8 @@ static void enqueue_task_scx(struct rq *rq, struct ta= sk_struct *p, int core_enq_ rq->scx.nr_running++; add_nr_running(rq, 1); =20 - if (SCX_HAS_OP(sch, runnable) && !task_on_rq_migrating(p)) + if (SCX_HAS_OP(sch, runnable) && !task_on_rq_migrating(p) && + !READ_ONCE(current->scx.kf_nest)) SCX_CALL_OP_TASK(sch, runnable, rq, p, enq_flags); =20 if (enq_flags & SCX_ENQ_WAKEUP) --=20 2.54.0 From nobody Mon May 25 06:56:54 2026 Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11012063.outbound.protection.outlook.com [52.101.43.63]) (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 9D0EC4C6F10 for ; Wed, 6 May 2026 17:47:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.43.63 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778089681; cv=fail; b=L22P7gKxhIhSJQrWQ0hSioOh+6I/koEoiVZbAwcFDs0GNzMjHo0BWZ+OXif0nIZoVDrBRp5kiEQFMFFOX2wmwNclBI7sqbQwZi2pESiOhjfab4FWHXvLwNIzYtEO3E2lAhTgIBFkYoBt6nc5EVioBNvWiY3gZ/1Pek0BqSp/XIY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778089681; c=relaxed/simple; bh=R9apPPZZZs4hZPLz5so8XCWTCCltb87tGpq+ZhgSPy0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=U0OKe441frjLZb9kHSPlMpltqucQfjKIaDW+7aUAcVMHbYWTTx0FuuDuUTrAmk5eJ0mGrVeRA+OPyo6DuUM+0OqJ/PuXlQjepm83SUKpFuJ6JiMDbX+9GKE5S4w2IGyWHUtUb0aqPkRX+KyrwgdYy7swzznzACAKWAhqPUZu4H4= 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=RorTu85T; arc=fail smtp.client-ip=52.101.43.63 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="RorTu85T" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fjKejdfXxxLrCw/NlKg17KZoHms1cWOpEye0Dr4uznq5wq0Th7QbHhchHQA51Nz77WRMWM2HvyKBQpxveQ7xUQSfmpzMfzPTENDEtaORUrMm3RSgmw4IYnhSYo+34L6SNASYKN5nUsJ29jVSyhEaPMW1/MbB8yquZUCXKBOuV2Nc0mmIkaBD+IwsvrsDu9TPErvZn73JPy4e1hUFJqYK68L9u48n/t/r2tPQO1zf0X4cvDZ9leZr+/uennc9sQymdpJJGNx+4C7Hyd+y1V+PlRANs8TKnzHT+1EAQFHBOT2Mg7s/Wo0Ya1GA/gFxn6sFfIY+3KJ37eawo0WKSkA1Ww== 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=r/1gEyra0WP5g50ycPh5EUurVggNq4MsdvKbcF5st/M=; b=UqDXFU9bTW8Kj9yEIihZ3wF43mizVT+1mM5ztMdbBwx851VtC6eHI1xQeT9l3ATjse50j19Q+T9ggKJpRsnxO9XhJoCA6d9MjWzfV0bwZ9QGiW21/Gx/4XJ4mESNThRKGEkxFCYuyGFQ4KgmhPmiVNsjTvHXUbJisvZaSSxPqP7grkZrhL9u/T6mQi046xB6A5yhGviEX4EuGInsVCiRhGjL740aWmZ6eibBaYy3tCtOGlfdAoxHakCYIq8PiK/Rc+LkgGndexzZehbgC+QUaqPDQyp7ks8rjEc1z96U93C78dMy2hq5/PwaqJWTkSaIDZLbE2AwcH3ky2LHOz3EEw== 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=r/1gEyra0WP5g50ycPh5EUurVggNq4MsdvKbcF5st/M=; b=RorTu85TDd+5Xr8i1v71LgCS1nyHvu3aA9Px9bPLfF2pEHaKCMt51y0JLclN6DgR1kVs2MTIVLFhX/SEk+Acu+bGfm/6YF6kh4dSrp01SXpgxKFjppQJ26CXwY7FJo/rv8j0uXVDV4KMFnnkgzs5cAiv91EQlCy0SdcalSSrMee9GGp+sJy0jclVfqlXfyF+c/U+FS1o34trTKrBtkOnvtyVNmcqX6UM6pCW9iJlDS3BXky/CTdsSPd8K/moHEXVcl4KkV81jsmRT2ZP6MxPgIyiwLEEzfAundmpiKi2VdBya46JGFRgIpvgQxIKgYUM/vlJm5G9gJ8OS0j+vYih5A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) by SA3PR12MB7997.namprd12.prod.outlook.com (2603:10b6:806:307::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Wed, 6 May 2026 17:47:40 +0000 Received: from LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528]) by LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528%5]) with mapi id 15.20.9891.008; Wed, 6 May 2026 17:47:40 +0000 From: Andrea Righi To: Tejun Heo , David Vernet , Changwoo Min , John Stultz Cc: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , Christian Loehle , Koba Ko , Joel Fernandes , sched-ext@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 09/10] sched/core: Disable proxy-exec context switch under sched_ext by default Date: Wed, 6 May 2026 19:45:49 +0200 Message-ID: <20260506174639.535232-10-arighi@nvidia.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260506174639.535232-1-arighi@nvidia.com> References: <20260506174639.535232-1-arighi@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MI2P293CA0012.ITAP293.PROD.OUTLOOK.COM (2603:10a6:290:45::10) To LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) 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: LV8PR12MB9620:EE_|SA3PR12MB7997:EE_ X-MS-Office365-Filtering-Correlation-Id: e6738ede-c680-474c-c28d-08deab9791a2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014|18002099003|56012099003|22082099003|3023799003; X-Microsoft-Antispam-Message-Info: s7f8PGFkGbKaiq9IBT2rt3WQ/xTV1pBpxvOcOqtdrkX/zlb+bAkhrp5lXTSu27nY3TWQRTeaP4i9h5lfsM+7t4dCbcjWRaoGjOP1mRYZIh6CbTlhMtE4YRjswmblCOcvV0q0Exoo4FPDYySRQ9DFXvQwovSjz5CoCd8gLLw2ax0mvYghTs/i4Uuv9L/V/y8A5z907Eyn6k4fhNraagTVwGizlhfnfKdtow///UvkQJspC0IpyRN9/DpIt840971JYxyrMVToOkmudsi6vuyeMWZjCqNAaO5jNQIPrqZ/hOHYnQl3WqOEU0SIBlBhnixeiJiMCiyTUZr1lF91fTM0xHMM0qSDj1AG8X6ELnhK5EGs7qd0fEzyqqrq9RieFgqm5w5ioy6hpMjO6ttMggwf5aEGJ0QO0GUwDnjhc2l1vbl9FqVH6UeorQ50+2rQ3dayTe5mMTi07Azqgst0TaAgOEENNCas9mnnGPmbCBc9oXVaqflNa23E+nwDGR+H75628KJF8RozFqr+mPXKXn8WQjpd7CzukTrw0k1gSbhqdMDRFc032RQfCLiGu3IX1O/B9oVa4hgTEjGKDxUwdSIZqSsMRyBvNaPxUVjp6KeFpDEcVcfRJ/9tcR75xRHwVJUILbe2MebBov/Li3KTKZK5+5l++PTXo9WBLpbAkVjuI1RXjUU9cQCISpBeZiVT+00p X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV8PR12MB9620.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014)(18002099003)(56012099003)(22082099003)(3023799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?iCY1qsqTF0tQkiUHWMrEmiPFc2o2NQI4aLDupP6kB5eaQ5mVUVqyMet8UT+O?= =?us-ascii?Q?EzWGLrhRkmJtXPaFV/v1Mhf7N4f7EBG1QLq/WbrEEGMo8ZRGgPLuR7bvCS5h?= =?us-ascii?Q?2z3dN1RfCj887sPPeSLdGI4UHOm2u7f/tmKablOQfG9SNAfrfjNr2Iuw91Wx?= =?us-ascii?Q?tEr8XhXLirZdJooL034kCQ1cLpU3BMhc/OF3/i8ng6+3uvE+DrjgYqLn8fSm?= =?us-ascii?Q?4zOl89/VqoCqEOCjI7HhBWI3mbrRCpjrw1WgsluopFtZHgBtXB0rd5Zx0Z/I?= =?us-ascii?Q?ldq04A/Q9KZDIjiwXdcxCnTyaKZvHKYtupPQjCuVikFpX01iAlUTnxNoRszx?= =?us-ascii?Q?YBs8qfdYSvn+N1g3Ro0wNE07YRR9quGD6xKD7SxAMOQW7kcumLCWM2m7R3Ip?= =?us-ascii?Q?vcooPR0mvdNHM5lzCiustx4PmBgsvLJh1clxWYvWlKLhfq6XuJ08xu5CUkGD?= =?us-ascii?Q?ubaTh9ZCBMaeOblE7iR8DRoBM2oP2y6FWgUuUnyvhdiSI+Y/5jypmrssYXzb?= =?us-ascii?Q?FLfMvgB2XNqKYFsG2/3jGxAPDV5pbB03og3EL4c3NSuvIpYagZ+qLWu0LnNG?= =?us-ascii?Q?rN0K+Y/LMEAtWuXLj7IxCSGIxd3KNeua74Hra2EaPpK9clS6PZtzZjIqgVVa?= =?us-ascii?Q?lDEq2rzZULTOuFZACWNFFStqifspAJ40zCrWqajStH+4cbANGBR95P87uJC5?= =?us-ascii?Q?qoQejrk7d/GgkL+3PA0SbjvJKuFg/6fLVofGstvj3wrCCxR0VW/4bUSSqYgA?= =?us-ascii?Q?EyJPh1x8qbn/u5B7iAZ88ILbseGNKhYimG9HbVyceh8x2IBBCOQ1rVevZhQC?= =?us-ascii?Q?+P9UfhPQjUXVNvi2gzsOHt4FeZSGa+yzKMcgYph9wjl/X9YUUWff79qy1PGF?= =?us-ascii?Q?vZH39rKinCIgj/wd8OM2/g9ladwk6XXjH+rw1VhPeghLxLV46PNOs60oBuAW?= =?us-ascii?Q?S0P83bqGJ+1pekuD55ZCpUbfj3pPJJ4PQ3NitgyZX6bledtC6v4GIbPTKq0E?= =?us-ascii?Q?kfWa8p2u+Ma3V+s0MLA1DA1v5qnSVkJp/Zon80YklCnMx29wpm8gQ8jfJwwF?= =?us-ascii?Q?u0XfxCv/N5M47PVZwVFa2gEFXycJGexc/CAy+uMJwXTag2M1E4g+Uk1Kb0s+?= =?us-ascii?Q?G1mLp+rz46o6dJmyr/jEP1ugRpAMtigVQ6WZbIKalI7X2kv89qmjD/Fwq7WO?= =?us-ascii?Q?UoTwgA0DMgHA1q8lHKE9IoAd5OlVeWrmXSTmJuYXGx8eGSF3sog1TL5k5ex8?= =?us-ascii?Q?TsVl93n+DmySMfq+v1g8yA/kMeTM5Vwbwm5KL4Axb/eNEZHx9Ygv3IVNLlcG?= =?us-ascii?Q?+FPdceOmUC2rRWWznRSVmQnmMsiFkYQo0FtRF9Zmq1jAhfu3wae3WJ86MATs?= =?us-ascii?Q?nd0/sz+zElQmSygiX96k15Gdkvc+yBiqtVuHu3pGuo//l0NiejWkscGt2Lno?= =?us-ascii?Q?iz5dl3seQ/KKWRH7wzAAxDqj4QXWCwefm3vLD7cGMB52ARRqgkOO/p+9Uuc2?= =?us-ascii?Q?02CHaEZBvok3vVBdOv4t5Hhzw1x+mMVfROUc0xrRw0QvtVIkEc3a4ycnEibS?= =?us-ascii?Q?+2YE9AYg+L2SXcHc5Q/H8shp7bII9rP7iNFxVsrZGP/+yd5slimpadET3hA3?= =?us-ascii?Q?PR8JYOYXBKdmcw+M8xWGw/18zfftrOVf0DP1BDCuh1/lFsuQN2txAEq7yB34?= =?us-ascii?Q?3KaRJ05IVHEdobSbM1RYxwa6Gh7+Q7Auvv+58gjQcrPgvcVMpFlOHkFaC89V?= =?us-ascii?Q?K+yiaMkL4A=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: e6738ede-c680-474c-c28d-08deab9791a2 X-MS-Exchange-CrossTenant-AuthSource: LV8PR12MB9620.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2026 17:47:40.7179 (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: Wxp1ynOsdL5fhIVGBI10OWcLZgjAwUeJB4eGfiYAOczyd58/kronFpvb/6sB1h0+5dBGaGxF2fvyJWFeTtO3rg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB7997 Content-Type: text/plain; charset="utf-8" Proxy execution switches a donor's execution context to the mutex owner, so the owner can make progress while the donor remains on the runqueue. This logic might be incompatible with some sched_ext schedulers: the BPF scheduler picks tasks through its own dispatch interface, and a proxy-exec switch may end up running a task the BPF scheduler never dispatched. This mismatch can break BPF context: sched_ext callbacks fire against a task that isn't the one the BPF scheduler tracks as running, so any kfunc they invoke operates on an inconsistent view of the current task. Therefore, when sched_ext is enabled, disable proxy-exec context donation by default: - Force try_to_block_task() to actually block a mutex-blocked prev instead of keeping it on the rq as a donor. - Skip find_proxy_task() in the pick path. Clear any leftover PROXY_WAKING marker set by the mutex handoff, since find_proxy_task() is no longer there to do it; otherwise the task trips the blocked_on mismatch WARN in __set_task_blocked_on() when it resumes the mutex_lock() retry loop. However, some schedulers may not consider proxy execution as a real "task switch" and more like a "function call": the donor effectively executes the lock owner's critical section, so the switch does not represent a true change in scheduling ownership. To handle both semantics, add a boot-time knob to enable proxy execution under sched_ext when explicitly desired: sched_proxy_exec_scx=3D0|1 The default is 0, keeping proxy-exec disabled for the reasons described above. Setting it to 1 allows donor->owner context switch even with sched_ext enabled. Signed-off-by: Andrea Righi --- .../admin-guide/kernel-parameters.txt | 6 +++ kernel/sched/core.c | 47 ++++++++++++++++++- 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentatio= n/admin-guide/kernel-parameters.txt index 4510b4b3c4165..f73c12e9645de 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -6821,6 +6821,12 @@ Kernel parameters solution to mutex-based priority inversion. Format: =20 + sched_proxy_exec_scx=3D [KNL] + Enables or disables proxy execution when sched_ext is + enabled. The default is disabled, meaning proxy-exec + context donation is suppressed while sched_ext is active. + Format: + sched_verbose [KNL,EARLY] Enables verbose scheduler debug messages. =20 schedstats=3D [KNL,X86] Enable or disable scheduled statistics. diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 1c161dd9d7440..0f714c6613771 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -151,14 +151,52 @@ static int __init setup_proxy_exec(char *str) } return 1; } + +DEFINE_STATIC_KEY_FALSE(__sched_proxy_exec_scx); +static __always_inline bool sched_proxy_exec_scx(void) +{ + return static_branch_unlikely(&__sched_proxy_exec_scx); +} + +static int __init setup_proxy_exec_scx(char *str) +{ + bool proxy_scx_enable =3D false; + + if (*str && kstrtobool(str + 1, &proxy_scx_enable)) { + pr_warn("Unable to parse sched_proxy_exec_scx=3D\n"); + return 0; + } + + if (proxy_scx_enable) { + pr_info("sched_proxy_exec_scx enabled via boot arg\n"); + static_branch_enable(&__sched_proxy_exec_scx); + } else { + pr_info("sched_proxy_exec_scx disabled via boot arg\n"); + static_branch_disable(&__sched_proxy_exec_scx); + } + + return 1; +} #else static int __init setup_proxy_exec(char *str) { pr_warn("CONFIG_SCHED_PROXY_EXEC=3Dn, so it cannot be enabled or disabled= at boot time\n"); return 0; } + +static __always_inline bool sched_proxy_exec_scx(void) +{ + return false; +} + +static int __init setup_proxy_exec_scx(char *str) +{ + pr_warn("CONFIG_SCHED_PROXY_EXEC=3Dn, so sched_proxy_exec_scx=3D is ignor= ed\n"); + return 0; +} #endif __setup("sched_proxy_exec", setup_proxy_exec); +__setup("sched_proxy_exec_scx", setup_proxy_exec_scx); =20 /* * Debugging: various feature bits @@ -7111,7 +7149,8 @@ static void __sched notrace __schedule(int sched_mode) * task_is_blocked() will always be false). */ try_to_block_task(rq, prev, &prev_state, - !task_is_blocked(prev)); + !task_is_blocked(prev) || + (scx_enabled() && !sched_proxy_exec_scx())); switch_count =3D &prev->nvcsw; } =20 @@ -7123,6 +7162,12 @@ static void __sched notrace __schedule(int sched_mod= e) struct task_struct *prev_donor =3D rq->donor; =20 rq_set_donor(rq, next); + if (scx_enabled() && !sched_proxy_exec_scx()) { + if (unlikely(next->blocked_on)) + clear_task_blocked_on(next, PROXY_WAKING); + goto picked; + } + if (unlikely(next->blocked_on)) { next =3D find_proxy_task(rq, next, &rf); if (!next) { --=20 2.54.0 From nobody Mon May 25 06:56:54 2026 Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11012063.outbound.protection.outlook.com [52.101.43.63]) (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 092DD4C6F0D for ; Wed, 6 May 2026 17:48:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.43.63 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778089688; cv=fail; b=q1s+W3BN2a3iwzsoQl0c3grIEsNgdUpWhvSVNENmC8mZRun95NAuzqgfYNSfMUO4ww9r6o1WOc+UnuEuvMwbxvPyx5FZbtP/1l73Y7wRXEB3BDN0xeqiTUbxHy1Pf5aZt59DBSCOWJoJj2SlofqUxplKi4z07KfHKhK+QcMNQu4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778089688; c=relaxed/simple; bh=+lcXzadfLaGDTyQMz73I4WVWYJ+DAAAMYHwVoVfcYXg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=l5eC4mwUeLL61jfoSWlpJJ7UOfXc4Y2D3M+tuzKLDJMVRQVqlHT2H9IgWaJcK7cG3ly18RcbYSkRUJLA95sfAG1xKIAEuzQqDnph2g7NnjUyKIZOMVpj2FI+80apb0DryO43VockZWpX9z1thr48nyY72Aht9ubdzr+TPkKZh54= 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=EJ1AI+3H; arc=fail smtp.client-ip=52.101.43.63 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="EJ1AI+3H" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=BiVVrSh4/gkxCqLXGooqfD0QMfFxdIB5q9U5jZzWoQaWezfeuTHHp1HgaeTNpB04gbMvP2SCKfqeEVwTwQxGbYaBjfkqPgGe+g03pJoBjO8YVdpE/u1BB7Pa5MpjyUyIXk6OQWFC+Uq6gO8SVOF3sadjJZDhONSEfP1B7trCCSRei0O5cwQ5zs5rV10EJitEUQvFefqkfYI920lqgOqOnASO8yCyJ5yoZZO06aN1FT8XflvqK+oFVE58ZGoWbQAS7dAZnEKEyhXmwpqSRTx42+YERr49qPx3EMRGzdEa2Rbf3iNyWy9m4ffBuq1iI8wuvmQh6SQfjP50zYkLftp0Aw== 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=htXhEH++GBR1NdBQ+JF+H+8Z5cQ0oRbOuEXdj3mqxZY=; b=XlbK9FhuaXkC/Bm3smUl12ONRL899QEEL4ju03DHIYo1NGrYa7xRDdt7l2i7RsNia3F7t9RlrdjV4tGc0BggA7Icy4a/ljxNPqKJonAax7Prjmik/jMFFuzMhTtwSvxlTdxMqf++oPPUkvawXijhHFbkAcp43TOsLTOMch+NU5+vaqRNWIlwstn3CdJOTUzP7rJtvHdmMo3VRDNJ+bTnoLVwgHIJRQRSslMctYweGofMMNCd+e9q0vJbr8+NAnnKWVSarmm6Z/TiuUAgAykk/gf/tMv+y1uqPNhA9ss4YTww4mJDfvOoR9TGtXtMtf2gHTYr+wOb4W2cM3+JElbkfA== 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=htXhEH++GBR1NdBQ+JF+H+8Z5cQ0oRbOuEXdj3mqxZY=; b=EJ1AI+3H/4UEqqRsxdENqyj4RiNLkpgPiAada18FjYj9wdo+z0wqLsJjH0BxytuMtz7EHNEcO7xBLf5wcEziFgiWp0e1pAuYtNs8NYRv4avMEex4+FISNsVc6JVIbUnXw1Q+oiKIjC+NFPEJtI8zJC43mcABL5524Te3DkNVvEuWnrKVJRjvv5ug3qwwPSqINjbIrlRcFNmEZQnj0fAJ+Cge8cC5eThS9kt4tbhCUH8cgfnUhTv8nxtBvHt2EeIkwQ0Lyzn0H9oCQ4Zro6vKJihqfznNuYnyM+pjlO/ENGzebEc+gov9QxHdWyyHAUkHMxaXOorU4TotnJUTuNYEXQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) by SA3PR12MB7997.namprd12.prod.outlook.com (2603:10b6:806:307::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Wed, 6 May 2026 17:47:44 +0000 Received: from LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528]) by LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528%5]) with mapi id 15.20.9891.008; Wed, 6 May 2026 17:47:44 +0000 From: Andrea Righi To: Tejun Heo , David Vernet , Changwoo Min , John Stultz Cc: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , Christian Loehle , Koba Ko , Joel Fernandes , sched-ext@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 10/10] sched: Allow enabling proxy exec with sched_ext Date: Wed, 6 May 2026 19:45:50 +0200 Message-ID: <20260506174639.535232-11-arighi@nvidia.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260506174639.535232-1-arighi@nvidia.com> References: <20260506174639.535232-1-arighi@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MI2P293CA0009.ITAP293.PROD.OUTLOOK.COM (2603:10a6:290:45::6) To LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) 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: LV8PR12MB9620:EE_|SA3PR12MB7997:EE_ X-MS-Office365-Filtering-Correlation-Id: 311dfd40-a835-4bb4-8249-08deab9793cf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: yV/kJ56eJUBKlFmme7UdIHQ7s2joJ5CQ+1eMGukHeGpkVJSeIx+YUiKZw+B0z3o89axgNNzbugrAEopLrHG+TE3//LjkHUO92844D+zexpwO2x9BxnQkMHDcPMV66D6NvYy1o4TxhUcwxGXpN3hyQsM8wbikoTbzxof93s6l7rooNe1JPq+Zb+StlPYQyO0Sb59vi9RXDupetQ8jOUd3n5SRF0WsyohJAd3WsoqUh6ImY5XYnojSXdvodUaMksLOiTkglQe6ga82h6fI5lVo5Qh9CQQLtxivB3iJXslsLv3aotg4Uk3K35qQDQMPHaGu0zDVa6vj50QadOr76dHVTrGO45aD8yS5o08QqKKNGRYpFBum/PJRnZEpQSOhDSKVp3uDE7/yKzhvFxm1NY50PHM7scdz/9keuNKBN8nDdpusQl6jPLbfR3bHPq2z2ubZfuBAyZ9UfUBdhDFNaLSVeQPtBnocal6Bie4MZ2iIV0Khv1ojxvjGZFMJWp84uE09vIfzX8T9F6TVKreIza9VHgatBIZfgv3k+yzDecXuk0UFj0+xXfz1bwUjOQYoPdkL0GMre/6OTmT12Arf8/x9d16T3BpkrB1EqC60oy2TuR1+St0iqM+4w4MyUahRmtr806sr6LCE1wbx20rkHbXjYhSOfysy9ypnOemiz7MAQZuwgXCiRkUZ5RAwQ17bATo3 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV8PR12MB9620.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?vKYybTCJxMNKU2TcveKa1vvF7/n9NoKjPpm4FKArMnl5EtA/xf1tI7cRSLAz?= =?us-ascii?Q?DWboWL+tF4QFGe69IfEWrrY/3n0Hl7oJJqYLbO/qCI1bWZeWmJCawwk/711R?= =?us-ascii?Q?VvDEep9eMC2ZjvvcVBFW/E+mhpMlv050AkEmrikavzTg10D9i0Dbs+eOYvxt?= =?us-ascii?Q?oInZPxPnsCWdScfKl5yDJXsR6z3PGLRSPVT5QiX02nYjFYohWBlEUmEQ6KhE?= =?us-ascii?Q?znYjuMOGEjgtx297SQnYA954SrpRvW8thIKNk9t/SHCH2G4Vq5osYvxoV6zt?= =?us-ascii?Q?5i+PGghEwsgvBLontNDcNquZtJa0QSPt0fVil4sdMRUZ4NNVpKvRgCw0F21y?= =?us-ascii?Q?4vowMJf+dl6nD+KSQ2qIfHIjKSwa+ptdgQW+Za0DgN9RkWUeKIHQiun6dhMt?= =?us-ascii?Q?cD5RlCelWupCwCe2OwpD9PxdQUq8GThwJaqPQR6E3Pk1FnNpzmcqu2kt7hCM?= =?us-ascii?Q?B1fuMdajLAdmksUnqua4X4ZWY9M+LdF9tmbBuvXAQMKnBBlLzQP9OhNb7FVq?= =?us-ascii?Q?zv6lhqo/MYy0PFAoCcciF3CWRGJkocNbpa5K4vot5cpxRmKqzFiokuY+Wxap?= =?us-ascii?Q?wtCpn40P5e2pzXh3oVo1dRBwRyrg1BRLMHbl/OOe8FRmPMh8PnI4UofD6c6F?= =?us-ascii?Q?xfCz9yx+PL52QcWiHt++etlHcSktaA3Nov6jF/LXkEhyxecZAGFy/d8bMRsQ?= =?us-ascii?Q?vRP+se1s7ddIwxhVW5ukJGK2ePLLlwjs3U9fEKRce31lE35AHAOct/wKZX7A?= =?us-ascii?Q?mEhdKGZ1zRKiedazunLSnWqQkPHFBMpdNiVCM0i6yPdT4uuFryCAcMpT8Rs/?= =?us-ascii?Q?ajZcT0qotoWM7kz1K7jfssONih9/BUUqvnLLiNuLWLejU7NmpUESZ32Slbg0?= =?us-ascii?Q?WTl/GMU77NRc4HpYQfwYHpu+sHkqgcP4c5cNdmnx4VuQnURyTraV3TYjCbHe?= =?us-ascii?Q?1yeECWBWyHx0ytMFOTk74vh5g5HX4Vz/KfaOTa0wa1/QHryg21aMy/ROhFEV?= =?us-ascii?Q?zd1qFGQYqcZBxX6GWY7eNF4MW/PWUoZr1cnGNytVRYxM/NNOt6YO404IDIsR?= =?us-ascii?Q?glsnNa5qH8LQiex5n+GioLOCGgxEYdCeQf/yt92x3eme25aTo7XZ7de5TUgF?= =?us-ascii?Q?0ju+3VgsnIX5wszlXzCO/rOj+J3ebm3Kiqi0YVDvXmmQklNQjxmI1+TRigv6?= =?us-ascii?Q?0eG0bc1MpA36xhGmgmr6LtjEFevpB0N7uTTik23sIaRZbc4OdSEhVHZcMnbr?= =?us-ascii?Q?MBnx6fxP0j3LLMkjuGKEFeWKVjc2pcSwLJ3wgWE5/WlrV+XEdSRx5m/Bu0A2?= =?us-ascii?Q?nMEO+RnqfuJVCTNqclSwwitio3cAH52p+4DReBDAAQ2if4yhU2Fv9moqqfV/?= =?us-ascii?Q?u8f/AcBV9SqbqaYr5Xwa7j27FGqCJXLJWIlk/TK+YD+RKzJ5EdBFJUwLHLTU?= =?us-ascii?Q?ZLOHa6ZYbuXKvVABxP+0+UxR0qpz12r8+fGeod0ovFhplFYwnYTaIpSuuE1m?= =?us-ascii?Q?z7SITSZumLWpPDI6hbhydVhTD7i7j3hiowN2URMybO3Xn+xGYbmtQwbjBG5i?= =?us-ascii?Q?AMYWRAss7l1gH0MYHVnHCFhbTnD7kHJ+12OLzX12syxouvyGKg95/Y9/2BhI?= =?us-ascii?Q?haizuZxPseA3FlKU4mgwgJLKWEq8Og04DgrBL9TDsUZc6v5iQ0obrPCmHaJ1?= =?us-ascii?Q?bzTdXtppJQpXFkiGq9dm5EQz4/NBhYe7sd7IwBwSDcI+cnPFbXddR9Rk2ug8?= =?us-ascii?Q?J2Ow8aS37A=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 311dfd40-a835-4bb4-8249-08deab9793cf X-MS-Exchange-CrossTenant-AuthSource: LV8PR12MB9620.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2026 17:47:44.3303 (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: lW8MYahuoYQqb3HhQeYqY9nw4t84CHo6FZvwvK7nHJx2RwAugAxou6pusMPO9Gle7wNktkmYLHxjy4k3ejduiA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB7997 Content-Type: text/plain; charset="utf-8" Now that sched_ext supports proxy execution, allow enabling both options together. Signed-off-by: Andrea Righi --- init/Kconfig | 2 -- 1 file changed, 2 deletions(-) diff --git a/init/Kconfig b/init/Kconfig index 2937c4d308aec..6b18ba7263f0b 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -934,8 +934,6 @@ config SCHED_PROXY_EXEC bool "Proxy Execution" # Avoid some build failures w/ PREEMPT_RT until it can be fixed depends on !PREEMPT_RT - # Need to investigate how to inform sched_ext of split contexts - depends on !SCHED_CLASS_EXT # Not particularly useful until we get to multi-rq proxying depends on EXPERT help --=20 2.54.0