SDK Installation

XCENA SDK package provides the software stack required to interface with XCENA devices, including drivers, libraries, tools, and example applications.

Prerequisites

Refer to System requirements

1. Install from SDK Package

Note

Ubuntu 24.04 is the officially supported target. openSUSE Leap 16 and RHEL 9 are experimental — download the tarball whose name ends in _opensuse-leap_16.0 or _el9. See System Requirements.

Download the SDK package from GitHub Releases.

$ wget <URL_to_sdk_xxx.tar.xz>
$ tar xvf sdk_xxx.tar.xz
$ cd sdk_xxx
$ ./install.sh

Note
The installation process includes the installation of the device driver (mxdriver).
A system reboot is required to complete the installation and activate the driver.

CXL memory setup

The installer also sets up the ccma kernel module, which manages the device’s CXL memory. The reboot above lets it reserve contiguous device chunks while the memory is still pristine.

No further host configuration is needed: by default the CXL memory onlines as system-ram, shared between device computing and host NUMA allocation. See System Requirements → CXL memory host setup.

For multi-host deployments (where it is required), or to dedicate the full region to device memory, use devdax mode instead — run sudo ./scripts/setup_host.sh once and reboot, or run the installer with ./install.sh --with-host-setup. See System Requirements → devdax mode.

2. Verify Installation

After installation and reboot, run validate_host.sh to verify the entire setup:

wget https://raw.githubusercontent.com/xcena-dev/public_sdk_release/refs/heads/main/scripts/validate_host.sh
bash validate_host.sh

Example Output

  XCENA Host Environment Validation
  2026-02-12 09:21:03

--- System Environment ----------------------
  [ INFO ] OS            Ubuntu 24.04.3 LTS
  [ INFO ] Kernel        6.17.0-14-generic
  [ INFO ] Environment   Native

--- PCI / Hardware --------------------------
  [  OK  ] XCENA PCI device detected
           01:00.0 CXL [0502]: Device [20a6:0100] (rev 01)
           11:00.0 CXL [0502]: Device [20a6:0100] (rev 01)

--- CXL / DAX -------------------------------
  [  OK  ] cxl command found
  [  OK  ] daxctl command found
  [  OK  ] CEDT ACPI table present
  [  OK  ] CXL kernel modules loaded
  [  OK  ] CXL region detected
           region0  size=229.0 GB  type=ram  state=commit
           region1  size=229.0 GB  type=ram  state=commit
  [  OK  ] DAX device found
           dax0.0  perm=666  size=229.0 GB  mode=devdax
           dax1.0  perm=666  size=229.0 GB  mode=devdax

--- Driver ----------------------------------
  [  OK  ] mx_dma module loaded
  [  OK  ] /dev/mx_dma/ devices found
  [  OK  ] /dev/mx_dma/ device permissions OK

--- PXL Library -----------------------------
  [  OK  ] libpxl installed (v2.0.0)
  [  OK  ] pxl_resourced service active
  [  OK  ] pxl_resourced service enabled

--- CLI & Tools -----------------------------
  [  OK  ] xcena_cli found
  [  OK  ] Number of devices : 2
           [0] mx1p  BDF=0000:01:00.0  computable=True
           [1] mx1p  BDF=0000:11:00.0  computable=True
  [  OK  ] xtop found

--- MU Toolchain ----------------------------
  [  OK  ] MU library installed
  [  OK  ] MU LLVM installed

Validation Categories

System Environment

  • Host OS distribution and version, Linux kernel version, and execution environment type (Native or Docker).
  • Ensures the system meets the minimum platform requirements for the SDK.

PCI / Hardware

  • Detects XCENA CXL Type 3 devices on the PCIe bus via lspci.
  • At least one device must be present for the SDK to operate.

CXL / DAX

  • Verifies CXL userspace utilities (cxl, daxctl) and CEDT ACPI table presence.
  • Checks CXL kernel module loading and CXL region commitment.
  • Validates DAX device availability with correct permissions and devdax mode.

Driver

  • Checks that the mx_dma kernel module is loaded.
  • Verifies /dev/mx_dma/ character device nodes are created with proper permissions for DMA communication.

PXL Library

  • Confirms the PXL shared library is installed.
  • Verifies the pxl_resourced resource management daemon is active (running) and enabled (auto-start on boot).

CLI & Tools

  • Verifies that xcena_cli can enumerate connected devices.
  • Checks that monitoring tools such as xtop are available in the system PATH.

MU Toolchain

  • Checks installation of the MU firmware library.
  • Verifies the MU LLVM cross-compiler toolchain required for building device-side MU kernel binaries.

Tip All items should show [ OK ] or [ INFO ]. If any item shows [ FAIL ] or [ WARN ], follow the guidance in the output or refer to the Troubleshooting guide. [ WARN ] MU LLVM is expected if the MU toolchain is not required for your use case.

Important

The CXL memory works in either of two modes — what matters is that the mode matches your intended setup (see System Requirements → CXL memory host setup):

  • system-ram managed by ccma (default): the ccma module must be loaded. Check ls /dev/ccma and cat /sys/class/misc/ccma/meminfo for reserved chunks.
  • devdax (multi-host / full-capacity setups): the DAX devices must show mode=devdax. If not, run the host setup and reboot — it installs xcena-devdax.service, which re-applies the conversion on every boot:
    sudo ./scripts/setup_host.sh
    sudo reboot
    

    If a manual daxctl reconfigure-device --mode=devdax fails with Device or resource busy, the memory was already onlined as system-ram and used by the kernel — see Troubleshooting.