LWN:6.4合并窗口的第二部分!

关注了就能看到更多这么棒的文章哦~

The rest of the 6.4 merge window

By Jonathan Corbet
May 8, 2023
DeepL assisted translation
https://lwn.net/Articles/930481/

Linus Torvalds 于 5 月 7 日发布了 6.4-rc1,并关闭了合并窗口。到那时,13,044 个非合并变更集已经进入了 6.4 版本的主线仓库。其中有 5000 多个变更集是在我们写完合并窗口前半段的总结后才进入的。这些变化给内核带来了一长串的新特性和功能。
自上次总结以来,最重要的变化包括:

Architecture-specific

  • 经过多次尝试,x86 的线性地址屏蔽(linear address masking)功能终于被内核支持了。最后,只有 LAM_U57 模式(允许在一个地址值中存储 6 个 bit 的 metadata)得到了支持;LAM_U48 模式需要再考虑一下。

  • RISC-V 架构已经获得了对 Svnapot 扩展的支持。这个扩展的目的从它的名字中可能不容易看出来;"napot "部分其实是代表 "自然对齐的 2 次方(naturally aligned power of two)"。它允许一组 4K base page 捆绑在一起以创建更大的 page(huge page)。

  • RISC-V 内核现在可以编译成一个 PIE 可重定位二进制文件。

  • RISC-V 还增加了一个新的系统调用,riscv_hwprobe(),以提供关于当前运行的系统中可用硬件的信息。相关 commit 有一些文档。

  • RISC-V 中还增加了对休眠的支持。

  • S390 现在支持 STACKLEAK 安全特性(最初在 2018 年为 x86 合并),在返回用户空间之前清除内核堆栈。

Core kernel

  • userfaultfd()系统调用有一个新功能,UFFD_FEATURE_WP_UNPOPULATED,允许未填充的匿名内存区域可以使写保护的。新的 UFFDIO_CONTINUE_MODE_WP 标志将导致 pagle-table entry 在小故障(minor fault)时是写保护状态。

  • 进程级别的相同 page 合并控制功能已经被合并。这个功能可以使内核的 samepage merge 功能使用得更加广泛,而不会影响到安全性。

  • 现在非特权进程有可能会对 pressure-stall 信息进行轮询。在无特权的情况下,轮询周期必须是两秒的倍数。

  • user trace event,一种允许用户空间进程通过内核创建 trace event 的机制,在经过一年的加工后终于被合并了。

Filesystems and block I/O

  • 为 tmpfs 文件系统新增的 noswap 这个 mount 选项将使其不使用系统交换空间来存储数据。

  • XFS 文件系统在其 online scrub(在线刷)新机制上做了更多的工作;据说这是 online 文件系统检查这个功能合并前的最后一项工作。这个功能会在未来的某个周期中出现;与此同时,XFS online fsck 的设计文档已经被合并。

  • ntfs3 noacsrules 挂载选项已被删除;显然这个选项从未正常工作过。使用该选项进行 mount 的话现在会直接报错。

  • NFS 服务器实现已经支持了 RFC 9289,这个功能指定由 TLS 加密保护的远程过程调用。

