ArmVirtPkg/PlatformHasAcpiDtDxe: Move to OvmfPkg
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4076 This module is required by other architectures like RISC-V. Hence, move this to OvmfPkg. Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Sunil V L <sunilvl@ventanamicro.com> Acked-by: Ard Biesheuvel <ardb@kernel.org> Reviewed-by: Andrei Warkentin <andrei.warkentin@intel.com>
This commit is contained in:
@@ -161,6 +161,7 @@
|
||||
gVMMBootOrderGuid = {0x668f4529, 0x63d0, 0x4bb5, {0xb6, 0x5d, 0x6f, 0xbb, 0x9d, 0x36, 0xa4, 0x4a}}
|
||||
gUefiOvmfPkgTdxAcpiHobGuid = {0x6a0c5870, 0xd4ed, 0x44f4, {0xa1, 0x35, 0xdd, 0x23, 0x8b, 0x6f, 0x0c, 0x8d}}
|
||||
gEfiNonCcFvGuid = {0xae047c6d, 0xbce9, 0x426c, {0xae, 0x03, 0xa6, 0x8e, 0x3b, 0x8a, 0x04, 0x88}}
|
||||
gOvmfVariableGuid = {0x50bea1e5, 0xa2c5, 0x46e9, {0x9b, 0x3a, 0x59, 0x59, 0x65, 0x16, 0xb0, 0x0a}}
|
||||
|
||||
[Ppis]
|
||||
# PPI whose presence in the PPI database signals that the TPM base address
|
||||
@@ -467,6 +468,12 @@
|
||||
# 2 - set by GOP Driver.
|
||||
gUefiOvmfPkgTokenSpaceGuid.PcdVideoResolutionSource|0|UINT8|0x64
|
||||
|
||||
#
|
||||
# Whether to force disable ACPI, regardless of the fw_cfg settings
|
||||
# exposed by QEMU
|
||||
#
|
||||
gUefiOvmfPkgTokenSpaceGuid.PcdForceNoAcpi|0x0|BOOLEAN|0x69
|
||||
|
||||
[PcdsFeatureFlag]
|
||||
gUefiOvmfPkgTokenSpaceGuid.PcdQemuBootOrderPciTranslation|TRUE|BOOLEAN|0x1c
|
||||
gUefiOvmfPkgTokenSpaceGuid.PcdQemuBootOrderMmioTranslation|FALSE|BOOLEAN|0x1d
|
||||
|
83
OvmfPkg/PlatformHasAcpiDtDxe/PlatformHasAcpiDtDxe.c
Normal file
83
OvmfPkg/PlatformHasAcpiDtDxe/PlatformHasAcpiDtDxe.c
Normal file
@@ -0,0 +1,83 @@
|
||||
/** @file
|
||||
Decide whether the firmware should expose an ACPI- and/or a Device Tree-based
|
||||
hardware description to the operating system.
|
||||
|
||||
Copyright (c) 2017, Red Hat, Inc.
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
**/
|
||||
|
||||
#include <Guid/PlatformHasAcpi.h>
|
||||
#include <Guid/PlatformHasDeviceTree.h>
|
||||
#include <Library/BaseLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/PcdLib.h>
|
||||
#include <Library/QemuFwCfgLib.h>
|
||||
#include <Library/UefiBootServicesTableLib.h>
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PlatformHasAcpiDt (
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
FIRMWARE_CONFIG_ITEM FwCfgItem;
|
||||
UINTN FwCfgSize;
|
||||
|
||||
//
|
||||
// If we fail to install any of the necessary protocols below, the OS will be
|
||||
// unbootable anyway (due to lacking hardware description), so tolerate no
|
||||
// errors here.
|
||||
//
|
||||
if ((MAX_UINTN == MAX_UINT64) &&
|
||||
!PcdGetBool (PcdForceNoAcpi) &&
|
||||
!EFI_ERROR (
|
||||
QemuFwCfgFindFile (
|
||||
"etc/table-loader",
|
||||
&FwCfgItem,
|
||||
&FwCfgSize
|
||||
)
|
||||
))
|
||||
{
|
||||
//
|
||||
// Only make ACPI available on 64-bit systems, and only if QEMU generates
|
||||
// (a subset of) the ACPI tables.
|
||||
//
|
||||
Status = gBS->InstallProtocolInterface (
|
||||
&ImageHandle,
|
||||
&gEdkiiPlatformHasAcpiGuid,
|
||||
EFI_NATIVE_INTERFACE,
|
||||
NULL
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
goto Failed;
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
//
|
||||
// Expose the Device Tree otherwise.
|
||||
//
|
||||
Status = gBS->InstallProtocolInterface (
|
||||
&ImageHandle,
|
||||
&gEdkiiPlatformHasDeviceTreeGuid,
|
||||
EFI_NATIVE_INTERFACE,
|
||||
NULL
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
goto Failed;
|
||||
}
|
||||
|
||||
return Status;
|
||||
|
||||
Failed:
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
CpuDeadLoop ();
|
||||
//
|
||||
// Keep compilers happy.
|
||||
//
|
||||
return Status;
|
||||
}
|
43
OvmfPkg/PlatformHasAcpiDtDxe/PlatformHasAcpiDtDxe.inf
Normal file
43
OvmfPkg/PlatformHasAcpiDtDxe/PlatformHasAcpiDtDxe.inf
Normal file
@@ -0,0 +1,43 @@
|
||||
## @file
|
||||
# Decide whether the firmware should expose an ACPI- and/or a Device Tree-based
|
||||
# hardware description to the operating system.
|
||||
#
|
||||
# Copyright (c) 2017, Red Hat, Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
##
|
||||
|
||||
[Defines]
|
||||
INF_VERSION = 1.25
|
||||
BASE_NAME = PlatformHasAcpiDtDxe
|
||||
FILE_GUID = 9d1dd27f-6d7f-427b-aec4-b62f6279c2f1
|
||||
MODULE_TYPE = DXE_DRIVER
|
||||
VERSION_STRING = 1.0
|
||||
ENTRY_POINT = PlatformHasAcpiDt
|
||||
|
||||
[Sources]
|
||||
PlatformHasAcpiDtDxe.c
|
||||
|
||||
[Packages]
|
||||
EmbeddedPkg/EmbeddedPkg.dec
|
||||
MdeModulePkg/MdeModulePkg.dec
|
||||
MdePkg/MdePkg.dec
|
||||
OvmfPkg/OvmfPkg.dec
|
||||
|
||||
[LibraryClasses]
|
||||
BaseLib
|
||||
DebugLib
|
||||
PcdLib
|
||||
QemuFwCfgLib
|
||||
UefiBootServicesTableLib
|
||||
UefiDriverEntryPoint
|
||||
|
||||
[Guids]
|
||||
gEdkiiPlatformHasAcpiGuid ## SOMETIMES_PRODUCES ## PROTOCOL
|
||||
gEdkiiPlatformHasDeviceTreeGuid ## SOMETIMES_PRODUCES ## PROTOCOL
|
||||
|
||||
[Pcd]
|
||||
gUefiOvmfPkgTokenSpaceGuid.PcdForceNoAcpi
|
||||
|
||||
[Depex]
|
||||
gEfiVariableArchProtocolGuid
|
Reference in New Issue
Block a user