Back to Wsl2 Linux Kernel

APEI output format

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

5.5.35.4 KB
Original Source

.. SPDX-License-Identifier: GPL-2.0

================== APEI output format

APEI uses printk as hardware error reporting interface, the output format is as follow::

    <error record> :=
    APEI generic hardware error status
    severity: <integer>, <severity string>
    section: <integer>, severity: <integer>, <severity string>
    flags: <integer>
    <section flags strings>
    fru_id: <uuid string>
    fru_text: <string>
    section_type: <section type string>
    <section data>

    <severity string>* := recoverable | fatal | corrected | info

    <section flags strings># :=
    [primary][, containment warning][, reset][, threshold exceeded]\
    [, resource not accessible][, latent error]

    <section type string> := generic processor error | memory error | \
    PCIe error | unknown, <uuid string>

    <section data> :=
    <generic processor section data> | <memory section data> | \
    <pcie section data> | <null>

    <generic processor section data> :=
    [processor_type: <integer>, <proc type string>]
    [processor_isa: <integer>, <proc isa string>]
    [error_type: <integer>
    <proc error type strings>]
    [operation: <integer>, <proc operation string>]
    [flags: <integer>
    <proc flags strings>]
    [level: <integer>]
    [version_info: <integer>]
    [processor_id: <integer>]
    [target_address: <integer>]
    [requestor_id: <integer>]
    [responder_id: <integer>]
    [IP: <integer>]

    <proc type string>* := IA32/X64 | IA64

    <proc isa string>* := IA32 | IA64 | X64

    <processor error type strings># :=
    [cache error][, TLB error][, bus error][, micro-architectural error]

    <proc operation string>* := unknown or generic | data read | data write | \
    instruction execution

    <proc flags strings># :=
    [restartable][, precise IP][, overflow][, corrected]

    <memory section data> :=
    [error_status: <integer>]
    [physical_address: <integer>]
    [physical_address_mask: <integer>]
    [node: <integer>]
    [card: <integer>]
    [module: <integer>]
    [bank: <integer>]
    [device: <integer>]
    [row: <integer>]
    [column: <integer>]
    [bit_position: <integer>]
    [requestor_id: <integer>]
    [responder_id: <integer>]
    [target_id: <integer>]
    [error_type: <integer>, <mem error type string>]

    <mem error type string>* :=
    unknown | no error | single-bit ECC | multi-bit ECC | \
    single-symbol chipkill ECC | multi-symbol chipkill ECC | master abort | \
    target abort | parity error | watchdog timeout | invalid address | \
    mirror Broken | memory sparing | scrub corrected error | \
    scrub uncorrected error

    <pcie section data> :=
    [port_type: <integer>, <pcie port type string>]
    [version: <integer>.<integer>]
    [command: <integer>, status: <integer>]
    [device_id: <integer>:<integer>:<integer>.<integer>
    slot: <integer>
    secondary_bus: <integer>
    vendor_id: <integer>, device_id: <integer>
    class_code: <integer>]
    [serial number: <integer>, <integer>]
    [bridge: secondary_status: <integer>, control: <integer>]
    [aer_status: <integer>, aer_mask: <integer>
    <aer status string>
    [aer_uncor_severity: <integer>]
    aer_layer=<aer layer string>, aer_agent=<aer agent string>
    aer_tlp_header: <integer> <integer> <integer> <integer>]

    <pcie port type string>* := PCIe end point | legacy PCI end point | \
    unknown | unknown | root port | upstream switch port | \
    downstream switch port | PCIe to PCI/PCI-X bridge | \
    PCI/PCI-X to PCIe bridge | root complex integrated endpoint device | \
    root complex event collector

    if section severity is fatal or recoverable
    <aer status string># :=
    unknown | unknown | unknown | unknown | Data Link Protocol | \
    unknown | unknown | unknown | unknown | unknown | unknown | unknown | \
    Poisoned TLP | Flow Control Protocol | Completion Timeout | \
    Completer Abort | Unexpected Completion | Receiver Overflow | \
    Malformed TLP | ECRC | Unsupported Request
    else
    <aer status string># :=
    Receiver Error | unknown | unknown | unknown | unknown | unknown | \
    Bad TLP | Bad DLLP | RELAY_NUM Rollover | unknown | unknown | unknown | \
    Replay Timer Timeout | Advisory Non-Fatal
    fi

    <aer layer string> :=
    Physical Layer | Data Link Layer | Transaction Layer

    <aer agent string> :=
    Receiver ID | Requester ID | Completer ID | Transmitter ID

Where, [] designate corresponding content is optional

All <field string> description with * has the following format::

    field: <integer>, <field string>

Where value of <integer> should be the position of "string" in <field string> description. Otherwise, <field string> will be "unknown".

All <field strings> description with # has the following format::

    field: <integer>
    <field strings>

Where each string in <fields strings> corresponding to one set bit of <integer>. The bit position is the position of "string" in <field strings> description.

For more detailed explanation of every field, please refer to UEFI specification version 2.3 or later, section Appendix N: Common Platform Error Record.