output_format.rst 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. .. SPDX-License-Identifier: GPL-2.0
  2. ==================
  3. APEI output format
  4. ==================
  5. APEI uses printk as hardware error reporting interface, the output
  6. format is as follow::
  7. <error record> :=
  8. APEI generic hardware error status
  9. severity: <integer>, <severity string>
  10. section: <integer>, severity: <integer>, <severity string>
  11. flags: <integer>
  12. <section flags strings>
  13. fru_id: <uuid string>
  14. fru_text: <string>
  15. section_type: <section type string>
  16. <section data>
  17. <severity string>* := recoverable | fatal | corrected | info
  18. <section flags strings># :=
  19. [primary][, containment warning][, reset][, threshold exceeded]\
  20. [, resource not accessible][, latent error]
  21. <section type string> := generic processor error | memory error | \
  22. PCIe error | unknown, <uuid string>
  23. <section data> :=
  24. <generic processor section data> | <memory section data> | \
  25. <pcie section data> | <null>
  26. <generic processor section data> :=
  27. [processor_type: <integer>, <proc type string>]
  28. [processor_isa: <integer>, <proc isa string>]
  29. [error_type: <integer>
  30. <proc error type strings>]
  31. [operation: <integer>, <proc operation string>]
  32. [flags: <integer>
  33. <proc flags strings>]
  34. [level: <integer>]
  35. [version_info: <integer>]
  36. [processor_id: <integer>]
  37. [target_address: <integer>]
  38. [requestor_id: <integer>]
  39. [responder_id: <integer>]
  40. [IP: <integer>]
  41. <proc type string>* := IA32/X64 | IA64
  42. <proc isa string>* := IA32 | IA64 | X64
  43. <processor error type strings># :=
  44. [cache error][, TLB error][, bus error][, micro-architectural error]
  45. <proc operation string>* := unknown or generic | data read | data write | \
  46. instruction execution
  47. <proc flags strings># :=
  48. [restartable][, precise IP][, overflow][, corrected]
  49. <memory section data> :=
  50. [error_status: <integer>]
  51. [physical_address: <integer>]
  52. [physical_address_mask: <integer>]
  53. [node: <integer>]
  54. [card: <integer>]
  55. [module: <integer>]
  56. [bank: <integer>]
  57. [device: <integer>]
  58. [row: <integer>]
  59. [column: <integer>]
  60. [bit_position: <integer>]
  61. [requestor_id: <integer>]
  62. [responder_id: <integer>]
  63. [target_id: <integer>]
  64. [error_type: <integer>, <mem error type string>]
  65. <mem error type string>* :=
  66. unknown | no error | single-bit ECC | multi-bit ECC | \
  67. single-symbol chipkill ECC | multi-symbol chipkill ECC | master abort | \
  68. target abort | parity error | watchdog timeout | invalid address | \
  69. mirror Broken | memory sparing | scrub corrected error | \
  70. scrub uncorrected error
  71. <pcie section data> :=
  72. [port_type: <integer>, <pcie port type string>]
  73. [version: <integer>.<integer>]
  74. [command: <integer>, status: <integer>]
  75. [device_id: <integer>:<integer>:<integer>.<integer>
  76. slot: <integer>
  77. secondary_bus: <integer>
  78. vendor_id: <integer>, device_id: <integer>
  79. class_code: <integer>]
  80. [serial number: <integer>, <integer>]
  81. [bridge: secondary_status: <integer>, control: <integer>]
  82. [aer_status: <integer>, aer_mask: <integer>
  83. <aer status string>
  84. [aer_uncor_severity: <integer>]
  85. aer_layer=<aer layer string>, aer_agent=<aer agent string>
  86. aer_tlp_header: <integer> <integer> <integer> <integer>]
  87. <pcie port type string>* := PCIe end point | legacy PCI end point | \
  88. unknown | unknown | root port | upstream switch port | \
  89. downstream switch port | PCIe to PCI/PCI-X bridge | \
  90. PCI/PCI-X to PCIe bridge | root complex integrated endpoint device | \
  91. root complex event collector
  92. if section severity is fatal or recoverable
  93. <aer status string># :=
  94. unknown | unknown | unknown | unknown | Data Link Protocol | \
  95. unknown | unknown | unknown | unknown | unknown | unknown | unknown | \
  96. Poisoned TLP | Flow Control Protocol | Completion Timeout | \
  97. Completer Abort | Unexpected Completion | Receiver Overflow | \
  98. Malformed TLP | ECRC | Unsupported Request
  99. else
  100. <aer status string># :=
  101. Receiver Error | unknown | unknown | unknown | unknown | unknown | \
  102. Bad TLP | Bad DLLP | RELAY_NUM Rollover | unknown | unknown | unknown | \
  103. Replay Timer Timeout | Advisory Non-Fatal
  104. fi
  105. <aer layer string> :=
  106. Physical Layer | Data Link Layer | Transaction Layer
  107. <aer agent string> :=
  108. Receiver ID | Requester ID | Completer ID | Transmitter ID
  109. Where, [] designate corresponding content is optional
  110. All <field string> description with * has the following format::
  111. field: <integer>, <field string>
  112. Where value of <integer> should be the position of "string" in <field
  113. string> description. Otherwise, <field string> will be "unknown".
  114. All <field strings> description with # has the following format::
  115. field: <integer>
  116. <field strings>
  117. Where each string in <fields strings> corresponding to one set bit of
  118. <integer>. The bit position is the position of "string" in <field
  119. strings> description.
  120. For more detailed explanation of every field, please refer to UEFI
  121. specification version 2.3 or later, section Appendix N: Common
  122. Platform Error Record.