Linux 6.15 ออกแล้ว : การเปลี่ยนแปลงที่สำคัญของสถาปัตยกรรม Arm, RISC-V และ MIPS

Linus Torvalds ได้ประกาศเปิดตัว Linux 6.15 อย่างเป็นทางการ, เมื่อประมาณ 2 เดือนที่แล้วได้เปิดตัว Linux 6.14 ได้มาพร้อมกับฟีเจอร์สำคัญหลายอย่าง เช่น การปรับปรุงประสิทธิภาพของ Wine ด้วยการเพิ่มไดรเวอร์ NT synchronization (NTSYNC), การรองรับ FUSE สำหรับการสื่อสารแบบ io_uring-based, การเพิ่มไดรเวอร์ amdxdna สำหรับ AMD NPU, การสนับสนุน uncached buffered I/Os และการปรับปรุงอื่น ๆ อีกมากมาย มาดูกันว่าใน Linux 6.15 ที่เพิ่งเปิดตัวนี้ มีอะไรใหม่และน่าสนใจบ้าง พร้อมกับสรุปรายการการเปลี่ยนแปลงที่โดดเด่น และเจาะลึกเพิ่มเติมเกี่ยวกับสถาปัตยกรรม Arm, RISC-V, และ MIPS ซึ่งมักพบในอุปกรณ์ฝังตัว (embedded devices)

Linux 6.15 release

การเปลี่ยนแปลงที่สำคัญของ Linux 6.15

การเปลี่ยนแปลงที่น่าสนใจใน Linux 6.15 ได้แก่:

  • การรองรับระบบ x86 แบบ 32 บิตที่มีซีพียูมากกว่า 8 คอร์หรือมี RAM มากกว่า 4GB ได้ถูกถอดออกแล้ว เนื่องจากฮาร์ดแวร์ประเภทนี้ไม่มีใช้งานในตลาดมานาน และงานที่ต้องการซีพียูหลายคอร์หรือหน่วยความจำมาก ๆ ได้ย้ายไปใช้งานระบบ 64 บิตแทนแล้ว
  • การเปลี่ยนแปลงหลายอย่างเกี่ยวกับ filesystem mounts
    • มี API ใหม่ สำหรับรับข้อมูลเกี่ยวกับเหตุการณ์ mount และ unmount ของไฟล์ระบบ โดยอิงจาก fanotify mechanism แม้ยังไม่มีเอกสารที่สมบูรณ์ แต่ใน commit ที่เกี่ยวข้อง มีรายละเอียดเพิ่มเติมอยู่บ้าง
    • statmount() system สามารถใช้เพื่อรับข้อมูลเกี่ยวกับการแมป ID ที่ถูกใช้กับ filesystem mount ได้แล้ว ดูรายละเอียดเพิ่มเติมได้ใน commit
    • ตอนนี้สามารถสร้าง ID-mapped mount ซ้อนกันได้ คือสามารถสร้าง mount ใหม่บน mount ที่เป็น ID-mapped อยู่แล้ว เพื่อเปลี่ยน mapping ได้ โดยสามารถอ่าน commit message เพื่อเข้าใจเหตุผลและวิธีการทำงานของฟีเจอร์นี้
    • มีการเปลี่ยนแปลงหลายอย่างใน mount API เพื่อให้ง่ายต่อการประกอบลำดับชั้นของไฟล์ระบบที่ซับซ้อน โดยไม่เปิดเผยผลลัพธ์บางส่วน หรือส่วนใด ๆ ของไฟล์ระบบที่ควรถูกซ่อนไว้
  • FUSE subsystem ตอนนี้สามารถกำหนดเวลาหมดอายุ (timeout), สำหรับคำขอได้แล้ว ซึ่งช่วยให้ระบบสามารถกู้คืน (recover) ได้เมื่อเซิร์ฟเวอร์ใน user-space ไม่ตอบสนอง, FUSE รองรับชื่อไฟล์ที่ยาวเกิน 1,024 อักขระได้แล้ว
  • “fwctl” subsystem ได้ถูกรวมเข้ามาในเคอร์เนลแล้ว โดยออกแบบมาเพื่อใช้ส่งข้อมูลคำสั่ง (command data) ไปยังเฟิร์มแวร์ที่มีความซับซ้อนโดยตรงใน Linux 6.15 มีการเพิ่มไดรเวอร์ที่รองรับ fwctl เข้ามา 3 ตัว ได้แก่ ไดรเวอร์สำหรับอุปกรณ์ CXL, ไดรเวอร์สำหรับอะแดปเตอร์ mlx5, ไดรเวอร์สำหรับการ์ดบริการแบบกระจายของ AMD/Pensando สามารถดูรายละเอียดเพิ่มเติมได้ในเว็บไซต์ เอกสารประกอบที่เกี่ยวข้อง

