diff --git a/OvmfPkg/8254TimerDxe/Timer.c b/OvmfPkg/8254TimerDxe/Timer.c index 67e22f5da1..fd1691beb3 100644 --- a/OvmfPkg/8254TimerDxe/Timer.c +++ b/OvmfPkg/8254TimerDxe/Timer.c @@ -79,8 +79,6 @@ TimerInterruptHandler ( OriginalTPL = gBS->RaiseTPL (TPL_HIGH_LEVEL); - mLegacy8259->EndOfInterrupt (mLegacy8259, Efi8259Irq0); - if (mTimerNotifyFunction != NULL) { // // @bug : This does not handle missed timer interrupts @@ -89,6 +87,9 @@ TimerInterruptHandler ( } gBS->RestoreTPL (OriginalTPL); + + DisableInterrupts (); + mLegacy8259->EndOfInterrupt (mLegacy8259, Efi8259Irq0); } /** diff --git a/OvmfPkg/XenTimerDxe/XenTimerDxe.c b/OvmfPkg/XenTimerDxe/XenTimerDxe.c index 9f9e04766c..0bec59382b 100644 --- a/OvmfPkg/XenTimerDxe/XenTimerDxe.c +++ b/OvmfPkg/XenTimerDxe/XenTimerDxe.c @@ -61,8 +61,6 @@ TimerInterruptHandler ( OriginalTPL = gBS->RaiseTPL (TPL_HIGH_LEVEL); - SendApicEoi(); - if (mTimerNotifyFunction != NULL) { // // @bug : This does not handle missed timer interrupts @@ -71,6 +69,9 @@ TimerInterruptHandler ( } gBS->RestoreTPL (OriginalTPL); + + DisableInterrupts (); + SendApicEoi (); } /**