Changes since v2: - Rebased to the latest upstream code. This patch series introduces platform support for RAS using Firmware First error handling. Firmware first error handling on ARM Neoverse reference design platforms is achieved using HEST[1] and SDEI[2] ACPI tables.
For doing so the Platform Error handler DXE driver is introduced. This driver is integral part of the firmware first error handling framework in EDK2. SDEI being the notification mechanism used to communicate the platform errors to OSPM, it builds and installs the SDEI ACPI table. Also installs the HEST table which is already created as part of firmware first framework in EDK2. This series does provide a reference implementation to leverage the firmware first framework by implementing a platform MM driver for Dynamic Memory Controller DMC[3] that has RAS feature enabled. This driver mainly handles following: - Implements the Hest Error Source Descriptor protocol introduced as part of firmware first framework in EDK2. Publishes the 1-bit ECC DRAM error sources as GHESv2[4] type error source descriptors. - For any 1-bit CE that occurs on DRAM it reads DMC error record registers and populates a error status block (CPER)[5] of Memory Type error[6]. 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] : DMC620 Dynamic Memory Controller, revision r1p0 [4] : ACPI Reference Specification 6.3, Table 18-393 GHESv2 Structure [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 This patch series is dependent on the edk2 patch series https://edk2.groups.io/g/devel/message/79741 Link to github branch with the patches in this series - https://github.com/omkkul01/edk2-platforms/tree/ras_firware_first_edk2-platforms_v3 Omkar Anand Kulkarni (5): Platform/ARM: Add DMC-620 ECC error handling driver Platform/Sgi: dmc-620 firmware-first error handling Platform/Sgi: define memory region for GHES error status block Platform/Sgi: Define values for ACPI table header Platform/Sgi: Add platform error handling driver Platform/ARM/Drivers/Dmc620Mm/Dmc620Mm.dec | 30 ++ Platform/ARM/SgiPkg/SgiPlatform.dec | 1 + Platform/ARM/SgiPkg/SgiPlatform.dsc.inc | 38 ++ Platform/ARM/SgiPkg/SgiPlatformMm.dsc.inc | 30 ++ Platform/ARM/SgiPkg/PlatformStandaloneMm.fdf | 6 + Platform/ARM/SgiPkg/SgiPlatform.fdf | 13 + Platform/ARM/Drivers/Dmc620Mm/Dmc620Mm.inf | 61 +++ .../PlatformErrorHandlerDxe.inf | 51 +++ .../Library/PlatformLib/PlatformLib.inf | 6 + Platform/ARM/Drivers/Dmc620Mm/Dmc620Mm.h | 174 +++++++++ Platform/ARM/Drivers/Dmc620Mm/Dmc620Mm.c | 362 ++++++++++++++++++ .../Dmc620Mm/Dmc620MmErrorSourceInfo.c | 194 ++++++++++ .../PlatformErrorHandlerDxe.c | 171 +++++++++ .../Library/PlatformLib/PlatformLibMem.c | 13 +- 14 files changed, 1148 insertions(+), 2 deletions(-) create mode 100644 Platform/ARM/Drivers/Dmc620Mm/Dmc620Mm.dec create mode 100644 Platform/ARM/Drivers/Dmc620Mm/Dmc620Mm.inf create mode 100644 Platform/ARM/SgiPkg/Drivers/PlatformErrorHandlerDxe/PlatformErrorHandlerDxe.inf create mode 100644 Platform/ARM/Drivers/Dmc620Mm/Dmc620Mm.h create mode 100644 Platform/ARM/Drivers/Dmc620Mm/Dmc620Mm.c create mode 100644 Platform/ARM/Drivers/Dmc620Mm/Dmc620MmErrorSourceInfo.c create mode 100644 Platform/ARM/SgiPkg/Drivers/PlatformErrorHandlerDxe/PlatformErrorHandlerDxe.c -- 2.17.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#79749): https://edk2.groups.io/g/devel/message/79749 Mute This Topic: https://groups.io/mt/85104844/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-