From 9e3fdb64c63565175fea16c257370af58c699d06 Mon Sep 17 00:00:00 2001 From: Zhang Jiejing Date: Mon, 9 Jul 2012 12:38:05 +0800 Subject: ENGR00216013-1 memblock: add memblock_end_of_DRAM_with_reserved() function. add a function to check the end address including reserved memory, this API can provide the top address of phy memory, it can be used to check if the phy memory is valild in some driver like VPU. Signed-off-by: Zhang Jiejing --- mm/memblock.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'mm') diff --git a/mm/memblock.c b/mm/memblock.c index a0562d1a6ad4..cf52324a365b 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -633,6 +633,24 @@ phys_addr_t __init_memblock memblock_end_of_DRAM(void) return (memblock.memory.regions[idx].base + memblock.memory.regions[idx].size); } +phys_addr_t __init_memblock memblock_end_of_DRAM_with_reserved(void) +{ + int idx = memblock.memory.cnt - 1; + phys_addr_t top_addr = 0; + int i; + + for (i = 0; i < memblock.reserved.cnt; i++) { + phys_addr_t t; + t = memblock.reserved.regions[i].base + + memblock.reserved.regions[i].size; + top_addr = max(t, top_addr); + } + + return max(top_addr, + memblock.memory.regions[idx].base + + memblock.memory.regions[idx].size); +} + /* You must call memblock_analyze() after this. */ void __init memblock_enforce_memory_limit(phys_addr_t memory_limit) { -- cgit v1.2.3