LWN: 5.13 合并窗口第二部分!
共 3560字,需浏览 8分钟
·
2021-05-23 03:09
关注了就能看到更多这么棒的文章哦~
The second half of the 5.13 merge window
By Jonathan Corbet
May 10, 2021
DeepL assisted translation
https://lwn.net/Articles/855140/
在最后一个 pull request 被合入以及发布 5.13-rc1 时,总共有 14,231 个 non-merge commit 进入 mainline。这使得 5.13 的合并窗口比起 5.12 开发周期(13,015 个提交)的规模还要大,仅仅比 5.11 的全部 commit 数量(14,340 个)略少。换句话说,5.13 也算是我们最近一段时间内看到的比较繁忙的开发周期之一了。这些提交中大约有 6400 个是在上次的前半程总结写完之后提交的,其中包括一些重要的新功能。
在 5.13 合并窗口的后半部分中合并的改动包括:
Architecture-specific
arm64 架构已将 SPARSEMEM_VMEMMAP 作为唯一支持的内存管理模型(memory-management model)。
32 位 PowerPC 系统现在支持 extended BPF 和 KFENCE 调试功能。
PowerPC 系统现在支持 time namespaces。
RISC-V 架构支持了 kexec、crash dumps(利用 kexec)、execute-in-place,以及 kprobes。
s390 系统现在可以在系统调用的处理程序(system-call handlers)中对堆栈偏移量进行随机化处理。
Core kernel
BPF tracing program 现在可以使用 task-local storage,比起使用 BPF maps 来说有性能优势。
BPF program 支持了一种新的机制,可以直接调用内核里的函数了。这个功能起初的应用场景是实现 TCP 拥塞控制算法。调用的函数需要被明确地列入白名单,BPF 才可以调用。相关信息可以在此提交(https://git.kernel.org/linus/e6ac2450d6de )中找到。
function tracer(ftrace)新增了一个 func-no-repeats 选项,这样对一个函数的多次连续调用在输出信息中就被转换成一个简单的次数信息了。
使用 userfaultfd() 在用户空间进行 page-fault 处理,现在可以管理 minor faults 了(指那些存在 valid page 但没有 valid page-table entry 引起的 fault)。关于这项功能的信息以及使用方法,请参见此提交(https://git.kernel.org/linus/7677f7fd8be7)。
古老的(同时也是很危险的)/dev/kmem 这个特殊文件,终于被删除了。它提供了对内核地址空间的访问能力。
Filesystems and block I/O
exFAT 文件系统已经获得了对 FITRIM ioctl() 的支持,用来通知存储设备这些 block 不再使用。
XFS 文件系统现在可以从文件系统的最后一个 allocation group 中移除空间了,这是为了实现 XFS 文件系统的 shrink(缩减)功能迈出的第一步。
新增了一个关于 quota(配额)的系统调用:
int quotactl_path(unsigned int cme, const char *mountpoint, qit_t id,
void *addr);它的行为与 quotactl()相似,但是它的参数是一个文件系统的 mount 位置的路径,而不是放置该文件系统的 block device。
fanotify 机制中的一些功能一直只有特权用户才可以使用,但在 5.13 中移除了其中一些限制。关于哪些是允许的、哪些是不允许的,请看此提交的描述:https://git.kernel.org/linus/7cea2a3c505e
Ext4 文件系统现在会在删除文件时将目录项(directory entry)覆盖掉。Ext4 现在也可以处理那些既使用了大小写区分以及加密了。
Hardware support
人机界面设备:FTDI FT260 USB HID 到 I2C 主机桥接器,微软 Surface 系统聚合模块 HID 传输器,Azoteq IQS626A 电容式触摸控制器,MStar msg2638 触摸屏,Ilitek I2C 213X/23XX/25XX/Lego 系列触摸控制器,以及 Hycon hy46xx 触摸屏。
杂项:Silicon Labs CP2615 USB I2C 适配器,HiSilicon I2C 控制器,Unisoc IOMMUs,Intel Data Accelerators 性能监视器,Toshiba Visconti 脉宽调制器,MediaTek Gen3 PCIe 控制器和 SiFive FU740 PCIe 主机控制器。
网络。Marvell 88X2222 PHYs、Broadcom BCM6368 MDIO 总线复用器、Actions Semi Owl 以太网 MACs、Microsoft Azure 网络适配器、NXP C45 TJA11XX PHYs 以及 Microchip KSZ8863 和 KSZ8873 交换机。
引脚控制。Broadcom BCM63xx GPIO 控制器、Mediatek MT8195 引脚控制器、Xilinx ZynqMP 引脚控制器和 Realtek Otto GPIO 控制器。
声音。Realtek RT1316 编解码器,Realtek RT711 和 RT715 SDCA 编解码器,Realtek RT1019 单声道 D 类音频放大器,以及联发科 MT6359 ACCDET 插孔控制器。
Virtio:为蓝牙控制器和声音设备增加了新的 virtio 驱动程序。
Security-related
经过多年的工作,修改了 34 次之后,Landlock security module 终于被合并了。
Landlock 的目标是希望能够限制一组进程的周边权限(例如能否访问全局文件系统)。由于 Landlock 是一个可堆叠的 LSM,这样今后就可能在现有的全系统访问控制之外创建安全的沙盒了。
更多信息见 https://landlock.io/
Internal kernel changes
vmalloc()现在可以创建 huge-page mapping 了。
新增一些函数用于在一次调用中分配成批的 page:alloc_pages_bulk() 和 alloc_pages_bulk_array() 。文档很少,但在这个提交(https://git.kernel.org/linus/387ba26fb1cb)和另一个提交(https://git.kernel.org/linus/0f87d9d30f21)中可以找到一些信息。
关于上述两个改动的更多信息,可以参看这篇文章https://lwn.net/Articles/855226/
有一个功能这次没能进入 kernel,那就是之前提出的 memfd_secret() 系统调用,它用来创建对系统的其他部分(包括内核)隐藏起来的内存区域。Andrew Morton 对该功能是否实用表示怀疑,这引出了一些潜在的用户说他们确实需要这个功能。Morton 现在似乎被说服了,但是这时已经赶不上 5.13 了。所以 memfd_secret() 应该会在 5.14 中出现。
如果 5.13 内核在 7 个-rc 版本后正式发布,那么就是在 6 月 27 日。如果需要有-rc8 的话,5.13 就可以在美国 7 月 4 日的烟火和庆祝中诞生了。合并窗口已经结束,但仍有相当多的工作要做才能将这个 kernel 版本正式推出。
全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。
长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~