On Mon, Dec 15, 2025 at 03:36:23PM -0600, Ben Cheatham wrote: > v5 Changes: > - Use setmntent()/getmntent() instead of open-coding getting the > debugfs path (Dave) > - Use correct return code for sysfs_read_attr() (Dave) > > v4 Changes: > - Variable renames for clarity (Dave) > - Use errno instead of rc for access() calls (Dave) > - Check returns for snprintf() (Dave) > - Add util_cxl_dport_filter() (Dave) > - Replace printf() calls with log_info() (Dave) > - Write correct value to debugfs during protocol error injection > (BIT(error) vs. error) > > v3 Changes: > - Rebase on v83 release > - Fix whitespace errors (Alison) > > v2 Changes: > - Make the --clear option of 'inject-error' its own command (Alison) > - Debugfs is now found using the /proc/mount entry instead of > providing the path using a --debugfs option > - Man page added for 'clear-error' > - Reword commit descriptions for clarity > > 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. Device poison > can be cleared using the 'clear-error' command. > > The 'inject-error'/'clear-error' commands and "-N" option of cxl-list all > require access to the CXL driver's debugfs. > > 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 option. > > [1]: ACPI v6.5 spec, section 18.6.4 > [2]: ACPI v6.5 spec, table 18.31
Hi Ben, I did a patch by patch review but saved up a couple of usability things to chat about here: Consider removing the -N option and simply adding the new info to the default memdev and bus listings. Both are only accessing debugfs files and don't add much to the default listing, especially the memdev one. For the protocol errors, the cxl list entry is always present, even when empty, but the poison_injectable attribute is only present when true. Should that be always present and true/false? Or maybe true/false/unknown, where unknown is the status when CONFIG_DEBUG_FS is not enabled? And, maybe something similar for protocol errors? Please add more strong 'danger' warnings to the poison inject and clear command man pages. See Documentation/ABI/testing/debugfs-cxl for the language we converged on when adding the debugfs attributes. I have no test for the protocol errors. Is there anything you can share for that? I'll send a separate reply asking if you to append an updated cxl-poison unit test patch to this set. --Alison > Ben Cheatham (7): > libcxl: Add debugfs path to CXL context > libcxl: Add CXL protocol errors > libcxl: Add poison injection support > cxl: Add inject-error command > cxl: Add clear-error command > cxl/list: Add injectable errors in output > Documentation: Add docs for inject/clear-error commands > > Documentation/cxl/cxl-clear-error.txt | 67 ++++++ > Documentation/cxl/cxl-inject-error.txt | 129 +++++++++++ > Documentation/cxl/cxl-list.txt | 35 ++- > Documentation/cxl/meson.build | 2 + > cxl/builtin.h | 2 + > cxl/cxl.c | 2 + > cxl/filter.c | 26 +++ > cxl/filter.h | 5 + > cxl/inject-error.c | 249 ++++++++++++++++++++ > cxl/json.c | 30 +++ > cxl/lib/libcxl.c | 302 +++++++++++++++++++++++++ > cxl/lib/libcxl.sym | 8 + > cxl/lib/private.h | 14 ++ > cxl/libcxl.h | 16 ++ > cxl/list.c | 3 + > cxl/meson.build | 1 + > util/json.h | 1 + > 17 files changed, 891 insertions(+), 1 deletion(-) > create mode 100644 Documentation/cxl/cxl-clear-error.txt > create mode 100644 Documentation/cxl/cxl-inject-error.txt > create mode 100644 cxl/inject-error.c > > -- > 2.52.0 >
