diff options
Diffstat (limited to 'arch/arm/mm/init.c')
-rw-r--r-- | arch/arm/mm/init.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c index 659c75d808dc..92bba32d9230 100644 --- a/arch/arm/mm/init.c +++ b/arch/arm/mm/init.c | |||
@@ -322,7 +322,7 @@ void __init arm_memblock_init(const struct machine_desc *mdesc) | |||
322 | * reserve memory for DMA contigouos allocations, | 322 | * reserve memory for DMA contigouos allocations, |
323 | * must come from DMA area inside low memory | 323 | * must come from DMA area inside low memory |
324 | */ | 324 | */ |
325 | dma_contiguous_reserve(min(arm_dma_limit, arm_lowmem_limit)); | 325 | dma_contiguous_reserve(arm_dma_limit); |
326 | 326 | ||
327 | arm_memblock_steal_permitted = false; | 327 | arm_memblock_steal_permitted = false; |
328 | memblock_dump_all(); | 328 | memblock_dump_all(); |
@@ -636,6 +636,11 @@ static int keep_initrd; | |||
636 | void free_initrd_mem(unsigned long start, unsigned long end) | 636 | void free_initrd_mem(unsigned long start, unsigned long end) |
637 | { | 637 | { |
638 | if (!keep_initrd) { | 638 | if (!keep_initrd) { |
639 | if (start == initrd_start) | ||
640 | start = round_down(start, PAGE_SIZE); | ||
641 | if (end == initrd_end) | ||
642 | end = round_up(end, PAGE_SIZE); | ||
643 | |||
639 | poison_init_mem((void *)start, PAGE_ALIGN(end) - start); | 644 | poison_init_mem((void *)start, PAGE_ALIGN(end) - start); |
640 | free_reserved_area((void *)start, (void *)end, -1, "initrd"); | 645 | free_reserved_area((void *)start, (void *)end, -1, "initrd"); |
641 | } | 646 | } |