Loading arch/arm/mm/init.c +16 −9 Original line number Diff line number Diff line Loading @@ -192,11 +192,11 @@ static void __init arm_bootmem_init(struct meminfo *mi, } } static void __init arm_bootmem_free(struct meminfo *mi, unsigned long min, unsigned long max_low, unsigned long max_high) static void __init arm_bootmem_free(unsigned long min, unsigned long max_low, unsigned long max_high) { unsigned long zone_size[MAX_NR_ZONES], zhole_size[MAX_NR_ZONES]; int i; struct memblock_region *reg; /* * initialise the zones. Loading @@ -218,13 +218,20 @@ static void __init arm_bootmem_free(struct meminfo *mi, unsigned long min, * holes = node_size - sum(bank_sizes) */ memcpy(zhole_size, zone_size, sizeof(zhole_size)); for_each_bank(i, mi) { int idx = 0; for_each_memblock(memory, reg) { unsigned long start = memblock_region_memory_base_pfn(reg); unsigned long end = memblock_region_memory_end_pfn(reg); if (start < max_low) { unsigned long low_end = min(end, max_low); zhole_size[0] -= low_end - start; } #ifdef CONFIG_HIGHMEM if (mi->bank[i].highmem) idx = ZONE_HIGHMEM; if (end > max_low) { unsigned long high_start = max(start, max_low); zhole_size[ZONE_HIGHMEM] -= end - high_start; } #endif zhole_size[idx] -= bank_pfn_size(&mi->bank[i]); } /* Loading Loading @@ -327,7 +334,7 @@ void __init bootmem_init(void) * the sparse mem_map arrays initialized by sparse_init() * for memmap_init_zone(), otherwise all PFNs are invalid. */ arm_bootmem_free(mi, min, max_low, max_high); arm_bootmem_free(min, max_low, max_high); high_memory = __va((max_low << PAGE_SHIFT) - 1) + 1; Loading Loading
arch/arm/mm/init.c +16 −9 Original line number Diff line number Diff line Loading @@ -192,11 +192,11 @@ static void __init arm_bootmem_init(struct meminfo *mi, } } static void __init arm_bootmem_free(struct meminfo *mi, unsigned long min, unsigned long max_low, unsigned long max_high) static void __init arm_bootmem_free(unsigned long min, unsigned long max_low, unsigned long max_high) { unsigned long zone_size[MAX_NR_ZONES], zhole_size[MAX_NR_ZONES]; int i; struct memblock_region *reg; /* * initialise the zones. Loading @@ -218,13 +218,20 @@ static void __init arm_bootmem_free(struct meminfo *mi, unsigned long min, * holes = node_size - sum(bank_sizes) */ memcpy(zhole_size, zone_size, sizeof(zhole_size)); for_each_bank(i, mi) { int idx = 0; for_each_memblock(memory, reg) { unsigned long start = memblock_region_memory_base_pfn(reg); unsigned long end = memblock_region_memory_end_pfn(reg); if (start < max_low) { unsigned long low_end = min(end, max_low); zhole_size[0] -= low_end - start; } #ifdef CONFIG_HIGHMEM if (mi->bank[i].highmem) idx = ZONE_HIGHMEM; if (end > max_low) { unsigned long high_start = max(start, max_low); zhole_size[ZONE_HIGHMEM] -= end - high_start; } #endif zhole_size[idx] -= bank_pfn_size(&mi->bank[i]); } /* Loading Loading @@ -327,7 +334,7 @@ void __init bootmem_init(void) * the sparse mem_map arrays initialized by sparse_init() * for memmap_init_zone(), otherwise all PFNs are invalid. */ arm_bootmem_free(mi, min, max_low, max_high); arm_bootmem_free(min, max_low, max_high); high_memory = __va((max_low << PAGE_SHIFT) - 1) + 1; Loading