summaryrefslogtreecommitdiffstats
path: root/src/usr/route.c
diff options
context:
space:
mode:
authorMichael Brown2010-04-24 23:34:28 +0200
committerMichael Brown2010-04-25 02:50:46 +0200
commitc97079710f47e35cf4573f04ccc01c319f74530c (patch)
tree2a105c1f972433174635a9b31f599ed83015b3e7 /src/usr/route.c
parent[prefix] Use area at top of INT 15,88 memory map for temporary decompression (diff)
downloadipxe-c97079710f47e35cf4573f04ccc01c319f74530c.tar.gz
ipxe-c97079710f47e35cf4573f04ccc01c319f74530c.tar.xz
ipxe-c97079710f47e35cf4573f04ccc01c319f74530c.zip
[romprefix] Split PMM allocations for image source and decompression area
Some BIOSes (at least some AMI BIOSes) tend to refuse to allocate a single area large enough to hold both the iPXE image source and the temporary decompression area, despite promising a largest available PMM memory block of several megabytes. This causes ROM image shrinking to fail on these BIOSes, with undesirable consequences: other option ROMs may be disabled due to shortage of option ROM space, and the iPXE ROM may itself be corrupted by a further BIOS bug (again, observed on an AMI BIOS) which causes large ROMs to end up overlapping reserved areas of memory. This can potentially render a system unbootable via any means. Increase the chances of a successful PMM allocation by dropping the alignment requirement (which is redundant now that we can enable A20 from within the prefix); this allows us to reduce the allocation size from 2MB down to only the required size. Increase the chances still further by using two separate allocations: one to hold the image source (i.e. the copy of the ROM before being shrunk) and the other to act as the decompression area. This allows ROM image shrinking to take place even on systems that fail to allocate enough memory for the temporary decompression area. Improve the behaviour of iPXE in systems with multiple iPXE ROMs by sharing PMM allocations where possible. Image source areas can be shared with any iPXE ROMs with a matching build identifier, and the temporary decompression area can be shared with any iPXE ROMs with the same uncompressed size (rounded up to the nearest 128kB). Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/usr/route.c')
0 files changed, 0 insertions, 0 deletions