0/2 已展开

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 出现顺序):

  1. MakefileSUBLEVEL 265 -> 266,纯版本号 bump。
  2. arch/arm64/boot/dts/nvidia/tegra194.dtsi:给 timer 节点增加一个 GIC PPI(中断号 15,level-low),修正 Tegra194 平台 timer 中断描述。
  3. arch/arm64/kvm/arm.carch/mips/kvm/mips.ckvm_arch_vcpu_ioctl_run 中的退出条件从 if (run->immediate_exit) 改成 if (!vcpu->wants_to_run)——把"是否立即退出 vCPU"的判断来源从 run->immediate_exit 这个一次性标志迁移到 vcpu->wants_to_run 这个语义化的 vCPU 状态字段;属于 KVM 状态机语义统一。
  4. 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_exitwants_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_exitwants_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_exitwants_to_run 改名、openrisc sigreturn mask 收口等改动值得在升级前做点对点的编译/行为回归。