Revision: 17713
http://sourceforge.net/p/edk2/code/17713
Author: abiesheuvel
Date: 2015-06-25 14:49:06 +0000 (Thu, 25 Jun 2015)
Log Message:
-----------
ArmVirtPkg: signal EndOxDxe event in PlatformBsdInit
Currently, the ArmVirtPkg platforms built with the Intel BDS 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.
As discussed on the edk2-devel mailing list here:
http://thread.gmane.org/gmane.comp.bios.tianocore.devel/16088/focus=16109
it is up to the platform BDS to signal that event, since there may be
platform specific ordering constraints with respect to the signalling
of the event that are difficult to honor at the generic level.
So add the SignalEvent () call to PlatformBdsInit () of ArmVirtPkg's
PlatformBdsLib implementation for the Intel BDS.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <[email protected]>
Reviewed-by: Laszlo Ersek <[email protected]>
Modified Paths:
--------------
trunk/edk2/ArmVirtPkg/Library/PlatformIntelBdsLib/IntelBdsPlatform.c
trunk/edk2/ArmVirtPkg/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf
Modified: trunk/edk2/ArmVirtPkg/Library/PlatformIntelBdsLib/IntelBdsPlatform.c
===================================================================
--- trunk/edk2/ArmVirtPkg/Library/PlatformIntelBdsLib/IntelBdsPlatform.c
2015-06-25 08:18:34 UTC (rev 17712)
+++ trunk/edk2/ArmVirtPkg/Library/PlatformIntelBdsLib/IntelBdsPlatform.c
2015-06-25 14:49:06 UTC (rev 17713)
@@ -24,6 +24,7 @@
#include <Protocol/GraphicsOutput.h>
#include <Protocol/PciIo.h>
#include <Protocol/PciRootBridgeIo.h>
+#include <Guid/EventGroup.h>
#include "IntelBdsPlatform.h"
@@ -118,7 +119,24 @@
}
};
+/**
+ 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.
+
+**/
+STATIC
+VOID
+EFIAPI
+EmptyCallbackFunction (
+ IN EFI_EVENT Event,
+ IN VOID *Context
+ )
+{
+}
+
//
// BDS Platform Functions
//
@@ -133,6 +151,24 @@
VOID
)
{
+ EFI_EVENT EndOfDxeEvent;
+ EFI_STATUS Status;
+
+ //
+ // Signal EndOfDxe PI Event
+ //
+ Status = gBS->CreateEventEx (
+ EVT_NOTIFY_SIGNAL,
+ TPL_CALLBACK,
+ EmptyCallbackFunction,
+ NULL,
+ &gEfiEndOfDxeEventGroupGuid,
+ &EndOfDxeEvent
+ );
+ if (!EFI_ERROR (Status)) {
+ gBS->SignalEvent (EndOfDxeEvent);
+ gBS->CloseEvent (EndOfDxeEvent);
+ }
}
Modified:
trunk/edk2/ArmVirtPkg/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf
===================================================================
--- trunk/edk2/ArmVirtPkg/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf
2015-06-25 08:18:34 UTC (rev 17712)
+++ trunk/edk2/ArmVirtPkg/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf
2015-06-25 14:49:06 UTC (rev 17713)
@@ -65,6 +65,7 @@
gEfiFileInfoGuid
gEfiFileSystemInfoGuid
gEfiFileSystemVolumeLabelInfoIdGuid
+ gEfiEndOfDxeEventGroupGuid
[Protocols]
gEfiDevicePathProtocolGuid
------------------------------------------------------------------------------
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-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits