今天值得花 3 分钟看两件事:procfs 88 补丁大改造,把内核最老的伪文件系统搬到 kernfs 的轨道上;以及 rkisp1 让视频流扛过挂起/恢复——相机链路的同学可以直接对号入座。

封面 · 11月3日 · 内核日报

🎬 今日导读

/ section
头条 procfs 向 kernfs 看齐:Brauner 一次抛出 5 个配套 RFC 系列、合计 88 个补丁
media rkisp1 视频流扛住 suspend/resume(16 补丁);Rockchip VICAP 补 Y8/Y10 格式
DRM linux-next 酝酿把多棵 DRM 树合并为单一 drm-for-linux-next 树
mm isolcpus + SCHED_FIFO 导致 LRU 永不回收(mm/sched/cgroup 交叉);folio 转型收尾再删 8 个旧 API
PCI P2PDMA v12 十九连发:ACS 路由按 TLP 类别决策
net devmem TX 按 dmabuf 布局分配 net_iov;skbuff 去 BUG_ON 收尾
Rust/LSM/arch nova-core 补 GMC 消息;lockdown 修 securityfs 并补测试;KVM arm64 拆除 IPA 规模炸弹

💡 今日头条

/ section

procfs 搬家到 kernfs 的模式上:88 个补丁给最老伪文件系统换地基

〔11-02 22:21 北京〕· [PATCH RFC 0/7] proc: move procfs to what kernfs does(另有 4 个配套系列)

现状 /proc 是内核最老的伪文件系统:每个条目自己实现 read/write,自己调用 copy_to_user/copy_from_user 直接操作用户态缓冲区(__user),seq_file(顺序文件助手)的用法也各家各样。
痛点 上百个处理函数重复发明同一套用户态拷贝逻辑,老 bug 遍地——配套的 38 补丁系列专门修「读了越界缓冲区、位置被截断」这类陈年问题;而 kernfs(sysfs/configfs 的底层框架)早就把「内容生成」和「用户态拷贝」分离开了。
方案 Christian Brauner 一次抛出 5 个配套 RFC:0/7 搭框架,让 procfs 像 kernfs 那样统一持有 seq_file、统一负责拷贝进出用户态;00/38 先修老 bug;00/27 与 00/11 分别转换 fs/kernel/mm 与 net 侧的条目;0/5 最后删掉条目的 __user 方法。
为什么 所有权单点化:条目作者只产出数据,不再碰 __user 指针,拷贝逻辑只有一处可错;重复代码消失,bug 面随之收敛,后续审计也只盯框架层。
效益 子系统作者写 /proc 条目的门槛降低(照着新模板填数据即可);维护者收编一类反复出现的越界/截断 bug;用户态接口行为不变,无 ABI 破坏。
下一步 RFC 阶段,等 VFS 与各子系统反馈;框架合入后,各条目可增量迁移——想参与的话,转换类补丁是新人练手的好入口。
一句话点评 罕见的地基级重构,且拆分方式(修 bug → 搭框架 → 分批转换 → 删旧接口)本身就是大系列组织的教科书示范。

📰 media

/ column

★ ★ rkisp1:视频流从此扛得住 suspend/resume(16 补丁)

〔11-03 15:41 北京〕· [PATCH 00/16] Allow a running stream to survive suspend and resume in rkisp1

定位 V4L2 ISP 驱动层 + 系统电源管理:此前 rkisp1(Rockchip ISP 上游驱动)一挂起,正在跑的采集流直接死亡,恢复后用户态只能重来。
做法 16 个补丁给流水线做全链路状态保存:挂起时停流、保存 ISP 参数与 buffer 队列,恢复时按序重建,让用户态的 stream 对休眠无感。
效益 笔记本合盖开盖、嵌入式设备深度省电场景下相机不掉流;也为 V4L2 其他 ISP 驱动打了个可参照的电源管理样板。
和你相关 你正在 Rockchip 平台做 camera 链路——rkisp1 正是 RK3588 ISP 的上游驱动,这套 suspend/resume 语义落地后直接影响量产设备的功耗策略,值得逐补丁跟。

★ ★ Rockchip VICAP 与 Synopsys CSI2RX 补 Y8/GREY、Y10 格式支持

〔11-03 04:22 北京〕· [PATCH v2 0/3] media: support Y8/GREY and Y10 bus/pixel formats for Rockchip VICAP and Synopsys CSI2RX

定位 media bus format(总线像素格式协商)层:灰度(Y8)与 10bit 灰度(Y10)这两类工业/红外相机常用格式,在 Rockchip VICAP 采集链和 Synopsys CSI2RX 接收 IP 上缺失。
做法 3 个补丁在 VICAP 驱动与 CSI2RX 驱动里补齐这两种 bus/pixel format 的映射与协商路径。
效益 接灰度传感器(如红外、工业线扫)时不用再绕 RAW 转换,链路上游协商直接可用。
和你相关 和你的工作直接相关:VICAP + CSI2RX 正是 RK3588 上的采集通路,做 sensor 对接时这套格式表要烂熟。

