Ben Cheatham wrote: > Export CXL helper functions in the einj_cxl module for getting/injecting > available CXL protocol error types to sysfs under kernel/debug/cxl. > > The kernel/debug/cxl/einj_types file will print the available CXL > protocol errors in the same format as the available_error_types > file provided by the einj_cxl module. The > kernel/debug/cxl/$dport_dev/einj_inject is functionally the same as the > error_type and error_inject files provided by the EINJ module, i.e.: > writing an error type into $dport_dev/einj_inject will inject said error > type into the CXL dport represented by $dport_dev. > > Signed-off-by: Ben Cheatham <Benjamin.Cheatham@xxxxxxx> > --- > Documentation/ABI/testing/debugfs-cxl | 30 ++++++++++++++++++++ > drivers/cxl/Kconfig | 1 + > drivers/cxl/core/port.c | 41 +++++++++++++++++++++++++++ > 3 files changed, 72 insertions(+) > > diff --git a/Documentation/ABI/testing/debugfs-cxl b/Documentation/ABI/testing/debugfs-cxl > index fe61d372e3fa..4c0f62f881ca 100644 > --- a/Documentation/ABI/testing/debugfs-cxl > +++ b/Documentation/ABI/testing/debugfs-cxl > @@ -33,3 +33,33 @@ Description: > 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@xxxxxxxxxxxxxxx > +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@xxxxxxxxxxxxxxx > +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. > diff --git a/drivers/cxl/Kconfig b/drivers/cxl/Kconfig > index 67998dbd1d46..c86ae4c65c03 100644 > --- a/drivers/cxl/Kconfig > +++ b/drivers/cxl/Kconfig > @@ -2,6 +2,7 @@ > menuconfig CXL_BUS > tristate "CXL (Compute Express Link) Devices Support" > depends on PCI > + depends on ACPI_APEI_EINJ_CXL || !ACPI_APEI_EINJ_CXL This statement is always true "x || !x" I mentioned in the other patch that ACPI_APEI_EINJ_CXL needs to have a dependency on CXL_BUS.