日期范围
78
重要讨论数
Bugfix重要分析 failed作者:Qiurong Fang2026/08/27 17:382 封邮件

[PATCH] sched_ext: Skip per-CPU data allocation for built-in DSQs

sched_ext: Skip per-CPU data allocation for built-in DSQs。Claude 分析失败,当前使用规则 fallback:该讨论被归为 bugfix,共 2 封邮件。

lore
Bugfix重要分析 failed作者:Wanwu Li2026/08/27 16:164 封邮件

[PATCH] sched_ext: Fix timer pinning and return value in scx_central

sched_ext: Fix timer pinning and return value in scx_central。Claude 分析失败,当前使用规则 fallback:该讨论被归为 bugfix,共 4 封邮件。

lore
其它重要分析 success作者:Tao Cui2026/08/25 17:285 封邮件

[PATCH] sched_ext: Allow ops.cgroup_set_weight/idle() to be sleepable

Tao Cui 提议将 ops.cgroup_set_weight() 与 ops.cgroup_set_idle() 加入 sched_ext 的 sleepable allow-list,使 BPF 调度器可以按需分配 DSQ 等资源。补丁同时新增两个 SCX_COMPAT_MARKER 并更新注释。Sashiko AI 与 Andrea Righi 均指出并发 cgroup 写入存在 core / BPF 状态失序的 high severity 竞态,Andrea 暗示将先发 race fix,本补丁宜在 race 修复后再合入。

lore
Bugfix重要分析 success作者:Andrea Righi2026/08/25 17:221 封邮件

[PATCH sched_ext/for-7.3-fixes] sched_ext: Serialize cgroup knob updates

Andrea Righi 提交的单封 fixes 补丁,针对 sched_ext cgroup knob 并发更新时 core scheduler、BPF scheduler 与 sched_ext 缓存状态分裂的问题。核心改动是为每个 task_group 引入 knob_mutex 并借助 DEFINE_GUARD 自动加锁,将核心调度器更新与 sched_ext 通知统一串行化。覆盖 cpu.shares / cpu.idle / cpu.max 等 cgroup write 路径,并修复 819513666966 等三个引入 cgroup 支持的 commit。

lore
Bugfix重要分析 success作者:Tao Cui2026/08/25 10:275 封邮件

[PATCH v2] sched_ext: pass the initial cpu.idle state in scx_cgroup_init_args

Tao Cui 的 v2 补丁在 scx_cgroup_init_args 中新增 idle 字段,并补齐四处构造 args 的位置,使 BPF 调度器在 init 阶段即可看到 cgroup 的初始 idle 状态。Andrea Righi 建议补 Fixes tag 并给出 Reviewed-by;Tejun Heo 指出 idle 在 sched_ext 中专指 CPU idle,要求 v3 把字段改名为 sched_idle 并同步重命名 tg->scx.idle,作者已确认照办。

lore
其它重要分析 success作者:Tao Cui2026/08/25 01:283 封邮件

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

Tao Cui 在 v4 里给 sched-ext.rst 新增 Scheduler-Dependent Knobs 小节,说明 cpu.max、cpu.weight、cpu.idle 等 cgroup v2 CPU 控件在 sched_ext 下是否生效取决于加载的 BPF 调度器。Andrea Righi 提出措辞建议后作者重写描述,区分了 ops.cgroup_init() 与 ops.cgroup_set_*() 的不同职责,并指出 per-task nice(ops.set_weight())与 cgroup cpu.weight.nice 是两条独立路径。Tejun Heo 已将该...

lore
Bugfix重要分析 success作者:Michal Blaszczyk2026/08/24 19:242 封邮件

[PATCH v3] sched: Lift cgroup update locking to core to prevent CFS/SCX divergence

Michal Blaszczyk 提交的 v3 patch,将 fair.c 内部的 shares_mutex 与 cfs_constraints_mutex 提升为 core.c 暴露的 cpu_weight_mutex 与 cpu_max_mutex,并在所有 cpu.shares / cpu.weight / cpu.weight.nice / cpu.idle / cpu.max 写路径中加锁,使 CFS 与 SCX 回调在同一锁下原子执行,彻底消除多线程并发写 cgroup 控制文件时 CFS 权重、tg->scx.weight 与 BPF 调度器三者状态两两不一致的竞态。

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

[PATCHSET sched_ext/for-7.3-fixes] sched_ext: Sync tools headers from the scx repo

Tejun Heo 提交一个 2 patch 系列,把 scx 用户态仓库对 BPF 头文件的修复反向同步回内核树:新增 enum ABI 回查表让 64-bit enum 在老 BTF 上不再截断;改写 is_migration_disabled() 适配 v6.18+ 不开 PREEMPT_RCU 的场景;恢复 __COMPAT_scx_bpf_cpu_curr 兼容旧内核;文档化 rq clock 在 NO_HZ_IDLE 下的 stale-read。评审指出默认 __scx_prolog_disables_migration = true 的语义与注释不符,慢路径里会导致对 curre...

