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
http://ipxe.org/download#debug_builds
Michael
_______________________________________________
ipxe-devel mailing list
ipxe-devel@lists.ipxe.org
https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel