今天 Linux 内核圈,值得花 3 分钟看两件事:NVIDIA 的 Rust 驱动 nova-core 给「CPU 写显存」立了新规矩,和 机密虚拟机的内存切换终于要免拷贝了。
🎬 今日导读
•头条:nova-core 加 PRAMIN 窗口:Rust 驱动把「CPU 写显存」变成类型安全 API
•头条:guest_memfd 原地转换:机密计算 shared↔private 切换免拷贝
•机制:rcu/srcu:call_rcu/call_srcu 以后任意上下文都能调
•机制:netfs 用 bvecq 队列换掉 folio_queue
•机制:mm per-VMA 锁放开到全配置,tcp 顺势删掉 mmap_lock 兜底
•亮点:Rockchip rkvdec 视频解码器支持多核并行
•亮点:Broadcom bnxt_en 网卡补上 kTLS 发送卸载
💡 今日头条
nova-core 加 PRAMIN 窗口:NVIDIA Rust 驱动正式接管显存访问
〔08-10 21:57 北京〕· [PATCH v2 00/12] gpu: nova-core: add PRAMIN window support
•现状:nova-core 是 NVIDIA 正在用 Rust 重写的新一代开源 GPU 驱动。GPU 和 CPU 之间有一条固定通道:CPU 通过 PRAMIN(PCI 映射窗口)读写显存/寄存器,绕过完整的 DMA 路径,用于上传纹理、命令缓冲这类数据。
•痛点:窗口怎么开、开多大、写进去的地址对不对,过去全靠驱动里的散装代码把账,缺少统一的内存管理器,地址类型也不安全——用错偏移就是写进错误显存位置。
•方案:v2 系列(12 补丁)搭出 nova-core 的显存访问骨架:GpuMm 集中式内存管理器 + PRAMIN 窗口寄存器抽象 + VramAddress 类型 + 一整套自测断言宏。核心是把「开窗口→写显存」封成带类型的 Rust API。
•为什么:用 Rust 类型系统把窗口偏移、映射生命周期编码进类型,越界/错位在编译期就拦住,而不是运行时炸在 GPU 上;对齐 PRAMIN 窗口粒度,地址语义自解释。
•效益:nova-core 的内存管理层成型,为后续显存分配、命令缓冲、与 DRM 抽象对接铺路;也给出「Rust 驱动怎么写设备内存」的完整范本。
•下一步:PRAMIN 自测落地后,窗口机制会向上长成完整显存分配器;同批 Rust 驱动(如 drm/tyr)也在共用这套内存抽象。
一句话点评:GPU 驱动的内存账,第一次交给类型系统去算——这是 Rust 内核驱动含金量最高的一步。
🔗 原文
guest_memfd 原地转换:机密 VM 的 shared/private 切换终于不用整页拷贝
〔08-10 16:43 北京〕· [PATCH v10 00/41] guest_memfd: In-place conversion support
•现状:机密虚拟机(TDX/SNP)把内存分成 shared/private 两侧:private 页归 guest 私有、被 TEE 加密保护,shared 页与宿主机共享。guest_memfd 是管理 private 内存的 fd 抽象。
•痛点:今天页在 shared↔private 之间切换要搬整页(拷贝或重建映射),高频共享场景(DPU 卸载、页共享)切换开销直接拖累吞吐。
•方案:v10 大系列(41 补丁)给 guest_memfd 加原地(in-place)转换能力:直接在原页上改属性,配套 per-gmem 属性位、映射冻结、LUO 保留等机制,并带上完整 KVM selftests。
•为什么:省掉整页拷贝与页迁移的往返,是机密计算里共享/私有高频切换的关键优化;属性按 gmem 实例细分,权限边界更清晰。
•效益:云端机密 VM 的页共享、vCPU 热插拔、设备卸载路径切换延迟大幅下降,TEE 内存利用率更高。
•下一步:v10 讨论中,冻结映射与 LUO 保留的语义还在收口;合入后会影响 TDX/SNP 全栈的内存路径。
一句话点评:机密内存从「搬来搬去」走向「原地改属性」——云计算 TEE 的性能大头又砍掉一块。
🔗 原文
📌 机制雷达:5 条跨域大改动
•RCU 任意上下文:call_rcu()/call_srcu() 做到 NMI、原子上下文都能安全调用(v4)· 原文
•netfs bvecq:用分段 bio_vec 队列(bvecq)取代 folio_queue,afs/cifs/smbdirect/cachefiles 全量切换,删掉 ITER_FOLIOQ(v9 26 补丁)· 原文
•per-VMA 锁通用化:per-VMA 锁(细粒度 mmap 读锁)放开到全配置可用,配 RCU 版 VMA 查找;tcp 也删掉 mmap_lock 兜底路径(v4)· 原文
•热页追踪:mm 热页追踪与促升级基础设施,面向分层内存(CXL/DRAM)的页迁移策略(v8)· 原文
•DRM RAS 上报:drm_ras 用 netlink 事件向用户态上报 GPU 可纠正/不可纠正错误(v7)· 原文
📰 media
★Rockchip rkvdec 视频解码器支持多核并行
〔08-10 23:22 北京〕· [PATCH v2 0/5] media: rkvdec: Enable multi-core support
•定位:media 的 v4l2-mem2mem 层——Rockchip 的视频硬解驱动 rkvdec 此前只能用一个解码核,多核芯片的算力闲置。
•做法:v2 系列把 rkvdec 拆成 core + master 双驱动,导出 v4l2_m2m_set_max_parallel_jobs,让 v4l2-mem2mem 并行跑多个解码 job,并把解码核按队列分发。
•效益:多核 SoC 上解码吞吐逼近线性扩展;v4l2-mem2mem 拿到「并行 job」通用能力,其他编解码驱动可复用。
和你相关:v4l2-mem2mem 走向并行,硬解性能调优和驱动移植都可以照抄这套拆法。
🔗 原文
★v4l2-subdev 客户端能力大重构(v7 14/14)
〔08-10 23:32 北京〕· [PATCH v7 0/14] media: v4l2-subdev: Restructure client capabilities
•定位:media 的 subdev 抽象层——v4l2_subdev 是摄像头/ISP 子设备的通用接口,能力位(capabilities)散在各处。
•做法:把 subdev 客户端能力收进独立结构体,get_fmt/set_fmt 语义收敛,并新增 ci_state 状态查询接口,删掉重复实现。
•效益:subdev 接口语义更干净,新 sensor/ISP 驱动接入时的重复代码变少。
和你相关:摄像头子设备接口是嵌入式相机栈的公共地基,接口收敛直接影响驱动开发量。
🔗 原文
更多动态
○uvcvideo 修帧缓冲大小计算的整数溢出〔08-10 22:12〕
○sun4i-csi 修 probe/streaming 生命周期泄漏(v2,3 补丁)〔08-10 14:25〕
○v4l2-async 修 link error 时误删未链接 ASC 条目〔08-10 17:54〕
○au0828 修断开时 bulk_timeout 定时器 use-after-free〔08-10 13:52〕
○v4l2-core 让 video 设备数量可配置〔08-11 00:25〕
📰 DRM
★vmwgfx 再报安全洞:guest 传 pitch 可越界读
〔08-10 14:38 北京〕· [SECURITY] drm/vmwgfx: unprivileged OOB read in vmw_kms_cursor_snoop via unbounded guest.pitch
•定位:vmwgfx(VMware 虚拟显卡)的 KMS 命令解析层——cursor snoop 读像素时直接信任 guest 传入的 pitch(行距)。
•做法:漏洞报告:未受限的 guest.pitch 可触发非特权越界读;内核侧此前已连续加固 pitch/命令边界校验。
•下一步:等待修复补丁落地——恶意 guest 借此可读宿主机内存,虚拟化显卡安全值得盯着。
和你相关:虚拟化显卡的安全修复节奏,跑虚拟机的读者值得留意 CVE 落点。
🔗 原文
★drm/sched 新调度策略翻车:满载时 9070XT 严重掉性能
〔08-10 21:48 北京〕· [REGRESSION] drm/sched: FAIR policy causes serious performance degradation at max GPU load on 9070XT
•定位:drm/sched(GPU 内核调度器)新引入的 FAIR 公平调度策略,目标是在多引擎间公平分配 job。
•做法:实测在 AMD RX 9070 XT 满载时 FAIR 策略造成严重性能退化,已作为回归上报,进入回退或修复讨论。
•下一步:调度策略涉及所有 GPU 驱动,修复/回退决策会影响 AMD 系显卡的用户体验。
和你相关:GPU 调度是玩家直接能感知的层——满载掉帧的锅这次指向调度器。
🔗 原文
更多动态
○amdgpu 加 wedge 事件:设备彻底挂死后跳过 TLB flush/GART 解绑〔08-11 00:54〕
○Rockchip 平台 Synopsys DP 控制器改进(v11,21 补丁)〔08-10 20:08〕
○backlight 移除古早 pandora_bl 驱动(16 补丁清理)〔08-11 04:58〕
📰 mm
★mm/cma RFC:不释放仍在使用的 CMA 页
〔08-11 02:53 北京〕· [RFC v2] mm/cma: don't release CMA pages still in use
•定位:CMA(连续内存分配器)为驱动保留大块连续内存,页释放逻辑把仍被占用的页提前放走会破坏连续性承诺。
•做法:RFC v2 让 CMA 在判断可释放前先确认页确实不再被使用,堵住连续性被提前破坏的路径。
•效益:相机/GPU 等吃连续内存的驱动拿到更稳的内存承诺,少见 OOM 时连续性不足。
和你相关:跑嵌入式/多媒体设备的读者会直接受益——CMA 是摄像头与 GPU 常客。
🔗 原文
★mm/swap:坏 swap 条目不再死循环刷屏
〔08-11 01:20 北京〕· [PATCH 0/3] mm, swap: don't spin or flood the console on a bad swap entry
•定位:swap 层遇到畸形条目时,get_swap_device() 可能自旋重试并刷爆内核日志。
•做法:3 补丁区分「畸形条目」与「设备死亡」,坏条目报错限速、不重试,页面故障直接失败。
•效益:坏 swap 场景从内核卡死变成一次干净失败,可观测性更好。
和你相关:swap 是内存兜底,坏条目处理决定系统是「卡死」还是「优雅降级」。
🔗 原文
📰 net
★Broadcom bnxt_en 网卡补上 kTLS 发送卸载
〔08-10 13:14 北京〕· [PATCH net-next v6 00/15] bnxt_en: Add kTLS TX offload support
•定位:net 的硬件卸载层——kTLS 让 TLS 加解密在内核/网卡做,应用无需感知证书协议;bnxt_en 是 Broadcom 网卡驱动。
•做法:v6 系列实现 TLS TX 卸载:MPC 通道分配、加密 key 上下文管理、inline 发送 BD 与 kTLS 正常路径,15 补丁成套落地。
•效益:数据中心走 TLS 的流量(nginx/网关)从 CPU 卸到网卡,加密不再抢核。
和你相关:高吞吐加密卸载的又一块拼图,跑大流量服务的读者最关心。
🔗 原文
★Netfilter/IPVS 13 连发:一轮修复批量上线
〔08-11 03:06 北京〕· [PATCH net 00/13] Netfilter/IPVS fixes for net
•定位:netfilter 与 IPVS(内核负载均衡)——防火墙/NAT/四层转发的地基。
•做法:13 补丁批次:ipset list:set 的 refcount 竞态、ipvs 校验 ihl 防越界、IPv4 options 清理、flowtable GC 可见性等。
•效益:一批稳定版候选修复,直接进入 net 分支,后续回流 stable。
和你相关:iptables/nftables/IPVS 用户多,这批是实打实的稳定性修复。
🔗 原文
📰 fs
★famfs v13:面向内存池(FAM)的新文件系统继续推进
〔08-11 04:23 北京〕· [PATCH v13 00/12] famfs: the Fabric-Attached Memory File System (standalone)
•定位:fs 层的新文件系统——Fabric-Attached Memory(内存池/机架级内存)这类设备内存,用 DAX 直访而非普通块设备。
•做法:v13 提供 mmap/VM fault、MAP_CREATE ioctl 与 fmap 摄取、daxdev 注册与 notify_failure 支持,独立成卷。
•效益:CXL/内存池设备在 Linux 里有了原生文件语义——mmap 即内存,df 能看容量。
和你相关:内存池/CXL 是内存未来的方向,famfs 是这套生态的内核入口之一。
🔗 原文
★xfs 迎来 fs-verity,带 post-EOF Merkle 树
〔08-10 16:28 北京〕· [PATCH v14 00/21] fs-verity support for XFS with post EOF merkle tree
•定位:fs-verity(文件内容完整性校验,安卓 OTA/容器镜像在用)长期只有 ext4/f2fs 支持,XFS 是最大的一块空白。
•做法:v14 系列为 XFS 实现 fs-verity,Merkle 树放在 post-EOF 区,fsverity 填零哈希流程一并优化。
•效益:XFS 用户(服务器/发行版)拿到文件级防篡改校验能力。
和你相关:服务器文件完整性校验补齐到主力文件系统,安全与运维直接受益。
🔗 原文
📰 PCI
★vfio/pci 补上 PCIe TPH 支持(v20)
〔08-10 09:15 北京〕· [PATCH v20 00/16] vfio/pci: Add PCIe TPH support
•定位:PCIe 的 TPH(TLP Processing Hints,报文处理提示)让设备按负载提示路由缓存;vfio 透传场景此前不带 TPH。
•做法:v20 系列给 vfio/pci 透传设备加上 TPH 能力透出,16 补丁含 PCI 与 vfio 两层配合。
•效益:透传网卡/NVMe 到虚拟机也能吃到 TPH 的缓存优化红利。
和你相关:PCIe 生态的新特性进透传路径,虚拟化硬件直通玩家关注。
🔗 原文
📰 Rust
★Rust 驱动再进一步:可重入关中断 + SpinLockIrq
〔08-10 18:50 北京〕· [PATCH v5 00/18] Refcounted interrupt disable and SpinLockIrq for Rust
•定位:Rust 内核抽象的安全原语——把「关本地中断」引用计数化(Refcounted interrupt disable),并新增 SpinLockIrq(关中断自旋锁)。
•做法:v5 系列把中断状态编码进类型系统,锁的获取/释放不再依赖调用方手写局部关中断。
•效益:Rust 驱动写并发逻辑更安全、更短——中断/锁的错误用法在编译期被拦下。
和你相关:Rust 内核的并发抽象在快速补齐,nova-core/tyr 这类驱动是直接受益者。
🔗 原文
更多动态
○PCI: qcom 在链路 down 时阻止对下游设备的访问〔08-10 21:43〕
○zram 修大端 64 位 slot lock 位错位〔08-11 04:22〕
○block 新增 BPF kfunc 读 blkcg io.stat(cgroup IO 观测)〔08-11 06:47〕
○Hyper-V MSHV Dom0 root-partition 启动使能(EFI HvLoader,v2 13 补丁)〔08-11 02:50〕
○apparmor 修 label 向量空终止越界写 + verify_tags 整数溢出〔08-10 17:51〕
○bpf: 阻止 offload 程序在宿主机 tcx/netkit 上运行(v4)〔08-10 13:07〕
📖 本期概念速查
•PRAMIN 窗口:GPU 把显存/寄存器映射到 CPU 侧的可访问窗口,CPU 经它读写显存而不走完整 DMA 路径。
•guest_memfd:机密虚拟机私有内存的文件描述符抽象,页归属 guest 且受 TEE 加密保护。
•per-VMA 锁:按 VMA 粒度拆分 mmap 全局锁的细粒度锁,缓解多线程内存操作的锁争用。
•bio_vec / bvecq:描述「一段物理内存」的向量结构;bvecq 是分段链接的 bio_vec 队列,netfs 用它重写缓冲路径。
•kTLS:内核态 TLS 加解密,可整段卸载到支持该特性的网卡。
•TPH:TLP Processing Hints——PCIe 报文携带的处理提示,让对端按负载类型优化缓存/路由。
如果对你有用,点个赞,或留言聊聊你最关心的板块。
数据来源:lore.kernel.org(全内核 13 列表)· 北京时间