日期范围
134
全部讨论数
Bugfix重要分析 success作者:Tao Cui2026/08/15 11:313 封邮件

[PATCH] sched_ext: don't rehome a dead task in scx_cgroup_task_migrated

Tao Cui 提交一条 sched_ext 单文件补丁,希望在 scx_cgroup_task_migrated() 里跳过 SCX_TASK_DEAD 的任务,防止 scx_rehome_task() 误操作并泄漏 BPF per-task 资源。Tejun Heo 指出 MIGRATED 回调全程在 cgroup_attach_lock write-held 下执行,集合内任务根本无法进入 exit 路径,DEAD 只可能在没有 threadgroup rwsem 的 scx_task_iter 路径里出现,窗口不存在。作者在第 3 封回复中认错,patch 预计不会合并。讨论同时提醒:...

lore
Bugfix分析 success作者:Tao Cui2026/08/15 08:013 封邮件

[PATCH] sched_ext: don't BUG_ON a destroyed DSQ in process_deferred_reenq_users

scx_bpf_dsq_reenq() 排出的延迟 reenq 可能在运行前被 destroy_dsq() 销毁,导致 process_deferred_reenq_users() 走到 BUG_ON。v1 把 BUG_ON 换成 if (builtin) continue;Tejun 指出范围过宽,v2 改为只对 SCX_DSQ_INVALID 跳过,其它 builtin 状态仍 BUG_ON。

lore
Bugfix重要分析 success作者:Michal Blaszczyk2026/08/15 06:342 封邮件

[PATCH] selftests/sched_ext: Fix flaky ddsp failure tests on busy systems

本补丁修复 selftests/sched_ext 中 ddsp_bogus_dsq_fail 与 ddsp_vtimelocal_fail 在繁忙系统上跳过核心断言的 flaky 问题。原代码把非法 dispatch 包在 if (cpu >= 0) 里,一旦 scx_bpf_pick_idle_cpu() 返回负错误码就直接 return prev_cpu,导致测试空跑却报通过。补丁改为失败时兜底到 prev_cpu 并无条件执行非法 dispatch。Tejun Heo 已应用到 sched_ext/for-7.3,并把描述中的 "returns -1" 更正为 "returns a n...

lore
Bugfix重要分析 success作者:Cheng-Yang Chou2026/08/15 06:302 封邮件

[PATCH sched_ext/for-7.3] selftests/sched_ext: Make numa idle validation race-free

selftests/sched_ext/numa.bpf.c 之前断言被选中的 idle CPU 仍在 idle cpumask 中,但 pick_idle_cpu_node 与 pick_any_cpu_node 路径都存在窗口期,导致 race。补丁改用本地 CPU 的不变式:如果当前 CPU 跑在非 idle task context 中,则其自身不应仍在节点 idle cpumask 里,与 allowed_cpus 修复同思路,已被 Tejun Heo 合入 sched_ext/for-7.3。

lore
Bugfix重要分析 success作者:Tejun Heo2026/08/15 05:032 封邮件

[PATCH sched_ext/for-7.2-fixes] sched_ext: Fix scx_bpf_dsq_reenq___compat kfunc extern prototype

该 patch 修复 compat.bpf.h 中 scx_bpf_dsq_reenq___compat extern 多写了一个被 KF_IMPLICIT_ARGS 隐式省略的 bpf_prog_aux 参数,导致 libbpf 在所有内核上都无法 resolve 该 weak extern,__COMPAT_has_generic_reenq() 永远返回 false,scx_qmap 等通用 reenq 用户被误判为内核过旧。同时订正过时的 v6.20 注释为 v7.1,并加上 v7.1+ stable 后向移植标签。patch 本意发往 for-7.2-fixes,最终被 Tejun ...

lore
Bugfix重要分析 success作者:Qiurong Fang2026/08/15 03:502 封邮件

[PATCH] sched_ext: Fix scx_bpf_dsq_move_to_local___v2 compat detection

compat.bpf.h 中 scx_bpf_dsq_move_to_local___v2 extern 漏写 ___compat 后缀,导致 libbpf 解析 BTF 时把它当成无 flavor 的 scx_bpf_dsq_move_to_local,bpf_ksym_exists() 永远 false,宏静默回退到 ___v1 并丢掉 enq_flags(如 SCX_ENQ_IMMED)。补丁补齐 ___v2___compat 双后缀命名以匹配同文件其他版本化 extern。Tejun Heo 已将其合入 sched_ext/for-7.2-fixes,并标注 stable v7.1+ ...

lore
Bugfix重要分析 success作者:Qiurong Fang2026/08/15 03:212 封邮件

[PATCH] sched_ext: Fix exit_task leak on fork failure during enable

