Skip to content

Commit a0563f5

Browse files
benhartcheathamdjbw
authored andcommitted
EINJ, Documentation: Update EINJ kernel doc
Update EINJ kernel document to include how to inject CXL protocol error types, build the kernel to include CXL error types, and give an example injection. Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Signed-off-by: Ben Cheatham <Benjamin.Cheatham@amd.com> Link: https://lore.kernel.org/r/20240311142508.31717-5-Benjamin.Cheatham@amd.com Signed-off-by: Dan Williams <dan.j.williams@intel.com>
1 parent 8039804 commit a0563f5

File tree

1 file changed

+34
-0
lines changed
  • Documentation/firmware-guide/acpi/apei

1 file changed

+34
-0
lines changed

Documentation/firmware-guide/acpi/apei/einj.rst

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ configuration::
3232
CONFIG_ACPI_APEI
3333
CONFIG_ACPI_APEI_EINJ
3434

35+
...and to (optionally) enable CXL protocol error injection set::
36+
37+
CONFIG_ACPI_APEI_EINJ_CXL
38+
3539
The EINJ user interface is in <debugfs mount point>/apei/einj.
3640

3741
The following files belong to it:
@@ -118,6 +122,24 @@ The following files belong to it:
118122
this actually works depends on what operations the BIOS actually
119123
includes in the trigger phase.
120124

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+
121143
BIOS versions based on the ACPI 4.0 specification have limited options
122144
in controlling where the errors are injected. Your BIOS may support an
123145
extension (enabled with the param_extension=1 module parameter, or boot
@@ -181,6 +203,18 @@ You should see something like this in dmesg::
181203
[22715.834759] EDAC sbridge MC3: PROCESSOR 0:306e7 TIME 1422553404 SOCKET 0 APIC 0
182204
[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)
183205

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+
184218
Special notes for injection into SGX enclaves:
185219

186220
There may be a separate BIOS setup option to enable SGX injection.

0 commit comments

Comments
 (0)