合并窗第五天,相机栈是全场主角:Google 的 virtio-media 走到 v10,虚拟机里第一次有了像样的 V4L2 直通框架;树莓派把 六款索尼 Starvis 2 传感器并进一个公共驱动,删掉 1400 行重复代码。水面下, dma-buf 准备给 is_signaled() 的竞态默认上锁。

封面 · 10月30日 · virtio-media v10 与 Starvis 2 六型合一

📊 板块活跃度

/ column
板块活跃度条形图 · 近 24h · 全 12 列表

数据截至 10-30 06:23 北京,近 24h 各板块真实计数:DRM 503 · mm 441 · net 434 · fs 296 · PCI 210 · media 160 · block 124 · LSM 108 · arch 89 · Rust 45 · rt 8 · virtio 0。v7.4 合并窗第五天,DRM 凭 state readout v7(34 补丁)与 msm/tegra/tidss 一批大系列冲到榜首; mm 由 David Hildenbrand 的 47 补丁修复系列撑住次席;block 则是 Bart Van Assche 98 补丁大修复系列的集中评审日。

🎬 今日导读

/ section
头条 virtio-media v10——虚拟机里的标准 V4L2 相机,MMAP 已通、DMABUF 在路上
头条 索尼 Starvis 2 六型合一——imx678 驱动重构为公共驱动,新增五款传感器
机制 dma-buf 治 is_signaled 竞态、DRM state readout v7、VFS 出错不再一刀切只读、virtio-blk 内联加密
板块 media / DRM / mm / fs / block / net / Rust / sched 八域有 signal
速查 virtio、V4L2、dma-fence、Starvis 2、SOF/EOF、SB_RDONLY

💡 今日头条

/ section

虚拟机里的相机有着落了:virtio-media v10 交出 MMAP 答卷

〔10-29 23:30 北京〕· [PATCH v10 0/5] media: add virtio-media driver · Brian Daniels (Google)

现状 虚拟机(guest)要用相机,传统只有两条路:把 USB 相机整个直通给客机,或者宿主机独占设备后想办法把画面二次转发。
痛点 USB 直通意味着设备被一台客机锁死,热迁移基本无望;客机里看不到标准 V4L2(Video4Linux2,Linux 视频采集 API)设备,现有相机应用栈一套都用不上。
方案 virtio-media 在客机里注册一个真正的 V4L2 设备节点,把 ioctl 与帧数据经 virtio(虚拟化标准 I/O 接口)通道转发给宿主机的真实相机栈——本质是用户态与 virtio 虚拟设备之间的 V4L2 中继。v10 补齐 MMAP buffer 映射。
为什么 驱动有意不用 VB2 等 V4L2 常规框架——中继没有自己的内存管理需求,复杂度集中在 scatterlist_builder 高效拼 virtio 描述符链、能不拷贝就不拷贝。
效益 客机里的相机应用不加修改就能用宿主机相机;作者在 crosvm(ChromeOS 虚拟机监视器)上跑通了 v4l2-compliance,意味着行为向真实 V4L2 驱动看齐。
下一步 DMABUF 支持落地后走零拷贝路径;v10 已相当成熟,合入主线后「虚拟化相机」会成为标准件而非各家私有方案。
一句话点评 十轮迭代磨出来的框架,设计克制(只做中继、不碰 VB2)是它最大的长处。

六款索尼传感器一个驱动:imx678 重构为 Starvis 2 公共驱动

〔10-29 22:18 北京〕· [PATCH v7 00/18] Update imx678 to act as a common Sony Starvis 2 driver · Dave Stevenson (Raspberry Pi)

现状 索尼 Starvis 2 是安防与低照度场景的主流传感器族,内核里已有 IMX678(800 万像素)的驱动。
痛点 同族的 IMX662/675/585/832/676 寄存器布局高度相似,各写各的驱动就是五份近乎重复的代码、五份维护负担。
方案 树莓派的 Dave Stevenson 把 imx678.c 重构为公共 sony-starvis2 驱动——旧驱动 1447 行整体删除,曝光范围、HMAX(行长上限)、链路频率全部参数化,一次新增五款型号支持。
为什么 封面信说得很直白:写 IMX662 时发现与 IMX678 共性太大,「与其再交一个独立驱动,不如合成公共驱动」。索尼手册没写清 HMAX 上限,IMX675/585 的边界是靠实测图像劣化点标出来的。
效益 后续新型号入族只需加一张参数表;用这几款传感器的板子(树莓派生态为首)直接受益。
下一步 v7 已收敛 Sakari 的多轮评审意见,接近合入;这套「参数表驱动族」模式可能被其它传感器家族复制。
一句话点评 传感器驱动从「一款一驱动」转向「一族一驱动」的教科书案例。

