Kernel
Threads by month
- ----- 2026 -----
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- 21 participants
- 23171 discussions
[PATCH OLK-6.6] riscv: Replace function-like macro by static inline function
by Tengda Wu 07 Apr '26
by Tengda Wu 07 Apr '26
07 Apr '26
From: Björn Töpel <bjorn(a)rivosinc.com>
stable inclusion
from stable-v6.6.133
commit 0b1ac9743f3d9cfced2ac3cb9f274c0675bd4189
category: bugfix
bugzilla: https://atomgit.com/openeuler/kernel/issues/8883
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
commit 121f34341d396b666d8a90b24768b40e08ca0d61 upstream.
The flush_icache_range() function is implemented as a "function-like
macro with unused parameters", which can result in "unused variables"
warnings.
Replace the macro with a static inline function, as advised by
Documentation/process/coding-style.rst.
Fixes: 08f051eda33b ("RISC-V: Flush I$ when making a dirty page executable")
Signed-off-by: Björn Töpel <bjorn(a)rivosinc.com>
Link: https://lore.kernel.org/r/20250419111402.1660267-1-bjorn@kernel.org
Signed-off-by: Palmer Dabbelt <palmer(a)rivosinc.com>
Signed-off-by: Ron Economos <re(a)w6rz.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Tengda Wu <wutengda2(a)huawei.com>
---
arch/riscv/include/asm/cacheflush.h | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/arch/riscv/include/asm/cacheflush.h b/arch/riscv/include/asm/cacheflush.h
index 3f65acd0ef75..2b7f5da96c50 100644
--- a/arch/riscv/include/asm/cacheflush.h
+++ b/arch/riscv/include/asm/cacheflush.h
@@ -34,11 +34,6 @@ static inline void flush_dcache_page(struct page *page)
flush_dcache_folio(page_folio(page));
}
-/*
- * RISC-V doesn't have an instruction to flush parts of the instruction cache,
- * so instead we just flush the whole thing.
- */
-#define flush_icache_range(start, end) flush_icache_all()
#define flush_icache_user_page(vma, pg, addr, len) \
flush_icache_mm(vma->vm_mm, 0)
@@ -59,6 +54,16 @@ void flush_icache_mm(struct mm_struct *mm, bool local);
#endif /* CONFIG_SMP */
+/*
+ * RISC-V doesn't have an instruction to flush parts of the instruction cache,
+ * so instead we just flush the whole thing.
+ */
+#define flush_icache_range flush_icache_range
+static inline void flush_icache_range(unsigned long start, unsigned long end)
+{
+ flush_icache_all();
+}
+
extern unsigned int riscv_cbom_block_size;
extern unsigned int riscv_cboz_block_size;
void riscv_init_cbo_blocksizes(void);
--
2.34.1
2
1
[PATCH OLK-6.6 v5 0/2] kvm: arm64: Transition from CPU Type to MIDR Register for Virtualization Feature Detection
by liqiqi 07 Apr '26
by liqiqi 07 Apr '26
07 Apr '26
Currently, there are two methods for determining whether a chip supports
specific virtualization features:
1. Reading the chip's CPU type from BIOS
2. Reading the value of the MIDR register
The issue with the first method is that each time a new chip is introduced,
the new CPU type must be defined, which leads to poor code portability and
maintainability.
Therefore, the second method has been adopted to replace the first. This
approach eliminates the dependency on CPU type by using the MIDR register.
liqiqi (2):
kvm: arm64: Add MIDR definitions and use MIDR to determine whether
features are supported
kvm: arm64: Remove cpu_type definition and it's related interfaces
arch/arm64/include/asm/cache.h | 2 +-
arch/arm64/include/asm/cputype.h | 8 +-
arch/arm64/kernel/cpu_errata.c | 4 +-
arch/arm64/kernel/cpufeature.c | 2 +-
arch/arm64/kernel/proton-pack.c | 4 +-
arch/arm64/kvm/arm.c | 1 -
arch/arm64/kvm/hisilicon/hisi_virt.c | 110 +++--------------------
arch/arm64/kvm/hisilicon/hisi_virt.h | 12 ---
drivers/perf/hisilicon/hisi_uncore_pmu.c | 2 +-
tools/arch/arm64/include/asm/cputype.h | 4 +-
10 files changed, 25 insertions(+), 124 deletions(-)
--
2.43.0
2
3
[PATCH OLK-5.10] apparmor: fix unprivileged local user can do privileged policy management
by Yi Yang 07 Apr '26
by Yi Yang 07 Apr '26
07 Apr '26
From: John Johansen <john.johansen(a)canonical.com>
mainline inclusion
from mainline-v7.0-rc4
commit 6601e13e82841879406bf9f369032656f441a425
category: bugfix
bugzilla: https://atomgit.com/src-openeuler/kernel/issues/13879
CVE: CVE-2026-23268
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
--------------------------------
An unprivileged local user can load, replace, and remove profiles by
opening the apparmorfs interfaces, via a confused deputy attack, by
passing the opened fd to a privileged process, and getting the
privileged process to write to the interface.
This does require a privileged target that can be manipulated to do
the write for the unprivileged process, but once such access is
achieved full policy management is possible and all the possible
implications that implies: removing confinement, DoS of system or
target applications by denying all execution, by-passing the
unprivileged user namespace restriction, to exploiting kernel bugs for
a local privilege escalation.
The policy management interface can not have its permissions simply
changed from 0666 to 0600 because non-root processes need to be able
to load policy to different policy namespaces.
Instead ensure the task writing the interface has privileges that
are a subset of the task that opened the interface. This is already
done via policy for confined processes, but unconfined can delegate
access to the opened fd, by-passing the usual policy check.
Fixes: b7fd2c0340eac ("apparmor: add per policy ns .load, .replace, .remove interface files")
Reported-by: Qualys Security Advisory <qsa(a)qualys.com>
Tested-by: Salvatore Bonaccorso <carnil(a)debian.org>
Reviewed-by: Georgia Garcia <georgia.garcia(a)canonical.com>
Reviewed-by: Cengiz Can <cengiz.can(a)canonical.com>
Signed-off-by: John Johansen <john.johansen(a)canonical.com>
Conflicts:
security/apparmor/apparmorfs.c
security/apparmor/include/policy.h
security/apparmor/policy.c
[Commit 90c436a64a6e ("apparmor: pass cred through to audit info.") was
not merged. The aa_may_manage_policy function is different.]
Signed-off-by: Yi Yang <yiyang13(a)huawei.com>
---
security/apparmor/apparmorfs.c | 19 +++++++++------
security/apparmor/include/policy.h | 2 +-
security/apparmor/policy.c | 37 ++++++++++++++++++++++++++++--
3 files changed, 48 insertions(+), 10 deletions(-)
diff --git a/security/apparmor/apparmorfs.c b/security/apparmor/apparmorfs.c
index 06eac2266565..0900fd07def7 100644
--- a/security/apparmor/apparmorfs.c
+++ b/security/apparmor/apparmorfs.c
@@ -409,7 +409,8 @@ static struct aa_loaddata *aa_simple_write_to_buffer(const char __user *userbuf,
}
static ssize_t policy_update(u32 mask, const char __user *buf, size_t size,
- loff_t *pos, struct aa_ns *ns)
+ loff_t *pos, struct aa_ns *ns,
+ const struct cred *ocred)
{
struct aa_loaddata *data;
struct aa_label *label;
@@ -420,7 +421,7 @@ static ssize_t policy_update(u32 mask, const char __user *buf, size_t size,
/* high level check about policy management - fine grained in
* below after unpack
*/
- error = aa_may_manage_policy(label, ns, mask);
+ error = aa_may_manage_policy(label, ns, ocred, mask);
if (error)
goto end_section;
@@ -441,7 +442,8 @@ static ssize_t profile_load(struct file *f, const char __user *buf, size_t size,
loff_t *pos)
{
struct aa_ns *ns = aa_get_ns(f->f_inode->i_private);
- int error = policy_update(AA_MAY_LOAD_POLICY, buf, size, pos, ns);
+ int error = policy_update(AA_MAY_LOAD_POLICY, buf, size, pos, ns,
+ f->f_cred);
aa_put_ns(ns);
@@ -459,7 +461,7 @@ static ssize_t profile_replace(struct file *f, const char __user *buf,
{
struct aa_ns *ns = aa_get_ns(f->f_inode->i_private);
int error = policy_update(AA_MAY_LOAD_POLICY | AA_MAY_REPLACE_POLICY,
- buf, size, pos, ns);
+ buf, size, pos, ns, f->f_cred);
aa_put_ns(ns);
return error;
@@ -483,7 +485,8 @@ static ssize_t profile_remove(struct file *f, const char __user *buf,
/* high level check about policy management - fine grained in
* below after unpack
*/
- error = aa_may_manage_policy(label, ns, AA_MAY_REMOVE_POLICY);
+ error = aa_may_manage_policy(label, ns, f->f_cred,
+ AA_MAY_REMOVE_POLICY);
if (error)
goto out;
@@ -1787,7 +1790,8 @@ static int ns_mkdir_op(struct inode *dir, struct dentry *dentry, umode_t mode)
int error;
label = begin_current_label_crit_section();
- error = aa_may_manage_policy(label, NULL, AA_MAY_LOAD_POLICY);
+ error = aa_may_manage_policy(label, NULL, NULL,
+ AA_MAY_LOAD_POLICY);
end_current_label_crit_section(label);
if (error)
return error;
@@ -1836,7 +1840,8 @@ static int ns_rmdir_op(struct inode *dir, struct dentry *dentry)
int error;
label = begin_current_label_crit_section();
- error = aa_may_manage_policy(label, NULL, AA_MAY_LOAD_POLICY);
+ error = aa_may_manage_policy(label, NULL, NULL,
+ AA_MAY_LOAD_POLICY);
end_current_label_crit_section(label);
if (error)
return error;
diff --git a/security/apparmor/include/policy.h b/security/apparmor/include/policy.h
index b5aa4231af68..f6682a31df23 100644
--- a/security/apparmor/include/policy.h
+++ b/security/apparmor/include/policy.h
@@ -304,6 +304,6 @@ static inline int AUDIT_MODE(struct aa_profile *profile)
bool policy_view_capable(struct aa_ns *ns);
bool policy_admin_capable(struct aa_ns *ns);
int aa_may_manage_policy(struct aa_label *label, struct aa_ns *ns,
- u32 mask);
+ const struct cred *ocred, u32 mask);
#endif /* __AA_POLICY_H */
diff --git a/security/apparmor/policy.c b/security/apparmor/policy.c
index fcf22577f606..e5f501f89803 100644
--- a/security/apparmor/policy.c
+++ b/security/apparmor/policy.c
@@ -671,14 +671,42 @@ bool policy_admin_capable(struct aa_ns *ns)
return policy_view_capable(ns) && capable && !aa_g_lock_policy;
}
+static bool is_subset_of_obj_privilege(const struct cred *cred,
+ struct aa_label *label,
+ const struct cred *ocred)
+{
+ if (cred == ocred)
+ return true;
+
+ if (!aa_label_is_subset(label, cred_label(ocred)))
+ return false;
+ /* don't allow crossing userns for now */
+ if (cred->user_ns != ocred->user_ns)
+ return false;
+ if (!cap_issubset(cred->cap_inheritable, ocred->cap_inheritable))
+ return false;
+ if (!cap_issubset(cred->cap_permitted, ocred->cap_permitted))
+ return false;
+ if (!cap_issubset(cred->cap_effective, ocred->cap_effective))
+ return false;
+ if (!cap_issubset(cred->cap_bset, ocred->cap_bset))
+ return false;
+ if (!cap_issubset(cred->cap_ambient, ocred->cap_ambient))
+ return false;
+ return true;
+}
+
/**
* aa_may_manage_policy - can the current task manage policy
* @label: label to check if it can manage policy
- * @op: the policy manipulation operation being done
+ * @ns: namespace being managed by @label (may be NULL if @label's ns)
+ * @ocred: object cred if request is coming from an open object
+ * @mask: contains the policy manipulation operation being done
*
* Returns: 0 if the task is allowed to manipulate policy else error
*/
-int aa_may_manage_policy(struct aa_label *label, struct aa_ns *ns, u32 mask)
+int aa_may_manage_policy(struct aa_label *label, struct aa_ns *ns,
+ const struct cred *ocred, u32 mask)
{
const char *op;
@@ -694,6 +722,11 @@ int aa_may_manage_policy(struct aa_label *label, struct aa_ns *ns, u32 mask)
return audit_policy(label, op, NULL, NULL, "policy_locked",
-EACCES);
+ if (ocred && !is_subset_of_obj_privilege(current_cred(), label, ocred))
+ return audit_policy(label, op, NULL, NULL,
+ "not privileged for target profile",
+ -EACCES);
+
if (!policy_admin_capable(ns))
return audit_policy(label, op, NULL, NULL, "not policy admin",
-EACCES);
--
2.25.1
2
1
From: Eric Biggers <ebiggers(a)kernel.org>
mainline inclusion
from mainline-v7.0-rc2
commit c5794709bc9105935dbedef8b9cf9c06f2b559fa
category: bugfix
bugzilla: https://atomgit.com/src-openeuler/kernel/issues/13917
CVE: CVE-2026-23364
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
--------------------------------
To prevent timing attacks, MAC comparisons need to be constant-time.
Replace the memcmp() with the correct function, crypto_memneq().
Fixes: e2f34481b24d ("cifsd: add server-side procedures for SMB3")
Cc: stable(a)vger.kernel.org
Signed-off-by: Eric Biggers <ebiggers(a)kernel.org>
Acked-by: Namjae Jeon <linkinjeon(a)kernel.org>
Signed-off-by: Steve French <stfrench(a)microsoft.com>
Conflicts:
fs/smb/server/Kconfig
fs/smb/server/auth.c
fs/smb/server/smb2pdu.c
[Commit 38c8a9a52082 ("smb: move client and server files to common
directory fs/smb") move client and server files to common directory
fs/smb;
commit 7033b937e21b ("crypto: lib - create utils module and move
__crypto_memneq into it") change the config of memneq.c.]
Signed-off-by: Li Lingfeng <lilingfeng3(a)huawei.com>
---
fs/ksmbd/Kconfig | 1 +
fs/ksmbd/auth.c | 4 +++-
fs/ksmbd/smb2pdu.c | 5 +++--
3 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/fs/ksmbd/Kconfig b/fs/ksmbd/Kconfig
index e1fe17747ed6..832c6a0dd327 100644
--- a/fs/ksmbd/Kconfig
+++ b/fs/ksmbd/Kconfig
@@ -11,6 +11,7 @@ config SMB_SERVER
select CRYPTO_ECB
select CRYPTO_LIB_DES
select CRYPTO_SHA256
+ select LIB_MEMNEQ
select CRYPTO_CMAC
select CRYPTO_SHA512
select CRYPTO_AEAD2
diff --git a/fs/ksmbd/auth.c b/fs/ksmbd/auth.c
index c5916064b85e..fb4a6f9e4e98 100644
--- a/fs/ksmbd/auth.c
+++ b/fs/ksmbd/auth.c
@@ -13,6 +13,7 @@
#include <linux/xattr.h>
#include <crypto/hash.h>
#include <crypto/aead.h>
+#include <crypto/algapi.h>
#include <linux/random.h>
#include <linux/scatterlist.h>
@@ -280,7 +281,8 @@ int ksmbd_auth_ntlmv2(struct ksmbd_conn *conn, struct ksmbd_session *sess,
goto out;
}
- if (memcmp(ntlmv2->ntlmv2_hash, ntlmv2_rsp, CIFS_HMAC_MD5_HASH_SIZE) != 0)
+ if (crypto_memneq(ntlmv2->ntlmv2_hash, ntlmv2_rsp,
+ CIFS_HMAC_MD5_HASH_SIZE))
rc = -EINVAL;
out:
if (ctx)
diff --git a/fs/ksmbd/smb2pdu.c b/fs/ksmbd/smb2pdu.c
index 1588867b4e71..d75de3035327 100644
--- a/fs/ksmbd/smb2pdu.c
+++ b/fs/ksmbd/smb2pdu.c
@@ -4,6 +4,7 @@
* Copyright (C) 2018 Samsung Electronics Co., Ltd.
*/
+#include <crypto/algapi.h>
#include <linux/inetdevice.h>
#include <net/addrconf.h>
#include <linux/syscalls.h>
@@ -8344,7 +8345,7 @@ int smb2_check_sign_req(struct ksmbd_work *work)
signature))
return 0;
- if (memcmp(signature, signature_req, SMB2_SIGNATURE_SIZE)) {
+ if (crypto_memneq(signature, signature_req, SMB2_SIGNATURE_SIZE)) {
pr_err("bad smb2 signature\n");
return 0;
}
@@ -8456,7 +8457,7 @@ int smb3_check_sign_req(struct ksmbd_work *work)
if (ksmbd_sign_smb3_pdu(conn, signing_key, iov, 1, signature))
return 0;
- if (memcmp(signature, signature_req, SMB2_SIGNATURE_SIZE)) {
+ if (crypto_memneq(signature, signature_req, SMB2_SIGNATURE_SIZE)) {
pr_err("bad smb2 signature\n");
return 0;
}
--
2.52.0
2
1
*** fix CVE-2026-23208 ***
Edward Adam Davis (1):
ALSA: usb-audio: Prevent excessive number of frames
Takashi Iwai (1):
ALSA: usb-audio: Use the right limit for PCM OOB check
sound/usb/pcm.c | 3 +++
1 file changed, 3 insertions(+)
--
2.43.0
2
3
yt6801 inclusion
category: bugfix
bugzilla: https://atomgit.com/openeuler/kernel/issues/7229
--------------------------------------------------------------------
fix the link info is not update on os installation.
Fixes: b9f5c0893d16 ("net: yt6801: add link info for yt6801")
Signed-off-by: Frank_Sae <Frank.Sae(a)motor-comm.com>
---
.../ethernet/motorcomm/yt6801/yt6801_main.c | 91 +++++++++++++++++++
1 file changed, 91 insertions(+)
diff --git a/drivers/net/ethernet/motorcomm/yt6801/yt6801_main.c b/drivers/net/ethernet/motorcomm/yt6801/yt6801_main.c
index 01eed3ace..83b5ab258 100644
--- a/drivers/net/ethernet/motorcomm/yt6801/yt6801_main.c
+++ b/drivers/net/ethernet/motorcomm/yt6801/yt6801_main.c
@@ -27,6 +27,95 @@
const struct net_device_ops *fxgmac_get_netdev_ops(void);
static void fxgmac_napi_enable(struct fxgmac_pdata *priv);
+const struct ethtool_ops *fxgmac_get_ethtool_ops(void);
+
+#define MII_SPEC_STATUS 0x11 /* PHY specific status */
+#define FXGMAC_EPHY_LINK_STATUS BIT(10)
+#define PHY_MII_SPEC_DUPLEX BIT(13)
+
+static int fxgmac_get_link_ksettings(struct net_device *netdev,
+ struct ethtool_link_ksettings *cmd)
+{
+ struct fxgmac_pdata *pdata = netdev_priv(netdev);
+ struct phy_device *phydev = netdev->phydev;
+ u32 duplex, regval, link_status;
+ u32 adv = 0xFFFFFFFF;
+
+ ethtool_link_ksettings_zero_link_mode(cmd, supported);
+ ethtool_link_ksettings_zero_link_mode(cmd, advertising);
+
+ /* set the supported link speeds */
+ ethtool_link_ksettings_add_link_mode(cmd, supported, 1000baseT_Full);
+ ethtool_link_ksettings_add_link_mode(cmd, supported, 100baseT_Full);
+ ethtool_link_ksettings_add_link_mode(cmd, supported, 100baseT_Half);
+ ethtool_link_ksettings_add_link_mode(cmd, supported, 10baseT_Full);
+ ethtool_link_ksettings_add_link_mode(cmd, supported, 10baseT_Half);
+
+ /* Indicate pause support */
+ ethtool_link_ksettings_add_link_mode(cmd, supported, Pause);
+ ethtool_link_ksettings_add_link_mode(cmd, supported, Asym_Pause);
+
+ adv = phy_read(phydev, MII_ADVERTISE);
+
+ if (field_get(ADVERTISE_PAUSE_CAP, adv))
+ ethtool_link_ksettings_add_link_mode(cmd, advertising, Pause);
+
+ if (field_get(ADVERTISE_PAUSE_ASYM, adv))
+ ethtool_link_ksettings_add_link_mode(cmd, advertising, Asym_Pause);
+
+ ethtool_link_ksettings_add_link_mode(cmd, supported, MII);
+ cmd->base.port = PORT_MII;
+
+ ethtool_link_ksettings_add_link_mode(cmd, supported, Autoneg);
+ regval = phy_read(phydev, MII_BMCR);
+
+ regval = field_get(BMCR_ANENABLE, regval);
+ if (regval) {
+ ethtool_link_ksettings_add_link_mode(cmd, advertising, Autoneg);
+
+ adv = phy_read(phydev, MII_ADVERTISE);
+
+ if (adv & ADVERTISE_10HALF)
+ ethtool_link_ksettings_add_link_mode(cmd, advertising, 10baseT_Half);
+ if (adv & ADVERTISE_10FULL)
+ ethtool_link_ksettings_add_link_mode(cmd, advertising, 10baseT_Full);
+ if (adv & ADVERTISE_100HALF)
+ ethtool_link_ksettings_add_link_mode(cmd, advertising, 100baseT_Half);
+ if (adv & ADVERTISE_100FULL)
+ ethtool_link_ksettings_add_link_mode(cmd, advertising, 100baseT_Full);
+
+ adv = phy_read(phydev, MII_CTRL1000);
+
+ if (adv & ADVERTISE_1000FULL)
+ ethtool_link_ksettings_add_link_mode(cmd, advertising, 1000baseT_Full);
+ }
+
+ cmd->base.autoneg = 1;
+
+ regval = phy_read(phydev, MII_SPEC_STATUS);
+
+ link_status = field_get(FXGMAC_EPHY_LINK_STATUS, regval);
+ if (link_status) {
+ duplex = field_get(PHY_MII_SPEC_DUPLEX, regval);
+ cmd->base.duplex = duplex;
+ cmd->base.speed = pdata->mac_speed;
+ } else {
+ cmd->base.duplex = DUPLEX_UNKNOWN;
+ cmd->base.speed = SPEED_UNKNOWN;
+ }
+
+ return 0;
+}
+
+static const struct ethtool_ops fxgmac_ethtool_ops = {
+ .get_link = ethtool_op_get_link,
+ .get_link_ksettings = fxgmac_get_link_ksettings,
+};
+
+const struct ethtool_ops *fxgmac_get_ethtool_ops(void)
+{
+ return &fxgmac_ethtool_ops;
+}
#define PHY_WR_CONFIG(reg_offset) (0x8000205 + ((reg_offset) * 0x10000))
static int fxgmac_phy_write_reg(struct fxgmac_pdata *priv, u32 reg_id, u32 data)
@@ -1898,7 +1987,9 @@ static int fxgmac_init(struct fxgmac_pdata *priv, bool save_private_reg)
ndev->max_mtu =
FXGMAC_JUMBO_PACKET_MTU + (ETH_HLEN + VLAN_HLEN + ETH_FCS_LEN);
+
ndev->netdev_ops = fxgmac_get_netdev_ops();/* Set device operations */
+ ndev->ethtool_ops = fxgmac_get_ethtool_ops();/* Set device operations */
/* Set device features */
if (priv->hw_feat.tso) {
--
2.34.1
2
1
Aboorva Devarajan (2):
sched_ext: Documentation: Remove mentions of scx_bpf_switch_all
sched: Pass correct scheduling policy to __setscheduler_class
Alan Maguire (16):
kbuild,bpf: Switch to using --btf_features for pahole v1.26 and later
kbuild, bpf: Use test-ge check for v1.25-only pahole
libbpf: Add btf__distill_base() creating split BTF with distilled base
BTF
selftests/bpf: Test distilled base, split BTF generation
libbpf: Split BTF relocation
selftests/bpf: Extend distilled BTF tests to cover BTF relocation
resolve_btfids: Handle presence of .BTF.base section
libbpf: BTF relocation followup fixing naming, loop logic
module, bpf: Store BTF base pointer in struct module
libbpf: Split field iter code into its own file kernel
libbpf,bpf: Share BTF relocate-related code with kernel
kbuild,bpf: Add module-specific pahole flags for distilled base BTF
selftests/bpf: Add kfunc_call test for simple dtor in bpf_testmod
bpf: fix build when CONFIG_DEBUG_INFO_BTF[_MODULES] is undefined
libbpf: Fix error handling in btf__distill_base()
libbpf: Fix license for btf_relocate.c
Alexander Lobakin (1):
bitops: make BYTES_TO_BITS() treewide-available
Alexei Starovoitov (2):
s390/bpf: Fix indirect trampoline generation
bpf: Introduce "volatile compare" macros
Andrea Righi (33):
sched_ext: fix typo in set_weight() description
sched_ext: add CONFIG_DEBUG_INFO_BTF dependency
sched_ext: Provide a sysfs enable_seq counter
sched_ext: improve WAKE_SYNC behavior for default idle CPU selection
sched_ext: Clarify ops.select_cpu() for single-CPU tasks
sched_ext: Introduce LLC awareness to the default idle selection
policy
sched_ext: Introduce NUMA awareness to the default idle selection
policy
sched_ext: Do not enable LLC/NUMA optimizations when domains overlap
sched_ext: Fix incorrect use of bitwise AND
MAINTAINERS: add self as reviewer for sched_ext
sched_ext: idle: Refresh idle masks during idle-to-idle transitions
sched_ext: Use the NUMA scheduling domain for NUMA optimizations
sched_ext: idle: use assign_cpu() to update the idle cpumask
sched_ext: idle: clarify comments
sched_ext: idle: introduce check_builtin_idle_enabled() helper
sched_ext: idle: small CPU iteration refactoring
sched_ext: update scx_bpf_dsq_insert() doc for SCX_DSQ_LOCAL_ON
sched_ext: Include remaining task time slice in error state dump
sched_ext: Include task weight in the error state dump
selftests/sched_ext: Fix enum resolution
tools/sched_ext: Add helper to check task migration state
sched_ext: selftests/dsp_local_on: Fix selftest on UP systems
sched_ext: Fix lock imbalance in dispatch_to_local_dsq()
selftests/sched_ext: Fix exit selftest hang on UP
sched_ext: Move built-in idle CPU selection policy to a separate file
sched_ext: Track currently locked rq
sched_ext: Make scx_locked_rq() inline
sched_ext: Fix missing rq lock in scx_bpf_cpuperf_set()
sched/ext: Fix invalid task state transitions on class switch
sched_ext: Make scx_kf_allowed_if_unlocked() available outside ext.c
sched_ext: Remove duplicate BTF_ID_FLAGS definitions
sched_ext: Fix rq lock state in hotplug ops
sched_ext: Validate prev_cpu in scx_bpf_select_cpu_dfl()
Andrii Nakryiko (14):
bpf: Emit global subprog name in verifier logs
bpf: Validate global subprogs lazily
selftests/bpf: Add lazy global subprog validation tests
libbpf: Add btf__new_split() API that was declared but not implemented
bpf: move sleepable flag from bpf_prog_aux to bpf_prog
libbpf: Add BTF field iterator
libbpf: Make use of BTF field iterator in BPF linker code
libbpf: Make use of BTF field iterator in BTF handling code
bpftool: Use BTF field iterator in btfgen
libbpf: Remove callback-based type/string BTF field visitor helpers
bpf: extract iterator argument type and name validation logic
bpf: allow passing struct bpf_iter_<type> as kfunc arguments
selftests/bpf: test passing iterator to a kfunc
selftests/bpf: validate eliminated global subprog is not freplaceable
Arnaldo Carvalho de Melo (1):
tools include UAPI: Sync linux/sched.h copy with the kernel sources
Atul Kumar Pant (1):
sched_ext: Fixes typos in comments
Benjamin Tissoires (1):
bpf: introduce in_sleepable() helper
Bitao Hu (4):
genirq: Convert kstat_irqs to a struct
genirq: Provide a snapshot mechanism for interrupt statistics
watchdog/softlockup: Low-overhead detection of interrupt storm
watchdog/softlockup: Report the most frequent interrupts
Björn Töpel (1):
selftests: sched_ext: Add sched_ext as proper selftest target
Breno Leitao (3):
rhashtable: Fix potential deadlock by moving schedule_work outside
lock
sched_ext: Use kvzalloc for large exit_dump allocation
sched/ext: Prevent update_locked_rq() calls with NULL rq
Changwoo Min (12):
sched_ext: Clarify sched_ext_ops table for userland scheduler
sched_ext: add a missing rcu_read_lock/unlock pair at
scx_select_cpu_dfl()
MAINTAINERS: add me as reviewer for sched_ext
sched_ext: Replace rq_lock() to raw_spin_rq_lock() in scx_ops_bypass()
sched_ext: Relocate scx_enabled() related code
sched_ext: Implement scx_bpf_now()
sched_ext: Add scx_bpf_now() for BPF scheduler
sched_ext: Add time helpers for BPF schedulers
sched_ext: Replace bpf_ktime_get_ns() to scx_bpf_now()
sched_ext: Use time helpers in BPF schedulers
sched_ext: Fix incorrect time delta calculation in time_delta()
sched_ext: Add scx_bpf_events() and scx_read_event() for BPF
schedulers
Cheng-Yang Chou (1):
sched_ext: Always use SMP versions in kernel/sched/ext.c
Christian Brauner (1):
file: add take_fd() cleanup helper
Christian Loehle (1):
sched/fair: Remove stale FREQUENCY_UTIL comment
Christophe Leroy (2):
bpf: Remove arch_unprotect_bpf_trampoline()
bpf: Check return from set_memory_rox()
Chuyi Zhou (15):
cgroup: Prepare for using css_task_iter_*() in BPF
bpf: Introduce css_task open-coded iterator kfuncs
bpf: Introduce task open coded iterator kfuncs
bpf: Introduce css open-coded iterator kfuncs
bpf: teach the verifier to enforce css_iter and task_iter in RCU CS
bpf: Let bpf_iter_task_new accept null task ptr
selftests/bpf: rename bpf_iter_task.c to bpf_iter_tasks.c
selftests/bpf: Add tests for open-coded task and css iter
bpf: Relax allowlist for css_task iter
selftests/bpf: Add tests for css_task iter combining with cgroup iter
selftests/bpf: Add test for using css_task iter in sleepable progs
bpf: Let verifier consider {task,cgroup} is trusted in bpf_iter_reg
selftests/bpf: get trusted cgrp from bpf_iter__cgroup directly
sched_ext: Fix the incorrect bpf_list kfunc API in common.bpf.h.
sched_ext: Use SCX_CALL_OP_TASK in task_tick_scx
Colin Ian King (1):
sched_ext: Fix spelling mistake: "intead" -> "instead"
Daniel Xu (3):
bpf: btf: Support flags for BTF_SET8 sets
bpf: btf: Add BTF_KFUNCS_START/END macro pair
bpf: treewide: Annotate BPF kfuncs in BTF
Dave Marchevsky (6):
bpf: Don't explicitly emit BTF for struct btf_iter_num
selftests/bpf: Rename bpf_iter_task_vma.c to bpf_iter_task_vmas.c
bpf: Introduce task_vma open-coded iterator kfuncs
selftests/bpf: Add tests for open-coded task_vma iter
bpf: Add __bpf_kfunc_{start,end}_defs macros
bpf: Add __bpf_hook_{start,end} macros
David Vernet (15):
bpf: Add ability to pin bpf timer to calling CPU
selftests/bpf: Test pinning bpf timer to a core
sched_ext: Implement runnable task stall watchdog
sched_ext: Print sched_ext info when dumping stack
sched_ext: Implement SCX_KICK_WAIT
sched_ext: Implement sched_ext_ops.cpu_acquire/release()
sched_ext: Add selftests
bpf: Load vmlinux btf for any struct_ops map
sched_ext: Make scx_bpf_cpuperf_set() @cpu arg signed
scx: Allow calling sleepable kfuncs from BPF_PROG_TYPE_SYSCALL
scx/selftests: Verify we can call create_dsq from prog_run
sched_ext: Remove unnecessary cpu_relax()
scx: Fix exit selftest to use custom DSQ
scx: Fix raciness in scx_ops_bypass()
scx: Fix maximal BPF selftest prog
Dawei Li (1):
genirq: Deduplicate interrupt descriptor initialization
Devaansh Kumar (1):
sched_ext: selftests: Fix grammar in tests description
Devaansh-Kumar (1):
sched_ext: Documentation: Update instructions for running example
schedulers
Eduard Zingerman (2):
libbpf: Make btf_parse_elf process .BTF.base transparently
selftests/bpf: Check if distilled base inherits source endianness
Geliang Tang (1):
bpf, btf: Check btf for register_bpf_struct_ops
Henry Huang (2):
sched_ext: initialize kit->cursor.flags
sched_ext: keep running prev when prev->scx.slice != 0
Herbert Xu (1):
rhashtable: Fix rhashtable_try_insert test
Honglei Wang (3):
sched_ext: use correct function name in pick_task_scx() warning
message
sched_ext: Add __weak to fix the build errors
sched_ext: switch class when preempted by higher priority scheduler
Hongyan Xia (1):
sched/ext: Add BPF function to fetch rq
Hou Tao (7):
bpf: Free dynamically allocated bits in bpf_iter_bits_destroy()
bpf: Add bpf_mem_alloc_check_size() helper
bpf: Check the validity of nr_words in bpf_iter_bits_new()
bpf: Use __u64 to save the bits in bits iterator
selftests/bpf: Add three test cases for bits_iter
selftests/bpf: Use -4095 as the bad address for bits iterator
selftests/bpf: Export map_update_retriable()
Ihor Solodrai (2):
selftests/sched_ext: add order-only dependency of runner.o on BPFOBJ
selftests/sched_ext: fix build after renames in sched_ext API
Ilpo Järvinen (1):
<linux/cleanup.h>: Allow the passing of both iomem and non-iomem
pointers to no_free_ptr()
Ingo Molnar (3):
sched/syscalls: Split out kernel/sched/syscalls.c from
kernel/sched/core.c
sched/fair: Rename check_preempt_wakeup() to
check_preempt_wakeup_fair()
sched/fair: Rename check_preempt_curr() to wakeup_preempt()
Jake Hillion (2):
sched_ext: create_dsq: Return -EEXIST on duplicate request
sched_ext: Drop kfuncs marked for removal in 6.15
Jiapeng Chong (1):
sched_ext: Fixes incorrect type in bpf_scx_init()
Jiayuan Chen (1):
selftests/bpf: Fixes for test_maps test
Kui-Feng Lee (29):
bpf: refactory struct_ops type initialization to a function.
bpf: get type information with BTF_ID_LIST
bpf, net: introduce bpf_struct_ops_desc.
bpf: add struct_ops_tab to btf.
bpf: make struct_ops_map support btfs other than btf_vmlinux.
bpf: pass btf object id in bpf_map_info.
bpf: lookup struct_ops types from a given module BTF.
bpf: pass attached BTF to the bpf_struct_ops subsystem
bpf: hold module refcnt in bpf_struct_ops map creation and prog
verification.
bpf: validate value_type
bpf, net: switch to dynamic registration
libbpf: Find correct module BTFs for struct_ops maps and progs.
bpf: export btf_ctx_access to modules.
selftests/bpf: test case for register_bpf_struct_ops().
bpf: Fix error checks against bpf_get_btf_vmlinux().
bpf: Remove an unnecessary check.
selftests/bpf: Suppress warning message of an unused variable.
bpf: add btf pointer to struct bpf_ctx_arg_aux.
bpf: Move __kfunc_param_match_suffix() to btf.c.
bpf: Create argument information for nullable arguments.
selftests/bpf: Test PTR_MAYBE_NULL arguments of struct_ops operators.
libbpf: Set btf_value_type_id of struct bpf_map for struct_ops.
libbpf: Convert st_ops->data to shadow type.
bpftool: Generated shadow variables for struct_ops maps.
bpftool: Add an example for struct_ops map and shadow type.
selftests/bpf: Test if shadow types work correctly.
bpf, net: validate struct_ops when updating value.
bpf: struct_ops supports more than one page for trampolines.
selftests/bpf: Test struct_ops maps with a large number of struct_ops
program.
Kumar Kartikeya Dwivedi (4):
bpf: Allow calling static subprogs while holding a bpf_spin_lock
selftests/bpf: Add test for static subprog call in lock cs
bpf: Transfer RCU lock state between subprog calls
selftests/bpf: Add tests for RCU lock transfer between subprogs
Liang Jie (1):
sched_ext: Use sizeof_field for key_len in dsq_hash_params
Luo Gengkun (7):
bpf: Fix kabi-breakage for bpf_func_info_aux
bpf: Fix kabi-breakage for bpf_tramp_image
bpf: Fix kabi for bpf_attr
bpf_verifier: Fix kabi for bpf_verifier_env
bpf: Fix kabi for bpf_ctx_arg_aux
bpf: Fix kabi for bpf_prog_aux and bpf_prog
selftests/bpf: modify test_loader that didn't support running
bpf_prog_type_syscall programs
Manu Bretelle (1):
sched_ext: define missing cfi stubs for sched_ext
Martin KaFai Lau (5):
libbpf: Ensure undefined bpf_attr field stays 0
bpf: Remove unnecessary err < 0 check in
bpf_struct_ops_map_update_elem
bpf: Fix a crash when btf_parse_base() returns an error pointer
bpf: Reject struct_ops registration that uses module ptr and the
module btf_id is missing
bpf: Use kallsyms to find the function name of a struct_ops's stub
function
Masahiro Yamada (1):
kbuild: avoid too many execution of scripts/pahole-flags.sh
Matthieu Baerts (1):
bpf: fix compilation error without CGROUPS
Peter Zijlstra (26):
cfi: Flip headers
x86/cfi,bpf: Fix BPF JIT call
x86/cfi,bpf: Fix bpf_callback_t CFI
x86/cfi,bpf: Fix bpf_struct_ops CFI
cfi: Add CFI_NOSEAL()
bpf: Fix dtor CFI
cleanup: Make no_free_ptr() __must_check
sched: Simplify set_user_nice()
sched: Simplify syscalls
sched: Simplify sched_{set,get}affinity()
sched: Simplify yield_to()
sched: Simplify sched_rr_get_interval()
sched: Simplify sched_move_task()
sched: Misc cleanups
sched/deadline: Move bandwidth accounting into {en,de}queue_dl_entity
sched: Allow sched_class::dequeue_task() to fail
sched: Unify runtime accounting across classes
sched: Use set_next_task(.first) where required
sched/fair: Cleanup pick_task_fair() vs throttle
sched/fair: Cleanup pick_task_fair()'s curr
sched/fair: Unify pick_{,next_}_task_fair()
sched: Fixup set_next_task() implementations
sched: Split up put_prev_task_balance()
sched: Rework pick_next_task()
sched: Combine the last put_prev_task() and the first set_next_task()
sched: Add put_prev_task(.next)
Pu Lehui (8):
riscv, bpf: Fix unpredictable kernel crash about RV64 struct_ops
bpf: Fix kabi breakage in struct module
riscv, bpf: Fix out-of-bounds issue when preparing trampoline image
selftests/bpf: Fix btf leak on new btf alloc failure in btf_distill
test
libbpf: Fix return zero when elf_begin failed
libbpf: Fix incorrect traversal end type ID when marking
BTF_IS_EMBEDDED
selftests/bpf: Add distilled BTF test about marking BTF_IS_EMBEDDED
selftests/bpf: Add file_read_pattern to gitignore
Randy Dunlap (1):
sched_ext: fix kernel-doc warnings
Shizhao Chen (1):
sched_ext: Add option -l in selftest runner to list all available
tests
Song Liu (8):
bpf: Charge modmem for struct_ops trampoline
bpf: Let bpf_prog_pack_free handle any pointer
bpf: Adjust argument names of arch_prepare_bpf_trampoline()
bpf: Add helpers for trampoline image management
bpf, x86: Adjust arch_prepare_bpf_trampoline return value
bpf: Add arch_bpf_trampoline_size()
bpf: Use arch_bpf_trampoline_size
x86, bpf: Use bpf_prog_pack for bpf trampoline
T.J. Mercier (1):
bpf, docs: Fix broken link to renamed bpf_iter_task_vmas.c
Tejun Heo (152):
sched: Restructure sched_class order sanity checks in sched_init()
sched: Allow sched_cgroup_fork() to fail and introduce
sched_cancel_fork()
sched: Add sched_class->reweight_task()
sched: Add sched_class->switching_to() and expose
check_class_changing/changed()
sched: Factor out cgroup weight conversion functions
sched: Factor out update_other_load_avgs() from
__update_blocked_others()
sched: Add normal_policy()
sched_ext: Add boilerplate for extensible scheduler class
sched_ext: Implement BPF extensible scheduler class
sched_ext: Add scx_simple and scx_example_qmap example schedulers
sched_ext: Add sysrq-S which disables the BPF scheduler
sched_ext: Allow BPF schedulers to disallow specific tasks from
joining SCHED_EXT
sched_ext: Print debug dump after an error exit
tools/sched_ext: Add scx_show_state.py
sched_ext: Implement scx_bpf_kick_cpu() and task preemption support
sched_ext: Add a central scheduler which makes all scheduling
decisions on one CPU
sched_ext: Make watchdog handle ops.dispatch() looping stall
sched_ext: Add task state tracking operations
sched_ext: Implement tickless support
sched_ext: Track tasks that are subjects of the in-flight SCX
operation
sched_ext: Implement sched_ext_ops.cpu_online/offline()
sched_ext: Bypass BPF scheduler while PM events are in progress
sched_ext: Implement core-sched support
sched_ext: Add vtime-ordered priority queue to dispatch_q's
sched_ext: Documentation: scheduler: Document extensible scheduler
class
sched, sched_ext: Replace scx_next_task_picked() with
sched_class->switch_class()
cpufreq_schedutil: Refactor sugov_cpu_is_busy()
sched_ext: Add cpuperf support
sched_ext: Drop tools_clean target from the top-level Makefile
sched_ext: Swap argument positions in kcalloc() call to avoid compiler
warning
sched, sched_ext: Simplify dl_prio() case handling in sched_fork()
sched_ext: Account for idle policy when setting p->scx.weight in
scx_ops_enable_task()
sched_ext: Disallow loading BPF scheduler if isolcpus= domain
isolation is in effect
sched_ext: Minor cleanups in kernel/sched/ext.h
sched, sched_ext: Open code for_balance_class_range()
sched, sched_ext: Move some declarations from kernel/sched/ext.h to
sched.h
sched_ext: Take out ->priq and ->flags from scx_dsq_node
sched_ext: Implement DSQ iterator
sched_ext/scx_qmap: Add an example usage of DSQ iterator
sched_ext: Reimplement scx_bpf_reenqueue_local()
sched_ext: Make scx_bpf_reenqueue_local() skip tasks that are being
migrated
sched: Move struct balance_callback definition upward
sched_ext: Unpin and repin rq lock from balance_scx()
sched_ext: s/SCX_RQ_BALANCING/SCX_RQ_IN_BALANCE/ and add
SCX_RQ_IN_WAKEUP
sched_ext: Allow SCX_DSQ_LOCAL_ON for direct dispatches
sched_ext/scx_qmap: Pick idle CPU for direct dispatch on !wakeup
enqueues
sched_ext: Build fix on !CONFIG_STACKTRACE[_SUPPORT]
sched_ext: Allow p->scx.disallow only while loading
sched_ext: Simplify scx_can_stop_tick() invocation in
sched_can_stop_tick()
sched_ext: Add scx_enabled() test to @start_class promotion in
put_prev_task_balance()
sched_ext: Use update_curr_common() in update_curr_scx()
sched_ext: Simplify UP support by enabling sched_class->balance() in
UP
sched_ext: Improve comment on idle_sched_class exception in
scx_task_iter_next_locked()
sched_ext: Make task_can_run_on_remote_rq() use common
task_allowed_on_cpu()
sched_ext: Fix unsafe list iteration in process_ddsp_deferred_locals()
sched_ext: Make scx_rq_online() also test cpu_active() in addition to
SCX_RQ_ONLINE
sched_ext: Improve logging around enable/disable
sched_ext: Don't use double locking to migrate tasks across CPUs
scx_central: Fix smatch checker warning
sched_ext: Add missing cfi stub for ops.tick
sched_ext: Use task_can_run_on_remote_rq() test in
dispatch_to_local_dsq()
sched_ext: Use sched_clock_cpu() instead of rq_clock_task() in
touch_core_sched()
sched_ext: Don't call put_prev_task_scx() before picking the next task
sched_ext: Replace SCX_TASK_BAL_KEEP with SCX_RQ_BAL_KEEP
sched_ext: Unify regular and core-sched pick task paths
sched_ext: Relocate functions in kernel/sched/ext.c
sched_ext: Remove switch_class_scx()
sched_ext: Remove sched_class->switch_class()
sched_ext: TASK_DEAD tasks must be switched out of SCX on ops_disable
sched_ext: TASK_DEAD tasks must be switched into SCX on ops_enable
sched: Expose css_tg()
sched: Make cpu_shares_read_u64() use tg_weight()
sched: Introduce CONFIG_GROUP_SCHED_WEIGHT
sched_ext: Add cgroup support
sched_ext: Add a cgroup scheduler which uses flattened hierarchy
sched_ext: Temporarily work around pick_task_scx() being called
without balance_scx()
sched_ext: Add missing static to scx_has_op[]
sched_ext: Add missing static to scx_dump_data
sched_ext: Rename scx_kfunc_set_sleepable to unlocked and relocate
sched_ext: Refactor consume_remote_task()
sched_ext: Make find_dsq_for_dispatch() handle SCX_DSQ_LOCAL_ON
sched_ext: Fix processs_ddsp_deferred_locals() by unifying DTL_INVALID
handling
sched_ext: Restructure dispatch_to_local_dsq()
sched_ext: Reorder args for consume_local/remote_task()
sched_ext: Move sanity check and dsq_mod_nr() into
task_unlink_from_dsq()
sched_ext: Move consume_local_task() upward
sched_ext: Replace consume_local_task() with
move_local_task_to_local_dsq()
sched_ext: Compact struct bpf_iter_scx_dsq_kern
sched_ext: Implement scx_bpf_dispatch[_vtime]_from_dsq()
scx_qmap: Implement highpri boosting
sched_ext: Synchronize bypass state changes with rq lock
sched_ext: Don't trigger ops.quiescent/runnable() on migrations
sched_ext: Fix build when !CONFIG_STACKTRACE
sched_ext: Build fix for !CONFIG_SMP
sched_ext: Add __COMPAT helpers for features added during v6.12 devel
cycle
tools/sched_ext: Receive misc updates from SCX repo
scx_flatcg: Use a user DSQ for fallback instead of SCX_DSQ_GLOBAL
sched_ext: Allow only user DSQs for scx_bpf_consume(),
scx_bpf_dsq_nr_queued() and bpf_iter_scx_dsq_new()
sched_ext: Relocate find_user_dsq()
sched_ext: Split the global DSQ per NUMA node
sched_ext: Use shorter slice while bypassing
sched_ext: Relocate check_hotplug_seq() call in scx_ops_enable()
sched_ext: Remove SCX_OPS_PREPPING
sched_ext: Initialize in bypass mode
sched_ext: Fix SCX_TASK_INIT -> SCX_TASK_READY transitions in
scx_ops_enable()
sched_ext: Enable scx_ops_init_task() separately
sched_ext: Add scx_cgroup_enabled to gate cgroup operations and fix
scx_tg_online()
sched_ext: Decouple locks in scx_ops_disable_workfn()
sched_ext: Decouple locks in scx_ops_enable()
sched_ext: Improve error reporting during loading
sched_ext: scx_cgroup_exit() may be called without successful
scx_cgroup_init()
sched/core: Make select_task_rq() take the pointer to wake_flags
instead of value
sched/core: Add ENQUEUE_RQ_SELECTED to indicate whether
->select_task_rq() was called
sched_ext, scx_qmap: Add and use SCX_ENQ_CPU_SELECTED
Revert "sched_ext: Use shorter slice while bypassing"
sched_ext: Start schedulers with consistent p->scx.slice values
sched_ext: Move scx_buildin_idle_enabled check to
scx_bpf_select_cpu_dfl()
sched_ext: bypass mode shouldn't depend on ops.select_cpu()
sched_ext: Move scx_tasks_lock handling into scx_task_iter helpers
sched_ext: Don't hold scx_tasks_lock for too long
sched_ext: Make cast_mask() inline
sched_ext: Fix enq_last_no_enq_fails selftest
sched_ext: Add a missing newline at the end of an error message
sched_ext: Update scx_show_state.py to match scx_ops_bypass_depth's
new type
sched_ext: Handle cases where pick_task_scx() is called without
preceding balance_scx()
sched_ext: ops.cpu_acquire() should be called with SCX_KF_REST
sched_ext: Factor out move_task_between_dsqs() from
scx_dispatch_from_dsq()
sched_ext: Rename CFI stubs to names that are recognized by BPF
sched_ext: Replace set_arg_maybe_null() with __nullable CFI stub tags
sched_ext: Avoid live-locking bypass mode switching
sched_ext: Enable the ops breather and eject BPF scheduler on
softlockup
sched_ext: scx_bpf_dispatch_from_dsq_set_*() are allowed from unlocked
context
sched_ext: Rename scx_bpf_dispatch[_vtime]() to
scx_bpf_dsq_insert[_vtime]()
sched_ext: Rename scx_bpf_consume() to scx_bpf_dsq_move_to_local()
sched_ext: Rename scx_bpf_dispatch[_vtime]_from_dsq*() ->
scx_bpf_dsq_move[_vtime]*()
sched_ext: Fix invalid irq restore in scx_ops_bypass()
sched_ext: Fix dsq_local_on selftest
tools/sched_ext: Receive updates from SCX repo
sched_ext: selftests/dsp_local_on: Fix sporadic failures
sched_ext: Fix incorrect autogroup migration detection
sched_ext: Implement auto local dispatching of migration disabled
tasks
sched_ext: Fix migration disabled handling in targeted dispatches
sched_ext: Fix incorrect assumption about migration disabled tasks in
task_can_run_on_remote_rq()
sched_ext: Fix pick_task_scx() picking non-queued tasks when it's
called without balance()
sched_ext: Implement SCX_OPS_ALLOW_QUEUED_WAKEUP
sched_ext: bpf_iter_scx_dsq_new() should always initialize iterator
sched_ext: Make scx_group_set_weight() always update tg->scx.weight
sched_ext, sched/core: Don't call scx_group_set_weight() prematurely
from sched_create_group()
sched_ext: Mark scx_bpf_dsq_move_set_[slice|vtime]() with KF_RCU
sched_ext: Don't kick CPUs running higher classes
sched_ext: Use SCX_TASK_READY test instead of tryget_task_struct()
during class switch
tools/sched_ext: Sync with scx repo
Thomas Gleixner (1):
sched/ext: Remove sched_fork() hack
Thorsten Blum (1):
sched_ext: Use str_enabled_disabled() helper in
update_selcpu_topology()
Tianchen Ding (1):
sched_ext: Use btf_ids to resolve task_struct
Tony Ambardar (1):
libbpf: Ensure new BTF objects inherit input endianness
Vincent Guittot (2):
sched/cpufreq: Rework schedutil governor performance estimation
sched/fair: Fix sched_can_stop_tick() for fair tasks
Vishal Chourasia (2):
sched_ext: Add __weak markers to BPF helper function decalarations
sched_ext: Fix function pointer type mismatches in BPF selftests
Wenyu Huang (1):
sched/doc: Update documentation after renames and synchronize Chinese
version
Yafang Shao (2):
bpf: Add bits iterator
selftests/bpf: Add selftest for bits iter
Yipeng Zou (1):
sched_ext: Allow dequeue_task_scx to fail
Yiwei Lin (1):
sched/fair: Remove unused 'curr' argument from pick_next_entity()
Yu Liao (2):
sched: Put task_group::idle under CONFIG_GROUP_SCHED_WEIGHT
sched: Add dummy version of sched_group_set_idle()
Yury Norov (1):
cpumask: introduce assign_cpu() macro
Zhang Qiao (3):
sched_ext: Remove redundant p->nr_cpus_allowed checker
sched/ext: Fix unmatch trailing comment of CONFIG_EXT_GROUP_SCHED
sched/ext: Use tg_cgroup() to elieminate duplicate code
Zhao Mengmeng (1):
sched_ext: Replace scx_next_task_picked() with switch_class() in
comment
Zicheng Qu (18):
sched: Fix kabi for reweight_task in struct sched_class
Revert "sched/deadline: Fix missing ENQUEUE_REPLENISH during PI
de-boosting"
sched/syscalls: Fix kabi for EXPORT_SYMBOL moved from core.c to
syscalls.c
sched: Fix kabi for switching_to in struct sched_class
sched/fair: Fix kabi for check_preempt_curr and wakeup_preempt in
struct sched_class
sched: Fix kabi for dequeue_task in struct sched_class
sched_ext: Fix kabi for scx in struct task_struct
sched_ext: Fix kabi for switch_class in struct sched_class
sched: Fix kabi for exec_max in struct sched_statistics
sched_ext: Fix kabi for balance in struct sched_class
sched_ext: Fix kabi for header in kernel/sched/sched.h
sched: Fix kabi pick_task in struct sched_class
sched: Fix kabi for put_prev_task in struct sched_class
sched_ext: Fix kabi for scx_flags and scx_weight in struct task_group
sched: Fix kabi for int idle in struct task_group
sched: Add __setscheduler_class() for sched_ext
genirq: Fix kabi for kstat_irqs in struct irq_desc
sched_ext: Enable and disable sched_ext configs
Zqiang (1):
sched_ext: Fix unsafe locking in the scx_dump_state()
guanjing (1):
sched_ext: fix application of sizeof to pointer
Documentation/bpf/bpf_iterators.rst | 2 +-
Documentation/bpf/kfuncs.rst | 14 +-
Documentation/scheduler/index.rst | 1 +
Documentation/scheduler/sched-design-CFS.rst | 8 +-
Documentation/scheduler/sched-ext.rst | 325 +
.../zh_CN/scheduler/sched-design-CFS.rst | 8 +-
MAINTAINERS | 16 +-
Makefile | 4 +-
arch/arm64/configs/openeuler_defconfig | 3 +
arch/arm64/kernel/bpf-rvi.c | 4 +-
arch/arm64/net/bpf_jit_comp.c | 55 +-
arch/mips/dec/setup.c | 2 +-
arch/parisc/kernel/smp.c | 2 +-
arch/powerpc/kvm/book3s_hv_rm_xics.c | 2 +-
arch/riscv/include/asm/cfi.h | 3 +-
arch/riscv/kernel/cfi.c | 2 +-
arch/riscv/net/bpf_jit_comp64.c | 48 +-
arch/s390/net/bpf_jit_comp.c | 59 +-
arch/x86/configs/openeuler_defconfig | 2 +
arch/x86/include/asm/cfi.h | 126 +-
arch/x86/kernel/alternative.c | 87 +-
arch/x86/kernel/cfi.c | 4 +-
arch/x86/net/bpf_jit_comp.c | 261 +-
block/blk-cgroup.c | 4 +-
drivers/hid/bpf/hid_bpf_dispatch.c | 12 +-
drivers/tty/sysrq.c | 1 +
fs/proc/stat.c | 4 +-
include/asm-generic/Kbuild | 1 +
include/asm-generic/cfi.h | 5 +
include/asm-generic/vmlinux.lds.h | 1 +
include/linux/bitops.h | 2 +
include/linux/bpf.h | 130 +-
include/linux/bpf_mem_alloc.h | 3 +
include/linux/bpf_verifier.h | 21 +-
include/linux/btf.h | 105 +
include/linux/btf_ids.h | 21 +-
include/linux/cfi.h | 12 +
include/linux/cgroup.h | 14 +-
include/linux/cleanup.h | 42 +-
include/linux/cpumask.h | 41 +-
include/linux/energy_model.h | 1 -
include/linux/file.h | 20 +
include/linux/filter.h | 2 +-
include/linux/irqdesc.h | 17 +-
include/linux/kernel_stat.h | 8 +
include/linux/module.h | 8 +-
include/linux/sched.h | 8 +-
include/linux/sched/ext.h | 216 +
include/linux/sched/task.h | 8 +-
include/trace/events/sched_ext.h | 32 +
include/uapi/linux/bpf.h | 16 +-
include/uapi/linux/sched.h | 1 +
init/Kconfig | 10 +
init/init_task.c | 12 +
kernel/Kconfig.preempt | 27 +-
kernel/bpf-rvi/common_kfuncs.c | 4 +-
kernel/bpf/Makefile | 8 +-
kernel/bpf/bpf_iter.c | 12 +-
kernel/bpf/bpf_struct_ops.c | 745 +-
kernel/bpf/bpf_struct_ops_types.h | 12 -
kernel/bpf/btf.c | 431 +-
kernel/bpf/cgroup_iter.c | 65 +-
kernel/bpf/core.c | 76 +-
kernel/bpf/cpumask.c | 18 +-
kernel/bpf/dispatcher.c | 7 +-
kernel/bpf/helpers.c | 202 +-
kernel/bpf/map_iter.c | 10 +-
kernel/bpf/memalloc.c | 14 +-
kernel/bpf/syscall.c | 12 +-
kernel/bpf/task_iter.c | 242 +-
kernel/bpf/trampoline.c | 99 +-
kernel/bpf/verifier.c | 317 +-
kernel/cgroup/cgroup.c | 18 +-
kernel/cgroup/cpuset.c | 4 +-
kernel/cgroup/rstat.c | 13 +-
kernel/events/core.c | 2 +-
kernel/fork.c | 17 +-
kernel/irq/Kconfig | 4 +
kernel/irq/internals.h | 2 +-
kernel/irq/irqdesc.c | 144 +-
kernel/irq/proc.c | 5 +-
kernel/module/main.c | 5 +-
kernel/sched/autogroup.c | 4 +-
kernel/sched/bpf_sched.c | 8 +-
kernel/sched/build_policy.c | 13 +
kernel/sched/core.c | 2522 +-----
kernel/sched/cpuacct.c | 4 +-
kernel/sched/cpufreq_schedutil.c | 83 +-
kernel/sched/deadline.c | 175 +-
kernel/sched/debug.c | 3 +
kernel/sched/ext.c | 7155 +++++++++++++++++
kernel/sched/ext.h | 119 +
kernel/sched/ext_idle.c | 755 ++
kernel/sched/ext_idle.h | 39 +
kernel/sched/fair.c | 306 +-
kernel/sched/idle.c | 31 +-
kernel/sched/rt.c | 40 +-
kernel/sched/sched.h | 473 +-
kernel/sched/stop_task.c | 35 +-
kernel/sched/syscalls.c | 1713 ++++
kernel/trace/bpf_trace.c | 12 +-
kernel/trace/trace_probe.c | 2 -
kernel/watchdog.c | 223 +-
lib/Kconfig.debug | 14 +
lib/dump_stack.c | 1 +
lib/rhashtable.c | 12 +-
net/bpf/bpf_dummy_struct_ops.c | 72 +-
net/bpf/test_run.c | 30 +-
net/core/filter.c | 33 +-
net/core/xdp.c | 10 +-
net/ipv4/bpf_tcp_ca.c | 93 +-
net/ipv4/fou_bpf.c | 10 +-
net/ipv4/tcp_bbr.c | 4 +-
net/ipv4/tcp_cong.c | 6 +-
net/ipv4/tcp_cubic.c | 4 +-
net/ipv4/tcp_dctcp.c | 4 +-
net/netfilter/nf_conntrack_bpf.c | 10 +-
net/netfilter/nf_nat_bpf.c | 10 +-
net/socket.c | 8 +-
net/xfrm/xfrm_interface_bpf.c | 10 +-
scripts/Makefile.btf | 33 +
scripts/Makefile.modfinal | 2 +-
scripts/gdb/linux/interrupts.py | 6 +-
scripts/pahole-flags.sh | 30 -
tools/Makefile | 10 +-
.../bpf/bpftool/Documentation/bpftool-gen.rst | 58 +-
tools/bpf/bpftool/gen.c | 253 +-
tools/bpf/resolve_btfids/main.c | 8 +
tools/include/linux/bitops.h | 2 +
tools/include/uapi/linux/bpf.h | 14 +-
tools/include/uapi/linux/sched.h | 1 +
tools/lib/bpf/Build | 2 +-
tools/lib/bpf/bpf.c | 4 +-
tools/lib/bpf/bpf.h | 4 +-
tools/lib/bpf/btf.c | 704 +-
tools/lib/bpf/btf.h | 36 +
tools/lib/bpf/btf_iter.c | 177 +
tools/lib/bpf/btf_relocate.c | 519 ++
tools/lib/bpf/libbpf.c | 97 +-
tools/lib/bpf/libbpf.map | 4 +-
tools/lib/bpf/libbpf_internal.h | 29 +-
tools/lib/bpf/libbpf_probes.c | 1 +
tools/lib/bpf/linker.c | 58 +-
tools/perf/util/probe-finder.c | 4 +-
tools/sched_ext/.gitignore | 2 +
tools/sched_ext/Makefile | 246 +
tools/sched_ext/README.md | 270 +
.../sched_ext/include/bpf-compat/gnu/stubs.h | 11 +
tools/sched_ext/include/scx/common.bpf.h | 647 ++
tools/sched_ext/include/scx/common.h | 81 +
tools/sched_ext/include/scx/compat.bpf.h | 143 +
tools/sched_ext/include/scx/compat.h | 187 +
.../sched_ext/include/scx/enums.autogen.bpf.h | 105 +
tools/sched_ext/include/scx/enums.autogen.h | 41 +
tools/sched_ext/include/scx/enums.bpf.h | 12 +
tools/sched_ext/include/scx/enums.h | 27 +
tools/sched_ext/include/scx/user_exit_info.h | 118 +
tools/sched_ext/scx_central.bpf.c | 356 +
tools/sched_ext/scx_central.c | 145 +
tools/sched_ext/scx_flatcg.bpf.c | 954 +++
tools/sched_ext/scx_flatcg.c | 234 +
tools/sched_ext/scx_flatcg.h | 51 +
tools/sched_ext/scx_qmap.bpf.c | 827 ++
tools/sched_ext/scx_qmap.c | 155 +
tools/sched_ext/scx_show_state.py | 42 +
tools/sched_ext/scx_simple.bpf.c | 151 +
tools/sched_ext/scx_simple.c | 107 +
tools/testing/selftests/Makefile | 9 +-
tools/testing/selftests/bpf/.gitignore | 1 +
.../testing/selftests/bpf/bpf_experimental.h | 96 +
.../selftests/bpf/bpf_testmod/bpf_testmod.c | 160 +-
.../selftests/bpf/bpf_testmod/bpf_testmod.h | 61 +
.../bpf/bpf_testmod/bpf_testmod_kfunc.h | 9 +
.../selftests/bpf/prog_tests/bpf_iter.c | 44 +-
.../selftests/bpf/prog_tests/btf_distill.c | 692 ++
.../selftests/bpf/prog_tests/cgroup_iter.c | 33 +
.../bpf/prog_tests/global_func_dead_code.c | 60 +
.../testing/selftests/bpf/prog_tests/iters.c | 209 +
.../selftests/bpf/prog_tests/kfunc_call.c | 1 +
.../selftests/bpf/prog_tests/rcu_read_lock.c | 6 +
.../selftests/bpf/prog_tests/spin_lock.c | 2 +
.../prog_tests/test_struct_ops_maybe_null.c | 46 +
.../bpf/prog_tests/test_struct_ops_module.c | 86 +
.../prog_tests/test_struct_ops_multi_pages.c | 30 +
.../testing/selftests/bpf/prog_tests/timer.c | 4 +
.../selftests/bpf/prog_tests/verifier.c | 4 +
...f_iter_task_vma.c => bpf_iter_task_vmas.c} | 0
.../{bpf_iter_task.c => bpf_iter_tasks.c} | 0
.../bpf/progs/freplace_dead_global_func.c | 11 +
tools/testing/selftests/bpf/progs/iters_css.c | 72 +
.../selftests/bpf/progs/iters_css_task.c | 102 +
.../testing/selftests/bpf/progs/iters_task.c | 41 +
.../selftests/bpf/progs/iters_task_failure.c | 105 +
.../selftests/bpf/progs/iters_task_vma.c | 43 +
.../selftests/bpf/progs/iters_testmod_seq.c | 50 +
.../selftests/bpf/progs/kfunc_call_test.c | 37 +
.../selftests/bpf/progs/rcu_read_lock.c | 120 +
.../bpf/progs/struct_ops_maybe_null.c | 29 +
.../bpf/progs/struct_ops_maybe_null_fail.c | 24 +
.../selftests/bpf/progs/struct_ops_module.c | 37 +
.../bpf/progs/struct_ops_multi_pages.c | 102 +
.../selftests/bpf/progs/test_global_func12.c | 4 +-
.../selftests/bpf/progs/test_spin_lock.c | 65 +
.../selftests/bpf/progs/test_spin_lock_fail.c | 44 +
tools/testing/selftests/bpf/progs/timer.c | 63 +-
.../selftests/bpf/progs/verifier_bits_iter.c | 232 +
.../bpf/progs/verifier_global_subprogs.c | 101 +
.../selftests/bpf/progs/verifier_spin_lock.c | 2 +-
.../bpf/progs/verifier_subprog_precision.c | 4 +-
tools/testing/selftests/bpf/test_loader.c | 10 +-
tools/testing/selftests/bpf/test_maps.c | 18 +-
tools/testing/selftests/bpf/test_maps.h | 5 +
tools/testing/selftests/sched_ext/.gitignore | 6 +
tools/testing/selftests/sched_ext/Makefile | 211 +
tools/testing/selftests/sched_ext/config | 9 +
.../selftests/sched_ext/create_dsq.bpf.c | 58 +
.../testing/selftests/sched_ext/create_dsq.c | 57 +
.../sched_ext/ddsp_bogus_dsq_fail.bpf.c | 42 +
.../selftests/sched_ext/ddsp_bogus_dsq_fail.c | 60 +
.../sched_ext/ddsp_vtimelocal_fail.bpf.c | 39 +
.../sched_ext/ddsp_vtimelocal_fail.c | 59 +
.../selftests/sched_ext/dsp_local_on.bpf.c | 68 +
.../selftests/sched_ext/dsp_local_on.c | 60 +
.../sched_ext/enq_last_no_enq_fails.bpf.c | 29 +
.../sched_ext/enq_last_no_enq_fails.c | 64 +
.../sched_ext/enq_select_cpu_fails.bpf.c | 43 +
.../sched_ext/enq_select_cpu_fails.c | 61 +
tools/testing/selftests/sched_ext/exit.bpf.c | 86 +
tools/testing/selftests/sched_ext/exit.c | 64 +
tools/testing/selftests/sched_ext/exit_test.h | 20 +
.../testing/selftests/sched_ext/hotplug.bpf.c | 61 +
tools/testing/selftests/sched_ext/hotplug.c | 170 +
.../selftests/sched_ext/hotplug_test.h | 15 +
.../sched_ext/init_enable_count.bpf.c | 53 +
.../selftests/sched_ext/init_enable_count.c | 157 +
.../testing/selftests/sched_ext/maximal.bpf.c | 166 +
tools/testing/selftests/sched_ext/maximal.c | 54 +
.../selftests/sched_ext/maybe_null.bpf.c | 36 +
.../testing/selftests/sched_ext/maybe_null.c | 49 +
.../sched_ext/maybe_null_fail_dsp.bpf.c | 25 +
.../sched_ext/maybe_null_fail_yld.bpf.c | 28 +
.../testing/selftests/sched_ext/minimal.bpf.c | 21 +
tools/testing/selftests/sched_ext/minimal.c | 58 +
.../selftests/sched_ext/prog_run.bpf.c | 33 +
tools/testing/selftests/sched_ext/prog_run.c | 78 +
.../testing/selftests/sched_ext/reload_loop.c | 74 +
tools/testing/selftests/sched_ext/runner.c | 212 +
tools/testing/selftests/sched_ext/scx_test.h | 131 +
.../selftests/sched_ext/select_cpu_dfl.bpf.c | 40 +
.../selftests/sched_ext/select_cpu_dfl.c | 75 +
.../sched_ext/select_cpu_dfl_nodispatch.bpf.c | 89 +
.../sched_ext/select_cpu_dfl_nodispatch.c | 75 +
.../sched_ext/select_cpu_dispatch.bpf.c | 41 +
.../selftests/sched_ext/select_cpu_dispatch.c | 73 +
.../select_cpu_dispatch_bad_dsq.bpf.c | 37 +
.../sched_ext/select_cpu_dispatch_bad_dsq.c | 59 +
.../select_cpu_dispatch_dbl_dsp.bpf.c | 38 +
.../sched_ext/select_cpu_dispatch_dbl_dsp.c | 59 +
.../sched_ext/select_cpu_vtime.bpf.c | 92 +
.../selftests/sched_ext/select_cpu_vtime.c | 62 +
.../selftests/sched_ext/test_example.c | 49 +
tools/testing/selftests/sched_ext/util.c | 71 +
tools/testing/selftests/sched_ext/util.h | 13 +
263 files changed, 27732 insertions(+), 3817 deletions(-)
create mode 100644 Documentation/scheduler/sched-ext.rst
create mode 100644 include/asm-generic/cfi.h
create mode 100644 include/linux/sched/ext.h
create mode 100644 include/trace/events/sched_ext.h
delete mode 100644 kernel/bpf/bpf_struct_ops_types.h
create mode 100644 kernel/sched/ext.c
create mode 100644 kernel/sched/ext.h
create mode 100644 kernel/sched/ext_idle.c
create mode 100644 kernel/sched/ext_idle.h
create mode 100644 kernel/sched/syscalls.c
create mode 100644 scripts/Makefile.btf
delete mode 100755 scripts/pahole-flags.sh
create mode 100644 tools/lib/bpf/btf_iter.c
create mode 100644 tools/lib/bpf/btf_relocate.c
create mode 100644 tools/sched_ext/.gitignore
create mode 100644 tools/sched_ext/Makefile
create mode 100644 tools/sched_ext/README.md
create mode 100644 tools/sched_ext/include/bpf-compat/gnu/stubs.h
create mode 100644 tools/sched_ext/include/scx/common.bpf.h
create mode 100644 tools/sched_ext/include/scx/common.h
create mode 100644 tools/sched_ext/include/scx/compat.bpf.h
create mode 100644 tools/sched_ext/include/scx/compat.h
create mode 100644 tools/sched_ext/include/scx/enums.autogen.bpf.h
create mode 100644 tools/sched_ext/include/scx/enums.autogen.h
create mode 100644 tools/sched_ext/include/scx/enums.bpf.h
create mode 100644 tools/sched_ext/include/scx/enums.h
create mode 100644 tools/sched_ext/include/scx/user_exit_info.h
create mode 100644 tools/sched_ext/scx_central.bpf.c
create mode 100644 tools/sched_ext/scx_central.c
create mode 100644 tools/sched_ext/scx_flatcg.bpf.c
create mode 100644 tools/sched_ext/scx_flatcg.c
create mode 100644 tools/sched_ext/scx_flatcg.h
create mode 100644 tools/sched_ext/scx_qmap.bpf.c
create mode 100644 tools/sched_ext/scx_qmap.c
create mode 100644 tools/sched_ext/scx_show_state.py
create mode 100644 tools/sched_ext/scx_simple.bpf.c
create mode 100644 tools/sched_ext/scx_simple.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/btf_distill.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/global_func_dead_code.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/test_struct_ops_maybe_null.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/test_struct_ops_module.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/test_struct_ops_multi_pages.c
rename tools/testing/selftests/bpf/progs/{bpf_iter_task_vma.c => bpf_iter_task_vmas.c} (100%)
rename tools/testing/selftests/bpf/progs/{bpf_iter_task.c => bpf_iter_tasks.c} (100%)
create mode 100644 tools/testing/selftests/bpf/progs/freplace_dead_global_func.c
create mode 100644 tools/testing/selftests/bpf/progs/iters_css.c
create mode 100644 tools/testing/selftests/bpf/progs/iters_css_task.c
create mode 100644 tools/testing/selftests/bpf/progs/iters_task.c
create mode 100644 tools/testing/selftests/bpf/progs/iters_task_failure.c
create mode 100644 tools/testing/selftests/bpf/progs/iters_task_vma.c
create mode 100644 tools/testing/selftests/bpf/progs/struct_ops_maybe_null.c
create mode 100644 tools/testing/selftests/bpf/progs/struct_ops_maybe_null_fail.c
create mode 100644 tools/testing/selftests/bpf/progs/struct_ops_module.c
create mode 100644 tools/testing/selftests/bpf/progs/struct_ops_multi_pages.c
create mode 100644 tools/testing/selftests/bpf/progs/verifier_bits_iter.c
create mode 100644 tools/testing/selftests/bpf/progs/verifier_global_subprogs.c
create mode 100644 tools/testing/selftests/sched_ext/.gitignore
create mode 100644 tools/testing/selftests/sched_ext/Makefile
create mode 100644 tools/testing/selftests/sched_ext/config
create mode 100644 tools/testing/selftests/sched_ext/create_dsq.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/create_dsq.c
create mode 100644 tools/testing/selftests/sched_ext/ddsp_bogus_dsq_fail.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/ddsp_bogus_dsq_fail.c
create mode 100644 tools/testing/selftests/sched_ext/ddsp_vtimelocal_fail.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/ddsp_vtimelocal_fail.c
create mode 100644 tools/testing/selftests/sched_ext/dsp_local_on.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/dsp_local_on.c
create mode 100644 tools/testing/selftests/sched_ext/enq_last_no_enq_fails.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/enq_last_no_enq_fails.c
create mode 100644 tools/testing/selftests/sched_ext/enq_select_cpu_fails.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/enq_select_cpu_fails.c
create mode 100644 tools/testing/selftests/sched_ext/exit.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/exit.c
create mode 100644 tools/testing/selftests/sched_ext/exit_test.h
create mode 100644 tools/testing/selftests/sched_ext/hotplug.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/hotplug.c
create mode 100644 tools/testing/selftests/sched_ext/hotplug_test.h
create mode 100644 tools/testing/selftests/sched_ext/init_enable_count.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/init_enable_count.c
create mode 100644 tools/testing/selftests/sched_ext/maximal.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/maximal.c
create mode 100644 tools/testing/selftests/sched_ext/maybe_null.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/maybe_null.c
create mode 100644 tools/testing/selftests/sched_ext/maybe_null_fail_dsp.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/maybe_null_fail_yld.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/minimal.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/minimal.c
create mode 100644 tools/testing/selftests/sched_ext/prog_run.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/prog_run.c
create mode 100644 tools/testing/selftests/sched_ext/reload_loop.c
create mode 100644 tools/testing/selftests/sched_ext/runner.c
create mode 100644 tools/testing/selftests/sched_ext/scx_test.h
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dfl.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dfl.c
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dfl_nodispatch.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dfl_nodispatch.c
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dispatch.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dispatch.c
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dispatch_bad_dsq.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dispatch_bad_dsq.c
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dispatch_dbl_dsp.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dispatch_dbl_dsp.c
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_vtime.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_vtime.c
create mode 100644 tools/testing/selftests/sched_ext/test_example.c
create mode 100644 tools/testing/selftests/sched_ext/util.c
create mode 100644 tools/testing/selftests/sched_ext/util.h
--
2.34.1
2
453
Junxiao Bi (2):
scsi: core: Fix refcount leak for tagset_refcnt
scsi: core: Fix error handling for scsi_alloc_sdev()
drivers/scsi/scsi_scan.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
--
2.52.0
2
6
Aboorva Devarajan (2):
sched_ext: Documentation: Remove mentions of scx_bpf_switch_all
sched: Pass correct scheduling policy to __setscheduler_class
Alan Maguire (16):
kbuild,bpf: Switch to using --btf_features for pahole v1.26 and later
kbuild, bpf: Use test-ge check for v1.25-only pahole
libbpf: Add btf__distill_base() creating split BTF with distilled base
BTF
selftests/bpf: Test distilled base, split BTF generation
libbpf: Split BTF relocation
selftests/bpf: Extend distilled BTF tests to cover BTF relocation
resolve_btfids: Handle presence of .BTF.base section
libbpf: BTF relocation followup fixing naming, loop logic
module, bpf: Store BTF base pointer in struct module
libbpf: Split field iter code into its own file kernel
libbpf,bpf: Share BTF relocate-related code with kernel
kbuild,bpf: Add module-specific pahole flags for distilled base BTF
selftests/bpf: Add kfunc_call test for simple dtor in bpf_testmod
bpf: fix build when CONFIG_DEBUG_INFO_BTF[_MODULES] is undefined
libbpf: Fix error handling in btf__distill_base()
libbpf: Fix license for btf_relocate.c
Alexander Lobakin (1):
bitops: make BYTES_TO_BITS() treewide-available
Alexei Starovoitov (2):
s390/bpf: Fix indirect trampoline generation
bpf: Introduce "volatile compare" macros
Andrea Righi (33):
sched_ext: fix typo in set_weight() description
sched_ext: add CONFIG_DEBUG_INFO_BTF dependency
sched_ext: Provide a sysfs enable_seq counter
sched_ext: improve WAKE_SYNC behavior for default idle CPU selection
sched_ext: Clarify ops.select_cpu() for single-CPU tasks
sched_ext: Introduce LLC awareness to the default idle selection
policy
sched_ext: Introduce NUMA awareness to the default idle selection
policy
sched_ext: Do not enable LLC/NUMA optimizations when domains overlap
sched_ext: Fix incorrect use of bitwise AND
MAINTAINERS: add self as reviewer for sched_ext
sched_ext: idle: Refresh idle masks during idle-to-idle transitions
sched_ext: Use the NUMA scheduling domain for NUMA optimizations
sched_ext: idle: use assign_cpu() to update the idle cpumask
sched_ext: idle: clarify comments
sched_ext: idle: introduce check_builtin_idle_enabled() helper
sched_ext: idle: small CPU iteration refactoring
sched_ext: update scx_bpf_dsq_insert() doc for SCX_DSQ_LOCAL_ON
sched_ext: Include remaining task time slice in error state dump
sched_ext: Include task weight in the error state dump
selftests/sched_ext: Fix enum resolution
tools/sched_ext: Add helper to check task migration state
sched_ext: selftests/dsp_local_on: Fix selftest on UP systems
sched_ext: Fix lock imbalance in dispatch_to_local_dsq()
selftests/sched_ext: Fix exit selftest hang on UP
sched_ext: Move built-in idle CPU selection policy to a separate file
sched_ext: Track currently locked rq
sched_ext: Make scx_locked_rq() inline
sched_ext: Fix missing rq lock in scx_bpf_cpuperf_set()
sched/ext: Fix invalid task state transitions on class switch
sched_ext: Make scx_kf_allowed_if_unlocked() available outside ext.c
sched_ext: Remove duplicate BTF_ID_FLAGS definitions
sched_ext: Fix rq lock state in hotplug ops
sched_ext: Validate prev_cpu in scx_bpf_select_cpu_dfl()
Andrii Nakryiko (14):
bpf: Emit global subprog name in verifier logs
bpf: Validate global subprogs lazily
selftests/bpf: Add lazy global subprog validation tests
libbpf: Add btf__new_split() API that was declared but not implemented
bpf: move sleepable flag from bpf_prog_aux to bpf_prog
libbpf: Add BTF field iterator
libbpf: Make use of BTF field iterator in BPF linker code
libbpf: Make use of BTF field iterator in BTF handling code
bpftool: Use BTF field iterator in btfgen
libbpf: Remove callback-based type/string BTF field visitor helpers
bpf: extract iterator argument type and name validation logic
bpf: allow passing struct bpf_iter_<type> as kfunc arguments
selftests/bpf: test passing iterator to a kfunc
selftests/bpf: validate eliminated global subprog is not freplaceable
Arnaldo Carvalho de Melo (1):
tools include UAPI: Sync linux/sched.h copy with the kernel sources
Atul Kumar Pant (1):
sched_ext: Fixes typos in comments
Benjamin Tissoires (1):
bpf: introduce in_sleepable() helper
Bitao Hu (4):
genirq: Convert kstat_irqs to a struct
genirq: Provide a snapshot mechanism for interrupt statistics
watchdog/softlockup: Low-overhead detection of interrupt storm
watchdog/softlockup: Report the most frequent interrupts
Björn Töpel (1):
selftests: sched_ext: Add sched_ext as proper selftest target
Breno Leitao (3):
rhashtable: Fix potential deadlock by moving schedule_work outside
lock
sched_ext: Use kvzalloc for large exit_dump allocation
sched/ext: Prevent update_locked_rq() calls with NULL rq
Changwoo Min (12):
sched_ext: Clarify sched_ext_ops table for userland scheduler
sched_ext: add a missing rcu_read_lock/unlock pair at
scx_select_cpu_dfl()
MAINTAINERS: add me as reviewer for sched_ext
sched_ext: Replace rq_lock() to raw_spin_rq_lock() in scx_ops_bypass()
sched_ext: Relocate scx_enabled() related code
sched_ext: Implement scx_bpf_now()
sched_ext: Add scx_bpf_now() for BPF scheduler
sched_ext: Add time helpers for BPF schedulers
sched_ext: Replace bpf_ktime_get_ns() to scx_bpf_now()
sched_ext: Use time helpers in BPF schedulers
sched_ext: Fix incorrect time delta calculation in time_delta()
sched_ext: Add scx_bpf_events() and scx_read_event() for BPF
schedulers
Cheng-Yang Chou (1):
sched_ext: Always use SMP versions in kernel/sched/ext.c
Christian Brauner (1):
file: add take_fd() cleanup helper
Christian Loehle (1):
sched/fair: Remove stale FREQUENCY_UTIL comment
Christophe Leroy (2):
bpf: Remove arch_unprotect_bpf_trampoline()
bpf: Check return from set_memory_rox()
Chuyi Zhou (15):
cgroup: Prepare for using css_task_iter_*() in BPF
bpf: Introduce css_task open-coded iterator kfuncs
bpf: Introduce task open coded iterator kfuncs
bpf: Introduce css open-coded iterator kfuncs
bpf: teach the verifier to enforce css_iter and task_iter in RCU CS
bpf: Let bpf_iter_task_new accept null task ptr
selftests/bpf: rename bpf_iter_task.c to bpf_iter_tasks.c
selftests/bpf: Add tests for open-coded task and css iter
bpf: Relax allowlist for css_task iter
selftests/bpf: Add tests for css_task iter combining with cgroup iter
selftests/bpf: Add test for using css_task iter in sleepable progs
bpf: Let verifier consider {task,cgroup} is trusted in bpf_iter_reg
selftests/bpf: get trusted cgrp from bpf_iter__cgroup directly
sched_ext: Fix the incorrect bpf_list kfunc API in common.bpf.h.
sched_ext: Use SCX_CALL_OP_TASK in task_tick_scx
Colin Ian King (1):
sched_ext: Fix spelling mistake: "intead" -> "instead"
Daniel Xu (3):
bpf: btf: Support flags for BTF_SET8 sets
bpf: btf: Add BTF_KFUNCS_START/END macro pair
bpf: treewide: Annotate BPF kfuncs in BTF
Dave Marchevsky (6):
bpf: Don't explicitly emit BTF for struct btf_iter_num
selftests/bpf: Rename bpf_iter_task_vma.c to bpf_iter_task_vmas.c
bpf: Introduce task_vma open-coded iterator kfuncs
selftests/bpf: Add tests for open-coded task_vma iter
bpf: Add __bpf_kfunc_{start,end}_defs macros
bpf: Add __bpf_hook_{start,end} macros
David Vernet (15):
bpf: Add ability to pin bpf timer to calling CPU
selftests/bpf: Test pinning bpf timer to a core
sched_ext: Implement runnable task stall watchdog
sched_ext: Print sched_ext info when dumping stack
sched_ext: Implement SCX_KICK_WAIT
sched_ext: Implement sched_ext_ops.cpu_acquire/release()
sched_ext: Add selftests
bpf: Load vmlinux btf for any struct_ops map
sched_ext: Make scx_bpf_cpuperf_set() @cpu arg signed
scx: Allow calling sleepable kfuncs from BPF_PROG_TYPE_SYSCALL
scx/selftests: Verify we can call create_dsq from prog_run
sched_ext: Remove unnecessary cpu_relax()
scx: Fix exit selftest to use custom DSQ
scx: Fix raciness in scx_ops_bypass()
scx: Fix maximal BPF selftest prog
Dawei Li (1):
genirq: Deduplicate interrupt descriptor initialization
Devaansh Kumar (1):
sched_ext: selftests: Fix grammar in tests description
Devaansh-Kumar (1):
sched_ext: Documentation: Update instructions for running example
schedulers
Eduard Zingerman (2):
libbpf: Make btf_parse_elf process .BTF.base transparently
selftests/bpf: Check if distilled base inherits source endianness
Geliang Tang (1):
bpf, btf: Check btf for register_bpf_struct_ops
Henry Huang (2):
sched_ext: initialize kit->cursor.flags
sched_ext: keep running prev when prev->scx.slice != 0
Herbert Xu (1):
rhashtable: Fix rhashtable_try_insert test
Honglei Wang (3):
sched_ext: use correct function name in pick_task_scx() warning
message
sched_ext: Add __weak to fix the build errors
sched_ext: switch class when preempted by higher priority scheduler
Hongyan Xia (1):
sched/ext: Add BPF function to fetch rq
Hou Tao (7):
bpf: Free dynamically allocated bits in bpf_iter_bits_destroy()
bpf: Add bpf_mem_alloc_check_size() helper
bpf: Check the validity of nr_words in bpf_iter_bits_new()
bpf: Use __u64 to save the bits in bits iterator
selftests/bpf: Add three test cases for bits_iter
selftests/bpf: Use -4095 as the bad address for bits iterator
selftests/bpf: Export map_update_retriable()
Ihor Solodrai (2):
selftests/sched_ext: add order-only dependency of runner.o on BPFOBJ
selftests/sched_ext: fix build after renames in sched_ext API
Ilpo Järvinen (1):
<linux/cleanup.h>: Allow the passing of both iomem and non-iomem
pointers to no_free_ptr()
Ingo Molnar (3):
sched/syscalls: Split out kernel/sched/syscalls.c from
kernel/sched/core.c
sched/fair: Rename check_preempt_wakeup() to
check_preempt_wakeup_fair()
sched/fair: Rename check_preempt_curr() to wakeup_preempt()
Jake Hillion (2):
sched_ext: create_dsq: Return -EEXIST on duplicate request
sched_ext: Drop kfuncs marked for removal in 6.15
Jiapeng Chong (1):
sched_ext: Fixes incorrect type in bpf_scx_init()
Jiayuan Chen (1):
selftests/bpf: Fixes for test_maps test
Kui-Feng Lee (29):
bpf: refactory struct_ops type initialization to a function.
bpf: get type information with BTF_ID_LIST
bpf, net: introduce bpf_struct_ops_desc.
bpf: add struct_ops_tab to btf.
bpf: make struct_ops_map support btfs other than btf_vmlinux.
bpf: pass btf object id in bpf_map_info.
bpf: lookup struct_ops types from a given module BTF.
bpf: pass attached BTF to the bpf_struct_ops subsystem
bpf: hold module refcnt in bpf_struct_ops map creation and prog
verification.
bpf: validate value_type
bpf, net: switch to dynamic registration
libbpf: Find correct module BTFs for struct_ops maps and progs.
bpf: export btf_ctx_access to modules.
selftests/bpf: test case for register_bpf_struct_ops().
bpf: Fix error checks against bpf_get_btf_vmlinux().
bpf: Remove an unnecessary check.
selftests/bpf: Suppress warning message of an unused variable.
bpf: add btf pointer to struct bpf_ctx_arg_aux.
bpf: Move __kfunc_param_match_suffix() to btf.c.
bpf: Create argument information for nullable arguments.
selftests/bpf: Test PTR_MAYBE_NULL arguments of struct_ops operators.
libbpf: Set btf_value_type_id of struct bpf_map for struct_ops.
libbpf: Convert st_ops->data to shadow type.
bpftool: Generated shadow variables for struct_ops maps.
bpftool: Add an example for struct_ops map and shadow type.
selftests/bpf: Test if shadow types work correctly.
bpf, net: validate struct_ops when updating value.
bpf: struct_ops supports more than one page for trampolines.
selftests/bpf: Test struct_ops maps with a large number of struct_ops
program.
Kumar Kartikeya Dwivedi (4):
bpf: Allow calling static subprogs while holding a bpf_spin_lock
selftests/bpf: Add test for static subprog call in lock cs
bpf: Transfer RCU lock state between subprog calls
selftests/bpf: Add tests for RCU lock transfer between subprogs
Liang Jie (1):
sched_ext: Use sizeof_field for key_len in dsq_hash_params
Luo Gengkun (7):
bpf: Fix kabi-breakage for bpf_func_info_aux
bpf: Fix kabi-breakage for bpf_tramp_image
bpf: Fix kabi for bpf_attr
bpf_verifier: Fix kabi for bpf_verifier_env
bpf: Fix kabi for bpf_ctx_arg_aux
bpf: Fix kabi for bpf_prog_aux and bpf_prog
selftests/bpf: modify test_loader that didn't support running
bpf_prog_type_syscall programs
Manu Bretelle (1):
sched_ext: define missing cfi stubs for sched_ext
Martin KaFai Lau (5):
libbpf: Ensure undefined bpf_attr field stays 0
bpf: Remove unnecessary err < 0 check in
bpf_struct_ops_map_update_elem
bpf: Fix a crash when btf_parse_base() returns an error pointer
bpf: Reject struct_ops registration that uses module ptr and the
module btf_id is missing
bpf: Use kallsyms to find the function name of a struct_ops's stub
function
Masahiro Yamada (1):
kbuild: avoid too many execution of scripts/pahole-flags.sh
Matthieu Baerts (1):
bpf: fix compilation error without CGROUPS
Peter Zijlstra (26):
cfi: Flip headers
x86/cfi,bpf: Fix BPF JIT call
x86/cfi,bpf: Fix bpf_callback_t CFI
x86/cfi,bpf: Fix bpf_struct_ops CFI
cfi: Add CFI_NOSEAL()
bpf: Fix dtor CFI
cleanup: Make no_free_ptr() __must_check
sched: Simplify set_user_nice()
sched: Simplify syscalls
sched: Simplify sched_{set,get}affinity()
sched: Simplify yield_to()
sched: Simplify sched_rr_get_interval()
sched: Simplify sched_move_task()
sched: Misc cleanups
sched/deadline: Move bandwidth accounting into {en,de}queue_dl_entity
sched: Allow sched_class::dequeue_task() to fail
sched: Unify runtime accounting across classes
sched: Use set_next_task(.first) where required
sched/fair: Cleanup pick_task_fair() vs throttle
sched/fair: Cleanup pick_task_fair()'s curr
sched/fair: Unify pick_{,next_}_task_fair()
sched: Fixup set_next_task() implementations
sched: Split up put_prev_task_balance()
sched: Rework pick_next_task()
sched: Combine the last put_prev_task() and the first set_next_task()
sched: Add put_prev_task(.next)
Pu Lehui (8):
riscv, bpf: Fix unpredictable kernel crash about RV64 struct_ops
bpf: Fix kabi breakage in struct module
riscv, bpf: Fix out-of-bounds issue when preparing trampoline image
selftests/bpf: Fix btf leak on new btf alloc failure in btf_distill
test
libbpf: Fix return zero when elf_begin failed
libbpf: Fix incorrect traversal end type ID when marking
BTF_IS_EMBEDDED
selftests/bpf: Add distilled BTF test about marking BTF_IS_EMBEDDED
selftests/bpf: Add file_read_pattern to gitignore
Randy Dunlap (1):
sched_ext: fix kernel-doc warnings
Shizhao Chen (1):
sched_ext: Add option -l in selftest runner to list all available
tests
Song Liu (8):
bpf: Charge modmem for struct_ops trampoline
bpf: Let bpf_prog_pack_free handle any pointer
bpf: Adjust argument names of arch_prepare_bpf_trampoline()
bpf: Add helpers for trampoline image management
bpf, x86: Adjust arch_prepare_bpf_trampoline return value
bpf: Add arch_bpf_trampoline_size()
bpf: Use arch_bpf_trampoline_size
x86, bpf: Use bpf_prog_pack for bpf trampoline
T.J. Mercier (1):
bpf, docs: Fix broken link to renamed bpf_iter_task_vmas.c
Tejun Heo (152):
sched: Restructure sched_class order sanity checks in sched_init()
sched: Allow sched_cgroup_fork() to fail and introduce
sched_cancel_fork()
sched: Add sched_class->reweight_task()
sched: Add sched_class->switching_to() and expose
check_class_changing/changed()
sched: Factor out cgroup weight conversion functions
sched: Factor out update_other_load_avgs() from
__update_blocked_others()
sched: Add normal_policy()
sched_ext: Add boilerplate for extensible scheduler class
sched_ext: Implement BPF extensible scheduler class
sched_ext: Add scx_simple and scx_example_qmap example schedulers
sched_ext: Add sysrq-S which disables the BPF scheduler
sched_ext: Allow BPF schedulers to disallow specific tasks from
joining SCHED_EXT
sched_ext: Print debug dump after an error exit
tools/sched_ext: Add scx_show_state.py
sched_ext: Implement scx_bpf_kick_cpu() and task preemption support
sched_ext: Add a central scheduler which makes all scheduling
decisions on one CPU
sched_ext: Make watchdog handle ops.dispatch() looping stall
sched_ext: Add task state tracking operations
sched_ext: Implement tickless support
sched_ext: Track tasks that are subjects of the in-flight SCX
operation
sched_ext: Implement sched_ext_ops.cpu_online/offline()
sched_ext: Bypass BPF scheduler while PM events are in progress
sched_ext: Implement core-sched support
sched_ext: Add vtime-ordered priority queue to dispatch_q's
sched_ext: Documentation: scheduler: Document extensible scheduler
class
sched, sched_ext: Replace scx_next_task_picked() with
sched_class->switch_class()
cpufreq_schedutil: Refactor sugov_cpu_is_busy()
sched_ext: Add cpuperf support
sched_ext: Drop tools_clean target from the top-level Makefile
sched_ext: Swap argument positions in kcalloc() call to avoid compiler
warning
sched, sched_ext: Simplify dl_prio() case handling in sched_fork()
sched_ext: Account for idle policy when setting p->scx.weight in
scx_ops_enable_task()
sched_ext: Disallow loading BPF scheduler if isolcpus= domain
isolation is in effect
sched_ext: Minor cleanups in kernel/sched/ext.h
sched, sched_ext: Open code for_balance_class_range()
sched, sched_ext: Move some declarations from kernel/sched/ext.h to
sched.h
sched_ext: Take out ->priq and ->flags from scx_dsq_node
sched_ext: Implement DSQ iterator
sched_ext/scx_qmap: Add an example usage of DSQ iterator
sched_ext: Reimplement scx_bpf_reenqueue_local()
sched_ext: Make scx_bpf_reenqueue_local() skip tasks that are being
migrated
sched: Move struct balance_callback definition upward
sched_ext: Unpin and repin rq lock from balance_scx()
sched_ext: s/SCX_RQ_BALANCING/SCX_RQ_IN_BALANCE/ and add
SCX_RQ_IN_WAKEUP
sched_ext: Allow SCX_DSQ_LOCAL_ON for direct dispatches
sched_ext/scx_qmap: Pick idle CPU for direct dispatch on !wakeup
enqueues
sched_ext: Build fix on !CONFIG_STACKTRACE[_SUPPORT]
sched_ext: Allow p->scx.disallow only while loading
sched_ext: Simplify scx_can_stop_tick() invocation in
sched_can_stop_tick()
sched_ext: Add scx_enabled() test to @start_class promotion in
put_prev_task_balance()
sched_ext: Use update_curr_common() in update_curr_scx()
sched_ext: Simplify UP support by enabling sched_class->balance() in
UP
sched_ext: Improve comment on idle_sched_class exception in
scx_task_iter_next_locked()
sched_ext: Make task_can_run_on_remote_rq() use common
task_allowed_on_cpu()
sched_ext: Fix unsafe list iteration in process_ddsp_deferred_locals()
sched_ext: Make scx_rq_online() also test cpu_active() in addition to
SCX_RQ_ONLINE
sched_ext: Improve logging around enable/disable
sched_ext: Don't use double locking to migrate tasks across CPUs
scx_central: Fix smatch checker warning
sched_ext: Add missing cfi stub for ops.tick
sched_ext: Use task_can_run_on_remote_rq() test in
dispatch_to_local_dsq()
sched_ext: Use sched_clock_cpu() instead of rq_clock_task() in
touch_core_sched()
sched_ext: Don't call put_prev_task_scx() before picking the next task
sched_ext: Replace SCX_TASK_BAL_KEEP with SCX_RQ_BAL_KEEP
sched_ext: Unify regular and core-sched pick task paths
sched_ext: Relocate functions in kernel/sched/ext.c
sched_ext: Remove switch_class_scx()
sched_ext: Remove sched_class->switch_class()
sched_ext: TASK_DEAD tasks must be switched out of SCX on ops_disable
sched_ext: TASK_DEAD tasks must be switched into SCX on ops_enable
sched: Expose css_tg()
sched: Make cpu_shares_read_u64() use tg_weight()
sched: Introduce CONFIG_GROUP_SCHED_WEIGHT
sched_ext: Add cgroup support
sched_ext: Add a cgroup scheduler which uses flattened hierarchy
sched_ext: Temporarily work around pick_task_scx() being called
without balance_scx()
sched_ext: Add missing static to scx_has_op[]
sched_ext: Add missing static to scx_dump_data
sched_ext: Rename scx_kfunc_set_sleepable to unlocked and relocate
sched_ext: Refactor consume_remote_task()
sched_ext: Make find_dsq_for_dispatch() handle SCX_DSQ_LOCAL_ON
sched_ext: Fix processs_ddsp_deferred_locals() by unifying DTL_INVALID
handling
sched_ext: Restructure dispatch_to_local_dsq()
sched_ext: Reorder args for consume_local/remote_task()
sched_ext: Move sanity check and dsq_mod_nr() into
task_unlink_from_dsq()
sched_ext: Move consume_local_task() upward
sched_ext: Replace consume_local_task() with
move_local_task_to_local_dsq()
sched_ext: Compact struct bpf_iter_scx_dsq_kern
sched_ext: Implement scx_bpf_dispatch[_vtime]_from_dsq()
scx_qmap: Implement highpri boosting
sched_ext: Synchronize bypass state changes with rq lock
sched_ext: Don't trigger ops.quiescent/runnable() on migrations
sched_ext: Fix build when !CONFIG_STACKTRACE
sched_ext: Build fix for !CONFIG_SMP
sched_ext: Add __COMPAT helpers for features added during v6.12 devel
cycle
tools/sched_ext: Receive misc updates from SCX repo
scx_flatcg: Use a user DSQ for fallback instead of SCX_DSQ_GLOBAL
sched_ext: Allow only user DSQs for scx_bpf_consume(),
scx_bpf_dsq_nr_queued() and bpf_iter_scx_dsq_new()
sched_ext: Relocate find_user_dsq()
sched_ext: Split the global DSQ per NUMA node
sched_ext: Use shorter slice while bypassing
sched_ext: Relocate check_hotplug_seq() call in scx_ops_enable()
sched_ext: Remove SCX_OPS_PREPPING
sched_ext: Initialize in bypass mode
sched_ext: Fix SCX_TASK_INIT -> SCX_TASK_READY transitions in
scx_ops_enable()
sched_ext: Enable scx_ops_init_task() separately
sched_ext: Add scx_cgroup_enabled to gate cgroup operations and fix
scx_tg_online()
sched_ext: Decouple locks in scx_ops_disable_workfn()
sched_ext: Decouple locks in scx_ops_enable()
sched_ext: Improve error reporting during loading
sched_ext: scx_cgroup_exit() may be called without successful
scx_cgroup_init()
sched/core: Make select_task_rq() take the pointer to wake_flags
instead of value
sched/core: Add ENQUEUE_RQ_SELECTED to indicate whether
->select_task_rq() was called
sched_ext, scx_qmap: Add and use SCX_ENQ_CPU_SELECTED
Revert "sched_ext: Use shorter slice while bypassing"
sched_ext: Start schedulers with consistent p->scx.slice values
sched_ext: Move scx_buildin_idle_enabled check to
scx_bpf_select_cpu_dfl()
sched_ext: bypass mode shouldn't depend on ops.select_cpu()
sched_ext: Move scx_tasks_lock handling into scx_task_iter helpers
sched_ext: Don't hold scx_tasks_lock for too long
sched_ext: Make cast_mask() inline
sched_ext: Fix enq_last_no_enq_fails selftest
sched_ext: Add a missing newline at the end of an error message
sched_ext: Update scx_show_state.py to match scx_ops_bypass_depth's
new type
sched_ext: Handle cases where pick_task_scx() is called without
preceding balance_scx()
sched_ext: ops.cpu_acquire() should be called with SCX_KF_REST
sched_ext: Factor out move_task_between_dsqs() from
scx_dispatch_from_dsq()
sched_ext: Rename CFI stubs to names that are recognized by BPF
sched_ext: Replace set_arg_maybe_null() with __nullable CFI stub tags
sched_ext: Avoid live-locking bypass mode switching
sched_ext: Enable the ops breather and eject BPF scheduler on
softlockup
sched_ext: scx_bpf_dispatch_from_dsq_set_*() are allowed from unlocked
context
sched_ext: Rename scx_bpf_dispatch[_vtime]() to
scx_bpf_dsq_insert[_vtime]()
sched_ext: Rename scx_bpf_consume() to scx_bpf_dsq_move_to_local()
sched_ext: Rename scx_bpf_dispatch[_vtime]_from_dsq*() ->
scx_bpf_dsq_move[_vtime]*()
sched_ext: Fix invalid irq restore in scx_ops_bypass()
sched_ext: Fix dsq_local_on selftest
tools/sched_ext: Receive updates from SCX repo
sched_ext: selftests/dsp_local_on: Fix sporadic failures
sched_ext: Fix incorrect autogroup migration detection
sched_ext: Implement auto local dispatching of migration disabled
tasks
sched_ext: Fix migration disabled handling in targeted dispatches
sched_ext: Fix incorrect assumption about migration disabled tasks in
task_can_run_on_remote_rq()
sched_ext: Fix pick_task_scx() picking non-queued tasks when it's
called without balance()
sched_ext: Implement SCX_OPS_ALLOW_QUEUED_WAKEUP
sched_ext: bpf_iter_scx_dsq_new() should always initialize iterator
sched_ext: Make scx_group_set_weight() always update tg->scx.weight
sched_ext, sched/core: Don't call scx_group_set_weight() prematurely
from sched_create_group()
sched_ext: Mark scx_bpf_dsq_move_set_[slice|vtime]() with KF_RCU
sched_ext: Don't kick CPUs running higher classes
sched_ext: Use SCX_TASK_READY test instead of tryget_task_struct()
during class switch
tools/sched_ext: Sync with scx repo
Thomas Gleixner (1):
sched/ext: Remove sched_fork() hack
Thorsten Blum (1):
sched_ext: Use str_enabled_disabled() helper in
update_selcpu_topology()
Tianchen Ding (1):
sched_ext: Use btf_ids to resolve task_struct
Tony Ambardar (1):
libbpf: Ensure new BTF objects inherit input endianness
Vincent Guittot (2):
sched/cpufreq: Rework schedutil governor performance estimation
sched/fair: Fix sched_can_stop_tick() for fair tasks
Vishal Chourasia (2):
sched_ext: Add __weak markers to BPF helper function decalarations
sched_ext: Fix function pointer type mismatches in BPF selftests
Wenyu Huang (1):
sched/doc: Update documentation after renames and synchronize Chinese
version
Yafang Shao (2):
bpf: Add bits iterator
selftests/bpf: Add selftest for bits iter
Yipeng Zou (1):
sched_ext: Allow dequeue_task_scx to fail
Yiwei Lin (1):
sched/fair: Remove unused 'curr' argument from pick_next_entity()
Yu Liao (2):
sched: Put task_group::idle under CONFIG_GROUP_SCHED_WEIGHT
sched: Add dummy version of sched_group_set_idle()
Yury Norov (1):
cpumask: introduce assign_cpu() macro
Zhang Qiao (3):
sched_ext: Remove redundant p->nr_cpus_allowed checker
sched/ext: Fix unmatch trailing comment of CONFIG_EXT_GROUP_SCHED
sched/ext: Use tg_cgroup() to elieminate duplicate code
Zhao Mengmeng (1):
sched_ext: Replace scx_next_task_picked() with switch_class() in
comment
Zicheng Qu (17):
sched: Fix kabi for reweight_task in struct sched_class
sched/syscalls: Fix kabi for EXPORT_SYMBOL moved from core.c to
syscalls.c
sched: Fix kabi for switching_to in struct sched_class
sched/fair: Fix kabi for check_preempt_curr and wakeup_preempt in
struct sched_class
sched: Fix kabi for dequeue_task in struct sched_class
sched_ext: Fix kabi for scx in struct task_struct
sched_ext: Fix kabi for switch_class in struct sched_class
sched: Fix kabi for exec_max in struct sched_statistics
sched_ext: Fix kabi for balance in struct sched_class
sched_ext: Fix kabi for header in kernel/sched/sched.h
sched: Fix kabi pick_task in struct sched_class
sched: Fix kabi for put_prev_task in struct sched_class
sched_ext: Fix kabi for scx_flags and scx_weight in struct task_group
sched: Fix kabi for int idle in struct task_group
sched: Add __setscheduler_class() for sched_ext
genirq: Fix kabi for kstat_irqs in struct irq_desc
sched_ext: Enable and disable sched_ext configs
Zqiang (1):
sched_ext: Fix unsafe locking in the scx_dump_state()
guanjing (1):
sched_ext: fix application of sizeof to pointer
Documentation/bpf/bpf_iterators.rst | 2 +-
Documentation/bpf/kfuncs.rst | 14 +-
Documentation/scheduler/index.rst | 1 +
Documentation/scheduler/sched-design-CFS.rst | 8 +-
Documentation/scheduler/sched-ext.rst | 325 +
.../zh_CN/scheduler/sched-design-CFS.rst | 8 +-
MAINTAINERS | 16 +-
Makefile | 4 +-
arch/arm64/configs/openeuler_defconfig | 3 +
arch/arm64/kernel/bpf-rvi.c | 4 +-
arch/arm64/net/bpf_jit_comp.c | 55 +-
arch/mips/dec/setup.c | 2 +-
arch/parisc/kernel/smp.c | 2 +-
arch/powerpc/kvm/book3s_hv_rm_xics.c | 2 +-
arch/riscv/include/asm/cfi.h | 3 +-
arch/riscv/kernel/cfi.c | 2 +-
arch/riscv/net/bpf_jit_comp64.c | 48 +-
arch/s390/net/bpf_jit_comp.c | 59 +-
arch/x86/configs/openeuler_defconfig | 2 +
arch/x86/include/asm/cfi.h | 126 +-
arch/x86/kernel/alternative.c | 87 +-
arch/x86/kernel/cfi.c | 4 +-
arch/x86/net/bpf_jit_comp.c | 261 +-
block/blk-cgroup.c | 4 +-
drivers/hid/bpf/hid_bpf_dispatch.c | 12 +-
drivers/tty/sysrq.c | 1 +
fs/proc/stat.c | 4 +-
include/asm-generic/Kbuild | 1 +
include/asm-generic/cfi.h | 5 +
include/asm-generic/vmlinux.lds.h | 1 +
include/linux/bitops.h | 2 +
include/linux/bpf.h | 130 +-
include/linux/bpf_mem_alloc.h | 3 +
include/linux/bpf_verifier.h | 21 +-
include/linux/btf.h | 105 +
include/linux/btf_ids.h | 21 +-
include/linux/cfi.h | 12 +
include/linux/cgroup.h | 14 +-
include/linux/cleanup.h | 42 +-
include/linux/cpumask.h | 41 +-
include/linux/energy_model.h | 1 -
include/linux/file.h | 20 +
include/linux/filter.h | 2 +-
include/linux/irqdesc.h | 17 +-
include/linux/kernel_stat.h | 8 +
include/linux/module.h | 8 +-
include/linux/sched.h | 8 +-
include/linux/sched/ext.h | 216 +
include/linux/sched/task.h | 8 +-
include/trace/events/sched_ext.h | 32 +
include/uapi/linux/bpf.h | 16 +-
include/uapi/linux/sched.h | 1 +
init/Kconfig | 10 +
init/init_task.c | 12 +
kernel/Kconfig.preempt | 27 +-
kernel/bpf-rvi/common_kfuncs.c | 4 +-
kernel/bpf/Makefile | 8 +-
kernel/bpf/bpf_iter.c | 12 +-
kernel/bpf/bpf_struct_ops.c | 745 +-
kernel/bpf/bpf_struct_ops_types.h | 12 -
kernel/bpf/btf.c | 431 +-
kernel/bpf/cgroup_iter.c | 65 +-
kernel/bpf/core.c | 76 +-
kernel/bpf/cpumask.c | 18 +-
kernel/bpf/dispatcher.c | 7 +-
kernel/bpf/helpers.c | 202 +-
kernel/bpf/map_iter.c | 10 +-
kernel/bpf/memalloc.c | 14 +-
kernel/bpf/syscall.c | 12 +-
kernel/bpf/task_iter.c | 242 +-
kernel/bpf/trampoline.c | 99 +-
kernel/bpf/verifier.c | 317 +-
kernel/cgroup/cgroup.c | 18 +-
kernel/cgroup/cpuset.c | 4 +-
kernel/cgroup/rstat.c | 13 +-
kernel/events/core.c | 2 +-
kernel/fork.c | 17 +-
kernel/irq/Kconfig | 4 +
kernel/irq/internals.h | 2 +-
kernel/irq/irqdesc.c | 144 +-
kernel/irq/proc.c | 5 +-
kernel/module/main.c | 5 +-
kernel/sched/autogroup.c | 4 +-
kernel/sched/bpf_sched.c | 8 +-
kernel/sched/build_policy.c | 13 +
kernel/sched/core.c | 2492 +-----
kernel/sched/cpuacct.c | 4 +-
kernel/sched/cpufreq_schedutil.c | 83 +-
kernel/sched/deadline.c | 175 +-
kernel/sched/debug.c | 3 +
kernel/sched/ext.c | 7155 +++++++++++++++++
kernel/sched/ext.h | 119 +
kernel/sched/ext_idle.c | 755 ++
kernel/sched/ext_idle.h | 39 +
kernel/sched/fair.c | 306 +-
kernel/sched/idle.c | 31 +-
kernel/sched/rt.c | 40 +-
kernel/sched/sched.h | 473 +-
kernel/sched/stop_task.c | 35 +-
kernel/sched/syscalls.c | 1713 ++++
kernel/trace/bpf_trace.c | 12 +-
kernel/trace/trace_probe.c | 2 -
kernel/watchdog.c | 223 +-
lib/Kconfig.debug | 14 +
lib/dump_stack.c | 1 +
lib/rhashtable.c | 12 +-
net/bpf/bpf_dummy_struct_ops.c | 72 +-
net/bpf/test_run.c | 30 +-
net/core/filter.c | 33 +-
net/core/xdp.c | 10 +-
net/ipv4/bpf_tcp_ca.c | 93 +-
net/ipv4/fou_bpf.c | 10 +-
net/ipv4/tcp_bbr.c | 4 +-
net/ipv4/tcp_cong.c | 6 +-
net/ipv4/tcp_cubic.c | 4 +-
net/ipv4/tcp_dctcp.c | 4 +-
net/netfilter/nf_conntrack_bpf.c | 10 +-
net/netfilter/nf_nat_bpf.c | 10 +-
net/socket.c | 8 +-
net/xfrm/xfrm_interface_bpf.c | 10 +-
scripts/Makefile.btf | 33 +
scripts/Makefile.modfinal | 2 +-
scripts/gdb/linux/interrupts.py | 6 +-
scripts/pahole-flags.sh | 30 -
tools/Makefile | 10 +-
.../bpf/bpftool/Documentation/bpftool-gen.rst | 58 +-
tools/bpf/bpftool/gen.c | 253 +-
tools/bpf/resolve_btfids/main.c | 8 +
tools/include/linux/bitops.h | 2 +
tools/include/uapi/linux/bpf.h | 14 +-
tools/include/uapi/linux/sched.h | 1 +
tools/lib/bpf/Build | 2 +-
tools/lib/bpf/bpf.c | 4 +-
tools/lib/bpf/bpf.h | 4 +-
tools/lib/bpf/btf.c | 704 +-
tools/lib/bpf/btf.h | 36 +
tools/lib/bpf/btf_iter.c | 177 +
tools/lib/bpf/btf_relocate.c | 519 ++
tools/lib/bpf/libbpf.c | 97 +-
tools/lib/bpf/libbpf.map | 4 +-
tools/lib/bpf/libbpf_internal.h | 29 +-
tools/lib/bpf/libbpf_probes.c | 1 +
tools/lib/bpf/linker.c | 58 +-
tools/perf/util/probe-finder.c | 4 +-
tools/sched_ext/.gitignore | 2 +
tools/sched_ext/Makefile | 246 +
tools/sched_ext/README.md | 270 +
.../sched_ext/include/bpf-compat/gnu/stubs.h | 11 +
tools/sched_ext/include/scx/common.bpf.h | 647 ++
tools/sched_ext/include/scx/common.h | 81 +
tools/sched_ext/include/scx/compat.bpf.h | 143 +
tools/sched_ext/include/scx/compat.h | 187 +
.../sched_ext/include/scx/enums.autogen.bpf.h | 105 +
tools/sched_ext/include/scx/enums.autogen.h | 41 +
tools/sched_ext/include/scx/enums.bpf.h | 12 +
tools/sched_ext/include/scx/enums.h | 27 +
tools/sched_ext/include/scx/user_exit_info.h | 118 +
tools/sched_ext/scx_central.bpf.c | 356 +
tools/sched_ext/scx_central.c | 145 +
tools/sched_ext/scx_flatcg.bpf.c | 954 +++
tools/sched_ext/scx_flatcg.c | 234 +
tools/sched_ext/scx_flatcg.h | 51 +
tools/sched_ext/scx_qmap.bpf.c | 827 ++
tools/sched_ext/scx_qmap.c | 155 +
tools/sched_ext/scx_show_state.py | 42 +
tools/sched_ext/scx_simple.bpf.c | 151 +
tools/sched_ext/scx_simple.c | 107 +
tools/testing/selftests/Makefile | 9 +-
tools/testing/selftests/bpf/.gitignore | 1 +
.../testing/selftests/bpf/bpf_experimental.h | 96 +
.../selftests/bpf/bpf_testmod/bpf_testmod.c | 160 +-
.../selftests/bpf/bpf_testmod/bpf_testmod.h | 61 +
.../bpf/bpf_testmod/bpf_testmod_kfunc.h | 9 +
.../selftests/bpf/prog_tests/bpf_iter.c | 44 +-
.../selftests/bpf/prog_tests/btf_distill.c | 692 ++
.../selftests/bpf/prog_tests/cgroup_iter.c | 33 +
.../bpf/prog_tests/global_func_dead_code.c | 60 +
.../testing/selftests/bpf/prog_tests/iters.c | 209 +
.../selftests/bpf/prog_tests/kfunc_call.c | 1 +
.../selftests/bpf/prog_tests/rcu_read_lock.c | 6 +
.../selftests/bpf/prog_tests/spin_lock.c | 2 +
.../prog_tests/test_struct_ops_maybe_null.c | 46 +
.../bpf/prog_tests/test_struct_ops_module.c | 86 +
.../prog_tests/test_struct_ops_multi_pages.c | 30 +
.../testing/selftests/bpf/prog_tests/timer.c | 4 +
.../selftests/bpf/prog_tests/verifier.c | 4 +
...f_iter_task_vma.c => bpf_iter_task_vmas.c} | 0
.../{bpf_iter_task.c => bpf_iter_tasks.c} | 0
.../bpf/progs/freplace_dead_global_func.c | 11 +
tools/testing/selftests/bpf/progs/iters_css.c | 72 +
.../selftests/bpf/progs/iters_css_task.c | 102 +
.../testing/selftests/bpf/progs/iters_task.c | 41 +
.../selftests/bpf/progs/iters_task_failure.c | 105 +
.../selftests/bpf/progs/iters_task_vma.c | 43 +
.../selftests/bpf/progs/iters_testmod_seq.c | 50 +
.../selftests/bpf/progs/kfunc_call_test.c | 37 +
.../selftests/bpf/progs/rcu_read_lock.c | 120 +
.../bpf/progs/struct_ops_maybe_null.c | 29 +
.../bpf/progs/struct_ops_maybe_null_fail.c | 24 +
.../selftests/bpf/progs/struct_ops_module.c | 37 +
.../bpf/progs/struct_ops_multi_pages.c | 102 +
.../selftests/bpf/progs/test_global_func12.c | 4 +-
.../selftests/bpf/progs/test_spin_lock.c | 65 +
.../selftests/bpf/progs/test_spin_lock_fail.c | 44 +
tools/testing/selftests/bpf/progs/timer.c | 63 +-
.../selftests/bpf/progs/verifier_bits_iter.c | 232 +
.../bpf/progs/verifier_global_subprogs.c | 101 +
.../selftests/bpf/progs/verifier_spin_lock.c | 2 +-
.../bpf/progs/verifier_subprog_precision.c | 4 +-
tools/testing/selftests/bpf/test_loader.c | 10 +-
tools/testing/selftests/bpf/test_maps.c | 18 +-
tools/testing/selftests/bpf/test_maps.h | 5 +
tools/testing/selftests/sched_ext/.gitignore | 6 +
tools/testing/selftests/sched_ext/Makefile | 211 +
tools/testing/selftests/sched_ext/config | 9 +
.../selftests/sched_ext/create_dsq.bpf.c | 58 +
.../testing/selftests/sched_ext/create_dsq.c | 57 +
.../sched_ext/ddsp_bogus_dsq_fail.bpf.c | 42 +
.../selftests/sched_ext/ddsp_bogus_dsq_fail.c | 60 +
.../sched_ext/ddsp_vtimelocal_fail.bpf.c | 39 +
.../sched_ext/ddsp_vtimelocal_fail.c | 59 +
.../selftests/sched_ext/dsp_local_on.bpf.c | 68 +
.../selftests/sched_ext/dsp_local_on.c | 60 +
.../sched_ext/enq_last_no_enq_fails.bpf.c | 29 +
.../sched_ext/enq_last_no_enq_fails.c | 64 +
.../sched_ext/enq_select_cpu_fails.bpf.c | 43 +
.../sched_ext/enq_select_cpu_fails.c | 61 +
tools/testing/selftests/sched_ext/exit.bpf.c | 86 +
tools/testing/selftests/sched_ext/exit.c | 64 +
tools/testing/selftests/sched_ext/exit_test.h | 20 +
.../testing/selftests/sched_ext/hotplug.bpf.c | 61 +
tools/testing/selftests/sched_ext/hotplug.c | 170 +
.../selftests/sched_ext/hotplug_test.h | 15 +
.../sched_ext/init_enable_count.bpf.c | 53 +
.../selftests/sched_ext/init_enable_count.c | 157 +
.../testing/selftests/sched_ext/maximal.bpf.c | 166 +
tools/testing/selftests/sched_ext/maximal.c | 54 +
.../selftests/sched_ext/maybe_null.bpf.c | 36 +
.../testing/selftests/sched_ext/maybe_null.c | 49 +
.../sched_ext/maybe_null_fail_dsp.bpf.c | 25 +
.../sched_ext/maybe_null_fail_yld.bpf.c | 28 +
.../testing/selftests/sched_ext/minimal.bpf.c | 21 +
tools/testing/selftests/sched_ext/minimal.c | 58 +
.../selftests/sched_ext/prog_run.bpf.c | 33 +
tools/testing/selftests/sched_ext/prog_run.c | 78 +
.../testing/selftests/sched_ext/reload_loop.c | 74 +
tools/testing/selftests/sched_ext/runner.c | 212 +
tools/testing/selftests/sched_ext/scx_test.h | 131 +
.../selftests/sched_ext/select_cpu_dfl.bpf.c | 40 +
.../selftests/sched_ext/select_cpu_dfl.c | 75 +
.../sched_ext/select_cpu_dfl_nodispatch.bpf.c | 89 +
.../sched_ext/select_cpu_dfl_nodispatch.c | 75 +
.../sched_ext/select_cpu_dispatch.bpf.c | 41 +
.../selftests/sched_ext/select_cpu_dispatch.c | 73 +
.../select_cpu_dispatch_bad_dsq.bpf.c | 37 +
.../sched_ext/select_cpu_dispatch_bad_dsq.c | 59 +
.../select_cpu_dispatch_dbl_dsp.bpf.c | 38 +
.../sched_ext/select_cpu_dispatch_dbl_dsp.c | 59 +
.../sched_ext/select_cpu_vtime.bpf.c | 92 +
.../selftests/sched_ext/select_cpu_vtime.c | 62 +
.../selftests/sched_ext/test_example.c | 49 +
tools/testing/selftests/sched_ext/util.c | 71 +
tools/testing/selftests/sched_ext/util.h | 13 +
263 files changed, 27732 insertions(+), 3787 deletions(-)
create mode 100644 Documentation/scheduler/sched-ext.rst
create mode 100644 include/asm-generic/cfi.h
create mode 100644 include/linux/sched/ext.h
create mode 100644 include/trace/events/sched_ext.h
delete mode 100644 kernel/bpf/bpf_struct_ops_types.h
create mode 100644 kernel/sched/ext.c
create mode 100644 kernel/sched/ext.h
create mode 100644 kernel/sched/ext_idle.c
create mode 100644 kernel/sched/ext_idle.h
create mode 100644 kernel/sched/syscalls.c
create mode 100644 scripts/Makefile.btf
delete mode 100755 scripts/pahole-flags.sh
create mode 100644 tools/lib/bpf/btf_iter.c
create mode 100644 tools/lib/bpf/btf_relocate.c
create mode 100644 tools/sched_ext/.gitignore
create mode 100644 tools/sched_ext/Makefile
create mode 100644 tools/sched_ext/README.md
create mode 100644 tools/sched_ext/include/bpf-compat/gnu/stubs.h
create mode 100644 tools/sched_ext/include/scx/common.bpf.h
create mode 100644 tools/sched_ext/include/scx/common.h
create mode 100644 tools/sched_ext/include/scx/compat.bpf.h
create mode 100644 tools/sched_ext/include/scx/compat.h
create mode 100644 tools/sched_ext/include/scx/enums.autogen.bpf.h
create mode 100644 tools/sched_ext/include/scx/enums.autogen.h
create mode 100644 tools/sched_ext/include/scx/enums.bpf.h
create mode 100644 tools/sched_ext/include/scx/enums.h
create mode 100644 tools/sched_ext/include/scx/user_exit_info.h
create mode 100644 tools/sched_ext/scx_central.bpf.c
create mode 100644 tools/sched_ext/scx_central.c
create mode 100644 tools/sched_ext/scx_flatcg.bpf.c
create mode 100644 tools/sched_ext/scx_flatcg.c
create mode 100644 tools/sched_ext/scx_flatcg.h
create mode 100644 tools/sched_ext/scx_qmap.bpf.c
create mode 100644 tools/sched_ext/scx_qmap.c
create mode 100644 tools/sched_ext/scx_show_state.py
create mode 100644 tools/sched_ext/scx_simple.bpf.c
create mode 100644 tools/sched_ext/scx_simple.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/btf_distill.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/global_func_dead_code.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/test_struct_ops_maybe_null.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/test_struct_ops_module.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/test_struct_ops_multi_pages.c
rename tools/testing/selftests/bpf/progs/{bpf_iter_task_vma.c => bpf_iter_task_vmas.c} (100%)
rename tools/testing/selftests/bpf/progs/{bpf_iter_task.c => bpf_iter_tasks.c} (100%)
create mode 100644 tools/testing/selftests/bpf/progs/freplace_dead_global_func.c
create mode 100644 tools/testing/selftests/bpf/progs/iters_css.c
create mode 100644 tools/testing/selftests/bpf/progs/iters_css_task.c
create mode 100644 tools/testing/selftests/bpf/progs/iters_task.c
create mode 100644 tools/testing/selftests/bpf/progs/iters_task_failure.c
create mode 100644 tools/testing/selftests/bpf/progs/iters_task_vma.c
create mode 100644 tools/testing/selftests/bpf/progs/struct_ops_maybe_null.c
create mode 100644 tools/testing/selftests/bpf/progs/struct_ops_maybe_null_fail.c
create mode 100644 tools/testing/selftests/bpf/progs/struct_ops_module.c
create mode 100644 tools/testing/selftests/bpf/progs/struct_ops_multi_pages.c
create mode 100644 tools/testing/selftests/bpf/progs/verifier_bits_iter.c
create mode 100644 tools/testing/selftests/bpf/progs/verifier_global_subprogs.c
create mode 100644 tools/testing/selftests/sched_ext/.gitignore
create mode 100644 tools/testing/selftests/sched_ext/Makefile
create mode 100644 tools/testing/selftests/sched_ext/config
create mode 100644 tools/testing/selftests/sched_ext/create_dsq.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/create_dsq.c
create mode 100644 tools/testing/selftests/sched_ext/ddsp_bogus_dsq_fail.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/ddsp_bogus_dsq_fail.c
create mode 100644 tools/testing/selftests/sched_ext/ddsp_vtimelocal_fail.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/ddsp_vtimelocal_fail.c
create mode 100644 tools/testing/selftests/sched_ext/dsp_local_on.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/dsp_local_on.c
create mode 100644 tools/testing/selftests/sched_ext/enq_last_no_enq_fails.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/enq_last_no_enq_fails.c
create mode 100644 tools/testing/selftests/sched_ext/enq_select_cpu_fails.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/enq_select_cpu_fails.c
create mode 100644 tools/testing/selftests/sched_ext/exit.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/exit.c
create mode 100644 tools/testing/selftests/sched_ext/exit_test.h
create mode 100644 tools/testing/selftests/sched_ext/hotplug.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/hotplug.c
create mode 100644 tools/testing/selftests/sched_ext/hotplug_test.h
create mode 100644 tools/testing/selftests/sched_ext/init_enable_count.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/init_enable_count.c
create mode 100644 tools/testing/selftests/sched_ext/maximal.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/maximal.c
create mode 100644 tools/testing/selftests/sched_ext/maybe_null.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/maybe_null.c
create mode 100644 tools/testing/selftests/sched_ext/maybe_null_fail_dsp.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/maybe_null_fail_yld.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/minimal.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/minimal.c
create mode 100644 tools/testing/selftests/sched_ext/prog_run.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/prog_run.c
create mode 100644 tools/testing/selftests/sched_ext/reload_loop.c
create mode 100644 tools/testing/selftests/sched_ext/runner.c
create mode 100644 tools/testing/selftests/sched_ext/scx_test.h
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dfl.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dfl.c
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dfl_nodispatch.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dfl_nodispatch.c
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dispatch.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dispatch.c
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dispatch_bad_dsq.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dispatch_bad_dsq.c
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dispatch_dbl_dsp.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dispatch_dbl_dsp.c
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_vtime.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/select_cpu_vtime.c
create mode 100644 tools/testing/selftests/sched_ext/test_example.c
create mode 100644 tools/testing/selftests/sched_ext/util.c
create mode 100644 tools/testing/selftests/sched_ext/util.h
--
2.34.1
2
452
03 Apr '26
From: Daniel Hodges <git(a)danielhodges.dev>
stable inclusion
from stable-v6.6.130
commit 3c5c818c78b03a1725f3dcd566865c77b48dd3a6
category: bugfix
bugzilla: https://atomgit.com/src-openeuler/kernel/issues/13984
CVE: CVE-2026-23281
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
[ Upstream commit 03cc8f90d0537fcd4985c3319b4fafbf2e3fb1f0 ]
The lbs_free_adapter() function uses timer_delete() (non-synchronous)
for both command_timer and tx_lockup_timer before the structure is
freed. This is incorrect because timer_delete() does not wait for
any running timer callback to complete.
If a timer callback is executing when lbs_free_adapter() is called,
the callback will access freed memory since lbs_cfg_free() frees the
containing structure immediately after lbs_free_adapter() returns.
Both timer callbacks (lbs_cmd_timeout_handler and lbs_tx_lockup_handler)
access priv->driver_lock, priv->cur_cmd, priv->dev, and other fields,
which would all be use-after-free violations.
Use timer_delete_sync() instead to ensure any running timer callback
has completed before returning.
This bug was introduced in commit 8f641d93c38a ("libertas: detect TX
lockups and reset hardware") where del_timer() was used instead of
del_timer_sync() in the cleanup path. The command_timer has had the
same issue since the driver was first written.
Fixes: 8f641d93c38a ("libertas: detect TX lockups and reset hardware")
Fixes: 954ee164f4f4 ("[PATCH] libertas: reorganize and simplify init sequence")
Cc: stable(a)vger.kernel.org
Signed-off-by: Daniel Hodges <git(a)danielhodges.dev>
Link: https://patch.msgid.link/20260206195356.15647-1-git@danielhodges.dev
Signed-off-by: Johannes Berg <johannes.berg(a)intel.com>
[ del_timer() => timer_delete_sync() ]
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Wupeng Ma <mawupeng1(a)huawei.com>
---
drivers/net/wireless/marvell/libertas/main.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/marvell/libertas/main.c b/drivers/net/wireless/marvell/libertas/main.c
index 78e8b5aecec0e..91b9501c6d8cb 100644
--- a/drivers/net/wireless/marvell/libertas/main.c
+++ b/drivers/net/wireless/marvell/libertas/main.c
@@ -881,8 +881,8 @@ static void lbs_free_adapter(struct lbs_private *priv)
{
lbs_free_cmd_buffer(priv);
kfifo_free(&priv->event_fifo);
- del_timer(&priv->command_timer);
- del_timer(&priv->tx_lockup_timer);
+ timer_delete_sync(&priv->command_timer);
+ timer_delete_sync(&priv->tx_lockup_timer);
del_timer(&priv->auto_deepsleep_timer);
}
--
2.43.0
2
1