Re: [PATCH 36/40] autonuma: page_autonuma
From: Andrea Arcangeli
Date:  Thu Jul 12 2012 - 15:58:46 EST
On Mon, Jul 02, 2012 at 02:37:10AM -0400, Rik van Riel wrote:
>  > +fail:
>  > +	printk(KERN_CRIT "allocation of page_autonuma failed.\n");
>  > +	printk(KERN_CRIT "please try the 'noautonuma' boot option\n");
>  > +	panic("Out of memory");
>  > +}
> 
> The system can run just fine without autonuma.
> 
> Would it make sense to simply disable autonuma at this point,
> but to try continue running?
BTW, the same would apply to mm/page_cgroup.c, but I think the idea
here is that something serious went wrong. Workaround with noautonuma
boot option is enough.
> 
> > @@ -700,8 +780,14 @@ static void free_section_usemap(struct page *memmap, unsigned long *usemap)
> >   	 */
> >   	if (PageSlab(usemap_page)) {
> >   		kfree(usemap);
> > -		if (memmap)
> > +		if (memmap) {
> >   			__kfree_section_memmap(memmap, PAGES_PER_SECTION);
> > +			if (!autonuma_impossible())
> > +				__kfree_section_page_autonuma(page_autonuma,
> > +							      PAGES_PER_SECTION);
> > +			else
> > +				BUG_ON(page_autonuma);
> 
> VM_BUG_ON ?
> 
> > +		if (!autonuma_impossible()) {
> > +			struct page *page_autonuma_page;
> > +			page_autonuma_page = virt_to_page(page_autonuma);
> > +			free_map_bootmem(page_autonuma_page, nr_pages);
> > +		} else
> > +			BUG_ON(page_autonuma);
> 
> ditto
> 
> >   	pgdat_resize_unlock(pgdat,&flags);
> >   	if (ret<= 0) {
> > +		if (!autonuma_impossible())
> > +			__kfree_section_page_autonuma(page_autonuma, nr_pages);
> > +		else
> > +			BUG_ON(page_autonuma);
> 
> VM_BUG_ON ?
These only run at the very boot stage, so performance is irrelevant
and it's safer to keep them on.
The rest was corrected.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/