Linux Kernel v6.19 is Released: This is What's New for Compute Express Link (CXL)

Linux Kernel v6.19 is Released: This is What's New for Compute Express Link (CXL)

The Linux Kernel v6.19 release brings several improvements and additions related to Compute Express Link (CXL) technology.

Release Highlights

Linux Kernel v6.19 includes 31 commits to the CXL and DAX subsystems:

CategoryCommits
New Features & Hardware1
Bug Fixes4
Refactoring & Cleanup5
Testing1
Documentation2
Other18

Linux v6.19 is a measured release for the CXL/DAX subsystem — 31 commits spread across correctness fixes, code hardening, and targeted new functionality. The headline addition is extended linear cache (ELC) region support: regions can now be flagged to indicate they carry an ELC mapping, a prerequisite for properly managing CXL memory that participates in CPU-side cache hierarchies. Alongside the feature itself, the release includes adjustments to how ELC failures are reported through cxl_acpi, and the HBIW platform-data guard that was accidentally dropped has been restored.

Address translation received concentrated attention this cycle. A new validity check was threaded through all translation call sites so that error-path addresses — which can be indistinguishable from legitimate zeroes — no longer silently propagate up the stack. The translation helpers were also refactored to be directly callable from the test suite, enabling future unit-level coverage of the XOR arithmetic that underpins interleave decode. The XOR setup code in cxl_acpi was consolidated into a single block as a companion cleanup.

On the correctness side, __cxl_dpa_reserve() had a latent infinite loop that could be triggered under certain DPA allocation patterns — fixed this cycle. The port layer received a fix for target list construction when multiple decoders share the same downstream port, a topology that appears in multi-level switch hierarchies. The memregion layer gained fine-grained cache invalidation via cpu_cache_invalidate_memregion() while shedding an unused IORES_DESC_* parameter that had been carried as dead weight. The DAX character device also transitioned to the new mmap_prepare interface, aligning with the VMA operation model introduced in recent MM rework.

Key Changes

  • Extended Linear Cache region flag: cxl/region can now mark a region as having an extended linear cache, allowing the kernel to correctly account for ELC-backed memory in topology enumeration and resource management decisions.

  • Address translation error hardening: Return values from address translation functions are now validated at every call site, preventing silent use of sentinel error addresses that could corrupt DPA/HPA mappings in error paths.

  • Locked CXL decoder handling: The driver now explicitly handles decoders that arrive from firmware in a locked state, rather than treating them as misconfigured — important for systems where early boot firmware programs and locks decoders before the OS takes control.

  • Fine-grained memregion cache invalidation: cpu_cache_invalidate_memregion() now supports range-limited invalidation, reducing the overhead of cache coherence operations when only a portion of a memory region changes state.

  • Infinite loop fix in __cxl_dpa_reserve(): A missing termination condition in the DPA reservation loop could cause the kernel to spin indefinitely when the requested range couldn’t be satisfied; the fix adds a proper bounds check before re-entering the search.

  • Multi-decoder dport target list fix: cxl/port now correctly constructs the target list when more than one decoder maps through the same downstream port, preventing silent misconfiguration of interleave sets in certain switch topologies.

  • Address translation functions exposed for testing: The XOR interleave arithmetic in cxl/acpi was refactored so the calculation helpers are reachable from the test suite, enabling in-kernel unit tests for the decode path without requiring full ACPI enumeration.

  • devdax migrated to mmap_prepare: The DAX device’s memory-mapping path now uses the mmap_prepare VMA hook, replacing a deprecated interface and keeping devdax aligned with the MM subsystem’s evolving VMA lifecycle model.

Here is the detailed list of all commits merged into the 6.19 Kernel for CXL and DAX. This list was generated by the Linux Kernel CXL Feature Tracker .

How To Install and Boot VMWare VSphere/ESXi from Persistent Memory (or not)

How To Install and Boot VMWare VSphere/ESXi from Persistent Memory (or not)

In a previous post I described how to install and boot Linux using only Persistent Memory, no SSDs are required. For this follow on post, I attempted to install VMWare VSphere/ESXi v7.0u2 onto the persistent memory.

TL;DR - It doesn’t work. The installer doesn’t list the PMem devices, and I was unable to find a way to manually select the PMem device(s).

I assume you followed the previous post to configure sector namespaces that we’ll use to install ESXi.

Read More
Percona Live 2019

Percona Live 2019

I will be speaking at this year’s Percona Live event. Percona Live 2019 takes place in Austin, Texas from May 28-30, 2019 at the Hyatt Regency . You can register for the event and check out the schedule of talks. See you there.

About Percona Live

Percona Live conferences provide the open source database community with an opportunity to discover and discuss the latest open source trends, technologies and innovations. The conference includes the best and brightest innovators and influencers in the open source database industry.

Read More
The Library Landscape: Why Build Another One?

The Library Landscape: Why Build Another One?

Series: Building lib3mf-rs

This post is part of a 5-part series on building a comprehensive 3MF library in Rust:

  1. Part 1: My Journey Building a 3MF Native Rust Library from Scratch
  2. Part 2: The Library Landscape - Why Build Another One?
  3. Part 3: Into the 3MF Specification Wilderness - Reading 1000+ Pages of Specifications
  4. Part 4: Design for Developers - Features, Flags, and the CLI
  5. Part 5: Reflections and What’s Next - Lessons from Building lib3mf-rs

“Why not just use the existing library?”

It’s a fair question. One I asked myself many times during the early days of this project. The 3MF Consortium maintains lib3MF , a comprehensive C++ implementation used by major companies in additive manufacturing. Why build another one?

Read More