การอัปเดตสถาปัตยกรรม Arm ใน Linux 6.15

เช่นเคยเวอร์ชันนี้ถือว่าเป็นการอัปเดตที่มีความเคลื่อนไหวมากสำหรับสถาปัตยกรรม Arm:

  • Allwinner
    • Allwinner H616 – Extend clock driver to cover TCON clock and reset, enable GPU clock reparenting during rate change
    • Allwinner A523/T527 – Add watchdog support, clock driver, pin control driver, NMI controller
    • DTS changes
      • Add Allwinner H616 (with Mali-G31 MP2 GPU) support to Arm Mali Bifrost GPU driver
      • Enable USB and LED on Anbernic RG35XX
      • Fix reboot GPIO detection logic on Anbernic RG35XX
      • Disable (non-existent) battery thermistor on Anbernic RG35XX
      • Add CPU OPP table for A100
    • New Device – NetCube Systems Kumquat board based on Allwinner V3s SoC
  • Rockchip
    • Rockchip RK3588J – (CPU frequency) is now limited in the same way as the vendor kernel to allow room for the industrial-grade temperature ranges.
    • PHY driver – Rockchip RK3576 hdptx, RK3562 naneng-combo support
    • Clock driver – Added support for Rockchip RK3528 and RK3562
    • Pin control – Added support for RK3528 subdriver
    • I2C driver – Add support for RK3562
    • PCIe controller driver
      • Rockchip – Describe RK3568 and RK3588 BARs as Resizable, not Fixed
      • Synopsys – Add Rockchip support for DWC debugfs features
    • iommu – Driver adjustments for recent DT probing changes
    • SPI driver – Added Rockchip RK3562
    • ASoC – Added Rockchip RK3588 S/PDIF support
    • IRQ driver – A workaround for Rockchip 3568002 erratum in the GIC-V3 driver to ensure that the addressing is limited to the lower 32-bit of the physical address space.
    • Network – Add initial support for the Ethernet controllers found in RK3528 and initial support to power up/down the integrated PHY.
    • arm64 defconfig
      • Enable Rockchip UFS host driver
      • Enable Synopsys HDMI receiver (HDMI input)
    • New devices
  • Amlogic
    • Pinctrl
      • Add – Amlogic A4 subdriver
      • Define the pull-up/down resistor value as 60 kOhm
    • Clock driver
      • Fix mmc A clock gate definition on Amlogic G12 SoCs
      • Properly set CPU cluster A on Amlogic G12B
      • Fix 32k clock definition on Amlogic GXBB
      • Correct documentation typo on Amlogic A1
    • ARM DT changes – Switch to the new PWM controller bindings
    • ARM64 DT changes for Linux 6.15
      • Switch to the new PWM controller binding
      • Add gpio_intc node for Amlogic A4 & A5 SoCs
    • New devices – N/A
  • Samsung
    • PHY driver
      • Added Samsung MIPI D-/C-PHY driver, Exynos Auto v920 UFS PHY driver
      • Samsung USB3 Type-C lane orientation detection and configuration for Google GS101
    • Clock driver
      • Samsung Exynos 2200 – Alive, CMGP, HSI, PERIC/PERIS, TOP, UFS, and VFS
      • Samsung Exynos 7870 – Alive, MIF, DISP AUD, FSYS, G3D, ISP, MFC, and PERI
    • I2C driver – Add support for Samsung Exynos 7870
    • Pinctrl driver
      • Add pin controller drivers for newly usptreamed Samsung Exynos 2200 and Exynos 7870.
      • Correct filter configuration offset of some of Google GS101 SoC pin banks, which later is supposed to be used during system suspend/resume.
    • SoC Drivers
      • Add support for Exynos USI v1 serial engines. Drivers already support newer IP blocks – USI v2 – present in Exynos 850 and newer. A bit older ARM64 designs, like the Exynos 8895, use older USI v1 block.
      • Add Exynos ACPM (Alive Clock and Power Manager) protocol driver for Google GS101 SoC. ACPM protocol allows communication between the power management firmware and other embedded processors.
      • Exynos2200: Add PMU, ChipID and SYSREG Devicetree bindings.
      • Exynos7870: Add PMU and ChipID Devicetree bindings.
      • Various cleanups.
    • DTS ARM changes – N/A
    • Samsung DTS ARM64 changes
      • Samsung Exynos 7870 added to Arm Mali Midgard GPU driver
      • Google GS101
        • Disable GSA core pinctrl because its registers are not available for normal world.
        • Add APM (Active Power Management) mailbox and the ACPM firmware nodes.
        • Add new boards: Google Pixel 6 Pro (Raven).
        • Enable framebuffer and reboot-mode.
      • Exynos 990 – Add PERIS clock controller, MCT timer
      • Exynos 8895:
        • Define all remaining serial engine (USI) and syscon nodes, add MMC.
        • Enable microSD and touchsreen on Samsung Galaxy S8 (dreamlte).
      • Exynos Auto v920 – Add UFS and CPU cache information.
      • Various cleanups.
    • Defconfig changes – N/A
    • New Device – Google Pixel 6 Pro
  • Qualcomm
    • PHY Drivers
      • Added Qualcomm X1P42100 PCIe Gen4x4, QCS615 qmp usbc, PCIe UNIPHY 28LP driver, and SM8750 QMP UFS PHY
      • Qualcomm support for dual lane PHY, support for QCS8300 SoC
    • Clock drivers
      • Support associating GDSCs with multiple power domains
      • Add Qualcomm IPQ9574 NSS clk driver
      • Add Qualcomm QCS8300 GPU and video clk drivers
      • Add Qualcomm SDM429 RPM clks
      • Add Qualcomm QCM6490 LPASS (low power audio) resets
      • Fix halt check of voted branch clks
      • Properly park Qualcomm SM8250 camera clks
      • Add SDCC rests to Qualcomm SDM660
      • Fix Qualcomm SM8750 regmap to skip protected registers
      • Retain state for Qualcomm’s SM8650 USB hardware when powered down
      • Remove GPU AHB and dispaly XO clks from Qualcomm X Elite clk driver
      • Update UART frequency table on Qualcomm IPQ5424 to fix flow control
      • Allow Qualcomm IPQ5018 GCC driver to be compiled on arm32
    • remoteproc – Add support for managing the modem remoteprocessor on the Qualcomm MSM8226, MSM8926, and SM8750 platforms
    • Qualcomm PCIe controller driver
      • Add qcom,pcie-ipq5332 binding
      • Add qcom i.MX8QM and i.MX8QXP/DXP optional DMA interrupt (I didn’t know NXP was using a Qualcomm PCIe implemented?)
      • Add optional dma-coherent DT property for Qualcomm SA8775P
      • Make DT iommu property required for SA8775P and prohibited for SDX55
      • Add DT IOMMU and DMA-related properties for Qualcomm SM8450
      • Add endpoint DT properties for SAR2130P and enable endpoint mode in driver
      • Describe endpoint BAR0 and BAR2 as 64-bit only and BAR1 and BAR3 as RESERVED
    • Media – Added Qualcomm iris video decoder driver
    • iommu – MMUv2 devicetree binding updates for Qualcomm implementations (QCS8300 GPU and MSM8937)
    • WiFi – ath12k: continued work on MLO
    • Driver updates
      • Improve the client interface for the Qualcomm ICE driver to avoid leaking references, including fixing the client drivers to call the new function.
      • Adopt str_on_off() helper in AOSS driver and mark non-global servreg QMI element info array in the PDR driver static.
      • Introduce Devicetree binding for providing board-specific firmware-name for the GENI serial engine block.
      • Add SDM630/636 support in pd-mapper.
      • Clean up and fix error handling in the SSC block bus driver.
      • Add missing msm8916-acc compatible to resolve a number of Devicetree validation errors.
    • Arm64 defconfig updates for Linux 6.15
      • Explicitly enable the DRM_DISPLAY_CONNECTOR module, as this is used by a variety of boards.
      • Enable retimer and redriver drivers used in the USB configuration of a variety of Qualcomm X Elite-based devices.
      • Enable the NSS clock controller driver for IPQ9574, the new Iris video encoder/decoder driver and its clock controller, as well as the QCM2290 GPU clock controller.
    • New devices – Huawei Matebook E Go LTE (gaokun2), E Go, and E Go 2023 (gaokun3)
  • MediaTek
    • Add Mediatek MT8370 (Genio 510) support, a minor variation of MT8390 (Genio 700) with fewer CPU and GPU cores
    • MFD – MediaTek MT6359 – Added mfd_cell for mt6359-accdet to allow its driver to probe.
    • PCIe Gen3 controller driver:
      • Remove leftover mac_reset assert for Airoha EN7581 SoC
      • Add EN7581 PBUS controller ‘mediatek,pbus-csr’ DT property and program host bridge memory aperture to this syscon node
    • Network – Support phylink managed EEE
    • WiFi – MediaTek (mt76): preparation for mt7996 Multi-Link Operation (MLO) support
    • Driver updates for Linux 6.15
      • Add entries for new and missing SoCs in the MediaTek SoCInfo driver (MT8370AV/AZA, MT8390AV/AZA) and an extra entry for a new revision of the MT8395AV/ZA SoC.
      • The MediaTek SoCInfo driver also gets its SoC attribute information restructured: now the family, machine, and soc_id fields are correctly populated.
      • MT8188 gains support for the secondary Display Parallel Interface used for HDMI, and for the Display Stream Compression component routing through mmsys and mutex tables.
      • All of the MMSYS drivers get an important overhaul: it was found that, in multiple cases, the tables contained wrong mask/value pairs, hence those were doing either nothing or breaking routings. The mmsys tables were converted to use a newly introduced macro that will perform a compile time check, making sure that each table entry’s value fits in the declared register mask.
      • Thanks to a new macro, multiple MediaTek SoCs got multiple fixes in their MMSYS tables, addressing issues that were severely impacting the functionality of the display controller pipelines.
    • ARM64 DTS updates
      • SoCs
        • Airoha EN7581 gets support for its SCU clock controller, SPI NAND, hardware RNG, pinctrl, and i2c controllers;
        • MediaTek MT8365 SoC gets support for all of its Display Controller components;
        • MT8188 gets support for more Display Controller components (DSC and MERGE), for the tertiary MSDC (eMMC/SD/SDIO) controller, and for the MTU3 USB DRD controllers;
        • MT8195 and MT8188 both get migrated to the new OF Graph used for defining a pipeline for the Display Controller components (this was previously hardcoded per-board in the drm driver)
      • Boards
        • Google Kukui (MT8183) is switched to Elan touchscreen driver instead of hid-over-i2c to fix probe failures in some cases;
        • Google Cherry (MT8195) and Geralt (MT8188) Chromebooks get migrated to using OF Graph for defining their board specific part of the display pipeline;
        • MediaTek Genio 350 (mt8365) EVK board adds support for HDMI output  through the iTE IT66121 chip, and for DSI output to the Startek KD070FHFID015 display;
        • MediaTek Genio 700 (and 510) EVKs get support for their integrated dual Digital Microphones, for their RichTek RT1715 USB Type-C Controller with USB-PD capability, the iTE IT5205 Alternate Mode
        • Passive MUX (USB3.1/DP1.4), and for USB Gadget/Host switching through the MTU3 DRD Controller, other than for USB in general;
        • MediaTek Genio 1200 EVK gets support for its MediaTek MT6360 PMIC integrated Type-C Controller, and the IT5205 MUX;
        • Radxa NIO-12L gets its DSI display pipeline preconfigured, and also the introduction of a devicetree overlay for the official Radxa 8HD DSI panel, enabling display output over DSI.
      • Various fixes and cleanups
    • New device – MediaTek Genio 510 EVK board (aka MT8370 EVK board)
  • Other new Arm hardware platforms and SoCs
    • AMD – Versal NET SoC with Cortex-A78 CPUs and FPGA fabric
    • Apple – T2 baseboard management controller on earlier Intel CPU-based Macs
    • Arm – Morello reference platform with experimental CHERI support, which requires a modified kernel.
    • Google – Google Pixel Pro 6 phone based on gs101 (Tensor)
    • NXP
      • 11x distinct board variants from Toradex and one from Variscite, all based on i.MX6
      • 3x additional variants of the i.MX8MP based “Skov” board
      • A second variant of the i.MX95 EVK board
    • Renesas – Two boards based on Renesas SoCs
    • STMicro
      • STM32MP25, MP211, MP213, MP215, MP231, MP233 and MP235
      • 3x boards based on 32-bit STM32MP1
  • Raspberry Pi-specific changes
    • IRQ
      • Enable irqchip/irq-bcm2712-mip driver when ARCH_BCM2835 is enabled
      • Fix BCM2712 irqchip driver Kconfig dependencies required on the Raspberry Pi 5
    • spi driver – Restore native CS probing when pinctrl-bcm2835 is absent
    • network – phy: microchip: force IRQ polling mode for lan88xx. It’s to prevent the lan78xx driver from getting stuck in an interrupt loop while bringing the device up and flooding the kernel log with messages like:

