]> xenbits.xensource.com Git - people/aperard/xen-arm.git/commitdiff
xen: arm: initialise dom_{xen,io,cow}
authorIan Campbell <ian.campbell@citrix.com>
Wed, 19 Dec 2012 14:16:25 +0000 (14:16 +0000)
committerIan Campbell <ian.campbell@citrix.com>
Wed, 19 Dec 2012 14:16:25 +0000 (14:16 +0000)
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>
xen/arch/arm/dummy.S
xen/arch/arm/mm.c
xen/arch/arm/setup.c
xen/include/asm-arm/setup.h

index 74e2d6de2f165832d4c3a2409589d508ebb3490a..120ab97ca7c1a58f49504647b384c8c7aea8858f 100644 (file)
@@ -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);
index 718f32d2e82a33ed345685ae9750b54c3e7cee8b..d9c1ff71e3f70fcf21f7078a7d283a3b02461448 100644 (file)
 #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 */
index 7b0a0f61e15e06519ac1ad4307e4c81005581322..bbee051c1b108457b5a280088039e054b3456416 100644 (file)
@@ -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);
index 8769f66cda0daf19f924bc93d592f99a24016051..5c843341db80bd70c0eae87e43f414dc6c2d6346 100644 (file)
@@ -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);