[ipxe-devel] [iPXE] efi: provide possibility to disable cpu_nap

Michael Brown mcb30 at ipxe.org
Sat Aug 26 17:00:27 UTC 2017

On 26/08/17 17:11, Heinrich Schuchardt wrote:
>> If you somehow have SetTimer() working without being interrupt driven,
>> then I am prepared to commit a patch to iPXE which avoids halting the
>> CPU if interrupts are disabled (at the CPU level).  You then just need
>> to ensure that U-Boot explicitly disables interrupts at the CPU level
>> (rather than leaving them enabled but with no active interrupt sources).
> I guess the information concerning config/nap.h could be added to
> http://ipxe.org/buildcfg/.

I don't plan to add it there.  It's a sufficiently ugly hack that I'd 
prefer people to have to find this mailing list thread if they want to 
use it; it's not something that should ever be documented as the 
"proper" way to fix it.

I still don't understand how you have SetTimer() working without any 
interrupts but, on the assumption that you have somehow made this work, 
I'm still happy to add code to iPXE that will skip halting the CPU if 
interrupts are disabled (at the CPU level, i.e. detectable with just a 
CPU instruction).

Your U-Boot UEFI implementation (which is apparently not using 
interrupts anyway) can then just choose to disable interrupts at the CPU 
level.  This would then cause iPXE to skip halting the CPU.  End users 
need never even know that there was a problem that had to be solved.

> With the cpu_nap adjustment iPXE is now working fine for me when
> starting from U-Boot. I have tested
> * dhcp
> * sanhook iSCSI-target
> * chain http-target
> * kernel http-target
> * boot (after calling kernel)
> * exit
> * reboot

Excellent!  When will your code be available for general use?  I'd like 
to try this out.

> I used a lot of DEBUG options to analyze what was going wrong in
> U-Boot's UEFI implementation. I could not find a documentation page on
> this

It's documented on the main download page, at



More information about the ipxe-devel mailing list