'\" t .\" Title: cxl-inject-protocol-error .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.26 .\" Date: 2026-03-31 .\" Manual: cxl Manual .\" Source: cxl .\" Language: English .\" .TH "CXL\-INJECT\-PROTOCOL\-ERROR" "1" "2026-03-31" "cxl" "cxl Manual" .ie \n(.g .ds Aq \(aq .el .ds Aq ' .ss \n[.ss] 0 .nh .ad l .de URL \fI\\$2\fP <\\$1>\\$3 .. .als MTO URL .if \n[.g] \{\ . mso www.tmac . am URL . ad l . . . am MTO . ad l . . . LINKSTYLE blue R < > .\} .SH "NAME" cxl-inject-protocol-error \- Inject CXL protocol errors into CXL downstream ports .SH "SYNOPSIS" .sp .nf \fIcxl inject\-protocol\-error\fP [] .fi .br .if n .sp .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 .B Warning .ps -1 .br .sp Error injection can cause system instability and should only be used for debugging hardware and software error recovery flows. Use at your own risk! .sp .5v .RE .sp Inject a CXL protocol error into a CXL downstream port (dport). Donwstream ports that support error injection will have their \fIprotocol_injectable\fP attribute in \fIcxl\-list\fP set to true. .sp The \fI\-p\fP/\fI\-\-protocol\fP and \fI\-s\fP/\fI\-\-severity\fP options are required for error injection. The \fI\-p\fP option is used to specify the CXL protocol to inject an error on; either "mem" (CXL.mem) or "cache" (CXL.cache). The \fI\-s\fP option specifies the severity of the error and can be one of: "correctable", "uncorrectable", or "fatal". .sp The types of errors (and severities) available depends on the platform. To find the available error types for injection, see the "injectable_protocol_errors" attribute under the applicable CXL bus object in the output of \fIcxl\-list\fP. For example: .sp .if n .RS 4 .nf .fam C # cxl list \-B [ { "bus":"root0", "provider":"ACPI.CXL", "injectable_protocol_errors":[ "mem\-correctable", "mem\-fatal", ] } ] .fam .fi .if n .RE .sp The dport to inject an error into is specified by host name (e.g. "0000:0e:01.1"). Here\(cqs an example injection using the example bus listing above: .sp .if n .RS 4 .nf .fam C # cxl list \-TP [ { "port":"port1", "host":"pci0000:e0", "depth":1, "decoders_committed":1, "nr_dports":1, "dports":[ { "dport":"0000:e0:01.1", "alias":"device:02", "id":0, "protocol_injectable":true } ] } ] # cxl inject\-protocol\-error "0000:e0:01.1" \-p mem \-s correctable cxl inject\-protocol\-error: inject_proto_err: injected mem\-correctable protocol error. .fam .fi .if n .RE .sp CXL protocol (CXL.cache/mem) error injection requires the platform to support ACPI v6.5+ error injection (EINJ). In addition to platform support, the CONFIG_ACPI_APEI_EINJ and CONFIG_ACPI_APEI_EINJ_CXL kernel configuration options must be enabled. For more information, view the Linux kernel documentation on EINJ. .sp This command depends on the CXL debug filesystem (normally mounted at "/sys/kernel/debug/cxl") to inject protocol errors. If the CXL debugfs is not accessible the "protocol_injectable" attribute of dports will always be set to false, and the "injectable_protocol_errors" attribute of CXL busses will always be empty. .SH "OPTIONS" .sp \-p, \-\-protocol .RS 4 Which CXL protocol to inject an error on. Can be either "mem" (CXL.mem) or "cache (CXL.cache). .RE .sp \-s, \-\-severity .RS 4 Severity level of error to be injected. Can be one of the following: "correctable", "uncorrectable", or "fatal". .RE .sp \-\-debug .RS 4 Enable debug output .RE .SH "SEE ALSO" .sp cxl\-list(1)