การเปลี่ยนแปลงใน Linux 6.15 สำหรับสถาปัตยกรรม RISC-V

สถาปัตยกรรม RISC-V ก็ได้รับการปรับปรุงและเปลี่ยนแปลงหลายอย่างเช่นกัน:

  • The RISC-V architecture has gained support for the BFloat16 floating-point extension, the Zaamo and Zalrsc extensions, and Zicbom, Zicntr, and Zihpm extensions
  • The sub-architecture selection Kconfig system has been cleaned up, the documentation has been improved, and various detections have been fixed
  •  The vector-related extensions dependencies are now validated when parsing from device tree and in the DT bindings
  • Misaligned access probing can be overridden via a kernel command-line parameter, along with various fixes to misalign access handling
  • Support for relocatable !MMU kernels builds
  • Support for hpge pfnmaps, which should improve TLB utilization
  • Support for runtime constants, which improves the d_hash() performance
  • Support for bfloat16, Zicbom, Zaamo, Zalrsc, Zicntr,
    Various fixes
    • We were missing a secondary mmu notifier call when flushing the tlb which is required for IOMMU
    • Fix ftrace panics by saving the registers as expected by ftrace
    • Fix a couple of stimecmp usage related to cpu hotplug
    • purgatory_start is now aligned as per the STVEC requirements
    • A fix for hugetlb when calculating the size of non-present PTEs
  • Alibaba T-Head
    • pmdomain – Add power-domain driver for TH1520
    • firmware – Add AON firmware protocol driver. Note: the T-Head TH1520 SoC uses an E902 co-processor running Always-On (AON) firmware to manage power, clock, and other system resources.
  • Microchip – DTS – update pcie reg properties to new format
  • SiFive
    • Serial – lock port in startup()/shutdown() callbacks
    • Timer – Add SiFive CLINT2
    • perf
      • Rename U74 to “Bullet”
      • Add SiFive P550, P650, abd “Bullet” events
  • Sophgo
    • Add Sophgo SPI NOR controller driver
    • SG2042
      • Enable SPI controller in device tree
      • IRQ – new driver for the MSI interrupt controller
      • Add PWM support
    • Pinctrl – Sophgo RISC-V SG2042 and SG2044 subdrivers
  • SpacemIT
  • StarFive – JH7110 – DTS: pciephy0 USB 3.0 configuration registers

การอัปเดตสำหรับ MIPS

ยังคงมีการอัปเดตบางส่วนสำหรับสถาปัตยกรรม MIPS แต่รายการการเปลี่ยนแปลงมีไม่มากนัก:

  • Add support for multi-cluster configuration
  • Add quirks for enabling multi-cluster mode on EyeQ6
  • Add DTS clocks for ralink (notably omega2+ and vocore2 boards)
  • Cleanup Realtek DTS
  • Other cleanups and fixes

สามารถดูข้อมูลเพิ่มเติมได้ที่ Linux 6.15 changelog ที่มี commit messages เพิ่มเติมได้จากการใช้คำสั่ง : git log v6.14..v6.15-rc7 --statหรือสามารถอ่านบันทึกการเปลี่ยนแปลงได้บนเว็บไซต์ Kernelnewbies

แปลจากบทความภาษาอังกฤษ : Linux 6.15 Release – Main changes, Arm, RISC-V and MIPS architectures

Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
โฆษณา