ArmPkg/Drivers/TimerDxe/TimerDxe.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)
In an interrupt handler for the timers, it is important that
software clears the interrupt before deactivating the interrupt
in the GIC. Otherwise the GIC will re-signal the same interrupt
again.
Signed-off-by: Ashish Singhal <ashishsingha@nvidia.com>
---
ArmPkg/Drivers/TimerDxe/TimerDxe.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/ArmPkg/Drivers/TimerDxe/TimerDxe.c b/ArmPkg/Drivers/TimerDxe/TimerDxe.c
index 0370620fae..46e5bbf287 100644
--- a/ArmPkg/Drivers/TimerDxe/TimerDxe.c
+++ b/ArmPkg/Drivers/TimerDxe/TimerDxe.c
@@ -300,10 +300,6 @@ TimerInterruptHandler (
//
OriginalTPL = gBS->RaiseTPL (TPL_HIGH_LEVEL);
- // Signal end of interrupt early to help avoid losing subsequent ticks
- // from long duration handlers
- gInterrupt->EndOfInterrupt (gInterrupt, Source);
-
// Check if the timer interrupt is active
if ((ArmGenericTimerGetTimerCtrlReg () ) & ARM_ARCH_TIMER_ISTATUS) {
@@ -335,6 +331,11 @@ TimerInterruptHandler (
ArmInstructionSynchronizationBarrier ();
}
+ // In an interrupt handler for the timers, it is important that software clears the interrupt
+ // before deactivating the interrupt in the GIC. Otherwise the GIC will re-signal the same
+ // interrupt again.
+ gInterrupt->EndOfInterrupt (gInterrupt, Source);
+
gBS->RestoreTPL (OriginalTPL);
}
--
2.17.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#81766): https://edk2.groups.io/g/devel/message/81766
Mute This Topic: https://groups.io/mt/86248479/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
(+ Marc) On Mon, 11 Oct 2021 at 23:40, Ashish Singhal <ashishsingha@nvidia.com> wrote: > > In an interrupt handler for the timers, it is important that > software clears the interrupt before deactivating the interrupt > in the GIC. Otherwise the GIC will re-signal the same interrupt > again. > > Signed-off-by: Ashish Singhal <ashishsingha@nvidia.com> Please don't spam us with almost identical versions of the same patch without even documenting what the difference is. > --- > ArmPkg/Drivers/TimerDxe/TimerDxe.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/ArmPkg/Drivers/TimerDxe/TimerDxe.c b/ArmPkg/Drivers/TimerDxe/TimerDxe.c > index 0370620fae..46e5bbf287 100644 > --- a/ArmPkg/Drivers/TimerDxe/TimerDxe.c > +++ b/ArmPkg/Drivers/TimerDxe/TimerDxe.c > @@ -300,10 +300,6 @@ TimerInterruptHandler ( > // > OriginalTPL = gBS->RaiseTPL (TPL_HIGH_LEVEL); > > - // Signal end of interrupt early to help avoid losing subsequent ticks > - // from long duration handlers > - gInterrupt->EndOfInterrupt (gInterrupt, Source); > - > // Check if the timer interrupt is active > if ((ArmGenericTimerGetTimerCtrlReg () ) & ARM_ARCH_TIMER_ISTATUS) { > > @@ -335,6 +331,11 @@ TimerInterruptHandler ( > ArmInstructionSynchronizationBarrier (); > } > > + // In an interrupt handler for the timers, it is important that software clears the interrupt > + // before deactivating the interrupt in the GIC. Otherwise the GIC will re-signal the same > + // interrupt again. > + gInterrupt->EndOfInterrupt (gInterrupt, Source); > + > gBS->RestoreTPL (OriginalTPL); > } > > -- > 2.17.1 > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#81780): https://edk2.groups.io/g/devel/message/81780 Mute This Topic: https://groups.io/mt/86248479/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
© 2016 - 2024 Red Hat, Inc.