<p>This resolves a case where my system would hang on the UEFI call to StartImage.</p>
<p>When a PCI NIC gets probed successfully, it calls register_netdev() which in turn uses the least significant bits of the MAC to seed the random number generator. This calls into random() which uses currticks() for the initial seed. On EFI builds, this restores the TPL level to TPL_APPLICATION to allow tick events to fire, and then raises it back to TPL_CALLBACK. Not matching calls to RaiseTPL with calls to RestoreTPL causes undefined behavior, in this case a system hang. Adding the matching calls around pci_probe resolves this issue.</p>
<hr>
<h4>You can view, comment on, or merge this pull request online at:</h4>
<p> <a href='https://github.com/ipxe/ipxe/pull/70'>https://github.com/ipxe/ipxe/pull/70</a></p>
<h4>Commit Summary</h4>
<ul>
<li>[efi_pci] Elevate TPL around pci_probe</li>
</ul>
<h4>File Changes</h4>
<ul>
<li>
<strong>M</strong>
<a href="https://github.com/ipxe/ipxe/pull/70/files#diff-0">src/interface/efi/efi_pci.c</a>
(3)
</li>
</ul>
<h4>Patch Links:</h4>
<ul>
<li><a href='https://github.com/ipxe/ipxe/pull/70.patch'>https://github.com/ipxe/ipxe/pull/70.patch</a></li>
<li><a href='https://github.com/ipxe/ipxe/pull/70.diff'>https://github.com/ipxe/ipxe/pull/70.diff</a></li>
</ul>
<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/ipxe/ipxe/pull/70">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AArTVHYxrS-2vex39aKJsny8_38hGQgAks5teX06gaJpZM4SrHug">mute the thread</a>.<img src="https://github.com/notifications/beacon/AArTVNwvWaLb8Ck374-blx8SWo8Vxmo0ks5teX06gaJpZM4SrHug.gif" height="1" width="1" alt="" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
<link itemprop="url" href="https://github.com/ipxe/ipxe/pull/70"></link>
<meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>
<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/ipxe/ipxe","title":"ipxe/ipxe","subtitle":"GitHub repository","main_image_url":"https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/ipxe/ipxe"}},"updates":{"snippets":[{"icon":"DESCRIPTION","message":"[efi_pci] Elevate TPL around pci_probe (#70)"}],"action":{"name":"View Pull Request","url":"https://github.com/ipxe/ipxe/pull/70"}}}</script>