Re: [PATCH repost] mm,x86: remove debug_pagealloc_enabled

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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;

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]