เปิดตัว Linux 6.6 : การเปลี่ยนแปลงที่น่าสนใจของสถาปัตยกรรม Arm, RISC-V และ MIPS

Linus Torvalds ได้ประกาศเปิดตัว Linux 6.5 บน Linux Kernel Mailing List (LKML). เมื่อประมาณ 2 เดือนที่ผ่านมาได้เปิดตัว Linux 6.5 ที่มาพร้อมการรองรับเบื้องต้นสำหรับ USB4 v2 ที่มีความเร็วสูงสุดถึง 80Gbps, การอัพเกรดการรองรับ Rust, สถาปัตยกรรม Loongarch ได้รับการรองรับสำหรับ simultaneous multi-threading (SMT) และการสร้างด้วย Clang compiler, การเพิ่มส่วนขยายการอนุญาต หรือ permission-indirection extension (PIE) สำหรับ arm64 ในการกำหนดสิทธิด้านความปลอดภัยในอนาคต, การรองรับบอร์ด NVIDIA IGX Orin และ Jetson Orin Nano, และการเปลี่ยนแปลงอื่น ๆ อีกมากมาย

Linux 6.6 release

มีอะไรที่น่าสนใจใน Linux 6.6

การเปลี่ยนแปลงและการอัปเดตที่น่าสนใจใน Linux 6.6 kernel ได้แก่:

  • การรองรับฮาร์ดแวร์ Shadow Stack ของ Intel เพื่อป้องกันการใช้ช่องโหว่ Shadow Stack ทำงานโดยการรักษา stack ที่สอง (shadow) ซึ่งไม่สามารถแก้ไขโดยตรงได้ ขณะจัดการกับสแต็ค, โปรเซสเซอร์จะผลักเข้า Stack ปกติ และเข้า shadow stack ที่มีการอนุญาตเฉพาะ ในการคืนค่า, โปรเซสเซอร์จะแสดง Shadow Stack Copy และเปรียบเทียบกับ Stack Copy ปกติ ถ้าทั้งสองต่างกัน โปรเซสเซอร์จะเรียกความผิดพลาดในการควบคุมการป้องกันซึ่งสามารถป้องกันการใช้ช่องโหว่ที่พยายามแก้ไข stack ได้ การใช้งานนี้รองรับ Shadow Stack บน kernel 64 บิตเท่านั้น โดยรองรับ 32 บิตผ่านการจำลอง IA32 และเฉพาะสำหรับพื้นที่ผู้ใช้ สามารถอ่านรายละเอียดเพิ่มเติมในบทความ LWN
  • EEVDF task scheduler – ตัวตั้งเวลางาน EEVDF (“Earliest Eligible Virtual Deadline First”) จะแทนที่ CFS ที่ถูกรวมอยู่ใน Linux 2.6.23 อัลกอริธึมใหม่ได้รับการออกแบบมาเพื่อให้แน่ใจว่ากระบวนการทำงานที่ไม่ได้รับความสนใจจะถูกเลือกโดยอัตโนมัติในครั้งถัดไป ในขณะที่ กระบวนการที่ได้รับสิทธิ์การใช้งานมากเกินไปจะถูกลงโทษหรือถูกกำหนดสิทธิ์การใช้งานน้อยลงในรอบถัดไป สิ่งนี้ทำด้วยอัลกอริทึมที่เป็นระเบียบ โดยที่ CFS ใช้การวิเคราะห์พฤติกรรมและปุ่มที่สามารถปรับตั้งค่าเพื่อพยายามคาดเดากระบวนการที่ต้องการความสนใจมากขึ้น ตัวตั้งเวลา EEVDF ใหม่จะปรับปรุงเวลาแฝง (Latency) ที่อาจจะถูกทิ้งไว้ด้วย CFS ในขณะเดียวกันงานอื่น ๆ ได้รับการกำหนดตารางงานต่าง ๆ อย่างต่อเนื่อง สามารถอ่านรายละเอียดเพิ่มเติมในบทความวิจัย (PDF)
  • Direct I/O แบบอะซิงโครนัสที่เร็วขึ้นโดยใช้ io_uring พร้อมการปรับปรุงปริมาณงาน (Throughput)/เวลาแฝง (Latency) ประสิทธิภาพเพิ่มขึ้นสูงสุด 37% ของ สำหรับ low queue depth IO

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

