diff options
| author | Michael Brown | 2008-11-11 21:00:13 +0100 |
|---|---|---|
| committer | Michael Brown | 2008-11-11 21:00:13 +0100 |
| commit | 2ca2607b1b29d7c567df7aeb5b769e85ec176fc7 (patch) | |
| tree | c9ee1c9d4d97f0709d28a8f0c8555db21f19186d /src/drivers/infiniband | |
| parent | [linda] Add support for QLogic 7220-based Infiniband HCAs (diff) | |
| download | ipxe-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
