本周内核全局,三件事最值得记:Rust 驱动生态集中提速——PCI capability/SR-IOV、DRM KMS 抽象、vino 验证驱动、runtime PM 同周推进(NVIDIA/Arm 双厂);mm 把 HugeTLB 的 vmemmap 优化并入通用 sparse-vmemmap 路径,机制级换轨;7.3 合并窗口开启,net-next 关闭只收修复。此外 tcp 一处 UAF 修复已合入 net、virtio 映射层 API 继续收缩。

封面 · 8月30日 · 每周内核雷达

📊 板块活跃度

/ column
板块活跃度条形图 · 本周(周一~今日 · 2天累计)

本周(08-24~08-30,2 天累计,历史热度部分缺失)各板块热度:lkml 1475 · net 205 · mm 174 · DRM 103 · fs 86 · PCI 36 · block 32 · media 30 · Rust 18 · rt 14 · LSM 9 · arch 2 · virtio 0。net 与 mm 领跑(net-next 关窗前的修复密集期 + mm 机制大系列);virtio 规范讨论分散到 lkml/netdev,列表热度极低。

💡 本周头条

/ section

Rust 驱动生态集中提速:PCI SR-IOV + DRM KMS + vino + runtime PM 同周推进

〔08-26~08-28〕rust-for-linux / dri-devel / linux-pci · 四个机制级系列

现状 Rust 写内核驱动聊了很多年,但一直缺「安全、可用的地基」:PCI 能力访问、显示 KMS 对象、电源管理等核心子系统都没有类型化抽象,驱动作者要么绕过(用 unsafe),要么干脆不用 Rust 写。
痛点 没有这些基础设施,Rust 驱动就是空谈——尤其 NVIDIA 的 nova-core vGPU 驱动、DisplayLink 坞站这类真驱动,一到 PCI 扩展能力、KMS 生命周期、runtime PM 就卡壳。
方案 四个系列同周到位:Zhi Wang 的 Rust PCI capability + SR-IOV(v9,新增 rust/kernel/pci/cap.rs 类型化能力查找);Mike Turquette 的 DRM KMS 抽象(v3 23 篇,模式对象生命周期/属性/回调/帧缓冲安全绑定)+验证驱动 drm/vino(DisplayLink DL3 坞站,零 unsafe);Beata Michalska 的 runtime PM 抽象(v3,生成式 dev_pm_ops + PMOps trait)。
为什么 PCI 能力/SR-IOV 是 nova vGPU 的前置依赖,KMS 抽象则是「Rust 能否支撑真实显示驱动」的关键验证——vino 用纯 safe Rust 点亮三种坞站世代,就是给这条路背书。
效益 Rust 侧第一次有了可落地的显示/PCI/电源三件套:新驱动可以写安全的并发与生命周期,unsafe 集中到内核抽象内部而不是散在驱动里。
下一步 四个系列都在 review 收敛期(v9/v3/v3),下一合并窗口见分晓;nova-core vGPU 是首个吃这套基建的旗舰驱动。
一句话点评 Rust 内核驱动从「能不能」走向「批量落地」——本周的地基比楼多

mm 把 HugeTLB 的 vmemmap 优化并入通用 sparse-vmemmap:HVO 泛化

〔08-25〕linux-mm · PATCH v5 00/17(Muchun Song,字节跳动)

现状 大页(HugeTLB)的内存开销有一块隐性成本:vmemmap——每个物理页都有一份 struct page 元数据。为了省这块内存,HugeTLB 很早就实现了 HVO(tail 页共享同份 vmemmap),但它走的是自己的一套早启动预填充路径,sparsemem 子系统为此专门保留了 SPARSEMEM_VMEMMAP_PREINIT 开关。
痛点 HugeTLB 专属的 bootmem vmemmap 优化和通用 sparse-vmemmap 是两套代码,DAX 设备页想享受同样的去重却没通道——机制重复、无法复用。
方案 v5 17 篇让通用 sparse-vmemmap 具备 section 感知优化能力:HugeTLB 把 compound order 记进 struct mem_section,由通用填充路径分配/复用共享 tail vmemmap 页,随后删除 SPARSEMEM_VMEMMAP_PREINIT、HUGE_BOOTMEM_HVO 等专属机制。v5 净删 449 行、加 299 行。
为什么 这是更大的「Generalize HVO for HugeTLB and device DAX」系列的自包含第一步——把去重能力下沉到通用层,DAX 设备页未来直接吃同一套路径,不用再造轮子。
效益 机制层去重:大页内存元数据开销下降,且 HugeTLB 与通用 vmemmap 路径合一,后续维护点减少。
下一步 已由 Andrew Morton 合入 mm.git 的 mm-new 暂存分支(-rc1 后转 mm-unstable → linux-next);device DAX 转换留给后续系列。
一句话点评 把「省内存的机制」本身也通用化——少一套专属代码,多一条 DAX 通道

📰 各板块分章

/ section

mm:mglru 保护击穿修复 + vmalloc 活锁 + zswap dropbehind

linux-mm · 三个修复/机制系列