lore
Bugfix重要分析 success作者:Tejun Heo2026/08/23 01:062 封邮件

[PATCH sched_ext/for-7.3-fixes] sched_ext: Fix spurious aborts in scx_bpf_dsq_move() on ownership change races

sched_ext 在 scx_dsq_move() 中对任务做所有权检查的位置过于靠前,会把任务临时离开/换主的良性竞态误判为越权并终止整个 BPF scheduler。补丁把该检查推迟到拿到 src_dsq 锁且确认任务仍在源 DSQ 之后,仅当 lock 下仍可见却不再属于当前 scheduler 时才真正 abort,保留错误信息文案不变以便兼容。同时顺手修正两处仍引用已重命名的 sched_ext_free() 的注释。

lore
Bugfix重要分析 success作者:Changwoo Min2026/08/22 11:214 封邮件

[PATCH] sched_ext: serialize concurrent cpu.max writers in scx_group_set_bandwidth()

Changwoo Min 提交单补丁,在 scx_group_set_bandwidth() 中新增 scx_cgroup_set_bw_mutex,把 SCX 回调与 tg->scx.bw_* 写入包在互斥区,与 CFS 一侧的 cfs_constraints_mutex 对齐,避免并发 cpu.max 写导致的乱序和撕裂。Sashiko AI 评审指出该锁在 percpu rwsem 读侧获取可能引起调度饥饿,并提醒 cpu.weight/cpu.idle 等同类属性仍缺乏串行化;Tejun 与作者的回复在抓取中被截断,需回拉原文确认进一步指导。

lore
Bugfix重要分析 success作者:Michal Blaszczyk2026/08/22 03:085 封邮件

[PATCH] sched: Serialize cgroup updates to prevent CFS/SCX state divergence

本系列修复 cgroup cpu.* 文件并发写导致的 CFS 与 sched_ext 状态发散。v1 在 core 层新增 scx_cgroup_mutex 串行化写路径;经 Tejun 与 Peter 评审后,v2 把 fair.c 已有的 shares_mutex 提升到 core 层,并新增 sched_group_set_shares_locked(),让 CFS 与 SCX 在同一锁下原子完成,避免嵌套加锁。线程仍在修订中,v3 需回应命名建议并补回归测试。

lore
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/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
其它重要分析 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
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
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作者: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作者: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
其它重要分析 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
其它重要分析 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
Bugfix重要分析 success作者:luoliang2026/08/03 04:204 封邮件

[PATCH] sched_ext: Set errno on ENABLING -> ENABLED transition failure

scx_root_enable_workfn() 在 ENABLING→ENABLED cmpxchg 失败时跳转 err_disable,但未设置 ret,导致错误日志输出 failed (0) 无意义。本 patch 在跳转前补设 ret=-EBUSY,与函数顶部其他状态守卫一致。已被 Tejun Heo 合入 sched_ext/for-7.3。

lore
其它重要分析 success作者:Tejun Heo2026/08/03 03:5118 封邮件

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

本系列为 sched_ext 子调度器中因 CPU 亲和性与 cid 不匹配而搁浅的任务,新增内核侧的带宽受限救援执行机制。调度器在 insert 时标记 SCX_ENQ_RESCUE,内核将任务放入 rescue DSQ 以受限带宽运行,等待过久时升级为不可抢占的 protected execution。当救援队列持续过载时,逐出消耗救援资源最多的子调度器而非归咎于等待者。

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

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

sched_ext 内置 idle mask 在 ops.init() 前将所有 online CPU 标记为 idle,但 idle 追踪未启动,导致 busy CPU 被误报为 idle。本系列在调度器启用前开启 idle 追踪并逐 CPU 持 rq lock 刷新状态,同时将 allowed_cpus 自测从竞态的远程 CPU 检查改为稳定的本地不变量验证。v3 将合并静态键并可能扩展不变量检查范围。

lore
Bugfix重要分析 success作者:Andrea Righi2026/07/31 16:254 封邮件

[PATCH sched_ext/for-7.2-fixes] selftests/sched_ext: Make allowed_cpus idle validation race-free

sched_ext 的 allowed_cpus 自测在验证远程 CPU 的 idle 状态时存在本质竞态:远程 CPU 可在验证前被 idle re-pick 重新标记为 idle,导致误报。本 patch 将验证改为检查本地 CPU 的 idle 不变量(本地 CPU 不可能在本回调运行期间被 re-pick),并增加引导阶段刷新 idle mask 初始化状态,同时补充了 allowed domain 和 task affinity 的验证。

lore
Bugfix重要分析 success作者:Matt Fleming2026/07/30 20:194 封邮件

[PATCH] rcu-tasks: Defer IRQ-disabled callback enqueue to irq_work

修复 call_rcu_tasks_generic() 在 IRQ 禁用上下文中与 rq->lock 形成 ABBA 死锁的问题。通过无锁 llist + irq_work 将回调入队延迟到安全上下文执行。RCU maintainer 建议等待上游 call_rcu()/call_srcu() deferral 系列后再提交 v2,并指出 barrier 需排空所有队列及 CPU hotplug 场景需处理。

