diff options
author | AKASHI Takahiro <takahiro.akashi@linaro.org> | 2017-04-03 04:23:55 +0200 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2017-04-05 19:26:50 +0200 |
commit | c9ca9b4e2198a4dbeb83739460d4a7ff9ffed24f (patch) | |
tree | 4056f368200a8ccc8e04d953e372543d9f979646 /include | |
parent | memblock: add memblock_clear_nomap() (diff) | |
download | linux-c9ca9b4e2198a4dbeb83739460d4a7ff9ffed24f.tar.xz linux-c9ca9b4e2198a4dbeb83739460d4a7ff9ffed24f.zip |
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 e82daffcfc44..4ce24a376262 100644 --- a/include/linux/memblock.h +++ b/include/linux/memblock.h @@ -336,6 +336,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); |