summaryrefslogtreecommitdiff
path: root/mm
diff options
context:
space:
mode:
authorZhang Jiejing <jiejing.zhang@freescale.com>2012-07-09 12:38:05 +0800
committerTerry Lv <r65388@freescale.com>2012-07-25 13:10:57 +0800
commitd38cbf2648d63295e8f0c0c24243ac72692e5f3a (patch)
tree0cd1d8be533b341bf14594e898c79da08cbee826 /mm
parente406119f203b40485ee9282bdad69cfbba5f30fe (diff)
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 <jiejing.zhang@freescale.com>
Diffstat (limited to 'mm')
-rw-r--r--mm/memblock.c18
1 files changed, 18 insertions, 0 deletions
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)
{