Linux 6.9 release – Main changes, Arm, RISC-V, and MIPS architectures

Linus Torvalds has just announced the release of Linux 6.9 on LKML:

So Thorsten is still reporting a few regression fixes that haven’t made it to me yet, but none of them look big or worrisome enough to delay the release for another week. We’ll have to backport them when they get resolved and hit upstream.

So 6.9 is now out, and last week has looked quite stable (and the whole release has felt pretty normal). Below is the shortlog for the last week, with the changes mostly being dominated by some driver updates (gpu and networking being the big ones, but “big” is still pretty small, and there’s various other driver noise in there too).

Outside of drivers, it’s some filesystem fixes (bcachefs still stands out, but ksmbd shows up too), some late selftest fixes, and some core networking fixes.

And I now have a more powerful arm64 machine (thanks to Ampere), so the last week I’ve been doing almost as many arm64 builds as I have x86-64, and that should obviously continue during the upcoming merge window too. The M2 laptop I have has been more of a “test builds weekly” rather than “continuously”.

Not that I really expect that to really show any issues – the laptop builds never did – but I feel happier having a bit more coverage.

Anyway, please keep testing, and obviously this means that tomorrow the merge window for 6.10 opens. I already have a few dozen pull requests pending, I appreciate the early birds,


Released about two months ago, Linux 6.8 brought us a new experimental Intel Xe drm driver that aims to replace the legacy i915 driver for new Intel GPUs, the ability for the zswap subsystem to force cold pages out to (real) swap when memory gets tight, rust support for the creation of network PHY drivers, better cache efficiency for networking thanks to the reorganization of data structures, and many more changes. Linux 6.8 also happens to be the default kernel in the just-released Ubuntu 24.04 OS.

Linux 6.9 release

Main changes in Linux 6.9

Some notable changes for the new Linux 6.9 kernel include:

  • Added support for Intel Flexible Return and Event Delivery (FRED) which aims to improve low-level event delivery and allows for simpler and more reliable code; See documentation commit for additional details
  • Added support for running AMD Secure Nested Paging (SNP) guests (see PDF documentation), part of AMD’s confidential-computing solution. However, full support requires KVM changes which have been deferred until Linux 6.10.
  • Mitigations for the latest x86 hardware vulnerability “Register File Data Sampling” (RFDS) impacting Intel Atom CPUs have been merged. More details may be found in this documentation commit.
  • Linux 6.9 can make use of GCC’s named address spaces feature to optimize access to per-CPU data.
  • Initial support for FUSE passthrough has been merged. This feature allows I/O to files served by a user-space FUSE server to be handled directly by the kernel resluting in significant performance increases under some conditions. The passthrough mode only supports privileged servers in Linux 6.9.

