I think this patch should move to IntelFrameworkModulePkg/Universal/BdsDxe. It 
is a PI specification requirement to signal gEfiEndOfDxeEventGroupGuid at the 
end of the DXE phase.

-----Original Message-----
From: Ard Biesheuvel [mailto:ard.biesheu...@linaro.org]
Sent: 24 June 2015 11:25
To: edk2-devel@lists.sourceforge.net; ler...@redhat.com; Olivier Martin
Cc: leif.lindh...@linaro.org; roy.fr...@linaro.org; Ard Biesheuvel
Subject: [PATCH] ArmVirtPkg: signal EndOxDxe event in PlatformBsdInit

Currently, the ArmVirtPkg platforms fail to signal the end-of-DXE event 
'gEfiEndOfDxeEventGroupGuid' when entering the BDS phase, which results in some 
loss of functionality, i.e., variable reclaim in the VariableDxe drivers, and 
the splitting of the memory regions that is part of the recently added UEFI 2.5 
properties table feature.

This patch adds signalling of the event to PlatformBdsInit() of the 
PlatformBdsLib instance for the Intel BDS. Note that the ARM BDS does signal 
the event, so this looks like a convenient place to put it.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
---
 .../Library/PlatformIntelBdsLib/IntelBdsPlatform.c | 35 ++++++++++++++++++++++
 .../PlatformIntelBdsLib/PlatformIntelBdsLib.inf    |  1 +
 2 files changed, 36 insertions(+)

diff --git a/ArmVirtPkg/Library/PlatformIntelBdsLib/IntelBdsPlatform.c 
b/ArmVirtPkg/Library/PlatformIntelBdsLib/IntelBdsPlatform.c
index 499cce5dcde6..0e60409cdc73 100644
--- a/ArmVirtPkg/Library/PlatformIntelBdsLib/IntelBdsPlatform.c
+++ b/ArmVirtPkg/Library/PlatformIntelBdsLib/IntelBdsPlatform.c
@@ -24,6 +24,7 @@
 #include <Protocol/GraphicsOutput.h>
 #include <Protocol/PciIo.h>
 #include <Protocol/PciRootBridgeIo.h>
+#include <Guid/EventGroup.h>

 #include "IntelBdsPlatform.h"

@@ -118,6 +119,23 @@ STATIC PLATFORM_USB_KEYBOARD mUsbKeyboard = {
   }
 };

+/**
+  An empty function to pass error checking of CreateEventEx ().
+
+  @param  Event                 Event whose notification function is being 
invoked.
+  @param  Context               Pointer to the notification function's context,
+                                which is implementation-dependent.
+
+**/
+VOID
+EFIAPI
+EmptyCallbackFunction (
+  IN EFI_EVENT                Event,
+  IN VOID                     *Context
+  )
+{
+  return;
+}

 //
 // BDS Platform Functions
@@ -133,6 +151,23 @@ PlatformBdsInit (
   VOID
   )
 {
+  EFI_EVENT           EndOfDxeEvent;
+  EFI_STATUS          Status;
+
+  //
+  // Signal EndOfDxe PI Event
+  //
+  Status = gBS->CreateEventEx (
+      EVT_NOTIFY_SIGNAL,
+      TPL_NOTIFY,
+      EmptyCallbackFunction,
+      NULL,
+      &gEfiEndOfDxeEventGroupGuid,
+      &EndOfDxeEvent
+      );
+  if (!EFI_ERROR (Status)) {
+    gBS->SignalEvent (EndOfDxeEvent);
+  }
 }


diff --git a/ArmVirtPkg/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf 
b/ArmVirtPkg/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf
index d8f892642c2e..d9982167e81d 100644
--- a/ArmVirtPkg/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf
+++ b/ArmVirtPkg/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf
@@ -65,6 +65,7 @@ [Guids]
   gEfiFileInfoGuid
   gEfiFileSystemInfoGuid
   gEfiFileSystemVolumeLabelInfoIdGuid
+  gEfiEndOfDxeEventGroupGuid

 [Protocols]
   gEfiDevicePathProtocolGuid
--
1.9.1


-- IMPORTANT NOTICE: The contents of this email and any attachments are 
confidential and may also be privileged. If you are not the intended recipient, 
please notify the sender immediately and do not disclose the contents to any 
other person, use it for any purpose, or store or copy the information in any 
medium.  Thank you.

ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered 
in England & Wales, Company No:  2557590
ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, 
Registered in England & Wales, Company No:  2548782


------------------------------------------------------------------------------
Monitor 25 network devices or servers for free with OpManager!
OpManager is web-based network management software that monitors 
network devices and physical & virtual servers, alerts via email & sms 
for fault. Monitor 25 devices for free with no restriction. Download now
http://ad.doubleclick.net/ddm/clk/292181274;119417398;o
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to