sched discussion
Re: Linux 6.18.46
LLM 分析
Linux 6.18.46 stable kernel release
系列概况
| 字段 | 内容 |
|---|---|
| 标题 | Linux 6.18.46 |
| 作者 | Greg Kroah-Hartman |
| 版本 | 6.18.46(stable point release) |
| 来源频道 | lore.kernel.org sched(stable 公告被多频道抄送) |
| 规模 | 数十个文件,多个子系统 |
| 修改文件(节选) | Makefile、arch/arm64/boot/dts/nvidia/tegra194.dtsi、arch/m68k/Kconfig.cpu、arch/openrisc/{include/asm/processor.h, kernel/signal.c}、arch/powerpc/...、arch/riscv/kernel/ftrace.c、arch/x86/kvm/x86.c、block/genhd.c、crypto/ccm.c、drivers/{accel/amdxdna, ata, base/regmap, crypto/{qce,starfive,tegra}, firewire, gpio, gpu/drm/amd/amdgpu} 等 |
| 代码统计 | 由主帖 diffstat 给出(部分被截断) |
| Message-ID | 主帖 2026082308-gimmick-washed-83fa@gregkh;reply 2026082308-habitual-esquire-e4b7@gregkh |
| 完整性 | 主帖为完整 release announcement;reply 仅展示 diff 开头片段,完整 patch 集合需到 linux-6.18.y 分支查看 |
注:本帖来自 sched 频道,但并非 scheduler 子系统本体讨论,而是 stable 团队统一发布的 6.18.46 公告被多频道抄送。
补丁目的
把 6.18.y 分支从 SUBLEVEL=45 推进到 SUBLEVEL=46,集成一批经过 stable 团队 review 与回归测试的修复,覆盖 arm64 device tree、m68k Kconfig、openrisc signal context、powerpc、riscv ftrace、x86 KVM、block、crypto、amdgpu、ata、firewire、gpio 等子系统。运行 6.18.x 的发行版和嵌入式产品应当尽快升级。
Patch 概览
reply 邮件 body 中可观察到的具体改动(diff 片段):
Makefile:SUBLEVEL = 45→SUBLEVEL = 46arch/arm64/boot/dts/nvidia/tegra194.dtsi:timer 节点新增GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW与GIC_PPI 15之类的中断属性arch/m68k/Kconfig.cpu:新增NR_CPUS配置项,默认"1"arch/openrisc/include/asm/processor.h:新增SPR_SR_USER_MASK,限定 sigreturn 期间 user 态可触及的 SR 位arch/openrisc/kernel/signal.c:save_fp_state中新增old_sr = regs->sr保存现场;restore_sigcontext中保证 SM 位被清除
主帖附带的 diffstat 还列出 arch/powerpc/platforms/pseries/{lparcfg.c, papr-phy-attest.c, pci.c}、arch/riscv/kernel/ftrace.c、arch/x86/kvm/x86.c、block/genhd.c、crypto/ccm.c、drivers/accel/amdxdna/aie2_ctx.c、drivers/ata/libata-{eh,scsi}.c 与 libata.h、drivers/crypto/{qce,starfive,tegra}/...、drivers/firewire/ohci.c、drivers/gpio/gpio-{ml-ioh,sloppy-logic-analyzer}.c、drivers/gpu/drm/amd/amdgpu/{amdgpu_cs, amdgpu_device, amdgpu_gem, amdgpu_ttm, amdgpu_uvd, gfx_v12_0, jpeg_v4_0_5}.c 等大量变更(diffstat 行被截断)。
关键实现
Makefile 版本号 bump
-SUBLEVEL = 45
+SUBLEVEL = 46
构建系统、包管理器和 CI 缓存键都依赖 SUBLEVEL 判定这是新的 point release。
openrisc signal context 修复
+/* SR bits user space may change via sigreturn, the rest stay kernel owned */
+#define SPR_SR_USER_MASK (SPR_SR_F | SPR_SR_CY | SPR_SR_OV)
static long save_fp_state(struct sigcontext __user *sc)
{
+ unsigned long old_sr = regs->sr;
restore_sigcontext 中必须把 SM 位清掉,否则 user 态可能在 sigreturn 后意外进入 supervisor 模式。SPR_SR_USER_MASK 明确 user 可修改的 SR 位只有 F/CY/OV,剩下的位(F 之外的所有 supervisor 控制位)必须保留为 kernel owned。
m68k NR_CPUS 显式化
+config NR_CPUS
+ int
+ default "1"
很多 m68k 平台都是单核;显式声明默认值可避免后续 CONFIG_SMP=n/NR_CPUS 默认值变化时的回归。
跨子系统 fix 集
arch/powerpc/platforms/pseries/papr-phy-attest.c、arch/x86/kvm/x86.c、drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c、drivers/firewire/ohci.c、drivers/gpio/gpio-ml-ioh.c 等多个文件被改动(行数从 ±2 到 ±85 不等),表明这是一次范围较广的稳定化清理,不只局限于某个子系统。
类比
把 stable point release 比作一次小区物业的"周末集中消缺":各户上周报修的零散问题(水表慢转、电梯按钮接触不良、信报箱生锈)由物业统一汇总、一次性修完,并在大门口把公告牌从 "v45" 改成 "v46"。Makefile 的 bump 就是换牌子那一刻;每条具体 patch 都是某一户的具体报修。
SPR_SR_USER_MASK 的引入则像"交还钥匙核对清单":房东(kernel)把钥匙借给租户(user)时拍一张照片记录所有原始齿形,租户归还时核对清单上允许修改的只有 "F/CY/OV" 三处(对应门把手方向、节拍、声音),其它齿(对应整栋楼的安保开关)必须保持原样,否则租户可能趁交还时偷偷把总电闸也拧动一下(绕过 supervisor 检查)。
Highlight:风险与注意点
- 来源频道误判:本帖虽然挂在
sched频道,但内容与 scheduler 子系统无关,是 stable 公告被多频道抄送。阅读时不要被频道标签带偏方向。 - 升级节奏:stable release 通常意味着线上有可被 exploit 的修复,运行 6.18.x 的发行版与设备厂商应当尽快 bump,而不是跳过该 point release 直接追主线。
- m68k NR_CPUS 显式化:新增
default "1"会改变过去依赖隐式默认值的构建脚本行为;CI / 包脚本如果硬编码make -j$(nproc)之类的并行假设,需要核对。 - openrisc sigreturn SR:user 态能写的 SR 位被限定为
F | CY | OV,其余保留为 kernel owned,这是真实的安全/正确性 fix,需要 backport 到所有 openrisc 长期支持的版本。 - diff 不完整:reply 邮件 body 中只展示 diff 开头片段并被截断;阅读时要明确这只是 release 的一部分,完整 patch 集合需查
linux-6.18.y分支。 - 覆盖范围广:本次同时改动了 amdgpu、firewire、gpio、ata、KVM 等多个高风险子系统,merge 顺序与冲突解决需要谨慎;stable 团队的回归测试通常较为充分,但下游厂商仍应自行 smoke test。
版本变化
| 文件 / 字段 | 旧值 | 新值 | 说明 |
|---|---|---|---|
Makefile SUBLEVEL | 45 | 46 | point release bump |
openrisc SPR_SR_USER_MASK | (未定义) | F | CY | OV | sigreturn 安全边界 |
m68k NR_CPUS 默认值 | 隐式(依赖 CONFIG_SMP) | 显式 "1" | 避免默认值回归 |
tegra194.dtsi timer 节点 | 原 GIC 配置 | 增加 GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW | timer 中断路由修正 |
注:因 reply 邮件 body 被截断,无法逐文件列出 v45→v46 的全部 diff;以上是已观察到的少量对比。
一句话总结
6.18.46 是一次跨多子系统的 stable point release bump:Makefile 的 SUBLEVEL 由 45 升至 46,集成 openrisc sigreturn SR mask、m68k NR_CPUS 显式化、arm64 tegra194 timer 修正及 amdgpu/firewire/gpio/ata/KVM 等若干 fix,6.18.x 用户应当尽快升级。
+----------------------------+
| 6.18.45 (previous) |
+-------------+--------------+
|
v
+----------------------------+
| stable patch review |
| (subsystem maintainers + |
| Greg KH backport queue) |
+-------------+--------------+
|
v
+----------------------------+
| Makefile SUBLEVEL 45 -> 46|
+-------------+--------------+
|
+----------+----------+----------+
v v v
+----------+ +-----------+ +-----------+
| openrisc | | m68k | | tegra194 |
| sig SR | | NR_CPUS=1 | | timer IRQ |
+----------+ +-----------+ +-----------+
| | |
+----------+----------+----------+
|
v
+----------------------------+
| linux-6.18.y tree |
+-------------+--------------+
|
v
+----------------------------+
| users / distros / vendors |
| (must upgrade) |
+----------------------------+