A feature 20 years in the making made it in!

Linux Kernel 6.12 Has Landed – And It’s a Big One

by · omg! ubuntu · Join

Linus Torvalds has announced the release of Linux kernel 6.12, and an eclectic assortment of changes contained within make it one of the most biggest kernel releases for a while.

In terms of features, I mean. I didn’t sit bean-counting the code byte-by-byte!

In his message to the Linux Kernel Mailing List to announce the release Linus Torvalds notes that the final week of testing delivered “no strange surprises this last week, so we’re sticking to the regular
release schedule”
.

But what made it in?

Let’s take a look…

Linux 6.12: Key Features

Really real-time kernel

The headline feature in Linux 6.12 is mainline support for PREEMPT_RT.

This patch set dramatically improves the performance of real-time applications by making kernel processes pre-emptible—effectively enabled proper real-time computing.

As I understand it, most kernel operations can’t be interrupted (i.e., they’re non-preemptible). But PREEMPT_RT allows high-priority tasks to interrupt lower-priority ones near-instantly. For specific types of tasks this improves response times and thus performance.

PREEMPT_RT has been in the works for a long time, first proposed around 2005. The route to mainline inclusion has been ongoing ever since, with parts landing in bits over many years due to the complexity involved in plumbing it all in.

This feature is now available for 32-bit and 64-bit Intel/AMD systems, 64-bit ARM, and RISC-V architectures in Linux 6.12.

Specialised Schedulers

Linux 6.12 also debuts sched_ext which is described in its documentation as “a scheduler class whose behavior can be defined by a set of BPF programs – the BPF scheduler”. This is a potentially very exciting development, as LWN’s Jonathan Corbet explains:

The core idea behind BPF is that it allows programs to be loaded into the kernel from user space at run time; using BPF for scheduling has the potential to enable significantly different scheduling behavior than is seen in Linux systems nowJonathan Corbet

Specialised schedulers taking advantage of this are emerging, with one notable example focused on helping gamers get consistently higher frame rates out of games run on Linux.

On a related note, the EEVDF scheduler work that’s been underway for a while is now complete.

Other changes

On the filesystems side, Linux 6.12 boasts:

  • XFS support for block sizes larger than page size
  • nsfs now provides more info on mount namespaces
  • EROFS able to mount filesystem images stored in files
  • XFS filesystem gains a pair of new ioctl() commands
  • FUSE subsystem now supports ID-mapped mounts
  • NFS now supports the ‘LOCALIO’ protocol

Meanwhile, Linus Torvalds himself contributes a new method for user-space address masking designed to claw back some of the performance lost due to Spectre-v1 mitigations.

Kernel panic QR codes (image: kdj0c)

You might have heard that kernel devs have been working to add QR error codes to Linux’s kernel panic BSOD screen (as a waterfall of error text is often cut off and not easily copied for ad-hoc debugging). Well, Linux 6.12 adds support for those during DRM panics.

—that’s DRM as in Direct Rendering Manager, not Digital Rights Management, btw. These can appear during GPU snafus, memory issues, or wonky display settings.

A slew of new RISC-V CPU ISA extensions are supported in Linux 6.12; hybrid CPU scaling in the Intel P-State driver lands ahead of upcoming Intel Core Ultra 2000 chips; and AMD P-State driver improves AMD Boost and AMD Preferred Core features.

Devices

Every new Linux kernel release brings new drivers, improved support, and better compatibility for a host of hardware out there, ranging from wi-fi dongles to entire laptops.

Amongst other devices, Linux 6.12 introduces support for:

  • ARM-powered GameForce Ace gaming handheld
  • ODROID-M15 and ODROID-M2 SBCs
  • Sensors on OneXPlayer gaming devices
  • Initial mainline support for the Raspberry Pi 5

Wacom drawing tablets have often worked well under Linux, but with kernel v6.12 they work even better thanks to support for high resolution scrolling, and better touch ring interaction (including support for activating 2 at once).

There’s also fan profile support for ASUS Vivobook laptops; custom battery charging settings (fast, trickle, etc) on newer Dell laptops; fan control on the Lenovo ThinkPad Edge, and support for the Lenovo Thinkpad X12 Gen 2 detachable keyboard.

The Intel GPU driver can report fan speeds in Linux 6.12 – if a fan is present, of course. Reporting works via hwmon with fan speed listed in RPM.

Additionally, a swathe of Snapdragon-powered notebooks pick up varying support in this kernel, including the Lenovo ThinkPad T14s Gen 6 and the Microsoft Surface Laptop 7.

Other changes of note:

  • ARM64 kernels can run as guests on protected KVM systems
  • New features in the user-space perftool
  • Support Device Memory TCP
  • FireWire improvements
  • New Rust modules

Plus the usual assortment of security, performance, and compatibility fixes — the changes I’ve pulled out to mention above are only a handful of the more interesting stuff. For more detail on all of the changes, read through LWN’s merge roundup 1 & 2.

Install Linux Kernel 6.12

Linux 6.12 delivers some major new kernel features, expands hardware support, and continues to keep pace with new technologies.

But how do you upgrade to or install Linux kernel 6.12 on Ubuntu?

You can download Linux kernel source code and compile it by hand, make use of an unofficial third-party PPA, or install Canonical mainline kernel builds (not intended for regular users; not signed; can fail to boot; don’t receive security updates, etc).

Ubuntu 25.04 will use Linux kernel 6.14 by default, and that kernel version will get back-ported to Ubuntu 24.04 LTS users via the HWE in early spring.

Other Linux distributions may make this kernel version available sooner, but unless your FOMO is too strong, there’s no real reason to switch distro to get these changes – you’ll get them in good time.