mirror of https://github.com/acidanthera/audk.git
OvmfPkg/XenAcpiPlatformDxe: remove delayed ACPI table installation
Because "PcdPciDisableBusEnumeration" is always TRUE in the OvmfXen platform, we can remove the delayed ACPI table installation from XenAcpiPlatformDxe. A number of dependencies become useless this way; remove them too. (Note that, conversely, in the QemuFwCfgAcpiPlatformDxe driver, we *cannot* assume that "PcdPciDisableBusEnumeration" is always FALSE, regardless of Xen: in the ArmVirtQemu platform, the PCD may carry either FALSE or TRUE, dependent on whether or not the QEMU "virt" machine configuration includes a PCIe host controller, respectively.) Cc: Anthony Perard <anthony.perard@citrix.com> Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Julien Grall <julien@xen.org> Cc: Philippe Mathieu-Daudé <philmd@redhat.com> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2122 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Message-Id: <20210526201446.12554-21-lersek@redhat.com> Reviewed-by: Ard Biesheuvel <ardb@kernel.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
This commit is contained in:
parent
e7641171b6
commit
3357ac7380
|
@ -7,9 +7,7 @@
|
||||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||||
**/
|
**/
|
||||||
|
|
||||||
#include <Guid/RootBridgesConnectedEventGroup.h> // gRootBridgesConnectedEve...
|
#include <Library/DebugLib.h> // ASSERT_EFI_ERROR()
|
||||||
#include <Library/DebugLib.h> // DEBUG()
|
|
||||||
#include <Library/PcdLib.h> // PcdGetBool()
|
|
||||||
#include <Library/UefiBootServicesTableLib.h> // gBS
|
#include <Library/UefiBootServicesTableLib.h> // gBS
|
||||||
#include <Protocol/AcpiTable.h> // EFI_ACPI_TABLE_PROTOCOL
|
#include <Protocol/AcpiTable.h> // EFI_ACPI_TABLE_PROTOCOL
|
||||||
|
|
||||||
|
@ -34,27 +32,6 @@ FindAcpiTableProtocol (
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
STATIC
|
|
||||||
VOID
|
|
||||||
EFIAPI
|
|
||||||
OnRootBridgesConnected (
|
|
||||||
IN EFI_EVENT Event,
|
|
||||||
IN VOID *Context
|
|
||||||
)
|
|
||||||
{
|
|
||||||
EFI_STATUS Status;
|
|
||||||
|
|
||||||
DEBUG ((DEBUG_INFO,
|
|
||||||
"%a: root bridges have been connected, installing ACPI tables\n",
|
|
||||||
__FUNCTION__));
|
|
||||||
Status = InstallAcpiTables (FindAcpiTableProtocol ());
|
|
||||||
if (EFI_ERROR (Status)) {
|
|
||||||
DEBUG ((DEBUG_ERROR, "%a: InstallAcpiTables: %r\n", __FUNCTION__, Status));
|
|
||||||
}
|
|
||||||
gBS->CloseEvent (Event);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
AcpiPlatformEntryPoint (
|
AcpiPlatformEntryPoint (
|
||||||
|
@ -62,34 +39,5 @@ AcpiPlatformEntryPoint (
|
||||||
IN EFI_SYSTEM_TABLE *SystemTable
|
IN EFI_SYSTEM_TABLE *SystemTable
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
|
||||||
EFI_EVENT RootBridgesConnected;
|
|
||||||
|
|
||||||
//
|
|
||||||
// If the platform doesn't support PCI, or PCI enumeration has been disabled,
|
|
||||||
// install the tables at once, and let the entry point's return code reflect
|
|
||||||
// the full functionality.
|
|
||||||
//
|
|
||||||
if (PcdGetBool (PcdPciDisableBusEnumeration)) {
|
|
||||||
DEBUG ((DEBUG_INFO, "%a: PCI or its enumeration disabled, installing "
|
|
||||||
"ACPI tables\n", __FUNCTION__));
|
|
||||||
return InstallAcpiTables (FindAcpiTableProtocol ());
|
return InstallAcpiTables (FindAcpiTableProtocol ());
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// Otherwise, delay installing the ACPI tables until root bridges are
|
|
||||||
// connected. The entry point's return status will only reflect the callback
|
|
||||||
// setup. (Note that we're a DXE_DRIVER; our entry point function is invoked
|
|
||||||
// strictly before BDS is entered and can connect the root bridges.)
|
|
||||||
//
|
|
||||||
Status = gBS->CreateEventEx (EVT_NOTIFY_SIGNAL, TPL_CALLBACK,
|
|
||||||
OnRootBridgesConnected, NULL /* Context */,
|
|
||||||
&gRootBridgesConnectedEventGroupGuid, &RootBridgesConnected);
|
|
||||||
if (!EFI_ERROR (Status)) {
|
|
||||||
DEBUG ((DEBUG_INFO,
|
|
||||||
"%a: waiting for root bridges to be connected, registered callback\n",
|
|
||||||
__FUNCTION__));
|
|
||||||
}
|
|
||||||
|
|
||||||
return Status;
|
|
||||||
}
|
|
||||||
|
|
|
@ -28,14 +28,12 @@
|
||||||
Xen.c
|
Xen.c
|
||||||
|
|
||||||
[Packages]
|
[Packages]
|
||||||
MdeModulePkg/MdeModulePkg.dec
|
|
||||||
MdePkg/MdePkg.dec
|
MdePkg/MdePkg.dec
|
||||||
OvmfPkg/OvmfPkg.dec
|
OvmfPkg/OvmfPkg.dec
|
||||||
|
|
||||||
[LibraryClasses]
|
[LibraryClasses]
|
||||||
BaseLib
|
BaseLib
|
||||||
DebugLib
|
DebugLib
|
||||||
PcdLib
|
|
||||||
UefiBootServicesTableLib
|
UefiBootServicesTableLib
|
||||||
UefiDriverEntryPoint
|
UefiDriverEntryPoint
|
||||||
XenPlatformLib
|
XenPlatformLib
|
||||||
|
@ -43,11 +41,5 @@
|
||||||
[Protocols]
|
[Protocols]
|
||||||
gEfiAcpiTableProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
gEfiAcpiTableProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||||
|
|
||||||
[Guids]
|
|
||||||
gRootBridgesConnectedEventGroupGuid
|
|
||||||
|
|
||||||
[Pcd]
|
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration
|
|
||||||
|
|
||||||
[Depex]
|
[Depex]
|
||||||
gEfiAcpiTableProtocolGuid
|
gEfiAcpiTableProtocolGuid
|
||||||
|
|
Loading…
Reference in New Issue