[Patch V3 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@...>
Cc: Guo Dong <guo.dong@...>
Cc: Benjamin You <benjamin.you@...>
Cc: Ray Ni <ray.ni@...>
Signed-off-by: Zhiguang Liu <zhiguang.liu@...>
---
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 7b71d37f94..14b7a732da 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
PLD_SMBIOS_TABLE *SmBiosTableHob;=0D
+ PLD_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 gPldSmbiosTableGuid guid hob\n"=
));=0D
=0D
+ // =0D
+ // Creat ACPI table Hob=0D
+ //=0D
+ AcpiTableHob =3D BuildGuidHob (&gPldAcpiTableGuid, sizeof (PLD_ACPI_TABL=
E));=0D
+ ASSERT (AcpiTableHob !=3D NULL);=0D
+ AcpiTableHob->PldHeader.Revision =3D PLD_ACPI_TABLE_REVISION;=0D
+ AcpiTableHob->PldHeader.Length =3D sizeof (PLD_ACPI_TABLE);=0D
+ AcpiTableHob->Rsdp =3D SysTableInfo.AcpiTableBase;=0D
+ DEBUG ((DEBUG_INFO, "Create smbios table gPldAcpiTableGuid 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 444f39acf3..01388b8831 100644
--- a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.inf
+++ b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.inf
@@ -65,6 +65,7 @@
gEfiGraphicsDeviceInfoHobGuid=0D
gUefiAcpiBoardInfoGuid=0D
gPldSmbiosTableGuid=0D
+ gPldAcpiTableGuid=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.