]> git.proxmox.com Git - mirror_edk2.git/commit
UefiCpuPkg: Restore HpetTimer after CpuExceptionHandlerLib test
authorTan, Dun <dun.tan@intel.com>
Fri, 28 Oct 2022 03:51:18 +0000 (11:51 +0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Fri, 28 Oct 2022 09:02:46 +0000 (09:02 +0000)
commitd98efb468211ab508710eac91761238e1f5c1d51
treeec16e079ee170d4171bb550dffbd93ca17a20594
parent99338ef81ed6e48be57f71c01af85fbbdd7030ed
UefiCpuPkg: Restore HpetTimer after CpuExceptionHandlerLib test

Disable/Restore HpetTimer before and after running the Dxe
CpuExceptionHandlerLib unit test module. During the UnitTest, a
new Idt is initialized for the test. There is no handler for timer
intrrupt in this new idt. After the test module, HpetTimer does
not work any more since the comparator value register and main
counter value register for timer does not match. To fix this issue,
disable/restore HpetTimer before and after Unit Test if HpetTimer
driver has been dispatched. We don't need to send Apic Eoi in this
unit test module.When disabling timer, after RaiseTPL(), if there
is a pending timer interrupt, bit64 of Interrupt Request Register
(IRR) will be set to 1 to indicate there is a pending timer
interrupt. After RestoreTPL(), CPU will handle the pending
interrupt in IRR.Then TimerInterruptHandler calls SendApicEoi().

Signed-off-by: Dun Tan <dun.tan@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
Cc: Rahul Kumar <rahul1.kumar@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
UefiCpuPkg/Library/CpuExceptionHandlerLib/UnitTest/DxeCpuExceptionHandlerLibUnitTest.inf
UefiCpuPkg/Library/CpuExceptionHandlerLib/UnitTest/DxeCpuExceptionHandlerUnitTest.c