summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeinrich Schuchardt <xypron.glpk@gmx.de>2018-03-24 18:40:21 +0100
committerAlexander Graf <agraf@suse.de>2018-04-04 11:04:00 +0200
commit0f7fcc72565ce411941a12de0fb0ea5538a17cd0 (patch)
tree2d1c3ae800309bbc2ee10486584df422c47b9e8e
parentee3db4fc04714c80196e49f8f3a5f157f20d2862 (diff)
efi_loader: RestoreTPL should execute queued events
When the TPL is lowered queued events may become eligible for execution. iPXE uses the following pattern to request event execution: bs->RestoreTPL ( TPL_APPLICATION ); bs->RaiseTPL ( TPL_CALLBACK ); Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Alexander Graf <agraf@suse.de>
-rw-r--r--lib/efi_loader/efi_boottime.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c
index 1ff0568d47..fd35ffa359 100644
--- a/lib/efi_loader/efi_boottime.c
+++ b/lib/efi_loader/efi_boottime.c
@@ -278,6 +278,11 @@ static void EFIAPI efi_restore_tpl(efi_uintn_t old_tpl)
if (efi_tpl > TPL_HIGH_LEVEL)
efi_tpl = TPL_HIGH_LEVEL;
+ /*
+ * Lowering the TPL may have made queued events eligible for execution.
+ */
+ efi_timer_check();
+
EFI_EXIT(EFI_SUCCESS);
}