qemuDomainHelperGetVcpus would correctly return an array of virVcpuInfoPtr structs for online vcpus even for sparse topologies, but the loop that fills the returned typed parameters would number the vcpus incorrectly. Fortunately sparse topologies aren't supported yet. --- src/qemu/qemu_driver.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index d1e5188..b1f94bd 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -18965,7 +18965,7 @@ qemuDomainGetStatsVcpu(virQEMUDriverPtr driver ATTRIBUTE_UNUSED, for (i = 0; i < virDomainDefGetVcpus(dom->def); i++) { snprintf(param_name, VIR_TYPED_PARAM_FIELD_LENGTH, - "vcpu.%zu.state", i); + "vcpu.%u.state", cpuinfo[i].number); if (virTypedParamsAddInt(&record->params, &record->nparams, maxparams, @@ -18978,7 +18978,7 @@ qemuDomainGetStatsVcpu(virQEMUDriverPtr driver ATTRIBUTE_UNUSED, continue; snprintf(param_name, VIR_TYPED_PARAM_FIELD_LENGTH, - "vcpu.%zu.time", i); + "vcpu.%u.time", cpuinfo[i].number); if (virTypedParamsAddULLong(&record->params, &record->nparams, maxparams, @@ -18986,7 +18986,7 @@ qemuDomainGetStatsVcpu(virQEMUDriverPtr driver ATTRIBUTE_UNUSED, cpuinfo[i].cpuTime) < 0) goto cleanup; snprintf(param_name, VIR_TYPED_PARAM_FIELD_LENGTH, - "vcpu.%zu.wait", i); + "vcpu.%u.wait", cpuinfo[i].number); if (virTypedParamsAddULLong(&record->params, &record->nparams, maxparams, -- 2.6.2 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list