[Patch V4 9/9] UefiPayloadPkg: Creat gPldAcpiTableGuid Hob


Zhiguang Liu
 

From SysTableInfo Hob, get ACPI table address, and creat gPldAcpiTableGuid =
Hob
to store it. Remove diretly adding ACPI table to ConfigurationTable.
Dxe ACPI driver will parse it and install ACPI table from Guid Hob.

Cc: Maurice Ma <maurice.ma@intel.com>
Cc: Guo Dong <guo.dong@intel.com>
Cc: Benjamin You <benjamin.you@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Signed-off-by: Zhiguang Liu <zhiguang.liu@intel.com>
---
UefiPayloadPkg/BlSupportDxe/BlSupportDxe.c | 17 -----------------
UefiPayloadPkg/BlSupportDxe/BlSupportDxe.h | 5 +----
UefiPayloadPkg/BlSupportDxe/BlSupportDxe.inf | 1 -
UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c | 11 +++++++++++
UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.h | 2 +-
UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.inf | 1 +
UefiPayloadPkg/UefiPayloadPkg.fdf | 4 ++++
7 files changed, 18 insertions(+), 23 deletions(-)

diff --git a/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.c b/UefiPayloadPkg/Bl=
SupportDxe/BlSupportDxe.c
index 56b85b8e6d..ffd3427fb3 100644
--- a/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.c
+++ b/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.c
@@ -99,7 +99,6 @@ BlDxeEntryPoint (
{=0D
EFI_STATUS Status;=0D
EFI_HOB_GUID_TYPE *GuidHob;=0D
- SYSTEM_TABLE_INFO *SystemTableInfo;=0D
EFI_PEI_GRAPHICS_INFO_HOB *GfxInfo;=0D
ACPI_BOARD_INFO *AcpiBoardInfo;=0D
=0D
@@ -113,22 +112,6 @@ BlDxeEntryPoint (
Status =3D ReserveResourceInGcd (TRUE, EfiGcdMemoryTypeMemoryMappedIo, 0=
xFED00000, SIZE_1KB, 0, ImageHandle); // HPET=0D
ASSERT_EFI_ERROR (Status);=0D
=0D
- //=0D
- // Find the system table information guid hob=0D
- //=0D
- GuidHob =3D GetFirstGuidHob (&gUefiSystemTableInfoGuid);=0D
- ASSERT (GuidHob !=3D NULL);=0D
- SystemTableInfo =3D (SYSTEM_TABLE_INFO *)GET_GUID_HOB_DATA (GuidHob);=0D
-=0D
- //=0D
- // Install Acpi Table=0D
- //=0D
- if (SystemTableInfo->AcpiTableBase !=3D 0 && SystemTableInfo->AcpiTableS=
ize !=3D 0) {=0D
- DEBUG ((DEBUG_ERROR, "Install Acpi Table at 0x%lx, length 0x%x\n", Sys=
temTableInfo->AcpiTableBase, SystemTableInfo->AcpiTableSize));=0D
- Status =3D gBS->InstallConfigurationTable (&gEfiAcpiTableGuid, (VOID *=
)(UINTN)SystemTableInfo->AcpiTableBase);=0D
- ASSERT_EFI_ERROR (Status);=0D
- }=0D
-=0D
//=0D
// Find the frame buffer information and update PCDs=0D
//=0D
diff --git a/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.h b/UefiPayloadPkg/Bl=
SupportDxe/BlSupportDxe.h
index 512105fafd..3332a30eae 100644
--- a/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.h
+++ b/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.h
@@ -1,7 +1,7 @@
/** @file=0D
The header file of bootloader support DXE.=0D
=0D
-Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>=0D
+Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>=0D
SPDX-License-Identifier: BSD-2-Clause-Patent=0D
=0D
**/=0D
@@ -19,12 +19,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
#include <Library/IoLib.h>=0D
#include <Library/HobLib.h>=0D
=0D
-#include <Guid/Acpi.h>=0D
#include <Guid/SmBios.h>=0D
#include <Guid/SystemTableInfoGuid.h>=0D
#include <Guid/AcpiBoardInfoGuid.h>=0D
#include <Guid/GraphicsInfoHob.h>=0D
=0D
-#include <IndustryStandard/Acpi.h>=0D
-=0D
#endif=0D
diff --git a/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.inf b/UefiPayloadPkg/=
BlSupportDxe/BlSupportDxe.inf
index 30f41f8c39..1ccb250991 100644
--- a/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.inf
+++ b/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.inf
@@ -42,7 +42,6 @@
HobLib=0D
=0D
[Guids]=0D
- gEfiAcpiTableGuid=0D
gUefiSystemTableInfoGuid=0D
gUefiAcpiBoardInfoGuid=0D
gEfiGraphicsInfoHobGuid=0D
diff --git a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c b/UefiPaylo=
adPkg/UefiPayloadEntry/UefiPayloadEntry.c
index 80f66a3fd5..f44e0ea7f0 100644
--- a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c
+++ b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c
@@ -235,6 +235,7 @@ BuildHobFromBl (
EFI_PEI_GRAPHICS_DEVICE_INFO_HOB GfxDeviceInfo;=0D
EFI_PEI_GRAPHICS_DEVICE_INFO_HOB *NewGfxDeviceInfo;=0D
UNIVERSAL_PAYLOAD_SMBIOS_TABLE *SmBiosTableHob;=0D
+ UNIVERSAL_PAYLOAD_ACPI_TABLE *AcpiTableHob;=0D
=0D
//=0D
// Parse memory info and build memory HOBs=0D
@@ -287,6 +288,16 @@ BuildHobFromBl (
SmBiosTableHob->SmBiosEntryPoint =3D SysTableInfo.SmbiosTableBase;=0D
DEBUG ((DEBUG_INFO, "Create smbios table gUniversalPayloadSmbiosTableGui=
d guid hob\n"));=0D
=0D
+ // =0D
+ // Creat ACPI table Hob=0D
+ //=0D
+ AcpiTableHob =3D BuildGuidHob (&gUniversalPayloadAcpiTableGuid, sizeof (=
UNIVERSAL_PAYLOAD_ACPI_TABLE));=0D
+ ASSERT (AcpiTableHob !=3D NULL);=0D
+ AcpiTableHob->Header.Revision =3D UNIVERSAL_PAYLOAD_ACPI_TABLE_REVISION;=
=0D
+ AcpiTableHob->Header.Length =3D sizeof (UNIVERSAL_PAYLOAD_ACPI_TABLE);=0D
+ AcpiTableHob->Rsdp =3D SysTableInfo.AcpiTableBase;=0D
+ DEBUG ((DEBUG_INFO, "Create smbios table gUniversalPayloadAcpiTableGuid =
guid hob\n"));=0D
+=0D
//=0D
// Create guid hob for acpi board information=0D
//=0D
diff --git a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.h b/UefiPaylo=
adPkg/UefiPayloadEntry/UefiPayloadEntry.h
index e7d0d15118..a4c9da128e 100644
--- a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.h
+++ b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.h
@@ -32,7 +32,7 @@
#include <Guid/AcpiBoardInfoGuid.h>=0D
#include <Guid/GraphicsInfoHob.h>=0D
#include <UniversalPayload/SmbiosTable.h>=0D
-=0D
+#include <UniversalPayload/AcpiTable.h>=0D
=0D
#define LEGACY_8259_MASK_REGISTER_MASTER 0x21=0D
#define LEGACY_8259_MASK_REGISTER_SLAVE 0xA1=0D
diff --git a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.inf b/UefiPay=
loadPkg/UefiPayloadEntry/UefiPayloadEntry.inf
index fc5b5ce9d4..8d42925fcd 100644
--- a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.inf
+++ b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.inf
@@ -65,6 +65,7 @@
gEfiGraphicsDeviceInfoHobGuid=0D
gUefiAcpiBoardInfoGuid=0D
gUniversalPayloadSmbiosTableGuid=0D
+ gUniversalPayloadAcpiTableGuid=0D
=0D
[FeaturePcd.IA32]=0D
gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode ## CONSUME=
S=0D
diff --git a/UefiPayloadPkg/UefiPayloadPkg.fdf b/UefiPayloadPkg/UefiPayload=
Pkg.fdf
index 8fc509024b..ed7fbcaddb 100644
--- a/UefiPayloadPkg/UefiPayloadPkg.fdf
+++ b/UefiPayloadPkg/UefiPayloadPkg.fdf
@@ -175,6 +175,10 @@ INF MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
INF MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf=0D
INF MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf=0D
=0D
+#=0D
+# ACPI Support=0D
+#=0D
+INF MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf=0D
=0D
#=0D
# Shell=0D
--=20
2.30.0.windows.2

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