[PATCH 4/8] memblock: introduce memblock_add_phys() and memblock_is_physmem()
From: Matt Fleming <hidden>
Date: 2015-01-06 09:24:28
Also in:
linux-efi, linux-mm, lkml
(Moar reviewers) On Mon, 22 Dec, at 07:08:38PM, Ard Biesheuvel wrote:
quoted hunk ↗ jump to hunk
This introduces the following functions: - memblock_add_phys(), that registers regions in the 'physmem' memblock map if CONFIG_HAVE_MEMBLOCK_PHYS_MAP is set; otherwise, it is a nop - memblock_is_physmem(), returns whether a physical address is classified as physical memory. Signed-off-by: Ard Biesheuvel <redacted> --- include/linux/memblock.h | 10 ++++++++++ mm/memblock.c | 15 +++++++++++++++ 2 files changed, 25 insertions(+)diff --git a/include/linux/memblock.h b/include/linux/memblock.h index e8cc45307f8f..d32fe838c6ca 100644 --- a/include/linux/memblock.h +++ b/include/linux/memblock.h@@ -365,6 +365,16 @@ static inline unsigned long memblock_region_reserved_end_pfn(const struct memblo #define __initdata_memblock #endif +#ifdef CONFIG_HAVE_MEMBLOCK_PHYS_MAP +int memblock_add_phys(phys_addr_t base, phys_addr_t size); +int memblock_is_physmem(phys_addr_t addr); +#else +static inline int memblock_add_phys(phys_addr_t base, phys_addr_t size) +{ + return 0; +} +#endif /* CONFIG_HAVE_MEMBLOCK_PHYS_MAP */ + #else static inline phys_addr_t memblock_alloc(phys_addr_t size, phys_addr_t align) {diff --git a/mm/memblock.c b/mm/memblock.c index c27353beb260..107aa5ee2d7b 100644 --- a/mm/memblock.c +++ b/mm/memblock.c@@ -586,6 +586,14 @@ int __init_memblock memblock_add(phys_addr_t base, phys_addr_t size) MAX_NUMNODES, 0); } +#ifdef CONFIG_HAVE_MEMBLOCK_PHYS_MAP +int __init_memblock memblock_add_phys(phys_addr_t base, phys_addr_t size) +{ + return memblock_add_range(&memblock.physmem, base, size, + MAX_NUMNODES, 0); +} +#endif + /** * memblock_isolate_range - isolate given range into disjoint memblocks * @type: memblock type to isolate range for@@ -1398,6 +1406,13 @@ int __init_memblock memblock_is_memory(phys_addr_t addr) return memblock_search(&memblock.memory, addr) != -1; } +#ifdef CONFIG_HAVE_MEMBLOCK_PHYS_MAP +int __init_memblock memblock_is_physmem(phys_addr_t addr) +{ + return memblock_search(&memblock.physmem, addr) != -1; +} +#endif + #ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP int __init_memblock memblock_search_pfn_nid(unsigned long pfn, unsigned long *start_pfn, unsigned long *end_pfn)-- 1.8.3.2 -- To unsubscribe from this list: send the line "unsubscribe linux-efi" in the body of a message to majordomo at vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
-- Matt Fleming, Intel Open Source Technology Center