aboutsummaryrefslogtreecommitdiffstats
path: root/xen/common
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@citrix.com>2013-09-26 12:35:39 +0100
committerIan Campbell <ian.campbell@citrix.com>2013-09-26 16:21:39 +0100
commit93483b04e29f959bff29b8e3f707f5c72d8c42c0 (patch)
treea6287f47215b7880127e663844ab53b8aca4ff4b /xen/common
parentac5a04eda393de164a03148bfa0ed75b0f68e97d (diff)
downloadxen-93483b04e29f959bff29b8e3f707f5c72d8c42c0.tar.gz
xen-93483b04e29f959bff29b8e3f707f5c72d8c42c0.tar.bz2
xen-93483b04e29f959bff29b8e3f707f5c72d8c42c0.zip
xen/arm: Support dtb /memreserve/ regions
This requires a mapping of the DTB during setup_mm. Previously this was in the BOOT_MISC slot, which is clobbered by setup_pagetables. Split it out into its own slot which can be preserved. Also handle these regions as part of consider_modules() and when adding pages to the heaps to ensure we do not locate any part of Xen or the heaps over them. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Tim Deegan <tim@xen.org>
Diffstat (limited to 'xen/common')
-rw-r--r--xen/common/device_tree.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/xen/common/device_tree.c b/xen/common/device_tree.c
index 793e9a8056..4a1391cfc2 100644
--- a/xen/common/device_tree.c
+++ b/xen/common/device_tree.c
@@ -399,7 +399,7 @@ static void __init early_print_info(void)
{
struct dt_mem_info *mi = &early_info.mem;
struct dt_module_info *mods = &early_info.modules;
- int i;
+ int i, nr_rsvd;
for ( i = 0; i < mi->nr_banks; i++ )
early_printk("RAM: %"PRIpaddr" - %"PRIpaddr"\n",
@@ -412,6 +412,17 @@ static void __init early_print_info(void)
mods->module[i].start,
mods->module[i].start + mods->module[i].size,
mods->module[i].cmdline);
+ nr_rsvd = fdt_num_mem_rsv(device_tree_flattened);
+ for ( i = 0; i < nr_rsvd; i++ )
+ {
+ paddr_t s, e;
+ if ( fdt_get_mem_rsv(device_tree_flattened, i, &s, &e) < 0 )
+ continue;
+ /* fdt_get_mem_rsv returns length */
+ e += s;
+ early_printk(" RESVD[%d]: %"PRIpaddr" - %"PRIpaddr"\n",
+ i, s, e);
+ }
}
/**