关注了就能看到更多这么棒的文章哦~
5.11 Merge window, part 1
By Jonathan Corbet
December 18, 2020
DeepL assisted translation
https://lwn.net/Articles/840129/
在 Linus Torvalds 发布 5.10 kernel 的时候,他提醒说 5.11 merge window 会跟大家传统假期有冲突。因此强烈希望 maintainer 能够早点把 pull request 发给他。Maintainer 们看起来也听进去了,在 5.11 合并窗口期的前 3 天就已经在 mainline 中合入了 10,000 个 non-merge changeset。本文中会对这一大拨 patch 中主要的改动进行一下总结。
Architecture-specific
对 Intel 的 software guard extensions (SGX) 的支持终于合入了 kernel,这已经是在 mailing list 上讨论的第 41 个版本了。相关介绍可以从 documentation commit 中看到。
作为继续限制 user space 对 x86 model-specific registers (MSRs) 的访问的一部分,不再允许对 MSR_IA32_ENERGY_PERF_BIAS 进行写入操作。有个 文档 列出了目前有哪些工具在对 MSR 进行写入操作,希望能对所有这些工具找到一个更好的解决方案。
arm64 architecture 中,如果使用 sigaction() 设置了 SA_EXPOSE_TAGBITS 的话,就可以把地址中的 tag 相关 bit(也就是虚拟地址中最高的几位)暴露出来。这样就可以访问到 LWN:Arm64的内存标记扩展功能!一文中介绍的指针中的 key 了。
对不带 MMU 的 Microblaze 系统的支持被移除了。看起来没有人在继续使用这种配置的系统了。
MIPS architecture 可以支持使用 gconv 来进行 coverage testing (代码覆盖率测试)了。
Core kernel
新增了一个 系统调用截获机制 (参见LWN: 模拟Windows的系统调用,第二版!), 这是基于 prctl() 实现的。这个功能可以让 user space 来 trap 并且模拟(emulate)执行系统调用。目标是用在运行 Windows 游戏的场景中,不过其他应用里面可能也会有用
系统调用 userfaultfd() 现在有了新的安全增强措施,也就是 可以关闭 kernel-mode fault 处理,请见 LWN:阻止userfaultfd()处理kernel-fault!
BPF 子系统可以支持 task-local storage (各个 task 自己的数据)了。第一个用到的地方就是 BPF Linux security module (以前名为 KRSI,参见LWN: KRSI——另一个BPF security module!)。
彻底改变了 BPF program 使用到的内存的统计(accounting)。现在有个新的 cgroup controller 可以对使用到的内存进行细粒度的管理。参看 merge commit 里的更多信息。
BTF 机制,用来提供 BPF program 的 kernel 类型信息等,也可以用在 kernel module 里面了。
io_uring subsystem 支持了 shutdown(), renameat2(), 和 unlinkat() 系统调用。
调用 io_uring_enter() 的时候可以指定 timeout 时间了。增加这个功能就需要修改系统调用的 API,于是通过增加了一个新的 flag (IORING_FEAT_EXT_ARG) 来代表还有一个 timeout 参数需要处理。
Filesystems and block I/O
Btrfs 文件系统支持了一些新的 mount options,主要是为了在文件系统损坏的情况下拯救数据的。使用 rescue=ignorebadroots 选项可以对一个损坏的 extent root 来进行 mount 操作。而 rescue=ignoredatacsums 则关闭了数据校验的动作。
已经 mount 过来的 NFS 文件系统可以支持 export 出去了。
close_range() 系统调用现在新增支持了 CLOSE_RANGE_CLOEXEC option (参见LWN: epoll_pwait2(), close_range(), and encoded I/O)。使用这个选项时,相应的文件描述符会被标记成 close-on-exec,而不是马上关闭掉。
Hardware support
Crypto:支持了 Intel QAT_4xxx crypto 加速器以及 Intel Keem Bay OCS AES/SM4 加速器。
Graphics: Novatek NT36672A DSI 显示屏, TDO TL070WSH30 DSI 显示屏, Analogix Anx7625 MIPI to DP 转换接口, AMD "Van Gogh" and "Dimgrey cavefish" 显卡, Lontium LT9611UXC DSI/HDMI 桥接芯片, Samsung sofef00/s6e3fc2x01 OnePlus 6/6T DSI cmd mode 显示屏, and ABT Y030XX067A 320x480 LCD 显示屏。
Hardware monitoring: Corsair power-supply HID 控制器, Maxim MAX127 12-bit 8-channel 数据采集系统, STMicroelectronics pm6764 voltage regulators, Delta Q54SJ108A2 电源, and Linear Technology LTC2992 I2C system monitors。
Media: OmniVision OV9734 传感器, OmniVision OV02A10 传感器, and Amlogic 2D graphic 加速单元。
Miscellaneous: Modtronix lcd2s 20x4 字符显示, Arm DMC-620 内存控制器, Samsung Exynos generic interconnects, Intel Keem Bay USB PHYs, MediaTek MT7621 PCI PHYs, Ingenic USB PHYs, Mediatek MT6360 模数转换器, Dialog Semiconductor DA9121 regulators, NXP PF8100/PF8121A/PF8200 regulators, Mellanox BlueField performance monitoring counters, Dell Wyse 3020 power buttons, Dialog Semiconductor DA7280 haptic interfaces, TI PRU remote processors, Intel LGM SoC NAND 控制器, AMD sensor fusion hubs。
Networking: Hirschmann Hellcreek TSN 交换机, Samsung S3FWRN82 UARTs, and OpenCompute TimeCard clocks。
Pin control and GPIO: Qualcomm LPASS LPI, 8953, SC7280, and SDX55 pin controllers, Intel Lakefield, Elkhart Lake, and Alder Lake-S pin controllers, and Microsemi/Microchip serial GPIO controllers。
Sound: NXP audio transceivers, Mediatek MT8192 音频接口, Nuvoton NAU8315 class-D 放大器, Analog Devices ADAU1372 codecs, and Realtek RT715 SDCA codecs。
还有需要注意的是这次的 merge window 之内删除了比以往更多的 obsolete 驱动。在 driver subsystem 里面也进行了许多清理工作。
Miscellaneous
支持了 auxiliary bus,这是一个虚拟总线用来支持 multi-function device 的。
Networking
支持了 802.1Q "connectivity fault management" 机制。参看 merge message 了解详情。
WiMAX 协议的支持从 staging 目录里面拿掉了,希望不久之后能够删除掉。这个功能其实已经有一段时间都无法正常工作了,所以看来没有用户在继续使用了。
支持了 RFC 6951 ,也就是将 SCTP 协议(Stream Control Transmission Protocol)封装到 UDP 之内。
Zero-copy TCP 接收优化实现了不小的性能提升,这次针对非常小的网络包做了进一步的优化。请阅读 merge message 来了解更多信息。
增加了一对新的 ioctl() ,来利用 PPP channel 做桥接。 commit 里面有文档描述。
Security-related
seccomp() 系统调用支持了 constant-action bitmaps (参见 LWN:seccomp()里永远允许的系统调用bitmap!)。这个机制允许 seccomp() 来判定某个系统调用是否总是被允许或者被拒绝的,从而大大减少对这些系统调用的处理工作。
Internal kernel changes
arm64 和 s390 architectures 移除了 set_fs(),参照LWN:跟set_fs()说再见吧!。
合入了 migration disable 功能(LWN:在mainline中关闭task migration!)。在 realtime kernel 中好几年前就有这个功能了,不过现在 mainline 中也有越来越多的需求了。
migration disable 的应用场景之一就是 kmap_local() API (LWN:把atomic kmap改成local kmap!),这个 API 也同样合入了。
按照正常的进度,5.11 合并窗口应该会在 12 月 27 日关闭。不过 Torvalds 也提醒说如果他受到假期影响没能来得及处理完 pull request 的话,他可能会把 5.11-rc1 release 延后。目前的合并进度看来本次的 merge windows 很可能不会延长。在 merge window 关闭之后,我们会按惯例再发一篇总结文章。
全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。
欢迎分享、转载及基于现有协议再创作~
长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~