Back to news
"New features and dozens of contributions from Igalia"

Igalia has been contributing to the Linux kernel for many years at this point, helping our clients upstream changes, fixing bugs or adding new features, and the latest release is no different. Linux 6.16 brings a lot of enhancements made by the general community, including:

  • Support for Intel Trusted Domain Extensions: this CPU feature encrypts the memory of the guest VM, for confidential computing use cases in a cloud environment.
  • Support for USB audio offload: this huge patchset allows audio DSPs to talk directly to xHCI USB endpoints, meaning that a USB audio device can keep playing while the CPU is a low energy state.
  • Futex: three new features for futexes were merged:
    • Historically, futex uses a global hash for waiters, where all tasks share the buckets. This causes some collateral latency issues, where one task with a lot of waiters could influence another task’s overhead. To avoid this, now any process can create its own private hash table with the new prctl(PR_FUTEX_HASH).
    • Similarly, a global hash table had latency issues when using a NUMA machine, where one node would host the hash table, and all other nodes would need to do a heavier memory operation to access it. With FUTEX2_NUMA, it’s possible to have one global hash table per node.
    • Finally, users can set FUTEX_MPOL to make the global hash allocation respect a defined memory allocation policy in NUMA machines such as the preferred node to be used.
  • There’s a new build option for x86 machines, called CONFIG_X86_NATIVE_CPU. When building a kernel with this option, the kernel will be optimized for the CPU being used in the build, meaning that it will be aware of the particular features and settings of the running CPU, such as the cache size. The performance gains vary from 0.2% to 3.3% in some benchmarks, which isn’t a game changer, but it’s impressive for a one-line change.
  • Automatic tuning for NUMA memory allocation: in some NUMA machines, each node might have a different “weight” regarding their bandwidth. In the past, sysadmins were able to provide manually the weight of each node so the kernel would then make smarter choices when allocating memory. Now, the kernel will be able to automatically calculate such weights and apply them.

For the full details, we suggest having a look at the Kernel Newbies summary. Now, let’s have a look at Igalia’s contributions to 6.16.

DRM scheduler

The DRM scheduler is a core piece of the Linux kernel graphics subsystem, and it’s used by several GPU drivers. At Igalia, we have been working on several improvements to modernize it. However, when you are making big changes to critical code, you must have ways to reduce the odds of introducing regressions. That’s where good tests come in!

Historically, the DRM GPU scheduler has been largely uncharted territory when it comes to dedicated testing. That’s why we developed a basic set of unit tests based on the kernel’s unit testing framework, KUnit. This addition provides us with increased confidence as we proceed with upcoming work that aims to simplify and enhance the scheduler. For a deeper dive into our future plans for the scheduler, take a look at Tvrtko’s blog post: Fair(er) DRM GPU scheduler.

AMDGPU & Intel Xe drivers

In Linux 6.16, Igalia continued its dedicated efforts to refine and improve two popular GPU drivers: AMDGPU and Intel Xe. Our contributions aimed to improve maintainability, documentation, and stability.

For AMDGPU, we submitted several code refactorings for the Clear State Indirect Buffer (CSB) logic and also enriched the existing AMDGPU documentation. On the display side, we addressed issues on plane updates and color management found in the latest DCN4.01 hardware, and also expanded debug tool coverage for better maintainability.

Meanwhile, our work on the Intel Xe driver targeted primarily Intel Alder Lake-based GPUs. We contributed several fixes to enhance stability and functionality of the hardware.

GPU resets in Raspberry Pi

For this release, Igalia tackled some critical GPU reset issues on the Raspberry Pi 4 and 5. In general, we don’t want GPU resets to happen; however, when they do, we want the GPU and the system to recover gracefully.

Users were experiencing GPU hangs and UI freezes after a GPU reset. We fixed this by correctly configuring and utilizing a new set of registers for the RPi, which are vital for power management and reset operations on V3D 7.x hardware.

Further enhancing stability, we also addressed a kernel crash that happened during a GPU reset, causing a complete system freeze. These combined efforts significantly improve GPU reset reliability and user experience on the RPi 4 and 5.

Device drivers infrastructure

Since Linux 6.2, misc-based devices are not restricted to 255 minor numbers anymore. However, that was incomplete and did not work correctly until 6.15. Now, this and other bugs can be tested with a KUnit test suite improved during this cycle. Also, all dynamically allocated minor numbers are above 255, simplifying the allocation process.

Filesystems, memory management and more fixes

The FUSE subsystem has had a simple way for the user-space file system servers to ask the kernel to invalidate the cached data for an inode or a dentry. Unfortunately, this mechanism was only allowed to invalidate a single object at a time. In this release, we added a new mechanism that allows the user-space server to ask the kernel to force the invalidation of all its dentries the next time they need to be re-validated.

Alongside that, as usual, Igalians are working to fix kernel bugs, and in this release we managed to specially send fixes to the kernel timer watchdog, filesystems (ext4, ovl, and core vfs) and memory management (huge memory).

Authored (55)

André Almeida

Gavin Guo

Guilherme G. Piccoli

Helen Koike

Jose Maria Casanova Crespo

Luis Henriques

Maíra Canal

Melissa Wen

Rodrigo Siqueira

Thadeu Lima de Souza Cascardo

Tvrtko Ursulin

Reviewed (39)

André Almeida

Iago Toral Quiroga

Jose Maria Casanova Crespo

Juan A. Suarez

Maíra Canal

Rodrigo Siqueira

Tvrtko Ursulin

Tested (1)

André Almeida

Acked (24)

Changwoo Min

Tvrtko Ursulin

On behalf of … (1)

André Almeida

Maintainer SoB (3)

Maíra Canal