From: H. Peter Anvin Date: Tue, 29 Jan 2013 22:59:09 +0000 (-0800) Subject: Merge remote-tracking branch 'origin/x86/boot' into x86/mm2 X-Git-Tag: v3.9-rc1~105^2~45 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=de65d816aa44f9ddd79861ae21d75010cc1fd003;p=platform%2Fkernel%2Flinux-stable.git Merge remote-tracking branch 'origin/x86/boot' into x86/mm2 Coming patches to x86/mm2 require the changes and advanced baseline in x86/boot. Resolved Conflicts: arch/x86/kernel/setup.c mm/nobootmem.c Signed-off-by: H. Peter Anvin --- de65d816aa44f9ddd79861ae21d75010cc1fd003 diff --cc arch/x86/kernel/setup.c index 6d29d1f,00f6c14..2681937 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@@ -919,8 -986,36 +993,10 @@@ void __init setup_arch(char **cmdline_p setup_real_mode(); + trim_platform_memory_ranges(); + - init_gbpages(); + init_mem_mapping(); - /* max_pfn_mapped is updated here */ - max_low_pfn_mapped = init_memory_mapping(0, max_low_pfn< max_low_pfn) { - int i; - unsigned long start, end; - unsigned long start_pfn, end_pfn; - - for_each_mem_pfn_range(i, MAX_NUMNODES, &start_pfn, &end_pfn, - NULL) { - - end = PFN_PHYS(end_pfn); - if (end <= (1UL<<32)) - continue; - - start = PFN_PHYS(start_pfn); - max_pfn_mapped = init_memory_mapping( - max((1UL<<32), start), end); - } - - /* can we preseve max_low_pfn ?*/ - max_low_pfn = max_pfn; - } -#endif memblock.current_limit = get_max_mapped(); dma_contiguous_reserve(0); diff --cc mm/nobootmem.c index ecc2f13,b8294fc..03d152a --- a/mm/nobootmem.c +++ b/mm/nobootmem.c @@@ -137,7 -137,38 +137,23 @@@ unsigned long __init free_low_memory_co return count; } + static void reset_node_lowmem_managed_pages(pg_data_t *pgdat) + { + struct zone *z; + + /* + * In free_area_init_core(), highmem zone's managed_pages is set to + * present_pages, and bootmem allocator doesn't allocate from highmem + * zones. So there's no need to recalculate managed_pages because all + * highmem pages will be managed by the buddy system. Here highmem + * zone also includes highmem movable zone. + */ + for (z = pgdat->node_zones; z < pgdat->node_zones + MAX_NR_ZONES; z++) + if (!is_highmem(z)) + z->managed_pages = 0; + } + /** - * free_all_bootmem_node - release a node's free pages to the buddy allocator - * @pgdat: node to be released - * - * Returns the number of pages actually released. - */ -unsigned long __init free_all_bootmem_node(pg_data_t *pgdat) -{ - register_page_bootmem_info_node(pgdat); - reset_node_lowmem_managed_pages(pgdat); - - /* free_low_memory_core_early(MAX_NUMNODES) will be called later */ - return 0; -} - -/** * free_all_bootmem - release free pages to the buddy allocator * * Returns the number of pages actually released.