★ ★ CEC 子系统引入 EDID_PRESENT:display 不在场时不再瞎等

〔11-03 15:40 北京〕· [PATCH v2 00/13] media/drm: cec: add EDID_PRESENT

定位 CEC(HDMI 消费电子控制)与 DRM 显示交叉层:系统无法知道显示器是否真的接了 EDID,CEC 适配器只能盲目发消息碰运气。
做法 13 个补丁(media 与 DRM 两侧)给 connector 增加 EDID_PRESENT 状态并向 CEC 层透传,让 CEC 只在显示器在场时才工作。
效益 省去无显示器场景下的超时等待与错误日志噪音;HDMI 热插拔状态机更可信。
和你相关 做 display 通路(DSI/HDMI/bridge)时 CEC 是常客,这个属性以后排查「显示器识别正常但 CEC 不通」类问题会省不少事。

更多动态

○ [PATCH v6 0/3] media: dvb:修 dvb-core 与 dvb-usb 断开路径的一族 use-after-free 〔11-03 16:30〕

○ [PATCH 00/10] staging: media: cedrus:若干修复 + VP8 支持 4K 〔11-03 01:03〕

○ [PATCH 0/5] media: i2c: it6625:新增 I2S 通道的 HDMI 音频采集 〔11-03 14:50〕

○ [PATCH v12 0/9] media: qcom: camss:CAMSS 离线处理引擎(OPE)支持,已到 v12 〔11-02 23:53〕

📰 DRM

/ column

★ ★ linux-next 酝酿:多棵 DRM 树合并为单一 drm-for-linux-next

〔11-03 02:42 北京〕· [RFC] linux-next: replace the DRM trees with a single drm-for-linux-next

定位 社区协作流程层:目前 linux-next 要拉 drm、drm-intel、drm-amd、drm-misc 等多棵树,互相之间的手动合并冲突频繁发生(今天就有 drm-intel 与 drm-intel-fixes 的手动合并)。
做法 Intel 侧提议:DRM 各树先合进一棵 drm-for-linux-next,linux-next 只跟这一棵对接,把冲突消化在 DRM 社区内部。
效益 linux-next 维护者减负,DRM 子系统内部的跨树冲突更早暴露;对你的直接影响是——以后基于 linux-next 测试 DRM 补丁,树的来源会变。
和你相关 给 DRM 提补丁的同学注意:若落地,review 通过的补丁进 next 的路径会改,跟踪 -next 冲突时别再只盯 drm-misc。

★ ★ nova-core(Rust GPU 驱动)补 GMC 消息支持,向 r000 固件再进一步

〔11-03 08:03 北京〕· [PATCH 0/4] gpu: nova-core: gsp: add support for GMC messages

定位 NVIDIA 开源内核驱动 nova-core 的 GSP 通信层:GMC(GPU Management Component)消息是驱动与 GSP 固件交互的基础协议之一。
做法 4 个补丁在 Rust 侧实现 GMC 消息的封装与收发,叠加在此前 cmdq 队列准备系列之上,为支持 r000 固件铺路。
效益 nova-core 向「能用」再迈一步;也是 Rust 抽象在真实 GPU 驱动里持续扩大的信号。
和你相关 Rust for Linux 目前最实质的落地场景就是 nova 系驱动,跟它能看清 Rust 内核抽象的真实演进速度。

更多动态

○ [PATCH v4 0/5] drm/imagination:RISC-V 与 META 固件接口统一,头文件去架构化 〔11-03 17:01〕

○ [PATCH v7 0/3] drm:给 shrinker 加最小年龄门 + LRU 修复 〔11-03 06:32〕

○ [PATCH 0/4] drm/msm/a6xx:修复 a680(SC8180X)一族问题 〔11-03 09:14〕

○ [PATCH 0/2] rust:调整 dma_buf::DriverFence::drop() 语义 〔11-02 23:08〕

📰 mm

/ column

★ ★ isolcpus + SCHED_FIFO 自旋任务 = LRU 永不回收、页迁移卡死(mm/sched/cgroup 交叉)

〔11-03 16:00 北京〕· [PATCH 0/6] mm, sched, cgroup: LRU Cache never drains when isolcpus are used with spinning SCHED_FIFO tasks causing page migration stalls

