From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web09.35515.1629783290696064299 for ; Mon, 23 Aug 2021 22:34:50 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: omkar.kulkarni@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 605F51042; Mon, 23 Aug 2021 22:34:50 -0700 (PDT) Received: from usa.arm.com (a077433.blr.arm.com [10.162.46.10]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 2B0B73F766; Mon, 23 Aug 2021 22:34:48 -0700 (PDT) From: "Omkar Anand Kulkarni" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Sami Mujawar Subject: [edk2-platforms][PATCH v3 5/5] ArmPlatformPkg: Add Readme file Date: Tue, 24 Aug 2021 11:04:03 +0530 Message-Id: <20210824053403.24103-6-omkar.kulkarni@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210824053403.24103-1-omkar.kulkarni@arm.com> References: <20210824053403.24103-1-omkar.kulkarni@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Added a readme file that explains the software framework for dynamic generation of HEST table. Signed-off-by: Omkar Anand Kulkarni --- ArmPlatformPkg/Drivers/HestMmErrorSources/Readme.md | 66 +++++++++++++++= +++++ 1 file changed, 66 insertions(+) diff --git a/ArmPlatformPkg/Drivers/HestMmErrorSources/Readme.md b/ArmPla= tformPkg/Drivers/HestMmErrorSources/Readme.md new file mode 100644 index 000000000000..1b6f0713cb9a --- /dev/null +++ b/ArmPlatformPkg/Drivers/HestMmErrorSources/Readme.md @@ -0,0 +1,66 @@ +Hardware Error Source Table (HEST)[1] and Software Delegated Exception I= nterface +(SDEI)[2] ACPI tables are used to acomplish firmware first error handlin= g.This +patch series introduces a framework to build and install the HEST ACPI t= able +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 ||| |Standalo= ne MM|| +|| +-----------+ |+------------------+ | +-----------------+|| +--------= -----+| +|| |GHESv2 | || = | +|| +---------------------+--------------------+| = | +|| +--------------------+ | | = | +|| |PlatformErrorHandler| | | = | +|| | DXE | | | = | +|| +--------------------+ | | = | +||FF FWK | | = | +|+-------------------------------------+---------------------+ = | +| | = | ++--------------------------------------+--------------------------------= ------+ + | + Figure: Dynamic Hest Table Generation. + +All the hardware error sources are added to HEST table as GHESv2[3] erro= r 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 descript= ors of + type GHESv2 from the MM drivers implementing HEST Error Source Descrip= tor + protocol. Once all the descriptors are collected HestErrorSourceDxe ap= pends + it to HEST table using HestTableDxe driver. + +- PlatformErrorHandlerDxe: + Builds and installs SDEI ACPI table. This driver does not initialize(l= oad) + until HestErrorSourceDxe driver has finished appending all possible GH= ESv2 + error source descriptors to the HEST table. Once that is complete usin= g 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 tab= le + 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 Err= or + Record +[6] : UEFI Reference Specification 2.8, Section N.2.5 Memory Error Secti= on + +Link to github branch with the patches in this series - +https://github.com/omkkul01/edk2/tree/ras_firmware_first_edk2 --=20 2.17.1