public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH v2 0/4] ArmPlatformPkg: Add support to generate HEST ACPI table
@ 2021-07-10 16:18 Omkar Anand Kulkarni
  2021-07-10 16:18 ` [PATCH v2 1/4] ArmPlatformPkg: Allow dynamic generation of " Omkar Anand Kulkarni
                   ` (4 more replies)
  0 siblings, 5 replies; 16+ messages in thread
From: Omkar Anand Kulkarni @ 2021-07-10 16:18 UTC (permalink / raw)
  To: devel; +Cc: Ard Biesheuvel, Sami Mujawar

Changes since v1:
- Helper added for HEST ACPI table generation.
- Rebased to the latest upstream code.

Hardware Error Source Table (HEST)[1] and Software Delegated Exception Interface
(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 table
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   ||| |Standalone 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 descriptors of
  type GHESv2 from the MM drivers implementing HEST Error Source Descriptor
  protocol. Once all the descriptors are collected HestErrorSourceDxe appends
  it to HEST table using HestTableDxe driver.
  
- PlatformErrorHandlerDxe:
  Builds and installs SDEI ACPI table. This driver does not initialize(load)
  until HestErrorSourceDxe driver has finished appending all possible GHESv2
  error source descriptors to the HEST table. Once that is complete using the
  HestTableDxe driver it installs the HEST table.

This patch series provides reference implementation for DMC-620 Dynamic Memory
Controller[4] that has RAS feature enabled. This is platform code
implemented as Standalone MM driver in edk2-platforms.

References:
[1] : ACPI 6.3, Table 18-382, Hardware Error Source Table
[2] : SDEI Platform Design Document, revision b, 10 Appendix C, ACPI table
      definitions for SDEI
[3] : ACPI Reference Specification 6.3, Table 18-393 GHESv2 Structure
[4] : DMC620 Dynamic Memory Controller, revision r1p0
[5] : UEFI Reference Specification 2.8, Appendix N - Common Platform Error
      Record
[6] : UEFI Reference Specification 2.8, Section N.2.5 Memory Error Section

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

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

 ArmPlatformPkg/ArmPlatformPkg.dec             |  12 +
 .../Drivers/Apei/HestDxe/HestDxe.inf          |  49 +++
 .../HestMmErrorSources/HestErrorSourceDxe.inf |  44 +++
 .../HestErrorSourceStandaloneMm.inf           |  51 +++
 .../HestMmErrorSourceCommon.h                 |  37 ++
 ArmPlatformPkg/Include/HestAcpiHeader.h       |  49 +++
 .../Include/Protocol/HestErrorSourceInfo.h    |  64 ++++
 ArmPlatformPkg/Include/Protocol/HestTable.h   |  71 ++++
 ArmPlatformPkg/Drivers/Apei/HestDxe/HestDxe.c | 354 ++++++++++++++++++
 .../HestMmErrorSources/HestErrorSourceDxe.c   | 308 +++++++++++++++
 .../HestErrorSourceStandaloneMm.c             | 312 +++++++++++++++
 11 files changed, 1351 insertions(+)
 create mode 100644 ArmPlatformPkg/Drivers/Apei/HestDxe/HestDxe.inf
 create mode 100644 ArmPlatformPkg/Drivers/HestMmErrorSources/HestErrorSourceDxe.inf
 create mode 100644 ArmPlatformPkg/Drivers/HestMmErrorSources/HestErrorSourceStandaloneMm.inf
 create mode 100644 ArmPlatformPkg/Drivers/HestMmErrorSources/HestMmErrorSourceCommon.h
 create mode 100644 ArmPlatformPkg/Include/HestAcpiHeader.h
 create mode 100644 ArmPlatformPkg/Include/Protocol/HestErrorSourceInfo.h
 create mode 100644 ArmPlatformPkg/Include/Protocol/HestTable.h
 create mode 100644 ArmPlatformPkg/Drivers/Apei/HestDxe/HestDxe.c
 create mode 100644 ArmPlatformPkg/Drivers/HestMmErrorSources/HestErrorSourceDxe.c
 create mode 100644 ArmPlatformPkg/Drivers/HestMmErrorSources/HestErrorSourceStandaloneMm.c

-- 
2.17.1


^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2021-08-24  5:30 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-07-10 16:18 [PATCH v2 0/4] ArmPlatformPkg: Add support to generate HEST ACPI table Omkar Anand Kulkarni
2021-07-10 16:18 ` [PATCH v2 1/4] ArmPlatformPkg: Allow dynamic generation of " Omkar Anand Kulkarni
2021-08-02 12:50   ` Sami Mujawar
2021-08-24  5:22     ` Omkar Anand Kulkarni
2021-07-10 16:18 ` [PATCH v2 2/4] ArmPlatformPkg: add definition for MM_HEST_ERROR_SOURCE_DESC_PROTOCOL Omkar Anand Kulkarni
2021-08-03 14:45   ` Sami Mujawar
2021-08-24  5:23     ` Omkar Anand Kulkarni
2021-07-10 16:18 ` [PATCH v2 3/4] ArmPlatformPkg: retreive error source descriptors from MM Omkar Anand Kulkarni
2021-08-03 14:46   ` Sami Mujawar
2021-08-24  5:29     ` Omkar Anand Kulkarni
2021-07-10 16:18 ` [PATCH v2 4/4] ArmPlatformPkg: Add helpers for HEST table generation Omkar Anand Kulkarni
2021-08-03 15:09   ` Sami Mujawar
2021-08-24  5:30     ` Omkar Anand Kulkarni
2021-08-02 12:49 ` [PATCH v2 0/4] ArmPlatformPkg: Add support to generate HEST ACPI table Sami Mujawar
2021-08-03 15:14   ` Sami Mujawar
2021-08-24  5:19     ` Omkar Anand Kulkarni

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox