CXL-INJECT-PROTOCOL-ERROR(1)
π©Ί CXL-INJECT-PROTOCOL-ERROR β bestie edition π
okay so this is the cxl-inject-protocol-error page, from the cxl manual, and it's literally about yeeting CXL protocol errors into CXL downstream ports π― yes, on purpose. sit down, hydrate, let's go β¨
β¨ NAME β¨
cxl-inject-protocol-error β inject CXL protocol errors into CXL downstream ports π«Ά
πΈ SYNOPSIS πΈ
cxl inject-protocol-error <dport> [<options>]
π¦ DESCRIPTION π¦
β οΈ Warning β οΈ Error injection can cause system instability and should only be used for debugging hardware and software error recovery flows. Use at your own risk! π
So what this does: it injects a CXL protocol error into a CXL downstream port (a dport). Not me being dramatic β downstream ports that support error injection will have their protocol_injectable attribute in cxl-list set to true. That's your vibe check right there π
The -p/--protocol and -s/--severity options are required for error injection. no cap, you can't skip them. Here's the deal:
-ppicks which CXL protocol to inject an error on β either"mem"(CXL.mem) or"cache"(CXL.cache).-spicks the severity of the error, and it can be one of:"correctable","uncorrectable", or"fatal".
The types of errors (and severities) available depends on the platform β it's giving "everybody's different and that's beautiful" π. To find the available error types for injection, look at the injectable_protocol_errors attribute under the applicable CXL bus object in the output of cxl-list. For example:
# cxl list -B
[
{
"bus":"root0",
"provider":"ACPI.CXL",
"injectable_protocol_errors":[
"mem-correctable",
"mem-fatal",
]
}
]
The dport you're injecting into is specified by host name (e.g. "0000:0e:01.1"). Here's an example injection using the example bus listing above π:
# 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.
iconic. it literally tells you it worked ππ
CXL protocol (CXL.cache/mem) error injection requires the platform to support ACPI v6.5+ error injection (EINJ). and that's not all β in addition to platform support, the CONFIG_ACPI_APEI_EINJ and CONFIG_ACPI_APEI_EINJ_CXL kernel configuration options must be enabled. so like, both of them, fr fr. for more information, view the Linux kernel documentation on EINJ π
This command depends on the CXL debug filesystem (normally mounted at "/sys/kernel/debug/cxl") to inject protocol errors. and if the CXL debugfs is not accessible? then 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 π« so if everything looks dead, check your mount first, bestie.
π OPTIONS π
-p,--protocolβ which CXL protocol to inject an error on. Can be either"mem"(CXL.mem) or"cache"(CXL.cache). π§-s,--severityβ severity level of error to be injected. Can be one of the following:"correctable","uncorrectable", or"fatal". π₯--debugβ enable debug output. because sometimes you gotta see the receipts π
π SEE ALSO π
and that's the whole page, no crumbs left behind ππ β this cutie came from cxl, version dated 2026-06-30, and honestly? she ate. periodt. πβ¨
π¦ where this page comes from
- arch rolling: ndctl 85-1 Β· LGPL-2.1-only AND GPL-2.0-only AND CC0-1.0 AND MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms