@@ -32,6 +32,10 @@ configuration::
32
32
CONFIG_ACPI_APEI
33
33
CONFIG_ACPI_APEI_EINJ
34
34
35
+ ...and to (optionally) enable CXL protocol error injection set::
36
+
37
+ CONFIG_ACPI_APEI_EINJ_CXL
38
+
35
39
The EINJ user interface is in <debugfs mount point>/apei/einj.
36
40
37
41
The following files belong to it:
@@ -118,6 +122,24 @@ The following files belong to it:
118
122
this actually works depends on what operations the BIOS actually
119
123
includes in the trigger phase.
120
124
125
+ CXL error types are supported from ACPI 6.5 onwards (given a CXL port
126
+ is present). The EINJ user interface for CXL error types is at
127
+ <debugfs mount point>/cxl. The following files belong to it:
128
+
129
+ - einj_types:
130
+
131
+ Provides the same functionality as available_error_types above, but
132
+ for CXL error types
133
+
134
+ - $dport_dev/einj_inject:
135
+
136
+ Injects a CXL error type into the CXL port represented by $dport_dev,
137
+ where $dport_dev is the name of the CXL port (usually a PCIe device name).
138
+ Error injections targeting a CXL 2.0+ port can use the legacy interface
139
+ under <debugfs mount point>/apei/einj, while CXL 1.1/1.0 port injections
140
+ must use this file.
141
+
142
+
121
143
BIOS versions based on the ACPI 4.0 specification have limited options
122
144
in controlling where the errors are injected. Your BIOS may support an
123
145
extension (enabled with the param_extension=1 module parameter, or boot
@@ -181,6 +203,18 @@ You should see something like this in dmesg::
181
203
[22715.834759] EDAC sbridge MC3: PROCESSOR 0:306e7 TIME 1422553404 SOCKET 0 APIC 0
182
204
[22716.616173] EDAC MC3: 1 CE memory read error on CPU_SrcID#0_Channel#0_DIMM#0 (channel:0 slot:0 page:0x12345 offset:0x0 grain:32 syndrome:0x0 - area:DRAM err_code:0001:0090 socket:0 channel_mask:1 rank:0)
183
205
206
+ A CXL error injection example with $dport_dev=0000:e0:01.1::
207
+
208
+ # cd /sys/kernel/debug/cxl/
209
+ # ls
210
+ 0000:e0:01.1 0000:0c:00.0
211
+ # cat einj_types # See which errors can be injected
212
+ 0x00008000 CXL.mem Protocol Correctable
213
+ 0x00010000 CXL.mem Protocol Uncorrectable non-fatal
214
+ 0x00020000 CXL.mem Protocol Uncorrectable fatal
215
+ # cd 0000:e0:01.1 # Navigate to dport to inject into
216
+ # echo 0x8000 > einj_inject # Inject error
217
+
184
218
Special notes for injection into SGX enclaves:
185
219
186
220
There may be a separate BIOS setup option to enable SGX injection.
0 commit comments