efi_loader: run CreateEvent() notify function based on flags

The UEFI specification states that the tpl, function and context
arguments are to be ignored if neither EVT_NOTIFY_WAIT or
EVT_NOTIFY_SIGNAL are specified.  This matches observed behaviour with
an AMI EDK2 based UEFI implementation.

Skip calling the notify function if neither flag is present.

Signed-off-by: Jonathan Gray <jsg@jsg.id.au>
Acked-By: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
master
Jonathan Gray 7 years ago committed by Alexander Graf
parent 85a6e9b3c9
commit 37a980b3fa
  1. 3
      include/efi_api.h
  2. 4
      lib/efi_loader/efi_boottime.c

@ -28,6 +28,9 @@ enum efi_event_type {
EFI_TIMER_RELATIVE = 2
};
#define EVT_NOTIFY_WAIT 0x00000100
#define EVT_NOTIFY_SIGNAL 0x00000200
/* EFI Boot Services table */
struct efi_boot_services {
struct efi_table_hdr hdr;

@ -210,7 +210,9 @@ void efi_timer_check(void)
/* Triggering! */
if (efi_event.trigger_type == EFI_TIMER_PERIODIC)
efi_event.trigger_next += efi_event.trigger_time / 10;
efi_event.notify_function(&efi_event, efi_event.notify_context);
if (efi_event.type & (EVT_NOTIFY_WAIT | EVT_NOTIFY_SIGNAL))
efi_event.notify_function(&efi_event,
efi_event.notify_context);
}
WATCHDOG_RESET();

Loading…
Cancel
Save