On Mon, Dec 05, 2011 at 12:06:56PM +0100, Ingo Molnar wrote: > > * Stanislaw Gruszka <sgruszka@xxxxxxxxxx> wrote: > > > When (no)bootmem finish operation, it pass pages to buddy allocator. > > Since debug_pagealloc_enabled is not set, we will do not protect pages, > > what is not what we want with CONFIG_DEBUG_PAGEALLOC=y. > > > > To fix remove debug_pagealloc_enabled. That variable was introduced by > > commit 12d6f21e "x86: do not PSE on CONFIG_DEBUG_PAGEALLOC=y" to get > > more CPA (change page attribude) code testing. But currently we have > > CONFIG_CPA_DEBUG, which test CPA. > > > > Signed-off-by: Stanislaw Gruszka <sgruszka@xxxxxxxxxx> > > Acked-by: Mel Gorman <mgorman@xxxxxxx> > > --- > > arch/x86/mm/pageattr.c | 6 ------ > > include/linux/mm.h | 10 ---------- > > init/main.c | 5 ----- > > mm/debug-pagealloc.c | 3 --- > > 4 files changed, 0 insertions(+), 24 deletions(-) > > I'm getting this boot crash with the patch applied: I'm sorry for breaking the boot. I tried to reproduce problem on my laptop, but failed. I plan to test patch with your config on some other machines. On the meantime can you test attached incremental patch and see if it workaround the crash? I suspect memblock reuse pages that it passed already to buddy allocator. Thanks Stanislaw
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c index 29f7c6d..0d0ddcb 100644 --- a/arch/x86/mm/init_32.c +++ b/arch/x86/mm/init_32.c @@ -760,6 +760,9 @@ void __init mem_init(void) #ifdef CONFIG_FLATMEM BUG_ON(!mem_map); #endif + + set_highmem_pages_init(); + /* this will put all low memory onto the freelists */ totalram_pages += free_all_bootmem(); @@ -771,8 +774,6 @@ void __init mem_init(void) if (page_is_ram(tmp) && PageReserved(pfn_to_page(tmp))) reservedpages++; - set_highmem_pages_init(); - codesize = (unsigned long) &_etext - (unsigned long) &_text; datasize = (unsigned long) &_edata - (unsigned long) &_etext; initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin;