เปิดตัว Linux 6.4 กับเปลี่ยนแปลงสถาปัตยกรรม Arm, RISC-V และ MIPS

Linus Torvalds ได้ประกาศเปิดตัว Linux 6.4 บน Linux Kernel Mailing List (LKML)

เมื่อประมาณ 2 เดือนที่ผ่านมาได้เปิดตัว Linux 6.3 มีการดำเนินการของกลไกการป้องกันการโจมตี Spectre ของ AMD ที่เรียกว่า “automatic IBRS”, การพัฒนา Rust โดยมีการรองรับ User-mode Linux (บนระบบ x86-64 เท่านั้น), ระบบไฟล์ NFS (สำหรับ Client และ Server) การรองรับกการเข้ารหัส (Encryption) AES-SHA2, kernel สามารถติดตั้ง built-in Dhrystone benchmark ซึ่งช่วยให้สามารถทดสอบประสิทธิภาพขณะที่ทำการเปิดใช้งาน SoC ได้, มีการเพิ่มอุปกรณ์ WiFi ใหม่ด้วยอุปกรณ์ RealTek RTL8188EU (rtl8xxxu) และอุปกรณ์ Qualcomm Wi-Fi 7 (ath12k) รวมถึงการเปลี่ยนแปลงอื่น ๆ อีกมากมาย

Linux 6.4 release

จุดเด่นของ Linux 6.4

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

  • สามารถรองรับคุณสมบัติ linear address masking สำหรับ x86 จาก Kernel ปัจจุบันรองรับโหมด LAM_U57 (ที่อนุญาตให้เก็บข้อมูล metadata 6 บิตใน address value) เท่านั้น แต่โหมด LAM_U48 ต้องพิจารณาเพิ่มเติม สามารถดูรายละเอียดเพิ่มเติมในบทความบนเว็บไซต์ LWN
  • การดำเนินการใหม่ของ ptrace() 2 รายการ – PTRACE_GET_SYSCALL_USER_DISPATCH และ PTRACE_SET_SYSCALL_USER_DISPATCH – อนุญาตให้กระบวนการหนึ่งสามารถควบคุมการตั้งค่าระบบการเรียกใช้งานของผู้ใช้งานอื่นได้ การดำเนินการใหม่นี้สามารถใช้สำหรับ  checkpoint/restore mechanism ใน user space
  • ระบบ io_uring subsystem สามารถทำการเขียนข้อมูล I/O โดยตรงไปยังไฟล์ได้พร้อมกันหลายคำสั่งถ้าระบบไฟล์รองรับ ปัจจุบันระบบไฟล์ EXT4 และ XFS เป็นระบบที่รองรับ
  • กระบวนการ Unprivileged สามารถทำการสำรวจข้อมูล Pressure-stall Information ที่เปิดตัวครั้งแรกใน Linux 4.20 โดยระยะเวลาที่สำรวจจะต้องเท่ากับหรือเป็นสองเท่าของวินาที
  • Linux Kernel ขณะนี้มีรายละเอียด Tutorial ที่อธิบายวิธีสร้าง Trimmed Kernel

การเปลี่ยนแปลง Arm ใน Linux 6.4

