Dear MdeModulePkg maintainer,
Please find the attached patch that fixed a severe defect in DxeCore.
Interrupts are expected to be disabled when calling CoreExitBootServices()
(see explicit call to 'gCpu->DisableInterrupt (gCpu)' in the function).
Calling ReportStatusCode functions re-enabled the interrupt through
CoreRestoreTpl():
-----
CoreRestoreTpl() {
(...)
//
// If lowering below HIGH_LEVEL, make sure
// interrupts are enabled
//
if (gEfiCurrentTpl < TPL_HIGH_LEVEL) {
CoreSetInterruptState (TRUE);
}
}
-----
The workaround is to switch the calls to always disable the CPU interrupts.
Another solution would be to change TPL Raise/Restore code to save the
state of the interrupts prior to call RaiseTpl.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <[email protected]>
Regards,
Olivier
MdeModulePkg-DxeCore-Fixed-CoreExitBootServices.patch
Description: Binary data
------------------------------------------------------------------------------ CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________ edk2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-devel