定位 内存回收与调度器交叉层:LRU 缓存的 per-CPU 元素要靠各 CPU 上的工作队列 drained,但 isolcpus(隔离 CPU)上跑死循环的 SCHED_FIFO 实时任务时,工作队列永远排不上。
做法 6 个补丁跨 mm、sched、cgroup 三侧,让 drain 路径能绕开被实时任务独占的 CPU,不再空等。
效益 修复页迁移 stall 与随之的内存回收卡顿——实时隔离场景(DPDK、低延迟业务)的宿主机内存行为可预期了。
和你相关 典型「两子系统各自正确、组合出 bug」案例,排查思路(从 stall 现场倒推到 per-CPU 缓存与调度策略互动)值得收藏。

★ ★ folio 转型收尾:再删 8 个已经没人用的 page 包装 API

〔11-03 06:54 北京〕· [PATCH 0/8] mm: remove newly-unused page wrapper APIs

定位 mm 的 struct page → struct folio 多年转型:随着最后一批调用点迁走,一批 page_foo() 包装函数彻底无人调用。
做法 8 个补丁直接删除这些死 API,杜绝新代码继续用旧接口。
效益 API 面收敛,folio 抽象真正收口;今后写 mm 代码可用的接口集合更干净。
和你相关 如果你还留着 page_xxx 的肌肉记忆,这系列就是官方催更:写新代码请直接 folio。

更多动态

○ [PATCH 0/5] mm/khugepaged:限制遍历 VMA 时的 mmap_lock 持有时间 〔11-03 16:28〕

○ [PATCH v2 0/3] maple_tree:7.3 修复三连 〔11-03 10:07〕

○ [PATCH 0/4] mm: hugetlb:修若干 CMA 相关问题 〔11-03 16:01〕

📰 PCI

/ column

★ ★ P2PDMA v12 十九连发:ACS 路由按 TLP 类别做决策

〔11-03 16:31 北京〕· [PATCH v12] PCI/P2PDMA 系列(19 补丁,今日补齐 08–19)

定位 PCI P2P DMA 路由判定层:设备间直接 DMA 能否走通,取决于 ACS(Access Control Services,访问控制服务)的重定向规则;此前判定把各类 TLP(事务层包)一刀切。
做法 v12 把路由判定细化到 TLP 类别:普通请求、翻译后请求(Translated Request)、带 ATS 的客户端分别走不同决策路径,并配 KUnit 测试与详细诊断日志。
效益 打开此前被误拒的合法 P2P 路径(尤其 ATS 场景),同时守住 ACS 隔离语义;GPU/NVMe 直通直连场景直接受益。
和你相关 做到 v12 仍在补测试与文档,这种「机制改动 + 自证正确」的写法是复杂 PCI 系列过审的标准姿势。

更多动态

○ [PATCH 0/2] PCI/PM:在若干设备上禁用桥 D3 〔11-02 21:57〕

○ [PATCH v4 0/7] PCI:资源放置(resource placement)算法修复 〔11-03 15:20〕

📰 net

/ column

★ ★ devmem TCP:TX 方向按 dmabuf 布局分配 net_iov

〔11-03 03:14 北京〕· [PATCH net-next 0/7] net: devmem: size TX net_iovs from the dmabuf layout

定位 devmem(设备内存 TCP 零拷贝)TX 路径:发送侧的 net_iov 描述符数量此前按固定方式分配,跟 dmabuf 真实的 scatter-gather 布局对不上。
做法 7 个补丁让 TX net_iov 直接按 dmabuf 的 sg 表布局来分配,描述符数量与实际物理分片一致。
效益 GPU/NIC 零拷贝发送路径去掉一层隐式假设,为后续更多 dmabuf 提供方接入铺平。
和你相关 devmem 是近半年 netdev 最活跃的新机制线,做零拷贝/硬件 offload 方向的值得持续跟踪它的接口定型。

★ ★ skbuff 去 BUG_ON 收尾:15 个补丁清理收尾动作

〔11-03 10:28 北京〕· [PATCH net-next v3 00/15] net: skbuff: follow-ups to the BUG_ON() removal

定位 网络核心 skb 分配路径:此前 skb 结构合法性靠 BUG_ON() 硬断言兜底,一旦被畸形输入触发就是整机 panic。
做法 继此前的移除系列之后,这 15 个补丁做收尾:把剩余断言点改为优雅失败路径,并统一错误处理风格。
效益 攻击面与意外宕机面同时收缩——网络面「不可达输入不宕机」原则又进一步。
和你相关 内核稳健性改造的标准范式:先立替代路径、再删断言、最后收尾清理,三步都值得借鉴到自己的子系统。

更多动态

○ [PATCH net-next v4 0/5] tls:内核内完成 TLS 1.3 KeyUpdate 〔11-03 00:58〕

○ [PATCH net-next 0/3] net:新增 SO_PASSCRED_THREAD,获取线程级 SCM_CREDENTIALS 〔11-03 07:12〕