มีการเปลี่ยนแปลงมากมายในส่วนของสถาปัตยกรรม Arm ดังนี้:

  • Allwinner
    • Added Allwinner T113-S Cortex-A7 processor
    • F1C100s – Enable LicheePi Nano USB support
    • New boards and devices
  • Rockchip
    • Rockchip RK3588 – Added Watchdog, ASoC
    • Regulator – Added support for Rockchip RK860x
    • irqchip – Workaround for the Rockchip 3588 chip that doesn’t correctly deal with the shareability attributes
    • Clock driver – Reparenting fix for the clock supplying camera modules on the rk3399 and more critical (bus-)clocks on the rk3588.
    • New devices and boards
  • Amlogic
    • SPI driver – Support for Amlogic A1 (A113L) SPI controller
    • PCIe – Convert Amlogic Meson AXG DWC PCIe SoC controller bindings to dt-schema
    • Other drivers changes:
      • convert clk-measure.txt to dt-schema
      • meson-pwrc: Use dev_err_probe()
      • meson_sm: populate platform devices from sm device tree data
      • dt-bindings: Drop unneeded quotes
    • ARM DT changes:
      • Adjust order of some compatibles
      • meson8: add the xtal_32k_out pin
      • meson8: add the SDXC_A pins
      • mxiii-plus: Enable Bluetooth and WiFi support
    • ARM64 DT changes for Linux 6.4:
      • Set of DT bindings check fixes
      • Adjust order of some compatibles to match dt-schema migration
      • Add support for BananaPi M2S variants
      • gxbb-kii-pro: add audio & bluetooth support
      • meson-a1: add gpio_intc node
      • gxl: use gxl mdio multiplexer
      • Add initial support for BPI-CM4 module with BPI-CM4IO baseboard
    • New devices and boards – Banana Pi boards based on the Amlogic g12b (Amlogic A311D/S922X) SoC including Banana Pi BPI-M2S SBC and Banana Pi BPI-CM4 module.
  • Samsung
    • MFD – Remove support for Samsung 5M8751 and S5M8763 PMIC devices
    • DTS ARM changes for Linux 6.4:
      • Several cleanups and improvements as a result of dtbs_checks: align node names with bindings, drop incorrect properties, fix clock-names, add missing “ports” node.
      • Move DP and MIPI phys to PMU node (DTS with binding change).
      • Drop old MSHC aliases (while adding proper mmc-ddr-1_8v which was selected by the driver based on the MSHC alias) and add generic MMC aliases in each board. The aliases match known numbering in the schematics.
    • Samsung DTS ARM64 changes:
      • Exynos850: add headers with AUD, G3D and HSI clock controller clock IDs. Add G3D (GPU) clock controller node.
      • Exynos5433: fixes for dtbs_check: move MIPI phy to PMU node.
      • Drop old MSHC aliases (while adding proper mmc-ddr-1_8v which was selected by the driver based on the MSHC alias) and add generic MMC aliases in each board. The aliases match known numbering in the schematics.
    • New Devices – N/A
  • Qualcomm
    • Added Qualcomm IPQ5332 Cortex-A53 and IPQ9574 Cortex-A73 Wi-Fi 7 networking SoCs
    • Added Qualcomm sa8775p automotive SoC derived from the Snapdragon family.
    • UFS – Added support for Qualcomm SA8775p, SM7150
    • Pinctrl – Subdrivers for the Qualcomm SM7150 and IPQ9574 SoCs
    • Clock – Global clock controller drivers for Qualcomm SM7150, IPQ9574, MSM8917 and IPQ5332 SoCs
    • PCIe controller
      • Add SM8550 and SDX5 DT bindings and driver support
      • Use bulk APIs for clocks of IP 1.0.0, 2.3.2, 2.3.3
      • Use bulk APIs for reset of IP 2.1.0, 2.3.3, 2.4.0
      • Add DT “mhi” register region for supported SoCs
      • Expose link transition counts via debugfs to help debug low power issues
      • Support system suspend and resume; reduce interconnect bandwidth and turn off clock and PHY if there are no active devices
      • Enable async probe by default to reduce boot time
    • Networking
      • Added Qualcomm EMAC3 DWMAC ethernet
      • Qualcomm 802.11ax WiFi (ath11k) – MU-MIMO parameters support, ack signal support for management packets
    • Regulators – Support for Qualcomm PMC8180 and PMM8654au
    • ARM64 updates:
      • PCI I/O and MEM ranges are corrected across all targets with PCIe enabled. Likewise, is CPU clocks defined to be provided from CPUfreq for a wide range of platforms, to satisfy the OPP definitions, and LLCC bank information is corrected for all relevant platforms.
      • IPQ5332 gains SMEM, CPUfreq and support for triggering download mode. The MI01.2 board is introduced.
      • XO clock is defined and fed to RPMCC on MSM8953 and MSM8976, to ensure clock trees are properly rooted. DSI clocks feeding into gcc are described on MSM8953.
      • On MSM8996 the external audio components are moved from the SoC dtsi. A few DWC3 quirks are added.
      • On MSM8998 GPIO names are introduced for Sony Xperia XZ Premium, XZ1 and XZ1 Compact. A number of boards have GPIO keys properly marked as wakeup-source.
      • The SA8775P platform is extended with CPUfreq, UARTs, I2C controllers, SPI controllers, SPMI and PMICs, PDC support. The associated PMICs gains reset and power key support, as well as thermal zones defined. Nodes are sorted. On top of this, the SA8775P Ride board/platform is introduced.
      • On SC7180 and SC7280 a range of fixes coming from DeviceTree validation are introduced, some clearing up unused properties, others correcting errors. A number of Google rev0 boards on SC7180 are dropped, as these are not considered to be in use by anyone anymore.
      • On SC8280XP RTC support is introduced and enabled for the CRD and Lenovo Thinkpad X13s. It gains another UART, upon which Bluetooth is enabled on the Lenovo ThinkPad X13s. The touchpad definition is altered to attempt to probe both devices seen in the wild. A number of bug fixes are also introduced, and the regulator definitions on X13s are corrected.
      • On SDM845 dynamic power coefficients are improved. BWMON compatible is corrected. Xiaomi Pocophone F1 gains notification LED. Sony Xperia XZ2, XZ2 Compact and XZ3 gains display, touchscreen, gpu and remoteproc support. OnePlus 6 and 6T gains hall sensor.
      • GPU clock controller and remoteproc nodes are added for SM6115. CPU clock are defined to come from CPUfreq. Board-specific USB-properties are moved out of the SoC dtsi.
      • On SM6375 L3 scaling, IMEM, RMTFS, RPM sleep stats, Tsens, modem remoteproc and WiFi nodes are added. Tsens thermal zones are defined and additional low power states
        are defined. Sony Xperia 10 IV gains volume down key support.
      • On SM8150 another UART is introduced, to be used by GNSS on the SA8155 ADP. Support for the Flash LED block in PM8150L is added.
      • On SM8250 TPDM MM and PRNG is defined, MHI region is added to PCIe node. A few bug fixes are introduced after Devicetree validation.
      • The DisplayPort controller on both SM8350 and SM8450 is defined and the related QMP instance is transitioned to the USB3/DP combo variant. IMEM and PIL info is introduced, for post mortem debugging of remoteprocs. On the HDK PMIC GLINK is enabled and role switch is enabled. Some audio resources are corrected.
      • A typo in the USB role property of the Microsoft Surface is corrected, thanks to DeviceTree validation.
      • PCIe controllers and PHYs descriptions are corrected, and pinctrl state definitions are moved from the soc to the board definition. BWMON compatibles are corrected. PM8550B gains the definition of the eUSB2 repeater and this is enabled on the MTP. PMIC GLINK is also defined for the MTP and connected to DWC3, for role switching support.
      • In addition to this, a range of cleanups based on Devicetree validation is introduced.
      • A few clock bindings are introduced, from topic-branches shared with the clock tree, to aid introduction of references to these.
    • ARM32 DTS updates:
      • Add IPA definition to the sdx65 platform, and bring a few stylistic changes to sdx55 and sdx65.
      • Compatibles for the two new Qualcomm Robotics Platform boards, RB1 and RB2, are defined, as is Xiaomi Mi A3 and the MI01.6 development board on IPQ5332. These are all ARM64 boards, despite being introduced through the ARM32 pull request…
      • stdout-path is defined for the ALFA Network AP120C-AC, to avoid the need to pass this information on the kernel commandline. Ath10k is wired up to read calibration data from the “ART” partition.
      • PCI I/O port ranges are fixed on IPQ4019 and IPQ8064.
      • Supply clocks are defined for KPSS L2CC and ACC clock controllers.
      • Supply clocks for the global clock controller are being specified on IPQ4019, MSM8974 and MSM8226.
      • PCIe RC support is enabled on the SDX55 T55 development board, IPA is defined for the SDX55 and a number of cleanup patches are introduced.
    • Arm64 DTS updates for Linux 6.4
      • Devicetree for the QCM2210/QCM2290 is introduced.
      • Support for the output-enable/disable flag is introduced in the pinctrl-msm driver, and the non-standard “input-enable” is dropped from a range of platforms.
      • A wide range of smaller fixes are introduced, based on Devicetree validation.
      • MSM8953 gains LPASS, MPSS and Wireless subsystem support.
      • The iommus property is removed from PCIe nodes in all platforms, as the only the child devices should be associated with iommu groups, through the existing iommu-map property.
      • The reserved-memory map on Huawei Nexus 6P is updated with the addition of splash screen framebuffer memory and adjustment to the reserved memory region overlapping the smem region.
      • Regulators are introduced for the SA8775P Ride platform.
      • A regulator is marked always-on, for correctness, on Trogdor. Pinconf fixes are introduced to both sc7180 and sc7280 devices. A dedicated reviewers list is added for boards relevant to the Chromebook engineers.
      • A set of pinconf fixes is introduced for sc8280xp, labels are introduced for Soundwire nodes.
      • The sensor core remoteproc and FastRPC thereon, are introduced in SDM845 and enabled for OnePlus 6/6T and Shift Shift6mq.
      • RMTFS, remoteprocs, ath10k and ramoops are introduced for the Lenovo Tab P11.
      • UFS support is introduced on SM6125.
      • SM8150 no longer defines the GPU to be in headless mode by default, GPU speedbins are introduced.
      • GPU speedbins are introduced for SM8250 as well, as is support for display on Xiaomi Mi Pad 5 Pro, with two different panels supported.
      • Soundwire controllers, ADSP audio codec macros and the Inline Crypto Engine support is added to the SM8550 platform.
    • Arm defconfig updates – N/A
    • Arm64 defconfig updates
      • Enable a range of TLMM pinctrl drivers, needed to boot related platforms. Multimedia clock drivers for MSM8994 and MSM8998 are enabled and the MSM8996 is flagged as a module instead of builtin.
      • The PMIC_GLINK drivers are enabled, providing USB Type-C and battery support on various platforms, and eUSB2 drivers found on SM8550 are enabled.
      • Base drivers for IPQ5332 and IPQ9574 are enabled.
    • New devices and boards
      • WiFi 7 boards – AL02 board based on IPQ9574, MI01.6 board powered by IPQ5332
      • WiFi/LTE dongle based on Qualcomm MSM8916 (Yiming UZ801 4G modem stick)
      • Two robotics boards based on Qualcomm QRB chips: RB1 board with QRB2210, RB2 with QRB4210
      • Three Snapdragon-based phones made by Xiaomi including Xiaomi Mi A3 (SM6125)
  • MediaTek
    • LED driver – Add support for MediaTek MT6370 LED Indicator and flashlight
    • Clock
      • Add Frequency Hopping (FHCTL) on MediaTek MT6795, MT8173, MT8192 and MT8195 SoCs
      • Add Mediatek MT8188 SoC clk drivers
    • Networking
      • Add Ethernet for MediaTek MT7981 and MT7988 SoCs
      • MediaTek WiFi (mt76):
        • P2P support
        • mesh A-MSDU support
        • EHT (Wi-Fi 7) support
        • coredump support
    • DRM – Add MediaTek SoC DRM (vdosys1) support for mt8195
    • New device – N/A
  • Other new Arm hardware platforms and SoCs
    • Apple – M2 used in current Macbook Air/Pro and Mac Mini gets added, with comparable support as its M1 predecessor.
    • Marvell – GL.iNet MV1000 router based on Marvell Armada 3720
    • NXP – 19 industrial embedded boards based on the NXP i.MX6 (32-bit) and i.MX8 (64-bit) families.
    • UNISOC – UMS512 (Tiger T610) midrange smartphone SoC
    • Texas Instruments – AM625-based BeaglePlay industrial SBC

