x86: fix spontaneous reboot with allyesconfig bzImage
authorIngo Molnar <mingo@elte.hu>
Thu, 21 Feb 2008 10:04:11 +0000 (11:04 +0100)
committerIngo Molnar <mingo@elte.hu>
Tue, 26 Feb 2008 11:55:56 +0000 (12:55 +0100)
commit88f3aec7afd9ae3e6f6d221801996b69aad1e3a4
tree676a32c7bd248a15f2926bc6dcd03ace4971d442
parent3b57bc461fd5019aef4cfc77d4faf56ebe95449c
x86: fix spontaneous reboot with allyesconfig bzImage

recently the 64-bit allyesconfig bzImage kernel started spontaneously
rebooting during early bootup.

after a few fun hours spent with early init debugging, it turns out
that we've got this rather annoying limit on the size of the kernel
image:

      #define KERNEL_TEXT_SIZE  (40*1024*1024)

which limit my vmlinux just happened to pass:

       text           data       bss        dec       hex   filename
   29703744        4222751   8646224   42572719   2899baf   vmlinux

40 MB is 42572719 bytes, so my vmlinux was just 1.5% above this limit :-/

So it happily crashed right in head_64.S, which - as we all know - is
the most debuggable code in the whole architecture ;-)

So increase the limit to allow an up to 128MB kernel image to be mapped.
(should anyone be that crazy or lazy)

We have a full 4K of pagetable (level2_kernel_pgt) allocated for these
mappings already, so there's no RAM overhead and the limit was rather
pointless and arbitrary.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/head_64.S
arch/x86/mm/init_64.c
include/asm-x86/page_64.h