mglru 保护 非 kswapd 回收路径完全跳过保护计算,cgroup 的 memory.min=100M 被静默回收到 6M;修复沿 root→目标祖先链算有效 min/low(O(depth))。
vmalloc 活锁 内存压力下 __purge_vmap_area_lazy() 持锁等 flush,直接回收又反抢同一把锁→死锁整机;改 mutex_trylock 破环。
zswap dropbehind 写回后的冷 folio 即时释放(99.996% 命中),把 dropbehind 从 page cache 泛化到 swap cache。
和你相关 多租户内存隔离、内存压力稳定性、zswap 部署,均值得关注。

media:IMX908 v3 + 无 datasheet 的 OV32C4 屏下摄像头

linux-media · 新增 sensor 驱动

IMX908 Sony 8.39MP Type 1/2.8 传感器驱动 v3 趋稳:CCI 寄存器访问 + subdev 状态锁,libcamera + RPi5 实测,新一代 Sony 驱动范式。
OV32C4 32MP RGBC 屏下前摄(Lenovo Yoga Slim 9):无公开 datasheet,1787 条寄存器表从 vendor Windows 驱动反推——「无 datasheet 驱动」的合入范式。
和你相关 摄像头/传感器栈、Intel IPU 平台。

DRM:通用 USB-C DP HPD bridge(v7)+ Renesas RZ/G3E

dri-devel · 桥接机制 + 新 SoC 支持

HPD bridge 多款 USB-C 控制器此前各自重复注册 HPD bridge,做成通用 Type-C DP HPD bridge + RK3399 多 bridge 模型,并推进弃用 extcon。
RZ/G3E Renesas 双 Display Unit + LVDS/DSI/并行输出的完整支持(v8)。
和你相关 显示桥接热插拔、Renesas 显示栈。

net:tcp UAF 合入 + hv_netvsc 给 CoCo VM 解禁 SR-IOV

netdev · 合并窗口期以修复为主

tcp UAF BPF 拥塞控制使 icsk_ca_ops 指向动态内存,getsockopt 无锁读 + 并发换指针 → slab UAF(含 KASAN 复现),已合入 net(5271b79b7ad6 / 385e474086c2)。
CoCo SR-IOV 反向回退 2021 年的「隔离 guest 禁用 SR-IOV」:MANA 加固后,机密计算 VM + 高吞吐 VF 从不可行变可行。
和你相关 TCP 安全修复(走 stable 预期)、机密计算网络。

fs:famfs v14 + NeilBrown negative dentry v3 + hfsplus 迁 iomap

linux-fsdevel · 新 FS + VFS 核心 + 去 buffer_head

famfs Fabric-Attached Memory FS 回 standalone 形态(v14),DAX 设备按路径注册次级 daxdev,新 FS 系列。
dentry v3 负目录项问题又切一刀:d_sib 链表不再乱搬、fsnotify 不再持 i_lock——为 dentry 并发迭代改造解锁。
hfsplus 常规文件 I/O 全量迁 iomap,与 minix/nilfs2 构成「去 buffer_head 直 IO」运动。
和你相关 DAX/持久内存、VFS 地基、老文件系统现代化。

PCI:endpoint 远程 DMA via vNTB(v2 机制级)

linux-pci · endpoint DMA auxiliary resource

定位 PCIe 端点设备侧 DMA 通道此前对 NTB 主机侧不可见。
做法 endpoint 加 DMA auxiliary resource 元数据 → dwc 暴露 → epf-vntb 导出 → 主机侧发现 vNTB-embedded DMA,实现「vNTB 远程 DMA」。
和你相关 PCIe endpoint/NTB 场景,端点 DMA 复用点。

virtio:映射层 API 收缩(DMB 系列)+ RX 卡死看门狗

virtio-dev / linux-kernel · 机制 + 新检测框架

DMB Device Memory Buffer 让设备自有内存支撑 virtqueue,直指机密计算(免 swiotlb)与 vhost-user 隔离;virtio_map_ops 删除 sync 回调,操作数 9→6。
RX 看门狗 virtio_net 首次给 RX 侧加卡死检测(hypervisor 漏中断 → 队列静默卡死,此前 TX 有 watchdog RX 是空白)。
和你相关 机密计算、vhost-user、virtio 网络稳定性。

LSM:BPF 下发 Landlock 规则 + SELinux 拦 FOLL_FORCE

linux-security-module · 沙箱接口 + /proc/self/mem 加固

Landlock × BPF 让 BPF 程序直接应用 Landlock 规则集——沙箱规则从 syscall 路径接到 eBPF 生态,容器/卸载器可按 cgroup 动态下发。
FOLL_FORCE SELinux 对 /proc/self/mem 的强制读内省开始要求 PROCESS__PTRACE 权限,堵住绕过 ptrace 的进程内存自省路径。
和你相关 沙箱生态、安全加固、容器隔离。

block:错误注入支持延迟 + blkdev 文件操作修复 v2

linux-block · 机制 + 修复

