]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Add cpu ID to the vCPU pid list in the status XML
authorPeter Krempa <pkrempa@redhat.com>
Thu, 30 Jun 2016 13:06:46 +0000 (15:06 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 11 Jul 2016 08:44:09 +0000 (10:44 +0200)
Note the vcpu ID so that once we allow non-contiguous vCPU topologies it
will be possible to pair thread id's with the vcpus.

src/qemu/qemu_domain.c
tests/qemuxml2xmltest.c

index 9eeed8a86d0be5a52e0b4775d2ef96f4bef81e01..bc2fdfbaa0943986b160f3126080ebac630e3d03 100644 (file)
@@ -1337,7 +1337,7 @@ qemuDomainObjPrivateXMLFormatVcpus(virBufferPtr buf,
     virBufferAdjustIndent(buf, 2);
 
     for (i = 0; i < nvcpupids; i++)
-        virBufferAsprintf(buf, "<vcpu pid='%d'/>\n", vcpupids[i]);
+        virBufferAsprintf(buf, "<vcpu id='%zu' pid='%d'/>\n", i, vcpupids[i]);
 
     virBufferAdjustIndent(buf, -2);
     virBufferAddLit(buf, "</vcpus>\n");
@@ -1466,9 +1466,19 @@ qemuDomainObjPrivateXMLParseVcpu(xmlNodePtr node,
                                  unsigned int idx,
                                  qemuDomainObjPrivatePtr priv)
 {
+    char *idstr;
     char *pidstr;
     int ret = -1;
 
+    if ((idstr = virXMLPropString(node, "id"))) {
+        if (virStrToLong_uip(idstr, NULL, 10, &idx) < 0 ||
+            idx >= priv->nvcpupids) {
+            virReportError(VIR_ERR_INTERNAL_ERROR,
+                           _("invalid vcpu index '%s'"), idstr);
+            goto cleanup;
+        }
+    }
+
     if (!(pidstr = virXMLPropString(node, "pid")))
         goto cleanup;
 
@@ -1478,6 +1488,7 @@ qemuDomainObjPrivateXMLParseVcpu(xmlNodePtr node,
     ret = 0;
 
  cleanup:
+    VIR_FREE(idstr);
     VIR_FREE(pidstr);
     return ret;
 }
index eb392f48637a57d4680c43b0471f71bc3e2282f6..eb810e3ce4f595efa6937d57a2caabc88842fa25 100644 (file)
@@ -113,7 +113,8 @@ testGetStatuXMLPrefixVcpus(virBufferPtr buf,
     virBufferAdjustIndent(buf, 2);
 
     while ((vcpuid = virBitmapNextSetBit(data->activeVcpus, vcpuid)) >= 0)
-        virBufferAsprintf(buf, "<vcpu pid='%zd'/>\n", vcpuid + 3803519);
+        virBufferAsprintf(buf, "<vcpu id='%zd' pid='%zd'/>\n",
+                          vcpuid, vcpuid + 3803519);
 
     virBufferAdjustIndent(buf, -2);
     virBufferAddLit(buf, "</vcpus>\n");