bzimage: Limit the maximum allocation address

There are restrictions on the addresses that we pass as arguments to
the kernel, mainly due to the way that the early page tables work. If
we allocate addresses above the first 1GB of memory the kernel will
fail to run. Cap key data structures at 0x3fffffff so that the kernel
can access them with its early page tables.

These limitations were discovered when running efilinux under Qemu
with multiple gigabytes of RAM.

Reported-by: Matthew Garrett <>
Signed-off-by: Matt Fleming <>
1 file changed