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

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

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

Release Highlights

Linux Kernel v6.16 includes 37 commits to the CXL and DAX subsystems:

CategoryCommits
New Features & Hardware2
Bug Fixes6
Refactoring & Cleanup8
Documentation3
Other18

The Linux v6.16 kernel cycle is dominated by one clear theme: hardening CXL memory device reliability and serviceability through the EDAC subsystem. Four new control features land in this release — patrol scrub, Error Check Scrub (ECS), soft Post Package Repair (PPR), and memory sparing — each exposing a distinct class of CXL 3.0 memory maintenance operations to userspace through a consistent sysfs interface. Alongside these, support for the PERFORM_MAINTENANCE command provides the underlying mechanism that drives scrub and repair operations on compliant devices. Taken together, this work moves CXL from a device class that Linux can merely enumerate and map to one where the kernel actively participates in proactive memory health management.

The EDAC additions are not without rough edges that needed immediate attention. Several fixes accompany the new code: a wrong repair type being passed when checking DRAM event records, a miscalculation in the minimum scrub cycle for a region, memory leaks in error paths, and a return value bug in cxlctl_validate_set_features(). This pattern of feature-plus-fixes in the same release reflects the pace at which CXL 3.0 RAS infrastructure is being built out — the plumbing is going in fast, and correctness gaps are being closed in the same merge window. The cxl/ras CPER handler also received a fix for device confusion, where error records were being attributed to the wrong device under certain topologies.

Outside of EDAC, the cxl/region code saw meaningful internal restructuring. Decoder lookup logic was factored into dedicated helpers (cxl_port_pick_region_decoder(), a new function to find a switch decoder by range, and root decoder extraction routines), reducing duplication and making the region assembly path easier to reason about. A correctness fix eliminates unnecessary interleave granularity constraints when ways=1, and the ACPI path now validates CHBS structure length for CXL 2.0 hosts. The CXL Maturity Map documentation was also updated, reflecting the growing breadth of what the driver actually implements.

Key Changes

  • Patrol scrub and ECS control features: New sysfs-exposed interfaces allow userspace to configure and trigger patrol scrub and Error Check Scrub on CXL memory devices, enabling scheduled background error detection without requiring a reboot or vendor-specific tooling.

  • Soft PPR and memory sparing control: Soft Post Package Repair and memory sparing can now be initiated through the kernel’s EDAC interface, giving RAS frameworks the ability to retire faulty DRAM rows or activate spare banks on CXL 3.0 devices in response to correctable error thresholds.

  • PERFORM_MAINTENANCE command support: The CXL mailbox command that drives scrub and repair operations is now wired up in cxl/edac, providing the execution path that the patrol scrub and PPR control features depend on.

  • Memory operation attribute discovery: The driver can now query a device’s current-boot memory operation attributes, allowing it to reconcile in-flight maintenance state across a kexec or driver reload rather than starting blind.

  • CPER handler device confusion fix: The cxl/ras CPER error record handler was misidentifying the target device under multi-device topologies; the fix ensures correctable and uncorrectable errors are charged to the correct CXL endpoint.

  • Region decoder lookup refactoring: Root and switch decoder selection logic in cxl/region has been extracted into named helpers and deduplicated, removing a redundant call to cxl_port_pick_region_decoder() that could produce incorrect results during region assembly.

  • Interleave granularity relaxed for single-way regions: When a CXL region uses only one interleave way, granularity constraints are now ignored during validation, unblocking configurations that were incorrectly rejected.

  • DAX kmem truncation warning: The DAX subsystem now emits a warning when a kmem region must be truncated to align with memory block boundaries, making a previously silent data-availability reduction visible to system administrators.

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

Self-Hosting Firecrawl on Ubuntu 25.04 with Docker Compose

Self-Hosting Firecrawl on Ubuntu 25.04 with Docker Compose

Modern AI agents — Claude Code, Codex, OpenClaw, Hermes-Agent, and custom LangChain pipelines — need a way to read the web. Not raw HTML full of navigation debris, cookie banners, and JavaScript noise, but clean structured text that a language model can actually reason about. Firecrawl is the missing piece: an open-source web scraping and crawling API that fetches any URL and returns clean Markdown, ready to drop straight into a context window or a RAG pipeline.

Read More
CXL Memory NUMA Node Mapping with Sub-NUMA Clustering (SNC) on Linux

CXL Memory NUMA Node Mapping with Sub-NUMA Clustering (SNC) on Linux

CXL (Compute Express Link) memory devices are revolutionizing server architectures, but they also introduce new NUMA complexity, especially when advanced memory configurations, such as Sub-NUMA Clustering (SNC), are enabled. One of the most confusing issues is the mismatch between NUMA node numbers reported by CXL sysfs attributes and those used by Linux memory management tools.

This blog post walks through a real-world scenario, complete with command outputs and diagrams, to help you understand and resolve the CXL NUMA node mapping issue with SNC enabled.

Read More
Your Personal Codespace: Self-Host VS Code on Any Server

Your Personal Codespace: Self-Host VS Code on Any Server

GitHub Codespaces and other cloud IDEs have revolutionized development, offering a complete VS Code environment that runs on a remote server and is accessible from any browser. It’s a game-changer for productivity and flexibility.

But what if you could have that same powerful, seamless experience on your own terms?

This guide will show you how to build your very own private Codespace, replicating the convenience of the GitHub experience on any server you control—be it a machine in your home lab, a dedicated server, or a budget-friendly cloud VM. We’ll explore two distinct paths to get you up and running with a persistent, browser-based VS Code instance on Ubuntu 24.04, complete with AI assistants like Gemini and GitHub Copilot to boost your workflow.

Read More