It’s kernel release weekend, with Linux 6.15 fresh on the scene, backed by a hefty collection of improvements, as well as a few changes which have proved a tad divisive amongst developers.
Linus Torvalds announced the stable release of Linux 6.15 to stable on the Linux Kernel Mailing List (LKML) in his trademark laissez-faire style, noting that “nothing looks particularly scary” in the final push, so he’s happy to sign off.
“Various random small fixes all over, with drivers as usual accounting for most of it. But we’ve got some bcachefs fixes, some core networking, and some mm fixes in there too,” he notes.
For a whip through some of the highlights this new Linux kernel brings, read on!
Linux 6.15: New Features
I’ll start with something small that does not affect the day-to-day desktop Linux experience yet, but will likely have a sizeable impact in the months and years to come.
Nova is a new Rust-based successor to the Nouveau driver for NVIDIA GPUs
Linux 6.15 brings an initial foundational ‘stub’ for Nova, which is aiming to be a successor to Nouveau, the open-source NVIDIA graphics driver, this one aimed at newer GSP-based GPUs. As is trend du jour, the Nova driver is written in Rust.
While it’s very early days with no display-side driver yet, this is an exciting development, not to mention something many will be keen to watch evolve in light of the long (often tumultuous) history of NVIDIA support on Linux.
Meanwhile, Intel’s Xe graphics driver continue to mature. It now supports Shared Virtual Memory (SVM), adds ‘device wedged’ event reporting to notify user-space when the GPU is unresponsive, and can report GPU and VRAM temperatures for Arc GPUs in HWMON.
Key Kernel, Kernel-ing
Linux 6.15 introduces a number of significant but “controversial” changes.
The first is the new fwctl subsystem, a controversial addition that has had something of a bumpy road prior to this mainline inclusion, which comes with initial drivers for CXL devices, mlx5 network adapters, and AMD/Pensando distributed services cards.
Though merged, a security change in the io_uring subsystem drew criticism from Linus Torvalds
This new framework allows for defined “Remote Procedure Calls” (RPCs) to firmware, which stands to standardise the way device firmware can be configured, updated and debugged, securely, in user-space.
While potential boon to firmware updating on Linux seem clear, some opponents consider the approach a touch opaque, not following standard kernel development processes, and that pre-existing APIs could be used instead.
Sticking with controversial changes to make it in, a new security hook for the io_uring subsystem ships in Linux 6.15, despite seeing heated criticism from Linus Torvalds himself, who questioned its purpose and the complexity it adds.
The aim of this hook is noble: to improve security by giving SELinux the ability to apply ‘policy controls’ to different kinds of data that is read by the kernel.
Zero-copy receive lets network packet data go direct to user-space memory
Both of these highlight the (healthy) tensions kernel development sees, as the balance of innovation and upending convention meets the need to adhere to established practices.
On a less contentious note, Linux 6.15 adds support for zero-copy receive (zcrx) via io_uring (the kernel interface for asynchronous I/O operations), potentially improving performance in network-heavy apps, tasks, and workloads.
Zero-copy receive lets network packet data go direct to user-space memory without the usual memory copying overheads. Unlike existing zero-copy solutions, zcrx is said to not require memory alignment or complicated mmap operations, making it easier to use.
There are plans to extend reception directly into device memory too.
Linux 6.15 sees its networking stack gain a new TCP socket option (TCP_RTO_MAX_MS) to offer greater control over connection timeout re-attempt durations for IPv4 connections, which could aid those working on an especially flaky connection.
A new API for receiving information on filesystem mount/unmount events via fanotify is also present. This will (in time, if used) allow applications to monitor filesystem mount changes in real-time, and respond or inform accordingly.
Rounding it out, the block layer supports hardware-wrapped encryption keys, allowing the kernel to put encryption key(s) into a block device without keeping the key in memory given, worst case scenario, it could be ‘read’ from memory by an attacker.
File System Changes
FUSE can now enforce timeouts, handy when SSH file systems hang
Every new Linux kernel release includes a glut of file system improvements, and Linux 6.15 is no exception.
Among the more notable changes, Linux 6.15 permits the FUSE (filesystems in user space) subsystem to enforce timeouts on unresponsive user-space servers and handle file names longer than 1024 characters.
This should help mitigate hangs when, for example, SSH filesystems become unresponsive — handy!
A standout performance improvement concerns exFAT filesystems. In Linux 6.15, deleting files on exFAT filesystems is significantly faster thanks to optimisations contributed by developers at Sony.
When set to use the “discard” mount option (which tells the filesystem to inform storage devices when blocks are no longer needed), deleting an 80 GB file was massively faster: down from >4 minutes to a mere 1.6 seconds.
The ever-popular Btrfs filesystem sees some notable updates in 6.15. Among which, the filesystem now falls back to buffered writes when direct I/O is attempted on files requiring checksums, which will reduce the number of checksum mismatch errors in virtual machines.
Btrfs adds support for fast and realtime zstd compression levels (-15 to -1) aimed at improving overall speed, albeit at reduced compression ratios. Defrag ioctl has been tweaked to accept these negative compression values.
Finally, work on Bcachefs (a newer copy-on-write filesystem) continues apace. A new “scrub” functionality supports finding and repairing filesystem errors, while support for block sizes larger than the system page size is now available.
ARM & RISC-V
As with every kernel release, ARM and RISC-V hardware support continues to expand in Linux 6.15, with the bulk of support concerning industrial, embedded and edge devices.
But there are a few notable changes for devices that ought to be familiar to regular users, including a new device tree for the Google Pixel Pro 6 (gs101), and basic support for Allwinner A523 devices (as some differ only slightly, making this a sort of catch-all template tree).
The Orange Pi 5 Ultra board picks up mainline support, as does the MNT Reform 2 laptop. Both are based on the Rockchip RK3588 SoC.
On the RISC-V side, Linux 6.15 brings support for the new Milk-V Jupiter ITX board, and support for the BFloat16 floating-point extension as well as new ZBKB, Zaamo and Zalrsc extensions.
Device Drivers & Support
Linux 6.15 includes a pair of drivers that bring support for the Apple Touch Bar on Intel MacBooks Pros, along with a separate driver to support Touch Bar on Apple M1 and M2 MacBook Pros (Apple dropped it from M3 models onwards).
This support looks, on paper, expansive: backlight, touch interaction, showing function keys or, where supported, showing other kinds of information.
A new Samsung GalaxyBook driver brings misc enablement for users running Linux on one, including working ACPI platform profile, battery charge threshold/limiting, and function key handling.
Sony PlayStation 5 controllers work better on Linux 6.15, while Moza Racing, Cammus, and other racing/flight simulator devices benefit from updates to the hid-pidff force feedback driver.
Sticking with controllers, the modestly priced Xbox Turtle Beach Recon and Stealth Ultra controllers have been added to the xpad driver, along with the popular PowerA Wired Controller for Xbox.
Finally, if you have a device with Intel Killer E5000 ethernet you’ll be pleased to hear it’s supported in Linux 6.15 – but annoyed it took this long. Support required a single line of code as Intel Killer E5000 is, it turns out, just a re-branded Realtek RTL8126
— and that has been supported for a while!
Beyond That
Aside from the above highlights, a few other changes Linux 6.15 which caught my eye:
- Pseudo filesystems converted to the new mount API
- Fetch process exit status through
pidfd, even once reaped - Optional memory mapping sealing for security hardening
- Perf subsystem can perform latency profiling
- XFS filesystem gains support for zoned storage devices
- New
traceoff_after_bootoption to disable tracing after boot - Scheduler changes, including new default idle CPU selection logic
- New Qualcomm Iris video decoder driver (h.264 only)
- Rust: new abstractions; unit test macro; ARMv7 support
- Python 3.9+ is now required for working with kernel code/documentation
For more details on this release see the comprehensive merge report recaps (part one & part two) from the wonderful folks at LWN, or pour over the kernel commits directly.
I should note my focus when covering Linux kernel releases is rarely on the “bring up” for next-generation CPUs and GPUs, since those are yet to be released and not widely in-use by regular Linux users.
That progress is perpetual – reassuring to know, but a given. Take it as read that next-gen (and next-after-next-gen) Intel, AMD and NVIDIA CPUs and GPUs continue to be supported piece by piece while they’re in development.
Get Linux 6.15
In all, another set of welcome improvements to the Linux kernel that all of us will benefit from—whether it’s a specific hardware enablement we’re aware of, or lower-level optimisations we’re not.
Ubuntu users will need to wait a bit longer to benefits from these changes officially. Linux 6.15 won’t arrive as an automatic software update for Ubuntu users — Ubuntu 24.04 LTS users can expect to receive a new kernel, Linux 6.13 in July, backported from Ubuntu 25.04.
However, for the plucky, there are unofficial ways to install newer kernel releases on Ubuntu, albeit paired with the usual caveats, cautions and concerns regarding third-party PPAs, DEBs and the fact those builds aren’t supported, tested, or security patched, etc.