📰 media

/ column

★ ★ 高通 camss 补帧同步:SOF/EOF 序列逻辑 14 补丁

〔10-29 17:55 北京〕· [PATCH 00/14] Add SOF/EOF sequence logic · Bryan O'Donoghue (Linaro)

定位 高通相机子系统 camss 的 CSID/VFE 层——帧边界(SOF=帧开始、EOF=帧结束)事件此前没有统一的序列跟踪,多路 RDI 输出时帧对不上号。
做法 引入 SOF/EOF 序列计数与逐代 CSID(gen2/gen3/680)的跟踪开关,流式传输期间加 CPU 延迟 QoS 约束,最后在 sdm845/sm8250/sm8650/x1e/x2e 上逐平台启用 frame_sync_en。
效益 丢帧、错帧可检测可定位;高通各代平台的帧同步行为拉齐。
和你相关 做高通平台相机链路的话,这套序列号是以后排查帧完整性问题的基础设施。

★ ★ 索尼 IMX908 传感器驱动 v6

〔10-29 13:00 北京〕· [PATCH v6 0/2] Add bindings and driver for Sony IMX908 · Lachlan Michael (Sony)

定位 media i2c 传感器层——工业检测用全局快门传感器 IMX908 进主线。
做法 DT bindings + 驱动两件套路演到 v6,评审意见集中在寄存器时序与曝光控制语义。
效益 工业相机/机器视觉方案商少一份私有驱动维护。
和你相关 全局快门传感器是工业视觉刚需,这条线值得持续盯。

📰 DRM

/ column

★ ★ KMS 学会读回硬件状态:state readout v7(34 补丁)

〔10-29 15:34 北京〕· [PATCH v7 00/34] drm: Implement state readout support

定位 DRM 核心层——内核接管显示时,此前靠「假设硬件是白纸」,bootloader 已点亮的屏会被闪断重配。
做法 34 补丁给 KMS 加系统的硬件状态读回:把 connector/crtc/plane 的实际寄存器状态读出来重建软件状态。
效益 是 flicker-free boot(开机不闪屏)与平滑接管 bootloader 画面的地基;v7 说明设计已过多轮返工,趋于定型。
和你相关 嵌入式显示链路调试时,状态读回能直接告诉你「硬件现在到底配成了什么样」。

★ ★ RK3588 vop2 冲击 8K 输出 v2

〔10-29 16:22 北京〕· [PATCH v2 0/3] drm/rockchip: vop2: Add 8K support for RK3588 vop2

定位 rockchip 显示驱动层——RK3588 的 vop2 显示控制器解锁 8K 模式。
做法 3 个补丁放开 vop2 在 RK3588 上的 8K 时序与带宽限制。
效益 RK3588 板子接 8K 屏/8K 输出从「硬件支持、驱动卡着」变成可用。
和你相关 正在 RK3588 上做显示链路的读者,这条直接相关,值得拉下来实测。

★ ★ HDMI 2.2:从显示器读 FRL 速率能力

〔10-29 08:42 北京〕· [PATCH 0/2] drm: Support HDMI 2.2 FRL rates from the sink · Jerry Zuo (AMD)

定位 DRM 显示核心层——HDMI 2.2 的 FRL(Fixed Rate Link,定速率链路)模式此前由源端硬编码速率档位。
做法 改为从 sink(显示器端)读它声明支持的 FRL 速率,源端按真实能力配置。
效益 新面板的高刷新模式即插即用,不用等驱动逐个补白名单。
和你相关 调 HDMI 显示输出时,「屏能跑多少」从此以屏说的为准。

📰 mm

/ column

★ ★ David Hildenbrand 的 47 补丁「紧急?」修复包 v2

〔10-30 04:33 北京〕· [PATCH v2 00/47] mm: various (urgent?) fixes · David Hildenbrand

