LWN:5.18 合并窗口,第二部分!
關(guān)注了就能看到更多這么棒的文章哦~
5.18 Merge window, part 2
By Jonathan Corbet
April 4, 2022
DeepL assisted translation
https://lwn.net/Articles/889266/
Linus Torvalds 在 4 月 3 日發(fā)布了 5.18-rc1 內(nèi)核預(yù)編譯版本,在此之前,他已經(jīng)將 13207 個(gè) non-merge changeset 拉到了 mainline 倉庫。因此,這個(gè)合并窗口不僅紛爭(zhēng)不斷(有大量的 regression 以及被拒絕的 pull request),同時(shí)也是相對(duì)繁忙的。在寫完第一篇 5.18 合并窗口的總結(jié)后,有超過 9000 個(gè) changeset 被合入。現(xiàn)在是時(shí)候來補(bǔ)充記錄這個(gè)開發(fā)周期中的剩余改動(dòng)了。
在 5.18 合并窗口的后半部分,最有趣的變化包括:
Architecture-specific
live patching 也支持 32 位 PowerPC 系統(tǒng)了。
RISCV 架構(gòu)已經(jīng)支持了 "Sv57" 頁表格。這是一種支持 57 位虛擬地址的五級(jí)頁表。
RISCV 的 perf 實(shí)現(xiàn)代碼已經(jīng)被移除,取而代之的是基于 SBI PMU 和 Sscofpmf 擴(kuò)展的另一個(gè) perf 實(shí)現(xiàn)。這就可以支持大多數(shù) perf 功能了。
RISCV 的 SBI CPU-idle extension 在 5.18 中開始支持。
RISCV 還支持了 restartable sequence。
Intel software-defined silicon driver,允許英特爾控制這個(gè)處理器中哪些功能是可以使用的,已經(jīng)被合入 mainline 了。
對(duì) AMD 的 "host system management port" 的支持,這是 "為操作系統(tǒng)級(jí)軟件提供通過一組 mailbox 寄存器來訪問系統(tǒng)管理功能的接口",已經(jīng)被合入 mainline。文檔提交中可以找到少量的額外信息。
Core kernel
BPF type format(BTF)機(jī)制現(xiàn)在可以對(duì)指向用戶空間內(nèi)存的變量進(jìn)行標(biāo)注(annotate)了。這個(gè)功能的好處之一就是為 verifier 提供了一種更好的方法來檢測(cè)和檢查用戶空間的內(nèi)存訪問。更多信息請(qǐng)參見 merge changelog。
BPF program-packing memory allocator 已經(jīng)被合并;這使得那些存在大量加載好的 BPF program 程序的系統(tǒng)中能更有效地使用內(nèi)存。
MADV_DONTNEED madvise() 命令現(xiàn)在可以支持 hugetlb page。
新增一個(gè) madvise() 操作,MADV_DONTNEED_LOCKED,它將(像 MADV_DONTNEED 一樣)觸發(fā)對(duì)指定 page 的回收。但與 MADV_DONTNEED 不同的是,這個(gè)操作甚至適用于已經(jīng)被 lock 在內(nèi)存中的 page;這些 page 被強(qiáng)制取出,但它們的 "locked" 狀態(tài)并沒有改變。因此,如果受影響的 page 后續(xù)由于內(nèi)存缺頁而回來,那么它們將保持被 lock 的狀態(tài)。相關(guān)的 changelog 解釋了這個(gè)功能背后的原因。
Filesystems and block I/O
Device-mapper I/O 統(tǒng)計(jì)功能已被大幅重構(gòu)了,這可以使 dm-crypt 等場(chǎng)景的統(tǒng)計(jì)更加準(zhǔn)確。
Reiserfs 文件系統(tǒng)已被棄用(deprecated),有望在 2025 年被移除。
對(duì) write stream 的支持已經(jīng)從 block 子系統(tǒng)中移除。目前沒有任何設(shè)備支持該功能,也看不到有什么未來需求。
現(xiàn)在支持 NVMe 設(shè)備上的 64-Bit integrity checksum 完整性校驗(yàn)。
exfat 文件系統(tǒng)新增掛載選項(xiàng)(keep_last_dots),這個(gè)選項(xiàng)會(huì)讓它不去除文件名的尾部句號(hào);這使得該文件系統(tǒng)與 Windows 不兼容,后者會(huì)去除尾部句號(hào)。
Hardware support
時(shí)鐘。Microchip PolarFire 時(shí)鐘控制器、瑞薩 RZ/G2L 時(shí)鐘控制器、瑞薩 9 系列 PCIe 時(shí)鐘發(fā)生器、恩智浦 i.MX93 時(shí)鐘控制器、StarFive JH7100 音頻時(shí)鐘、蘋果 M1 數(shù)字控制振蕩器、高通 QCM2290、SM6125 和 SM6350 顯示時(shí)鐘控制器、高通 SM6350 圖形時(shí)鐘控制器和全志 H616/R329 RTC 時(shí)鐘控制器。
Graphics。ChromeOS 隱私屏幕控制器、ITE IT6505 DisplayPort 橋接器、所羅門 SSD130x OLED 顯示器和 MIPI DBI 兼容面板。
Industrial I/O。Semtech SX9324 和 SX9360 接近傳感器、Analog Devices ADXL367 三軸加速計(jì)、Analog Devices ADMV1014 微波降頻器、Analog Devices ADA4250 instrumentation amplifiers、Analog Devices ADMV4420 K-band 降頻器和 Analog Devices LTC2688 數(shù)模轉(zhuǎn)換器。
Miscellaneous。SiGma Micro-based 鍵盤,Airoha EN7523 GPIO 控制器,UPI uG3105 電池監(jiān)視器,Injoinic IP5xxx power bank IC,Macronix 外部硬件 ECC 引擎,Silergy SY7636A 溫度傳感器,Maxim Semiconductor MAX77714 電源管理 IC。AMD PSP I2C semaphores、聯(lián)發(fā)科 ADSP mailbox controllers、ASPEED PECI 控制器、Layerscape security fuse processors、Sunplus 片上控制器、Sunplus UARTs、Rockchip NANENG COMBO PHYs、聯(lián)發(fā)科鍵盤、Imagis IST30xxC 觸摸屏。
Networking。Realtek RTL8367S 以太網(wǎng)交換機(jī)、Davicom dm9051 SPI 以太網(wǎng)控制器、Fungible 以太網(wǎng)適配器、聯(lián)發(fā)科 MT7986 無線 MAC、聯(lián)發(fā)科 MT7921U 802.11ax 2x2:2SS 無線適配器、Lynx 28G SerDes PHY 和 I2C 連接的管理控制器傳輸協(xié)議(MCTP)設(shè)備,實(shí)施的是 DSP0237 規(guī)范。
Pin control and GPIO:Broadcom BCM4908 引腳控制器、Meson s4 引腳控制器、Sunplus SP7021 PinMux 和 GPIO 控制器、Renesas R8A779F0 引腳功能控制器、Mediatek MT8186 引腳控制器、NXP i.MX93 引腳控制器、Nuvoton WPCM450 引腳和 GPIO 控制器,以及 Qualcomm SC8280xp 引腳控制器。
USB。Richtek RT1719 Sink Only Type-C USB 控制器和高通公司嵌入式 USB 調(diào)試器。
Miscellaneous
像往常一樣,用戶空間的 perf 工具有一長(zhǎng)串的改進(jìn);詳見相關(guān) merge commit 中的總結(jié)。
Networking
bridge 子系統(tǒng)現(xiàn)在支持多生成樹(multiple spanning trees);更多信息請(qǐng)參見 merge commit。
繼續(xù)致力于在網(wǎng)絡(luò)代碼中添加監(jiān)控點(diǎn)來揭示丟包原因。
加載到 network control group 的 BPF program 現(xiàn)在可以使用一些新增 helper 函數(shù)來明確設(shè)置系統(tǒng)調(diào)用的返回值。這有助于了解某個(gè)特定系統(tǒng)調(diào)用被拒絕的原因。
現(xiàn)在支持從以 BPF_PROG_RUN 運(yùn)行的 BPF program 中傳輸數(shù)據(jù)包。欲了解更多信息,請(qǐng)參見相關(guān) merge commit、changelog 以及文檔 patch。
在 express data path (XDP) 機(jī)制中加入了對(duì) fragment 的支持, 允許處理 jumbo frame (巨幀)等。更多信息請(qǐng)參見相關(guān) commit。
network namespace 拆分(teardown)工作大大加快了,這對(duì)于一些有大量網(wǎng)絡(luò)流量的大型系統(tǒng)來說非常重要。
Security-related
嚴(yán)格的 memcpy() 邊界檢查 patch 已經(jīng)被合并了。這項(xiàng)工作應(yīng)該有助于在一系列內(nèi)存安全問題進(jìn)入 production kernel 之前就提前 fix。
內(nèi)核在編譯時(shí)已經(jīng)啟用了 -Warray-bounds 和 -Wzero-length-bounds warning。這是一個(gè)長(zhǎng)期努力的成果,旨在消除內(nèi)核代碼中的零長(zhǎng)度的數(shù)組以及一些相關(guān)技巧。
為 x86 架構(gòu)增加了 indirect branch tracking 的 control-flow integrity。這個(gè)功能可以防止 indirect branch 被重定向到那些不應(yīng)該跳轉(zhuǎn)到的位置。具體來說,所有的 indirect branch 都必須落在 ENDBR 指令位置。
Virtualization and containers
virtio-crypto 設(shè)備已經(jīng)支持了 RSA 加密。似乎沒有相關(guān)文檔,但 commit 中的內(nèi)容對(duì)某些人來說可能就夠了
Internal kernel changes
正如?https://lwn.net/Articles/885941/?所述,內(nèi)核現(xiàn)在編譯時(shí)改為符合 C11 語言標(biāo)準(zhǔn),而不是 C89 標(biāo)準(zhǔn)了。
新增的 "fprobe" 機(jī)制允許在不需要 ftrace 的全部功能時(shí)進(jìn)行快速的函數(shù)調(diào)用追蹤(quick function-call tracing);更多信息請(qǐng)參見相關(guān)文檔 commit。
build 系統(tǒng)現(xiàn)在支持兩個(gè)新的環(huán)境變量:USERCFLAGS 和 USERLDFLAGS;它們可以分別用來向編譯器和鏈接器傳遞額外參數(shù)。
網(wǎng)絡(luò)文件系統(tǒng)的內(nèi)部支持代碼有了很大的改動(dòng);請(qǐng)看相關(guān) merge changelog 來了解更多。
早已過時(shí)的 PCI DMA API 已經(jīng)被移除,驅(qū)動(dòng)程序應(yīng)該使用常規(guī)的 DMA API 來代替。
5.18 內(nèi)核現(xiàn)在進(jìn)入了穩(wěn)定階段,在這個(gè)階段,所有這些新功能中所存在的 bug 將被發(fā)現(xiàn)并 fix。假設(shè)正常的時(shí)間表保持不變的話,那么最終 5.18 版本可望在 5 月 22 日或 29 日發(fā)布。
全文完
LWN 文章遵循 CC BY-SA 4.0 許可協(xié)議。
長(zhǎng)按下面二維碼關(guān)注,關(guān)注 LWN 深度文章以及開源社區(qū)的各種新近言論~
