[PATCH 7.1 001/744] platform/x86/intel-uncore-freq: Fix current_freq_khz after CPU hotplug
platform/x86/intel-uncore-freq: Fix current_freq_khz after CPU hotplug。Claude 分析失败,当前使用规则 fallback:该讨论被归为 rfc,共 768 封邮件。
北京时间全部历史数据
最近同步:2026/08/28 20:01
platform/x86/intel-uncore-freq: Fix current_freq_khz after CPU hotplug。Claude 分析失败,当前使用规则 fallback:该讨论被归为 rfc,共 768 封邮件。
platform/x86/intel-uncore-freq: Fix current_freq_khz after CPU hotplug。Claude 分析失败,当前使用规则 fallback:该讨论被归为 rfc,共 689 封邮件。
补丁修复 migrate_llc_task 在 CPU stopper 异步 active balance 路径上语义丢失的问题:在 struct rq 上保存 active_balance_type,stopper 唤醒时回填 lb_env.migration_type,并抽出 migrate_llc_task_wrong_dst 辅助函数让 can_migrate_task 在 active 阶段也按 preferred_llc 拒绝候选。改动 2 个文件、+23/-3 行,是 Fixes: e4c9a4cb244a 引入时的遗漏修复。
本邮件是 Markus Reichelt 对 Greg Kroah-Hartman 发布的 7.1.6-rc1 stable review(744 patches)的 Tested-by 回复,确认在 x86_64 Xeon E5-1620 v2 + Slackware64-15.0 上编译通过,并在 x86_64 AMD Ryzen 5 7520U + Slackware64-current 上启动并跑自定义测试未观察到 regression。邮件不涉及具体代码改动,属于 stable review QA 反馈而非 scheduler 子系统讨论。
task_numa_migrate() 遍历候选 NUMA 节点时,distance 仍使用上一次迭代留下的 env.dst_nid,导致 task_weight 评分基于陈旧距离。补丁把 node_distance(env.src_nid, env.dst_nid) 改成 node_distance(env.src_nid, nid),让评分基于真实候选节点距离。thread 仅有 patch 与作者自我 ping,没有 maintainer review。
Andrea Righi 的 v2 patch 修改 find_new_ilb(),让 NOHZ idle load balancer 优先挑整核都空闲的 housekeeping CPU,避免在 NVIDIA Olympus/Vera 这种兄弟线程需要约 10 Ki cycles 恢复窗口的 SMT 上被反复短暂唤醒。找不到整核空闲时退回第一个 idle CPU,并在遍历时把部分忙核的兄弟从候选位图中剪掉。GEMM benchmark 性能从 ~6.2 TFLOP/s 提升到 ~9.4 TFLOP/s。
Andrea Righi 的 v2 补丁在 __sched_setscheduler() 中收紧 SCHED_FLAG_KEEP_PARAMS:持 rq 锁时若请求的 policy 与 p->policy 不同则直接返回 -EINVAL,并在该 flag 下跳过 sched_dl_overflow() 的 deadline 带宽记账与 DEQUEUE_CLASS 触发的 class 切换回调。这修复了「带宽已记账、class 回调已发出,但任务参数和 sched_class 其实没变」的不一致,附两条 Fixes 分别指向 uclamp 扩展与 switch 回调折叠两个提交。K Pratee...
Phineas Su 在 task_tick_numa 与 task_numa_work 各加一道 N_MEMORY 早返回,避免 memoryless 节点上空转造成 %sys 接近 78%。patch 仅 6 行新增,属轻量级 bugfix。Peter Zijlstra 提出反对意见,认为应让页面靠近运行节点而不是直接禁用 NUMA balancing,方案可能需要重新调整方向。
Luo Gengkun 的 v8 系列为每个 mm 维护 visited_cpus cpumask,把 task_cache_work 的扫描集合从整机/整 node 收缩到近期真正跑过该 mm 且仍在线的 CPU,并用 epoch_last_visit 加 llc_epoch_affinity_timeout 淘汰冷位,同时删除了 get_scan_cpumasks()。Redis 场景扫描 CPU 数从 384 降到 16,task_cache_work 开销从 0.81% 降到 0.02%,p99 延迟劣化从 -25.68% 收敛到 -1.14%。Reviewer 主要质疑 mm->sc...
Andrea Righi 提交 2 patch 修复 SCHED_FLAG_KEEP_PARAMS 模式下 __sched_setscheduler() 仍会触发 class transition 回调与 deadline 带宽记账两处副作用。Peter Zijlstra 进一步主张在 sched_setattr() syscall 入口就拒绝 KEEP_PARAMS 与策略变更的组合,返回 -EINVAL,从源头消除矛盾。讨论还涉及 SCHED_FLAG_KEEP_POLICY 的语义边界与历史 Fixes commit 的影响。
修复 commit 14a857056466 在 update_dl_entity 中把 revised wakeup rule 误用于未运行的 dl_server 的问题:在原条件中加入 dl_defer_running 检查,使 deferrable 且当前正在运行的 server 才进入 update_dl_revised_wakeup。该 patch 在 sched/urgent 分支以 commit 1842bf97af109f5ebf830175c9725bf81ebb78b1 被 Peter Zijlstra 接收,回退点固定在 base commit 8bc67e4db64aa...
Oracle 在 x86 与 Ampere Arm OCI VM 上发现 f4c31b07b136 导致 Sysbench threads 性能下降 10% 到 29%,revert 后恢复。线程将问题收敛到 no-cpuidle-driver 路径错误保留 tick,并提交一行修复,恢复直接停止 tick 的行为,同时保留 single-state cpuidle 的启发式。
Shubhang 提出在 SD_WAKE_AFFINE 域内,对 reciprocal WF_SYNC 唤醒直接返回 waker CPU,避免 select_idle_sibling() 把 wakee 拉到远端空闲 CPU,Ampere Altra 上 perf bench sched pipe 提升约 30%。thread 内 Prateek、Christian、Vineeth 三位 reviewer 围绕 SMT 适用性、READ_ONCE 必要性、SIS 改造路径展开讨论,作者计划 v3 收敛清理并限定非 SMT 路径。
该系列将 upstream 18d62044cda7 与 4437ad129cf5 backport 到 7.1-stable:先把 ext.c 中被 idle.c/cid.c 共享使用的 SCX_HAS_OP、update_locked_rq、scx_parent 迁移到 ext_internal.h,再引入 switch_rq_lock() 把 rq 锁切换与 per-CPU scx_locked_rq 追踪同步,避免嵌套 SCX op 路径触发 lockdep 的 Restoring a rq which is no longer held 告警。Greg KH 报告的直接 cherry...
Andrea Righi 提出让 find_new_ilb() 优先选择 SMT 整核空闲的 CPU 作 ILB,避免反复短促唤醒 Vera Olympus 上代价高昂的兄弟线程;Prateek 建议用 select_rq_mask 一次性算交集并避免重复 is_core_idle(),Peter Zijlstra 倾向把 select_rq_mask 改名/accessor 的工作作为独立 cleanup。
本补丁针对 commit 4b603f1551a73 把 avg_idle 记账从 wakeup 路径搬到 put_prev_task_idle() 后 update_rq_avg_idle() 失去 idle_stamp 合法性检查的回归。当 idle_stamp == 0 时,原代码会把 rq_clock(rq) 当成 delta,瞬间把 rq->avg_idle 推到 clamp。补丁在 update_rq_avg_idle() 入口加 unlikely(!idle_stamp) return,恢复 idle_stamp 守卫,避免污染 idle load balancing 输入。
Chen Yu 发现 ITMT 平台上的 PKG domain 会让 sched_asym 与单任务条件错误阻塞 migrate_llc_task,使任务无法迁移到首选 LLC。补丁为该迁移类型增加例外,讨论进一步确认普通 load balance 和 active balance 路径会阻止反向 ping-pong,同时 SD_ASYM_CPUCAPACITY 的相邻过滤暂时保持不变。
Aaron Tomlin 提交 v1 patch,在 /sys/kernel/debug/sched/cpu/cpu<N>/debug 下暴露单个 CPU 的 runqueue 视图,避免读取全量 sched/debug 时抢多把 rq 锁、产生系统噪声。Peter Zijlstra 质疑 commit message 没说明用例,Daniel Vacek 给出 DPDK/isolated CPU 调试的合理场景,作者承诺 v2 改写 rationale 并可能调整 for_each_possible_cpu 的范围。
Oleg Nesterov 把与 CONFIG_SYSCTL 镜像的 CONFIG_PROC_SYSCTL 合二为一,全树替换 #ifdef,scheduler 内 6 处同步改名。Nicolas Schier 担忧用户可见 Kconfig 改名对 out-of-tree 用户与 bisect 的影响;Andrew Morton 提示 Sashiko review 工具应改用 linux-next 而非 net/HEAD 作为 base。
Guopeng Zhang 提交的 2 patch 系列修复 PSI 中两处整数宽度问题: window_update() 中 remaining 改 u64 并改用 mul_u64_u64_div_u64; psi_trigger_create() 在乘 NSEC_PER_USEC 之前显式 cast 到 u64。两者都 Fixes commit 0e94682b73bf。Suren Baghdasaryan 给出点评 (正文被截断), Tao Cui 给出 Acked-by。
Tao Cui 提交 2 个 patch,修复 PSI trigger 内部两处隐式窄宽度算术:当窗口 > 4.29s 时,window_update() 的 u32 remaining 被截断、psi_trigger_create() 的 us→ns 乘法在 32 位平台回绕,导致 trigger 在大窗口下要么严重延迟要么过早触发。修复改为显式 u64,并使用 mul_u64_u64_div_u64() 完成插值。两条路径都不在 scheduler 热路径。
Kayra Cizmeci 提交的单封 cleanup 补丁,在 kernel/sched/fair.c 头部删除了一行未被实际使用的 #include "autogroup.h"。作者通过在仓库中 grep autogroup 字符串确认 fair.c 中没有任何引用,并在 x86_64 defconfig + 4 CPU + QEMU/Lima 环境中进行了启动测试。整个改动只涉及 1 个文件、1 行删除,不改变任何运行期行为。
该线程请求把 101f3498b4bd 回移到 6.18.y,以解决隔离 CPU 上 user.slice 任务可能持续数小时得不到运行时间的问题。请求者提供了经过数周生产测试的手工 backport,但 6.18.y 缺少上游用于消除 avg_vruntime 舍入误差的前置提交。stable 维护者因此暂缓合入,并等待 Peter 确认独立回退是否安全。
Proxy Execution v31 完成 sleeping owner handling:在 task_struct 上新增 blocked_head/blocked_node/blocked_activation_node/sleeping_owner,owner 唤醒时非递归地激活整棵等待树。同时引入 ENQUEUE_PROXY 让 sched_ext 区分捐助激活与普通 wakeup,并修复 DL yield、core-scheduling cookie 不匹配、donor 被 steal、nr_iowait 失衡等问题。整链迁移优化也在本轮重新引入。
Greg Kroah-Hartman 在 LKML 通告 Linux 7.1.5 stable 内核发布,要求所有 7.1 系列用户升级。邮件附带 diffstat 列出本次合并的 20 余项修改,主要是文档与 devicetree bindings 修复,例如 reboot-mode ABI 文档的 RST 化、cpufreq.rst 的 Temporary multiplier 上限从 100 调整为 100000。本帖并非 scheduler 专属 patch,而是例行的 stable release announcement。
Greg Kroah-Hartman 发布 Linux 6.18.40 稳定内核点版本,要求所有 6.18 系列用户升级。邮件包含跨多个子系统的 changelog 与 diff片段(如 I3C 新增 dev_nack_retry_count sysfs 属性、cpufreq 临时 multiplier 上界与 0 语义变更等),但本帖属于 stable maintainer 的常规 release 公告,而非 scheduler 专题讨论。完整的 bugfix 与安全影响需结合 lore 与 git 仓库日志查看。
本 thread 是 stable 分支维护者 Greg Kroah-Hartman 发布的 Linux 6.12.97 稳定版发布公告。邮件附带 diffstat 摘要与部分 diff(cpufreq 文档、workqueue 文档、devicetree binding 等),并不包含具体 scheduler 子系统的 patch 讨论。整体应归类为发布公告类 discussion,重要性一般。
Greg KH 发布 Linux 6.6.145 稳定版,聚合了 cpufreq、crypto、devicetree、ARM/ARM64、PCI、netlink 等多子系统的修复。邮件正文只露出 cpufreq 文档上限从 100 抬到 100000 和 crypto 删除 AF_ALG 零拷贝段两段 diff,整体 changelog 被截断,需自行核对 linux-6.6.y 分支。
Greg KH 发布 Linux 6.1.178 稳定版本,附 cpufreq 与 crypto 文档修正。整封邮件是 stable 分支跨子系统通告,并非 scheduler 专项讨论;仍在使用 6.1 的下游应升级并注意 sampling_rate=0 等行为级变化。
Greg Kroah-Hartman 公布 5.10.261 stable 内核并强制 5.10 用户升级。回复里的 diffstat 显示本轮至少修改了 cpufreq 文档(multiplier 上限扩到 100000、0 表示禁用)和 crypto userspace-if 文档(删除 AF_ALG 零拷贝章节)。本帖并非 scheduler 专题讨论,且输入正文被截断,需要查看完整 changelog 才能判断是否含调度器改动。
本帖为 Greg Kroah-Hartman 对5.15 稳定分支 5.15.212 的例行发布公告,附带一封同主题 reply,给出 cpufreq.rst 和 crypto userspace-if.rst 两段文档示例 diff。diffstat列表在第一条正文中被截断,看不到完整改动规模。来源虽是 sched 频道,但内容是跨子系统的 stable 合并,并非 scheduler 专项改动。
nvmet-tcp: fix race between ICReq handling and queue teardown。Claude 分析失败,当前使用规则 fallback:该讨论被归为 rfc,共 713 封邮件。
Huang Shijie 提交单行 cleanup patch,意图在 task_numa_work() 中移除对 hugetlb VMA 的额外过滤,让 vma_migratable() 的判定生效。数小时后又回复请社区忽略此 patch,承认 task_numa_work() 中保留 is_vm_hugetlb_page 是有意为之,目的是避免 hugetlb 进入自动 NUMA balancing。
本 patch 把 update_sg_lb_stats() 里的 cpu_overutilized(i) 检查挪到 idle_cpu()/nr_running 检查之后,让空闲 CPU 通过便宜判定直接短路,跳过昂贵的过载扫描。语义不变,纯粹是一次低风险的清理型优化,但作者也指出未覆盖 DL 任务的过载盲区。
John Stultz 发出 v30 系列共 7 个补丁,核心是当 mutex owner 自身睡眠时,把 waiter 挂到 owner 的 blocked_head 链表上,等 owner 唤醒后再在同 runqueue 上整链激活;顺带包含 Vasily Gorbik 关于 donor 被偷、cookie 不匹配的修复,以及 chain migration 优化。随后 K Prateek Nayak 提交 RFC 0/3,通过 pick-leader + core_pick_blocked_donor 机制,让 proxy execution 与 core scheduling 在 co...
Yangyu Chen 提交 4 patch 系列,把 CONFIG_SCHED_CACHE 从单一 debugfs 全局 knob 升级为'全局 + 独立 nr/size tolerance + per-mm prctl + 溢出安全'的分层接口,并补 selftest 和文档。核心动机是 Verilator 与 EPYC Turin/Milan 这类 footprint 失真或平台敏感的负载无法用单一全局数字表达。3 封 Intel 维护者回复正文在输入中被截断,真实评审结论待跟进。
queued wakeup 路径在跨过 wakelist 边界时丢失了 WF_RQ_SELECTED 等 wake flags,导致 ttwu_do_activate() 与 wakeup_preempt_fair() 行为偏离直接唤醒路径。v4 在 task_struct 中加入独立 u8 字段 sched_remote_wakeup_flags,并定义 WF_TTWU_QUEUE_MASK 显式保留 WF_TTWU/WF_SYNC/WF_MIGRATED/WF_RQ_SELECTED,在 sched_ttwu_pending() 排空时恢复给下游使用。这是一个影响抢占阈值与 ENQUEUE...
Shubhang Kaushik 在 narrow 互反同步唤醒下让 wakee 留在 waker CPU,新增 prefer_sync_pair_cpu() 辅助判断,在 80 核 Ampere Altra 上把 perf bench sched pipe 提升约 21%。Christian Loehle 评审指出 commit message 声称覆盖 futex ping-pong,但 futex 通常不设置 WF_SYNC;并且 early-return 必须后移到 SD_WAKE_AFFINE 检查之后,否则会绕过 isolcpus/cpuset 的 CPU 隔离策略。作者已在 me...
这是 Linux 5.15.212-rc1 的 843 补丁稳定版审查,覆盖并发、内存安全、文件系统、网络、调度器和设备驱动。系列包含多个相互依赖的 5.15 专用回移。审查者已报告 perf_env__get_cpu_topology() 缺失导致的明确构建回归。
本系列把 task_struct 中的 1-bit sched_remote_wakeup 替换为 u8 sched_remote_wakeup_flags,并在 ttwu_queue_wakelist() 中用 WF_TTWU_QUEUE_MASK = WF_TTWU|WF_SYNC|WF_MIGRATED|WF_RQ_SELECTED 保留这些 flag;sched_ttwu_pending() 排空 wakelist 时把完整 flags 传给 ttwu_do_activate(),修复 ENQUEUE_RQ_SELECTED 与 wakeup_preempt_fair() 在 queu...
Zhongqiu Han 提交的单行清理补丁,将 schedutil 中 rate_limit_us_show 的 sprintf() 替换为 sysfs_emit(),目的是统一 sysfs 输出 API、获得 PAGE_SIZE 边界检查。补丁明确声明无功能变更,由 cpufreq maintainer Rafael J. Wysocki 直接回复 Applied as 7.3 material 接收,无需后续迭代。
本补丁针对 commit 16a03c71bba0 引入的回归:sugov_start() 把 per-CPU sg_cpu 初始化与 util hook 注册合并到同一循环,使得 RCU-sched 路径下的 sugov_update_shared() 可能在 sibling sg_cpu 还在 memset 时就读到 stale 标量字段。补丁恢复两阶段——先全部初始化再统一发布 hook——即可消除 race,同时建议 stable 回流。Christian 与 Rafael 的回复正文截断,需关注后续是否有明确 Ack 或测试补丁。
Oleg Nesterov 发 RFC PATCH 0/1,建议把代码里与 CONFIG_PROC_SYSCTL 等价的 CONFIG_SYSCTL 宏统一替换,因为 61a47c1ad3a4 已删除 sysctl 系统调用,两个选项只剩语义重复。patch 由两条 perl one-liner 生成,触 170 文件;Oleg 征询 Andrew Morton / Eric 意见是否值得进 -mm,并摆出反向(删 CONFIG_PROC_SYSCTL)的小改动方案。Alexey Gladkov 回复支持统一,认为 syscall 移除后只剩 /proc/sys 一条路径,去重有意义。
作者 Guopeng Zhang 提交一个三 patch RFC 系列,处理 suspend 期间 primary CPU 被 isolcpus 排除出 HK_TYPE_DOMAIN 后 freeze_secondary_cpus() 留下空 housekeeping mask 导致空 span 警告和 GPF 的问题。系列引入 freeze transaction 状态保留 user_cpus_ptr、在 fallback mask 为空时退到 task_cpu_possible_mask()、并让 cpuset_reset_sched_domains 在无 active HK_TYPE_D...
v8 系列共 11 个 patch,新增 cpu_preferred_mask 基础设施和 drivers/virt/steal_governor 模块。Scheduler 在 wakeup、tick、load balance 三个路径折叠任务到 preferred CPU 子集;驱动按 steal time 阈值周期性增减首选核心,覆盖 IBM Power 等 paravirt 噪声邻居场景。Yury Norov 在 v8 后提出 kernel_stat.h 抽公共接口、用 delay 字段替毫秒等评审意见,预计推动 v9 调整。
主线 commit 0e2f4ab68a89 已修复:当任务切走 sched_class 时,ops.set_weight() 会在 ops.disable() 之后被调用,违反 SCX ops 的对称约束。修复是在 reweight_task_scx() 顶部判断 scx_get_task_state(p) != SCX_TASK_ENABLED 时直接 return,权重下次进入 SCX 时由 scx_enable_task() 重新计算。本线程将其回退到 7.1 稳定线,路径从 kernel/sched/ext/ext.c 改为 kernel/sched/ext.c 后被 Sasha L...
Greg Kroah-Hartman 发布 Linux 6.1.178-rc1 stable review 公告,把 1067 个 upstream fix backport 进 6.1 stable,请社区在 7 月 23 日前反馈异议。整体为跨子系统的大批量稳定补丁合集,以 bugfix 为主,涉及 NVMe-oF、eventpoll、bpf/arm64、KVM、SMB3、wifi、NTFS3、cifs 等关键子系统。
Hongyan Xia 提交 3 个 patch,把 scheduler 路径上残存的旧 struct static_key / static_key_*() 调用统一改用 DEFINE_STATIC_KEY_FALSE 与 static_branch_*() 新 API:1/3 处理 cfs_bandwidth_used,2/3 改造所有架构上的 paravirt_steal_{rq,}enabled,3/3 用 union sched_feat_key 包住 sched_feat_keys[]。整套没有功能改动,分别拿到 Juergen Gross 的 Acked-by 和 Ben Seg...
bpf, arm64: Reject out-of-range B.cond targets。Claude 分析失败,当前使用规则 fallback:该讨论被归为 rfc,共 1004 封邮件。
smb/server: do not require delete access for non-replacing links。Claude 分析失败,当前使用规则 fallback:该讨论被归为 rfc,共 1000 封邮件。