[ipxe-devel] UEFI's TPL is not restored caused EXSi 6.5U3 boot failed with iPXE

JamesWang [王家明] JamesWang at ami.com.tw
Fri Jun 12 06:16:06 UTC 2020


We encountered a CPU exception problem while booting EXSi 6.5U3 with iPXE.  It is caused by system is running on TPL_CALLBACK level.

In Efi_timer.c: efi_currticks()
    if ( efi_shutdown_in_progress ) {
    } else {
        bs->RestoreTPL ( TPL_APPLICATION );
        bs->RaiseTPL ( TPL_CALLBACK );

It raised TPL to TPL_CALLBACK and never restored it.  NotifyFunction of EVT_SIGNAL_EXIT_BOOT_SERVICES will not be called because of that while booting.

The change of efi_currticks() causing this problem was from [efi] Run at TPL_CALLBACK to protect against UEFI timers<https://github.com/ipxe/ipxe/commit/c89a446cf09f30a121ae21d91f4a1aa071044084#diff-8abaf825db412e28b0c57b0f8947ed23>.

Can you find another way to work around the problem or restore TPL before ExitBootService?
CONFIDENTIAL INFORMATION : The information contained in this message may be confidential and proprietary to American Megatrends, Inc. This communication is intended to be read only by the individual or entity to whom it is addressed or by their designee. If the reader of this message is not the intended recipient, you are on notice that any distribution of this message, in any form, is strictly prohibited. Please promptly notify the sender by reply e-mail or by telephone at 886-2-2516-8887, and then delete or destroy all copies of the transmission.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ipxe.org/pipermail/ipxe-devel/attachments/20200612/b71bc12b/attachment-0001.htm>

More information about the ipxe-devel mailing list