今天的 Linux 内核视频圈,值得花 3 分钟看两件事:虚拟机里的摄像头要成标准设备了,和 Rust 正在接管 GPU 同步。
[图:封面示意 —— 虚拟机里接入摄像头/采集设备的 virtio-media]
🎬 今日导读
/ section 头条 virtio-media 驱动 v6 —— VM 里的摄像头要成标准设备了
头条 Rust dma_fence 抽象 v9 —— Rust 内核打通 GPU/显示同步
机制 低内存回退时的设备页迁移修复 v3 —— mm 与 DRM 的跨域硬骨头
亮点 imx678 泛化成 Sony Starvis 2 通用驱动(RFC)
💡 今日头条
/ section虚拟机里的摄像头,终于要成标准设备了
现状 虚拟机的网卡、磁盘、显卡各有标准 virtio 设备(virtio-net/blk/gpu),但相机、采集卡这类媒体设备没有标准类型,V4L2 里也没有接入 virtio 的路径。
痛点 云厂商想给云主机提供摄像头/采集能力,只能靠私有方案或设备模拟,复用不了 virtio 成熟的队列 + 共享内存机制,用户态也接不进标准 V4L2 接口。
方案 新增 virtio-media 驱动(Google 主导):新 virtio 设备类型 + V4L2 驱动骨架,含 session 管理、scatterlist 构建、ioctl 逻辑与 USERPTR 内存支持。
为什么 与其每个云厂商自造轮子,不如把媒体设备定义成标准 virtio 设备,统一走 virtqueue + dma-buf 共享内存。
效益 VM 里能用标准 V4L2 接口访问虚拟摄像头/采集设备——云游戏、远程桌面、云端 AI 摄像头都有了基础设施。
下一步 v6 迭代中,设备类型还要在 virtio spec 里定稿。新框架,正缺参与者。
一句话点评 云上音视频是明牌,virtio-media 就是在铺这条路。做视频方向的值得盯。
🔗 原文
Rust 正在让 GPU 同步「不可能出错」
现状 dma_fence 是内核里表示「一次 DMA 完成/失败」的同步原语,GPU/显示/相机驱动靠它协调共享内存的读写进度;Rust 内核正在把子系统接口封装成安全抽象。
痛点 Rust 驱动要和 C 侧 dma_fence 交互却无安全抽象——生命周期靠手动管理,引用计数一错就是 UAF/泄漏;RCU 等待也缺 Rust 封装。
方案 新增 Rust dma_fence 抽象(含 ARef<T> 的 ForeignOwnable、rcu_barrier 抽象、补全错误码),并新增 MAINTAINERS 条目。
为什么 把 dma_fence 封装成类型安全的引用计数对象,让编译器管生命周期而不是靠人肉;RCU 等待一并安全化。
效益 用 Rust 写 GPU/显示/媒体驱动时能安全使用同步原语,dma-buf 这条 mm ↔ 驱动大动脉先打通。
下一步 v9 接近合并窗口。想入坑 Rust 内核,这是入口级补丁集。
一句话点评 Rust 化不是炫技——GPU 是最容易出 UAF 的地方,交给编译器兜底。
🔗 原文
📰 media
/ column★ imx678 → 通用 Sony Starvis 2 驱动(RFC)
定位 sensor 驱动层(v4l2_subdev,drivers/media/i2c/)。树莓派把 IMX678 驱动参数化,改造成覆盖 imx662/imx675 的通用 Starvis 2 驱动。
做法 固定走 window mode + 配置参数化 + 新增两款型号支持。
效益 一个驱动撑起整个 Starvis 2 家族;RFC 征求方向意见。
和你相关 想写第一个 sensor 驱动,这是现成的泛化范本。
🔗 原文
★ Nothing Phone (1) 前置摄像头支持(IMX471)
定位 sensor 驱动 + 平台设备树(imx471 驱动 + sm7325-nothing-spacewar DT)。
做法 新增 IMX471 驱动(DT 匹配 + vdig/vif 供电),补前置相机 DT 节点。
效益 Nothing Phone (1) 主线支持前置摄像头,社区机型矩阵 +1。
和你相关 社区机型主线化,感兴趣的可以照抄 DTS 流程。
🔗 原文
★ ipu7 ABI 头清理
定位 staging 里的 Intel IPU7 图像处理单元 ABI 头文件层。
做法 删除未用的 ABI 结构、枚举、宏与 #pragma pack。
效益 staging 瘦身,向转正(出 staging)再进一步。
和你相关 staging 是新人练手区,这类清理补丁门槛友好。
🔗 原文
更多动态
○ dvb-core UAF 修复(dvb_ca_en50221) 〔08-06 04:47〕
○ syzbot: dw210x_op_rw 越界读 〔08-06 06:46〕
○ syzbot: rc_dev_uevent 释放后使用 〔08-06 06:44〕
○ imx415 VBLANK 错误路径 runtime PM 修复 〔08-05 21:56〕
○ qcom shikra IMX577 相机 DT overlay 〔08-05 21:53〕
📰 DRM
/ column★ 低内存回退时设备页迁移修复(v3)
定位 mm 的 migrate_device 与 drm/pagemap(device private pages 迁移,mm ↔ DRM 跨域),Intel 主导。
做法 修低内存回退时 folio 分配失败、THP 拆分的设备私有 folio、dma-unmap 时机与 use-after-put。
效益 GPU/加速器显存页在内存紧张时能可靠迁回,不再数据损坏或崩溃。
和你相关 GPU 显存页面迁移,做 AI 推理/异构内存的绕不开。
🔗 原文
★ rust: dma 单缓冲流式 DMA API + nova-core 首个使用者
定位 Rust 内核 DMA 抽象层(ContiguousBuffer + streaming DMA),NVIDIA nova-core 用它映射 WPR meta。
做法 新增单缓冲流式 DMA API,nova-core 落地首个真实用法。
效益 Rust 写 GPU 驱动(Nova)补上 DMA 缺口。
和你相关 Nova 用 Rust 写 GPU,是 Rust 内核的样板工程。
🔗 原文
★ Bug 221838:nouveau 休眠唤醒黑屏回归
定位 nouveau 电源/恢复路径(Dell M4800 Optimus + Quadro K1100M,内核 7.0.0-28)。
做法 回归报告:resume 后黑屏、无背光。
下一步 可复现,等 bisect 定位。
和你相关 机器匹配(Optimus 笔记本)可以直接帮忙 bisect。
🔗 原文
更多动态
○ syzbot: i915_pci_probe 通用保护错误 〔08-06 06:44〕
○ drm/imagination rogue_fwif_hwrtdata 对齐 〔08-06 03:43〕
○ sticon/parisc STI 显卡检测 〔08-06 05:06〕
○ vmwgfx cmdbuf slab 泄漏 ~103 MiB/天 〔08-06 01:36〕
📌 机制雷达:5 条跨域大改动
/ section virtio-media v6 新驱动框架:媒体设备虚拟化
rust: dma_fence v9 Rust 内核化 + dma-buf 同步原语
migrate_device / drm/pagemap mm ↔ DRM 跨域修复
ipu7 ABI 清理 staging 转正前奏
rust: dma streaming API GPU 驱动 DMA 抽象
📖 本期速查:9 个词看懂今天
/ section virtio 虚拟化里收发数据的标准机制(virtqueue + 共享内存),virtio-media 是其媒体设备扩展
dma_fence 表示一次 DMA 完成/失败的同步原语,共享内存设备的读写进度靠它协调
migrate_device 设备私有页(如 GPU 显存)迁回系统内存的机制,mm 与设备驱动的跨域通道
THP 拆分 透明大页在迁移/分裂时拆成普通小页
dma-buf 跨设备共享内存的抽象,mm 与驱动的桥
v4l2_subdev V4L2 里代表单个设备节点(sensor/加解串器/ISP 各一个)的抽象
Starvis 2 Sony 汽车/监控级 CMOS 传感器系列(IMX6xx)
nouveau / nova NVIDIA 的开源驱动(nouveau 老牌 C 驱动;nova 新一代,内核部分用 Rust)
如果对你有用,点个赞,或留言聊聊你最关心的。
数据来源:media / DRM / rust(lore.kernel.org)· 北京时间
💬 评论
使用 GitHub 账号登录即可留言