| 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. If the |
| device returns 'Inject Poison Limit Reached' an -EBUSY error |
| is returned to the user. 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. |