CXL For Linux 6.9 Adds Error Injection, Native Memory Performance Enumeration

Written by Michael Larabel in Hardware on 17 March 2024 at 09:15 AM EDT. Add A Comment
HARDWARE
Intel continues leading the development of the Compute Express Link (CXL) subsystem for the Linux kernel while at least for the Linux 6.9 cycle are a few feature patch contributions from AMD.

The CXL subsystem updates for Linux 6.9 include native CXL memory performance enumeration, CXL error injection via ACPI EINJ, cleaning up of DOE/CDAT integration, and other clean-ups and fixes.

CXL logo


Intel's Dan Williams verbosely summed up the CXL changes this cycle as:
"As I mentioned in the v6.8 pull, CXL has mechanisms to enumerate the performance characteristics of memory devices. Those mechanisms allow Linux to build the equivalent of ACPI SRAT, SLIT, and HMAT tables dynamically at runtime. That capability is necessary because static ACPI can not represent dynamic CXL configurations (and reconfigurations). So, building on the v6.8 work to add "Quality of Service" enumeration, this update plumbs CXL "access coordinates" (read/write access latency + bandwidth) in all the same places that ACPI HMAT feeds similar data. Follow-on patches from the -mm side can then use that data to feed mechanisms like mm/memory-tiers.c. Greg has acked the touch to drivers/base/.

The other feature update this cycle is support for CXL error injection via the ACPI EINJ module. That facility enables injection of bus protocol errors provided the user knows the magic address values to insert in the interface. To hide that magic, and make this easier to use, new error injection attributes were added to CXL debugfs. That interface injects the errors relative to a CXL object rather than require user tooling to know how to lookup and inject RCRB (Root Complex Register Block) addresses into the raw EINJ debugfs interface. It received some helpful review comments from Tony, but no explicit acks from the ACPI side. The primary user visible change for existing EINJ users is that they may find that einj.ko was already loaded by cxl_core.ko. Previously, einj.ko was only loaded on demand.

The usual collection of miscellaneous cleanups are also present this cycle."

More details within the CXL pull for Linux 6.9.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week