定位 内存管理核心层——合并窗后半程的大体量修复合集,覆盖 folio/hugetlb/内存热插拔等多个边界条件。
做法 47 个补丁打包成系列统一评审,标题里的问号是作者对「该不该全部走 urgent 通道」的自嘲。
效益 一批边界 bug 在 rc 前集中清账,降低 v7.4 正式版踩雷概率。
和你相关 mm 大系列是观察「哪些边界条件正在出问题」的最好样本。

★ ★ slab 加固特性改为启动期可选 v2

〔10-29 14:07 北京〕· [PATCH v2 0/6] mm/slab: Support selecting slab hardening features at boot · Chris Down

定位 slab 分配器安全加固层——freelist 加固、随机化等特性此前只能编译期定死。
做法 6 个补丁把加固特性挂到启动参数,发行版同一份内核镜像可按场景开关。
效益 安全敏感的部署开满、性能敏感的关掉,不用维护两份内核。
和你相关 做产品内核配置策略时,这条直接改变「加固 vs 性能」的取舍方式。

📰 fs

/ column

★ ★ 文件系统出错不再一刀切只读:SB_RDONLY 系列 v2(34 补丁)

〔10-30 00:07 北京〕· [PATCH v2 00/34] fs: don't set SB_RDONLY after filesystem errors · Christian Brauner (VFS 维护者)

定位 VFS 层——文件系统内部出错时,历史上习惯直接把整个超级块置 SB_RDONLY(只读标志),动作粗放且与各文件系统自身的错误处理打架。
做法 34 个补丁逐个清理 ext4/btrfs/gfs2/ubifs 等文件系统里「出错就置只读」的做法,错误处置权交还给文件系统自己。
效益 出错语义更清晰:该 remount-ro 的走挂载选项,该停机保护的走 fs 自身机制;用户态不再面对「突然全只读」的惊喜。
和你相关 VFS 维护者亲自下场清理历史包袱,这类「去掉粗暴兜底」的改动是理解错误处理设计的好教材。

📰 block

/ column

★ ★ 98 补丁大修复系列进入集中评审,子集已被接收

〔10-29 21:19 北京〕· Re: [PATCHSET 0/98] Various block related fixes · Jens Axboe 逐条评审

定位 块设备层——Bart Van Assche 的 98 补丁修复系列(blk-mq 队列生命周期、nvmet 鉴权、zram/zloop 边界等),昨天发出后今日迎来维护者集中评审。
做法 Jens Axboe 当日逐条过评审意见,b4-ty 回执显示部分补丁已取进 for-next 分支。
效益 块层一批并发与生命周期边界 bug 有望在 rc 前清账;其中 dma-buf bio 与完整性校验(PI)的交互修正还牵出 io_uring/NVMe 直通场景的新讨论。
和你相关 98 个补丁的集中评审现场,是看维护者如何筛「能进/再改改」的实战课。

📰 net

/ column

★ ★ netfilter flowtable 卸载学会 IPv4-over-IPv6 与 SIT 隧道

〔10-29 21:35 北京〕· [PATCH nf-next 0/8] Add IPv4 over IPv6 and SIT flowtable SW acceleration

定位 netfilter 转发加速层——flowtable 软卸载此前只处理扁平 IPv4/IPv6 流,隧道封装流量走不到快路径。
做法 8 个补丁给 flowtable 加 ip6ip(IPv4 封装在 IPv6)与 SIT 隧道的流识别与转发卸载。
效益 用隧道做过渡网/双栈的网关转发直接提速,不用再绕慢路径逐包过协议栈。
和你相关 做边缘网关/CPE 转发性能的话,flowtable 的覆盖面就是能不能吃满带宽的分水岭。

★ ★ BPF 新增用户内存 kfuncs(8 补丁)

〔10-30 05:26 北京〕· [PATCH bpf-next 0/8] bpf: Add user memory kfuncs · Jiri Olsa

定位 BPF 运行时层——BPF 程序读用户态内存此前只能靠有限的辅助函数。
做法 以 kfunc(BPF 可调用的内核函数)形式开放用户内存访问能力,配套安全检查。
效益 观测类/调试类 BPF 工具能更直接地关联内核事件与用户态上下文。
和你相关 写 eBPF 观测工具时关注这条线的最终语义边界。

📰 Rust

/ column

★ ★ 第一个 Rust 串口驱动落地:RISC-V BL808 的 polling console

〔10-29 13:05 北京〕· [PATCH RFC 00/12] Add BL808 UART3 support with a Rust serial-core polling console

