ERRINJCT(8)

πŸ“¦ version 1.3.14, in opensuse-leap 16.0

🌸 errinjct β€” the manual, but make it make sense πŸ’…

okay bestie so this is ERRINJCT(8), straight outta the Linux on Power Service Tools manual, and it's section 8 because it's a sysadmin-type tool, iykyk. buckle up, we're injecting errors on purpose and it's gonna be a whole vibe πŸ¦‹


✨ NAME ✨

errinjct β€” inject errors into a system via RTAS. yes, on purpose. no, we're not okay. 😭

✨ SYNOPSIS ✨

/usr/local/sbin/errinjct [ OPTIONS ]

✨ DESCRIPTION ✨

so the <hotpink>errinjct</hotpink> tool is literally the plug that lets RTAS inject errors on a Power system. that's the whole job. it's for IBM internal use only β€” so if that's not you, this is not your moment, no cap πŸ™ˆ. and currently, errinjct is only supported on PowerVM systems, periodt.

✨ OPTIONS ✨

okay so the options are giving choose your own adventure β€” they change depending on what functionality you're asking for. run errinjct with no arguments at all and it'll show you a list of supported functions. then peek at the individual function explanations below for the real tea πŸ‘‘

✨ FUNCTIONS ✨

here's the roster, bestie:

  • open β€” open the RTAS error injection facility.
  • close β€” close the RTAS error injection facility.
  • corrupted-dcache-start β€” start causing L1 data cache errors.
  • corrupted-dcache-end β€” stop causing L1 data cache errors.
  • corrupted-icache-start β€” start causing instruction cache errors.
  • corrupted-icache-end β€” stop causing instruction cache errors.
  • corrupted-slb β€” corrupt the SLB entry associated with a specific effective address.
  • ioa-bus-error β€” simulate an error on the IOA bus.
  • platform-specific β€” request the firmware perform a specific platform specific injection.
  • corrupted-tlb-start β€” start corrupting TLB.
  • corrupted-tlb-end β€” stop corrupting TLB.

πŸŽ€ open

open the RTAS error injection facility. this is the key to the whole party πŸ”‘

Usage:

errinjct open [options]

Optional arguments:

  • --dry-run β€” don't actually perform the action, just print what would have been done. the "look but don't touch" of flags 🫢
  • -H, --help β€” print usage information for a particular function.
  • -v, --verbose β€” be more verbose with messages. she talks more πŸ’¬
  • -q, --quiet β€” shhhh.... only report errors. 🀫

πŸŽ€ close

close the RTAS error injection facility. wrap it up, we're done here ✨

Usage:

errinjct close [optioons]
yes the manual really says optioons. we love her. she's iconic. don't fix her. πŸ’€

Mandatory argument:

  • -k token β€” token returned from error inject open.

Optional arguments:

  • --dry-run β€” don't perform the action, just print what would have been done.
  • -H, --help β€” print usage information for a particular function.
  • -v, --verbose β€” be more verbose with messages.
  • -q, --quiet β€” shhhh.... only report errors.
  • -C cpu β€” cpu to inject errors on.

🧚 corrupted-dcache-start / corrupted-dcache-end

inject errors onto the L1 data cache. before you use this option you need to open the RTAS error injection facility via errinjct open. afterwards, pass this parameter in with the -k option and specify a cpu to run on with the -C option. ⚠️ please note: you need to specify the same cpu number to the dcache-start and dcache-end errinjct calls. same cpu or it's not gonna slay, fr fr.

Usage:

errinjct corrupted-dcache-start [options]
errinjct dcache-start [options]

errinjct corrupted-dcache-end [options]
errinjct dcache-end [options]

Mandatory Arguments:

  • -a action β€” type of D-cache error to inject:
    • 0: parity error
    • 1: D-ERAT parity error
    • 2: tag parity error
  • -C cpu β€” cpu to inject errors on.
  • -k token β€” token returned from error inject open.