มีการเปลี่ยนแปลงและการอัปเดตจำนวนมากสำหรับสถาปัตยกรรม Arm ใน Linux 6.6:

  • Allwinner
    • Allwinner T113 – CAN Bus
    • Allwinner A31/A31s – QSPI support
    • Clock driver
      • Parameter name correction for ccu_nkm_round_rate()
      • Implement CLK_SET_RATE_PARENT for NKM clocks, i.e. consider alternative parent rates when determining clock rates
      • Set CLK_SET_RATE_PARENT for A64 pll-mipi
      • Support finding closest (as opposed to closest but not higher) clock rate for NM, NKM, mux and div type clocks, as use it for A64 pll-video0
      • Prefer current parent rate if able to generate ideal clock rate for NKM clocks
    • Device tree – Add Allwinner V3s xHCI USB
    • New board – Orange Pi Zero 3 (Note: WiFi/BT not supported at this time)
  • Rockchip
    • PHY -Added Rockchip RV1126 inno-dsi phy, RK3588 USB and PCIe support
    • IOMMU – Lift page-table allocation restrictions on newer hardware
    • Clock driver
      • Add PLL rates for Rockchip RK3568
      • Add the display clock tree for Rockchip RV1126
    • PCIe controller driver – Use 64-bit mask on MSI 64-bit PCI address to avoid zeroing out the upper 32 bits
    • Arm64 defconfig
      • Enable drivers for the Odroid-M1 board
      • Enable GPIO_SYSCON
      • Enable Rockchip OTP memory driver
      • Enable PHY_ROCKCHIP_NANENG_COMBO_PHY
    • New devices and boards – N/A
  • Amlogic
    • Watchdog – Add support for Amlogic-T7 SoCs
    • IRQ driver – New driver for Amlogic C3 SoCs
    • Clock driver
      • dt-bindings: expose all Amlogic clock ids
      • Migrate Amlogic gxbb clock controllers dt-bindings to schema
    • Various other driver changes
      • Add C3 Power Domains
      • Explicitly include correct DT includes in Amlogic SoC drivers
      • Fix to avoid potential NULL pointer dereference in meson_sm
      • Merge of genpd-v6.5-rc1-1 to move genpd amlogic drivers
    • ARM64 DT changes for Linux 6.6:
      • Add initial support for A311D2
      • Add gpio_intc, power domain for C3 SoC
      • Again some DT bindings fixes & cleanups
    • New boards – Amlogic AN400 (Amlogic T7/A311D2) board, Khadas VIM4
  • Samsung
    • PHY driver – Samsung Exynos850 USB support
    • Drivers – Minor cleanup of headers and maintainer entries for Samsung SoC drivers.
    • DTS ARM changes for Linux 6.6
      • Galaxy S II: correct LCD screen’s physical size.
      • Add Samsung Galaxy Tab 3 8.0 boards (Exynos4212).
      • Galaxy S3 family: add USB connector and USB OTG. Full USB OTG still seems not to work, but at least HDMI improved and dtbs_check is happy.
      • Fix issues pointed out by dtbs_check and W=1: unit addresses, use ‘gpios’ suffix over ‘gpio’, update i2c-arb device node to newer binding.
      • Few white-space cleanups.
    • Samsung DTS ARM64 changes
      • Add dedicated compatibles for PWM block.
      • Add PWM to ExynosAutov9 SADK board.
      • Few white-space and other cleanups.
    • New Devices – Samsung Galaxy Tab 3 8.0 boards (WiFi, 3G, and LTE models)
  • Qualcomm
    • PHY Driver
      • Add Qualcomm SA8775p PCIe support, M31 USB PHY driver
      • Qualcomm SM8150 combo PHY with reworking of QMP PCIe driver
    • DMA Engine – Qualcomm SM6115 and QCM2290 dmaengine support
    • PCIe controller driver:
      • Add DT and driver support for interconnect bandwidth voting for ‘pcie-mem’ and ‘cpu-pcie’ interconnects
      • Fix broken SDX65 ‘compatible’ DT property
      • Configure controller so MHI bus master clock will be switched off while in ASPM L1.x states
      • Use alignment restriction from EPF core in EPF MHI driver
      • Add MHI and Endpoint eDMA support
      • Add Snapdragon SM8450 support to the EPF MHI driversupport
      • Use iATU for EPF MHI transfers smaller than 4K to avoid eDMA setup latency
      • Add sa8775p DT binding and driver support
    • Clock driver
      • Qualcomm IPQ5018 Global Clock Controller driver
      • The MSM8996 core bus framework gains support for MSM8996 Pro.
      • Network-related resets are added on IPQ4019
      • SM6350 GPU clock controller clock supplies are corrected.
      • The SM83550 Video clock controller is extended to support SC8280XP.
      • And plenty of other (small) changes whose list is too long to be posted here…
    • Pincontrol driver
      • Qualcomm SM8350 and SM6115 LPASS (Low Power Audio Sub-System) pin control support
      • Qualcomm PMX75 and PM7550BA (Power Management) pin control support
      • Qualcomm PMC8180 and PMC8180C (Power Management) pin control support
    • Networking
      • Qualcomm Wi-Fi 7 (ath12k) driver gains extremely High Throughput (EHT) PHY support
      • Add support for ualcomm WCN3988 and WCN7850 Bluetooth chips
    • New SoCs
      • Qualcomm IPQ5018 for wireless access points
      • Qualcomm SM4450 (Snapdragon 4 Gen 2)  new low-end mobile phone platform.
    • ARM32 DTS updates
      • GCC and LCC clock controller parent clocks are introduced on MDM9615.
      • The newly introduced RPM representation is introduced across multiple platforms.Voltage ADC channel names are corrected across multiple platforms.
      • APQ8064 gains a definition for GSBI4.
      • The XO clock for SDHCI is corrected, as is the USB node name, on IPQ4019. USB node name is also corrected for SDX55.
      • The correct PMIC is included on SDX65 MTP.
      • The incorrect spi-max-frequency property is removed from controllers on IPQ8064 and MSM8960.
      • OCMEM and the display subsystem are added to MSM8226.
      • Reset line is added to the PM8941 and the APQ8074 Dragonboard, while a few properties of the Sony Xperia Z2 Tablet touchscreen are corrected.
    • Arm64 DTS updates for Linux 6.6
      • A shared definition of the IPQ5332 RDP is introduced, as is GPIO-based LEDs and buttons.
      • IPQ9574 – RDP433 USB, CPU cooling maps and regulators are added.
      • MSM8916 – D3 camera mezzanine is improved and refactored out to its own dts. The Samsung Galaxy S4 Mini gains support for its PMIC with charger, while Samsung Galaxy J5 and E5 gains touchscreen support.
      • MSM8939 – A few fixes and initial support for Samsung Galaxy A7 is added.
      • MSM8996 – Support for scaling the cache bus fabric, missing interrupt for the USB2 controller is added. The touchscreen vio supply on Xiaomi Mi 5 is corrected, and a few other cleanups are introduced across other devices.
      • MSM8998 – Display controller introduced, a few clock fixes are introduced and missing power domains are added for the multimedia subsystem iommu.
      • Reserved memory-regions and reserved GPIO lists are updated for the QDU/QRU1000 IDPs.
      • QCM2290 – Added USB3 PHY. The RB1 board gains regulators and GPU is enabled for the RB2.
      • SA8775P – PCIe and Ethernet support is introduced and enabled for the Ride board.
      • SC7180 – PSCI integration is refactored, to allow supporting devices with the Qualcomm firmware. BWMON is introduced, alongside the CPUfreq-based bus voting.
      • SC8180X – A number of fixes. pmic_glink is introduced and wired up on the Primus and Lenovo Flex 5G devices to provide support for external displays.
      • SC8280XP – Missing SCM interconnect is added and the PDC is marked as wakeup-parent of TLMM. On the CRD the gpio for vreg_misc_3p3 is corrected and a few regulators are renamed to align with schematics. The Lenovo Thinkpad X13s gains camera activity LED and a set of previously reserved GPIOs are released.
      • SA8540P Ride platform gains RTC support.SDM670 – CPU and L3 frequency scaling is added. The PDC is introduced and wired up as wakeup-parent of the TLMM.
      • SDM845  – The UFS controller gains interconnect path description, power-domain information is added to GCC and minimum frequency of the UFS ICE is corrected. On RB3 continuous splash memory region is described, and the camera subsystem is enabled. On the Lenovo Yoga C630 a missing power supply for the display panel is added, and the debug
        UART is introduced.
      • SDX75 – RPMh power-domains and SPMI controller are introduced, the PMX75 PMIC is described and added to the IDP.
      • SM6115 – GPU description is added and display enabled on the Lenovo Tab P11.
      • SM635 – BWMON is introduced for LLCC and DDR scaling. Display and GPU is added, and the PDC is registered as wakeup-parent of TLMM.
      • SM6375 – L3 cache scaling is introduced.
      • SM8150 – The DSI PHY compatible and an interrupt for I2C7 are corrected and on the Sony Xperia 1 and 5, the ramoops pmsg size is corrected.
      • SM8250 – BWMONs are introduced for DDR and LLCC scaling, the UFS node gains interconnect paths, SMMU is marked as DMA coherent and dynamic power coefficients are updated. On Sony Xperia 0 II and 5 II GPIO line names are updated.
      • SM8350 – Missing cluster sleep states and LMH interrupts are added, the CPU compatibles are corrected and APR and LPASS pinctrl support is introduced. The HDK gains uSD card support and PMK8350 is added.
      • SM8450 – Support for RNG and RPMh stats are added, the ICE handling is extracted from the UFS node and the display subsystem gains a missing interconnect path. Thermal description is improved for the HDK.
      • SM8550 M- TP and QRD the pmic_glink is introduced to provide DisplayPort output. A missing regulator supply is also added.
      • A few platforms that happens to share the RPMH power-domain resource identifier constants are migrated to new generic defines. ADC channel names are generalized on various PMICs.
      • A variety of devices gain chassis-type, and the GIC_SPI constant is replacing the 0 across a few different platforms.
    • Arm defconfig updates – N/A
    • Arm64 defconfig updates
      • Mark the MSM8996 global clock controller as buildin, to avoid boot issues.
      • The SC8280XP GPU clock controller is enabled, to enable GPU support.
      • A series of drivers needed to boot the IPQ5018 platform is enabled
      • The ethernet PHY to enable Ethernet on SA8775P is enabled.
    • New devices and boards
      • RDP432-C2 board (IPQ5018)
      • Ride board (SA8775P)
  • MediaTek
    • Thermal control
      • Various fixes for Mediatek LVTS
      • Remove redundant dev_err_probe(), because the underlying function already called it, from the Mediatek sensor
    • PHY – Mediatek dsi driver clock updates
    • SMMU – Add MT8188 IOMMU Support
    • Audio SoC – Support for Mediatek MT7986 (Filogic 830)
    • Networking – Add Bluetooth support for Mediatek MT2925
    • DRM Next
      • Small mtk-dpi cleanups
      • DisplayPort: support eDP and aux-bus
      • Fix uninitialized symbol
      • Do not check for 0 return after calling platform_get_irq()
      • Convert to platform remove callback returning void
      • Fix coverity issues
      • Fix potential memory leak if vmap() fail
      • Fix void-pointer-to-enum-cast warning
      • Rid W=1 warnings from GPU
  • Other new Arm hardware platforms and SoCs
    • Intel – Agilex5 FPGA SoC with Cortex-A76/A55 cores
    • Texas Instruments – AM62P5, a variant of the existing Sitara AM62x family
  • Raspberry Pi related changes
    • Add support for the following Raspberry Pi displays:
      • DFROBOT DRF0678 7in 800×480 TFT DSI capacitive touch
      • DFROBOT DRF0550 5in 800×480 TFT DSI capacitive touch

