Re: Linux 6.6.152
Greg Kroah-Hartman 发布 stable 6.6 系列 6.6.152 公告,把上游累积的 dt-binding、s390 KVM、amdgpu TTM、parade-ps8640 bridge、Aquantia/Broadcom 网卡、bonding、mei 等多类补丁同步到 6.6.y 分支,Makefile SUBLEVEL 提升到 152,提示所有 6.6 用户必须升级。本帖不涉及 scheduler 子系统。
北京时间全部历史数据
最近同步:2026/08/28 20:01
Greg Kroah-Hartman 发布 stable 6.6 系列 6.6.152 公告,把上游累积的 dt-binding、s390 KVM、amdgpu TTM、parade-ps8640 bridge、Aquantia/Broadcom 网卡、bonding、mei 等多类补丁同步到 6.6.y 分支,Makefile SUBLEVEL 提升到 152,提示所有 6.6 用户必须升级。本帖不涉及 scheduler 子系统。
Greg Kroah-Hartman 发布 6.1 stable 分支第 183 个点版本,强制要求 6.1 系列用户升级。本帖属于 stable 维护通告而非 scheduler 专项讨论:提交内容覆盖版本号 bump、arm64 Tegra234 DT 兼容串从 cortex-a78 改为 cortex-a78ae、arm npcm SMP 启动路径上补齐 of_node_put 引用计数、以及少量文档与 devres 补齐。整条线索只有发布公告与一份 diff 起始片段,没有针对 scheduler 子系统的具体评审或讨论。
Greg Kroah-Hartman 发布 Linux 5.15.216 stable,把跨 PowerPC cputime、ARM npcm SMP boot 节点泄漏、x86 KVM nested 和多个驱动稳定分支的修复一次性 backport 到 linux-5.15.y。所有 5.15 用户必须升级。
PSI 子系统中 psi_schedule_rtpoll_work() 在调度热路径上 lockless 调用,可能在 psi_trigger_destroy() 删除 timer 后重新 mod_timer 装弹,导致 cgroup 释放后 timer 仍在已释放内存上执行。补丁把 timer 关闭下沉到 psi_cgroup_free(),mainline 用 timer_shutdown_sync(),5.10.y 通过 timer_delete_sync() 与嵌入字段 cgroup->psi.poll_timer 做适配。
scx_cgroup_lock() 中先取 rwsem 写锁再 cgroup_lock() 的顺序会通过 kernfs 与 enable/rmdir/cpu.weight 形成死锁闭环。修复把 cgroup_lock() 提到写锁之前断开环路,并把该 patch 连同两个 stable-dep(warning 翻转、enable/disable 路径重构)一起按 6.18-stable 的 kernel/sched/ext.c 路径回迁。
本 thread 是 Greg Kroah-Hartman发布的 Linux 7.1.9-rc1 stable review,271 枚 patch + 13 封 Tested-by 回复。scheduler 子树相关8 枚 patch集中修复 sched_ext sub-sched 启停 race、cgroup_lock 顺序、psi psimon kthread 与 rtpoll_timer 生命周期,以及 rqspinlock deadlock 路径的 tail 重置。整体是稳定分支的合订公告,分类为 bugfix 序列。
本 patch 把过时的 struct static_key 数组 sched_feat_keys 改造为 union sched_feat_key,并用 sched_feat_branch_true/false 两个 helper 把 SCHED_FEAT 宏展开桥接到 struct static_key_true/false 新 API。改动集中在 kernel/sched/debug.c 与 sched.h,共 +19/-10 行,作者声明零功能变更,仅完成 deprecation 迁移;这是 RESEND 拆分后的单 patch 单独提交,便于单挑 review。
Vladimir Zapolskiy 提交一个一行清理 patch,删除 kernel/sched/core.c 中 do_balance_callbacks() 对 balance_callback->func 的多余类型转换。Peter Zijlstra 确认并指出该 cast 是 callback_head 时代的历史残留,随着 commit 8e5bad7dccec 引入 struct balance_callback 后已不再需要,删除后代码更整洁、对 CFI 更友好。
Joshua Hahn 提出一套 14 patch 的 RFC,把 memory.{min,low,high,max} 在每个内存层级(DRAM/CXL/PMEM 等)按系统容量比例缩放,从而防止先到的 cgroup 独占高速层。在 1TB 双层机器上的测试显示,多 workload 在 DRAM/CXL 上的占用极差从 7.10x 降到 1.06x,作业完成时间极差从 54.9s 降到 26.1s。Song Hu 另指出 calculate_high_delay() 存在 pre-existing 整数溢出,建议作独立 fix。
上游 commit 5457025fa8ca 把 psi rtpoll_timer 的关闭从 trigger 销毁路径移到 psi_cgroup_free(),用 timer_shutdown_sync() 一次性绑定 group 生命周期,消除调度器热路径 re-arm 导致的 use-after-free。该补丁 cherry-pick 到 5.15-stable 失败,Greg KH 发出 FAILED 通知。Sasha Levin 随后提交手工适配版,把 cgroup->psi-> 指针解引用改为内嵌的 cgroup->psi.,并把 rtpoll_* 成员名改回 poll_*。
Greg KH 一次性发布 Linux 5.15 LTS 5.15.216-rc1 的 stable review 公告,0/456 cover letter + 456 个补丁 + 7 位 maintainer/tester 测试回复,整批以 bugfix 为主,涵盖 futex requeue-PI 活锁、sched/vtime 通用实现清理、sctp 与 wifi 大量 OOB/UAF 修复、RCU 化释放等。本帖对调度子系统的设计无新讨论,仅在 stable review 周期里要求 LTS 订阅者在 2026-08-19 前反馈测试结果。
本 patch 把 hrtick 子系统中硬编码的 10000ns floor 与 5000ns rearm 阈值抽成两个命名宏,并显式把余量定义为最小切片的一半,仅提升可读性、不改变行为。作者本人也提出疑问:5us 阈值当年是否刻意作为 10us 的一半引入,等维护者澄清历史语义后再决定是否合入。
本系列补丁为 cache-aware scheduling 引入 visited_cpus cpumask,让 task_cache_work() 只扫描最近真正访问过的 CPU,把多 NUMA 系统中的扫描 CPU 数从 384 降到 16 左右,Redis p99 延迟下降约 25%。Chen Yu C 在 review 中进一步指出单线程进程 visited_cpus 位累积以及跨 NUMA 抖动两个潜在风险,作者倾向于不加 gate。
Liang Hao 提交一个 1 行补丁,把 start_dl_timer() 中判断激活点是否已过去的写法从 ktime_us_delta() < 0 改成 ktime_before(),统一使用与 act/now 一致的纳秒分辨率,避免亚微秒级过期被微秒截断吃掉。deadline scheduler maintainer Juri Lelli 回信 Acked-by,认可此修改。
Vlastimil Babka 发布5 patch RFC,把 kfree_nolock() 从只能释放 kmalloc_nolock() 对象扩展为可释放任意 kmalloc() 对象(含 kfence、kmemleak 注册对象、large_kmalloc),必要时通过 irq_work 延迟释放。调度器据此把 set_cpus_allowed_force() 中的 kfree_rcu() 替换为 kfree_nolock(),避免 RCU grace period 延迟。Hao Li 给出 Reviewed-by;Catalin Marinas 对 kmemleak 扫描期间 defer...
在 update_rq_avg_idle() 入口加 if (!idle_stamp) return;,避免 idle_stamp 仍为 0 时把 rq_clock(rq) - 0 当作空闲时长喂进 EWMA,瞬间把 avg_idle 顶到 clamp。该 bug 由 4b603f1551a73 把 avg_idle 会计从 wakeup 搬到 put_prev_task_idle 时丢失守卫引入,可被 newidle 早退、proxy、force-idle 等路径触发。v3 已收 Reviewed-by / Acked-by,hackbench 无明显回归。
Eric Kim 的 v3 patch 修复 update_task_scan_period() 在 period==0 分支提前 return 导致 numa_faults_locality 未被清零的 bug。原代码会让上一窗口的旧 locality 反复被计入下一个窗口,触发 numa_scan_period 持续翻倍直至 numa_scan_period_max,把 task 永久冻结在错误 NUMA 节点。修复方法是把 return 改为 goto out,强制所有退出路径都走尾部 memset cleanup。v2 已按 Peter Zijlstra 建议复用 out 标签,v3 ...
该补丁在 PSI 中新增 cpu_prio 资源,只统计静态优先级不高于阈值的任务等待 CPU 的时长,以隔离延迟敏感负载的争用信号。维护者 Peter Zijlstra 直接回 Yeah, I think not. 拒绝,Michal Koutny 进一步指出把目标任务放进独立 cgroup 后读取 cpu.pressure 已经能做到同样效果,因此没有继续迭代。
Karl Mehltretter v2 系列新增 KCOV_PAUSED 位与 kcov_pause guard,在 deferred hrtimer rearm、__schedule()、try_to_wake_up()、wake_up_new_task() 入口短暂关闭 KCOV,避免被插桩 callees 把不相关覆盖写进当前任务。Peter Zijlstra 对 patch 3-6 全部 NAK,认为这些路径是 noinstr,根本不该有 KCOV 调用,并提出改 kernel/softirq.c 的 preempt_count 处理作为根本方案,落地路径仍在来回拉锯。
Xukai Wang 提议把 pick_next_task() 的类提交语义(put_prev_set_next_task + rq_set_donor)推迟到 __schedule() 中 find_proxy_task() 解析成功之后执行,避免 proxy 解析失败时对 blocked donor 的投机性 set_next 与撤销。v2 同时把 zap_balance_callbacks() 收回 proxy_resched_idle(),并把候选与已提交 donor 在 proxy_deactivate / proxy_migrate_task 中显式区分。John Stultz 要...