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

Re: [Xen-devel] "xl vcpu-set" not persistent across reboot?



On Mon, 6 Jun 2016, Jan Beulich wrote:
> >>> On 03.06.16 at 18:35, <wei.liu2@xxxxxxxxxx> wrote:
> > I got a patch ready.  But QEMU upstream refuses to start on the receiving 
> > end
> > with following error message:
> > 
> > qemu-system-i386: Unknown savevm section or instance 'cpu_common' 1
> > qemu-system-i386: load of migration failed: Invalid argument
> > 
> > With QEMU traditional HVM guest and PV guest, the guest works fine -- up
> > and running with all hot plugged cpus available.
> > 
> > So I think the relevant libxl information is transmitted but we also
> > need to fix QEMU upstream. But that's a separate issue.

For clarity, you have applied the patch below, started a VM, hotplugged
a vcpu, rebooted the guest, then migrated the VM, but at this point
there is an error?

What are the QEMU command line arguments at the receiving side? Are you
sure that the increased vcpu count is passed to the receiving end by
libxl? It looks like QEMU has been started passing the old vcpu count as
command line argument (-smp etc) at the receiving end.


> Stefano, Anthony,
> 
> any thoughts here?
> 
> Thanks, Jan
> 
> > ---8<---
> > From 790ff77c6307b341dec0b4cc5e2d394e42f82e7c Mon Sep 17 00:00:00 2001
> > From: Wei Liu <wei.liu2@xxxxxxxxxx>
> > Date: Fri, 3 Jun 2016 16:38:32 +0100
> > Subject: [PATCH] libxl: update vcpus bitmap in retrieved geust config
> > 
> > ... because the available vcpu bitmap can change during domain life time
> > due to cpu hotplug and unplug.
> > 
> > Reported-by: Jan Beulich <jbeulich@xxxxxxxx>
> > Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
> > ---
> >  tools/libxl/libxl.c | 31 +++++++++++++++++++++++++++++++
> >  1 file changed, 31 insertions(+)
> > 
> > diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
> > index 006b83f..99617f3 100644
> > --- a/tools/libxl/libxl.c
> > +++ b/tools/libxl/libxl.c
> > @@ -7270,6 +7270,37 @@ int libxl_retrieve_domain_configuration(libxl_ctx 
> > *ctx, uint32_t domid,
> >          libxl_dominfo_dispose(&info);
> >      }
> >  
> > +    /* VCPUs */
> > +    {
> > +        libxl_vcpuinfo *vcpus;
> > +        libxl_bitmap *map;
> > +        int nr_vcpus, nr_cpus;
> > +        unsigned int i;
> > +
> > +        vcpus = libxl_list_vcpu(ctx, domid, &nr_vcpus, &nr_cpus);
> > +        if (!vcpus) {
> > +            LOG(ERROR, "fail to get vcpu list for domain %d", domid);
> > +            rc = ERROR_FAIL;
> > +            goto out;
> > +        }
> > +
> > +        /* Update the avail_vcpus bitmap accordingly */
> > +        map = &d_config->b_info.avail_vcpus;
> > +
> > +        libxl_bitmap_dispose(map);
> > +
> > +        libxl_bitmap_alloc(ctx, map, nr_vcpus);
> > +
> > +        libxl_bitmap_init(map);
> > +
> > +        for (i = 0; i < nr_vcpus; i++) {
> > +            if (vcpus[i].online)
> > +                libxl_bitmap_set(map, i);
> > +        }
> > +
> > +        libxl_vcpuinfo_list_free(vcpus, nr_vcpus);
> > +    }
> > +
> >      /* Memory limits:
> >       *
> >       * Currently there are three memory limits:
> > -- 
> > 2.1.4
> 
> 
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.