xref: /linux/Documentation/ABI/testing/debugfs-cxl (revision 2a6b6c9a226279b4f6668450ddb21ae655558087)
1What:		/sys/kernel/debug/cxl/memX/inject_poison
2Date:		April, 2023
3KernelVersion:	v6.4
4Contact:	linux-cxl@vger.kernel.org
5Description:
6		(WO) When a Device Physical Address (DPA) is written to this
7		attribute, the memdev driver sends an inject poison command to
8		the device for the specified address. The DPA must be 64-byte
9		aligned and the length of the injected poison is 64-bytes. If
10		successful, the device returns poison when the address is
11		accessed through the CXL.mem bus. Injecting poison adds the
12		address to the device's Poison List and the error source is set
13		to Injected. In addition, the device adds a poison creation
14		event to its internal Informational Event log, updates the
15		Event Status register, and if configured, interrupts the host.
16		It is not an error to inject poison into an address that
17		already has poison present and no error is returned. If the
18		device returns 'Inject Poison Limit Reached' an -EBUSY error
19		is returned to the user. The inject_poison attribute is only
20		visible for devices supporting the capability.
21
22
23What:		/sys/kernel/debug/memX/clear_poison
24Date:		April, 2023
25KernelVersion:	v6.4
26Contact:	linux-cxl@vger.kernel.org
27Description:
28		(WO) When a Device Physical Address (DPA) is written to this
29		attribute, the memdev driver sends a clear poison command to
30		the device for the specified address. Clearing poison removes
31		the address from the device's Poison List and writes 0 (zero)
32		for 64 bytes starting at address. It is not an error to clear
33		poison from an address that does not have poison set. If the
34		device cannot clear poison from the address, -ENXIO is returned.
35		The clear_poison attribute is only visible for devices
36		supporting the capability.
37
38What:		/sys/kernel/debug/cxl/einj_types
39Date:		January, 2024
40KernelVersion:	v6.9
41Contact:	linux-cxl@vger.kernel.org
42Description:
43		(RO) Prints the CXL protocol error types made available by
44		the platform in the format:
45
46			0x<error number> <error type>
47
48		The possible error types are (as of ACPI v6.5):
49
50			0x1000	CXL.cache Protocol Correctable
51			0x2000	CXL.cache Protocol Uncorrectable non-fatal
52			0x4000	CXL.cache Protocol Uncorrectable fatal
53			0x8000	CXL.mem Protocol Correctable
54			0x10000	CXL.mem Protocol Uncorrectable non-fatal
55			0x20000	CXL.mem Protocol Uncorrectable fatal
56
57		The <error number> can be written to einj_inject to inject
58		<error type> into a chosen dport.
59
60What:		/sys/kernel/debug/cxl/$dport_dev/einj_inject
61Date:		January, 2024
62KernelVersion:	v6.9
63Contact:	linux-cxl@vger.kernel.org
64Description:
65		(WO) Writing an integer to this file injects the corresponding
66		CXL protocol error into $dport_dev ($dport_dev will be a device
67		name from /sys/bus/pci/devices). The integer to type mapping for
68		injection can be found by reading from einj_types. If the dport
69		was enumerated in RCH mode, a CXL 1.1 error is injected, otherwise
70		a CXL 2.0 error is injected.
71