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.web08.10539.1604047330937049439 for ; Fri, 30 Oct 2020 01:42:11 -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 845BB143D; Fri, 30 Oct 2020 01:42:10 -0700 (PDT) Received: from usa.arm.com (a076764.blr.arm.com [10.162.16.42]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id DC2633F719; Fri, 30 Oct 2020 01:42:08 -0700 (PDT) From: "Omkar Anand Kulkarni" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Leif Lindholm , Sami Mujawar , Jiewen Yao Subject: [edk2-platforms][PATCH 3/6] Platform/Arm/Sgi: Install HEST ACPI table Date: Fri, 30 Oct 2020 14:11:53 +0530 Message-Id: <20201030084156.8291-4-omkar.kulkarni@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201030084156.8291-1-omkar.kulkarni@arm.com> References: <20201030084156.8291-1-omkar.kulkarni@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On SGI/RD platforms that publish the platform error source descriptors using the HEST table generation protocol, install the dynamically created HEST table. Co-authored-by: Thomas Abraham Signed-off-by: Omkar Anand Kulkarni --- Platform/ARM/SgiPkg/SgiPlatform.dec = | 1 + Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.inf = | 2 + Platform/ARM/SgiPkg/Drivers/PlatformDxe/{PlatformDxe.inf =3D> PlatformDx= eMm.inf} | 10 +++- Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.c = | 52 ++++++++++++++++++++ 4 files changed, 63 insertions(+), 2 deletions(-) diff --git a/Platform/ARM/SgiPkg/SgiPlatform.dec b/Platform/ARM/SgiPkg/Sg= iPlatform.dec index f139b90d81e3..099652734c0e 100644 --- a/Platform/ARM/SgiPkg/SgiPlatform.dec +++ b/Platform/ARM/SgiPkg/SgiPlatform.dec @@ -31,6 +31,7 @@ [PcdsFeatureFlag.common] gArmSgiTokenSpaceGuid.PcdVirtioBlkSupported|FALSE|BOOLEAN|0x00000001 gArmSgiTokenSpaceGuid.PcdVirtioNetSupported|FALSE|BOOLEAN|0x00000010 + gArmSgiTokenSpaceGuid.PcdHestSupported|FALSE|BOOLEAN|0x0000000C gArmSgiTokenSpaceGuid.PcdSdeiSupported|FALSE|BOOLEAN|0x0000000D =20 [PcdsFixedAtBuild] diff --git a/Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.inf b/Pl= atform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.inf index 2ea2c09e3920..448a22672a17 100644 --- a/Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.inf +++ b/Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.inf @@ -17,6 +17,7 @@ VirtioDevices.c =20 [Packages] + ArmPlatformPkg/ArmPlatformPkg.dec EmbeddedPkg/EmbeddedPkg.dec MdePkg/MdePkg.dec OvmfPkg/OvmfPkg.dec @@ -33,6 +34,7 @@ gArmSgiAcpiTablesGuid =20 [FeaturePcd] + gArmSgiTokenSpaceGuid.PcdHestSupported gArmSgiTokenSpaceGuid.PcdSdeiSupported gArmSgiTokenSpaceGuid.PcdVirtioBlkSupported gArmSgiTokenSpaceGuid.PcdVirtioNetSupported diff --git a/Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.inf b/Pl= atform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxeMm.inf similarity index 77% copy from Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.inf copy to Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxeMm.inf index 2ea2c09e3920..980a4047aa37 100644 --- a/Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.inf +++ b/Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxeMm.inf @@ -1,5 +1,5 @@ # -# Copyright (c) 2018, ARM Limited. All rights reserved. +# Copyright (c) 2018-2020, ARM Limited. All rights reserved. # # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -17,6 +17,7 @@ VirtioDevices.c =20 [Packages] + ArmPlatformPkg/ArmPlatformPkg.dec EmbeddedPkg/EmbeddedPkg.dec MdePkg/MdePkg.dec OvmfPkg/OvmfPkg.dec @@ -32,7 +33,12 @@ gArmSgiPlatformIdDescriptorGuid gArmSgiAcpiTablesGuid =20 +[Protocols] + gEfiAcpiTableProtocolGuid + gHestTableProtocolGuid + [FeaturePcd] + gArmSgiTokenSpaceGuid.PcdHestSupported gArmSgiTokenSpaceGuid.PcdSdeiSupported gArmSgiTokenSpaceGuid.PcdVirtioBlkSupported gArmSgiTokenSpaceGuid.PcdVirtioNetSupported @@ -44,4 +50,4 @@ gArmSgiTokenSpaceGuid.PcdVirtioNetSize =20 [Depex] - TRUE + AFTER gArmPlatformHestErrorSourcesGuid diff --git a/Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.c b/Plat= form/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.c index 9250243decb8..9ea20357b87e 100644 --- a/Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.c +++ b/Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.c @@ -15,6 +15,7 @@ #include =20 #include +#include =20 #include =20 @@ -88,6 +89,50 @@ InstallSdeiTable (VOID) return Status; } =20 +/** + Install the HEST ACPI table. + + HEST ACPI table is used to list the platform errors for which the erro= r + handling has been supported. Use the HEST table generation protocol to + install the HEST table. + + @retval EFI_SUCCESS SDEI table installed successfully. + @retval Other For any error during installation. + +**/ +STATIC +EFI_STATUS +InstallHestTable (VOID) +{ + HEST_TABLE_PROTOCOL *HestProtocol; + EFI_STATUS Status; + + Status =3D gBS->LocateProtocol ( + &gHestTableProtocolGuid, + NULL, + (VOID **)&HestProtocol + ); + if (EFI_ERROR (Status)) { + DEBUG (( + DEBUG_ERROR, + "Failed to locate Hest Dxe Protocol, status: %r\n", + Status + )); + return Status; + } + + Status =3D HestProtocol->InstallHestTable (); + if (EFI_ERROR (Status)) { + DEBUG (( + DEBUG_ERROR, + "Failed to install HEST table, status: %r\n", + Status + )); + } + + return Status; +} + EFI_STATUS EFIAPI ArmSgiPkgEntryPoint ( @@ -110,6 +155,13 @@ ArmSgiPkgEntryPoint ( } } =20 + if (FeaturePcdGet (PcdHestSupported)) { + Status =3D InstallHestTable (); + if (EFI_ERROR (Status)) { + return Status; + } + } + InitVirtioDevices (); =20 return Status; --=20 2.17.1