本周两条主线:内核里跑了 15 年的 Binder C 驱动被整体删除, Rust 版正式转正——这是第一次有生产级 C 子系统被 Rust 完整替换(-11470 行); 另一条是内核原地升级,PCI v9 收敛、IOMMU v5 已发, 只剩 VFIO 那层还没演示过跨 kexec 的连续 DMA,目标 Linux 7.4。

封面 · 9月27日 · 每周全局雷达

📊 板块热度

/ column
板块热度条形图 · 本周(09-21~09-27)

本周(09-21~09-27,7 天每日 24h 窗口累加)总计数 11931:net 3943 · DRM 1910 · mm 1899 · fs 979 · media 921 · PCI 855 · arch 424 · Rust 360 · block 342 · LSM 189 · rt 98 · virtio 11。 net 依旧是量最大的一头,但本周分量最重的机制改动都不在数量最多的那个板块—— 最重的一条在 Rust(360 票的板块)。

💡 本周头条

/ section

Rust 吃下 Binder:跑 15 年的 C 驱动被整体删除,-11470 行

〔09-12 提交,本周列表与 LWN 持续讨论〕· binder: rm -f binder.c(Carlos Llamas,commit fd2bc059ed46)

现状 Binder 是 Android 的 IPC 基石,C 实现存在了 15 年以上。Alice Ryhl 做的 Rust binder 已经在 Android 设备上跑了相当一段时间,功能对齐、性能相当甚至更好。
方案 一帖删掉整个 C 实现:20 个文件、9 行新增、11470 行删除,包括 drivers/android/binder.c、binder_alloc.c 与它们的 KUnit 测试。 Kconfig 里 CONFIG_ANDROID_BINDER_IPC 改为依赖 Rust。
为什么 commit message 写得很直白:The day has finally come. 15 年来 C 驱动越来越复杂, 维护与加新特性都极其痛苦、还总踩漏洞。作者的原话是,Rust 版跑到现在 已经不能叫 experiment 了。
下一步 本地三镜像实测:linux-next 已有(next-20260921),mainline 尚未合入、stable 未回移植—— 排队等 7.4 merge window。
一句话点评 这是内核史上第一次用 Rust 实现完整替换生产级 C 子系统。它决定的不只是 Binder, 而是「Rust 能不能吃下更大的子系统」这件事的舆论基础。

内核原地升级:PCI 与 IOMMU 都接住了,只差 VFIO 那一层

〔09-25 22:30 北京〕· [Hypervisor Live Update] Notes from September 21, 2026(Pasha Tatashin)

现状 不重启换内核,前提是三样东西能被新内核原样接过去:设备(PCI 配置空间、总线号、ACS 控制)、 DMA 映射(IOMMU 页表与 ATS 状态)、设备文件(VFIO 交出去的 fd 与驱动内部状态)。
进展 PCI 侧 David Matlack 已发 v9,回答了 Bjorn 对 v8 的全部意见,主要设计问题收敛; IOMMU 侧 Samiullah Khawaja 发了 v5;LUO 文档已由 Mike Rapoport 合入 liveupdate 树。
缺口 VFIO 只保住了设备文件描述符,不足以跳过 shutdown/freeze 时的设备复位, 所以还演示不了「跨 kexec 的连续 DMA」,要等 Vipin Sharma 十月回来处理。
下一步 计划 1-2 周内进 liveupdate/next,理想赶在 7.3-rc6 之前、落在 Linux 7.4。 LPC 议题也换了:原本给 PCIe 的微会议时段改谈 tmpfs 保留,另开一场专谈「版本与兼容」—— 说明「换内核时用户态状态怎么办」才是真正没解决的那部分。
一句话点评 设计问题确实收敛了,但「接得住」目前只覆盖 PCI 和 IOMMU 两层。7.4 能不能赶上,看接下来两周 review 速度。

📰 mm 内存管理

