日期范围
74
全部讨论数
其它分析 success作者:Changwoo Min2026/08/18 02:055 封邮件

[PATCH] selftests/bpf: Remove duplicate copies of the arena spinlock qnodes

bpf_arena_spin_lock.h 把 64KB 的 qnodes 数组直接定义在头文件里,导致 libarena 链接的 10 个 TU 在 .addr_space.1 中各留一份副本;本 patch 把它改为 extern 声明,由 common.bpf.c 与 arena_spin_lock.c 各自提供一份定义,把 libarena.bpf.o 从 676KB 缩到 86KB、asan 版 skel 从 2.6MB 缩到 1.4MB。Daniel 因补丁无法干净应用要求 rebase,Emil 给了 Reviewed-by,作者承诺稍后发 v2。

lore
Bugfix重要分析 success作者:Changwoo Min2026/08/18 01:415 封邮件

[PATCH 0/2] sched_ext: sync compat.bpf.h peek/reenqueue fixes from sched-ext/scx

本系列把 sched-ext/scx 仓库 compat.bpf.h 的两处修复同步进内核树:给 lockless scx_bpf_dsq_peek() 加内核 ≥ 7.1.0 版本门以规避 v7.1 之前的 FIFO DSQ peek bug,并新增 scx_bpf_reenqueue_local_from_anywhere() 兼容 helper,让 tracepoint 等任意上下文能统一调用 v7.1 通用 dsq_reenq() 或 v6.19 v2 reenqueue-local。Tejun 已逐 patch 指出 Patch 1 commit message/注释把 v6.19 ...

lore
Bugfix重要分析 success作者:Tejun Heo2026/08/16 10:136 封邮件

[PATCHSET sched_ext/for-7.3] sched_ext: Update core-sched task ordering for scheduler hierarchies

Tejun Heo 推送 4-patch PATCHSET,修掉 scx_prio_less() 反向调用 ops.core_sched_before()、core_sched_at 两套时间戳规则不兼容、跨 sub-scheduler 没有调度者仲裁等三处 core-sched 优先级排序 bug,并删除一段永远不会触发的 SCX_DEQ_CORE_SCHED_EXEC 死代码。补丁已在作者自己的回复中 Applied 到 sched_ext/for-7.3,目标是在 7.3 merge window 前把 sub-scheduler 的核心坑补齐。

lore
其它分析 success作者:Tejun Heo2026/08/16 08:112 封邮件

[PATCH sched_ext/for-7.3] sched_ext: Move the config-off sub-cap kfunc stubs into sub.c

Tejun Heo 把 !CONFIG_EXT_SUB_SCHED 下 scx_bpf_sub_grant/revoke/caps/kill_bstr 四个 kfunc 的 -EOPNOTSUPP 桩从 ext.c 整体搬到 sub.c 的 #else 分支,使真实实现与桩集中在一个文件;纯代码搬迁,无功能改动,已 Applied 到 sched_ext/for-7.3。属于代码组织类 cleanup 改动,不影响调度行为,也不影响 BTF kfunc 暴露集合。

lore
Bugfix分析 success作者:Tejun Heo2026/08/15 20:333 封邮件

[PATCH sched_ext/for-7.3] sched_ext: Make SCHED_CLASS_EXT select GENERIC_ALLOCATOR

kernel/sched/ext/arena.c 使用 gen_pool_* 接口,但 SCHED_CLASS_EXT 缺少 GENERIC_ALLOCATOR 的 select。当配置里无其他项选中 GENERIC_ALLOCATOR 时会出现 undefined reference。补丁在 kernel/Kconfig.preempt 增加一行 select GENERIC_ALLOCATOR,修复链接错误,已被 Tejun Heo 立刻合入 sched_ext/for-7.3。

lore
Bugfix重要分析 success作者:Tao Cui2026/08/15 19:566 封邮件

[PATCH] sched_ext/scx_flatcg: expire cached hweights on weight changes

scx_flatcg 的 fcg_cgroup_set_weight() 写完 cgc->weight 和 child_weight_sum 后没推进 hweight_gen,导致持续忙碌的 cgroup 内 cpu.weight 改动对调度不可见。补丁在解锁后原子自增 hweight_gen,使 cgrp_refresh_hweight() 下次按新权重重算 hweight。Tejun 已拣入 sched_ext/for-7.3,并顺手指出了 fcg_dispatch() true-up 的另一处 bug,待后续修复。

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

[PATCHSET sched_ext/for-7.3] sched_ext: Dispatch path follow-ups

Tejun Heo 提交了 3 个补丁清理 4c95380701f5 引入的 dispatch 路径改动。0001 在 put_prev_task_scx() 入口拒绝跨 CPU 执行 kick_sync_wait_bal_cb,修复 dispatch drop rq lock 窗口内 lock 持有者 flush 回调到外 CPU 导致潜在死锁的回归。0002 删除 verdict 以返回值传递后已过时的 SCX_DSP_PREV 降级兜底,0003 把 balance_one()/SCX_RQ_IN_BALANCE 改名对齐到 dispatch 语义。该系列已被 maintainer 直接...

lore
Bugfix分析 success作者:Tejun Heo2026/08/15 18:038 封邮件

[PATCHSET sched_ext/for-7.3] sched_ext: Misc fixes

Tejun Heo 在 sched_ext/for-7.3 分支上合并两个无关小补丁:一是删除 scx_root_disable() 中无锁的 scx_rq_clock_invalidate(),避免与持锁 flags 更新 race 同时去除冗余失效;二是让 scx_bpf_events() 读取调用者 BPF 程序所属 scheduler 的事件计数器,使 sub-scheduler 能正确观测自身。

lore
Bugfix重要分析 success作者:Tao Cui2026/08/15 17:104 封邮件

[PATCH] sched_ext/scx_flatcg: Fix cvtime true-up on slice expiry

Tao Cui 修复 scx_flatcg 在切片到期或 DSQ 空时 true-up cgroup cvtime 的计算 bug:原表达式 (cur_at + slice - now) 符号反,且 CNS_EXPIRE 路径下 u64 减法下溢、BPF 无符号除法丢失补码符号位,导致每次过期向 cvtime_delta 加接近 2^64/hweight 的垃圾值。新代码先算 s64 delta、按正负分流到 fetch_and_add / fetch_and_sub,被除数保正以适配 BPF 无符号除法。Sashiko 提示 cgv_node_less() 的 cvtime 回卷优先级反转属...

lore
Bugfix重要分析 success作者:Tao Cui2026/08/15 13:494 封邮件

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

这个 PATCH 修复 sched_ext 中 process_deferred_reenq_users 在 DSQ 已被 destroy_dsq 销毁后仍触发 BUG_ON 的崩溃。v2 把检查从 builtin-flag 改为只跳过 SCX_DSQ_INVALID,并在 Tejun 应用时加 READ_ONCE 关闭 TOCTOU 窗口。Sashiko 还提示 dsq 指针本身的 UAF 风险尚需继续跟进。该 patch 已合入 sched_ext/for-7.3 并会回灌 stable v7.1+。

lore
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:031 封邮件

[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:511 封邮件

[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
每页
上一页2 / 2下一页