[ipxe-devel] Option ROM causing hang during BIOS update

Ed Swierk eswierk at skyportsystems.com
Sat Mar 21 02:41:46 UTC 2015

I'm using iPXE to boot Linux on an Intel Xeon E5 v3 server (S2600WT)
in non-EFI legacy mode with an Intel 82599-based NIC (PCI device

After I build 808610fc.rom and flash it to the NIC, I can boot the
system, select iPXE as the boot device, and boot Linux just fine.

But when I try to update the server BIOS using Intel's iFlash32 tool
from the EFI shell, the update process gets stuck at 0%. I noticed
that if I press keys on the USB keyboard, it makes progress, and
manages to get all the way to 100% if I pound on the keyboard for a
minute or so. Then when I reboot the system, the BIOS tries to
actually apply the update, and at that point the system locks up hard,
and doesn't boot again until I re-update the BIOS with the NIC

While unplugging the NIC does work around the problem, I need to
support updating the BIOS without touching the hardware.

I tried commenting out various chunks of code in romprefix.S, and
found that only if I skip the "Copy self to option ROM space" section
does the BIOS update problem go away. (Of course, iPXE doesn't work in
that case.)

I also tried flashing option ROMs for the official Intel Boot Agent,
as well as the Plop Boot Manager, just for sake of comparison, and
neither one triggers the BIOS problem.

I've also used the exact same unmodified iPXE option ROM in an older
Intel server (S2600GL) and it works fine there.

So I very much suspect this is actually a bug in the new Intel server
BIOS. But I figure the likelihood of finding a workaround in iPXE is
much higher than getting Intel to fix their BIOS.

Any ideas what I should try next?


More information about the ipxe-devel mailing list