Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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 TEST-ONLY INTERFACE: This interface is intended for testing
23 and validation purposes only. It is not a data repair mechanism
24 and should never be used on production systems or live data.
25
26 DATA LOSS RISK: For CXL persistent memory (PMEM) devices,
27 poison injection can result in permanent data loss. Injected
28 poison may render data permanently inaccessible even after
29 clearing, as the clear operation writes zeros and does not
30 recover original data.
31
32 SYSTEM STABILITY RISK: For volatile memory, poison injection
33 can cause kernel crashes, system instability, or unpredictable
34 behavior if the poisoned addresses are accessed by running code
35 or critical kernel structures.
36
37What: /sys/kernel/debug/cxl/memX/clear_poison
38Date: April, 2023
39KernelVersion: v6.4
40Contact: linux-cxl@vger.kernel.org
41Description:
42 (WO) When a Device Physical Address (DPA) is written to this
43 attribute, the memdev driver sends a clear poison command to
44 the device for the specified address. Clearing poison removes
45 the address from the device's Poison List and writes 0 (zero)
46 for 64 bytes starting at address. It is not an error to clear
47 poison from an address that does not have poison set. If the
48 device cannot clear poison from the address, -ENXIO is returned.
49 The clear_poison attribute is only visible for devices
50 supporting the capability.
51
52 TEST-ONLY INTERFACE: This interface is intended for testing
53 and validation purposes only. It is not a data repair mechanism
54 and should never be used on production systems or live data.
55
56 CLEAR IS NOT DATA RECOVERY: This operation writes zeros to the
57 specified address range and removes the address from the poison
58 list. It does NOT recover or restore original data that may have
59 been present before poison injection. Any original data at the
60 cleared address is permanently lost and replaced with zeros.
61
62 CLEAR IS NOT A REPAIR MECHANISM: This interface is for testing
63 purposes only and should not be used as a data repair tool.
64 Clearing poison is fundamentally different from data recovery
65 or error correction.
66
67What: /sys/kernel/debug/cxl/regionX/inject_poison
68Date: August, 2025
69Contact: linux-cxl@vger.kernel.org
70Description:
71 (WO) When a Host Physical Address (HPA) is written to this
72 attribute, the region driver translates it to a Device
73 Physical Address (DPA) and identifies the corresponding
74 memdev. It then sends an inject poison command to that memdev
75 at the translated DPA. Refer to the memdev ABI entry at:
76 /sys/kernel/debug/cxl/memX/inject_poison for the detailed
77 behavior. This attribute is only visible if all memdevs
78 participating in the region support both inject and clear
79 poison commands.
80
81 TEST-ONLY INTERFACE: This interface is intended for testing
82 and validation purposes only. It is not a data repair mechanism
83 and should never be used on production systems or live data.
84
85 DATA LOSS RISK: For CXL persistent memory (PMEM) devices,
86 poison injection can result in permanent data loss. Injected
87 poison may render data permanently inaccessible even after
88 clearing, as the clear operation writes zeros and does not
89 recover original data.
90
91 SYSTEM STABILITY RISK: For volatile memory, poison injection
92 can cause kernel crashes, system instability, or unpredictable
93 behavior if the poisoned addresses are accessed by running code
94 or critical kernel structures.
95
96What: /sys/kernel/debug/cxl/regionX/clear_poison
97Date: August, 2025
98Contact: linux-cxl@vger.kernel.org
99Description:
100 (WO) When a Host Physical Address (HPA) is written to this
101 attribute, the region driver translates it to a Device
102 Physical Address (DPA) and identifies the corresponding
103 memdev. It then sends a clear poison command to that memdev
104 at the translated DPA. Refer to the memdev ABI entry at:
105 /sys/kernel/debug/cxl/memX/clear_poison for the detailed
106 behavior. This attribute is only visible if all memdevs
107 participating in the region support both inject and clear
108 poison commands.
109
110 TEST-ONLY INTERFACE: This interface is intended for testing
111 and validation purposes only. It is not a data repair mechanism
112 and should never be used on production systems or live data.
113
114 CLEAR IS NOT DATA RECOVERY: This operation writes zeros to the
115 specified address range and removes the address from the poison
116 list. It does NOT recover or restore original data that may have
117 been present before poison injection. Any original data at the
118 cleared address is permanently lost and replaced with zeros.
119
120 CLEAR IS NOT A REPAIR MECHANISM: This interface is for testing
121 purposes only and should not be used as a data repair tool.
122 Clearing poison is fundamentally different from data recovery
123 or error correction.
124
125What: /sys/kernel/debug/cxl/einj_types
126Date: January, 2024
127KernelVersion: v6.9
128Contact: linux-cxl@vger.kernel.org
129Description:
130 (RO) Prints the CXL protocol error types made available by
131 the platform in the format:
132
133 0x<error number> <error type>
134
135 The possible error types are (as of ACPI v6.5):
136
137 0x1000 CXL.cache Protocol Correctable
138 0x2000 CXL.cache Protocol Uncorrectable non-fatal
139 0x4000 CXL.cache Protocol Uncorrectable fatal
140 0x8000 CXL.mem Protocol Correctable
141 0x10000 CXL.mem Protocol Uncorrectable non-fatal
142 0x20000 CXL.mem Protocol Uncorrectable fatal
143
144 The <error number> can be written to einj_inject to inject
145 <error type> into a chosen dport.
146
147What: /sys/kernel/debug/cxl/$dport_dev/einj_inject
148Date: January, 2024
149KernelVersion: v6.9
150Contact: linux-cxl@vger.kernel.org
151Description:
152 (WO) Writing an integer to this file injects the corresponding
153 CXL protocol error into $dport_dev ($dport_dev will be a device
154 name from /sys/bus/pci/devices). The integer to type mapping for
155 injection can be found by reading from einj_types. If the dport
156 was enumerated in RCH mode, a CXL 1.1 error is injected, otherwise
157 a CXL 2.0 error is injected.