Branch: refs/heads/master
Home: https://github.com/tianocore/edk2
Commit: 239b50a863704f7960525799eda82de061c7c458
https://github.com/tianocore/edk2/commit/239b50a863704f7960525799eda82de061c7c458
Author: Igor Druzhinin <[email protected]>
Date: 2020-06-18 (Thu, 18 Jun 2020)
Changed paths:
M OvmfPkg/8254TimerDxe/Timer.c
M OvmfPkg/XenTimerDxe/XenTimerDxe.c
Log Message:
-----------
OvmfPkg: End timer interrupt later to avoid stack overflow under load
RestoreTPL called while at TPL_HIGH_LEVEL unconditionally enables
interrupts even if called in interrupt handler. That opens a window while
interrupt is not completely handled but another interrupt could be
accepted.
If a VM starts on a heavily loaded host hundreds of periodic timer
interrupts might be queued while vCPU is descheduled (the behavior is
typical for a Xen host). The next time vCPU is scheduled again all of them
get delivered back to back causing OVMF to accept each one without
finishing a previous one and cleaning up the stack. That quickly results
in stack overflow and a triple fault.
Fix it by postponing sending EOI until we finished processing the current
tick giving interrupt handler opportunity to clean up the stack before
accepting the next tick.
Signed-off-by: Igor Druzhinin <[email protected]>
Message-Id: <[email protected]>
Reviewed-by: Paolo Bonzini <[email protected]>
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2815
Acked-by: Laszlo Ersek <[email protected]>
[[email protected]: add BZ ref; rewrap msg to silence PatchCheck.py]
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits