Messages in this thread Patch in this message |  | | | Date | Mon, 06 Jun 2011 17:01:58 +0200 | | From | Maarten Lankhorst <> | | Subject | Re: 2.6.39.1 immediately reboots/resets on EFI system |
| |
Hi Matthew,
2011/6/3 Matthew Garrett <mjg59@srcf.ucam.org>: > 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 2.6.39.1 and I effectively >> removed by =not= applying (skipping) the parts of the 2.6.39.1 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 2.6.39.1
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) continue; - free_bootmem_late(start, size); + memblock_x86_free_memory_in_range(start, start + size); } } -- ~Maarten
|  |