21

LWN:5.8内核合并窗口第二部分!

 3 years ago
source link: http://mp.weixin.qq.com/s?__biz=Mzg2MjE0NDE5OA%3D%3D&%3Bmid=2247484575&%3Bidx=1&%3Bsn=0e66845d2f2db46fa387081148c9a54d
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

5.8 Merge window, part 2

By  Jonathan Corbet

June 14, 2020

原文来自:https://lwn.net/Articles/822527/

Linus Torvalds发布5.8-rc1并关闭本次开发周期的合并窗口的时候,已经有14,206个 changeset合入了5.8开发周期内。这比起5.7版本的周期中所有changeset的数量还要高,很明显kernel开发工作并没有被外界纷扰拖慢。上次总结之后已经有6,700个改动合入了,包括许多的bug fix以及内部清理工作,不过还是有许多重大功能更新。

Architecture-specific

  • RISC-V 体系代码中增加了KGDB kernel debugger调试功能。

Core kernel

  • /proc 文件系统现在可以正确支持多个private instance了,每个都有独立的mount参数。

  • 如果loadable module中的某个section既允许write也允许execution,那么kernel会拒绝加载此module。这是一项大工程(确保kernel memory不可以既writable又executable)的一部分。

  • 经过多年开发之后,generalized kernel event-notification mechanism 终于被合入了。参见https://git.kernel.org/linus/6c3297841472 这个commit来大致了解一下,以及https://git.kernel.org/linus/c73be61cede5 是这个新增的subsystem的文档。

Filesystems and block I/O

  • device mapper新增了一个名为"emulate block size"的 target,用来让相应的block device可以提供比硬件实际支持的更小的block size。文档在这里:https://git.kernel.org/linus/d3c7b35c20d6

  • device mapper的"zoned" target可以支持能把普通的block device跟zoned设备变种对应起来,这样比起直接使用zoned device来可以提高性能。

  • F2FS 文件系统支持了LZO-RLE压缩

Hardware support

  • Clock: Renesas r8a7742 时钟脉冲发生器, Qualcomm MSM8939 全局时钟控制器, Intel Lightning Mountain 始终控制器, Ingenic X1830 时钟发生器, MediaTek MT6765 时钟, and Baikal-T1 始终控制单元.

  • GPIO and pin control: The "GPIO aggregator" 驱动可以把若干个不相干的GPIO pin归拢在一起形成一个虚拟的GPIO chip,这样就能把它们一起暴露给user space来统一管理(尤其是可以利用/dev下面的权限来管控对这些GPIO pin的访问权限)。参见这里的文档:https://git.kernel.org/linus/ce7a2f77f976  。此外还增加了: NXP i.MX8DXL pin controllers, Qualcomm SM8250 pin controllers, and Intel Jasper Lake pin controllers.

  • Industrial I/O: Semtech SX9310/SX9311 proximity sensors, Analog Devices Generic AXI ADC IP cores, Analog Devices AD9467 High Speed analog-to-digital converters, Maxim max1241 analog-to-digital converters, Analog Devices ADIS16475 inertial measurement units, Atlas Scientific EZO sensors, and Vishay VCNL3020 proximity sensors.

  • I2C: Qualcomm camera control interfaces, Baikal-T1 system controllers, and Nuvoton I2C controllers.

  • LED: Dell Wyse 3020 status LED controllers, SGMICRO SGM3140 LED controllers, and Awinic AW2013 LED controllers.

  • Miscellaneous: Monolithic Power Systems MP2629 battery managers, Mediatek MT6360 power-management ICs, ARM Secure Monitor watchdog timers, ARM Integrator Logic Module buses, NVIDIA Tegra video input controllers, Baikal-T1 AXI and ABP buses, Socionext UniPhier PCIe endpoint controllers, Allwinner H6 I/O memory-management units, Ingenic JZ47xx coprocessors, CellWise CW2015 batteries, ROHM bd99954 chargers, Arasan NAND flash controllers, Cypress CY8CTMA140 touchscreens, Azoteq IQS269A capacitive touch controllers, Azoteq IQS620A pulse-width modulators, Texas Instruments K3 thermal sensors, Spreadtrum mailbox controllers, and Qualcomm inter-processor communication controllers.

  • Sound: Microsemi ZL38060 connected home audio processors, NXP enhanced asynchronous sample rate converters, and Maxim integrated max98390 speaker amplifiers.

  • USB: Qualcomm IPQ4019 USB PHYs, Qualcomm SNPS FEMTO USB HS PHYs, Cadence Salvo PHYs, and Intel ComboPHY subsystems.

Networking

  • "RDMA network block device" 可以支持使用RTRS协议来经过RDMA远程访问block device。文档在这里:https://git.kernel.org/linus/aa4d16e44f60

Security-related

  • 如果某个device定义了一个有重叠的memory区间,那么就会导致/dev/mem下面的映射被作废。这个改动可以有效放置user space来映射某些可以memory-addressable device(例如persistent memory)之后导致kernel出错风险,例如,把这段memory区域里的内容作为文件系统mount到系统中使用的时候。

  • 合入patch来阻止"special register buffer data sampling" 硬件漏洞。参见 Documentation/admin-guide/hw-vuln/special-register-buffer-data-sampling.rst

Virtualization and containers

  • 新增的virtio-mem设备可以支持在guest系统中随时增加或减少memory。文档很少,不过可以从commit里看到一些信息:https://git.kernel.org/linus/5f1f79bbc9e2

Internal kernel changes

  • kcov这个代码覆盖测试工具现在可以统计到软中断模式下执行的代码了。

  • 新增了一组locking函数(https://git.kernel.org/linus/9740ca4e95b4  ),供使用mmap_sem的代码使用。目前这个lock的使用方法尚未改变,不过这只是第一步,希望能增强mmap_sem所保护的代码的可扩展性。

  • 编译kernel最起码需要使用GCC 4.8或以上版本了。Torvalds说他很想能更进一步(改到4.9),所以后续可能不久就会进一步改动这里。

  • 合入了KCSAN data-race检测工具。注意,此工具需要使用尚未发布的Clang 11编译器才能正常工作。参见这个changelog https://git.kernel.org/linus/b791d1bdf921

  • x86 kernel现在增加了一个名为.noinstr.text的section,用来放置那些永远不会被例如kprobes这类的注入(instrumentation)工具所修改的代码。许多比较敏感的代码都被移到这个section了。此区域内的代码如果调用了此区域外的代码,那就必须要显式地标注出来。objtool工具可以确保满足这个要求。参见changelog (https://git.kernel.org/linus/076f14be7fc9  )来了解这个工作的动机和主要描述。

5.8内核已经进入了修正稳定性问题的阶段,预计在8月初汇能看到5.8的正式发布。

全文完

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

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

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

rU7JbuJ.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK