[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen staging] xen/arm: implement construct_domU
commit 7aeb6335460d3e141c2f77769679293cbbcb5c4e Author: Stefano Stabellini <sstabellini@xxxxxxxxxx> AuthorDate: Tue Nov 13 09:49:32 2018 -0800 Commit: Julien Grall <julien.grall@xxxxxxx> CommitDate: Wed Nov 14 19:34:48 2018 +0000 xen/arm: implement construct_domU Similar to construct_dom0, construct_domU creates a barebone DomU guest. The device tree node passed as argument is compatible "xen,domain", see docs/misc/arm/device-tree/booting.txt. Remove #if 0 from allocate_memory as this patch will start using it. Signed-off-by: Stefano Stabellini <stefanos@xxxxxxxxxx> Acked-by: Julien Grall <julien.grall@xxxxxxx> --- xen/arch/arm/domain_build.c | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index 8ae15481ec..cf84de9971 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -4,6 +4,7 @@ #include <xen/mm.h> #include <xen/domain_page.h> #include <xen/sched.h> +#include <xen/sizes.h> #include <asm/irq.h> #include <asm/regs.h> #include <xen/errno.h> @@ -369,7 +370,6 @@ static void __init allocate_memory_11(struct domain *d, } } -#if 0 static bool __init allocate_bank_memory(struct domain *d, struct kernel_info *kinfo, gfn_t sgfn, @@ -468,7 +468,6 @@ fail: " %ldKB unallocated. Fix the VMs configurations.\n", (unsigned long)kinfo->unassigned_mem >> 10); } -#endif static int __init write_properties(struct domain *d, struct kernel_info *kinfo, const struct dt_device_node *node) @@ -2310,7 +2309,37 @@ static int __init construct_domain(struct domain *d, struct kernel_info *kinfo) static int __init construct_domU(struct domain *d, const struct dt_device_node *node) { - return -ENOSYS; + struct kernel_info kinfo = {}; + int rc; + u64 mem; + + rc = dt_property_read_u64(node, "memory", &mem); + if ( !rc ) + { + printk("Error building DomU: cannot read \"memory\" property\n"); + return -EINVAL; + } + kinfo.unassigned_mem = (paddr_t)mem * SZ_1K; + + printk("*** LOADING DOMU cpus=%u memory=%"PRIx64"KB ***\n", d->max_vcpus, mem); + + if ( vcpu_create(d, 0, 0) == NULL ) + return -ENOMEM; + d->max_pages = ~0U; + + kinfo.d = d; + + rc = kernel_probe(&kinfo, node); + if ( rc < 0 ) + return rc; + +#ifdef CONFIG_ARM_64 + /* type must be set before allocate memory */ + d->arch.type = kinfo.type; +#endif + allocate_memory(d, &kinfo); + + return construct_domain(d, &kinfo); } void __init create_domUs(void) -- generated by git-patchbot for /home/xen/git/xen.git#staging _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |