From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [libvirt] [Xen-devel] [PATCH] libxl: Correctly initialize vcpu bitmap Date: Mon, 22 Jul 2013 15:39:59 -0400 Message-ID: <20130722193959.GQ30300@phenom.dumpdata.com> References: <1374490265-2019-1-git-send-email-stefan.bader@canonical.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: <1374490265-2019-1-git-send-email-stefan.bader@canonical.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com To: Stefan Bader Cc: libvir-list@redhat.com, xen-devel@lists.xensource.com, Ian Campbell List-Id: xen-devel@lists.xenproject.org On Mon, Jul 22, 2013 at 12:51:05PM +0200, Stefan Bader wrote: > This fixes the basic setup but there is likely more to do if things > like manual CPU hirarchy (nodes, cores, threads) to be working. > > Cross-posting to xen-devel to make sure I am doing things correctly. > > -Stefan > > > >From 1ec5e7ea0d3498b9f61b83e8aed87cc3cae106de Mon Sep 17 00:00:00 2001 > From: Stefan Bader > Date: Fri, 19 Jul 2013 15:20:00 +0200 > Subject: [PATCH] libxl: Correctly initialize vcpu bitmap > > The avai_vcpu bitmap has to be allocated before it can be used (using avail_vcpu ? > the maximum allowed value for that). Then for each available VCPU the > bit in the mask has to be set (libxl_bitmap_set takes a bit position > as an argument, not the number of bits to set). > > Without this, I would always only get one VCPU for guests created > through libvirt/libxl. > > Signed-off-by: Stefan Bader The libxl calling logic looks Ok to me. So from the libxl perspective you can tack on Reviewed-by: Konrad Rzeszutek Wilk > --- > src/libxl/libxl_conf.c | 14 +++++++++++--- > 1 file changed, 11 insertions(+), 3 deletions(-) > > diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c > index 4a0fba9..7592dd2 100644 > --- a/src/libxl/libxl_conf.c > +++ b/src/libxl/libxl_conf.c > @@ -331,7 +331,8 @@ error: > } > > static int > -libxlMakeDomBuildInfo(virDomainDefPtr def, libxl_domain_config *d_config) > +libxlMakeDomBuildInfo(libxlDriverPrivatePtr driver, virDomainDefPtr def, > + libxl_domain_config *d_config) > { > libxl_domain_build_info *b_info = &d_config->b_info; > int hvm = STREQ(def->os.type, "hvm"); > @@ -343,8 +344,15 @@ libxlMakeDomBuildInfo(virDomainDefPtr def, libxl_domain_config *d_config) > libxl_domain_build_info_init_type(b_info, LIBXL_DOMAIN_TYPE_HVM); > else > libxl_domain_build_info_init_type(b_info, LIBXL_DOMAIN_TYPE_PV); > + > b_info->max_vcpus = def->maxvcpus; > - libxl_bitmap_set((&b_info->avail_vcpus), def->vcpus); > + if (libxl_cpu_bitmap_alloc(driver->ctx, &b_info->avail_vcpus, > + def->maxvcpus)) > + goto error; > + libxl_bitmap_set_none(&b_info->avail_vcpus); > + for (i = 0; i < def->vcpus; i++) > + libxl_bitmap_set((&b_info->avail_vcpus), i); > + > if (def->clock.ntimers > 0 && > def->clock.timers[0]->name == VIR_DOMAIN_TIMER_NAME_TSC) { > switch (def->clock.timers[0]->mode) { > @@ -802,7 +810,7 @@ libxlBuildDomainConfig(libxlDriverPrivatePtr driver, > if (libxlMakeDomCreateInfo(driver, def, &d_config->c_info) < 0) > return -1; > > - if (libxlMakeDomBuildInfo(def, d_config) < 0) { > + if (libxlMakeDomBuildInfo(driver, def, d_config) < 0) { > return -1; > } > > -- > 1.7.9.5 > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel