[lkml]   [2011]   [Jun]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    SubjectRe: immediately reboots/resets on EFI system
    Hi Matthew,

    2011/6/3 Matthew Garrett <>:
    > On Fri, Jun 03, 2011 at 04:26:27PM +0200, Jim Bos wrote:
    >> On 06/03/2011 03:33 PM, Matthew Garrett wrote:
    >> > ? You've got 143 boot services/code regions, which is more than I'd
    >> > tested against, so I'm unsure whether we're overflowing something here.
    >> >
    >> That's seems to be the only EFI patch in and I effectively
    >> removed by =not= applying (skipping) the parts of the patch to
    >> above 3 files.
    >> So yes removing "x86, efi: Retain boot service code until after
    >> switching to virtual mode" indeed fixes the problem for me.
    > Ok, thanks. I'll look into that. Might be best to drop it from stable
    > for the moment until I've made sure it works on machines with excessive
    > maps.

    Looking at your patch in

    I see:
    + memblock_x86_reserve_range(start, start + size, "EFI Boot");

    and to free it:
    + free_bootmem_late(start, size);

    Maybe this is causing the pager issue on 3.0, can you test this patch?

    efi: free memory with the correct call

    Commit 916f676f8dc introduced a call to free_bootmem_late while it
    reserves memory with memblock_x64_reserve_range
    Fix this call to silence the swapper BUGs:

    BUG: Bad page state in process swapper pfn:00000

    diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
    index 0d3a4fa..d2eefaa 100644
    --- a/arch/x86/platform/efi/efi.c
    +++ b/arch/x86/platform/efi/efi.c
    @@ -29,7 +29,6 @@
    #include <linux/kernel.h>
    #include <linux/init.h>
    #include <linux/efi.h>
    -#include <linux/bootmem.h>
    #include <linux/memblock.h>
    #include <linux/spinlock.h>
    #include <linux/uaccess.h>
    @@ -334,7 +333,7 @@ static void __init efi_free_boot_services(void)
    md->type != EFI_BOOT_SERVICES_DATA)

    - free_bootmem_late(start, size);
    + memblock_x86_free_memory_in_range(start, start + size);


     \ /
      Last update: 2011-06-06 17:05    [W:0.023 / U:4.824 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site