From nobody Sun Feb 8 16:11:30 2026 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) (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 D4704199924 for ; Sat, 8 Feb 2025 04:43:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.60.130.6 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738989836; cv=none; b=D6uV0Cyhu0yzEToc7TYsGqamGno+7yJaQnb1IPkrGrwtonGul0Ai22QW4yCPvUY2S7N32kaYVaWPbUur5Mxj7AOL/pix1sPscAXeZoIAERDLIJBQ0ePjTcJdqtIVWy1g8XEMxdQymb2Ptdq4lRWKCuKhzIdR8rzIUcIp4QOL+Yk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738989836; c=relaxed/simple; bh=Clupna4WtDzo0I7J9mdr8BDoaO/Cu3NSxtatpoa+gpk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SB1xQCXmUco+6EqMEszamwgksNNwLvSJPQBB9mRJYqsIlrARYRFhzLHB3VAW1Lr4Di+lsMfLWJ7wDTKodItnfcTpe6CHTVNmiLmejRhmd0n8TJBrdvkkcrpQqMO7eXTVM7mNh5bLOrLta9wNDDGXS3WXRlr7tfqDn1stQHDOQn0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com; spf=pass smtp.mailfrom=igalia.com; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b=RuvOlzzs; arc=none smtp.client-ip=178.60.130.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=igalia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b="RuvOlzzs" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=TYwyZTO2dcI5hrE2Yr9+9dEFchnMWRhOL3bv8klJOEo=; b=RuvOlzzsJpkowuMsOhwPZKyELE 3CAsm/cv/MRb1CssGQj+Q4/XKrOPk4xfKq+K/sChPmDJyfEdbrrwC5LeuMHUp3Qr0O/3eWhlH0XdI fu1n61B5D8GmG1RSkL9Sm8OcGhs12EVxfWJJ0vx8WvOGFoeLPRNXpEGoNo+SgewJCtayYeFbLTtCm kZSca/esAlSs+qoJYUJkXYoqiSOS0nrz7ERFzIYrSYIaL3NO7eo6NuDL5d9v2gGGn6K76Fmx/rtF7 YhjJppIZ0JDO9NI+4xvS76vh3cm8LQp3LebwZXWQ8IzsGAYJ7TtXSBQiiafETd2oanW4ixXJ8zEU2 Hur+KZYg==; Received: from [106.101.136.205] (helo=localhost) by fanzine2.igalia.com with utf8esmtpsa (Cipher TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1tgcgu-006GA5-1u; Sat, 08 Feb 2025 05:43:46 +0100 From: Changwoo Min To: tj@kernel.org, void@manifault.com, arighi@nvidia.com Cc: kernel-dev@igalia.com, linux-kernel@vger.kernel.org, Changwoo Min Subject: [PATCH 1/4] sched_ext: Add enum_defs.autogen.h Date: Sat, 8 Feb 2025 13:43:29 +0900 Message-ID: <20250208044332.492494-2-changwoo@igalia.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250208044332.492494-1-changwoo@igalia.com> References: <20250208044332.492494-1-changwoo@igalia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add enum_defs.autogen.h, which has macros denoting whether particular enums in the sched_ext are defined in the kernel or not. The file is generated by gen_enum_def.py [1]. [1] https://github.com/sched-ext/scx/blob/main/scripts/gen_enum_defs.py Signed-off-by: Changwoo Min --- .../sched_ext/include/scx/enum_defs.autogen.h | 120 ++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 tools/sched_ext/include/scx/enum_defs.autogen.h diff --git a/tools/sched_ext/include/scx/enum_defs.autogen.h b/tools/sched_= ext/include/scx/enum_defs.autogen.h new file mode 100644 index 000000000000..a32e534a4012 --- /dev/null +++ b/tools/sched_ext/include/scx/enum_defs.autogen.h @@ -0,0 +1,120 @@ +/* + * WARNING: This file is autogenerated from scripts/gen_enum_defs.py. + */ + +#ifndef __ENUM_DEFS_AUTOGEN_H__ +#define __ENUM_DEFS_AUTOGEN_H__ + + +#define HAVE_SCX_DSP_DFL_MAX_BATCH +#define HAVE_SCX_DSP_MAX_LOOPS +#define HAVE_SCX_WATCHDOG_MAX_TIMEOUT +#define HAVE_SCX_EXIT_BT_LEN +#define HAVE_SCX_EXIT_MSG_LEN +#define HAVE_SCX_EXIT_DUMP_DFL_LEN +#define HAVE_SCX_CPUPERF_ONE +#define HAVE_SCX_OPS_TASK_ITER_BATCH +#define HAVE_SCX_CPU_PREEMPT_RT +#define HAVE_SCX_CPU_PREEMPT_DL +#define HAVE_SCX_CPU_PREEMPT_STOP +#define HAVE_SCX_CPU_PREEMPT_UNKNOWN +#define HAVE_SCX_DEQ_SLEEP +#define HAVE_SCX_DEQ_CORE_SCHED_EXEC +#define HAVE_SCX_DSQ_FLAG_BUILTIN +#define HAVE_SCX_DSQ_FLAG_LOCAL_ON +#define HAVE_SCX_DSQ_INVALID +#define HAVE_SCX_DSQ_GLOBAL +#define HAVE_SCX_DSQ_LOCAL +#define HAVE_SCX_DSQ_LOCAL_ON +#define HAVE_SCX_DSQ_LOCAL_CPU_MASK +#define HAVE_SCX_DSQ_ITER_REV +#define HAVE___SCX_DSQ_ITER_HAS_SLICE +#define HAVE___SCX_DSQ_ITER_HAS_VTIME +#define HAVE___SCX_DSQ_ITER_USER_FLAGS +#define HAVE___SCX_DSQ_ITER_ALL_FLAGS +#define HAVE_SCX_DSQ_LNODE_ITER_CURSOR +#define HAVE___SCX_DSQ_LNODE_PRIV_SHIFT +#define HAVE_SCX_ENQ_WAKEUP +#define HAVE_SCX_ENQ_HEAD +#define HAVE_SCX_ENQ_CPU_SELECTED +#define HAVE_SCX_ENQ_PREEMPT +#define HAVE_SCX_ENQ_REENQ +#define HAVE_SCX_ENQ_LAST +#define HAVE___SCX_ENQ_INTERNAL_MASK +#define HAVE_SCX_ENQ_CLEAR_OPSS +#define HAVE_SCX_ENQ_DSQ_PRIQ +#define HAVE_SCX_TASK_DSQ_ON_PRIQ +#define HAVE_SCX_TASK_QUEUED +#define HAVE_SCX_TASK_RESET_RUNNABLE_AT +#define HAVE_SCX_TASK_DEQD_FOR_SLEEP +#define HAVE_SCX_TASK_STATE_SHIFT +#define HAVE_SCX_TASK_STATE_BITS +#define HAVE_SCX_TASK_STATE_MASK +#define HAVE_SCX_TASK_CURSOR +#define HAVE_SCX_ECODE_RSN_HOTPLUG +#define HAVE_SCX_ECODE_ACT_RESTART +#define HAVE_SCX_EXIT_NONE +#define HAVE_SCX_EXIT_DONE +#define HAVE_SCX_EXIT_UNREG +#define HAVE_SCX_EXIT_UNREG_BPF +#define HAVE_SCX_EXIT_UNREG_KERN +#define HAVE_SCX_EXIT_SYSRQ +#define HAVE_SCX_EXIT_ERROR +#define HAVE_SCX_EXIT_ERROR_BPF +#define HAVE_SCX_EXIT_ERROR_STALL +#define HAVE_SCX_KF_UNLOCKED +#define HAVE_SCX_KF_CPU_RELEASE +#define HAVE_SCX_KF_DISPATCH +#define HAVE_SCX_KF_ENQUEUE +#define HAVE_SCX_KF_SELECT_CPU +#define HAVE_SCX_KF_REST +#define HAVE___SCX_KF_RQ_LOCKED +#define HAVE___SCX_KF_TERMINAL +#define HAVE_SCX_KICK_IDLE +#define HAVE_SCX_KICK_PREEMPT +#define HAVE_SCX_KICK_WAIT +#define HAVE_SCX_OPI_BEGIN +#define HAVE_SCX_OPI_NORMAL_BEGIN +#define HAVE_SCX_OPI_NORMAL_END +#define HAVE_SCX_OPI_CPU_HOTPLUG_BEGIN +#define HAVE_SCX_OPI_CPU_HOTPLUG_END +#define HAVE_SCX_OPI_END +#define HAVE_SCX_OPS_ENABLING +#define HAVE_SCX_OPS_ENABLED +#define HAVE_SCX_OPS_DISABLING +#define HAVE_SCX_OPS_DISABLED +#define HAVE_SCX_OPS_KEEP_BUILTIN_IDLE +#define HAVE_SCX_OPS_ENQ_LAST +#define HAVE_SCX_OPS_ENQ_EXITING +#define HAVE_SCX_OPS_SWITCH_PARTIAL +#define HAVE_SCX_OPS_HAS_CGROUP_WEIGHT +#define HAVE_SCX_OPS_ALL_FLAGS +#define HAVE_SCX_OPSS_NONE +#define HAVE_SCX_OPSS_QUEUEING +#define HAVE_SCX_OPSS_QUEUED +#define HAVE_SCX_OPSS_DISPATCHING +#define HAVE_SCX_OPSS_QSEQ_SHIFT +#define HAVE_SCX_PICK_IDLE_CORE +#define HAVE_SCX_OPS_NAME_LEN +#define HAVE_SCX_SLICE_DFL +#define HAVE_SCX_SLICE_INF +#define HAVE_SCX_RQ_ONLINE +#define HAVE_SCX_RQ_CAN_STOP_TICK +#define HAVE_SCX_RQ_BAL_PENDING +#define HAVE_SCX_RQ_BAL_KEEP +#define HAVE_SCX_RQ_BYPASSING +#define HAVE_SCX_RQ_IN_WAKEUP +#define HAVE_SCX_RQ_IN_BALANCE +#define HAVE_SCX_TASK_NONE +#define HAVE_SCX_TASK_INIT +#define HAVE_SCX_TASK_READY +#define HAVE_SCX_TASK_ENABLED +#define HAVE_SCX_TASK_NR_STATES +#define HAVE_SCX_TG_ONLINE +#define HAVE_SCX_TG_INITED +#define HAVE_SCX_WAKE_FORK +#define HAVE_SCX_WAKE_TTWU +#define HAVE_SCX_WAKE_SYNC + +#endif /* __ENUM_DEFS_AUTOGEN_H__ */ + --=20 2.48.1 From nobody Sun Feb 8 16:11:30 2026 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) (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 6D7C319AD8D for ; Sat, 8 Feb 2025 04:43:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.60.130.6 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738989839; cv=none; b=TvnOYIKrrq1CZZGD805HDvuKTrQn9FEG0pBv+1YyoGYBR5B/+b1GNRZJ5Zk/ufmPsDnlckeIpyteskEPjAiHw3dlfCyIHScAs6InA2SHf7WMkSmJOf0ZAZWRq0PaEfOfy0c5p9S+UfkMfpLsPR2F96mI2YxZFBdQbqJfCR1Xxks= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738989839; c=relaxed/simple; bh=RAIW+iDs9zxVkhD6+sbiBMYg9qCvDbxk2xSHgtPz88w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YTcmIQU9VmJJzsHNY2nuso9oMbG6t8QPnP/J5ka9zpxfxqUjY+k8mVFiWz9f2N+olx3unOOa+qktXmPQiDkViLcazFSNUnYryA3XK3sKGPGHGD7XVD5ov8yflY9shnrYGRZI9DHPtpbTAA42cStMxsIH38hxVjbCTaXAtwVuBb8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com; spf=pass smtp.mailfrom=igalia.com; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b=IAMqBFE3; arc=none smtp.client-ip=178.60.130.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=igalia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b="IAMqBFE3" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=Ayvo8/vLDNT6Ec5BLLSC1kVt5dkPixmTlkh7aMaGK80=; b=IAMqBFE3rVM1gneyTfiNhkbLQ5 mFubTkjU6YdVUtTXVnGHNTA5OlmcSfGF0umKB6I3D2YV6EsVW2limym+2Elfn3s1lE8ZPQtjzMSCw zs5tSfcltymw6I4xOr9jz5Ul3wVYOTtzsAt4PW9BQbzHzOEsuKrqOYJwUE6lCLX+29y3r0rpU30C5 OUJe6R0lAS7SPdhNywIBiEnEyK6peuKRFGxXzO0gfj+oLtxFFtrpeVBsyLRyrS0qBxmvjQg7h8g4C RrtcXwzCsQGKoA6vC5CFF2YdHx6EwVJUkoCD7aDvES8Oh7Gz/6rc3gaarLWzj59m5gQXH3ng1U932 3YY+88OQ==; Received: from [106.101.136.205] (helo=localhost) by fanzine2.igalia.com with utf8esmtpsa (Cipher TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1tgcgz-006GAG-CU; Sat, 08 Feb 2025 05:43:51 +0100 From: Changwoo Min To: tj@kernel.org, void@manifault.com, arighi@nvidia.com Cc: kernel-dev@igalia.com, linux-kernel@vger.kernel.org, Changwoo Min Subject: [PATCH 2/4] sched_ext: Include enum_defs.autogen.h from common/common.bpf.h Date: Sat, 8 Feb 2025 13:43:30 +0900 Message-ID: <20250208044332.492494-3-changwoo@igalia.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250208044332.492494-1-changwoo@igalia.com> References: <20250208044332.492494-1-changwoo@igalia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Update common.h and common.bpf.h to include enum_defs.autogen.h, so C and BPF code can use HAVE_{enum name} macros. Signed-off-by: Changwoo Min --- tools/sched_ext/include/scx/common.bpf.h | 1 + tools/sched_ext/include/scx/common.h | 1 + 2 files changed, 2 insertions(+) diff --git a/tools/sched_ext/include/scx/common.bpf.h b/tools/sched_ext/inc= lude/scx/common.bpf.h index ae717f4d6ede..f1caf9fc8f8c 100644 --- a/tools/sched_ext/include/scx/common.bpf.h +++ b/tools/sched_ext/include/scx/common.bpf.h @@ -18,6 +18,7 @@ #include #include #include "user_exit_info.h" +#include "enum_defs.autogen.h" =20 #define PF_WQ_WORKER 0x00000020 /* I'm a workqueue worker */ #define PF_KTHREAD 0x00200000 /* I am a kernel thread */ diff --git a/tools/sched_ext/include/scx/common.h b/tools/sched_ext/include= /scx/common.h index dc18b99e55cd..1dc76bd84296 100644 --- a/tools/sched_ext/include/scx/common.h +++ b/tools/sched_ext/include/scx/common.h @@ -16,6 +16,7 @@ #include #include #include +#include "enum_defs.autogen.h" =20 typedef uint8_t u8; typedef uint16_t u16; --=20 2.48.1 From nobody Sun Feb 8 16:11:30 2026 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) (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 04E2A1990DB for ; Sat, 8 Feb 2025 04:44:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.60.130.6 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738989845; cv=none; b=JaNCREdALNd7zdQwIyPJe7GabgPqRFWgzlvwd1BSAXZS1GU6f4TJRQadniHDbRR+gsj1RI296ac4XeJyIEnC4hFGpyvwYGaRRwfMXwF9BfTSfWV4GpqYepeauNrt9RLU0+g86ScoiBAiNPlWA3v7eajeTZx22Zr0MTrL/OKCgps= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738989845; c=relaxed/simple; bh=B/FHjc0cXLJemENSQefcY0WP/gSV5thN8kbhUQA6mA0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iC9LHawJCd5cylB98ch+Dl8zG5+hGR3vpbWGdQR5nAUXZtIYOY6NfHY7phMg5AHRzFkAQnHUNEjFa7JPoB/zfAqaM7knNtTa5KJ2uDuD+lEfAAC9b6J6PTQf6ZybAB8TNuu2JzUjokJhbyutI+m8SHfQm6bxkNDZLUJd9v8kY68= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com; spf=pass smtp.mailfrom=igalia.com; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b=XQS7qQlZ; arc=none smtp.client-ip=178.60.130.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=igalia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b="XQS7qQlZ" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=8dD4v9cv1i63oi1UWv3E8vmBBGiVHP/+Zp0HTkK8Fmc=; b=XQS7qQlZg+1mUD9kUuro4DYA9V X4gpEAjMsuAhVC9NMvtq5T7MIdg1oRkeLCMtYUHvAS83VnBqTKcYvoUkBTUm/OpDMQHPfno8wsevg muGCpOXGW2CPkNyxyeojLpusK2kZY+CezF4ddPcFepsHPYQoq1yUcm5sdEcI20uIkWHCH0uXmRP7n /zLtQ37tm8fbcLoFs4YoByag5QqhGASnDLDv4ydLmhGKtJOX/+s+8OVsgx0au903UptBcYPPSl0k6 6sfm8MJXzgo2JYu16+1M7kp+5sgMzeZUE6P5EGM653nMLerR9GjsBiw1f2jdzE/X3nJiY969jVwp4 HN+qiY4g==; Received: from [106.101.136.205] (helo=localhost) by fanzine2.igalia.com with utf8esmtpsa (Cipher TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1tgch4-006GAZ-FU; Sat, 08 Feb 2025 05:43:57 +0100 From: Changwoo Min To: tj@kernel.org, void@manifault.com, arighi@nvidia.com Cc: kernel-dev@igalia.com, linux-kernel@vger.kernel.org, Changwoo Min Subject: [PATCH 3/4] sched_ext: Add __COMPAT_is_enq_cpu_selected() for BPF compatability Date: Sat, 8 Feb 2025 13:43:31 +0900 Message-ID: <20250208044332.492494-4-changwoo@igalia.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250208044332.492494-1-changwoo@igalia.com> References: <20250208044332.492494-1-changwoo@igalia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Suppose a BPF scheduler is compiled against the vmlinux.h that has SCX_ENQ_CPU_SELECTED, but it runs on an old kernel where SCX_ENQ_CPU_SELECT= ED is not defined. In this case, the test result of 'enq_flags & SCX_ENQ_CPU_SELECTED' will always be false. That test result is semantically incorrect because the kernel before SCX_ENQ_CPU_SELECTED has never skipped select_task_rq_scx(), so the result should be true. To hide such complexity, introduce __COMPAT_is_enq_cpu_selected(), which checks if SCX_ENQ_CPU_SELECTED exists in runtime using BPF CO-RE. Signed-off-by: Changwoo Min --- tools/sched_ext/include/scx/compat.bpf.h | 52 ++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/tools/sched_ext/include/scx/compat.bpf.h b/tools/sched_ext/inc= lude/scx/compat.bpf.h index 50e1499ae093..e5fa72f9bf22 100644 --- a/tools/sched_ext/include/scx/compat.bpf.h +++ b/tools/sched_ext/include/scx/compat.bpf.h @@ -125,6 +125,58 @@ bool scx_bpf_dispatch_vtime_from_dsq___compat(struct b= pf_iter_scx_dsq *it__iter, false; \ }) =20 +/** + * __COMPAT_is_enq_cpu_selected - Test if SCX_ENQ_CPU_SELECTED is on + * in a compatible way. We will preserve this __COMPAT helper until v6.16. + * + * @enq_flags: enqueue flags from ops.enqueue() + * + * Return: True if SCX_ENQ_CPU_SELECTED is turned on in @enq_flags + */ +static inline bool __COMPAT_is_enq_cpu_selected(u64 enq_flags) +{ +#ifdef HAVE_SCX_ENQ_CPU_SELECTED + /* + * This is the case that a BPF code compiled against vmlinux.h + * where the enum SCX_ENQ_CPU_SELECTED exists. + */ + + /* + * We should temporarily suspend the macro expansion of + * 'SCX_ENQ_CPU_SELECTED'. This avoids 'SCX_ENQ_CPU_SELECTED' being + * rewritten to '__SCX_ENQ_CPU_SELECTED' when 'SCX_ENQ_CPU_SELECTED' + * is defined in 'scripts/gen_enums.py'. + */ +#pragma push_macro("SCX_ENQ_CPU_SELECTED") +#undef SCX_ENQ_CPU_SELECTED + u64 flag; + + /* + * When the kernel did not have SCX_ENQ_CPU_SELECTED, + * select_task_rq_scx() has never been skipped. Thus, this case + * should be considered that the CPU has already been selected. + */ + if (!bpf_core_enum_value_exists(enum scx_enq_flags, + SCX_ENQ_CPU_SELECTED)) + return true; + + flag =3D bpf_core_enum_value(enum scx_enq_flags, SCX_ENQ_CPU_SELECTED); + return enq_flags & flag; + + /* + * Once done, resume the macro expansion of 'SCX_ENQ_CPU_SELECTED'. + */ +#pragma pop_macro("SCX_ENQ_CPU_SELECTED") +#else + /* + * This is the case that a BPF code compiled against vmlinux.h + * where the enum SCX_ENQ_CPU_SELECTED does NOT exist. + */ + return true; +#endif /* HAVE_SCX_ENQ_CPU_SELECTED */ +} + + #define scx_bpf_now() \ (bpf_ksym_exists(scx_bpf_now) ? \ scx_bpf_now() : \ --=20 2.48.1 From nobody Sun Feb 8 16:11:30 2026 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) (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 4579419ABAC for ; Sat, 8 Feb 2025 04:44:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.60.130.6 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738989849; cv=none; b=g0MZ85as4v7txsDUp/u0PQaYw6INhpCoicsdzP/fud/YMKEPg67WmJux6GeGm+ufm0RBoHiSoCNP5/zpr0/j2lrxRWwYWArUujXmFVY9ky9llw99uYfBk3l3wxKGsSjxzuZi7F+eCPgBqp8FSd6VRUH8OHgZQ5yB8933HNlgFVA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738989849; c=relaxed/simple; bh=li1aBUTL+55uXGyWeurfb+KRnrP+ALHxuesLSCwrJNQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=saXTKm3c11WSVJ0w5PtYhpz8wrPgjt1rGApdlw5Vf3cERsUafA1twZaSN0jylTMxbNxyAJkXmQOK5r0RlueefI7Ex7T64uE1kEDj8bmFsI7fhrAKLQ14OZpjXGxkPprl7MVLy3q+IY93ETfjOO4Qy8ypAyx5ISaF7u4c7un5tj0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com; spf=pass smtp.mailfrom=igalia.com; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b=GUFmgKvl; arc=none smtp.client-ip=178.60.130.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=igalia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b="GUFmgKvl" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=AMS53CKue6O4u6b9zjPokpg2ky2xafInfnnaOlolcyI=; b=GUFmgKvlPUqBQ880MxEDkK/1Qk IKQe3dh0HDTtpyoC5LjJQqoA3QfnWHE3R9lafevUqptUs06u34Gh7wv01hJ6oKG71tlFD+XN7d73g ho9T9vN0Ectdz4VnBC75wcQB2dPoceLQ5bVvACaF/hPIhQOxVmWjIlG1MES05bxuDgvdAIazjYEcn LbSFQfqjQEutazoOIq0BeVeTw2TOcW5Ieb2TGuxFFbozfxzHFERUaRTh48x1ou2w3VoUc4ZO8nSKv vQ9L1c3sy9BAM7u22FgayqVQLNSxW8CyBKznTAie35W9JVWZ8Z3y4tEoar2iC7tJpFfKXgGbmaNb+ AJ2tj1RA==; Received: from [106.101.136.205] (helo=localhost) by fanzine2.igalia.com with utf8esmtpsa (Cipher TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1tgch9-006GAp-JY; Sat, 08 Feb 2025 05:44:02 +0100 From: Changwoo Min To: tj@kernel.org, void@manifault.com, arighi@nvidia.com Cc: kernel-dev@igalia.com, linux-kernel@vger.kernel.org, Changwoo Min Subject: [PATCH 4/4] sched_ext: Use __COMPAT_is_enq_cpu_selected() in scx_qmap Date: Sat, 8 Feb 2025 13:43:32 +0900 Message-ID: <20250208044332.492494-5-changwoo@igalia.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250208044332.492494-1-changwoo@igalia.com> References: <20250208044332.492494-1-changwoo@igalia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Instead of directly using SCX_ENQ_CPU_SELECTED, which may not be defined in old kernels, use the __COMPAT_is_enq_cpu_selected() helper function so the BPF scheduler can behave correctly regardless of kernel versions. Signed-off-by: Changwoo Min --- tools/sched_ext/scx_qmap.bpf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/sched_ext/scx_qmap.bpf.c b/tools/sched_ext/scx_qmap.bpf.c index 5edb79742e37..267fe15d934a 100644 --- a/tools/sched_ext/scx_qmap.bpf.c +++ b/tools/sched_ext/scx_qmap.bpf.c @@ -231,7 +231,7 @@ void BPF_STRUCT_OPS(qmap_enqueue, struct task_struct *p= , u64 enq_flags) } =20 /* if select_cpu() wasn't called, try direct dispatch */ - if (!(enq_flags & SCX_ENQ_CPU_SELECTED) && + if (!__COMPAT_is_enq_cpu_selected(enq_flags) && (cpu =3D pick_direct_dispatch_cpu(p, scx_bpf_task_cpu(p))) >=3D 0) { __sync_fetch_and_add(&nr_ddsp_from_enq, 1); scx_bpf_dsq_insert(p, SCX_DSQ_LOCAL_ON | cpu, slice_ns, enq_flags); --=20 2.48.1