sched_ext 拆分 scx_ops_init_task 后,scx_fork 用 scx_init_task_enabled 做 gate,但 scx_cancel_fork 仍以 scx_enabled() 为门禁,导致 enable 窗口内 fork 失败的任务跑过 init_task 却永远拿不到 exit_task。本 patch 把 gate 对齐为 scx_init_task_enabled,修复 init/exit 配对并被 Cc 到 stable v6.12+。

lore
Bugfix重要分析 success作者:Tejun Heo2026/08/15 02:523 封邮件

[PATCH sched_ext/for-7.3] sched_ext: Set up ops.sub_ecaps_updated() dispatch context on the executing CPU

Tejun Heo 修复 scx_process_sync_ecaps() 在 core scheduling 下使用错误 dsp_ctx 的 bug。改动把 dispatch 上下文从目标 CPU 的 pcpu 改为执行 CPU 的 pcpu,与 scx_dispatch_sched() 对齐,确保 sub_ecaps_updated() 的 kfunc 在 sibling rq 路径下拿到正确的 rq 和 dispatch buffer。补丁已被 Applied 到 sched_ext/for-7.3 分支。

lore
其它重要分析 success作者:Tejun Heo2026/08/14 01:125 封邮件

[PATCHSET sched_ext/for-7.3-arena-args] sched_ext: Convert arena-pointer interfaces to __arena arguments

Tejun Heo 借助 bpf-next 刚落地的 kfunc/struct_ops __arena 参数支持,把 sched_ext cid-form 的 set_cmask、sub_caps_updated、scx_bpf_sub_grant/revoke/caps 与 scx_bpf_cid_override 等跨边界接口统一迁到 __arena 参数,删除手工 scx_kaddr_to_arena() rebase 与 BPF 端 (void *)(long) cast。3 个 patch,+148/-148 行,覆盖 11 个文件;同时把 cid_override 的 __sz 拆...

lore
讨论重要分析 success作者:David Carlier2026/08/13 12:591 封邮件

[BUG] sched_ext: ops.sub_ecaps_updated() dispatch context is set up on the wrong CPU under core scheduling

