[ipxe-devel] Windows having problems parsing iBFT from recent iPXE versions?

Michael Brown mcb30 at ipxe.org
Wed Oct 29 15:53:46 UTC 2014


On 29/10/14 15:01, Floris Bos wrote:
>> Have you tried performing a bisection (http://ipxe.org/howto/bisect)
>> to identify the commit causing the problem?
>
> Problems seem to start after this commit:
>
> [tcp] Do not send RST for unrecognised connections

That commit doesn't touch the iBFT in any way, suggesting that the 
underlying problem is a build artefact rather than a code change.

>>> With undionly.kkpxe compiled today from git sources:
>>
>> Another possibility is that a small increase in code or data size has
>> pushed the iBFT below the 512kB boundary.  Try with undionly.kpxe
>> instead (which should reclaim more base memory); this may work.
>
> Does not work with .kpxe either.
>
> And perhaps we should test for location of iBFT in iPXE, and print out a
> big fat warning -if not fatal error- when it is under 512 KB?

A problem is that the SAN-booted OS is likely to clear the screen almost 
immediately, meaning that the warning message would not be seen in practice.

You can get some diagnostic information from the information printed by 
pxeprefix.S when undionly.[k]kpxe starts up.  In particular, the "XXXkB 
free base memory after PXE unload" will show you how much memory was 
free before iPXE claimed its base memory segments.

A typical iPXE build will use around 14kB of base memory; you can find 
the exact amount by looking in the linker map file 
(bin/undionly.[k]kpxe.tmp.map) for the symbols _text16_memsz and 
_data16_memsz.

On my test VM, I get "625kB free base memory after PXE unload", meaning 
that iPXE will end up loaded at (625-14)=611kB, which is safely above 
the 512kB threshold.

> BTW, I noticed the Linux code -in addition to scanning memory- also
> seems to look in the RSDT ACPI table for a reference to the iBFT table.
> Is there any way for us to add a reference to our iBFT there?

I'm not aware of any mechanism which allows us to modify the RSDT on a 
BIOS system.  (UEFI does provide an InstallAcpiTable() method which we 
will use for SAN booting under UEFI, but this doesn't help us here.)

Michael



More information about the ipxe-devel mailing list