/ column
页表释放 RCU 化收官 剩余架构全部转成 RCU 延迟释放,然后整体删除 CONFIG_MMU_GATHER_RCU_TABLE_FREE—— 语义从此只有一份。铺垫数年,本周从 v4 走到 v5,跨十几个架构。统一后无锁页表遍历成为全架构基础设施。 原文
消灭 VM_SPECIAL(40 帖) VMA flag 语义显式化的 v3,40 帖规模。mm 子系统正在把多年的隐性约定逐条显性化。
虚拟交换空间走向之辩 Virtualized Swap 该由内核直接管、还是用户态用 PSI 就够——21 帖讨论。swap 抽象化是 mm 的方向性热点。 原文
机密计算内存语义成对出现 CoCo 共享内存分配器 v8 把散在 dma-direct/dma-pool/swiotlb/GIC-v3 ITS/dma-buf 五条路径的 「对齐+清零+分配」收成单一权威来源;guest_memfd 原位转换 v13(44 帖)被合入。一个管 host 共享,一个管 guest 私有。

📰 Rust

/ column
Binder C 退场 本周最重机制变更,详见头条。
Rust PCI SR-IOV v2 把 SR-IOV 的完整生命周期(PF 注册 → VF 使能 → sysfs 触发)搬进 Rust 抽象层。 本地三镜像:mainline 未合入 / 不在 next 队列。 原文
Rust XArray 抽象 XArray 是内核「稀疏索引 → 指针」的主力数据结构(页缓存、IDR 都靠它),Rust 侧一直没有对应封装。 Rust 驱动要用页缓存类设施时不必再手写 unsafe 胶水。 原文
网络子系统的 Rust 抽象:还没有 有人在 rust-for-linux 问「net 的 Rust 抽象在哪」,答案是暂时没有。 跟踪 Rust for Linux 成熟度的直观方法:看它把 C 侧核心数据结构封装完几个了。

📰 media 视频采集

/ column
OV2312 RGB-IR:8 个新格式 4×4 RGBIr 阵列,2×2 的格式表描述不了它。一帖补 8 个 10-bit 格式,并沿采集链路铺到 DS90UB960 去串行器、Cadence CSI-2 RX、TI J721E CSI-2 RX。 原文
GMSL2/3 串行器 v16 卡在 CI v16 技术内容基本收敛,今天讨论的是流程:CI 里 smatch 告警是误报,修复在 devel 分支但没进 master。 卡点已从代码转移到工具链——大系列最后一公里。 原文
v4l2 buffer 追踪下沉到设备级 此前追 V4L2 buffer 只能靠 /sys/kernel/debug/dma_buf/bufinfo 这类子系统无关的全局视图, 多驱动并发时无法归属。新系列新增 debugfs 树 /sys/kernel/debug/v4l2/<dev>/mem, 配套用户态工具 v4l2top。Sashiko review 标了 3 个 High(生命周期 UAF)。
镜头 VCM 的 runtime PM 要和 sensor 联动 VCM 是弹簧回位的,维持对焦要持续供电;一旦允许独立 runtime suspend,拍摄中途镜片会漂回原点。 新增 V4L2_SUBDEV_FL_PM_LINK。维护者 Sakari 对实现形态仍有异议(flag vs 统一按 ancillary link 处理)。 原文

📰 DRM 显示

/ column
panthor 27 帖:Mali v15 硬件虚拟化 v15 原生有 16 组「访问窗口」,GPU 硬件在窗口间分时切片;软件侧只负责仲裁与调度。 代价是驱动必须处处「可被让出」。 原文
给每个 drm_panel 内嵌 drm_bridge(19 帖) 面板与桥接层的结构重构,v3 阶段。
drm/fabric 想用 netlink,网络维护者回了「别用」 GPU 互联拓扑做成 netlink 的提案,遭遇跨子系统设计边界的公开争论。 原文
drm/xe wedge 隔离 / nouveau HDMI 色彩链路 xe 把卡死设备从硬件访问中统一拒绝;nouveau 补齐 HDMI 色深、YCbCr 与量化范围。

📰 net 网络

/ column
vxlan 配置全面 RCU 化 Eric Dumazet 的 8 帖,dump 走无锁路径——「读多写少的配置表就该 RCU」的又一次标准落地。 原文
Meta 自研网卡 mpnic 首次上游 数据中心自研 NIC 又一家进主线(AWS 有 EFA、Google 有 gve)。首版系列的价值在「定框架」。 原文
ipvs ICMPv6 越界写:一次修到 6 个 stable 分支 本周安全侧最该注意的修复。 原文
通用 PON 框架 RFC GPON 无源光网络想进内核。