Linux 6.9 changelog for the Arm architecture

  • The Rust language is now supported on 64-bit Arm processors.
  • It is now possible to run 64-bit Arm CPUs in LPA2 mode, which sets up a 52-bit virtual address space.
  • Allwinner
    • Allwinner H616 – Added SPDIF, DMA, and Thermal drivers
    • New Devices
  • Rockchip
    • Audio – Added internal audio codec driver for RK3308
    • PHY driver – Rockchip HDMI/eDP Combo PHY driver
    • Clock
      • New PLL-rate for Rockchip RK3568
      • I2S rate improvements for Rockchip RK3399
      • Rockchip RK3588 syscon clock fixes and removal of overall clock-number from the RK3588 binding header
      • A prerequisite for later improvements to the Rockchip RK3588 linked clocks
    • Arm64 device tree updates
    • New devices
      • Theobroma Systems RK3588-Q7 Qseven SoM
      • Toybrick TB-RK3588X board
      • Powkiddy RGB10MAX3 game console (RK3566)
      • Pine64 PineTab2 tablet (RK3566)
      • Anbernic RG-ARC S and RG-ARC D handheld game consoles (RK3566)
      • QNAP TS433 quad-bay NAS (RK3566)
  • Amlogic
    • Clock driver –  Fix clock listing Oops on Amlogic axg
    • Amlogic T7 – GPIO and IRQ drivers
    • Amlogic ARM64 DT changes for Linux 6.9:
      • Add reset controller for Amlogic C3
      • Set initial rate for the NPU on Amlogic G12 SoCs
      • Set initial clocks for USB on Amlogic A1
      • Initialize Amlogic AXG SoC capacitance
      • Drop unstable remark on Amlogic Bindings
      • Add all Amlogic maintainers/reviewers on Amlogic SoCs bindings
      • Cleanups – T7 whitespaces, underscore in names
    • New device – Freebox Pop Player (IPTV Set-To-Box from Free French internet provider based on Amlogic Meson G12A S905X2)
  • Samsung
    • Extend Exynos PMU (Power Management Unit) driver being also the syscon to main system controller registers block, to support Google GS101. The Google GS101 has PMU registers protected and writing is available only via SMC. The Exynos PMU will register its own custom regmap for such case of mixed MMIO+SMC.
    • Rework Samsung watchdog driver to get the regmap to PMU block not via syscon API, but from the Exynos PMU driver. This is necessary for the watchdog driver to work on Google GS101.
    • DTS Arm changes for Linux 6.9
      • Disable thermal polling by Linux in Eynos5422 Odroid XU3 boards, because drivers implement proper dynamic trip points management.
      • Mark crosc-ec-spi in Peach Pi and Peach Pit as wake-up source, to reflect the hardware capabilities.
      • Samsung P4 Note (Exynos4412): add accelerometer.
      • Samsung Galaxy Tab (Exynos5420)
        • Reduce available RAM to avoid conflict with TrustZone.
        • Add WiFi on MMC.
    • Samsung DTS ARM64 changes
      • Mostly work around Google GS101 SoC and Pixel phone (Oriole) adding support for:
        1. Multi Core Timer (MCT) clocksource.
        2. Several clock controllers (DTS and DT bindings) and use new clocks in several other device nodes.
        3. More serial-interface instances: USI8 and USI12 with I2C.
      • Exynos850 – SPI and DMA controllers (PL330).
    • Defconfig changes – N/A
    • New Devices – N/A
  • Qualcomm
    • PHY driver – Qualcomm X1E80100 PCIe phy support, SM8550 PCIe1 PHY, SC7180 UFS PHY and SDM630 USB-C support
    • WiFi
      • Qualcomm (ath11k):
        • Support 6 GHz station power modes: Low Power Indoor (LPI), Standard Power) SP and Very Low Power (VLP)
        • QCA6390 & WCN6855: support 2 concurrent station interfaces
        • QCA2066 support
      • Qualcomm (ath12k):
        • Refactoring in preparation for Multi-Link Operation (MLO) support
        • 1024 Block Ack window size support
        • firmware-2.bin support
        • support having multiple identical PCI devices (firmware needs to have ATH12K_FW_FEATURE_MULTI_QRTR_ID)
        • QCN9274: support split-PHY devices
        • WCN7850: enable Power Save Mode in station mode
        • WCN7850: P2P support
    • ARM32 DTS updates
      • MSM8226  – SAW and ACC nodes are introduced to enable SMP support. Watchdog definition is also added, and all nodes are sorted and cleaned
        up. rmtfs memory is defined on HTC One Mini 2, vibrator support is added to LG G Watch R, touch keycodes are defined for Samsung Galaxy Tab 4. The Samsung Galaxy Tab 4 DeviceTree is refactored to allow more variants to be introduced easily.
      • The SAW nodes across APQ8064, IPQ8064, MSM8960 and MSM8974 are updated based on recent work on the binding and driver.
      • IPQ8064 – SAW nodes are cleaned up, and unused reset-names is dropped from DWC3.
      • MSM8960 – GSBI3 and the I2C bus therein is introduced, in order to introduce touchscreen support on the Samsung Galaxy Express SGH-I437. gpio-keys are introduced on the same.
      • MSM8974 – The QFPROM register size is corrected. The order of the clocks in the SDX65 DWC3 node is corrected to match the binding.
      • The mach-qcom Kconfig options are cleaned up, to avoid unnecessary per-platform options.
    • Arm64 DTS updates for Linux 6.9
      • Snapdragon X Elite – Audio and compute remoteprocs, IPCC, PCIe, AOSS QMP, SMP2P, TCSR, USB, display, audio, and soundwire support is introduced, and enabled across the CRD and QCP devices.
      • SM8650 – PCIe controllers are moved to GIC-ITS and msi-map-mask is defined. Missing qlink-logging reserved-memory region is added for the modem remoteproc. FastRPC compute contexts are marked dma-coherent. Audio, USB Type-C and PM8010 support is introduced across MTP and QRD devices.
      • GPU cooling devices are hooked up across MSM8916, MSM8939, SC8180X, SDM630, SDM845, SM6115, SM8150, SM8250, SM8350, and SM8550.
      • UFS PHY clocks are corrected across MSM8996, MSM8998, SC8180X, SC8280XP, SDM845, SM6115, SM6125, SM8150, SM8250, SM8350, SM8550, and SM8650.
      • PCI MSI interrupts are wired up across SM8150, SM8250, SM8350, SM8450, SM8550, SM8650, SC7280, and SC8180X
      • IPQ6018 – QUP5 I2C, tsens sand thermal zones are defined.
      • The Inline Crypto Engine (ICE) is enabled for IPQ9574.
      • MSM8953 – The GPU and its IOMMU is introduced, the reset for the display subsystem is also wired up.
      • VLS CLAMP registers are specified for USB3 PHYs on MSM8998, QCM2290, and SM6115.
      • QRB4210 RB2 – USB Type-C port management is enabled.
      • SA8295P ADP – The MAX20411 regulator powering the GPU rails is introduced and the GPU is enabled. The first PCI instance on SA8540P Ride is disabled for now, as a fix for the interrupt storm produced here has not been presented.
      • SA8775P – The firmware memory map has changed and is updated. Safety IRQ is added to the Ethernet controller.
      • SC7180 – UFS support is introduced and the cros-ec-spi is marked as wakeup source.
      • SC7280 – Capacity and DPC properties are added, cryptobam definition is improved to work in more firmware environments, more Chrome-specific properties are moved out from main dtsi, and cros-ec-spi is maked as a wakeup source. Slimbus definition is added to the platform.
      • A missing reserved-memory range is added to Fairphone FP5, PMIC GLINK and Venus are enabled. LEDs are introduced and voltage settings corrected on the QCM6490 IDP, and RB3gen2 sees the same voltage changes and GCC protected clocks are introduced to make the board boot properly.
      • RPMh sleep stats and a variety of cleanups and fixes are introduced for SC8180X.
      • SC8280XP – The additional tsens instances are introduced. Camera Subsystem and Camera Control Interface (CCI) are added. PMIC die-temp vadc channels are introduced on the CRD, to allow ADC channels to be tied to the shared PMIC temp-alarms, to actually report temperature.
      • SDM630 – USB QMP PHY support is introduced and enabled on the Inforce IFC6560 board. On the various Sony Xperia XA2 variants WLED is enabled and configured.
      • SM6350 – Display subsystem interconnects and tsens-based thermal zones are added.
      • SM7125 – UFS support is added.
      • Fairphone FP4 (SM7225) – Display and GPU are enabled, and firmware paths are corrected.
      • SM8150 – PCIe controller definitions are corrected.
      • SM8550 – As with SM8650, the SM8550 the fastrpc compute contexts are marked dm-coherent, and PCIe controllers are moved to use GIC-ITS. The UFS controller frequency definition is moved to the generic opp-table. Touchscreen is enabled on the QRD device.
      • Variety of smaller cleanups and corrections to match DeviceTree bindings and style guidelines are introduced across the various files.
    • Arm64 defconfig updates
      • Enable the Qualcomm PBS driver to resolve the dependency from the Light Pulse Generator (LED-driver) on modern Qualcomm platforms. Enable the X1E multimedia clock controllers, to provide clocks for the various multimedia blocks. Enable Global clock controller and interconnect drivers for the QDU1000/QRU1000 platforms.
      • Enable the audio drivers and the Goodi Berlin touchscreen driver, used on SM8650 QRD.
      • Enable the MAX20411 regulator driver drive the GPU rail on SA8295P.
      • Mark the Qualcomm interconnect providers that feeds UART instances as builtin, to ensure the console exists when userspace is launched.
    • New devices and boards
      • Samsung Galaxy Tab 4 10.1 LTE
      • Four variants of Samsung Galaxy Core Prime and Grand Prime, built on MSM8916
      • SM8550 (Snapdragon 8 Gen 2) Hardware Development Kit (HDK)
  • MediaTek
    • Added support for Mediatek MT7981B (Filogic 820) and MT7988A (Filogic 880) networking SoCs designed to be used in wireless routers, and similar to the already supported MT7986A (Filogic 830).
    • PHY driver – Mediatek MT8365 CSI phy driver
    • DMA engine – Yaml conversion for MediaTek High-Speed controller binding
    • Add support for Sound to MediaTek MT6357 CODEC
    • mt76 wifi driver:
      • mt7915: newer ADIE version support
      • mt7925: radio temperature sensor support
    • Defconfig updates
    • Arm Devicetree updates for Linux 6.9
      • Adds more support for the MediaTek MT8186 SoC’s Video and JPEG encoders
      • Adds MT7988 clocks
      • Enables wakeup support for the CrOS EC on SPI in all MediaTek Chromebooks
      • Performs some cleanups and includes some spare fixes.
    • New devices
      • Xiaomi AX3000T (MT7981B)
      • Acelink EW-7886CAX (MT7986A)
      • Banana Pi BPI-R4 (MT7988A)
      • MT8186 Chromebooks: Tentacruel, Tentacool, Steelix, Rusty, Magneton
      • Radxa NIO 12L based on MediaTek Genio 1200 (MT8395)
  • Other new Arm hardware platforms and SoCs
    • NVIDIA – Two Android phones based on the old Tegra30 chip
    • NXP
      • Added support for i.MX8DXP is a variant of i.MX8QXP, with two CPU cores less.
      • Eight embedded board using NXP i.MX6/8/9
    • Renesas
      • Added support for R8A779G2 (R-Car V4H ES2.0) and R8A779H0 (R-Car V4M) automotive SoCs.
      • Three variants of the “White Hawk” board for Renesas automotive SoCs
    • Texas Instruments
      • J722S is another automotive variant of its K3 family, related to the AM62 series.
      • Added PowerVR SGX GPU nodes
      • Three evaluation boards for TI K3-based SoCs
  • Raspberry Pi-related changes – Wifi – Fix boot crash on Raspberry Pi 4 introduced with “allow per-vendor event handling” commit last January.

