关注了就能看到更多这么棒的文章哦~
5.5 Merge window, part 1
By Jonathan Corbet
December 2, 2019
原文来自:https://lwn.net/Articles/806010/
Linux kernel 5.5的合并窗口于11月24日的5.4 kernel正式发布之后就马上开启了。此后的第一周虽然没几天就是美国感恩节假期了,还是合并了非常多的patch。这第一批合入的6300个kernel patch总结下来有如下内容:
Architecture-specific
在arm64架构里支持完整的ftrace功能,可以拿到函数的参数了。
MIPS可以支持使用kcov进行代码覆盖率分析。
在x86架构上模拟实现iopl()系统调用,从而今后调用iopl()的用户不会再有能力开关中断了。
Core kernel
对io_uring子系统进行了若干改进,包括可以随时修改所操作的文件集而不需要从头开始;可以让用户指定completion-ring的size;绝对时间的超时;支持accept()系统调用。
对clone3()系统调用增加了CLONE_CLEAR_SIGHAND flag,能够在新创建的进程里清理掉所有的signal handler。
clone3()的调用者现在可以指定在包含它的各个命名空间里面指定这个新进程的PID,当然需要拥有相应的权限。可以参见这里的描述:https://git.kernel.org/linus/49cb2fc42ce4 ,还有这里的使用示例:https://git.kernel.org/linus/41585bbeeef9
live-patch state tracking功能可以在正在运行的系统上轻松合并多个live patch,参见这里的描述:https://git.kernel.org/linus/e553d2a53d47
从tracepoint触发BPF program会进行指针参数的类型检测了,能避免一类潜在问题。
新增的BPF trampoline机制可以让kernel和BPF program进行更快速的相互调用,参见这个commit: https://git.kernel.org/linus/fec56f5890d9
CPU调度器的负载均衡算法被大规模地替换了。合并请求里面说:“希望没有导致性能回退,不过统计学规律上来说很有可能有一些workload会受到负面影响。针对这些情况,我们希望能仔细调查这个workload饼改进调度算法,而不希望revert这批patch”。
新增hmem驱动,允许kernel利用系统firmware指定的一块特殊用途的memory。这个memory可以在一些特殊应用里面使用,特别是那些需要非常高速内存带宽的场景。hmem驱动会把这块memory暴露成一个设备的样子,也可以加入系统memory pool。
Filesystems and block I/O
Btrfs文件系统支持了xxhash64, blake2b和sha256校验算法。Btrfs RAID1实现现在可以针对3或4个设备进行数据复制了(之前只能支持2个)。
statx()系统调用现在可以用来确认指定文件是否由fs-verity所保护。
Hardware support
Industrial I/O: Analog Devices ADUX1020 photometric sensors, Analog Devices AD7292 analog-to-digital converters, Intel Merrifield Basin Cove analog-to-digital converters, Texas Instruments enhanced quadrature encoder pulse counters, NXP FXOS8700 accelerometer/magnetometers, Analog Devices multi-sensor thermometers, and Vishay VEML6030 ambient light sensors.
Media: Sony IMX290图像传感器, Allwinner deinterlace unit,Hynix Hi-556传感器。
Miscellaneous: NVMe硬件监控功能,Cadence NAND控制器,ST-Ericsson AB8500通用模数转换器,Analog Devices LTC2947功耗监测器,Texas Instruments TMP513系统监测器,Socionext Milbeaut SDHCI控制器,Actions Semi Owl SD/MMC host控制器,Rockchip OTP控制器,Rockchip Innosilicon MIPI/LVDS/TTL PHYs, Qualcomm MSM8974 interconnect控制器,Syncoam SEPS525 LCD控制器。
Networking: NXP pn532 UARTs, Texas Instruments DP83869 Gigabit PHYs,Texas Instrument CPSW switches,Microchip VSC9959 network switches, Silicon Labs WF200 wireless interfaces。
Pin control(管脚控制器):Qualcomm 8976 pin controllers, Renesas r8a77961 and r8a774b1 pin controllers, Intel Tiger Lake pin controllers, Intel Lightning Mountain SoC pin controllers, and Meson a1 SoC pin controllers。
Security-related: H1 Secure cr50-based trusted platform modules, Nuvoton NCPM随机数发生器,HiSilicon HPRE加解密加速器,HiSilicon V2真随机数生成器,HiSilicon SEC2 crypto block cipher accelerator,Amlogic cryptographic offloaders, Allwinner Crypto Engine cryptographic offloaders。
Sound: Texas Instruments TAS2770和TAS2562放大器,Analog Devices ADAU7118 PDM-to-I2S/TDM转换器。
USB:TI HD3SS3220 Type-C DRP port控制器,NVIDIA Tegra Superspeed USB 3.0设备控制器,Allwinner H6 SoC USB3 PHYs。
Miscellaneous
合入了KUnit单元测试框架,参见:https://git.kernel.org/linus/c23a283b532c
Networking
新增了可以为网络接口指定别名的机制,这样网络接口就可以有多个名字了;别名可以无视此前的字符串长度限制。参见:https://git.kernel.org/linus/7a56493f0620
transparent inter-process communication (TIPC) 子系统现在可以支持对所有消息进行加密和认证了。目前这个功能的文档还很少,可以参看:https://git.kernel.org/linus/fc1b6d6de220
VSOCK address family可以支持多个并发传输了。
mac80211层增加了Airtime queue limits的支持,可以优化WiFi的队列控制,从而改善性能。参见:https://lwn.net/Articles/705884/
Security-related
crypto层可以支持blake2b摘要算法
WireGuard VPN里依赖的多数Zinc crypto接口已经合入了,所以不久之后WireGuard本身应该也能容易合入了。
新增一组security-module相关的hook,用来控制对perf_event_open()系统调用的访问。参见https://git.kernel.org/linus/da97e18458fb
Virtualization and containers
KVM在Arm处理器上支持了stoken-time,在x86上支持了嵌套5层页表。
Internal kernel changes
在io_uring子系统里面新增了一套简化的workqueue机制。
printk()支持使用%pe参数来把错误值的对应的含义字符串打印出来。
改善refcount_t代码的性能,从而不再需要针对各个体系架构来实现不同的版本。各个体系架构里的实现被删除了,直接使用这个通用版本。
预计5.5合并窗口会在12月8日结束。这就意味着最终5.5版本的正式发布应该会在1月26日,或者2月2日。在合并窗口关闭之前,预计还会合入几千个patch,请继续关注LWN在合并窗口之后发布的总结文章。
全文完
LWN文章遵循CC BY-SA 4.0许可协议。
欢迎分享、转载及基于现有协议再创作~
长按下面二维码关注,关注LWN深度文章以及开源社区的各种新近言论~