sched discussion
Linux 5.10.266
LLM 分析
Linux 5.10.266 稳定版发布
系列概况
- 标题:Linux 5.10.266(stable release announcement)
- 作者:Greg Kroah-Hartman(gregkh)
- 版本:5.10.266(基于 5.10.y stable 分支)
- 规模:2 封邮件,公告 + 续贴 diff;公告里罗列了上百个被合并的 patch,覆盖 KVM、ARM64、MIPS、OpenRISC、PowerPC、S390、x86、crypto、DMA-buf、FPGA、GPIO、DRM/AMDGPU 等子系统
- 修改文件:从公告可读片段横跨 Makefile、设备树、arch/、drivers/、crypto/、sound/、fs/* 等;diff 详情仅展示了前若干 hunk(Makefile、tegra194.dtsi、arm64/mips kvm、openrisc signal/processor)
- 代码统计:body 在 "drivers/gpu/drm/amd/a" 处被截断,diff 截断在 "arch/openrisc/kernel/signal.c | 1ebcff27",无法给出精确 +/- 行数;从可读字段(如 "77 +-"/"180 +++-")粗略估计共数百行变更
- Message-ID:
- 公告:
2026082312-bribe-scalping-3ef9@gregkh - 回复:
2026082312-catnip-immorally-834e@gregkh
- 公告:
- 完整性:不完整——两封邮件 body 均被截断,公告里 file 列表与 diff 在中段消失;第 2 封"回复"实质上只是把第 1 封里没贴完的 diff 继续列出来,并无新讨论
补丁目的
Greg KH 按惯例发布 5.10 stable 分支的下一个修订版本 5.10.266,要求所有 5.10 系列用户升级。
这是 stable tree 的合并窗口收尾动作:把上游/各 stable 分支积累的 bugfix 回移植到 5.10.y。它不是针对 scheduler 子系统的专题 RFC,也不是某条具体 bug 的回归讨论,而是一份"大杂烩"式的 stable 公告。
Patch 概览
可读到的关键改动(按 diff 出现顺序):
- Makefile:
SUBLEVEL265 -> 266,纯版本号 bump。 - arch/arm64/boot/dts/nvidia/tegra194.dtsi:给 timer 节点增加一个 GIC PPI(中断号 15,level-low),修正 Tegra194 平台 timer 中断描述。
- arch/arm64/kvm/arm.c 与 arch/mips/kvm/mips.c:
kvm_arch_vcpu_ioctl_run中的退出条件从if (run->immediate_exit)改成if (!vcpu->wants_to_run)——把"是否立即退出 vCPU"的判断来源从run->immediate_exit这个一次性标志迁移到vcpu->wants_to_run这个语义化的 vCPU 状态字段;属于 KVM 状态机语义统一。 - arch/openrisc/include/asm/processor.h + signal.c(注释版):新增
SPR_SR_USER_MASK(仅含 F/CY/OV 三位),明确 sigreturn 路径允许用户态改的 SR 位集合,其余位由内核独占——这是一次 sigreturn 上下文恢复的"权限收口"。
剩下文件列表(crypto、drivers/dma-buf、drivers/dma/dw-edma、drivers/fpga、drivers/gpio、drivers/gpu/drm/amd、sound、net/fs 等)未给出 diff,主题上属于典型 stable 批:DMA 引擎、drm、tpm、resctrl、lapic/svm/vmx KVM 子系统的小修小补。
关键实现
/* arch/arm64/kvm/arm.c 与 arch/mips/kvm/mips.c */
int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)
{
/* 旧: 判断一次性标志位 */
- if (run->immediate_exit)
+ /* 新: 判断 vCPU 的"是否还想继续跑"状态 */
+ if (!vcpu->wants_to_run)
return -EINTR;
...
}
/* arch/openrisc/include/asm/processor.h */
/* sigreturn 时用户态可改的 SR 位 */
#define SPR_SR_USER_MASK (SPR_SR_F | SPR_SR_CY | SPR_SR_OV)
/* arch/openrisc/kernel/signal.c */
/* 在 restore_sigcontext 里, mask 用户态不可触碰的 SR 位
* 避免 sigreturn 提权
*/
sr &= ~SPR_SR_USER_MASK;
sr |= (saved_sr & SPR_SR_USER_MASK);
类比
把 5.10.266 想成"长租公寓的物业每周例行巡检":不重新装修,只是把这一周上游和各 stable 分支报上来的若干处"灯泡坏了/水龙头滴水"挨个修一遍。Greg 是物业经理,邮件是"本周维修清单+入户通知"。
immediate_exit 到 wants_to_run 的改动可以比作"酒店房卡系统升级":旧系统靠前台贴的"请立即退房"便签(一次性标志),新系统让房门自己知道"客人还想不想再住一晚"(vCPU 状态字段),退房判断从外挂便签变成本机能力。
SPR_SR_USER_MASK 则像"前台接待可以代客填的入住表字段清单":F/CY/OV 三项可以由用户态在 sigreturn 时写回,其余 SR 位(涉及特权/中断屏蔽等)必须由内核"亲笔",避免客人趁机把表格里"是否禁止消防喷淋"也一并勾上。
流程图:stable 发布到合并
upstream / other stable branches
(mainline, 5.15.y, 5.10.y, ...)
|
| backport + Cc: stable v
+---------------------------+
| linux-5.10.y queue |
| (Greg's stable tree) |
+---------------------------+
|
| weekly merge, then announce
v
+---------------------------+
| Announcement: 5.10.266 |
| - SUBLEVEL 265 -> 266 |
| - list of N files +/- |
| - "All users must upgrade"
+---------------------------+
|
| (this thread: 1 announce + 1 diff followup)
v
LKML / lore
流程图:KVM immediate_exit 到 wants_to_run 状态迁移
Old path New path
------- --------
kvm_vcpu_ioctl_run() kvm_vcpu_ioctl_run()
| |
run->immediate_exit? !vcpu->wants_to_run?
(one-shot flag) (vcpu state field)
| |
yes -> return -EINTR yes -> return -EINTR
| |
enter vcpu enter/exit enter vcpu enter/exit
main loop main loop (clearer semantics)
Highlight:风险与注意点
- 本帖并非 scheduler 专题:归类到 sched 频道是因发送列表覆盖,没有针对 scheduler 子系统的 patch(无
kernel/sched/*改动)。读这条 thread 时要明确"讨论的边界"——它影响读者对 5.10 上游 stable 整体水位,而非 scheduler 内部设计。 - 数据被截断:两封邮件 body 都中段截断,不要把"未读到的 diff"当成"不存在";尤其是 KVM 那一组改动只贴了 arm64/mips,还有 x86 KVM、svm/avic、vmx、x86.c、lapic.c、kvm_host.h 等待核验。
- KVM
wants_to_run改动的语义值要追溯到上游 commit(不在本帖):在 5.10 stable 上做这样的 backport,需要确认wants_to_run字段在 5.10 分支里已经被同步,否则 arm64/mips kvm 会编译失败或行为异常。 - OpenRisc sigreturn mask 这类改动属于"安全敏感性较高的回移植",必须确认内核态恢复逻辑确实在用户态返回时做了
& ~SPR_SR_USER_MASK清零,否则等于把"写任意 SR 位"的能力给回用户态。 - stable 版本号只是 bump:从用户视角,这次升级主要是"消费回移植的修补",不要把整批改动当成"5.10 主线的新功能"来理解。
- 未完结:thread 只有 2 封 Greg 自己的邮件,没有其他 maintainer 跟进或反对意见;如果后续有回退/补发,通常会以 "Re: Linux 5.10.266" 再续。
版本变化
5.10.265 -> 5.10.266:单一 SUBLEVEL bump;本帖里能看到的"实质内容"差异是上面列出的 KVM 状态字段改名、tegra194 dts 中断描述、openrisc sigreturn mask 等若干 backport,不是版本演进意义上的功能新增,而是 stable 滚窗式修补。
一句话总结
Greg KH 发布 5.10 stable 的例行修订 5.10.266,thread 由他一封公告加一封续贴的 diff 组成,覆盖 KVM、ARM64、OpenRisc 等多个子系统的回移植;与 scheduler 子系统无直接关联,但 KVM immediate_exit 到 wants_to_run 改名、openrisc sigreturn mask 收口等改动值得在升级前做点对点的编译/行为回归。