Hardware support

  • 时钟: SkyWorks Si521xx PCIe 时钟发生器、凌阳 SP7021 时钟、龙芯-2 时钟、联发科 MT8188 时钟控制器、博通 BCM63268 定时器时钟和复位控制器、StarFive JH7110 系统时钟控制器、高通 SA8775P、SM6125、SM6375 和 SM6115 图形时钟控制器,以及高通 SM7150、MSM8917/QM215、IPQ9574 和 IPQ5332 全局时钟控制器。

  • GPIO 和引脚控制: 英特尔 La Jolla Cove 适配器 GPIO 控制器,恩智浦 S32G2 引脚控制器,高通 IPQ9574 和 SM7150 引脚控制器,以及英伟达 BlueField-3 引脚控制器。

  • 工业 I/O: 博世 Sensortec BMP580 压力传感器,德州仪器 ADS1100 和 ADS1000 模数转换器,以及 ROHM BU27034 环境光传感器。

  • 输入: 恩智浦 BBNSM 电源键和 Novatek NVT-ts 触摸屏。

  • 杂项: Amlogic A1 SPI 闪存控制器,AMD 可组合 DMA 传输(CDX)总线,带有 "布局 "的非易失性存储器设备,ASPEED AST2600 I3C 控制器,高通 PMIC 闪存 LED 模块,联发科 MT6370 PMIC LED 控制器,Rohm BD2606MVV LED 驱动器,Maxim 597x 电源开关,瑞萨 RZ/G2L MTU3a 计时器,苹果脉宽调制器,以及 StarFive JH7100 和 JH7110 看门狗计时器。

  • 声音: 飞思卡尔 CPM 时隙分配器,飞思卡尔 CPM QUICC 多通道控制器,Cirrus Logic CS35L56 编解码器,Analog Devices MAX98363 Soundwire 扬声器放大器,Realtek RT712 SDCA DMIC 编解码器,以及 AMD SoundWire 管理器。

  • USB: UCSI Qualcomm PMIC GLINK 接口。

  • 另外:删除内核中古老的 PCMCIA 驱动程序的过程已经开始。

Miscellaneous

  • 从不能编译成为 module 的代码中删除 MODULE_LICENSE()声明,这个工作有非常多的改动,已经合并了。这是个很长的故事;详情请看相关 LWN 文章以及 merge message。

  • 新的虚拟文件/sys/kernel/tracing/touched_functions 将提供一个所有被 tracing 的内核函数的列表,或者是有一个 BPF 程序附着上来的函数。这些信息预计对开发人员调试与 tracing 或 BPF 程序有关的问题(可能)是最有用的。

  • 新的 Rust 语言支持包括 pin-init 核心(旨在解决初始化钉住的数据结构的问题),一些加锁原语(LockClassKey、Lock and Guard、Mutex 和 SpinLock),用于引用计数的对象的 ARef 类型、 Task 作为内核 task_struct 的代表,LockedBy 用于受外部锁保护的数据,CondVar 的条件变量(用一个等待队列实现),一个用于处理用户空间代码的 UAPI crate,以及一组 ioctl() 数的操作函数。

  • 像往常一样,perf 工具也有一长串的改动,包括用 BPF 过滤事件的功能,改进的 lock-contention 上报机制,新的引用计数检查的基础结构,等等。

Virtualization and containers

  • 定义了一套新的 hypercall,使 Hyper-V guest 能够访问 pass-through PCI 设备。内核还获得了对 Hyper-V virtual trust level 的初步支持。

  • KVM 有一个新的框架来处理用户空间的 SMCCC 请求。我们希望这将使许多与虚拟化相关的操作在用户空间实现,而不是在内核中增加更多的代码。

Internal kernel changes

  • 内核内部管理可加载模块的内存的方式有了很大的变化。新增 module_memory 机制增加了内存管理的灵活性,最终在安全性和性能方面都会有改进。

  • DEFINE_SEMAPHORE()宏现在需要一个关于 semaphore 初始值的参数了;关于这一改动请参见 LWN 文章。

  • MAX_ORDER 定义了内核中最大可能的连续内存分配的大小,其含义已经发生了变化。虽然它以前是 exclusive 的(也就是说最大的尺寸实际上是 MAX_ORDER-1),但现在它是 inclusive 的了。旧的含义导致了许多微妙的 bug,这些 bug 在这次改变中得到了修复。

  • per-VMA lock 这组 patch 已经被合并了;它应该会给内存管理子系统带来更好的可扩展性。

  • 一个没有成功的重要功能是 x86 架构的用户空间影子堆栈。Torvalds 几乎在整个合并窗口中都在思考这个 pull request,然后发现了一个错误,并得出结论,如果没有一些本质性的修改的话,他不想合入。

目前来说,6.4 的新特性的合并已经完成,现在是把所有这些工作都稳定下来的时候了,以便最终发布。假设没有什么意外的话,最终版本可望在 6 月 25 日或 7 月 2 日发布。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

format,png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值