On Tue, Nov 20, 2012 at 11:31:38PM -0800, Yinghai Lu wrote: [..] > + /* avoid cross GB boundary */ > + align = real_mode->kernel_alignment; > + addr = locate_hole(info, size, align, 0x100000, -1, -1); > + if (addr == ULONG_MAX) > + die("can not load bzImage64"); > + /* same GB ? */ > + while ((addr >> 30) != ((addr + size - 1) >> 30)) { > + addr = locate_hole(info, size, align, 0x100000, > + round_down(addr + size - 1, (1UL<<30)), -1); > + if (addr == ULONG_MAX) > + die("can not load bzImage64"); > + } > + dbgprintf("Found kernel buffer at %lx size %lx\n", addr, size); Where does this limitation of not loading kernel across GB boundary come from? Vivek