[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC v1 66/74] xen/shim: allow DomU to have as many vcpus as available
>>> On 04.01.18 at 14:06, <wei.liu2@xxxxxxxxxx> wrote: > From: Roger Pau Monne <roger.pau@xxxxxxxxxx> > > Since the shim VCPUOP_{up/down} hypercall is wired to the plug/unplug > of CPUs to the shim itself, start the shim DomU with only the BSP > online, and let the guest bring up other CPUs as it needs them. > > Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> What are the ramifications of not making this change? Shouldn't the shim's pCPU count (pCPU as viewed from its own perspective) simply always match its client's vCPU count? > @@ -153,6 +162,23 @@ unsigned int __init dom0_max_vcpus(void) > unsigned int i, max_vcpus, limit; > nodeid_t node; > > + if ( pv_shim ) > + { > + nodes_setall(dom0_nodes); > + > + /* > + * When booting in shim mode APs are not started until the guest > brings > + * other vCPUs up. > + */ > + cpumask_set_cpu(0, &dom0_cpus); > + > + /* > + * On PV shim mode allow the guest to have as many CPUs as available. > + */ Style (single line comment). > --- a/xen/arch/x86/pv/dom0_build.c > +++ b/xen/arch/x86/pv/dom0_build.c > @@ -695,7 +695,8 @@ int __init dom0_construct_pv(struct domain *d, > for ( i = 0; i < XEN_LEGACY_MAX_VCPUS; i++ ) > shared_info(d, vcpu_info[i].evtchn_upcall_mask) = 1; > > - printk("Dom0 has maximum %u VCPUs\n", d->max_vcpus); > + printk("%s has maximum %u VCPUs\n", pv_shim ? "DomU" : "Dom0", "Dom%c ..." perhaps? > --- a/xen/arch/x86/setup.c > +++ b/xen/arch/x86/setup.c > @@ -1580,20 +1580,28 @@ void __init noreturn __start_xen(unsigned long mbi_p) > > do_presmp_initcalls(); > > - for_each_present_cpu ( i ) > + if ( !pv_shim ) > { > - /* Set up cpu_to_node[]. */ > - srat_detect_node(i); > - /* Set up node_to_cpumask based on cpu_to_node[]. */ > - numa_add_cpu(i); > - > - if ( (num_online_cpus() < max_cpus) && !cpu_online(i) ) > + for_each_present_cpu ( i ) > { > - int ret = cpu_up(i); > - if ( ret != 0 ) > - printk("Failed to bring up CPU %u (error %d)\n", i, ret); > + /* Set up cpu_to_node[]. */ > + srat_detect_node(i); > + /* Set up node_to_cpumask based on cpu_to_node[]. */ > + numa_add_cpu(i); > + > + if ( (num_online_cpus() < max_cpus) && !cpu_online(i) ) > + { > + int ret = cpu_up(i); > + if ( ret != 0 ) > + printk("Failed to bring up CPU %u (error %d)\n", i, ret); > + } > } > } > + /* > + * NB: when running as a PV shim VCPUOP_up/down is wired to the shim > + * physical cpu_add/remove functions, so launch the guest with only > + * the BSP online and let it bring up the other CPUs as required. > + */ I think this comment would better go immediately ahead of the if() you introduce. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |