[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