[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [Xen-devel] [PATCH] libxl: Correctly initialize vcpu bitmap



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 <stefan bader canonical com>
> 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 <stefan bader canonical com>

The libxl calling logic looks Ok to me. So from the libxl perspective
you can tack on Reviewed-by: Konrad Rzeszutek Wilk <konrad wilk oracle com>

> ---
>  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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]