Optional arguments:

  • --dry-run β€” don't perform the action, just print what would have been done.
  • -H, --help β€” print usage information for a particular function.
  • -v, --verbose β€” be more verbose with messages.
  • -q, --quiet β€” shhhh.... only report errors.

Example:

> errinjct open
Error inject token = 2
> errinjct corrupted-dcache-start -a 1 -k 2 -C 0
.
.
.
> errinjct corrupted-dcache-end -a 1 -k 2 -C 0
> errinjct close -k 2

🧚 corrupted-icache-start / corrupted-icache-end

inject errors into the instruction cache. same drill: before using this option you need to open the RTAS error injection facility via errinjct open. afterwards, pass this parameter in with the -k option and specify a cpu to run on with the -C option. ⚠️ please note: you need to specify the same cpu number to the icache-start and icache-end errinjct calls. matching cpu's only, that's the rule πŸ’…

Usage:

errinjct corrupted-icache-start [options]
errinjct icache-start [options]

errinjct corrupted-icache-end [options]
errinjct icache-end [options]

Mandatory Arguments:

  • -a action β€” type of I-cache error to inject:
    • 0: Parity error
    • 1: I-ERAT partiy error
    • 2: Cache directory 0 parity error
    • 3: Cache directory 1 parity error
  • -n nature β€” nature of I-cache error to inject:
    • 0: Single
    • 1: Solid
    • 2: Hang
  • -C cpu β€” cpu to inject errors on.
  • -k token β€” token returned from error inject open.
"partiy" is in the original manual and honestly? she's earned her place. πŸŽ€

Optional arguments:

  • --dry-run β€” don't perform the action, just print what would have been done.
  • -H, --help β€” print usage information for a particular function.
  • -v, --verbose β€” be more verbose with messages.
  • -q, --quiet β€” shhhh.... only report errors.

Example:

> errinjct open
Error inject token = 2
> errinjct corrupted-icache-start -a 1 -n 0 -k 2 -C 0
.
.
.
> errinjct corrupted-icache-end -a 1 -n 0 -k 2 -C 0
> errinjct close -k 2

πŸ¦‹ corrupted-slb

corrupt the SLB entry associated with the specified effective address. targeted chaos, we love to see it ✨

Usage:

errinjct corrupted-slb [options]
errinjct slb [options]

Mandatory Argument:

  • -a addr β€” effective address associated with the SLB entry to corrupt.

Optional arguments:

  • --dry-run β€” don't perform the action, just print what would have been done.
  • -H, --help β€” print usage information for a particular function.
  • -v, --verbose β€” be more verbose with messages.
  • -q, --quiet β€” shhhh.... only report errors.
  • -C cpu β€” cpu to inject errors on.
  • -k token β€” token returned from error inject open.

πŸ”₯ ioa-bus-error

inject errors onto an IO adapter (PCI) bus slot. big main character energy for your PCI bus 🫢

Usage:

errinjct ioa-bus-error [options]
errinjct eeh [options]

Mandatory arguments:

  • -f function β€” IOA bus error to inject.

specify a device either with the -s flag, the -p flag, or use the explicit BUID/config address flags:

  • -s classpath β€” look up device by sysfs classpath, for example -s net/eth3 or -s scsi_host/host0.
  • -p loc-code β€” look up device by location code, for example -p "U0.1-P2-I1".

Explicit BUID/config mandatory arguments:

  • -c config_addr β€” configure address of the IOA.
  • -h high_bits β€” high bits of PHB unit id.
  • -l lo_bits β€” lo bits of PHB unit id.

Optional arguments:

  • --dry-run β€” don't perform the action, just print what would have been done.
  • -H, --help β€” print usage information for a particular function.
  • -v, --verbose β€” be more verbose with messages.
  • -q, --quiet β€” shhhh.... only report errors.
  • -a addr β€” address at which to report the error.
  • -m mask β€” address mask (defaults to 0x00000000).
  • -C cpu β€” cpu to inject errors on.
  • -k token β€” token returned from error inject open.