错误注入 delay_us block 错误注入框架扩展延迟能力,故障注入更贴近真实 IO 时序。
blkdev 修复 七处竞态/语义修复:CONFIG_BUFFER_HEAD=n 的 mmap 写丢失、splice 读路径 i_rwsem 竞态、IOCB_ATOMIC 改为失败而非撕裂等。
和你相关 故障演练、块设备 I/O 正确性。

arch:arm64 fixmap 页表只读化 + s390 命令行告警

linux-arch · 防御纵深 + 诊断

fixmap 只读 Ard Biesheuvel 把页表只读覆盖从 PTE 扩到中间级页表,fixmap 中间页表移入 .rodata——arm64 内存布局防御纵深。
s390 EBCDIC 内核命令行含非可打印 EBCDIC 字符时告警,排查字符集转换错误。
和你相关 架构安全加固、s390 启动诊断。

sched / rt:LLC 粒度缓存感知调度(RFC v2)+ sched/proxy 代理解析重构

lkml / linux-rt-devel · 调度机制

LLC 聚合 Hygon 23 篇把 cache-aware 聚合从固定 LLC 中心改为 LLC 粒度 + NUMA 距离序,hackbench 中位 +27.7%。
sched/proxy v3 把 donor 提交推迟到代理解析成功之后,消除大量废弃提交(proxy-mutex 压力测试实证)。
和你相关 调度拓扑感知、代理执行主线,RT/dl-server 语义。

📌 机制雷达:跨域大改动

/ section
Rust PCI capability/SR-IOV 类型化 PCIe 能力查找 + SR-IOV 寄存器布局,nova vGPU 前置 · 原文
Rust DRM KMS 抽象 模式对象生命周期/属性/回调/帧缓冲的安全绑定,vino 验证驱动 · 原文
HVO 泛化 HugeTLB vmemmap 优化并入通用 sparse-vmemmap,删专属机制 · 原文
virtio 映射层收缩 DMB 系列删 virtio_map_ops sync 回调,操作数 9→6 · 原文
LLC 缓存感知调度 cache-aware 聚合改 LLC 粒度 + NUMA 距离序,23 篇 · 原文
hfsplus → iomap 常规文件 I/O 迁 iomap,去 buffer_head 直 IO 运动一环 · 原文
Landlock × BPF BPF 接口下发 Landlock 规则集,沙箱接到 eBPF 生态 · 原文

🧭 合入状态(三镜像反查)

/ column

对本周报道的重点补丁批量反查本地三镜像(mainline / linux-next / stable):本周在途系列全部未合入 mainline、不在 linux-next 队列、未回移植 stable——符合 review/排队期规律(7.3 merge window 刚开,多数要落后续窗口)。两个例外值得记:HVO v5 已由 Andrew Morton 合入 mm.git 的 mm-new 暂存分支(主线排队中);tcp UAF 修复已合入 net 修复树(5271b79b7ad6 / 385e474086c2,走 stable 预期)。未命中不排除 mid 变动/被后续版本取代,如实标注。

📰 LWN 本周

/ column
合并窗口 The beginning of the 7.3 merge window · https://lwn.net/Articles/1089244/
Rust/块 The "rnull" Rust block driver · https://lwn.net/Articles/1090378/
调度 Using steal time to moderate CPU demands · https://lwn.net/Articles/1090381/
版本 Development statistics for the 7.2 kernel · https://lwn.net/Articles/1088776/
BPF BPF, continuous testing, and stable kernels · https://lwn.net/Articles/1087823/
架构 128-Bit page tables for Arm · https://lwn.net/Articles/1088125/
块层 Block-layer error injection · https://lwn.net/Articles/1086344/
虚拟化 KVM planes head for takeoff · https://lwn.net/Articles/1087590/
BPF Even more formal verification for BPF · https://lwn.net/Articles/1087069/
FUSE FUSE status and plans · https://lwn.net/Articles/1086336/

📖 本期概念速查

/ section
vmemmap 稀疏内存的页元数据(struct page 数组);大页下它本身也是内存开销
HVO HugeTLB Vmemmap Optimization:大页 tail 页共享同一份 vmemmap,省元数据内存
sparse-vmemmap 按 section 惰性填充的页表布局;HVO 泛化把去重能力下沉到这里
endpoint DMA PCIe 端点设备自身的 DMA 引擎;vNTB 远程 DMA 让其对 NTB 主机侧可用
vNTB 虚拟 NTB:把端点设备模拟成 NTB 主机桥,跨主机共享 DMA 通道
iomap 现代文件系统 I/O 映射框架,正逐步取代 buffer_head 直 IO 路径
buffer_head 老式块缓冲描述结构;hfsplus/minix 等正迁离它
Landlock 无特权可用的沙箱 LSM;本周讨论用 BPF 接口下发规则集
KMS DRM 内核模式设置(显示状态管理);Rust 侧开始提供安全抽象
DMB Device Memory Buffer:virtio 设备自有内存支撑 virtqueue,面向机密计算

Rust 驱动批量落地、vmemmap 换轨、7.3 窗口开启——这一周的地基比楼多。

数据来源:lore.kernel.org(全内核 13 列表)· LWN · 三镜像反查