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

Heinrich Schuchardt xypron.glpk at gmx.de
Sat Aug 26 17:09:15 UTC 2017


On 08/26/2017 07:00 PM, Michael Brown wrote:
> 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.

See https://github.com/xypron/u-boot-odroid-c2/tree/protocols
The relevant patches are enumerated in
https://github.com/xypron/u-boot-odroid-c2/blob/protocols/patch/patch-efi-next
They are applicable to the HEAD of
http://git.denx.de/u-boot.git

If you have no U-Boot based system you can also try it on x86 via QEMU.

I am happy to receive you feedback.

Regards

Heinrich

> 
>> 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
> 
>   http://ipxe.org/download#debug_builds
> 
> Michael
> 




More information about the ipxe-devel mailing list