Functions for ioa-bus-error β€” here's the full menu, all twenty of them, no skipsies πŸ‘‘:

  • 0 β€” Load to PCI Memory Address Space: inject an Address Parity Error.
  • 1 β€” Load to PCI Memory Address Space: inject a Data Parity Error.
  • 2 β€” Load to PCI I/O Address Space: inject an Address Parity Error.
  • 3 β€” Load to PCI I/O Address Space: inject a Data Parity Error.
  • 4 β€” Load to PCI Configuration Space: inject an Address Parity Error.
  • 5 β€” Load to PCI Configuration Space: inject a Data Parity Error.
  • 6 β€” Store to PCI Memory Address Space: inject an Address Parity Error.
  • 7 β€” Store to PCI Memory Address Space: inject a Data Parity Error.
  • 8 β€” Store to PCI I/O Address Space: inject an Address Parity Error.
  • 9 β€” Store to PCI I/O Address Space: inject a Data Parity Error.
  • 10 β€” Store to PCI Configuration Space: inject an Address Parity Error.
  • 11 β€” Store to PCI Configuration Space: inject a Data Parity Error.
  • 12 β€” DMA read to PCI Memory Address Space: inject an Address Parity Error.
  • 13 β€” DMA read to PCI Memory Address Space: inject a Data Parity Error.
  • 14 β€” DMA read to PCI Memory Address Space: inject a Master Abort Error.
  • 15 β€” DMA read to PCI Memory Address Space: inject a Target Abort Error.
  • 16 β€” DMA write to PCI Memory Address Space: inject an Address Parity Error.
  • 17 β€” DMA write to PCI Memory Address Space: inject a Data Parity Error.
  • 18 β€” DMA write to PCI Memory Address Space: inject a Master Abort Error.
  • 19 β€” DMA write to PCI Memory Address Space: inject a Target Abort Error.

⭐ platform-specific

request the firmware perform a platform specific error injection. very "let the firmware handle it, she knows what she's doing" 🧚

Usage:

errinjct platform-specific [options]

Mandatory argument:

  • -f fname β€” file name to read platform specific error injection data from.

Optional arguments:

  • --dry-run β€” don't perform the action, just print what would have been done.
  • -H, --help β€” print usage information for a particular function.
  • -v, --verbose β€” be more verbose with messages.
  • -q, --quiet β€” shhhh.... only report errors.
  • -C cpu β€” cpu to inject errors on.
  • -k token β€” token returned from error inject open.

πŸ’œ corrupted-tlb-start / corrupted-tlb-end

inject errors into the TLB. before using this option you need to open the RTAS error injection facility via errinjct open. afterwards, pass this parameter in with the -k option and specify a cpu to run on with the -C option. ⚠️ please note: you need to specify the same cpu number to the tlb-start and tlb-end errinjct calls. consistency is the vibe check 🌈

Usage:

errinjct corrupted-tlb-start [options]
errinjct tlb-start [options]

errinjct corrupted-tlb-end [options]
errinjct tlb-end [options]

Mandatory arguments:

  • -C cpu β€” cpu to inject errors on.
  • -k token β€” token returned from error inject open.

Optional arguments:

  • --dry-run β€” don't perform the action, just print what would have been done.
  • -H, --help β€” print usage information for a particular function.
  • -v, --verbose β€” be more verbose with messages.
  • -q, --quiet β€” shhhh.... only report errors.

Example:

> errinjct open
Error inject token = 2
> errinjct corrupted-tlb-start -k 2 -C 0
.
.
.
> errinjct corrupted-tlb-end -k 2 -C 0
> errinjct close -k 2

✨ AUTHORS ✨

This page was written by Nathan Fontenot and Linas Vepstas β€” actual icons, fr fr. 🫢


πŸ’– That’s the whole page, bestie! It comes from the Linux manual as ERRINJCT(8), dated June 2007. Slay, bye! πŸŽ€

πŸ“¦ where this page comes from