LWN: 5.12 合并窗口,第一部分!
共 4068字,需浏览 9分钟
·
2021-03-04 19:02
关注了就能看到更多这么棒的文章哦~
5.12 Merge window, part 1
By Jonathan Corbet
February 22, 2021
DeepL assisted translation
https://lwn.net/Articles/847057/
5.12 合并窗口受到了美国西北部恶略天气的影响而被延迟了。不过等 Linus Torvalds 重新拥有了工作条件之后,快马加鞭地推进代码合并。在撰写本文时,才刚刚经过 2 天,已经有超过 8,600 个 changesete 被加入了 5.12 的代码中。可以想象,其中有很多重要改动。
目前为止合入 5.12 的最引人注目的改动是:
Architecture-specific
移除了一些看起来没有用户的 32 位 Arm 平台(efm32, picoxcell, prima2, tango, u300, zx, and c6x)。相关设备的许多驱动程序也被移除了。
Core kernel
BPF 指令集加入了一系列原子操作指令。详情请看 documentation commit (https://git.kernel.org/linus/de948576f8e7) 和 merge message(https://git.kernel.org/linus/7064a7341a0d)
BPF program 现在可以直接 attach 到"bare" tracepoint 了,也就是那些不具备 user space 可见的 trace event。bare tracepoint 之所以存在,是因为担心如果提供一个 user space 可见的 event 就会变成 kernel API 的一部分,今后很难改动。这个 BPF patch 包含了一个警告信息,提示说 bare tracepoint 本身不保证是 kernel 不变的 API。不过如果真的出现了 bare-tracepoint 改动导致 user-space 代码不可用了,具体会如何处理,这个尚不清楚。
BPF program 现在可以利用指针和变量偏移量来访问 stack 里的数据了。这个限制导致开发者们此前不得不一直使用一些 workaround。例如,stack 里有一个数组,此前只能利用常量索引(constant index)来访问这个 array 里的数据,而现在可以使用一个变量索引(variable index)了。BPF verifier 也被修改过来确保这种访问是不会越界的。不过这个改进只有特权程序(priviledged program)才可使用,主要是因为担心 speculative-execution 类型的攻击。
移除了对 "oprofile" 这个 profiling 子系统的支持。Oprofile 已经有好一段时间没有活跃动作了,一直都是用 perf event 来替代它的。
io_uring 子系统跟 memory cgroup 结合起来了,所以它所用到的内存空间也会被统计和管制起来。
如果选择了 PREEMPT_DYNAMIC 配置选项,启动阶段就可以选择使用哪种 scheduler preemption mode(none, voluntary, full)。debugfs 中有个开关可以在系统启动后也动态修改这个设置。
Filesystems and block I/O
合入了 LOOKUP_CACHED patch。允许 user space(配合 io_uring 使用)进行路径和文件名查找时不会被阻塞。
Btrfs 文件系统对 zoned block device 提供了部分支持。Zoned-device 的支持还是在进行中,无法实际应用。
F2FS 现在支持指定压缩算法规格和级别了。目前支持了 LZ4 "high compression" mode。
新增 FS_IOC_READ_VERITY_METADATA ioctl() 命令,用来从受到 fs-verity 保护的文件中读取 metadata。详情在https://git.kernel.org/linus/e17fe6579de0
Hardware support
Media: OmniVision OV5648 and OV8865 图像传感器, MaxLinear MXL692 tuners, IMI RDACM21 GMSL 摄像头, and Sony IMX334 传感器.
Miscellaneous: Broadcom power-management buses, Yamaha YAS530 3-axis 磁力计, Analog Devices AD5766/AD5767 数模转换器, Nintendo 64 音频控制器, Ingenic JZ4760 codecs, Khadas TS050 TFT-LCD 显示屏, Google cr50 I2C TPM interfaces, Intel Keem Bay OCS hashing-control units, Marvell OcteonTX2 加解密加速器, Microsoft Surface system aggregator modules, Aosong AHT10 温湿度传感器, Texas Instruments TPS23861 802.3at PoE PSE controllers, Intel Keem Bay SoC non-secure watchdog timers, NVIDIA Tegra QSPI controllers, Acer Iconia Tab A500 embedded controllers, Qualcomm ADC5 SPMI PMIC thermal monitors, Silvaco dual-role master I3C controllers, and Toshiba Visconti GPIO controllers.
Networking: Arrow SpeedChips XRS7003/7004 gigabit Ethernet switches, Broadcom BCM4908 internal MACs, MediaTek MT7921E wireless interfaces, and Toshiba Visconti MACs.
Power supply: TI BQ256XX battery chargers, Analog Devices LTC4162-L chargers, and Acer Iconia Tab A500 batteries.
Regulator: Richtek RT4831 DSV regulators, Actions Semi ATC260x PMIC regulators, MediaTek DVFSRC regulators, and MediaTek MT6315 PMIC regulators.
USB: Cadence dual-role USB controllers and USB MaxLinear/Exar USB to serial converters.
支持动态温度功耗管理子系统,就是可以对每一组设备的功耗设置上限来确保不超过温度限制。详情在 https://git.kernel.org/linus/f5ad1c747956
Networking
multipath TCP 的实现一直很活跃,现在可以为 subflow 来设置优先级了,比如说可以将某些标记为 backup 方案,只有在主要的 subflow 出错的时候才使用。
IGMPv3 子系统支持了 "explicit host tracking" 功能,详情见这个合并通知(https://git.kernel.org/linus/5225d5f57b35)
合并了将 NAPI polling 改为在 ktreadh 中实现的 patch。对于某些场景来说可以提升性能。提供了一些 sysfs 节点来设置 threaded polling,详情参见 https://git.kernel.org/linus/5fdd2f0e5c64
netfilter 的包过滤机制现在可以支持对某个过滤表设置 ownership 了。这样就可以让某个防火墙程序对它应该管理的过滤表来直接进行维护了。
Security-related
integrity measurement architecture (IMA,完整性衡量架构) 子系统现在可以 kernel 里面的各种数据 bit 来确保它们没有被篡改过。比如说,可以检查目前的 SELinux policy 是否被改动过。
Virtualization and containers
KVM 子系统支持截获 Xen 的 hypercall 并将其转发给 user space 来模拟执行(即 emulation)
如果 5.12 合并窗口仍能遵循平常的进度的话,应该会在 2 月 28 日关闭。目前还不清楚缺失的这 1 周测试时间是否导致合并窗口期被延长。不管它是具体什么时间吧,等到窗口关闭之后,欢迎大家阅读我们的后半部分合并窗口改动总结。
全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。
长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~