📰 fs 文件系统

/ column
XFS 实时数据校验(21 帖) RT 设备用于存大文件,此前没有校验和。Chrtistoph Hellwig 给 RT 数据加校验和, 并与 zoned 垃圾回收协同。大文件存储第一次有端到端一致性保障。 原文
挂载命名空间堵引用计数环 UMOUNT_CONNECTED 场景下引用成环、谁也释放不了谁。引用计数成环是所有带生命期管理的子系统都会踩的坑。 原文
MXFS:从 XFS 派生的集群文件系统 面向多节点共享同一块磁盘,复用 XFS 磁盘格式,在集群协调层做文章。

📰 PCI / 总线

/ column
PCIe 原生控制权简化到 v14 把 AER/热插拔/PME 的归属判定收敛。14 个版本说明这类「看着简单」的收敛, 难在所有边角平台的行为都不能变。 原文
配置空间保存状态按偏移建索引(15 帖) 休眠/恢复路径的保存逻辑从「N 份重复代码」收敛成一份。 原文
pciehp:固件偷改 HPIE 导致热插拔中断被丢 改成单独跟踪驱动自己的设置。 原文
P2PDMA v7:按 TLP 类别判断直连 不放松隔离语义,只把判断粒度从「整条路径」降到「每个 TLP 类别」。

📰 block 块设备

/ column
dma-buf backed bio 进入核心维护者细审 昨天 io_uring dma-buf 系列的 block 层底座,Christoph Hellwig 开始逐帖评审。 原文
DRBD 9 想回主线 块设备级网络镜像,8.x 曾在主线后移出,DRBD 9 树外发展多年。7 帖先遣做准备工作。 原文
blk-iocost 给 flush 和 zone append 记账 v4 阶段。

📰 arch 架构 / 构建

/ column
kbuild 22 帖:全量构建快 36% 空转构建从 15s 压到 1.4s,九种架构验证、System.map 逐字节一致。对天天编内核的人是今年获得感最直接的一个系列。 原文
小米 vmalloc 加速:RK3588 实测 vmap 快 8.3 倍 前置动作是把 cont-PTE 块映射从 HugeTLB 解耦——以前 CONFIG_HUGETLB_PAGE=n 的内核会静默失去这个优化。 原文
kallsyms 查找提速约 7 倍 v4,4 帖,受益者是所有走 kallsyms 的调试与追踪路径。
lib 停止 fork LZ4,改为 vendor 上游 机制级重构。

📰 LSM 安全

/ column
landlock 新增元数据访问权(12 帖) LSM 钩子从「传 inode」改成「传 struct path」,让 landlock 能按路径区分「读元数据」与「读内容」, 新增 READ_METADATA/WRITE_METADATA。Landlock ABI 11 → 12。评审中 Günther Noack 担心单独权限位 会造成难诊断的失败(先 stat 后 open 的路径)。 原文
AppArmor 补 SCTP connect 权限检查 v2 带上回归测试;同日 ipe 修两处 UAF。

📰 virtio / rt

/ column
virtio-usb 双角色驱动(8 帖) 本周唯一「新设备类」级提案:一个 virtio 设备同时当 USB 主机控制器与设备控制器。
virtio-blk 内联加密 v3 引入加密控制 virtqueue。此前 virtio-blk 派发 bio 时会丢弃 blk-crypto 元数据,导致内联加密引擎用不上。
RT:migrate-disabled 任务推送竞态修复 sched/rt,dl 跳过 migrate-disabled 任务再选 push 候选(CVE-2026-98087)。
RT:短 slice 任务延迟改善(8 帖) Vincent Guittot,已进 tip/sched/core。

📰 LWN 本周

/ column
io_uring 线程身份切换 Thread-identity switcheroo for io_uring
给 blk-iocost 加 BPF Adding BPF to blk-iocost
加速内核构建 对应本周 kbuild 系列。Accelerating the kernel's build process
内存分层近期工作 Recent work in memory tiering

🧭 合入状态

