• Jeremy Fitzhardinge's avatar
    x86: fix possible x86_64 and EFI regression · 0ad5bce7
    Jeremy Fitzhardinge authored
    Russ Anderson reported a boot crash with EFI and latest mainline:
    
     BIOS-e820: 00000000fffa0000 - 00000000fffac000 (reserved)
    Pid: 0, comm: swapper Not tainted 2.6.27-rc5-00100-gec0c15af-dirty #5
    
    Call Trace:
     [<ffffffff80849195>] early_idt_handler+0x55/0x69
     [<ffffffff80313e52>] __memcpy+0x12/0xa4
     [<ffffffff80859015>] efi_init+0xce/0x932
     [<ffffffff80869c83>] setup_early_serial8250_console+0x2d/0x36a
     [<ffffffff80238688>] __insert_resource+0x18/0xc8
     [<ffffffff8084f6de>] setup_arch+0x3a7/0x632
     [<ffffffff808499ed>] start_kernel+0x91/0x367
     [<ffffffff80849393>] x86_64_start_kernel+0xe3/0xe7
     [<ffffffff808492b0>] x86_64_start_kernel+0x0/0xe7
    
     RIP 0x10
    
    Such a crash is possible if the CPU in this system is a 64-bit
    processor which doesn't support NX (ie, old Intel P4 -based64-bit
    processors).
    
    Certainly, if we support such processors, then we should start with
    _PAGE_NX initially clear in __supported_pte_flags, and then set it once
    we've established that the processor does indeed support NX.  That will
    prevent early_ioremap - or anything else - from trying to set it.
    
    The simple fix is to simply call check_efer() earlier.
    Reported-by: default avatarRuss Anderson <rja@sgi.com>
    Signed-off-by: default avatarJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    0ad5bce7
setup.c 21.1 KB