LWN:6.2合并窗口,第一部分!

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

6.2 Merge window, part 1

By Jonathan Corbet
December 15, 2022
DeepL assisted translation
https://lwn.net/Articles/917733/

曾几何时,Linus Torvalds 试图在合并窗口的早期能够平均每天向 mainline 合入大约 1000 个 changeset。但对于 6.2 来说,情况是很不一样的。在最初两天,有不少于 9278 个 non-merge changeset 被合入。不用说,这些 commit 修改了内核很多领域的代码,尽管与 6.1 相比,根本性的变化比较少。

到目前为止,为 6.2 合并的最重要的变化包括。

Architecture-specific

  • arm64 架构现在可以在启动时启用或禁用软件实现的影子堆栈;实现方式是在有需要的时候对相关指令打 patch 来实现的。这个改动使得可以使用同一个内核来支持有 pointer authentication(其实 shadow stack 在这方面没有增加多少)和没有这个指针认证的系统。

  • 现在支持英特尔的 "异步退出通知(asynchronous exit notification)"机制;这使得 SGX enclave 里的代码能够检测到 single-step 攻击。

  • 新增了一组操作,允许 hypervisor 支持来自英特尔 TDX guest 的请求;相关的文档提交中有一些更多的信息。

  • 新增了一个 sysctl 开关,用于控制 x86 系统该如何相应某个使用了 split lock 的进程;该提交中有概述信息,背景有 LWN 文章 https://lwn.net/Articles/911219/ 。

BPF

  • BPF 程序增加了对 cgroup 本地存储的访问能力; 关于细节,请参见相关文档提交。

  • BPF 程序现在可以定义类型、分配对象并创建它们自己的数据结构了;相关的 merge message 给出了一个概述。

  • 现在,BPF 代码可以访问和存储 task_struct 对象了;参见相关提交来了解。

Core kernel

  • 在进程调用 exec()时,可以做到将其移动到一个新的 time namespace 了。这样一来,就允许进程在取消共享其 time namespace 后执行 vfork()+exec() 系列操作了,这在当前的内核中是不可行的。

  • 更多的 Rust 基础架构代码已经被合并,详情见本文 https://lwn.net/Articles/914458/ 。

Filesystems and block I/O

  • Squashfs 文件系统现在可以用 threads= 选项来 mount,从而控制如何进行并行解压(parallel decompression)了;详情请参见相关 commit。

  • Squashfs 现在也可以处理 ID-mapped mountle 。

  • 内核对 POSIX 访问控制列表(POSIX access-control list)的处理已经进行了大规模的重构。应该不会有什么改动会影响到最终用户。相关的 merge commit 里包含了一个关于所做工作的详细概述。

  • fscrypt 机制现在可以使用 SM4 加密算法了,尽管正如该 merge message 中所说的,fscrypt 维护者建议不要使用它。

  • 饱受诟病的 Btrfs RAID5 和 RAID6 实现的可靠性得到了改善;相关的 merge message 里描述了所做的改变。还有更多针对 Btrfs 的性能改进被合入了。

  • 内核现在可以在关闭 NFSv2 的情况下完成编译了;这是朝完全移除该功能迈出的一步。

  • 访问 NVMe 设备的权限检查有了改动;如果写入过程在设备特殊文件的权限位上有适当的访问权限,那么读取或写入该设备的操作现在就可以正常完成了。之前,此类操作需要 CAP_SYS_ADMIN。

  • 在 2016 年被废弃的 packet CD/DVD 驱动终于被移除。

Hardware support

  • Clock: MStar CPUPLL 时钟、Ingenic JZ4755 CGU 时钟、联发科 FHCTL 硬件控制器时钟、高通 SC8280XP 和 SM6375 显示时钟控制器,以及高通 SM8550 全局时钟控制器。

  • GPIO and pin control: 高通公司 SDM670 引脚控制器,Loongson-2 SoC 引脚控制器,以及英特尔 Moorefield 引脚控制器。

  • Graphics: Open firmware display controllers,瑞萨 RZ/G2L MIPI DSI 编码器,Jadard JD9365DA-H3 WXGA DSI 面板,以及 NewVision NV3051D DSI 面板。

  • Hardware monitoring: Ampere Altra SMpro 硬件监控器和 OneXPlayer EC 风扇控制器。

  • Input: Hynitron cst3xx 触摸屏,Cypress TrueTouch Gen5 触摸屏,以及 Himax hx83112b 触摸屏。

  • Media: OmniVision OV08X40 和 OV4689 传感器,意法半导体 VGXY61 传感器,东芝 TC358746 并行-CSI2 桥接器,全志 A31 图像信号处理器,Microchip 图像传感器控制器,瑞萨 RZ/G2L MIPI CSI-2 接收器,以及瑞萨 RZ/G2L 摄像机数据接收单元。

  • Miscellaneous: ARM CoreSight 性能监测单元、Amlogic DDR 带宽性能监测器、Loongson-2 SoC 全局实用程序寄存器块、基于 WMI 的戴尔平台传感器、ChromeOS 人类存在传感器、苹果 CPU 频率控制器、ARM SCMI 电源帽控制器、Richtek RT6190 4 开关降压控制器、联发科 MT6357 电源管理 IC 和凌阳 SP7021 MMC 控制器。

  • Networking: Realtek 8852BE PCI 无线网络适配器,Motorcomm yt8521 千兆以太网 PHY,瑞萨 R-Car S4-8 以太网交换机,联发科 MT7996 无线接口,NVIDIA Tegra 多千兆以太网控制器,Realtek 8821CU、8822BU、8822CU 和 8723DU USB 无线网络适配器,以及博通 BCM4377/4378/4387 蓝牙接口。

  • Sound: Realtek RT1318 编解码器。

  • SPI: Microchip pci1xxxx PCIe 开关,Socionext F_OSPI SPI 闪存控制器,以及 Nuvoton WPCM450 闪存接口单元。

  • Also: 内核有一个新的框架来管理计算加速设备(compute-acceleration devices)。在 6.2 中没有哪个真实设备使用了该框架;这可能会在 6.3 中有所变化。同时,相关文档提交给出了这个新子系统的概述。