/ column
Binder C 删除 linux-next ✅ 已进(next-20260921)· mainline ⬜ 未合入 · stable ⬜ 未回移植。
Orphaned VM 46 帖 RFC mainline ⬜ · next ⬜ · stable — 。仍是 RFC,评审周期会很长。
panthor Mali v15 虚拟化 mainline ⬜ · next ⬜ · stable — 。27 帖体量,合入周期不会短。
vmalloc 加速 v9 mainline ⬜ · next ⬜ · stable — 。已到 v9,ARM64 路径有实测背书。
说明 本周重点补丁发布仅数日,review → 维护者树 → next → merge window 的链路尚未走完, 全部未合入属预期。三镜像反查由本地 mainline / linux-next / linux-stable 全历史索引得出。

📰 架构动向

/ column
Rust 从「实验」变成「替换」 本周之前,Rust for Linux 的叙事是「新驱动用 Rust 写」;Binder 这一刀之后, 变成「老 C 子系统可以被 Rust 替掉」。这两件事的舆论含义完全不同。
内核原地升级的边界正被逐层界定 PCI 与 IOMMU 已接住,VFIO 未接住,用户态状态完全没有方案—— LPC 专门开一场谈「版本与兼容」,说明真正的难点已经被识别出来了。
页表子系统的隐性约定在显性化 页表释放 RCU 化删配置项、hw_pte_t 给 PTE 立类型边界、消灭 VM_SPECIAL—— 同一周内三条线都在把「以前靠约定」的东西写进类型与语义。
AI 辅助写内核进入公开试水 LUO tmpfs 保留的 RFC 作者主动披露「主要由 LLM 生成」,自己把 1600 行砍到 977 行并通读全部代码。 另外 v4l2-ioctl 修复的 v2 按文档规范把 Assisted-by 改成 Assisted-by: LLM。

🎯 与你方向的交叉点

/ column
GMSL2/3 串行器系列 v16 v16 技术内容已收敛,卡在 CI 工具链。这个系列一旦合入就是上游第一个完整的 GMSL2/3 参考实现—— 评审节奏与 CI 治理方式都值得跟。
OV2312 把格式表铺到 DS90UB960 4×4 RGBIr 的 8 个格式定义在 media bus 层,SerDes 和 CSI-RX 一起走, 不用每颗芯片各造一套私有格式。你评估车载链路时这是现成参照。
VCM runtime PM 联动 相机链路最典型的一类坑——拓扑连了、电源没连。以后接新 VCM/闪光灯驱动时, 先查对方有没有挂 V4L2_SUBDEV_FL_PM_LINK。
v4l2 buffer 追踪下沉到设备级 多路 camera 并发时「这个 buffer 是谁分配的」终于能答。调漏 buffer / 内存泄漏时直接受益。

📖 本期概念速查

/ section
Live Update(内核原地更新) 不重启、不重新枚举设备就把内核换掉。要跨内核接过去的三样:设备(PCI 配置空间/总线号/ACS)、 DMA 映射(IOMMU 页表与 ATS)、设备文件(VFIO fd 与驱动状态)。
access window(访问窗口) Mali v15 GPU 的硬件虚拟化单元:16 组独立的任务提交寄存器组,GPU 在各窗口间分时执行。
cont-PTE(连续页表项) ARM64 特性:16 个物理连续且对齐的 4K 页用一条带连续标记的页表项表示,TLB 占用降为 1/16。
no-op build(空转构建) 什么都没改再跑一次 make。检验构建系统依赖追踪是否精准的照妖镜,本周从 15s 压到 1.4s。
shared granule(共享粒度) 机密计算里 host 与 guest 共享内存的最小单位:一个 granule 要么整块共享、要么不共享, 切换时要清零。它比 guest 的页大(如 64K vs 4K)。
RGBIr(4×4 阵列) 比 2×2 Bayer 多一个 Ir 像素的传感器阵列,可见光与红外同时采集。 2×2 的像素格式编号方式描述不了它,这是 8 个新格式的来源。

如果对你有用,点个赞,或转给需要的朋友。

数据来源:lore.kernel.org(全内核 13 列表)+ LWN + 本地三镜像 · 北京时间