0/2 已展开

LLM 分析

Linux stable: Linux 5.15.216 stable 发布公告

系列概况

  • 标题: Linux 5.15.216
  • 作者: Greg Kroah-Hartman
  • 版本: Linux 5.15.216(stable 5.15.y 分支第 216 个 patch level)
  • 规模: 跨多个子系统的稳定分支回炉,包括 ARM/PowerPC/x86 boot 与 KVM、crypto、各类驱动;按 announcement 邮件末尾的 diffstat 列出近 30 个修改文件
  • 修改文件: Makefile、arch/arm/mach-npcm/platsmp.c、arch/powerpc/boot/{simpleboot,treeboot-akebono,treeboot-currituck}.c、arch/powerpc/include/asm/cputime.h、arch/powerpc/include/asm/time.h、arch/powerpc/kernel/time.c、arch/powerpc/platforms/{chrp,ps3,}/...、arch/um/drivers/vector_kern.c、arch/x86/boot/compressed/Makefile、arch/x86/kvm/{mmu,vmx}/、crypto/rsa-pkcs1pad.c、drivers/ata/{pata_sl82c105,sata_dwc_460ex}.c、drivers/block/rbd.c、drivers/bluetooth/btqca.c、drivers/cdrom/cdrom.c、drivers/comedi/drivers/comedi_parport.c、drivers/counter/microchip-tcb-capture.c、drivers/cpufreq/powernow-k8.c、drivers/dma/{sh/rz-dmac,sun6i-dma}.c、drivers/firewire/net.c、drivers/firmware/{arm_ffa,arm_scmi,stratix10-svc}/.c、drivers/gpio/gpio-pch.c、drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c 等
  • 代码统计: Makefile SUBLEVEL 215→216;arch/powerpc/include/asm/cputime.h 增 30 行;arch/powerpc/kernel/time.c 增 93 行;drivers/dma/sh/rz-dmac.c 减 94 行;arch/x86/kvm/vmx/nested.c 增 11 行;arch/x86/kvm/vmx/vmx_ops.h 增 16 行;其他单行/双行 fix 多处
  • Message-ID(首封): 2026081948-scouts-dedicate-e7af@gregkh
  • 完整性: 本 thread 共两封邮件——一封 stable release announcement,后跟一封补充 diff 列表的 follow-up(2026081948-unlovable-vacancy-e9d7@gregkh);这是 stable 滚动更新公告而不是单一主题 patch 讨论

补丁目的

把 mainline 或更新 stable 分支上积累、且与 5.15 LTS 兼容的关键修复一次性 cherry-pick 进 5.15.y,打上 5.15.216 这个 tag 并公告升级。涵盖 cputime 累积、SMP boot 的 of_node 引用平衡、DT 节点返回值误判、KVM nested 行为、多个 driver 的稳定性和正确性等。

旧流程的问题

  • 5.15.215 在 PowerPC cputime 统计上存在 bug,节点引用(of_node)路径上 secondary CPU boot 有泄漏风险,DT 解析对返回值 0 的处理不正确;
  • x86 KVM nested VMX 与部分驱动(rz-dmac、ata、bluetooth qca、rbd、gpio-pch 等)存在稳定分支需要回流但尚未交付的修复。

新流程

打 5.15.216 git tag,并一次性公告给 5.15 系列所有用户升级到 linux-5.15.y;具体代码 diff 列在 follow-up 邮件中。

关键实现

按 announcement 列出的修改挑几个跟调度器路径相关的点展开:

1. SMP boot 节点引用平衡(arch/arm/mach-npcm/platsmp.c)

在 secondary CPU 启动路径与 npcm7xx_smp_prepare_cpus 各自增加 of_node_put(...),释放早前 of_parse_phandle 获取的引用。这条路径对应 CPU hotplug / bringup,调度器 plugged → active 切换时会经过这里。

static int npcm7xx_smp_boot_secondary(unsigned int cpu,
                                     struct task_struct *idle)
{
    ...
+   of_node_put(gcr_np);
    ...
}

static void __init npcm7xx_smp_prepare_cpus(unsigned int max_cpus)
{
    ...
+   of_node_put(scu_np);
    ...
}

2. PowerPC DT 节点返回值误判

if (!node) 改为 if (node < 0)。DT 节点返回值是 int,有效值可以等于 0(DT 起始节点),原先把 0 误判为失败。

