Back to news
"The last kernel release of 2025 is here"

Yesterday’s release of the 6.18 kernel (Linus announcement email) marks the sixth minor Linux kernel this year, and unless something extraordinary is to happen, it will be the last of 2025.

Apart from the overall release highlights, which as usual can be read in detail at the very fine Kernelnewbies release notes summary page, the team at Igalia has once more been busy contributing fixes and improvements to the numerous areas of the code base.

Let’s go over some of the more significant contributions, while the full list of changes be found at the end of the post.

Case insensitive support for overlayfs

SteamOS, the Linux distribution that powers the Steam Deck, Steam Machine and Steam Frame, relies on container tools to run games. Those tools enable creating safe and isolated environments, allowing games to have their local libraries installed without conflicting with the system versions.

Overlayfs is a union filesystem that combines two filesystems in one mount point, with an upper layer and a lower layer filesystem. If a file (or directory) exists in both layers, the upper file is shown to the user while the lower one is hidden, and directories that exist in both layers are merged. Writes made to the upper layer do not impact the lower layer, making this a good match to containerize games! So let’s, for example, say that we have the following directories:

$ ls system/libs/
directx.dll  sdl.dll

$ ls half_life/libs/
SDL.dll

In this example, Half Life wants to use a custom version of SDL. If we mount a overlayfs using system as lower layer and half_life as upper layer, the mount point will show the SDL.dll from half_life and directx.dll from system:

$ ls merged/libs/
directx.dll SDL.dll

In order to merge directories, overlayfs needs to compare their names, and since this was done with a normal strncmp() it did not support merging case-insensitive filesystems, so part of our work here was to make a casefold version of strncmp().

You can learn more about why we use case-insensitive filesystems for games in our Hackers Assemble episode.

Futex selftest cleanup

Part of our job as Linux kernel upstream experts is not only about adding new features, but also fixing, improving and refactoring code. The futex syscall is a critical point on Linux used to create userspace synchronization mechanisms like mutexes and semaphores, being called thousands of time per second by glibc’s pthread functions. Bugs in this code can therefore cause a lot of problems such as freezing applications due to deadlocks, or unexpected behaviour caused by race conditions. To help keeping futexes working correctly, we refactored all selftests to make them easier to maintain and to add new tests.

AMDGPU driver improvements

The AMDGPU kernel driver is one of the critical components enabling good gaming experiences on the Steam Deck hardware, and for this kernel release we contributed several improvements and fixes.

On the display side, we fixed the atomic commit sequence for updating the color management attributes. The issue was present since the first commit in the git history and was uncovered by a recent update of the KDE color pipeline for night light mode with HDR. The symptoms were that when the KDE screen brightness control was being modified relatively quickly, color flickering was visible on the screen. This was caused by a race condition in GAMMA LUT updates, and we have fixed it by correcting the flow of AMD DC colour state updates done during the atomic mode setting operations.

Elsewhere in the AMDGPU driver we cleaned up some unnecessary code and simplified other code, while at the same time hardened some userspace ioctl entry points. We also reduced the scope for locking issues by removing misuse of the C volatile keyword.

We have also been exploring avenues for fixing issues with the driver re-load when in a TTY mode. For example, discrete GPUs were forgetting to release some I2C resources on unload, which we have fixed by migrating that code to use device-managed resources.

Finally, we were also active in helping with code reviews on patches contributed by both AMD and the community.

Raspberry Pi GPU driver improvements

Continuing in the graphics area, but this time focusing on the Raspberry Pi v3d driver — for which we are the maintainers — we added support for the KHR_robustness extension by adding support to query the current number of GPU resets. We also improved the DRM scheduler handling of resets allowing drivers to better handle false timeout notifications. Finally, we fixed a couple of race conditions, thus making the driver more robust, and at the same time reduced the lock contention in job queues.

Intel Xe driver Alderlake support

Still in the graphics area, we continued to add missing hardware workarounds to better support Intel Alderlake GPUs in the new xe kernel driver.

Memory management improvements

Moving out of graphics into the core memory management area, we improved the Out of Memory Killer reporting capabilities by showing the amount of memory consumed by compressed memory and swap subsystems (ZRAM and ZSWAP).

We also fixed the cases when non-delayed high-order allocations were considered as atomic, reducing the available reserves that some allocations could use.

Other

Elsewhere we continued to contribute various other bug fixes, such as for the HID Multitouch driver, the UVC driver, various DRM scheduler cleanups and optimizations, as well as supporting the wider community with code reviews and testing across many more areas.

Igalia Changelog

Authored (76)

André Almeida

Luis Henriques

Maíra Canal

Melissa Wen

Rodrigo Siqueira

Thadeu Lima de Souza Cascardo

Tvrtko Ursulin

Umang Jain

Co-developed (1)

Melissa Wen

Reviewed (51)

André Almeida

Christian Gmeiner

Iago Toral Quiroga

Maíra Canal

Melissa Wen

Rodrigo Siqueira

Tvrtko Ursulin

Tested (1)

Helen Koike

Acked (2)

Iago Toral Quiroga

Thadeu Lima de Souza Cascardo

Maintainer SoB (3)

André Almeida

Maíra Canal

Tvrtko Ursulin