diff options
author | AKASHI Takahiro <takahiro.akashi@linaro.org> | 2017-04-03 02:23:55 (GMT) |
---|---|---|
committer | AKASHI Takahiro <takahiro.akashi@linaro.org> | 2017-06-08 09:39:29 (GMT) |
commit | 0bbb3d8a67d4282e5ccd24430c9f3c8955b7e689 (patch) | |
tree | bc952289b532ff4dbd62bb76072c4de5eb17e6f7 /include | |
parent | 3acb7bc37d56d5dc80112459c0d72c6be8bde3c9 (diff) | |
download | linux-0bbb3d8a67d4282e5ccd24430c9f3c8955b7e689.tar.xz |
memblock: add memblock_cap_memory_range()
Add memblock_cap_memory_range() which will remove all the memblock regions
except the memory range specified in the arguments. In addition, rework is
done on memblock_mem_limit_remove_map() to re-implement it using
memblock_cap_memory_range().
This function, like memblock_mem_limit_remove_map(), will not remove
memblocks with MEMMAP_NOMAP attribute as they may be mapped and accessed
later as "device memory."
See the commit a571d4eb55d8 ("mm/memblock.c: add new infrastructure to
address the mem limit issue").
This function is used, in a succeeding patch in the series of arm64 kdump
suuport, to limit the range of usable memory, or System RAM, on crash dump
kernel.
(Please note that "mem=" parameter is of little use for this purpose.)
Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Reviewed-by: Will Deacon <will.deacon@arm.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Dennis Chen <dennis.chen@arm.com>
Cc: linux-mm@kvack.org
Cc: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/memblock.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/memblock.h b/include/linux/memblock.h index 25e1ff6..7ad0b3a 100644 --- a/include/linux/memblock.h +++ b/include/linux/memblock.h @@ -334,6 +334,7 @@ phys_addr_t memblock_mem_size(unsigned long limit_pfn); phys_addr_t memblock_start_of_DRAM(void); phys_addr_t memblock_end_of_DRAM(void); void memblock_enforce_memory_limit(phys_addr_t memory_limit); +void memblock_cap_memory_range(phys_addr_t base, phys_addr_t size); void memblock_mem_limit_remove_map(phys_addr_t limit); bool memblock_is_memory(phys_addr_t addr); int memblock_is_map_memory(phys_addr_t addr); |