📰 LSM

/ column

★ ★ lockdown:修 securityfs 接口并补测试(9 补丁进 -next)

〔11-03 15:51 北京〕· [PATCH -next 0/9] lockdown: fix the securityfs interface and add tests

定位 LSM lockdown 机制的用户接口层:securityfs(安全文件系统)里的 lockdown 状态接口存在行为缺陷,且长期无测试覆盖。
做法 9 个补丁修接口行为并配齐自测试,直接以 -next 为目标投递。
效益 lockdown 状态读写行为可依赖;带测试进 -next 也是安全子系统近年的标准门槛。
和你相关 做安全相关功能时,「修接口 + 补 KUnit/selftest」的配套投法值得照抄。

更多动态

○ [PATCH 0/2] lockdown:开了 lockdown 但 IOMMU 关闭时拒绝启动 〔11-02 22:00〕

📰 arch

/ column

★ ★ KVM arm64:stage-2 拆除不再随 IPA 规模线性变慢

〔11-03 16:47 北京〕· [PATCH 0/3] KVM: arm64: Stop stage-2 teardown scaling with the IPA size

定位 KVM arm64 的 stage-2(客户机物理地址 → 宿主机物理地址)页表拆除路径:虚拟机销毁时遍历范围按 IPA(中间物理地址空间)大小走,地址空间越大越慢。
做法 3 个补丁让拆除只走实际映射的页表,而不是按 IPA 规模空扫。
效益 大地址空间虚拟机的销毁延迟从「随 IPA 线性增长」变成「随实际占用增长」,云上大规格实例受益明显。
和你相关 「按配置上限遍历」改「按实际状态遍历」是性能类修复的经典一招,驱动里的资源回收路径同理可查。

更多动态

○ [PATCH v2 0/5] riscv:启用 kexec 交接(kexec handover)与 live update 〔11-03 16:09〕

○ [PATCH 0/5] 新增 SpacemiT K1/K3 SoC 定时器支持 〔11-03 16:38〕

📌 机制雷达:6 条跨域大改动

/ section
procfs 换地基 procfs 全面转向 kernfs 模型:统一 seq_file 持有与用户态拷贝,88 补丁 RFC(修 bug → 搭框架 → 分批转换 → 删旧接口)。原文
P2PDMA 路由细化 PCI P2P DMA 的 ACS 路由判定细化到 TLP 类别,ATS 客户端路径单独立规,v12 共 19 补丁。原文
folio 收口 mm 删除 8 个无人再用的 page 包装 API,folio 抽象正式收口。原文
LRU 回收 × 调度 mm/sched/cgroup 三侧联动,修 isolcpus + SCHED_FIFO 场景下 LRU 永不 drain 的页迁移 stall。原文
blk-mq 可观测 blk-mq tag set(块层多队列标签集合)通过 debugfs 暴露,块层排队状态首次可直接观测。原文
iomap 再平衡 iomap 重新允许 kswapd 直接发起 writeback——回收路径与写回路径的权责再平衡。原文
virtio 信号 virtio-blk inline encryption 系列(v6,10-27)讨论延续中,规范侧尚无定论,日报只作信号提示。原文

📖 本期概念速查

/ section
procfs / kernfs 内核两类伪文件系统:procfs 暴露进程与内核状态,历史最老;kernfs 是 sysfs/configfs 的底层框架,把「内容生成」与「用户态拷贝」分离——本次头条就是要把 procfs 也搬进这个模型。
seq_file 内核「顺序文件」助手:按序列逐条产出文本(如 /proc 里的列表),处理 offset/换行/缓冲区细节,避免每个条目手写。
__user 标记用户态指针的内核注解:这类指针不能直接解引用,必须经 copy_to_user/copy_from_user,否则就是安全漏洞温床。
ACS / P2PDMA ACS(Access Control Services)是 PCIe 的访问控制机制,决定请求能否设备间直连;P2PDMA 指设备间不经过内存的直接 DMA,ACS 规则直接决定哪些 P2P 路径合法。
rkisp1 / VICAP Rockchip ISP 的上游驱动(rkisp1)与视频采集通路(VICAP):sensor → CSI2 接收 → ISP → 内存,正是 RK3588 camera 链路的上游实现。
isolcpus 内核启动参数:把指定 CPU 从调度器隔离出来专跑实时任务;本期 mm 头条就是它与 SCHED_FIFO 组合踩出的回收 bug。
EDID / CEC EDID 是显示器上报能力的 EEPROM 数据;CEC 是 HDMI 的消费电子控制总线。新补丁让 CEC 知道显示器是否真的在场(EDID_PRESENT)。

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

数据来源:lore.kernel.org(全内核 13 列表,数据截至 11-03 17:21 北京)· 北京时间