[edk2-platforms][PATCH v3 0/5] Add support to generate HEST ACPI table


Omkar Anand Kulkarni
 

Changes since v2:
- Addressed the comments given by Sami.
- Added Readme file with all cover letter information.
- Rebased to the latest upstream code.

Hardware Error Source Table (HEST)[1] and Software Delegated Exception In=
terface
(SDEI)[2] ACPI tables are used to acomplish firmware first error handling=
.This
patch series introduces a framework to build and install the HEST ACPI ta=
ble
dynamically.

The following figure illustrates the possible usage of the dyanamic
generation of HEST ACPI table.

NS | S
+--------------------------------------+---------------------------------=
-----+
| | =
|
|+-------------------------------------+---------------------+ =
|
|| +---------------------+--------------------+| =
|
|| | | || =
|
|| +-----------+ |+------------------+ | +-----------------+|| +---------=
----+|
|| |HestTable | || HestErrorSource | | | HestErrorSource ||| | DMC-620 =
||
|| | DXE | || DXE | | | StandaloneMM ||| |Standalon=
e MM||
|| +-----------+ |+------------------+ | +-----------------+|| +---------=
----+|
|| |GHESv2 | || =
|
|| +---------------------+--------------------+| =
|
|| +--------------------+ | | =
|
|| |PlatformErrorHandler| | | =
|
|| | DXE | | | =
|
|| +--------------------+ | | =
|
||FF FWK | | =
|
|+-------------------------------------+---------------------+ =
|
| | =
|
+--------------------------------------+---------------------------------=
-----+
|
Figure: Firmware First Error Handling approach.

All the hardware error sources are added to HEST table as GHESv2[3] error=
source
descriptors. The framework comprises of following DXE and MM drivers:

- HestTableDxe:
Builds HEST table header and allows appending error source descriptors =
to the
HEST table. Also provides protocol interface to install the built HEST =
table.

- HestErrorSourceDxe & HestErrorSourceStandaloneMM:
These two drivers together retrieve all possible error source descripto=
rs of
type GHESv2 from the MM drivers implementing HEST Error Source Descript=
or
protocol. Once all the descriptors are collected HestErrorSourceDxe app=
ends
it to HEST table using HestTableDxe driver.

Link to github branch with the patches in this series -
https://github.com/omkkul01/edk2/tree/ras_firware_first_edk2-platforms_v3

Omkar Anand Kulkarni (5):
MdeModulePkg: Allow dynamic generation of HEST ACPI table
ArmPlatformPkg: add definition for MM_HEST_ERROR_SOURCE_DESC_PROTOCOL
ArmPlatformPkg: retreive error source descriptors from MM
EmbeddedPkg: Add helpers for HEST table generation
ArmPlatformPkg: Add Readme file

ArmPlatformPkg/ArmPlatformPkg.dec | 10 +
MdeModulePkg/MdeModulePkg.dec | 3 +
.../HestMmErrorSources/HestErrorSourceDxe.inf | 45 +++
.../HestErrorSourceStandaloneMm.inf | 51 +++
.../Universal/Apei/HestDxe/HestDxe.inf | 49 +++
.../HestMmErrorSourceCommon.h | 37 ++
.../Include/Protocol/HestErrorSourceInfo.h | 64 ++++
EmbeddedPkg/Include/Library/AcpiLib.h | 20 ++
MdeModulePkg/Include/Protocol/HestTable.h | 71 ++++
MdePkg/Include/Protocol/MmCommunication.h | 2 +
.../HestMmErrorSources/HestErrorSourceDxe.c | 309 +++++++++++++++++
.../HestErrorSourceStandaloneMm.c | 312 +++++++++++++++++
MdeModulePkg/Universal/Apei/HestDxe/HestDxe.c | 318 ++++++++++++++++++
.../Drivers/HestMmErrorSources/Readme.md | 66 ++++
14 files changed, 1357 insertions(+)
create mode 100644 ArmPlatformPkg/Drivers/HestMmErrorSources/HestErrorSo=
urceDxe.inf
create mode 100644 ArmPlatformPkg/Drivers/HestMmErrorSources/HestErrorSo=
urceStandaloneMm.inf
create mode 100644 MdeModulePkg/Universal/Apei/HestDxe/HestDxe.inf
create mode 100644 ArmPlatformPkg/Drivers/HestMmErrorSources/HestMmError=
SourceCommon.h
create mode 100644 ArmPlatformPkg/Include/Protocol/HestErrorSourceInfo.h
create mode 100644 MdeModulePkg/Include/Protocol/HestTable.h
create mode 100644 ArmPlatformPkg/Drivers/HestMmErrorSources/HestErrorSo=
urceDxe.c
create mode 100644 ArmPlatformPkg/Drivers/HestMmErrorSources/HestErrorSo=
urceStandaloneMm.c
create mode 100644 MdeModulePkg/Universal/Apei/HestDxe/HestDxe.c
create mode 100644 ArmPlatformPkg/Drivers/HestMmErrorSources/Readme.md

--=20
2.17.1

Join {devel@edk2.groups.io to automatically receive all group messages.