aboutsummaryrefslogtreecommitdiffstats
path: root/xen
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@citrix.com>2012-12-19 14:16:25 +0000
committerIan Campbell <ian.campbell@citrix.com>2012-12-19 14:16:25 +0000
commit6d31f5491a3e8192681163dd67ab8a39b7b34fac (patch)
treed67cc5b8e319eac57449879277aaaf2cd4aaa801 /xen
parentcce935c61dae8b0624be63f0d0aab998266be620 (diff)
downloadxen-6d31f5491a3e8192681163dd67ab8a39b7b34fac.tar.gz
xen-6d31f5491a3e8192681163dd67ab8a39b7b34fac.tar.bz2
xen-6d31f5491a3e8192681163dd67ab8a39b7b34fac.zip
xen: arm: initialise dom_{xen,io,cow}
Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Tim Deegan <tim@xen.org> Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Committed-by: Ian Campbell <ian.campbell@citrix.com>
Diffstat (limited to 'xen')
-rw-r--r--xen/arch/arm/dummy.S1
-rw-r--r--xen/arch/arm/mm.c28
-rw-r--r--xen/arch/arm/setup.c2
-rw-r--r--xen/include/asm-arm/setup.h2
4 files changed, 31 insertions, 2 deletions
diff --git a/xen/arch/arm/dummy.S b/xen/arch/arm/dummy.S
index 74e2d6de2f..120ab97ca7 100644
--- a/xen/arch/arm/dummy.S
+++ b/xen/arch/arm/dummy.S
@@ -10,6 +10,5 @@ x: mov pc, lr
DUMMY(nr_irqs_gsi);
/* Other */
-DUMMY(dom_cow);
DUMMY(send_timer_event);
DUMMY(share_xen_page_with_privileged_guests);
diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
index 718f32d2e8..d9c1ff71e3 100644
--- a/xen/arch/arm/mm.c
+++ b/xen/arch/arm/mm.c
@@ -30,12 +30,13 @@
#include <xen/event.h>
#include <xen/guest_access.h>
#include <xen/domain_page.h>
+#include <xen/err.h>
#include <asm/page.h>
#include <asm/current.h>
#include <public/memory.h>
#include <xen/sched.h>
-struct domain *dom_xen, *dom_io;
+struct domain *dom_xen, *dom_io, *dom_cow;
/* Static start-of-day pagetables that we use before the allocators are up */
lpae_t xen_pgtable[LPAE_ENTRIES] __attribute__((__aligned__(4096)));
@@ -206,6 +207,31 @@ void unmap_domain_page(const void *va)
local_irq_restore(flags);
}
+void __init arch_init_memory(void)
+{
+ /*
+ * Initialise our DOMID_XEN domain.
+ * Any Xen-heap pages that we will allow to be mapped will have
+ * their domain field set to dom_xen.
+ */
+ dom_xen = domain_create(DOMID_XEN, DOMCRF_dummy, 0);
+ BUG_ON(IS_ERR(dom_xen));
+
+ /*
+ * Initialise our DOMID_IO domain.
+ * This domain owns I/O pages that are within the range of the page_info
+ * array. Mappings occur at the priv of the caller.
+ */
+ dom_io = domain_create(DOMID_IO, DOMCRF_dummy, 0);
+ BUG_ON(IS_ERR(dom_io));
+
+ /*
+ * Initialise our COW domain.
+ * This domain owns sharable pages.
+ */
+ dom_cow = domain_create(DOMID_COW, DOMCRF_dummy, 0);
+ BUG_ON(IS_ERR(dom_cow));
+}
/* Boot-time pagetable setup.
* Changes here may need matching changes in head.S */
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 7b0a0f61e1..bbee051c1b 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -265,6 +265,8 @@ void __init start_xen(unsigned long boot_phys_offset,
rcu_init();
+ arch_init_memory();
+
local_irq_enable();
smp_prepare_cpus(cpus);
diff --git a/xen/include/asm-arm/setup.h b/xen/include/asm-arm/setup.h
index 8769f66cda..5c843341db 100644
--- a/xen/include/asm-arm/setup.h
+++ b/xen/include/asm-arm/setup.h
@@ -3,6 +3,8 @@
#include <public/version.h>
+void arch_init_memory(void);
+
void copy_from_paddr(void *dst, paddr_t paddr, unsigned long len, int attrindx);
void arch_get_xen_caps(xen_capabilities_info_t *info);