lore
Bugfix重要分析 success作者:Tejun Heo2026/07/28 05:2410 封邮件

[PATCHSET sched_ext/for-7.3] sched_ext: NMI-safe exit handling

sched_ext 的 exit 路径在 NMI 上下文中可死锁:scx_claim_exit() 持 scx_sched_lock 遍历子树,bstr kfuncs 持共享 spinlock 格式化消息。本系列将 ->aborting 扫描改为无锁 + 延迟传播、将 bstr exit 改为 claim-first 直接写入 winner 缓冲区,使 scx_bpf_error()/scx_bpf_exit() 可从 NMI 安全调用。同时让 hardlockup handler 直接从 NMI abort(自检测 lockup 可恢复),NMI kick 不再静默丢弃,scx_link_s...

lore
Bugfix重要分析 success作者:Tejun Heo2026/07/28 04:026 封邮件

[PATCH v3 sched_ext/for-7.3] sched_ext: Bound per-task reenqueues and eject the owning scheduler

修复 sched_ext 中 reenqueue irq_work 自我重触发导致 stall watchdog 被阻塞的硬锁死问题。将 per-CPU 仅限 local DSQ 的重入队上限泛化为 per-task 计数器,覆盖所有重入队来源,超限时精确弹出所属调度器而非整个层级。v3 增加了 scx_disable_task() 中 reenq_cnt 的清零,防止计数器跨调度器残留。

lore
Bugfix重要分析 success作者:Tejun Heo2026/07/27 03:494 封邮件

[PATCH sched_ext/for-7.3] sched_ext: Bound per-task reenqueues and eject the owning scheduler

修复 sched_ext 中 reenqueue 无限循环导致 CPU 锁死的缺陷。旧代码仅对 local DSQ 重入队有 per-cpu 上限,cap rejection 场景无限制,irq_work 自重触发可阻塞 stall watchdog。新方案引入 per-task reenq_cnt,在所有重入队路径的统一漏斗处递增,超限后弹出所属调度器。v2 优化了事件计数时机,v3 将修复 reenq_cnt 在调度类切换时的残留问题并更新文档。

lore
其它重要分析 success作者:Andrea Righi2026/07/26 00:2618 封邮件

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

Andrea Righi 发布 PATCHSET v9,共 14 个补丁,移除 SCHED_PROXY_EXEC 与 SCHED_CLASS_EXT 的构建期互斥。在核心调度器侧把 rq->donor 与 rq->curr 拆开,新增 SCX_OPS_ENQ_BLOCKED 能力位让 BPF scheduler 显式选择是否接管 blocked donor,并同步修复 NOHZ 带宽检查、远端 DSQ 迁移竞态、ops.running/stopping 配对等问题。配套提供 enq_blocked selftest 和 scx_qmap -B 演示选项。

lore
Bugfix重要分析 success作者:Tejun Heo2026/07/25 06:198 封邮件

[PATCHSET v2 sched_ext/for-7.3] sched_ext: Follow-up fixes and missing cap enforcement

本系列修复两个问题:用户态工具在 exit_req 与 RESTART 同时存在时陷入无限重启循环;sub-scheduler 的 cid-addressed reenq、kick 和 cpuperf 操作缺少权限检查,无 cap 的 sub-sched 可触发他人 CPU 的 IPI 和频率调整。Patch 1 修复 restart 逻辑,Patch 2-3 给 reenq/kick 加 SCX_CAP_BASE 门控并计数拒绝,Patch 4 重构 cpuperf setter,Patch 5 新增 SCX_CAP_PERF 门控 cpuperf 并同步返回结果。

lore
Bugfix重要分析 success作者:Tejun Heo2026/07/25 03:0710 封邮件

[PATCHSET sched_ext/for-7.3] sched_ext: Follow-up fixes and missing cap enforcement

本系列修复 sched_ext 工具在重启等待期忽略 exit_req 导致无限循环的 bug,并堵住子调度器三个权限漏洞:reenq IPI、kick 拒绝和 cidperf cpufreq 操控无 cap 检查。新增 SCX_CAP_PERF 作为独立 cpufreq 权限轴,cidperf_set 通过版本化 v2 kfunc 同步返回拒绝结果。所有拒绝操作均有事件计数器可观测。

lore
Bugfix重要分析 success作者:Kuba Piecuch2026/07/24 02:052 封邮件

[PATCH sched_ext/for-7.2-fixes] selftests/sched_ext: Handle sleeping task affinity changes in numa test

当睡眠任务的 CPU affinity 在睡眠期间被修改后,task_cpu(p) 可能指向已不在 cpus_ptr 中的 CPU,导致 NUMA node 选定后找不到合法 CPU,sched_ext 框架报 "invalid CPU -16" 并使调度器异常退出。补丁在 numa_select_cpu() 中检测 cpumask 不一致时回退 prev_cpu 兜底,Tejun Heo 已 apply 到 for-7.2-fixes。

lore
每页
上一页1 / 2下一页