UefiPayloadPkg: Create gUniversalPayloadAcpiTableGuid Hob

From SysTableInfo Hob, get ACPI table address, and create
gUniversalPayloadAcpiTableGuid Hob to store it.
Remove directly 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>
Reviewed-by: Guo Dong <guo.dong@intel.com>
Tested-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Signed-off-by: Zhiguang Liu <zhiguang.liu@intel.com>
This commit is contained in:
Zhiguang Liu 2021-04-01 17:08:35 +08:00 committed by mergify[bot]
parent 761329ee27
commit 8c0d678063
7 changed files with 18 additions and 23 deletions

View File

@ -99,7 +99,6 @@ BlDxeEntryPoint (
{ {
EFI_STATUS Status; EFI_STATUS Status;
EFI_HOB_GUID_TYPE *GuidHob; EFI_HOB_GUID_TYPE *GuidHob;
SYSTEM_TABLE_INFO *SystemTableInfo;
EFI_PEI_GRAPHICS_INFO_HOB *GfxInfo; EFI_PEI_GRAPHICS_INFO_HOB *GfxInfo;
ACPI_BOARD_INFO *AcpiBoardInfo; ACPI_BOARD_INFO *AcpiBoardInfo;
@ -113,22 +112,6 @@ BlDxeEntryPoint (
Status = ReserveResourceInGcd (TRUE, EfiGcdMemoryTypeMemoryMappedIo, 0xFED00000, SIZE_1KB, 0, ImageHandle); // HPET Status = ReserveResourceInGcd (TRUE, EfiGcdMemoryTypeMemoryMappedIo, 0xFED00000, SIZE_1KB, 0, ImageHandle); // HPET
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
//
// Find the system table information guid hob
//
GuidHob = GetFirstGuidHob (&gUefiSystemTableInfoGuid);
ASSERT (GuidHob != NULL);
SystemTableInfo = (SYSTEM_TABLE_INFO *)GET_GUID_HOB_DATA (GuidHob);
//
// Install Acpi Table
//
if (SystemTableInfo->AcpiTableBase != 0 && SystemTableInfo->AcpiTableSize != 0) {
DEBUG ((DEBUG_ERROR, "Install Acpi Table at 0x%lx, length 0x%x\n", SystemTableInfo->AcpiTableBase, SystemTableInfo->AcpiTableSize));
Status = gBS->InstallConfigurationTable (&gEfiAcpiTableGuid, (VOID *)(UINTN)SystemTableInfo->AcpiTableBase);
ASSERT_EFI_ERROR (Status);
}
// //
// Find the frame buffer information and update PCDs // Find the frame buffer information and update PCDs
// //

View File

@ -1,7 +1,7 @@
/** @file /** @file
The header file of bootloader support DXE. The header file of bootloader support DXE.
Copyright (c) 2014, Intel Corporation. All rights reserved.<BR> Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent SPDX-License-Identifier: BSD-2-Clause-Patent
**/ **/
@ -19,12 +19,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
#include <Library/IoLib.h> #include <Library/IoLib.h>
#include <Library/HobLib.h> #include <Library/HobLib.h>
#include <Guid/Acpi.h>
#include <Guid/SmBios.h> #include <Guid/SmBios.h>
#include <Guid/SystemTableInfoGuid.h> #include <Guid/SystemTableInfoGuid.h>
#include <Guid/AcpiBoardInfoGuid.h> #include <Guid/AcpiBoardInfoGuid.h>
#include <Guid/GraphicsInfoHob.h> #include <Guid/GraphicsInfoHob.h>
#include <IndustryStandard/Acpi.h>
#endif #endif

View File

@ -42,7 +42,6 @@
HobLib HobLib
[Guids] [Guids]
gEfiAcpiTableGuid
gUefiSystemTableInfoGuid gUefiSystemTableInfoGuid
gUefiAcpiBoardInfoGuid gUefiAcpiBoardInfoGuid
gEfiGraphicsInfoHobGuid gEfiGraphicsInfoHobGuid

View File

@ -235,6 +235,7 @@ BuildHobFromBl (
EFI_PEI_GRAPHICS_DEVICE_INFO_HOB GfxDeviceInfo; EFI_PEI_GRAPHICS_DEVICE_INFO_HOB GfxDeviceInfo;
EFI_PEI_GRAPHICS_DEVICE_INFO_HOB *NewGfxDeviceInfo; EFI_PEI_GRAPHICS_DEVICE_INFO_HOB *NewGfxDeviceInfo;
UNIVERSAL_PAYLOAD_SMBIOS_TABLE *SmBiosTableHob; UNIVERSAL_PAYLOAD_SMBIOS_TABLE *SmBiosTableHob;
UNIVERSAL_PAYLOAD_ACPI_TABLE *AcpiTableHob;
// //
// Parse memory info and build memory HOBs // Parse memory info and build memory HOBs
@ -287,6 +288,16 @@ BuildHobFromBl (
SmBiosTableHob->SmBiosEntryPoint = SysTableInfo.SmbiosTableBase; SmBiosTableHob->SmBiosEntryPoint = SysTableInfo.SmbiosTableBase;
DEBUG ((DEBUG_INFO, "Create smbios table gUniversalPayloadSmbiosTableGuid guid hob\n")); DEBUG ((DEBUG_INFO, "Create smbios table gUniversalPayloadSmbiosTableGuid guid hob\n"));
//
// Creat ACPI table Hob
//
AcpiTableHob = BuildGuidHob (&gUniversalPayloadAcpiTableGuid, sizeof (UNIVERSAL_PAYLOAD_ACPI_TABLE));
ASSERT (AcpiTableHob != NULL);
AcpiTableHob->Header.Revision = UNIVERSAL_PAYLOAD_ACPI_TABLE_REVISION;
AcpiTableHob->Header.Length = sizeof (UNIVERSAL_PAYLOAD_ACPI_TABLE);
AcpiTableHob->Rsdp = SysTableInfo.AcpiTableBase;
DEBUG ((DEBUG_INFO, "Create smbios table gUniversalPayloadAcpiTableGuid guid hob\n"));
// //
// Create guid hob for acpi board information // Create guid hob for acpi board information
// //

View File

@ -32,7 +32,7 @@
#include <Guid/AcpiBoardInfoGuid.h> #include <Guid/AcpiBoardInfoGuid.h>
#include <Guid/GraphicsInfoHob.h> #include <Guid/GraphicsInfoHob.h>
#include <UniversalPayload/SmbiosTable.h> #include <UniversalPayload/SmbiosTable.h>
#include <UniversalPayload/AcpiTable.h>
#define LEGACY_8259_MASK_REGISTER_MASTER 0x21 #define LEGACY_8259_MASK_REGISTER_MASTER 0x21
#define LEGACY_8259_MASK_REGISTER_SLAVE 0xA1 #define LEGACY_8259_MASK_REGISTER_SLAVE 0xA1

View File

@ -65,6 +65,7 @@
gEfiGraphicsDeviceInfoHobGuid gEfiGraphicsDeviceInfoHobGuid
gUefiAcpiBoardInfoGuid gUefiAcpiBoardInfoGuid
gUniversalPayloadSmbiosTableGuid gUniversalPayloadSmbiosTableGuid
gUniversalPayloadAcpiTableGuid
[FeaturePcd.IA32] [FeaturePcd.IA32]
gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode ## CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode ## CONSUMES

View File

@ -175,6 +175,10 @@ INF MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
INF MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf INF MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
INF MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf INF MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
#
# ACPI Support
#
INF MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
# #
# Shell # Shell