การอัปเดตสถาปัตยกรรม RISC-V

มีการอัปเดตสถาปัตยกรรม RISC-V ดังนี้:

RISC-V keeps on progressing nicely:

  • The RISC-V architecture has gained support for the Svnapot extension with the “napot”  part standing for “naturally aligned power of two”. It allows groups of 4K base pages to be tied together to create larger (“huge”) pages.
  • The RISC-V kernel can now be built as a PIE relocatable binary.
  • RISC-V has also added a new system call – riscv_hwprobe() - to provide information about the hardware available on the running system. Check out this commit for documentation.
  • RISC-V adds support for hibernation.
  • Support for Zicboz when clearing pages
  • Support for !MMU on rv32 systems
  • The linear region is now mapped via huge pages
  • Moved to GENERIC_ENTRY
  • Various fixes and cleanups throughout the tree
  • StarFive
    • Added StarFive JH7110, a RISC-V SoC based on the Sifive U74 core like its JH7100 predecessor, but with additional CPU cores and a GPU.
    • New JH7110 drivers – Watchdog (also added to JH7100), DMA controller, QuadSPI, Ethernet, temperature sensor, reset, clock
  • RISC-V Devicetrees for Linux 6.4
    • Microchip – A “fix” for the system controller’s regs on PolarFire SoC, adding a missing reg property.
    • StarFive – Basic support for the JH7110 & the associated first-party dev board, the VisionFive v2 (in two forms).

การเปลี่ยนแปลงสถาปัตยกรรม MIPS ใน Linux 6.4

สถาปัตยกรรม MIPS ดูเหมือนว่าจะมีการเปลี่ยนแปลงเล็กน้อยกว่าครั้งที่แล้ว:

  • Added support for Huawei B593u-12
  • Added support for virt board aligned to QEMU MIPS virt board
  • Added support for doing DMA coherence on a per device base
  • Reworked handling of RALINK SoCs
  • Cleanup for Loongon64 barriers
  • Removed deprecated support for MIPS_CMP SMP handling method
  • Removed support Sibyte CARMEL and CHRINE boards
  • Cleanups and fixes

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

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

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