On Tue, Dec 6, 2022 at 5:26 PM gaoliming <gaoliming@...> wrote:
Dionna:
I add my comments below.
-----邮件原件-----
发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Dionna Glaze
via groups.io
发送时间: 2022年11月9日 5:16
收件人: devel@edk2.groups.io
抄送: Dionna Glaze <dionnaglaze@...>; Michael D Kinney
<michael.d.kinney@...>; Ard Biesheuvel <ardb@...>; Gerd
Hoffman <kraxel@...>; Jiewen Yao <jiewen.yao@...>
主题: [edk2-devel] [PATCH v2 4/4] MdePkg: Signal AfterReadyToBoot after
ReadyToBoot
The Uefi v2.9 specification adds this event group in section 3.1.7,
with its GUID defined in the Related Definitions section of
EFI_BOOT_SERVICES.CreateEventEx() in chapter 7.
Cc: "Michael D Kinney" <michael.d.kinney@...>
Cc: Ard Biesheuvel <ardb@...>
Cc: Gerd Hoffman <kraxel@...>
Cc: Jiewen Yao <jiewen.yao@...>
Signed-off-by: Dionna Glaze <dionnaglaze@...>
---
MdePkg/Include/Library/UefiLib.h | 2 ++
MdePkg/Library/UefiLib/UefiLib.inf | 1 +
MdePkg/Library/UefiLib/UefiNotTiano.c | 18 ++++++++++++++++++
3 files changed, 21 insertions(+)
diff --git a/MdePkg/Include/Library/UefiLib.h
b/MdePkg/Include/Library/UefiLib.h
index be7da7fdf7..2c3342351e 100644
--- a/MdePkg/Include/Library/UefiLib.h
+++ b/MdePkg/Include/Library/UefiLib.h
@@ -890,6 +890,8 @@ UnicodeStringDisplayLength (
/**
Create, Signal, and Close the Ready to Boot event using
EfiSignalEventReadyToBoot().
+ If successful, then create, signal and close the After Ready to Boot event.
+
This function abstracts the signaling of the Ready to Boot Event. The
Framework moved
from a proprietary to UEFI 2.0 based mechanism. This library abstracts
the caller
from how this event is created to prevent to code form having to change
with the
diff --git a/MdePkg/Library/UefiLib/UefiLib.inf
b/MdePkg/Library/UefiLib/UefiLib.inf
index 01ed92092d..5c4064eafa 100644
--- a/MdePkg/Library/UefiLib/UefiLib.inf
+++ b/MdePkg/Library/UefiLib/UefiLib.inf
@@ -60,6 +60,7 @@
gEfiGlobalVariableGuid ##
SOMETIMES_CONSUMES ## Variable
gEfiAcpi20TableGuid ##
SOMETIMES_CONSUMES ## SystemTable
gEfiAcpi10TableGuid ##
SOMETIMES_CONSUMES ## SystemTable
+ gEfiEventAfterReadyToBootGuid ##
SOMETIMES_CONSUMES ## Event
[Protocols]
gEfiDriverBindingProtocolGuid ##
SOMETIMES_PRODUCES
diff --git a/MdePkg/Library/UefiLib/UefiNotTiano.c
b/MdePkg/Library/UefiLib/UefiNotTiano.c
index d84e91fd01..04fe42f9f7 100644
--- a/MdePkg/Library/UefiLib/UefiNotTiano.c
+++ b/MdePkg/Library/UefiLib/UefiNotTiano.c
@@ -208,6 +208,8 @@ EfiCreateEventReadyToBootEx (
/**
Create, Signal, and Close the Ready to Boot event using
EfiSignalEventReadyToBoot().
+ If successful, then create, signal and close the After Ready to Boot event.
+
This function abstracts the signaling of the Ready to Boot Event. The
Framework moved
from a proprietary to UEFI 2.0 based mechanism. This library abstracts
the caller
from how this event is created to prevent to code form having to change
with the
@@ -222,11 +224,27 @@ EfiSignalEventReadyToBoot (
{
EFI_STATUS Status;
EFI_EVENT ReadyToBootEvent;
+ EFI_EVENT AfterReadyToBootEvent;
Status = EfiCreateEventReadyToBoot (&ReadyToBootEvent);
if (!EFI_ERROR (Status)) {
gBS->SignalEvent (ReadyToBootEvent);
gBS->CloseEvent (ReadyToBootEvent);
+ return;
+ }
+
Return should not be here. This means ReadyToBoot event creates successfully and return.
But, the behavior should be ReadyToBoot and AfterReadyToBoot event both trig.
Thanks Gao, given Michael's feedback about this patch not making much
sense in the series that adds before_exit_boot_services, we decided to
go ahead and consider v1 of this series as final. Let's let Robert
Phelps take it from here, since they appear to need it such that
they're in a better position to test their implementation.
Thanks
Liming
+ /* Then immediately signal the after ready to boot event group */
+ Status = gBS->CreateEventEx (
+ EVT_NOTIFY_SIGNAL,
+ TPL_CALLBACK,
+ EfiEventEmptyFunction,
+ NULL,
+ &gEfiEventAfterReadyToBootGuid,
+ AfterReadyToBootEvent
+ );
+ if (!EFI_ERROR(Status)) {
+ gBS->SignalEvent (AfterReadyToBootEvent);
+ gBS->CloseEvent (AfterReadyToBootEvent);
}
}
--
2.38.1.431.g37b22c650d-goog
--
-Dionna Glaze, PhD (she/her)