<p></p>
<p>I can confirm same behavior, using bootx64.efi from esxi 7, the following produces the same behavior he reported:<br>
#!ipxe<br>
chain boot/efi/boot/bootx64.efi -c /path/to/boot.cfg also call efi_snp_release() of course.</p>
<blockquote>
<p>iPXE then invokes the OS kernel via StartImage(). At this point, the TPL is whatever TPL was recorded when iPXE was started, which should be TPL_APPLICATION.</p>
</blockquote>
<p>Well, iPXE code may still run at this point. In fact it explicitly does for iPXE booted ESXi boot loader. efi_download.c has three functions that may be called by the loaded efi executable. At the very least they call efi_download_start. I don't know the full flow of the code, but I am wondering if efi_download_start use of intf_init or xfer_open before calling efi_snp_claim causes a RaiseTPL before efi_snp_claim stores the old TPL causing it to erroneously 'save' iPXE induced TPL_CALLBACK as the 'old' TPL? I am a bit preoccupied today, but I'd be tempted to modify efi_download_start() to call claim earlier and call efi_snp_release() on error. I'm a bit rusty and I botched even a simple change so I'm not sure.</p>
<p>If my naive guess happens to be in the ballpark, it doesn't explain a <em>seeming</em> improvement in our Linux boot testing, where iPXE DL protocol is not used and we also were seeing errors on kernel trying to exit boot servicing that happened <em>sometimes</em>. However this was a little fuzzier so it may not be completely accurate.</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you commented.<br />Reply to this email directly, <a href="https://github.com/ipxe/ipxe/pull/113#issuecomment-651752678">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AAFNGVBJHTEDYRXEHOEPGQDRZHJE7ANCNFSM4NMSFYRA">unsubscribe</a>.<img src="https://github.com/notifications/beacon/AAFNGVH675ST7BKSX2Y4D3LRZHJE7A5CNFSM4NMSFYRKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOE3MPJZQ.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/ipxe/ipxe/pull/113#issuecomment-651752678",
"url": "https://github.com/ipxe/ipxe/pull/113#issuecomment-651752678",
"name": "View Pull Request"
},
"description": "View this Pull Request on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>