Miscellanous

  • 新的 rv tool 可以用来控制 runtime verification 子系统的动作。详情请参见文档提交。

  • 内核文档的 HTML 版本现在默认使用 Sphinx "alabaster" 主题来构建。

Networking

  • IPv6 stack 已经支持了 "protective load balancing",描述如下:

    PLB(保护性负载平衡)是一种基于 host 的跨交换机链路的负载平衡机制。它利用传输层的拥堵信号(如 ECN)来随机改变出现拥堵的连接的路径。

    https://dl.acm.org/doi/10.1145/3544216.3544226 这份论文里有更多细节。

Security-related

  • RANDOM_TRUST_BOOTLOADER 和 RANDOM_TRUST_CPU 配置选项已被删除;现在设置这些参数的唯一方法是使用命令行选项。更多信息请参见相关提交。

  • Landlock security module 现在可以控制 file truncation 操作了。相关文档提交有一些更多的信息。

Internal kernel changes

  • read-copy-update(RCU)子系统有了一个新的 "lazy" 模式(由 RCU_LAZY 这个配置选项控制)。在这个模式被激活时,对 RCU callback 的处理将被延迟,以便这些 callback 可以一起批量处理。在轻负载的系统中,这可以节省 5-10%的功耗。对于无法等待的那些 callback,新增了一个 call_rcu_hurry() 函数。相关提交中有详细的说明。

  • 如本文https://lwn.net/Articles/911914/ 所述,现在所有架构上的 char 类型都默认为无符号。

  • 为小内存系统设计的 SLOB slab 分配器已被废弃,并可能在未来的版本中被移除。我们鼓励任何仍然使用它的用户转移到 SLUB,因为另一个分配器(SLAB)最终也会成为被废弃的目标。为了帮助那些小型系统,新增了一个 SLUB_TINY 配置选项,可以减少 SLUB 分配器的内存需求。

  • 对消息信号中断(MSI, message-signaled interrupts)的支持已经进行了大规模的重构,处理多年来的技术债务,以及为后续新技术做好准备。相关的 merge comit 详细描述了这一情况。

  • timer 子系统也有了改变。del_timer()和 del_timer_sync()分别被改名为 timer_delete()和 timer_delete_sync()。还新增了一些函数如 timer_shutdown()和 timer_shutdown_sync(),目的是为了让清理定时器的任务更简单一些,因为在这个过程中这个 timer 可能被 rearm (使用)起来;在它们被调用之后,任何试图 rearch timer 的行为都将被忽略掉。

如果按照通常的两周时间表的话,6.2 合并窗口可望于 12 月 25 日结束。考虑到这个日期的重要性以及 Torvalds 的一些预先警告,那么这个合并窗口很有可能会比平时的窗口更短一些。无论如何,一旦 6.2-rc1 发布,LWN 将对被合入的新增改动进行总结。

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

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

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

format,png

资源下载链接为: https://pan.quark.cn/s/d9ef5828b597 四路20秒声光显示计分抢答器Multisim14仿真源文件+设计文档资料摘要 数字抢答器由主体电路与扩展电路组成。优先编码电路、锁存器、译码电路将参赛队的输入信号在显示器上输出;用控制电路和主持人开关启动报警电路,以上两部分组成主体电路。通过定时电路和译码电路将秒脉冲产生的信号在显示器上输出实现计时功能,构成扩展电路。经过布线、焊接、调试等工作后数字抢答器成形。关键字:开关阵列电路;触发锁存电路;解锁电路;编码电路;显示电路 一、设计目的 本设计是利用已学过的数电知识,设计的4人抢答器。(1)重温自己已学过的数电知识;(2)掌握数字集成电路的设计方法和原理;(3)通过完成该设计任务掌握实际问题的逻辑分析,学会对实际问题进行逻辑状态分配、化简;(4)掌握数字电路各部分电路与总体电路的设计、调试、模拟仿真方法。 二、整体设计 (一)设计任务与要求: 抢答器同时供4名选手或4个代表队比赛,分别用4个按钮S0 ~ S3表示。 设置一个系统清除和抢答控制开关S,该开关由主持人控制。 抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。 参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。 如果定时时间已到,无人抢答,本次抢答无效。 (二)设计原理与参考电路 抢答器的组成框图如下图所示。它主要由开关阵列电路、触发锁存电路、解锁电路、编码电路和显示电路等几部分组成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值