| 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. |