- if (!node)
+ if (node < 0)

涉及 arch/powerpc/boot/simpleboot.ctreeboot-akebono.ctreeboot-currituck.c 三个开机入口。

3. PowerPC cputime 调整(合计 100+ 行)

include/asm/cputime.h +30 行、kernel/time.c +93 行、include/asm/time.h +1 行。这一块与调度器 task_cputime_adjustedcpuacct 路径交互,决定 top/ps/cgroup cpu.stat 的报告值。

4. KVM nested VMX(arch/x86/kvm/vmx/nested.c / vmx_ops.h)

11+16 行的改动,主要是 nested VMX 的某些 entry/exit/control 字段处理。该路径不直接参与 CFS 选择,但宿主 wait_event / wakeup 与 KVM vcpu_blockedvcpu_wake_up 存在耦合。

5. 驱动修复(节选)

  • drivers/dma/sh/rz-dmac.c 减 94 行:可能是一段被废弃代码的批量删除或 driver 行为重构,需要在升级时单独 review changelog;
  • drivers/cpufreq/powernow-k8.c +1 行:CPU 调频相关,与 scheduler governor 共享频率状态;
  • drivers/firewire/net.c +39 行、ARM SCMI notify / FFA / Stratix10 SVC 等 +9/+6/+2 行:总线/固件通道稳定修复;
  • drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c +2 行:AMD ACP 与音视频子系统小修。

升级矩阵示意

   upstream mainline / newer stable
            |
            |  cherry-pick (backport by stable team)
            v
       linux-5.15.y
            |
            |  tag 5.15.216  (SUBLEVEL 215 -> 216)
            v
     announcement  ------------------+
     (2026081948-scouts...)          |
            |                        v
            |                  follow-up with
            |                  full diff list
            v                  (2026081948-unlovable...)
     lore.kernel.org ML archive
            |
            v
        end users / distros

类比

稳定分支的每次 release 就像城市快速路的"夜间养护 + 重新铺沥青"。平时 mainline 在造新路,stable 团队定期把上游已经修好的坑(fix)回填到老路面,然后重新画车道线(git tag),再公告所有走这段路的司机(5.15 用户)把车开到最新的路面上。司机不需要关心坑具体在哪个桩号,但必须升级 tag 才能开到铺好的新路面。

另一个角度,可以把它想成"银行系统每天的日终批处理":白天可能零散记账,晚上一次性把若干交易按规则入账并打一个 end-of-day 戳,所有下游对账以这个戳为准。stable release tag 就是这个 end-of-day 戳。

Highlight:风险与注意点

  • drivers/dma/sh/rz-dmac.c 减 94 行:这种规模删除通常不是单纯 refactor。可能是 driver 重写/移除老旧 IP 支持,要看 changelog 是否同步 cherry-pick 了对应的 fix,避免在 driver 行为变更层漏 ctx。
  • PowerPC cputime/time 改动(合计 100+ 行):升级后建议对比升级前后的 /proc/stattop 显示 cputime 与 cgroup cpu.stat,确认没有出现累积漂移或回退。
  • ARM npcm SMP boot 节点引用:节点泄漏补丁如果漏 upgrade,secondary CPU 启动失败概率会上升——LTS 升级时把这条 patch 单独核对一次。
  • 公告未附 changelog per-fix:stable 公告通常只列文件清单,单条 commit hash 需要用户到 git log 自己查;与发布同步的 linux-stable-5.15.y git log 是必查项。
  • 5.15 属于 LTS,跨子系统的多个 fix 同时进内核,要回归 RBD、bluetooth qca、CIO、amd gpu 等容易回滚的子模块。
  • 与调度器强相关的改动落在 PowerPC cputime 累计和 cpufreq/powernow-k8 两条路径,对这两个子模块的 power/性能基线建议在升级前后各跑一次回归。

版本变化

本次输入仅涵盖 SUBLEVEL = 215 → 216 一次 patch bump,没有 vN→vN+1 逐版对比输入。Makefile diff 是唯一版本号变更。

一句话总结

Greg Kroah-Hartman 发布 5.15.216 stable,把跨 PowerPC cputime、SMP boot 节点泄漏、x86 KVM nested 和大量驱动稳定分支的修复一次性回流,要求所有 5.15 用户升级到 linux-5.15.y。