Linux 6.19 Released
Linux 6.19 Released
Linux 6.19 is the first release of 2026, shipping several contributions from Igalia among its more than 14 thousand commits — keeping up the consistent work from last year. Have a look at our 2025 retrospective! For an overview of this kernel release and features, check the KernelNewbies page.
Once again, our team delivered improvements, features, and bug fixes across different areas of the kernel — ranging from debugging and core infrastructure to filesystems, energy model, graphics drivers and APIs, and more; helping our clients in many domains and benefiting the wider Linux community.
Speaking of the Linux community, as previously announced, some of our contributions and related work were presented at the Linux Plumbers Conference 2025, discussing their context, challenges, and more details. In the sections below, we provide links to individual talk videos on Youtube.
The next section describes Igalia’s contributions to Linux 6.19.
Igalia Changelog
page_owner improvements
In the memory management subsystem, page_owner is a debug feature for memory allocations. It stores the stack trace of the memory allocation of every page, and can report which stack trace allocated a page and how many pages are allocated by a stack trace, among other things.
We have improved page_owner’s userspace interface in debugfs, providing options to reduce the amount of data produced by the kernel and consumed by userspace, which allows for more efficient continuous data collection.
This is helpful for use cases such as profiling and monitoring the memory allocation/usage in the system, which page_owner can do with page granularity plus stack trace insight.
More details are available in the presentation at the Linux Plumbers Conference 2025.
Futex improvements
Continuing the effort made in 6.18, we once again made improvements on the Futex selftests. This time we added the kernel seftests for the set/get_robust_list() syscalls. Despite this syscall being around for about 20 years, it never had a test in the kernel tree… until now! The new selftest provides a good coverage and should track regressions when modifying the robust_list internals, and also can be used as a documentation about how to use this uAPI.
These improvements on the futex system call are part of a big effort on adding a new interface for the set_robust_list(). You can learn more about this in the Linux Plumbers Conference 2025 presentation.
FUSE periodic dentries invalidation
Filesystem in Userspace (FUSE) caching is usually handled at the kernel level by the FUSE subsystem. Obviously, the data cached by the kernel needs to be maintained as it can either: 1) be explicitly marked as invalid by the FUSE user-space server, or 2) become too old, by means of having a timeout associated with it.
We have just added a new mechanism to periodically invalidate the FUSE cached data. This mechanism includes the infrastructure to keep all the dentries sorted by expiry time in a tree structure so that expired data can be efficiently invalidated. To enable this new feature, an extra FUSE module parameter was added. It can to be set to a value, in seconds, which will be the period for a workqueue that will take care of the invalidation of expired dentries.
Energy Model (EM) Netlink Interface for sched_ext and Beyond
Schedulers built on sched_ext, such as LAVD, must understand performance–power trade-offs to make informed, energy-aware scheduling decisions. The Linux kernel’s Energy Model (EM) provides this information, capturing details such as CPU cluster topology and the power cost associated with operating at specific CPU frequencies.
However, there is currently no suitable interface for accessing the Energy Model from either BPF programs or userspace. To address this limitation, we introduce a netlink interface that exposes Energy Model information for a given SoC. This interface allows userspace applications to query EM data and receive notifications when the model changes—for example, due to thermal condition updates.
With this patchset, sched_ext-based schedulers and related tooling can incorporate up-to-date energy characteristics into their decision-making process. More details on Energy Model–Aware Scheduling (EMAS) in LAVD are available in this presentation at the Linux Plumbers Conference 2025.
AMD GPU kernel driver improvements
We have added a capability to the common DRM TTM layer, where drivers are now able to hint above what allocation size it is not worth trying too hard to allocate contiguous memory. This allows for better worst case large buffer allocation latency under memory pressure, where the TTM layer will now not try to do direct memory reclaim above the configured threshold.
As kernel developers, we often need to load and unload modules multiple times for various reasons, one of the primary ones being to save time by avoiding system reboots. However, we encountered issues with the load/unload feature across multiple devices, including the Steam Deck. While we addressed problems for other devices, the APU, particularly in the Steam Deck, presented a unique challenge: the device must be reset during the unload/load sequence to ensure the firmware is in a proper state.
In this release, we implemented a fix that triggers a GPU reset on APUs at the time of unloading, effectively resolving the reload issue. Additionally, we observed that on Renoir devices, the reset was mistakenly applied during the loading phase, leading to increased latency during boot. Since the fix is applicable to all APUs, we can now remove the workaround for Renoir devices, which should improve boot speed on those systems.
New KMS Plane Color Management API
We actively participated in design, reviews and testing of the new KMS Plane Color Management API. With this new generic KMS API, kernel display drivers can expose their color capabilities before blending, allowing compositors to offload more color transformations to the display hardware (freeing the GPU for Graphics workload) for advanced color management and better HDR support. Moreover, most of the AMD support for this new API was based on our previous implementation of AMD driver-specific color management properties, a work we started with gamescope and got merged to the mainline kernel in 2023.
Other
We also contributed bug fixes to the amdgpu driver and a nfc driver, and an improvement in the sound subsystem, along with reviews, acks, and a maintainer sign-off.
Authored (42)
André Almeida
Changwoo Min
- PM: EM: Assign a unique ID when creating a performance domain
- PM: EM: Expose the ID of a performance domain via debugfs
- PM: EM: Add em.yaml and autogen files
- PM: EM: Add a skeleton code for netlink notification
- PM: EM: Add an iterator and accessor for the performance domain
- PM: EM: Implement em_nl_get_pds_doit()
- PM: EM: Implement em_nl_get_pd_table_doit()
- PM: EM: Implement em_notify_pd_deleted()
- PM: EM: Implement em_notify_pd_created/updated()
- PM: EM: Notify an event when the performance domain changes
- PM: EM: Fix yamllint warnings in the EM YNL spec
- PM: EM: Rename em.yaml to dev-energymodel.yaml
- PM: EM: Change cpus’ type from string to u64 array in the EM YNL spec
- PM: EM: Add dump to get-perf-domains in the EM YNL spec
Luis Henriques
- dcache: export shrink_dentry_list() and add new helper d_dispose_if_unused()
- fuse: new work queue to periodically invalidate expired dentries
- fuse: new work queue to invalidate dentries from old epochs
- fuse: refactor fuse_conn_put() to remove negative logic.
Mauricio Faria de Oliveira
- mm/page_owner: introduce struct stack_print_ctx
- mm/page_owner: add struct stack_print_ctx.flags
- mm/page_owner: add debugfs file ‘show_handles’
- mm/page_owner: add debugfs file ‘show_stacks_handles’
- mm/page_owner: update Documentation with ‘show_handles’ and ‘show_stacks_handles’
Melissa Wen
- drm/amd/display: fix wrong color value mapping on MCM shaper LUT
- drm/amd/display: extend delta clamping logic to CM3 LUT helper
- drm/amd/display: remove assert around dpp_base replacement
Rodrigo Siqueira
- drm/amdgpu: Fix GFX hang on SteamDeck when amdgpu is reloaded
- Revert “drm/amd: fix gfx hang on renoir in IGT reload test”
Thadeu Lima de Souza Cascardo
Tvrtko Ursulin
- drm/amdgpu: Use memset32 for IB padding
- drm/ttm: Add getter for some pool properties
- drm/ttm: Replace multiple booleans with flags in pool init
- drm/ttm: Replace multiple booleans with flags in device init
- drm/ttm: Allow drivers to specify maximum beneficial TTM pool size
- drm/amdgpu: Configure max beneficial TTM pool allocation order
- drm/ttm: Add an allocation flag to propagate -ENOSPC on OOM
- drm/gem: Use vmemdup_array_user in drm_gem_objects_lookup
- drm: Do not allow userspace to trigger kernel warnings in drm_gem_change_handle_ioctl()
- drm/xe/xelp: Fix Wa_18022495364
Umang Jain
Reviewed (36)
Changwoo Min
André Almeida
Changwoo Min
Luis Henriques
Melissa Wen
- drm: Add helper for conversion from signed-magnitude
- drm/doc/rfc: Describe why prescriptive color pipeline is needed
- drm/colorop: Introduce new drm_colorop mode object
- drm/colorop: Add TYPE property
- drm/colorop: Add 1D Curve subtype
- drm/colorop: Add BYPASS property
- drm/colorop: Add NEXT property
- drm/colorop: Add atomic state print for drm_colorop
- drm/plane: Add COLOR PIPELINE property
- drm/colorop: Introduce DRM_CLIENT_CAP_PLANE_COLOR_PIPELINE
- Documentation/gpu: document drm_colorop
- drm/colorop: Add destroy functions for color pipeline
- drm/colorop: Add 3x4 CTM type
- drm/colorop: pass plane_color_pipeline client cap to atomic check
- drm/colorop: define a new macro for_each_new_colorop_in_state
- drm/amd/display: Ignore deprecated props when plane_color_pipeline set
- drm/amd/display: Skip color pipeline initialization for cursor plane
- drm/amd/display: add 3x4 matrix colorop
- drm/colorop: Add multiplier type
- drm/amd/display: add multiplier colorop
- drm/amd/display: Swap matrix and multiplier
- drm/colorop: Define LUT_1D interpolation
- drm/colorop: allow non-bypass colorops
- drm/colorop: Add 3D LUT support to color pipeline
- drm/amd/display: Add AMD color pipeline doc
Tvrtko Ursulin
- drm/sched/tests: Remove relict of done_list
- dma-buf: rework stub fence initialisation v2
- drm/amdgpu: jump to the correct label on failure
- dma-buf: cleanup dma_fence_describe v3
- drm/gem: Correct error condition in drm_gem_objects_lookup