[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC 10/15] xen/arm: introduce construct_domU
On Thu, 14 Jun 2018, Julien Grall wrote: > Hi, > > On 13/06/18 23:15, Stefano Stabellini wrote: > > Similar to construct_dom0, construct_domU creates a barebone DomU guest. > > Default to 1 max vcpu and 64MB of memory if not specified otherwise. > > > > The device tree node passed as argument is compatible "xen,domU", see > > docs/misc/arm/device-tree/booting.txt. > > > > Allocate all vcpus on cpu0 initially. > > I don't think this comment is true. __construct_domain will allocate vCPUs in > cycle. I'll remove the comment > > > > Signed-off-by: Stefano Stabellini <stefanos@xxxxxxxxxx> > > --- > > xen/arch/arm/domain_build.c | 37 +++++++++++++++++++++++++++++++++++++ > > xen/include/asm-arm/setup.h | 2 ++ > > 2 files changed, 39 insertions(+) > > > > diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c > > index b31c563..02a7f94 100644 > > --- a/xen/arch/arm/domain_build.c > > +++ b/xen/arch/arm/domain_build.c > > @@ -2187,6 +2187,43 @@ int __init __construct_domain(struct domain *d, > > struct kernel_info *kinfo) > > return 0; > > } > > +int __init construct_domU(struct domain *d, struct dt_device_node *node) > > +{ > > + struct kernel_info kinfo = {}; > > + int rc; > > + const char *cpus = NULL, *mem = NULL; > > + > > + printk("*** LOADING DOMU ***\n"); > > + > > + d->max_vcpus = 1; > > + rc = dt_property_read_string(node, "cpus", &cpus); > > + if ( !rc ) > > + d->max_vcpus = simple_strtoul(cpus, &cpus, 0); > > + > > + kinfo.unassigned_mem = MB(64); > > + rc = dt_property_read_string(node, "mem", &mem); > > + if ( !rc ) > > + kinfo.unassigned_mem = parse_size_and_unit(mem, &mem); > > + > > + d->vcpu = xzalloc_array(struct vcpu *, d->max_vcpus); > > + if ( !d->vcpu ) > > + return -ENOMEM;; > > + if ( alloc_vcpu(d, 0, 0) == NULL ) > > + return -ENOMEM; > > + d->max_pages = ~0U; > > + > > + kinfo.d = d; > > + > > + rc = kernel_probe_domU(&kinfo, node); > > + if ( rc < 0 ) > > + return rc; > > + > > + d->arch.type = kinfo.type; > > + allocate_memory(d, &kinfo); > > allocate_memory() will allocate direct mapped memory but you impose a static > memory layout for the guest. Both are not going to work very well together. > > So you probably want to extend allocate_memory to support allocating memory > for a given region. Yes, I'll extend allocate_memory to respect the current domU memory layout. > > + > > + return __construct_domain(d, &kinfo); > > +} > > + > > int __init construct_dom0(struct domain *d) > > { > > struct kernel_info kinfo = {}; > > diff --git a/xen/include/asm-arm/setup.h b/xen/include/asm-arm/setup.h > > index 903782f..e9f9905 100644 > > --- a/xen/include/asm-arm/setup.h > > +++ b/xen/include/asm-arm/setup.h > > @@ -2,6 +2,7 @@ > > #define __ARM_SETUP_H_ > > #include <public/version.h> > > +#include <xen/device_tree.h> > > #define MIN_FDT_ALIGN 8 > > #define MAX_FDT_SIZE SZ_2M > > @@ -71,6 +72,7 @@ void acpi_create_efi_mmap_table(struct domain *d, > > int acpi_make_efi_nodes(void *fdt, struct membank tbl_add[]); > > int construct_dom0(struct domain *d); > > +int construct_domU(struct domain *d, struct dt_device_node *node); > > void discard_initial_modules(void); > > void dt_unreserved_regions(paddr_t s, paddr_t e, _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |