summaryrefslogtreecommitdiffstats
path: root/src/drivers/infiniband
diff options
context:
space:
mode:
authorMichael Brown2008-11-11 21:00:13 +0100
committerMichael Brown2008-11-11 21:00:13 +0100
commit2ca2607b1b29d7c567df7aeb5b769e85ec176fc7 (patch)
treec9ee1c9d4d97f0709d28a8f0c8555db21f19186d /src/drivers/infiniband
parent[linda] Add support for QLogic 7220-based Infiniband HCAs (diff)
downloadipxe-2ca2607b1b29d7c567df7aeb5b769e85ec176fc7.tar.gz
ipxe-2ca2607b1b29d7c567df7aeb5b769e85ec176fc7.tar.xz
ipxe-2ca2607b1b29d7c567df7aeb5b769e85ec176fc7.zip
[romprefix] Use smaller PMM allocations if possible
The only way that PMM allows us to request a block in a region with A20=0 is to ask for a block with an alignment of 2MB. Due to the PMM API design, the only way we can do this is to ask for a block with a size of 2MB. Unfortunately, some BIOSes will hit problems if we allocate a 2MB block. In particular, it may not be possible to enter the BIOS setup screen; the BIOS setup code attempts a PMM allocation, fails, and hangs the machine. We now try allocating only as much as we need via PMM. If the allocated block has A20=1, we free the allocated block, double the allocation size, and try again. Repeat until either we obtain a block with A20=0 or allocation fails. (This is guaranteed to terminate by the time we reach an allocation size of 2MB.)
Diffstat (limited to 'src/drivers/infiniband')
0 files changed, 0 insertions, 0 deletions