The explanation is in the patch titled

  OvmfPkg: introduce gRootBusesConnectedProtocolGuid

At this point, this protocol doesn't do anything yet.

Cc: Ard Biesheuvel <ard.biesheu...@linaro.org>
Cc: Gerd Hoffmann <kra...@redhat.com>
Cc: Jordan Justen <jordan.l.jus...@intel.com>
Cc: Marcel Apfelbaum <mar...@redhat.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <ler...@redhat.com>
---
 ArmVirtPkg/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf |  1 +
 ArmVirtPkg/Library/PlatformIntelBdsLib/IntelBdsPlatform.c      | 11 +++++++++++
 2 files changed, 12 insertions(+)

diff --git a/ArmVirtPkg/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf 
b/ArmVirtPkg/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf
index 79ba7b2afbf7..bc0eab100319 100644
--- a/ArmVirtPkg/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf
+++ b/ArmVirtPkg/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf
@@ -74,7 +74,8 @@ [Guids]
 
 [Protocols]
   gEfiDevicePathProtocolGuid
   gEfiGraphicsOutputProtocolGuid
   gEfiLoadedImageProtocolGuid
   gEfiPciRootBridgeIoProtocolGuid
   gEfiSimpleFileSystemProtocolGuid
+  gRootBusesConnectedProtocolGuid
diff --git a/ArmVirtPkg/Library/PlatformIntelBdsLib/IntelBdsPlatform.c 
b/ArmVirtPkg/Library/PlatformIntelBdsLib/IntelBdsPlatform.c
index b242a293a103..c8acfb1e86a6 100644
--- a/ArmVirtPkg/Library/PlatformIntelBdsLib/IntelBdsPlatform.c
+++ b/ArmVirtPkg/Library/PlatformIntelBdsLib/IntelBdsPlatform.c
@@ -21,14 +21,15 @@
 #include <Library/PlatformBdsLib.h>
 #include <Library/QemuBootOrderLib.h>
 #include <Protocol/DevicePath.h>
 #include <Protocol/GraphicsOutput.h>
 #include <Protocol/PciIo.h>
 #include <Protocol/PciRootBridgeIo.h>
 #include <Guid/EventGroup.h>
+#include <Protocol/RootBusesConnected.h>
 
 #include "IntelBdsPlatform.h"
 
 #define DP_NODE_LEN(Type) { (UINT8)sizeof (Type), (UINT8)(sizeof (Type) >> 8) }
 
 
 #pragma pack (1)
@@ -390,22 +391,32 @@ EFIAPI
 PlatformBdsPolicyBehavior (
   IN LIST_ENTRY                      *DriverOptionList,
   IN LIST_ENTRY                      *BootOptionList,
   IN PROCESS_CAPSULES                ProcessCapsules,
   IN BASEM_MEMORY_TEST               BaseMemoryTest
   )
 {
+  EFI_STATUS Status;
+
   //
   // Locate the PCI root bridges and make the PCI bus driver connect each,
   // non-recursively. This will produce a number of child handles with PciIo on
   // them.
   //
   FilterAndProcess (&gEfiPciRootBridgeIoProtocolGuid, NULL, Connect);
 
   //
+  // Signal the ACPI platform driver that it can download QEMU ACPI tables.
+  //
+  Status = gBS->InstallProtocolInterface (&gImageHandle,
+                  &gRootBusesConnectedProtocolGuid, EFI_NATIVE_INTERFACE,
+                  NULL);
+  ASSERT_EFI_ERROR (Status);
+
+  //
   // Find all display class PCI devices (using the handles from the previous
   // step), and connect them non-recursively. This should produce a number of
   // child handles with GOPs on them.
   //
   FilterAndProcess (&gEfiPciIoProtocolGuid, IsPciDisplay, Connect);
 
   //
-- 
1.8.3.1


_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to