summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--EmbeddedPkg/TemplateTimerDxe/Timer.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/EmbeddedPkg/TemplateTimerDxe/Timer.c b/EmbeddedPkg/TemplateTimerDxe/Timer.c
index 4bfa3e8622..a48d4b52eb 100644
--- a/EmbeddedPkg/TemplateTimerDxe/Timer.c
+++ b/EmbeddedPkg/TemplateTimerDxe/Timer.c
@@ -72,7 +72,11 @@ TimerInterruptHandler (
{
EFI_TPL OriginalTPL;
- // Mask all interrupts
+ //
+ // DXE core uses this callback for the EFI timer tick. The DXE core uses locks
+ // that raise to TPL_HIGH and then restore back to current level. Thus we need
+ // to make sure TPL level is set to TPL_HIGH while we are handling the timer tick.
+ //
OriginalTPL = gBS->RaiseTPL (TPL_HIGH_LEVEL);
MmioWrite32 (TIMER_CMD, 0);