This series adds support for injecting CXL protocol (CXL.cache/mem) errors[1] into CXL RCH Downstream ports and VH root ports[2] and poison into CXL memory devices through the CXL debugfs. Errors are injected using a new 'inject-error' command, while errors are reported using a new cxl-list "-N"/"--injectable-errors" option.
The 'inject-error' command and "-N" option of cxl-list both require access to the CXL driver's debugfs. Because the debugfs doesn't have a required mount point, a "--debugfs" option is added to both cxl-list and cxl-inject-error to specify the path to the debugfs if it isn't mounted to the usual place (/sys/kernel/debug). The documentation for the new cxl-inject-error command shows both usage and the possible device/error types, as well as how to retrieve them using cxl-list. The documentation for cxl-list has also been updated to show the usage of the new injectable errors and debugfs options. [1]: ACPI v6.5 spec, section 18.6.4 [2]: ACPI v6.5 spec, table 18.31 Ben Cheatham (6): libcxl: Add debugfs path to CXL context libcxl: Add CXL protocol errors libcxl: Add poison injection functions cxl/list: Add debugfs option cxl/list: Add injectable-errors option cxl: Add inject-error command Documentation/cxl/cxl-inject-error.txt | 139 +++++++++++++++ Documentation/cxl/cxl-list.txt | 39 ++++- Documentation/cxl/meson.build | 1 + cxl/builtin.h | 1 + cxl/cxl.c | 1 + cxl/filter.h | 3 + cxl/inject-error.c | 211 +++++++++++++++++++++++ cxl/json.c | 30 ++++ cxl/lib/libcxl.c | 225 +++++++++++++++++++++++++ cxl/lib/libcxl.sym | 13 ++ cxl/lib/private.h | 14 ++ cxl/libcxl.h | 17 ++ cxl/list.c | 9 + cxl/meson.build | 1 + util/json.h | 1 + 15 files changed, 704 insertions(+), 1 deletion(-) create mode 100644 Documentation/cxl/cxl-inject-error.txt create mode 100644 cxl/inject-error.c -- 2.34.1