From: Ard Biesheuvel <a...@kernel.org> In addition to setting up the home grown reset notification, register with the generic EFI protocol that does the same. This event is triggered from the reset runtime implemented in MdeModulePkg, to which we will be switching the RPi platforms in a subsequent patch.
Signed-off-by: Ard Biesheuvel <a...@kernel.org> Reviewed-by: Leif Lindholm <quic_llind...@quicinc.com> --- Platform/RaspberryPi/Drivers/VarBlockServiceDxe/VarBlockServiceDxe.inf | 1 + Platform/RaspberryPi/Drivers/VarBlockServiceDxe/VarBlockServiceDxe.c | 35 ++++++++++++++++++-- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/Platform/RaspberryPi/Drivers/VarBlockServiceDxe/VarBlockServiceDxe.inf b/Platform/RaspberryPi/Drivers/VarBlockServiceDxe/VarBlockServiceDxe.inf index 9cf5e8b0d01f..f1ecc47c7f5d 100644 --- a/Platform/RaspberryPi/Drivers/VarBlockServiceDxe/VarBlockServiceDxe.inf +++ b/Platform/RaspberryPi/Drivers/VarBlockServiceDxe/VarBlockServiceDxe.inf @@ -63,6 +63,7 @@ [Protocols] gEfiBlockIoProtocolGuid gEfiFirmwareVolumeBlockProtocolGuid # PROTOCOL SOMETIMES_PRODUCED gEfiDevicePathProtocolGuid # PROTOCOL SOMETIMES_PRODUCED + gEfiResetNotificationProtocolGuid [FixedPcd] gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize diff --git a/Platform/RaspberryPi/Drivers/VarBlockServiceDxe/VarBlockServiceDxe.c b/Platform/RaspberryPi/Drivers/VarBlockServiceDxe/VarBlockServiceDxe.c index 006d4ded15e9..b18121155c01 100644 --- a/Platform/RaspberryPi/Drivers/VarBlockServiceDxe/VarBlockServiceDxe.c +++ b/Platform/RaspberryPi/Drivers/VarBlockServiceDxe/VarBlockServiceDxe.c @@ -10,6 +10,8 @@ #include "VarBlockService.h" +#include <Protocol/ResetNotification.h> + // // Minimum delay to enact before reset, when variables are dirty (in μs). // Needed to ensure that SSD-based USB 3.0 devices have time to flush their @@ -211,6 +213,19 @@ DumpVarsOnEvent ( DumpVars (); } +STATIC +VOID +EFIAPI +DumpVarsOnReset ( + IN EFI_RESET_TYPE ResetType, + IN EFI_STATUS ResetStatus, + IN UINTN DataSize, + IN VOID *ResetData OPTIONAL + ) +{ + DumpVars (); +} + VOID ReadyToBootHandler ( IN EFI_EVENT Event, @@ -248,9 +263,10 @@ InstallDumpVarEventHandlers ( VOID ) { - EFI_STATUS Status; - EFI_EVENT ResetEvent; - EFI_EVENT ReadyToBootEvent; + EFI_STATUS Status; + EFI_EVENT ResetEvent; + EFI_EVENT ReadyToBootEvent; + EFI_RESET_NOTIFICATION_PROTOCOL *ResetNotify; Status = gBS->CreateEventEx ( EVT_NOTIFY_SIGNAL, @@ -271,6 +287,19 @@ InstallDumpVarEventHandlers ( &ReadyToBootEvent ); ASSERT_EFI_ERROR (Status); + + Status = gBS->LocateProtocol ( + &gEfiResetNotificationProtocolGuid, + NULL, + (VOID **)&ResetNotify + ); + if (!EFI_ERROR (Status)) { + Status = ResetNotify->RegisterResetNotify ( + ResetNotify, + DumpVarsOnReset + ); + ASSERT_EFI_ERROR (Status); + } } -- 2.46.0.rc1.232.g9752f9e123-goog -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#120105): https://edk2.groups.io/g/devel/message/120105 Mute This Topic: https://groups.io/mt/107628979/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-