David Carlier 报告 sched_ext 在 core scheduling 下,scx_process_sync_ecaps() 把 dispatch context 错绑到目标 CPU 的 pcpu,导致执行 sibling CPU 上的 dsp_ctx.rq 为 NULL。该 bug 与 commit 3dd52416e44a 同类但被遗漏:若 ops.sub_ecaps_updated() 回调里调用 scx_bpf_dsq_move_to_local(),会走进 cpu_of(NULL) 触发 oops。作者建议改用 this_cpu_ptr(pcpu->sch->pcp...

lore
Bugfix分析 success作者:Qiurong Fang2026/08/13 03:203 封邮件

[PATCH] sched_ext: Gate cid kfuncs behind the SCX struct_ops check

scx_bpf_cid_to_cpu/cpu_to_cid/cid_topo 三个 kfunc 归在 scx_kfunc_ids_cid 里,但 scx_kfunc_context_filter() 漏检这个集合,导致任意 struct_ops 程序(包括 TCP 拥塞控制)都能调用它们。补丁把 scx_kfunc_ids_cid 加入 filter 的已知集合,与 in_any / in_idle 并列处理。Tejun 已 apply 到 sched_ext/for-7.3。

lore
其它分析 success作者:Ziyang Men2026/08/12 15:0315 封邮件

[PATCH v2 0/4] selftests: shared lib.bpf.mk for building BPF progs and skeletons

Ziyang Men 提出的4 patch 系列把 selftests/{bpf,sched_ext,hid}/ 中重复的 libbpf+bpftool+vmlinux.h+skeleton 工具链抽到共享片段 tools/testing/selftests/lib.bpf.mk,并新增 selftests/cgroup/test_memcg_stat_cross_cpu 验证 memcg BPF kfunc 与 rstat flush 在跨 CPU 场景下的正确性。维护者主要在 EXTRA_CFLAGS/OPT_FLAGS 透传、cgroup 测试选址与 bot CI 上提出反馈,作者承诺 ...

lore
Bugfix分析 success作者:luoliang2026/08/11 03:512 封邮件

[PATCH] selftests/sched_ext: Check skeleton open failure in exit test

sched_ext selftest 中 exit.c 没有像其它兄弟 selftest 那样在 exit__open() 返回 NULL 时立刻失败,导致下一行 SCX_ENUM_INIT 通过 skel->rodata 解引用空指针。本 patch 增加一行 SCX_FAIL_IF(!skel, "Failed to open") 与其他 selftest 风格对齐,已被 Tejun Heo 合入 sched_ext/for-7.3。

lore
其它重要分析 success作者:Andrea Righi2026/08/11 00:0620 封邮件

[PATCHSET v11 sched_ext/for-7.3] sched: Make proxy execution compatible with sched_ext

v11 系列通过新增 SCX_OPS_ENQ_BLOCKED 与 SCX_ENQ_BLOCKED 让 BPF 调度器可选地接收被阻塞的 proxy donor,并把 sched_ext 的回调、kfunc 视角由 rq->curr 拆分为 rq->donor,从而解开 SCHED_PROXY_EXEC 与 SCHED_CLASS_EXT 的构建时互斥。同时给出 kselftest 与 scx_qmap -X 演示选项,并修复 NOHZ 带宽与 running/stopping 配对的若干边角问题。

lore
Bugfix分析 success作者:Cui Jian2026/08/07 20:573 封邮件

[PATCH] sched_ext: Fix NULL dereference in find_parent_sched()

Cui Jian 提交补丁为 find_parent_sched() 增加 parent 的 NULL 检查,声称 BPF 传入 cgroup v1 ID 可触发内核崩溃。Zhan Xusheng 逐层论证该路径不可达:cgroup_get_from_id() 只在 v2 默认层级 kernfs root 查找,且 cgroup_is_descendant() 会因 root 不同而拒绝,v1 cgroup 从不设置 scx_sched。作者接受意见后重发,代码完全不变,仅把标题从 Fix NULL dereference 改为 Add NULL check、changelog 改为防御性加固...

lore
其它重要分析 success作者:Andrea Righi2026/08/06 17:0732 封邮件

[PATCHSET v10 sched_ext/for-7.3] sched: Make proxy execution compatible with sched_ext

Andrea Righi 提交的 v10 系列把 SCHED_PROXY_EXEC 与 SCHED_CLASS_EXT 由编译期互斥改为可同时开启。核心做法是引入 SCX_OPS_ENQ_BLOCKED capability,把 blocked donor 的入队决策交给 BPF 调度器,并在 rq->donor 与 rq->curr 之间严格区分调度上下文与执行上下文。Tejun Heo 关注代码移动与 PI 跨类切换等细节,sashiko-bot 指出 reject DSQ 锁路径与文档不一致。

lore
Bugfix重要分析 success作者:Tejun Heo2026/08/04 05:3717 封邮件

[PATCHSET v2 sched_ext/for-7.3] sched_ext: Bandwidth-limited rescue execution for stranded tasks

本系列为 sched_ext 子调度器新增 SCX_ENQ_RESCUE 救援执行路径:当任务可运行 cpu 全部落在调度器未持有的 cid 上时,kernel 在每 CPU 限定的带宽(默认 2% CPU 时间)下直接驱动任务,并按救援消耗驱逐真正过载的 sub-sched。同时重构 slice/dsq_vtime 写入协议,引入 SCX_TASK_PROTECTED 防止 kernel 授权的 slice 被 BPF 改写,并修复内部 enq_flags 校验、pinned 任务直派等并发与正确性问题。scx_qmap 作为示范调度器接入救援路径,提供 -B/-q 旋钮与统计。

lore
Bugfix重要分析 success作者:Tejun Heo2026/08/04 02:432 封邮件

[GIT PULL] sched_ext: Fixes for v7.2-rc6

sched_ext 为 v7.2-rc6 提交了四类 bugfix:子调度器 enable 失败路径的 use-after-free、cgroup/kernfs 锁序死锁、WAKE_SYNC 场景下 waker CPU 空闲标记错误,以及 numa 自测对睡眠任务 affinity 变化的处理。这些修复已由 pr-tracker-bot 合并进 torvalds/linux.git。

lore
Bugfix重要分析 success作者:Andrea Righi2026/08/04 01:015 封邮件

[PATCHSET v4 sched_ext/for-7.3] sched_ext: Fix idle CPU state initialization and validation

sched_ext 内置 idle mask 在 scheduler 启用时将所有 online CPU 标记为 idle,导致 busy CPU 被误报。v4 改为空初始化,依赖 bypass re-notification 路径填充真正 idle 的 CPU。同时重构 allowed_cpus selftest,用稳定的本地不变量替代竞态的远端 CPU 检查。已合入 for-7.3。

lore
Bugfix重要分析 success作者:Andrea Righi2026/08/03 13:475 封邮件

[PATCHSET v3 sched_ext/for-7.3] sched_ext: Fix idle CPU state initialization and validation

sched_ext 内置 idle mask 在调度器完全启用前将所有 online CPU 标记为 idle,导致 ops.init() 看到错误状态。本系列在 ops.init() 之前启用 idle 追踪并逐 CPU 刷新真实状态,同时将 allowed_cpus 自测从竞态的远程检查改为稳定的本地不变量验证。Tejun 提出了更简洁的替代方案(清空而非设置 idle bit),值得后续跟进。

lore
每页
上一页4 / 7下一页