torvalds/linux

View on GitHub
Documentation/ABI/testing/debugfs-cxl

Summary

Maintainability
Test Coverage
What:        /sys/kernel/debug/cxl/memX/inject_poison
Date:        April, 2023
KernelVersion:    v6.4
Contact:    linux-cxl@vger.kernel.org
Description:
        (WO) When a Device Physical Address (DPA) is written to this
        attribute, the memdev driver sends an inject poison command to
        the device for the specified address. The DPA must be 64-byte
        aligned and the length of the injected poison is 64-bytes. If
        successful, the device returns poison when the address is
        accessed through the CXL.mem bus. Injecting poison adds the
        address to the device's Poison List and the error source is set
        to Injected. In addition, the device adds a poison creation
        event to its internal Informational Event log, updates the
        Event Status register, and if configured, interrupts the host.
        It is not an error to inject poison into an address that
        already has poison present and no error is returned. The
        inject_poison attribute is only visible for devices supporting
        the capability.


What:        /sys/kernel/debug/memX/clear_poison
Date:        April, 2023
KernelVersion:    v6.4
Contact:    linux-cxl@vger.kernel.org
Description:
        (WO) When a Device Physical Address (DPA) is written to this
        attribute, the memdev driver sends a clear poison command to
        the device for the specified address. Clearing poison removes
        the address from the device's Poison List and writes 0 (zero)
        for 64 bytes starting at address. It is not an error to clear
        poison from an address that does not have poison set. If the
        device cannot clear poison from the address, -ENXIO is returned.
        The clear_poison attribute is only visible for devices
        supporting the capability.

What:        /sys/kernel/debug/cxl/einj_types
Date:        January, 2024
KernelVersion:    v6.9
Contact:    linux-cxl@vger.kernel.org
Description:
        (RO) Prints the CXL protocol error types made available by
        the platform in the format:

            0x<error number> <error type>

        The possible error types are (as of ACPI v6.5):

            0x1000    CXL.cache Protocol Correctable
            0x2000    CXL.cache Protocol Uncorrectable non-fatal
            0x4000    CXL.cache Protocol Uncorrectable fatal
            0x8000    CXL.mem Protocol Correctable
            0x10000    CXL.mem Protocol Uncorrectable non-fatal
            0x20000    CXL.mem Protocol Uncorrectable fatal

        The <error number> can be written to einj_inject to inject
        <error type> into a chosen dport.

What:        /sys/kernel/debug/cxl/$dport_dev/einj_inject
Date:        January, 2024
KernelVersion:    v6.9
Contact:    linux-cxl@vger.kernel.org
Description:
        (WO) Writing an integer to this file injects the corresponding
        CXL protocol error into $dport_dev ($dport_dev will be a device
        name from /sys/bus/pci/devices). The integer to type mapping for
        injection can be found by reading from einj_types. If the dport
        was enumerated in RCH mode, a CXL 1.1 error is injected, otherwise
        a CXL 2.0 error is injected.