summaryrefslogtreecommitdiffstats
path: root/OvmfPkg/8254TimerDxe/Timer.c
Commit message (Collapse)AuthorAgeFilesLines
* OvmfPkg: End timer interrupt later to avoid stack overflow under loadIgor Druzhinin2020-06-181-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | 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 <igor.druzhinin@citrix.com> Message-Id: <1592275782-9369-1-git-send-email-igor.druzhinin@citrix.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2815 Acked-by: Laszlo Ersek <lersek@redhat.com> [lersek@redhat.com: add BZ ref; rewrap msg to silence PatchCheck.py]
* OvmfPkg: Copy 8254TimerDxe driver from PcAtChipsetPkgHao Wu2019-04-111-0/+401
REF:https://bugzilla.tianocore.org/show_bug.cgi?id=1496 This commit copies the exact 8254TimerDxe driver from PcAtChipsetPkg to OvmfPkg. Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: David Woodhouse <dwmw2@infradead.org> Cc: Ray Ni <ray.ni@intel.com> Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com>