iPXE - Open Source Boot Firmware

[prefix] Add .hrom prefix for a ROM that loads high under PCI3 without PMM
authorJoshua Oreman <oremanj@rwcr.net>
Tue, 6 Oct 2009 20:12:22 +0000 (16:12 -0400)
committerMarty Connor <mdc@etherboot.org>
Thu, 14 Jan 2010 15:56:08 +0000 (10:56 -0500)
commit5736f5eb329cf9904687915194bd2005ee531064
tree8c9a1fa1b8e483f339a7b1396bf6be7acb614421
parent57faa48f3b44bf694ce455b2c8b7b957c3e39ea4
[prefix] Add .hrom prefix for a ROM that loads high under PCI3 without PMM

gPXE currently takes advantage of the feature of PCI3.0 that allows
option ROMs to relocate the bulk of their code to high memory and so
take up only a small amount of space in the option ROM area. Currently,
the relocation can only take place if the BIOS's implementation of PMM
can be made to return blocks aligned to an even megabyte, because of
the A20 gate. AMI BIOSes, in particular, will not return allocations
that gPXE can use.

Ameliorate the situation somewhat by adding a prefix, .hrom, that works
identically to .rom except in the case that PMM allocation fails. Where
.rom would give up and place itself entirely in option ROM space, .hrom
moves to a block (assumed free) at HIGHMEM_LOADPOINT = 4MB. This allows
for the use of larger gPXE ROMs than would otherwise be possible.

Because there is no way to check that the area at HIGHMEM_LOADPOINT is
really free, other devices using that memory during the boot process
will cause failure for gPXE, the other device, or both. In practice
such conflicts will likely not occur, but this prefix should still be
considered EXPERIMENTAL.

Signed-off-by: Marty Connor <mdc@etherboot.org>
src/Makefile.housekeeping
src/arch/i386/Makefile.pcbios
src/arch/i386/prefix/hromprefix.S [new file with mode: 0644]
src/arch/i386/prefix/romprefix.S