diff options
author | Ian Campbell <ian.campbell@citrix.com> | 2012-12-19 14:16:25 +0000 |
---|---|---|
committer | Ian Campbell <ian.campbell@citrix.com> | 2012-12-19 14:16:25 +0000 |
commit | 6d31f5491a3e8192681163dd67ab8a39b7b34fac (patch) | |
tree | d67cc5b8e319eac57449879277aaaf2cd4aaa801 /xen | |
parent | cce935c61dae8b0624be63f0d0aab998266be620 (diff) | |
download | xen-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.S | 1 | ||||
-rw-r--r-- | xen/arch/arm/mm.c | 28 | ||||
-rw-r--r-- | xen/arch/arm/setup.c | 2 | ||||
-rw-r--r-- | xen/include/asm-arm/setup.h | 2 |
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); |