定位 串口子系统 × Rust-for-Linux——给博流 BL808(RISC-V SoC)加上游支持,顺手用 Rust 写串口驱动。
做法 12 个补丁:先给 Rust 的 serial-core 加最小 polling console 抽象,再用它实现 BL808 UART 驱动,配套 DT bindings、PLIC/CLINT 描述与 Sipeed M1s Dock 板级支持。
效益 Rust 驱动从「示范代码」走进真实 SoC 支持流程;polling console 是早期启动调试的刚需,抽象层一次到位后续芯片可复用。
和你相关 想给 RISC-V 板子写第一个 Rust 驱动的,这套系列是现成的脚手架模板。

📰 sched

/ column

★ ★ 缓存感知调度聚合细化到 LLC 粒度 v3(17 补丁 RFC)

〔10-29 10:25 北京〕· [RFC PATCH v3 00/17] sched: Scale cache-aware aggregation at LLC granularity · 吴建勇 (Hygon)

定位 调度器负载均衡层——cache-aware 调度此前按更大粒度聚合,多 LLC(Last Level Cache,末级缓存)架构下任务摆放不够精细。
做法 17 个补丁给调度拓扑加 per-sd 暂存、LLC 三角形亲和序,迁移决策按「亲和收益」挑源队列。
效益 多 LLC 服务器(海光等国产多核平台首当其冲)的缓存局部性更好,跨 LLC 乒乓减少。
和你相关 国产服务器 CPU 的调度优化正在反哺主线,值得跟踪实测数据。

⚙️ 机制雷达:4 条跨域大改动

/ section
dma-fence 治竞态 dma_fence_is_signaled() 可能在 fence 正在 signaling 时误报 true——Philipp Stanner 的 6 补丁 RFC 先给 dma_fence_init 加 flags,再默认走带锁路径;性能敏感驱动可用 race-flag 回退旧行为,无回归报告就几个版本后彻底移除竞态。〔10-29 17:58 北京〕· 原文
virtio-blk 内联加密 virtio 规范侧给块设备加内联加密(存储控制器硬件加密)v6:特性位、管理命令、请求类型、安全考虑四件套,虚拟盘也能吃到硬件加密。〔10-27 17:10 北京〕· 原文
工具链接纳 Rust tools 目录引入 Rust 库构建基建,bpftool 与 perf 优先链接 zlib-rs(Rust 版 zlib)——内核工具链对 Rust 的接受从核心扩到周边。〔10-30 00:30 北京〕· 原文
inode 元数据回收 fs RFC:带 I_METADATA_WRITEBACK 标志的 inode 纳入回收路径,元数据写回中的 inode 不再挡内存回收。〔10-29 21:28 北京〕· 原文

📖 本期概念速查

/ section
virtio 虚拟化标准 I/O 接口——客机与宿主机之间的设备抽象协议,virtio-media 是最新成员。
V4L2 Video4Linux2,Linux 视频采集设备统一 API;相机应用都认这个接口。
dma-fence GPU/驱动之间共享缓冲区的同步原语——「这块显存画完没有」的信号量。
Starvis 2 索尼低照度传感器家族,安防/夜视主流,IMX678/662/675/585/832/676 均属此族。
SOF/EOF Start/End of Frame,帧开始/结束事件;帧同步就靠这对序列号对账。
SB_RDONLY 超级块只读标志——历史上文件系统一出错就把它置上,整个挂载点瞬间只读。

更多动态

○ drm/xe:GGTT 初始化从 900ms 砍到 37ms(RFC) 〔10-29 15:59〕

○ PCI/CXL:Type 2 设备 reset 支持 v16 〔10-29 22:57〕

○ PCI: qcom 实现 shutdown(),避免重启时 SMMU/NoC 报错 v7 〔10-29 12:19〕

○ LSM:IPE 独立策略 keyring v2 〔10-29 08:31〕

○ drm/msm/a8xx:GPU 状态捕获支持 v3(16 补丁) 〔10-30 04:18〕

○ KEYS:assoc_array 换 rhashtable v4 〔10-30 07:24〕

○ io_uring/napi:PREEMPT_RT 上的 list use-after-free 修复引讨论 〔10-29 18:31〕

○ sched/numa:内存分层晋升启发式 v2,字节与 AMD 逐条过招 〔10-29 19:34〕

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

数据来源:lore.kernel.org(全内核 13 列表)· 北京时间