今天 Linux 内核圈,值得花 3 分钟看三件事:famfs 走到 v14——把 CXL 这类「远程内存」挂成文件系统;mm 重排 swap 设备分配——13 帖 RFC 引入 per-priority 队列;以及 media 上新 OV32C4 sensor 驱动,mm 里还有一长串机制改动在排队。
🎬 今日导读
/ section 头条 famfs v14 独立发布——把 CXL 这类「远程内存」以文件 + DAX 语义挂进系统,df 能看到、mmap 能映射
头条 mm swap 分配重构 RFC:用 per-priority 队列替换 plist + available 列表,swapon 锁改 percpu rwsem
mm arm64 内核复制(18 帖 RFC)+ folio 化 swap 写回 + dropbehind 保留映射页——mm 大动作日
media OV32C4 新 sensor 驱动(v3);imx258 补复位 GPIO 与上电等待
net 9 帖 RFC 让『固件比 MAC 晚』的 PHY 也能被识别;NTP_PPS 适配无 tick 内核
fs f2fs 为运行时块大小重构元数据布局(11 帖);sysctl 引入 typed field 描述符
💡 今日头条
/ section famfs v14:把『CXL 远程内存』变成文件——新内存层级的头号玩家
〔08-30 01:10 北京〕· [PATCH v14 00/12] famfs: the Fabric-Attached Memory File System (standalone)
现状 传统文件系统挂在本地磁盘/SSD 上,访问路径是「块设备 → 页缓存 → 文件」。另一类内存(DAX 直连的持久内存)则绕过页缓存、直接映射。而 CXL 这类 fabric-attached memory(通过总线附加、可被多个控制器访问的「远程内存」)是新出现的第三种内存层级。
痛点 这块新内存现在没有标准抽象:当成普通块设备用,就丢了「内存」语义(不能 mmap、没 DAX);当成匿名内存用,又没文件名、权限、持久化边界,多机共享无从谈起。
方案 famfs(Fabric-Attached Memory File System)v14,作者 John Groves,现在以独立文件系统提交(standalone)。12 帖:以 DAX 语义把 fabric 内存挂成文件——mmap 直接映射、read/write、MAP_CREATE ioctl + fmap 引入映射、iomap_begin 解析 file→dax 偏移、statfs 上报设备容量(df 可用)、daxdev 表 + notify_failure 处理坏页。
为什么 保留内存语义(DAX、零拷贝)的同时,获得文件系统的管理能力(命名、权限、共享、故障上报)——内存能像文件一样被组织、被监控、被持久化。
效益 CXL 内存生态有了一等公民的访问方式:df 看到容量、mmap 直接读、坏页能上报;为多机共享 fabric 内存铺了路。
下一步 v14 仍在迭代,进 mainline 的路径(哪个树、何时合入)未定;跨多控制器/多机的语义边界、性能调优是接下来要啃的骨头。
一句话点评 新内存层级一出现,就会催生配套的文件系统——famfs 是 CXL 生态里最值得盯的一条线
🔗 原文
swap 设备分配重排:per-priority 队列替掉 plist,swapon 锁换 percpu rwsem
〔08-29 15:44 北京〕· [RESEND RFC PATCH v2 00/13] mm/swap: introduce per-priority allocation queues
现状 内核允许挂多个 swap 设备,分配时按 priority(优先级)选:高优先级 swap 先被用满,才轮到低优先级。选择逻辑靠 plist(优先级链表)+ 一张 available 列表维护,swapon/swapoff 用一把全局 mutex 串行化。
痛点 这条路径有历史包袱:plist 的 requeue 机制绕来绕去、available 列表冗余、全局 mutex 在多 swap 设备并发分配时锁竞争明显,分配时的同步 discard 还可能卡住调用方。
方案 13 帖 RFC:把「按优先级选设备」改成 per-priority 分配队列(每个优先级一个设备队列);swapon 锁换成 percpu rwsem;删掉 available 列表与 swap active plist;lib/plist.c 的 requeue 函数直接移除;分配路径上的同步 discard 加 bound(上限)。
为什么 队列化让「选哪个设备」变成常数时间、锁粒度从全局降到 percpu;plist 在 swap 里只剩这一个用户,整个删掉是净简化而非加复杂度。
效益 多 swap 设备下分配路径更可预测、并发更好;代码变短,后续在 swap 上做新机制(比如 zram/压缩 swap 优先级)更干净。
下一步 仍是 RFC v2(resend),等待 mm 维护者反馈;作者大概率要按 Andrew/Yosry 的意见再打磨一轮。
一句话点评 一个把历史数据结构换成更直白队列的重构——但多 swap 设备生产环境的锁竞争与可预测性收益是实打实的
🔗 原文
📰 media
/ column ★ 新 sensor 驱动 OV32C4(v3):13MP 级模组 + ipu-bridge 接入
〔08-29 19:58 北京〕· [PATCH v3 0/3] media: Add OmniVision OV32C4 sensor driver
定位 v4l2 subdev 层新驱动:OmniVision OV32C4(3200 万像素级 CMOS sensor),dt-bindings + 驱动 + ipu-bridge 三帖一套。
做法 新增 OV32C4 驱动、补 DT 绑定,并把 sensor 注册进 ipu-bridge(Intel IPU 平台用 sensor 集合描述)。
效益或下一步 搭载 OV32C4 的笔记本/设备在 Linux 上可用;v3 已在按评审迭代,等 maintainer 合入。
和你相关 新 sensor 驱动是 media 板块最常见的贡献入口——这套三帖结构(bindings + driver + bridge)就是标准姿势。
🔗 原文
★ imx258 补复位 GPIO + 上电等待(v2):板级时序不再『随缘』
〔08-29 21:06 北京〕· [PATCH v2 0/2] Add Reset GPIO to imx258
定位 Sony imx258 sensor 驱动此前缺 reset-gpio(复位引脚)支持,上电后也没有等待,复位时序不稳。
做法 v2 两帖:加 reset-gpio 支持 + 使能后加等待,让复位/上电时序确定化。
效益或下一步 不同板子上的 imx258 上电更稳,reset 引脚有 GPIO 时不再随机失败。
和你相关 sensor 复位/上电时序是摄像头板级调试最常见的问题——这帖就是标准解法样板。
🔗 原文
★ VCM 驱动 ak7375 扩型号:支持 AK7377 对焦马达
〔08-29 13:35 北京〕· [PATCH 0/3] media: ak7375: Add AK7377 support
定位 VCM(音圈马达,摄像头自动对焦执行器)驱动 ak7375 扩展支持同系 AK7377。
做法 dt-bindings + 驱动两帖加 AK7377,并修了上电前就把 VCM 标成 active 的时序问题。
效益或下一步 用 AK7377 的模组对焦可用,上电顺序更正确。
和你相关 VCM 是相机对焦链路的执行器——做手机/笔记本相机驱动的会常碰。
🔗 原文
📰 mm
/ column ★ arm64 内核复制 RFC(18 帖):把内核只读段『复制多份』换性能
〔08-29 20:08 北京〕· [RFC PATCH 00/18] mm: arm64: Add kernel replication feature
定位 mm + arm64 架构层:kernel replication(内核复制)——把内核只读段在物理上复制多份,用页表/内存手段缓解「页表隔离」的性能代价。
做法 18 帖 RFC:Kconfig 开关、arch 回调、电源管理适配;华为主导,现处早期评审。
效益或下一步 若成立,KPTI 一类页表隔离能少付 TLB/切换税;RFC 早期,机制细节以 patch 为准,值得盯后续版本。
和你相关 做 arm64 安全/性能、或关心页表隔离性能开销的同学,这是今天架构层最重要的信号之一。
🔗 原文
★ swap 写回路径 folio 化收尾:删 PageReclaim,__swap_writepage 改名 __swap_writeout
〔08-30 03:09 北京〕· [PATCH v2 0/6] mm/page_io: folio conversion cleanups
定位 mm page_io(swap 写回路径)做 folio 化收尾——把遗留的 page 语义彻底换成 folio。
做法 6 帖:写完成回调转 folio、zeromap helper 直接用 swap entry、删除 PageReclaim 标志位、__swap_writepage() 改名 __swap_writeout() 对齐语义。
效益或下一步 swap 写回路径彻底 folio 化,命名与新语义一致——folio 化主线的又一里程碑。
和你相关 folio 化是 mm 长期主线;这类『收尾』补丁是读懂 swap 内部结构的好入口。
🔗 原文
★ dropbehind 不再误伤映射页:mapped folio 保留(v3)
〔08-30 01:36 北京〕· [PATCH v3] mm: filemap: retain mapped dropbehind folios
定位 readahead 的 dropbehind(读后即丢)现在会连『仍被 mmap 映射』的 folio 一起驱逐,导致映射页被回收。
做法 v3 改为:dropbehind 时保留仍被映射的 folio;xiaomi 工程师 qiwenjie 提交,多轮评审中。
效益或下一步 读大文件时映射中的页不再被误驱逐,mmap + readahead 场景更稳。
和你相关 做文件读取/内存回收的会关心——dropbehind 是内核『主动丢冷页』的代表机制。
🔗 原文
📰 fs
/ column ★ f2fs 为『运行时块大小』重构元数据布局(v2,11 帖)
〔08-30 01:49 北京〕· [PATCH v2 00/11] f2fs: prepare metadata layouts for runtime block sizes
定位 f2fs 的块大小目前写死在构建期,SIT/NAT/dentry/xattr 等元数据布局都按固定块大小硬编码。
做法 11 帖:sb_info 早期初始化、字节/块/扇区转换宏参数化、各元数据块布局动态描述、节点树几何动态生成。
效益或下一步 为运行时可变块大小(大块设备/特殊存储)铺路——布局不再绑定编译期常量。
和你相关 用 f2fs(嵌入式/安卓)的读者,块大小可变后大容量设备布局更灵活。
🔗 原文
★ sysctl 引入 typed field 描述符(RFC):per-device / per-net 注册类型安全
〔08-30 00:15 北京〕· [RFC PATCH 0/4] sysctl: add typed field descriptors
定位 sysctl 目前用 (table, nargs, args) 弱类型注册,mpls / sctp / IPC 命名空间的每设备/每 net sysctl 各自手写。
做法 RFC 4 帖:新增 typed field 描述符,把 per-device / per-net sysctl 统一到一套类型化描述。
效益或下一步 sysctl 注册类型安全、可校验;若成行,是一套跨子系统的机制级统一。
和你相关 做网络命名空间/系统参数管理的会喜欢——sysctl 是几乎所有子系统都碰的基础设施。
🔗 原文
📰 net
/ column ★ 9 帖 RFC:让『固件比 MAC 晚』的 PHY 也能被识别
〔08-29 13:25 北京〕· [RFC PATCH net-next 0/9] net: survive a PHY whose firmware arrives after the MAC probes
定位 部分 PHY(如 Airoha EN8811H)固件由 MCU 侧加载,MAC 先 probe 时 PHY 还没就绪——现在只能靠启动顺序碰运气。
做法 9 帖:phylink 等待晚到的 PHY、缺 PHY 时报告 no link mode、新增 slow-to-probe dt-bindings、EN8811H 的 MDIO 驱动与嵌套 passthrough 总线。
效益或下一步 『固件比 MAC 晚』的设备能稳定识别,不依赖时序;是板级『PHY 没起来』的机制级解法。
和你相关 做嵌入式/网络板级调试的读者会直接受益——PHY 初始化顺序问题非常常见。
🔗 原文
★ NTP_PPS 适配无 tick 内核(v4):时间同步不再依赖固定节拍
〔08-30 05:00 北京〕· [PATCH v4 0/4] Add ntp_error to clock snapshot, enable NTP_PPS on tickless kernel
定位 PPS(脉冲秒信号,时间同步硬同步源)依赖固定 tick 触发,tickless(无固定节拍)内核上 NTP_PPS 受限。
做法 4 帖(David Woodhouse):timekeeping 对外推的 ntp_error 做时钟快照、pps 统一 ktime_get_snapshot_id()、去掉 NO_HZ_COMMON 依赖、ptp_vmclock 加模拟 1PPS([DO NOT MERGE] 演示)。
效益或下一步 无 tick 内核上 PPS 可用,虚拟化时钟也能测——时间同步的 tickless 化。
和你相关 做时间同步/NTP/PTP 的会关心;也是理解『tick 在哪几路被砍掉』的好案例。
🔗 原文
📰 PCI
/ column ★ iwlwifi 从 D3cold 掉电里把自己捞回来
〔08-29 17:54 北京〕· [PATCH wireless 0/2] wifi: iwlwifi: recover the device after it loses power in D3cold
定位 笔记本 Wi-Fi 在 D3cold(PCIe 设备完全断电)后可能『消失』——resume 后设备 gone。
做法 两帖:probe 时 arm product reset,resume 发现设备 gone 后请求一次 product reset 恢复。
效益或下一步 休眠/断电恢复后 Wi-Fi 不再需要整机重启。
和你相关 笔记本用户、以及做 PCIe 电源管理(D3cold)的读者值得一看。
🔗 原文
★ Resizable BAR 预取窗口预留 headroom(v3)
〔08-29 08:43 北京〕· [PATCH v3] PCI: Reserve prefetchable window headroom for Resizable BARs
定位 Resizable BAR(可调尺寸 BAR,GPU/加速卡常用)扩容时,预取窗口(prefetchable window)可能不够。
做法 v3 在分配时给预取窗口预留 headroom,给 BAR 扩容留空间。
效益或下一步 需要 Resizable BAR 的 GPU/加速卡资源分配更稳。
和你相关 GPU/加速卡玩家会关心——Resizable BAR 就是显卡性能选项背后的机制。
🔗 原文
📊 板块活跃度 · 近 24h
/ column
Top3 lkml 804 · mm 115 · net 100(refresh-heat 06:23 自动刷新)
观察 mm 是今日机制最密集的域(swap 队列 RFC / 内核复制 / folio 收尾);net 持续活跃;dri-devel 今日静默、DRM 信号靠跨帖。
⚙️ 机制雷达
/ section workqueue 新增遥测 tracepoint:CPU hog、mayday/rescued、BH budget yield——workqueue 卡死可观测化 原文 driver-core kthread worker 系列:ivtv / encx24j600 / sc16is7xx / cpufreq schedutil 迁移到 kthread worker + 移除 worker->task 自赋值 原文 sched / rseq RFC:rseq 操作通过 prctl 注册/注销(Mathieu Desnoyers)——把 rseq 的注册收进 prctl 语义 原文 Bluetooth L2CAP 16 帖:修正并注解 l2cap_conn::chan_l 加锁——并发安全大修 原文 virtio virtio-blk 内联加密(v2,线程持续讨论)——虚拟磁盘加解密进硬件(低频信号,暂不展开) 原文 block RamShared:把硬件加速 VRAM 暴露成块设备(RFC 新驱动) 原文 Rust nova-core 用无损失整数转换;rust 运行时 PM 支持推进——Rust 驱动进展 原文
📖 本期概念速查
/ section famfs Fabric-Attached Memory File System——把 CXL 这类「远程附加内存」以文件 + DAX 语义呈现的文件系统。今日头条主角。
DAX 直接访问(Direct Access):绕过 page cache,文件数据直接映射到设备内存本身,零拷贝。famfs / 持久内存用它。
plist 优先级链表(priority list)——按优先级排序的链表;swap 今天用 plist 管理设备选择,RFC 想把它换成 per-priority 队列。
dropbehind readahead 读完就丢弃的冷页机制——「读后即丢」;今天那帖在修它误伤仍被映射的页。
PPS 脉冲秒信号(Pulse Per Second)——时间同步的硬同步源;tickless 内核上触发受限,今天有补丁在解。
VCM 音圈马达(Voice Coil Motor)——摄像头自动对焦的执行器,ak7375 就是它的驱动。
D3cold PCIe 设备完全断电的电源状态;掉电后设备需重新初始化,iwlwifi 今天的补丁就是处理这个。
如果对你有用,点个赞,或留言聊聊你最关心的内核话题。
数据来源:lore.kernel.org(全内核 13 列表)· 北京时间 · 数据截至 08-30 07:00
💬 评论
使用 GitHub 账号登录即可留言