v7.4-rc1 发布后的第一天,舞台交给加速器:高通用 25 个补丁把 Hexagon DSP 从 misc 里的 FastRPC 老宅搬进 accel/ 新楼,瑞芯微 RK3576 的 NPU 驱动则把版本号刷到了 v15。同一天两家 NPU/DSP 驱动进场——accel/ 子系统正在变成所有「非主流算力」的标准入口。
📊 板块活跃度
/ column
近 24h 各板块真实计数:net 203 · DRM 158 · mm 135 · media 48 · fs 39 · Rust 13 · PCI 11 · LSM 8 · arch 7 · block 4;virtio / rt / lkml 窗口内无新帖。 rc 期第一天,修复型系列放量:sockmap 15 连修与 mm 热插拔竞态 12 连修撑起 net 与 mm 的大头;单系列体量之冠则是两个加速器驱动—— qda 25 帖落在 media 列表,rocket v15 15 帖落在 DRM。
🎬 今日导读
/ section 头条 高通 qda——25 补丁把 DSP 加速器搬进 accel/,自带 FastRPC 兼容层
头条 瑞芯微 RK3576 NPU——rocket 驱动 v15,先修驱动再修框架最后点亮
板块 net 有 Alexei 亲自 15 连修 sockmap;mm 清账热插拔竞态;media 修 usbtv UAF
机制 accel/ 成加速器标准入口、legacy shim 消化法、zonelist 重建竞态的系统化解法
速查 FastRPC / protection domain、RKNN、sockmap verdict、zonelist rebuild、bonded DSI
💡 今日头条
/ section 高通 qda:25 补丁为 Hexagon DSP 在 accel/ 立新家,自带 FastRPC 兼容层
〔11-02 06:21 北京〕· [PATCH v4 00/25] accel/qda: Qualcomm DSP Accelerator driver · Qualcomm
现状 高通 Hexagon DSP 的上游卸载通道一直是 drivers/misc 里的 FastRPC——一个 misc 字符设备,没有 DRM 那套上下文与内存管理,与现代加速器驱动的形态脱节。
方案 25 补丁在 accel/ 下立新驱动 qda:文档先行,随后是 UAPI 与 DSP 查询 ioctl、buffer 分配与 DMA-BUF 导入、按会话分配 context bank、RPMsg 收发与响应分发、调用参数校验与打包、DSP 进程创建/释放、远端内存 map/unmap 进 DSP 地址空间、root/sensors/audio 三个 protection domain 的挂接、能力查询,以及 poll 模式的完成等待。
亮点 内置 legacy FastRPC shim——6 个补丁在新驱动之上完整复刻旧 FastRPC 语义(调用、进程、内存映射、会话、能力查询都有对应 shim 帖),用户态迁移期不用一次切干净。
信号 投递列表选了 linux-media——高通 DSP 的传统主场是多媒体管线,这个选择本身就标定了它的首要场景。系列发出 20 分钟内已收到 4 条评审回复,热度不低。
下一步 v4 仍在评审;对照 accel/ 里的 ivpu / habanalabs / qaic,这套「UAPI + context + DMA-BUF」的骨架已是加速器驱动的标准三段式。
一句话点评 misc 是加速器的车库,accel/ 才是车位——qda 把高通 DSP 开进了该在的地方,还顺手把老住户的钥匙配了一把。
🔗 原文
瑞芯微 RK3576 NPU 第 15 版送审:先修驱动,再修框架,最后一帖才是点亮
〔11-01 16:32 北京〕· [PATCH v15 00/15] accel/rocket: RK3576 NPU (RKNN) enablement
现状 accel/rocket 是瑞芯微 RKNN 系列 NPU 的上游驱动,已支持 RK3588;RK3576 是同架构的新一代中端 SoC,上 NPU 需要驱动、绑定、电源域三方一起动。
方案 15 补丁分三层推进:先是驱动加固——按名取时钟、完成寄存器写收进 job_lock、复位前等待运行中的 IRQ handler、复位后允许核挂起、把完成路径尾段从 IRQ handler 拆出;再是绑定与电源域——rk3576-rknn-core 绑定、power domain 节点允许携带 resets、可选的上电复位循环与稳定延时;最后才是 RK3576 支持本体与 rk3576 的 NPU 节点,末贴在 rk3576-rock-4d 开发板上点亮。
为什么 前五帖修的竞态(复位撞上 IRQ handler、完成路径时序)在现有 RK3588 上同样存在——不是为新 SoC 顺手糊的,是先把地基修平再盖新楼。
数字 v15——十五个版本本身说明上游评审的密度:绑定、电源域语义、驱动时序每一处都被来回打磨过。
下一步 绑定与 pmdomain 改动已各有评审回复;若 v16 收尾,RK3576 NPU 有望在 7.5 窗口上车。
一句话点评 新 SoC 上游化的教科书顺序:驱动加固 → 框架扩展 → SoC 支持 → 板级点亮,一帖都不抢跑。
🔗 原文
📰 net
/ column ★ ★ Alexei 亲自下场:sockmap verdict/redirect/cork 状态机 15 连修
〔11-02 03:21 北京〕· [PATCH bpf 00/15] bpf, sockmap: Fixes for verdicts, redirects, corks and recvmsg() · Alexei Starovoitov
定位 BPF 维护者本人给 sockmap 做的一次集中清账——verdict、redirect、cork、recvmsg 四条路径的状态机边角各修一批。
内容 verdict 侧:SK_DROP 不许粘住后续消息、SK_PASS 不许越界覆盖下一条;redirect 侧:每次发送前检查目标、sk_msg 程序运行前先清 redirect 目标、被转发的消息不许冒充 cork、cork 余量在转发后保留;cork 侧:cork 时重置拷贝位置、满 cork 不许再拷 0 字节;recvmsg 侧:出错时回写 sg.start、检查 TCP 状态。外加死 socket 及时离开 sk_stream_wait_memory()、TCP listener 不挂程序两帖外围修复。
为什么 sockmap 的状态机横跨 TCP 栈与 BPF 两层,verdict/cork/redirect 的组合空间多年来靠补丁堆补丁——维护者亲自下场,说明这些边角已经攒成了真问题。
和你相关 和你相关:若在用 sockmap/skb 做服务网格数据面加速,这 15 条就是近一年踩坑记录的官方答案。
🔗 原文
📰 mm
/ column ★ ★ 页分配器 vs 内存热插拔:zonelist 重建竞态的系统化解法
〔11-01 10:13 北京〕· [PATCH v5 0/12] mm: fix allocator races with memory hotplug
定位 内存热插拔会重建 zonelist,而分配路径的慢速路径可能正拿着旧 zonelist 走——这个竞态窗口长期靠运气不出事。
做法 12 补丁一套组合打法:zoneref 槽位一律 read-once(修掉编译器/并发下的二次读取)、给热加内存引发的 zonelist 重建打标记、分配慢速路径/hugetlb 池遍历/alloc_contig_pages 三处撞上重建就重试,mempolicy 的 slab 节点选择同步修,最后删掉被取代的 zonelist_node_idx()。
为什么 不是一处 bug 一处修,而是把「读一次、检测重建、重试」立成模式,再把这个模式铺到所有遍历 zonelist 的路径——竞态修法的正确姿势。
和你相关 和你相关:热插拔在嵌入式少见,但这套「read-once + 代际标记 + 重试」的并发模式在任何共享快照遍历场景都能套用。
🔗 原文
📰 DRM / media
/ column ★ ★ msm DSI:bonded 命令通路数据收编进 per-SoC 配置
〔11-01 19:58 北京〕· [PATCH 0/5] drm/msm/dsi: collect bonded command-path data into per-SoC config
定位 高通平台的 bonded DSI(双 DSI 控制器绑一块高带宽面板)命令通路配置此前散落在代码各处。
做法 5 补丁:失败标志移进 dsi manager 状态、新增 per-SoC bonded 命令通路配置、命令通路改走 host ops、主配置改从 per-SoC 配置取、FIFO 错误位逐一命名。
效益 新 SoC 接 bonded 面板从「改一簇硬编码」变成「填一份配置」;错误位有了名字,排障不用再对着掩码猜。
和你相关 和你相关:碰高通双 DSI 大屏方案时,这个 per-SoC 配置表就是今后填参数的位置。
🔗 原文
★ ★ usbtv 修 disconnect UAF:USB 视频采集棒拔下时的经典一坑
〔11-01 16:30 北京〕· [PATCH] media: usbtv: fix use-after-free on device disconnect
定位 usbtv(Fushicai USBTV007 采集棒驱动)在设备拔下路径上有 use-after-free。
意义 USB 设备驱动的 disconnect 路径是 UAF 高发区——资源释放顺序与在途请求的清场稍有错位就踩雷;media 子系统这类修复常年不断。
和你相关 和你相关:写 USB camera/采集类驱动时,disconnect 与 streamoff 的竞态处理可以直接对照这类修复的写法。
🔗 原文
📌 机制雷达:今天值得记住的 3 条跨域改动
/ section accel/ 成了加速器标准入口 高通 DSP 与瑞芯微 NPU 同日进场——继 ivpu、habanalabs、qaic 之后,「非主流算力」进内核的默认形态已经收敛为 accel/ 下的 DRM 设备:UAPI + context + DMA-BUF 三件套
legacy shim 消化法 qda 用 6 个补丁在新驱动里复刻旧 FastRPC 语义——淘汰旧接口不必先杀用户态,兼容层内建进新驱动,迁移期平滑过渡 · 原文 并发遍历的标准解法 mm 热插拔系列把「read-once + 重建标记 + 重试」立成模式并铺满所有 zonelist 遍历路径——竞态不靠逐个堵,靠模式化根治 · 原文
📖 本期概念速查
/ section FastRPC / RPMsg / protection domain FastRPC 是高通 DSP 的现有上游卸载通道(misc 字符设备);RPMsg 是异构核间通信协议;protection domain 是 DSP 侧的隔离域(root/sensors/audio),任务按域挂接
RKNN / RK3576 RKNN 是瑞芯微 NPU 产品线;RK3576 是中端 SoC,NPU 与 RK3588 同架构,上游驱动为 accel/rocket
sockmap verdict(SK_PASS / SK_DROP) sockmap 里 BPF 程序对每条消息给出的裁决:SK_PASS 放行给协议栈、SK_DROP 丢弃;裁决状态若粘到下一条消息就会串话
zonelist rebuild 内存热插拔会重建分配路径的 zonelist(按优先级排列的 zone 列表);遍历中途重建,旧快照就成了悬空引用
bonded DSI 双 DSI 控制器绑定驱动一块高带宽面板,命令通路需在两个控制器间协调——高通大屏方案的常见形态
如果对你有用,点个赞,或转给需要的朋友。
数据来源:lore.kernel.org(全内核 13 列表)· 北京时间