อัพเดต RISC-V Linux 6.6

การทำงานบนสถาปัตยกรรม RISC-V สามารถดำเนินการต่อไปได้ มีการเปลี่ยนแปลงบางส่วน ได้แก่:

  • Support for the new “riscv,isa-extensions” and “riscv,isa-base” device tree interfaces for probing extensions
  • Support for userspace access to the performance counters
  • Support for more instructions in kprobes
  • Crash kernels can be allocated above 4GiB
  • Support for KCFI
  • Support for ELFs in !MMU configurations
  • ARCH_KMALLOC_MINALIGN has been reduced to 8
  • mmap() defaults to sv48-sized addresses, with longer addresses hidden behind a hint (similar to Arm and Intel)
  • Various fixes and cleanups
  • Alibaba T-Head TH1520
    • Cchange TH1520 files to dual license (GPL-2.0 or MIT)
    • Add BeagleV Ahead board (sufficient only for booting to a console, with work on the mmc, clocks and ethernet sides of things under way)
  • Allwinner D1 – Driver for the CAN Bus controllers (tested on Lichee Panel RV86), add D1 GPADC node in DT file
  • StarFive JH7110
    • PHY – DHPY Rx, USB and PCIe support
    • Added clock drivers
    • Added ASoC driver (I2S)
    • Added support for QSPI
    • Device trees for Linux 6.6
      • Bindings to get clock ID defines out of the binding headers. Getting these (and the syscon bindings) in unblocked a swathe of stuff sitting on the list. Added are: new clock controllers and sycons, ethernet support, thermal sensors, USB and PCIe PHYs, hwrng, mmc and a few more besides for the VisionFive v2.
      • The original VisionFive and BeagleV Starlight got some the thermal sensor support too, as that is supported by the same driver. These changes make the board actually usable with
        something other than an initramfs.
      • Overlay support by way of the -@ flag set during dtb building, is added also.

MIPS “การล้างข้อมูลและการแก้ไข”

ไม่มีการเปลี่ยนแปลงกับ MIPS ใน Linux 6.6 มีเพียงการแก้ไขเล็กน้อย:

  • MIPS: TXx9: Do PCI error checks on own line
  • arch/mips/configs/*_defconfig cleanup
  • MIPS: VDSO: Conditionally export __vdso_gettimeofday()
  • Mips: loongson3_defconfig: Enable ast drm driver by default
  • mips: remove <asm/export.h>
  • mips: replace #include <asm/export.h> with #include <linux/export.h>
  • mips: remove unneeded #include <asm/export.h>
  • MIPS: Loongson64: Fix more __iomem attributes
  • MIPS: loongson32: Remove regs-rtc.h
  • MIPS: loongson32: Remove regs-clk.h
  • MIPS: More explicit DT include clean-ups
  • MIPS: Fixup explicit DT include clean-up
  • Revert MIPS: Loongson: Fix build error when make modules_install
  • MIPS: Only fiddle with CHECKFLAGS if need-compiler'
  • MIPS: Fix CONFIG_CPU_DADDI_WORKAROUNDS modules_install’ regression
  • MIPS: Explicitly include correct DT includes

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

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

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