diff options
author | Hao Wu <hao.a.wu@intel.com> | 2018-03-19 15:02:59 +0800 |
---|---|---|
committer | Hao Wu <hao.a.wu@intel.com> | 2018-03-20 15:54:15 +0800 |
commit | bce776a5b695b5bf1f063f5417e48c56b43b88a7 (patch) | |
tree | 76e193b5aec93b153e6a0aea810116c1bd977371 /BaseTools/Source/Python/Workspace/InfBuildData.py | |
parent | a7bbe9d20ba2df35e545bf9c8eec348d9c5f1b93 (diff) | |
download | edk2-bce776a5b695b5bf1f063f5417e48c56b43b88a7.tar.gz edk2-bce776a5b695b5bf1f063f5417e48c56b43b88a7.tar.bz2 edk2-bce776a5b695b5bf1f063f5417e48c56b43b88a7.zip |
MdeModulePkg/DxeMain: Fix BSP interrupts reenabled in ExitBootServices
Within function CoreExitBootServices(), this commit will move the call
of:
MemoryProtectionExitBootServicesCallback();
before:
SaveAndSetDebugTimerInterrupt (FALSE);
and
gCpu->DisableInterrupt (gCpu);
The reason is that, within MemoryProtectionExitBootServicesCallback(),
APIs like RaiseTpl and RestoreTpl maybe called. An example will be:
DebugLib (using PeiDxeDebugLibReportStatusCode instance)
|
v
ReportStatusCodeLib (using DxeReportStatusCodeLib instance)
|
v
Raise/RestoreTpl
The call of Raise/RestoreTpl APIs will re-enable BSP interrupts. Hence,
this commit refine the calling sequence to ensure BSP interrupts before
leaving CoreExitBootServices().
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Diffstat (limited to 'BaseTools/Source/Python/Workspace/InfBuildData.py')
0 files changed, 0 insertions, 0 deletions