RISC-V updates in Linux 6.9

RISC-V had its fair share of changes in Linux 6.9 :

  • Support for various vector-accelerated crypto routines
  • Hibernation is now enabled for portable kernel builds
  • mmap_rnd_bits_max is larger on systems with larger VAs
  • Support for fast GUP
  • Support for membarrier-based instruction cache synchronization
  • Support for the Andes hart-level interrupt controller and PMU
  • Some cleanups around unaligned access speed probing and Kconfig settings
  • Support for ACPI LPI and CPPC
  • Various cleanups related to barriers
  • A handful of fixes
  • Microchip
    • Missing bus clocks for the CAN controllers spotted during the creation of a driver for the controllers
    • Specific compatible for the SiFive PDMA block on PolarFire SoC.
  • SiFive – Rework the SiFive PLIC driver to prepare for MSI support
  • Sophgo
    • SG2042 – Add reset controller, reset generator support
    • CV1800B and SG2002 – MMC and SD controllers
  • StarFive
    • Added StarFive StarLink PMU (Performance Monitoring Unit) with support for monitoring L3 memory system PMU events
    • JH8100 SoC – IRQ driver, Watchdog support, StartLink PMU, (OpenCores) PWM,
    • JH7110 SoC – Add camera subsystem nodes (dphy-rx, csi2rx, camss nodes), DWMAC, PWM
    • VisionFive V1 SBC – Setup Ethernet PHY
  • Alibaba T-head
    • TH1520
      • Increase tuning loop count to 128 for SD card driver
      • Enable mmc and dma drivers; needed to boot boards like the LicheePi 4A and BeagleV-Ahead from eMMC flash

