On 11/13/2012 10:22 AM, Michal Privoznik wrote: > From: Jiri Denemark <jdenemar@xxxxxxxxxx> > > When libvirt cannot find a suitable CPU model for host CPU (easily > reproducible by running libvirt in a guest), it would not provide CPU > topology in capabilities XML either. Even though CPU topology is known > and can be queried by virNodeGetInfo. With this patch, CPU topology will > always be provided in capabilities XML regardless on the presence of CPU > model. > (cherry picked from commit f1c70100409562c3f402392aa667732e5f89a2c4) > > Conflicts: > > src/qemu/qemu_capabilities.c > src/qemu/qemu_command.c > > The new code uses capabilities caching. > --- > > I am not sure about the correct process of this. So if there are some pointers .... > Thanks Michal, I pulled this locally. Mailing patches to me is fine, though I'm also fine with just committing and pushing patches to the stable branch :) Thanks, Cole > src/qemu/qemu_capabilities.c | 6 +++--- > src/qemu/qemu_domain.c | 4 +++- > src/qemu/qemu_driver.c | 3 ++- > 3 files changed, 8 insertions(+), 5 deletions(-) > > diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c > index 37f1a2b..b1ef1b9 100644 > --- a/src/qemu/qemu_capabilities.c > +++ b/src/qemu/qemu_capabilities.c > @@ -844,6 +844,7 @@ qemuCapsInitGuest(virCapsPtr caps, > guest->arch.defaultInfo.emulator_mtime = binary_mtime; > > if (caps->host.cpu && > + caps->host.cpu->model && > qemuCapsProbeCPUModels(binary, NULL, info->arch, &ncpus, NULL) == 0 && > ncpus > 0 && > !virCapabilitiesAddGuestFeature(guest, "cpuselection", 1, 0)) > @@ -973,12 +974,11 @@ qemuCapsInitCPU(virCapsPtr caps, > cpu->sockets = nodeinfo.sockets; > cpu->cores = nodeinfo.cores; > cpu->threads = nodeinfo.threads; > + caps->host.cpu = cpu; > > if (!(data = cpuNodeData(arch)) > || cpuDecode(cpu, data, NULL, 0, NULL) < 0) > - goto error; > - > - caps->host.cpu = cpu; > + goto cleanup; > > ret = 0; > > diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c > index 17ae3b9..e23ff11 100644 > --- a/src/qemu/qemu_domain.c > +++ b/src/qemu/qemu_domain.c > @@ -1233,7 +1233,9 @@ qemuDomainDefFormatBuf(struct qemud_driver *driver, > if ((flags & VIR_DOMAIN_XML_UPDATE_CPU) && > def_cpu && > (def_cpu->mode != VIR_CPU_MODE_CUSTOM || def_cpu->model)) { > - if (!driver->caps || !driver->caps->host.cpu) { > + if (!driver->caps || > + !driver->caps->host.cpu || > + !driver->caps->host.cpu->model) { > virReportError(VIR_ERR_OPERATION_FAILED, > "%s", _("cannot get host CPU capabilities")); > goto cleanup; > diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c > index 0258dbb..c1c8fa4 100644 > --- a/src/qemu/qemu_driver.c > +++ b/src/qemu/qemu_driver.c > @@ -10083,7 +10083,8 @@ qemuCPUCompare(virConnectPtr conn, > if (!driver->caps) { > virReportError(VIR_ERR_INTERNAL_ERROR, > "%s", _("cannot get host capabilities")); > - } else if (!driver->caps->host.cpu) { > + } else if (!driver->caps->host.cpu || > + !driver->caps->host.cpu->model) { > VIR_WARN("cannot get host CPU capabilities"); > ret = VIR_CPU_COMPARE_INCOMPATIBLE; > } else { > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list