日期范围
134
全部讨论数
Bugfix重要分析 success作者:yaoyiqi (A)2026/08/21 16:065 封邮件

[scx_nest] bpf_timer_cancel() unusable from select_cpu()

scx_nest 在 nest_select_cpu() 的 migrate_primary 分支里调用 bpf_timer_cancel(),但 select_cpu() 处于 p->pi_lock + IRQ-disabled 上下文,无法同步取消定时器。补丁改为清 scheduled_compaction 标志、让 timer 回调自检作废,并把 stat_inc(CALLBACK_COMPACTED) 移到 stale 检测之后,避免悬挂到期被误计为 compact。

lore
讨论重要分析 success作者:Tejun Heo2026/08/21 02:342 封邮件

[GIT PULL] sched_ext: Changes for v7.3

Tejun Heo 发起的 v7.3 sched_ext 合并请求,主要完成分层子调度的入队路径支持,使父 BPF 调度器能够把 cgroup 子树连同 per-CPU 授权一并移交给嵌套子调度器。同时借机捎带 BPF kfunc/struct_ops 的 arena 参数支持以及一批 v7.2 漏掉的核心调度修复。合并需先 BPF 后 scheduler,结果已在 linux-next soak 数日,是 sched_ext 走向特性完整的里程碑。

lore
Bugfix分析 success作者:Tejun Heo2026/08/21 01:505 封邮件

[PATCH bpf-next] bpf: sched_ext: Mark ops argument container pointer fields as trusted

Tejun Heo 提交一封 26 行的 BPF verifier 补丁,把 sched_ext 四个 ops 参数结构体(scx_init_task_args / scx_cpu_release_args / scx_sub_attach_args / scx_sub_detach_args)里的指针字段加入 BTF_TYPE_SAFE_TRUSTED 白名单,使 sleepable 程序能直接使用 PTR_TRUSTED 指针,例如把 args->cgroup 直接传入 bpf_cgrp_storage_get()。CI bot 提示补 Fixes tag,BPF 维护者 Kumar Ka...

lore
其它分析 success作者:Tao Cui2026/08/20 03:492 封邮件

[PATCH v2] docs/sched_ext: document that cgroup CPU knobs are scheduler-dependent

Tao Cui 提交 v2 文档补丁,在 sched-ext.rst 新增 Scheduler-Dependent Knobs 小节,说明 sched_ext 只把 cpu.max / cpu.weight / cpu.idle 等 cgroup 旋钮透传给 BPF 调度器,未实现对应回调时静默忽略。维护者 Tejun Heo 回复指出当下大多数 BPF 调度器未实现 cpu.max、nr_throttled 计数也未在 SCX 中路由,建议文档改得更通用。

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

[PATCHSET sched_ext/for-7.2-fixes] sched_ext: Fix core scheduling

Tejun 的 6 补丁系列修复 sched_ext 自 4c95380701f5 以来 core scheduling 支持被破坏的问题:fold 让 dispatch 从 pick 内丢 rq 锁,导致同核 sibling 选择互相覆写 core_pick 等状态引发 oops / hang。补丁新增 lock_drop_seq 计数、把"保留 prev"从 rq flag 改成 verdict 返回、修正 kfunc 中 this_rq 假设、让 core-sched pick 在丢锁时整段重试,并由 Peter Zijlstra 与 Andrea Righi 评审,已合入 sched_...

lore
RFC重要分析 success作者:Tao Cui2026/08/19 08:575 封邮件

[PATCH RFC] sched_ext: warn when cpu.max is set but the BPF scheduler doesn't implement bandwidth control

Tao Cui 提出在 BPF 调度器未实现 ops.cgroup_set_bandwidth 时,对有限 cpu.max 配额打印一次 pr_warn_once。实测 scx_simple 配置 cpu.max=50000 100000 时任务仍可吃满 CPU。Tejun Heo 引用 cpu.weight 的旧例反对运行时警告,建议通过文档说明各调度器实现的 cgroup 接口;Sashiko AI进一步指出该警告覆盖不到启动时已存在的 cgroup 配额。下一步取决于作者是否改为文档 patch,或扩展为 cgroup 能力位图机制。

lore
Bugfix分析 success作者:Changwoo Min2026/08/19 02:423 封邮件

[PATCH v2] sched_ext: allow ops.cgroup_set_bandwidth() to be sleepable

本补丁把 sched_ext 的 ops.cgroup_set_bandwidth() 加入 bpf_scx_check_member 的 sleepable 白名单,因其调用路径(tg_set_bandwidth → scx_group_set_bandwidth)本就持有可睡眠的 percpu_rwsem 读端。同时引入 DEFINE_SCX_COMPAT_MARKER 宏和首个 marker(scx_compat_marker_cgroup_set_bandwidth_may_sleep),通过 __used __retain 保证 BTF 留存,让 userspace loader 能...

lore
其它重要分析 success作者:Changwoo Min2026/08/18 22:164 封邮件

[PATCH] sched_ext: allow ops.cgroup_set_bandwidth() to be sleepable

本 v1 patch 把 sched_ext 的 ops.cgroup_set_bandwidth() 加入 BPF verifier 的 sleepable allow-list,使 BPF scheduler 能在运行时按需分配内存;新增一个 __used BTF marker 函数 scx_cgroup_set_bandwidth_may_sleep() 让 userspace 通过 BTF 探测该能力。Tejun Heo 指出仅 __used 在 CONFIG_LD_DEAD_CODE_DATA_ELIMINATION 下仍会被链接器 GC,需要补 __retain,并建议把未来会越来...

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

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

Andrea Righi 发布 v12 patch series,让 proxy execution 与 sched_ext 不再在 Kconfig 层互斥:把 donor/owner 拆为 rq->donor 与 rq->curr,新增 SCX_OPS_ENQ_BLOCKED 让 BPF 调度器显式接纳 mutex-blocked donor,并修复 NOHZ tick 检查、set_task_cpu 误报警、ops.running/stopping 配对以及跨 rq DSQ 迁移中的代理竞争。系列包含 17 个 patch、新增 enq_blocked kselftest 与 scx_qm...

lore
其它分析 success作者:Changwoo Min2026/08/18 03:002 封邮件

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

把 bpf_arena_spin_lock.h 中弱定义的 64KB qnodes 数组改为 extern 声明,并由 libarena/src/common.bpf.c 与 progs/arena_spin_lock.c 各提供一份唯一定义,避免 bpftool gen object 拼接 .addr_space.1 时把每个 TU 的弱副本都塞进最终对象。v2 仅 rebase,已被 Kumar Kartikeya Dwivedi 接受入库到 bpf-next。

lore
其它分析 success作者:Changwoo Min2026/08/18 02:056 封邮件

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