MIPS changes

The summary of changes to the MIPS architecture was one of the shortest ever:

  • Added support for Mobileye SoCs
  • Unified GPR/CP0 regs handling for uasm
  • Cleanups and fixes

Here’s the longer form:

  • mips: cm: Convert __mips_cm_phys_base() to weak function
  • mips: cm: Convert __mips_cm_l2sync_phys_base() to weak function
  • mips: dts: ralink: mt7621: add cell count properties to usb
  • mips: dts: ralink: mt7621: add serial1 and serial2 nodes
  • mips: dts: ralink: mt7621: reorder serial0 properties
  • mips: dts: ralink: mt7621: associate uart1_pins with serial0
  • MIPS: ralink: Don’t use “proxy” headers
  • mips: sibyte: make tb_class constant
  • mips: mt: make mt_class constant
  • MIPS: ralink: Remove unused of_gpio.h
  • bus: bt1-apb: Remove duplicate include
  • MAINTAINERS: remove entry to non-existing file in MOBILEYE MIPS SOCS
  • MIPS: mipsregs: Parse fp and sp register by name in parse_r
  • tty: mips_ejtag_fdc: Fix passing incompatible pointer type warning
  • mips: zboot: Fix “no previous prototype” build warning
  • MIPS: mipsregs: Set proper ISA level for virt extensions
  • MIPS: Implement microMIPS MT ASE helpers
  • MIPS: Limit MIPS_MT_SMP support by ISA reversion
  • MIPS: Loongson64: test for -march=loongson3a cflag
  • MIPS: BMIPS: Drop unnecessary assembler flag

I’ve also generated the complete Linux 6.9 changelog with commit messages only, using the command git log v6.8..v6.9-rc7 --stat. Further details may only be found on the relevant LWN articles and Kernelnewbies’ changelog should soon be updated.

Share this:
FacebookTwitterHacker NewsSlashdotRedditLinkedInPinterestFlipboardMeWeLineEmailShare

Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress

ROCK 5 ITX RK3588 mini-ITX motherboard

2 Replies to “Linux 6.9 release – Main changes, Arm, RISC-V, and MIPS architectures”

  1. “And I now have a more powerful arm64 machine (thanks to Ampere)” … about time, Ampere!

Leave a Reply

Your email address will not be published. Required fields are marked *

Khadas VIM4 SBC
Khadas VIM4 SBC