Blob Blame History Raw
From c86535685add6ff59a6cce0fa48ee27a23d71815 Mon Sep 17 00:00:00 2001
Message-Id: <c86535685add6ff59a6cce0fa48ee27a23d71815@dist-git>
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Mon, 3 Feb 2020 18:07:22 +0000
Subject: [PATCH] conf: add support for specifying CPU "dies" parameter
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Recently CPU hardware vendors have started to support a new structure
inside the CPU package topology known as a "die". Thus the hierarchy
is now:

  sockets > dies > cores > threads

This adds support for "dies" in the XML parser, with the value
defaulting to 1 if not specified for backwards compatibility.

For example a system with 64 logical CPUs might report

   <topology sockets="4" dies="2" cores="4" threads="2"/>

Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
(cherry picked from commit fbf27730a36da573b1065c179f4d96b9a751f22f)

BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1785207
BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1785211
Message-Id: <20200203180726.2203691-2-berrange@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
---
 docs/formatcaps.html.in                       |  2 +-
 docs/formatdomain.html.in                     | 22 ++++++++++--------
 docs/schemas/cputypes.rng                     |  5 ++++
 src/bhyve/bhyve_command.c                     |  5 ++++
 src/conf/cpu_conf.c                           | 23 +++++++++++++++++--
 src/conf/cpu_conf.h                           |  1 +
 src/conf/domain_conf.c                        |  3 ++-
 src/cpu/cpu.c                                 |  1 +
 src/libxl/libxl_capabilities.c                |  1 +
 src/qemu/qemu_command.c                       |  5 ++++
 src/vmx/vmx.c                                 |  7 ++++++
 .../x86_64-host+guest,model486-result.xml     |  2 +-
 .../x86_64-host+guest,models-result.xml       |  2 +-
 .../cputestdata/x86_64-host+guest-result.xml  |  2 +-
 tests/cputestdata/x86_64-host+guest.xml       |  2 +-
 .../x86_64-host+host-model-nofallback.xml     |  2 +-
 ...t-Haswell-noTSX+Haswell,haswell-result.xml |  2 +-
 ...ell-noTSX+Haswell-noTSX,haswell-result.xml |  2 +-
 ...ost-Haswell-noTSX+Haswell-noTSX-result.xml |  2 +-
 .../x86_64-host-worse+guest-result.xml        |  2 +-
 .../ppc64-modern-bulk-result-conf.xml         |  2 +-
 .../ppc64-modern-bulk-result-live.xml         |  2 +-
 .../ppc64-modern-individual-result-conf.xml   |  2 +-
 .../ppc64-modern-individual-result-live.xml   |  2 +-
 .../x86-modern-bulk-result-conf.xml           |  2 +-
 .../x86-modern-bulk-result-live.xml           |  2 +-
 .../x86-modern-individual-add-result-conf.xml |  2 +-
 .../x86-modern-individual-add-result-live.xml |  2 +-
 .../x86-old-bulk-result-conf.xml              |  2 +-
 .../x86-old-bulk-result-live.xml              |  2 +-
 .../cpu-hotplug-granularity.xml               |  2 +-
 .../qemuxml2argvdata/cpu-hotplug-startup.xml  |  2 +-
 tests/qemuxml2argvdata/cpu-numa-disjoint.xml  |  2 +-
 .../qemuxml2argvdata/cpu-numa-disordered.xml  |  2 +-
 tests/qemuxml2argvdata/cpu-numa-memshared.xml |  2 +-
 .../cpu-numa-no-memory-element.xml            |  2 +-
 tests/qemuxml2argvdata/cpu-numa1.xml          |  2 +-
 tests/qemuxml2argvdata/cpu-numa2.xml          |  2 +-
 tests/qemuxml2argvdata/cpu-numa3.xml          |  2 +-
 tests/qemuxml2argvdata/cpu-topology1.xml      |  2 +-
 tests/qemuxml2argvdata/cpu-topology2.xml      |  2 +-
 tests/qemuxml2argvdata/cpu-topology3.xml      |  2 +-
 .../fd-memory-no-numa-topology.xml            |  2 +-
 .../fd-memory-numa-topology.xml               |  2 +-
 .../fd-memory-numa-topology2.xml              |  2 +-
 .../fd-memory-numa-topology3.xml              |  2 +-
 .../graphics-spice-timeout.xml                |  2 +-
 tests/qemuxml2argvdata/hugepages-nvdimm.xml   |  2 +-
 .../memfd-memory-default-hugepage.xml         |  2 +-
 tests/qemuxml2argvdata/memfd-memory-numa.xml  |  2 +-
 tests/qemuxml2argvdata/memory-align-fail.xml  |  2 +-
 .../memory-hotplug-dimm-addr.xml              |  2 +-
 .../qemuxml2argvdata/memory-hotplug-dimm.xml  |  2 +-
 .../memory-hotplug-nvdimm-access.xml          |  2 +-
 .../memory-hotplug-nvdimm-align.xml           |  2 +-
 .../memory-hotplug-nvdimm-label.xml           |  2 +-
 .../memory-hotplug-nvdimm-pmem.xml            |  2 +-
 .../memory-hotplug-nvdimm-readonly.xml        |  2 +-
 .../memory-hotplug-nvdimm.xml                 |  2 +-
 tests/qemuxml2argvdata/memory-hotplug.xml     |  2 +-
 .../numad-auto-memory-vcpu-cpuset.xml         |  2 +-
 ...to-memory-vcpu-no-cpuset-and-placement.xml |  2 +-
 .../numad-auto-vcpu-no-numatune.xml           |  2 +-
 ...d-auto-vcpu-static-numatune-no-nodeset.xml |  2 +-
 .../numad-auto-vcpu-static-numatune.xml       |  2 +-
 .../numad-static-memory-auto-vcpu.xml         |  2 +-
 .../numad-static-vcpu-no-numatune.xml         |  2 +-
 tests/qemuxml2argvdata/numad.xml              |  2 +-
 .../numatune-auto-nodeset-invalid.xml         |  2 +-
 .../numatune-memory-invalid-nodeset.xml       |  2 +-
 tests/qemuxml2argvdata/numatune-memory.xml    |  2 +-
 .../pci-expander-bus-bad-machine.xml          |  2 +-
 tests/qemuxml2argvdata/pci-expander-bus.xml   |  2 +-
 .../pcie-expander-bus-bad-bus.xml             |  2 +-
 .../pcie-expander-bus-bad-machine.xml         |  2 +-
 tests/qemuxml2argvdata/pcie-expander-bus.xml  |  2 +-
 .../pseries-default-phb-numa-node.xml         |  2 +-
 .../pseries-phb-numa-node.xml                 |  2 +-
 tests/qemuxml2argvdata/smp.xml                |  2 +-
 .../qemuxml2xmloutdata/cpu-numa-disjoint.xml  |  2 +-
 .../cpu-numa-disordered.xml                   |  2 +-
 .../qemuxml2xmloutdata/cpu-numa-memshared.xml |  2 +-
 .../cpu-numa-no-memory-element.xml            |  2 +-
 tests/qemuxml2xmloutdata/cpu-numa1.xml        |  2 +-
 tests/qemuxml2xmloutdata/cpu-numa2.xml        |  2 +-
 .../graphics-spice-timeout.xml                |  2 +-
 .../memory-hotplug-dimm.xml                   |  2 +-
 tests/qemuxml2xmloutdata/memory-hotplug.xml   |  2 +-
 .../numad-auto-memory-vcpu-cpuset.xml         |  2 +-
 ...to-memory-vcpu-no-cpuset-and-placement.xml |  2 +-
 .../numad-auto-vcpu-no-numatune.xml           |  2 +-
 .../numad-static-vcpu-no-numatune.xml         |  2 +-
 tests/qemuxml2xmloutdata/pci-expander-bus.xml |  2 +-
 .../qemuxml2xmloutdata/pcie-expander-bus.xml  |  2 +-
 .../pseries-phb-numa-node.xml                 |  2 +-
 tests/qemuxml2xmloutdata/smp.xml              |  2 +-
 .../vmx2xmldata/vmx2xml-esx-in-the-wild-8.xml |  2 +-
 .../vmx2xmldata/vmx2xml-esx-in-the-wild-9.xml |  2 +-
 98 files changed, 148 insertions(+), 101 deletions(-)

diff --git a/docs/formatcaps.html.in b/docs/formatcaps.html.in
index 2a0aa963bb..59d21a7d9e 100644
--- a/docs/formatcaps.html.in
+++ b/docs/formatcaps.html.in
@@ -173,7 +173,7 @@
       &lt;/features&gt;
       &lt;model&gt;core2duo&lt;/model&gt;
       &lt;vendor&gt;Intel&lt;/vendor&gt;
-      &lt;topology sockets="1" cores="2" threads="1"/&gt;
+      &lt;topology sockets="1" dies="1" cores="2" threads="1"/&gt;
       &lt;feature name="lahf_lm"/&gt;
       &lt;feature name='xtpr'/&gt;
       ...
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index 6e86d057a8..4db9c292b7 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -1470,7 +1470,7 @@
 &lt;cpu match='exact'&gt;
   &lt;model fallback='allow'&gt;core2duo&lt;/model&gt;
   &lt;vendor&gt;Intel&lt;/vendor&gt;
-  &lt;topology sockets='1' cores='2' threads='1'/&gt;
+  &lt;topology sockets='1' dies='1' cores='2' threads='1'/&gt;
   &lt;cache level='3' mode='emulate'/&gt;
   &lt;feature policy='disable' name='lahf_lm'/&gt;
 &lt;/cpu&gt;
@@ -1479,7 +1479,7 @@
 <pre>
 &lt;cpu mode='host-model'&gt;
   &lt;model fallback='forbid'/&gt;
-  &lt;topology sockets='1' cores='2' threads='1'/&gt;
+  &lt;topology sockets='1' dies='1' cores='2' threads='1'/&gt;
 &lt;/cpu&gt;
 ...</pre>
 
@@ -1498,7 +1498,7 @@
 <pre>
 ...
 &lt;cpu&gt;
-  &lt;topology sockets='1' cores='2' threads='1'/&gt;
+  &lt;topology sockets='1' dies='1' cores='2' threads='1'/&gt;
 &lt;/cpu&gt;
 ...</pre>
 
@@ -1673,13 +1673,15 @@
 
       <dt><code>topology</code></dt>
       <dd>The <code>topology</code> element specifies requested topology of
-        virtual CPU provided to the guest. Three non-zero values have to be
-        given for <code>sockets</code>, <code>cores</code>, and
-        <code>threads</code>: total number of CPU sockets, number of cores per
-        socket, and number of threads per core, respectively. Hypervisors may
-        require that the maximum number of vCPUs specified by the
-        <code>cpus</code> element equals to the number of vcpus resulting
-        from the topology.</dd>
+        virtual CPU provided to the guest. Four attributes, <code>sockets</code>,
+        <code>dies</code>, <code>cores</code>, and <code>threads</code>,
+        accept non-zero positive integer values. They refer to the total number
+        of CPU sockets, number of dies per socket, number of cores per die, and
+        number of threads per core, respectively. The <code>dies</code>
+        attribute is optional and will default to 1 if omitted, while the other
+        attributes are all mandatory. Hypervisors may require that the maximum
+        number of vCPUs specified by the <code>cpus</code> element equals to
+        the number of vcpus resulting from the topology.</dd>
 
       <dt><code>feature</code></dt>
       <dd>The <code>cpu</code> element can contain zero or more
diff --git a/docs/schemas/cputypes.rng b/docs/schemas/cputypes.rng
index 1f1e0e36d5..e2744acad3 100644
--- a/docs/schemas/cputypes.rng
+++ b/docs/schemas/cputypes.rng
@@ -86,6 +86,11 @@
       <attribute name="sockets">
         <ref name="positiveInteger"/>
       </attribute>
+      <optional>
+        <attribute name="dies">
+          <ref name="positiveInteger"/>
+        </attribute>
+      </optional>
       <attribute name="cores">
         <ref name="positiveInteger"/>
       </attribute>
diff --git a/src/bhyve/bhyve_command.c b/src/bhyve/bhyve_command.c
index 48336ffa1b..d78221aea8 100644
--- a/src/bhyve/bhyve_command.c
+++ b/src/bhyve/bhyve_command.c
@@ -453,6 +453,11 @@ virBhyveProcessBuildBhyveCmd(virConnectPtr conn,
     /* CPUs */
     virCommandAddArg(cmd, "-c");
     if (def->cpu && def->cpu->sockets) {
+        if (def->dies != 1) {
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                           _("Only 1 die per socket is supported"));
+            goto cleanup;
+        }
         if (nvcpus != def->cpu->sockets * def->cpu->cores * def->cpu->threads) {
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
                            _("Invalid CPU topology: total number of vCPUs "
diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c
index b463981de0..837d77581c 100644
--- a/src/conf/cpu_conf.c
+++ b/src/conf/cpu_conf.c
@@ -239,6 +239,7 @@ virCPUDefCopyWithoutModel(const virCPUDef *cpu)
     copy->check = cpu->check;
     copy->fallback = cpu->fallback;
     copy->sockets = cpu->sockets;
+    copy->dies = cpu->dies;
     copy->cores = cpu->cores;
     copy->threads = cpu->threads;
     copy->arch = cpu->arch;
@@ -535,6 +536,17 @@ virCPUDefParseXML(xmlXPathContextPtr ctxt,
         }
         def->sockets = (unsigned int) ul;
 
+        if (virXPathNode("./topology[1]/@dies", ctxt)) {
+            if (virXPathULong("string(./topology[1]/@dies)", ctxt, &ul) < 0) {
+                virReportError(VIR_ERR_XML_ERROR, "%s",
+                               _("Malformed 'dies' attribute in CPU topology"));
+                goto cleanup;
+            }
+            def->dies = (unsigned int) ul;
+        } else {
+            def->dies = 1;
+        }
+
         if (virXPathULong("string(./topology[1]/@cores)", ctxt, &ul) < 0) {
             virReportError(VIR_ERR_XML_ERROR, "%s",
                            _("Missing 'cores' attribute in CPU topology"));
@@ -549,7 +561,7 @@ virCPUDefParseXML(xmlXPathContextPtr ctxt,
         }
         def->threads = (unsigned int) ul;
 
-        if (!def->sockets || !def->cores || !def->threads) {
+        if (!def->sockets || !def->cores || !def->threads || !def->dies) {
             virReportError(VIR_ERR_XML_ERROR, "%s",
                            _("Invalid CPU topology"));
             goto cleanup;
@@ -817,9 +829,10 @@ virCPUDefFormatBuf(virBufferPtr buf,
         virBufferAddLit(buf, "/>\n");
     }
 
-    if (def->sockets && def->cores && def->threads) {
+    if (def->sockets && def->dies && def->cores && def->threads) {
         virBufferAddLit(buf, "<topology");
         virBufferAsprintf(buf, " sockets='%u'", def->sockets);
+        virBufferAsprintf(buf, " dies='%u'", def->dies);
         virBufferAsprintf(buf, " cores='%u'", def->cores);
         virBufferAsprintf(buf, " threads='%u'", def->threads);
         virBufferAddLit(buf, "/>\n");
@@ -1058,6 +1071,12 @@ virCPUDefIsEqual(virCPUDefPtr src,
         return false;
     }
 
+    if (src->dies != dst->dies) {
+        MISMATCH(_("Target CPU dies %d does not match source %d"),
+                 dst->dies, src->dies);
+        return false;
+    }
+
     if (src->cores != dst->cores) {
         MISMATCH(_("Target CPU cores %d does not match source %d"),
                  dst->cores, src->cores);
diff --git a/src/conf/cpu_conf.h b/src/conf/cpu_conf.h
index ec3d2379cf..6cef9e9726 100644
--- a/src/conf/cpu_conf.h
+++ b/src/conf/cpu_conf.h
@@ -134,6 +134,7 @@ struct _virCPUDef {
     char *vendor;
     unsigned int microcodeVersion;
     unsigned int sockets;
+    unsigned int dies;
     unsigned int cores;
     unsigned int threads;
     size_t nfeatures;
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index ee57152da7..0478914c69 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -2053,7 +2053,8 @@ virDomainDefGetVcpusTopology(const virDomainDef *def,
     tmp = def->cpu->sockets;
 
     /* multiplication of 32bit numbers fits into a 64bit variable */
-    if ((tmp *= def->cpu->cores) > UINT_MAX ||
+    if ((tmp *= def->cpu->dies) > UINT_MAX ||
+        (tmp *= def->cpu->cores) > UINT_MAX ||
         (tmp *= def->cpu->threads) > UINT_MAX) {
         virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                        _("cpu topology results in more than %u cpus"), UINT_MAX);
diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c
index d99466472b..ae3a0acc10 100644
--- a/src/cpu/cpu.c
+++ b/src/cpu/cpu.c
@@ -421,6 +421,7 @@ virCPUGetHost(virArch arch,
 
     if (nodeInfo) {
         cpu->sockets = nodeInfo->sockets;
+        cpu->dies = 1;
         cpu->cores = nodeInfo->cores;
         cpu->threads = nodeInfo->threads;
     }
diff --git a/src/libxl/libxl_capabilities.c b/src/libxl/libxl_capabilities.c
index e9f958cd8a..beac8c8cfc 100644
--- a/src/libxl/libxl_capabilities.c
+++ b/src/libxl/libxl_capabilities.c
@@ -186,6 +186,7 @@ libxlCapsInitCPU(virCapsPtr caps, libxl_physinfo *phy_info,
     cpu->type = VIR_CPU_TYPE_HOST;
     cpu->cores = phy_info->cores_per_socket;
     cpu->threads = phy_info->threads_per_core;
+    cpu->dies = 1;
     cpu->sockets = phy_info->nr_cpus / (cpu->cores * cpu->threads);
     caps->host.cpu = cpu;
 
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index e10cc7fc74..d7e8216092 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -7130,6 +7130,11 @@ qemuBuildSmpCommandLine(virCommandPtr cmd,
     /* sockets, cores, and threads are either all zero
      * or all non-zero, thus checking one of them is enough */
     if (def->cpu && def->cpu->sockets) {
+        if (def->cpu->dies != 1) {
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                           _("Only 1 die per socket is supported"));
+            return -1;
+        }
         virBufferAsprintf(&buf, ",sockets=%u", def->cpu->sockets);
         virBufferAsprintf(&buf, ",cores=%u", def->cpu->cores);
         virBufferAsprintf(&buf, ",threads=%u", def->cpu->threads);
diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c
index aa88dfcb5d..4362da6cee 100644
--- a/src/vmx/vmx.c
+++ b/src/vmx/vmx.c
@@ -1485,6 +1485,7 @@ virVMXParseConfig(virVMXContext *ctx,
                              "'numvcpus'"));
             goto cleanup;
         }
+        cpu->dies = 1;
         cpu->cores = coresPerSocket;
         cpu->threads = 1;
 
@@ -3206,6 +3207,12 @@ virVMXFormatConfig(virVMXContext *ctx, virDomainXMLOptionPtr xmlopt, virDomainDe
             goto cleanup;
         }
 
+        if (def->cpu->dies != 1) {
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                           _("Only 1 die per socket is supported"));
+            goto cleanup;
+        }
+
         calculated_vcpus = def->cpu->sockets * def->cpu->cores;
         if (calculated_vcpus != maxvcpus) {
             virReportError(VIR_ERR_INTERNAL_ERROR,
diff --git a/tests/cputestdata/x86_64-host+guest,model486-result.xml b/tests/cputestdata/x86_64-host+guest,model486-result.xml
index 85564ff458..ea8e2d3a48 100644
--- a/tests/cputestdata/x86_64-host+guest,model486-result.xml
+++ b/tests/cputestdata/x86_64-host+guest,model486-result.xml
@@ -1,6 +1,6 @@
 <cpu mode='custom' match='exact'>
   <model fallback='allow'>486</model>
-  <topology sockets='2' cores='4' threads='1'/>
+  <topology sockets='2' dies='1' cores='4' threads='1'/>
   <feature policy='require' name='de'/>
   <feature policy='require' name='tsc'/>
   <feature policy='require' name='msr'/>
diff --git a/tests/cputestdata/x86_64-host+guest,models-result.xml b/tests/cputestdata/x86_64-host+guest,models-result.xml
index f79ed324c1..0dd6955898 100644
--- a/tests/cputestdata/x86_64-host+guest,models-result.xml
+++ b/tests/cputestdata/x86_64-host+guest,models-result.xml
@@ -1,6 +1,6 @@
 <cpu mode='custom' match='exact'>
   <model fallback='allow'>Nehalem</model>
-  <topology sockets='2' cores='4' threads='1'/>
+  <topology sockets='2' dies='1' cores='4' threads='1'/>
   <feature policy='force' name='pbe'/>
   <feature policy='force' name='monitor'/>
   <feature policy='require' name='xtpr'/>
diff --git a/tests/cputestdata/x86_64-host+guest-result.xml b/tests/cputestdata/x86_64-host+guest-result.xml
index 137a3d6647..28e3152cbf 100644
--- a/tests/cputestdata/x86_64-host+guest-result.xml
+++ b/tests/cputestdata/x86_64-host+guest-result.xml
@@ -1,6 +1,6 @@
 <cpu mode='custom' match='exact'>
   <model fallback='allow'>Penryn</model>
-  <topology sockets='2' cores='4' threads='1'/>
+  <topology sockets='2' dies='1' cores='4' threads='1'/>
   <feature policy='require' name='dca'/>
   <feature policy='require' name='xtpr'/>
   <feature policy='disable' name='sse4.2'/>
diff --git a/tests/cputestdata/x86_64-host+guest.xml b/tests/cputestdata/x86_64-host+guest.xml
index 137a3d6647..28e3152cbf 100644
--- a/tests/cputestdata/x86_64-host+guest.xml
+++ b/tests/cputestdata/x86_64-host+guest.xml
@@ -1,6 +1,6 @@
 <cpu mode='custom' match='exact'>
   <model fallback='allow'>Penryn</model>
-  <topology sockets='2' cores='4' threads='1'/>
+  <topology sockets='2' dies='1' cores='4' threads='1'/>
   <feature policy='require' name='dca'/>
   <feature policy='require' name='xtpr'/>
   <feature policy='disable' name='sse4.2'/>
diff --git a/tests/cputestdata/x86_64-host+host-model-nofallback.xml b/tests/cputestdata/x86_64-host+host-model-nofallback.xml
index 0c3ede0f6a..16d6e1daf2 100644
--- a/tests/cputestdata/x86_64-host+host-model-nofallback.xml
+++ b/tests/cputestdata/x86_64-host+host-model-nofallback.xml
@@ -1,7 +1,7 @@
 <cpu mode='custom' match='exact'>
   <model fallback='forbid'>Penryn</model>
   <vendor>Intel</vendor>
-  <topology sockets='1' cores='2' threads='1'/>
+  <topology sockets='1' dies='1' cores='2' threads='1'/>
   <feature policy='require' name='dca'/>
   <feature policy='require' name='xtpr'/>
   <feature policy='require' name='tm2'/>
diff --git a/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell,haswell-result.xml b/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell,haswell-result.xml
index 2dbe06c314..8eda6684a0 100644
--- a/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell,haswell-result.xml
+++ b/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell,haswell-result.xml
@@ -1,6 +1,6 @@
 <cpu mode='custom' match='exact'>
   <model fallback='allow'>Haswell</model>
-  <topology sockets='1' cores='2' threads='2'/>
+  <topology sockets='1' dies='1' cores='2' threads='2'/>
   <feature policy='disable' name='rtm'/>
   <feature policy='disable' name='hle'/>
 </cpu>
diff --git a/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell-noTSX,haswell-result.xml b/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell-noTSX,haswell-result.xml
index 5d149bb295..cb02449d60 100644
--- a/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell-noTSX,haswell-result.xml
+++ b/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell-noTSX,haswell-result.xml
@@ -1,6 +1,6 @@
 <cpu mode='custom' match='exact'>
   <model fallback='allow'>Haswell</model>
-  <topology sockets='1' cores='2' threads='2'/>
+  <topology sockets='1' dies='1' cores='2' threads='2'/>
   <feature policy='disable' name='hle'/>
   <feature policy='disable' name='rtm'/>
 </cpu>
diff --git a/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell-noTSX-result.xml b/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell-noTSX-result.xml
index 3b74089647..7ee926aba8 100644
--- a/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell-noTSX-result.xml
+++ b/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell-noTSX-result.xml
@@ -1,4 +1,4 @@
 <cpu mode='custom' match='exact'>
   <model fallback='allow'>Haswell-noTSX</model>
-  <topology sockets='1' cores='2' threads='2'/>
+  <topology sockets='1' dies='1' cores='2' threads='2'/>
 </cpu>
diff --git a/tests/cputestdata/x86_64-host-worse+guest-result.xml b/tests/cputestdata/x86_64-host-worse+guest-result.xml
index 2edc8756c4..9d54c66a8f 100644
--- a/tests/cputestdata/x86_64-host-worse+guest-result.xml
+++ b/tests/cputestdata/x86_64-host-worse+guest-result.xml
@@ -1,6 +1,6 @@
 <cpu mode='custom' match='exact'>
   <model fallback='allow'>Penryn</model>
-  <topology sockets='2' cores='4' threads='1'/>
+  <topology sockets='2' dies='1' cores='4' threads='1'/>
   <feature policy='disable' name='dca'/>
   <feature policy='disable' name='xtpr'/>
   <feature policy='disable' name='sse4.2'/>
diff --git a/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-conf.xml b/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-conf.xml
index 1a769235a3..f80c4367df 100644
--- a/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-conf.xml
+++ b/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-conf.xml
@@ -43,7 +43,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets='1' cores='4' threads='8'/>
+    <topology sockets='1' dies='1' cores='4' threads='8'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-live.xml b/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-live.xml
index 43e6267250..7998b978fb 100644
--- a/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-live.xml
+++ b/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-live.xml
@@ -43,7 +43,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets='1' cores='4' threads='8'/>
+    <topology sockets='1' dies='1' cores='4' threads='8'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-conf.xml b/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-conf.xml
index cfb44cc433..2a48a97eef 100644
--- a/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-conf.xml
+++ b/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-conf.xml
@@ -43,7 +43,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets='1' cores='4' threads='8'/>
+    <topology sockets='1' dies='1' cores='4' threads='8'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-live.xml b/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-live.xml
index 0a8d372149..90518d1fa9 100644
--- a/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-live.xml
+++ b/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-live.xml
@@ -43,7 +43,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets='1' cores='4' threads='8'/>
+    <topology sockets='1' dies='1' cores='4' threads='8'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuhotplugtestcpus/x86-modern-bulk-result-conf.xml b/tests/qemuhotplugtestcpus/x86-modern-bulk-result-conf.xml
index 6457f4056b..0d622fc8ae 100644
--- a/tests/qemuhotplugtestcpus/x86-modern-bulk-result-conf.xml
+++ b/tests/qemuhotplugtestcpus/x86-modern-bulk-result-conf.xml
@@ -19,7 +19,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets='4' cores='2' threads='1'/>
+    <topology sockets='4' dies='1' cores='2' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuhotplugtestcpus/x86-modern-bulk-result-live.xml b/tests/qemuhotplugtestcpus/x86-modern-bulk-result-live.xml
index fe9a81a091..ed9deaea4a 100644
--- a/tests/qemuhotplugtestcpus/x86-modern-bulk-result-live.xml
+++ b/tests/qemuhotplugtestcpus/x86-modern-bulk-result-live.xml
@@ -19,7 +19,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets='4' cores='2' threads='1'/>
+    <topology sockets='4' dies='1' cores='2' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-conf.xml b/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-conf.xml
index 58c088de88..342f172108 100644
--- a/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-conf.xml
+++ b/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-conf.xml
@@ -19,7 +19,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets='4' cores='2' threads='1'/>
+    <topology sockets='4' dies='1' cores='2' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-live.xml b/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-live.xml
index 12b28be5fe..b8341c74e5 100644
--- a/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-live.xml
+++ b/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-live.xml
@@ -19,7 +19,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets='4' cores='2' threads='1'/>
+    <topology sockets='4' dies='1' cores='2' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuhotplugtestcpus/x86-old-bulk-result-conf.xml b/tests/qemuhotplugtestcpus/x86-old-bulk-result-conf.xml
index f635e37b82..29da89f5bc 100644
--- a/tests/qemuhotplugtestcpus/x86-old-bulk-result-conf.xml
+++ b/tests/qemuhotplugtestcpus/x86-old-bulk-result-conf.xml
@@ -9,7 +9,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets='4' cores='2' threads='1'/>
+    <topology sockets='4' dies='1' cores='2' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuhotplugtestcpus/x86-old-bulk-result-live.xml b/tests/qemuhotplugtestcpus/x86-old-bulk-result-live.xml
index 6f50bb5c12..f81194db5b 100644
--- a/tests/qemuhotplugtestcpus/x86-old-bulk-result-live.xml
+++ b/tests/qemuhotplugtestcpus/x86-old-bulk-result-live.xml
@@ -9,7 +9,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets='4' cores='2' threads='1'/>
+    <topology sockets='4' dies='1' cores='2' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuxml2argvdata/cpu-hotplug-granularity.xml b/tests/qemuxml2argvdata/cpu-hotplug-granularity.xml
index a94f41e46a..bf6a42c306 100644
--- a/tests/qemuxml2argvdata/cpu-hotplug-granularity.xml
+++ b/tests/qemuxml2argvdata/cpu-hotplug-granularity.xml
@@ -7,7 +7,7 @@
     <type arch='ppc64' machine='pseries'>hvm</type>
   </os>
   <cpu>
-    <topology sockets='1' cores='2' threads='4'/>
+    <topology sockets='1' dies='1' cores='2' threads='4'/>
   </cpu>
   <devices>
     <emulator>/usr/bin/qemu-system-ppc64</emulator>
diff --git a/tests/qemuxml2argvdata/cpu-hotplug-startup.xml b/tests/qemuxml2argvdata/cpu-hotplug-startup.xml
index 99987ba15a..9d764e2f8c 100644
--- a/tests/qemuxml2argvdata/cpu-hotplug-startup.xml
+++ b/tests/qemuxml2argvdata/cpu-hotplug-startup.xml
@@ -17,7 +17,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets="3" cores="2" threads="1"/>
+    <topology sockets="3" dies="1" cores="2" threads="1"/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuxml2argvdata/cpu-numa-disjoint.xml b/tests/qemuxml2argvdata/cpu-numa-disjoint.xml
index b022384e97..c164b15e82 100644
--- a/tests/qemuxml2argvdata/cpu-numa-disjoint.xml
+++ b/tests/qemuxml2argvdata/cpu-numa-disjoint.xml
@@ -9,7 +9,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='4' threads='2'/>
+    <topology sockets='2' dies='1' cores='4' threads='2'/>
     <numa>
       <cell id='0' cpus='0-3,8-11' memory='109550' unit='KiB'/>
       <cell id='1' cpus='4-7,12-15' memory='109550' unit='KiB'/>
diff --git a/tests/qemuxml2argvdata/cpu-numa-disordered.xml b/tests/qemuxml2argvdata/cpu-numa-disordered.xml
index e209150a55..6e00b91281 100644
--- a/tests/qemuxml2argvdata/cpu-numa-disordered.xml
+++ b/tests/qemuxml2argvdata/cpu-numa-disordered.xml
@@ -9,7 +9,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='4' threads='2'/>
+    <topology sockets='2' dies='1' cores='4' threads='2'/>
     <numa>
       <cell id='0' cpus='0-5' memory='109550' unit='KiB'/>
       <cell id='2' cpus='6-10' memory='109550' unit='KiB'/>
diff --git a/tests/qemuxml2argvdata/cpu-numa-memshared.xml b/tests/qemuxml2argvdata/cpu-numa-memshared.xml
index 7e05916f78..f2ef035b00 100644
--- a/tests/qemuxml2argvdata/cpu-numa-memshared.xml
+++ b/tests/qemuxml2argvdata/cpu-numa-memshared.xml
@@ -9,7 +9,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='4' threads='2'/>
+    <topology sockets='2' dies='1' cores='4' threads='2'/>
     <numa>
       <cell id='0' cpus='0-7' memory='109550' unit='KiB' memAccess='shared'/>
       <cell id='1' cpus='8-15' memory='109550' unit='KiB' memAccess='private'/>
diff --git a/tests/qemuxml2argvdata/cpu-numa-no-memory-element.xml b/tests/qemuxml2argvdata/cpu-numa-no-memory-element.xml
index ee6b6aa870..97dac01e84 100644
--- a/tests/qemuxml2argvdata/cpu-numa-no-memory-element.xml
+++ b/tests/qemuxml2argvdata/cpu-numa-no-memory-element.xml
@@ -8,7 +8,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='4' threads='2'/>
+    <topology sockets='2' dies='1' cores='4' threads='2'/>
     <numa>
       <cell id='1' cpus='8-15' memory='109550' unit='KiB'/>
       <cell id='0' cpus='0-7' memory='109550' unit='KiB'/>
diff --git a/tests/qemuxml2argvdata/cpu-numa1.xml b/tests/qemuxml2argvdata/cpu-numa1.xml
index b21941d51a..867d21e152 100644
--- a/tests/qemuxml2argvdata/cpu-numa1.xml
+++ b/tests/qemuxml2argvdata/cpu-numa1.xml
@@ -9,7 +9,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='4' threads='2'/>
+    <topology sockets='2' dies='1' cores='4' threads='2'/>
     <numa>
       <cell cpus='0-7' memory='109550' unit='KiB'/>
       <cell cpus='8-15' memory='109550' unit='KiB'/>
diff --git a/tests/qemuxml2argvdata/cpu-numa2.xml b/tests/qemuxml2argvdata/cpu-numa2.xml
index b85b19f5e0..e589948dc7 100644
--- a/tests/qemuxml2argvdata/cpu-numa2.xml
+++ b/tests/qemuxml2argvdata/cpu-numa2.xml
@@ -9,7 +9,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='4' threads='2'/>
+    <topology sockets='2' dies='1' cores='4' threads='2'/>
     <numa>
       <cell id='1' cpus='8-15' memory='109550' unit='KiB'/>
       <cell id='0' cpus='0-7' memory='109550' unit='KiB'/>
diff --git a/tests/qemuxml2argvdata/cpu-numa3.xml b/tests/qemuxml2argvdata/cpu-numa3.xml
index e2b9e9014d..350fbe7c07 100644
--- a/tests/qemuxml2argvdata/cpu-numa3.xml
+++ b/tests/qemuxml2argvdata/cpu-numa3.xml
@@ -9,7 +9,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='4' threads='2'/>
+    <topology sockets='2' dies='1' cores='4' threads='2'/>
     <numa>
       <cell id='1' cpus='0-7' memory='109550' unit='KiB'/>
       <cell id='2' cpus='8-15' memory='109550' unit='KiB'/>
diff --git a/tests/qemuxml2argvdata/cpu-topology1.xml b/tests/qemuxml2argvdata/cpu-topology1.xml
index 9d77d10a5c..af82a1c51a 100644
--- a/tests/qemuxml2argvdata/cpu-topology1.xml
+++ b/tests/qemuxml2argvdata/cpu-topology1.xml
@@ -9,7 +9,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets="3" cores="2" threads="1"/>
+    <topology sockets="3" dies="1" cores="2" threads="1"/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuxml2argvdata/cpu-topology2.xml b/tests/qemuxml2argvdata/cpu-topology2.xml
index 9d9701914a..1b113b8b13 100644
--- a/tests/qemuxml2argvdata/cpu-topology2.xml
+++ b/tests/qemuxml2argvdata/cpu-topology2.xml
@@ -10,7 +10,7 @@
   </os>
   <cpu match='exact'>
     <model>core2duo</model>
-    <topology sockets="1" cores="2" threads="3"/>
+    <topology sockets="1" dies="1" cores="2" threads="3"/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuxml2argvdata/cpu-topology3.xml b/tests/qemuxml2argvdata/cpu-topology3.xml
index 9d77d10a5c..af82a1c51a 100644
--- a/tests/qemuxml2argvdata/cpu-topology3.xml
+++ b/tests/qemuxml2argvdata/cpu-topology3.xml
@@ -9,7 +9,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets="3" cores="2" threads="1"/>
+    <topology sockets="3" dies="1" cores="2" threads="1"/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuxml2argvdata/fd-memory-no-numa-topology.xml b/tests/qemuxml2argvdata/fd-memory-no-numa-topology.xml
index 4c30761110..eb3300b1fb 100644
--- a/tests/qemuxml2argvdata/fd-memory-no-numa-topology.xml
+++ b/tests/qemuxml2argvdata/fd-memory-no-numa-topology.xml
@@ -14,7 +14,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='8' cores='1' threads='1'/>
+    <topology sockets='8' dies='1' cores='1' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuxml2argvdata/fd-memory-numa-topology.xml b/tests/qemuxml2argvdata/fd-memory-numa-topology.xml
index f22a8e81f8..b7b5a19166 100644
--- a/tests/qemuxml2argvdata/fd-memory-numa-topology.xml
+++ b/tests/qemuxml2argvdata/fd-memory-numa-topology.xml
@@ -14,7 +14,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='1' cores='8' threads='1'/>
+    <topology sockets='1' dies='1' cores='8' threads='1'/>
     <numa>
       <cell id='0' cpus='0-7' memory='14680064' unit='KiB'/>
     </numa>
diff --git a/tests/qemuxml2argvdata/fd-memory-numa-topology2.xml b/tests/qemuxml2argvdata/fd-memory-numa-topology2.xml
index 925f39b6ab..07de0bd717 100644
--- a/tests/qemuxml2argvdata/fd-memory-numa-topology2.xml
+++ b/tests/qemuxml2argvdata/fd-memory-numa-topology2.xml
@@ -14,7 +14,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='1' cores='8' threads='1'/>
+    <topology sockets='1' dies='1' cores='8' threads='1'/>
     <numa>
       <cell id='0' cpus='0-7' memory='14680064' unit='KiB'/>
       <cell id='1' cpus='8-15' memory='14680064' unit='KiB' memAccess='shared'/>
diff --git a/tests/qemuxml2argvdata/fd-memory-numa-topology3.xml b/tests/qemuxml2argvdata/fd-memory-numa-topology3.xml
index 71a8e083c9..8711641b68 100644
--- a/tests/qemuxml2argvdata/fd-memory-numa-topology3.xml
+++ b/tests/qemuxml2argvdata/fd-memory-numa-topology3.xml
@@ -14,7 +14,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='1' cores='24' threads='1'/>
+    <topology sockets='1' dies='1' cores='24' threads='1'/>
     <numa>
       <cell id='0' cpus='0-1' memory='14680064' unit='KiB'/>
       <cell id='1' cpus='2-3' memory='14680064' unit='KiB' memAccess='shared'/>
diff --git a/tests/qemuxml2argvdata/graphics-spice-timeout.xml b/tests/qemuxml2argvdata/graphics-spice-timeout.xml
index 6bb4eb8f4c..d96f519bf8 100644
--- a/tests/qemuxml2argvdata/graphics-spice-timeout.xml
+++ b/tests/qemuxml2argvdata/graphics-spice-timeout.xml
@@ -18,7 +18,7 @@
   <cpu match='exact'>
     <model>core2duo</model>
     <vendor>Intel</vendor>
-    <topology sockets='1' cores='2' threads='1'/>
+    <topology sockets='1' dies='1' cores='2' threads='1'/>
     <feature policy='require' name='ds'/>
     <feature policy='require' name='acpi'/>
     <feature policy='require' name='ss'/>
diff --git a/tests/qemuxml2argvdata/hugepages-nvdimm.xml b/tests/qemuxml2argvdata/hugepages-nvdimm.xml
index b784777805..144d02b56e 100644
--- a/tests/qemuxml2argvdata/hugepages-nvdimm.xml
+++ b/tests/qemuxml2argvdata/hugepages-nvdimm.xml
@@ -16,7 +16,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
     <numa>
       <cell id='0' cpus='0-1' memory='1048576' unit='KiB'/>
     </numa>
diff --git a/tests/qemuxml2argvdata/memfd-memory-default-hugepage.xml b/tests/qemuxml2argvdata/memfd-memory-default-hugepage.xml
index 45ff012711..ded56dd538 100644
--- a/tests/qemuxml2argvdata/memfd-memory-default-hugepage.xml
+++ b/tests/qemuxml2argvdata/memfd-memory-default-hugepage.xml
@@ -18,7 +18,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='1' cores='8' threads='1'/>
+    <topology sockets='1' dies='1' cores='8' threads='1'/>
     <numa>
       <cell id='0' cpus='0-7' memory='14680064' unit='KiB'/>
     </numa>
diff --git a/tests/qemuxml2argvdata/memfd-memory-numa.xml b/tests/qemuxml2argvdata/memfd-memory-numa.xml
index f088f01d11..ebe638f600 100644
--- a/tests/qemuxml2argvdata/memfd-memory-numa.xml
+++ b/tests/qemuxml2argvdata/memfd-memory-numa.xml
@@ -20,7 +20,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='1' cores='8' threads='1'/>
+    <topology sockets='1' dies='1' cores='8' threads='1'/>
     <numa>
       <cell id='0' cpus='0-7' memory='14680064' unit='KiB'/>
     </numa>
diff --git a/tests/qemuxml2argvdata/memory-align-fail.xml b/tests/qemuxml2argvdata/memory-align-fail.xml
index 75c1a46068..636f0e3d8e 100644
--- a/tests/qemuxml2argvdata/memory-align-fail.xml
+++ b/tests/qemuxml2argvdata/memory-align-fail.xml
@@ -10,7 +10,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
     <numa>
       <cell id='0' cpus='0-1' memory='9007199254740991' unit='KiB'/>
     </numa>
diff --git a/tests/qemuxml2argvdata/memory-hotplug-dimm-addr.xml b/tests/qemuxml2argvdata/memory-hotplug-dimm-addr.xml
index c289fdd5ff..ea4f4fd745 100644
--- a/tests/qemuxml2argvdata/memory-hotplug-dimm-addr.xml
+++ b/tests/qemuxml2argvdata/memory-hotplug-dimm-addr.xml
@@ -10,7 +10,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
     <numa>
       <cell id='0' cpus='0-1' memory='219136' unit='KiB'/>
     </numa>
diff --git a/tests/qemuxml2argvdata/memory-hotplug-dimm.xml b/tests/qemuxml2argvdata/memory-hotplug-dimm.xml
index c68336f871..585e0a5f51 100644
--- a/tests/qemuxml2argvdata/memory-hotplug-dimm.xml
+++ b/tests/qemuxml2argvdata/memory-hotplug-dimm.xml
@@ -14,7 +14,7 @@
     <gid start='0' target='1000' count='10'/>
   </idmap>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
     <numa>
       <cell id='0' cpus='0-1' memory='219136' unit='KiB'/>
     </numa>
diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-access.xml b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-access.xml
index 4e62dd0e18..a1cc1264eb 100644
--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-access.xml
+++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-access.xml
@@ -14,7 +14,7 @@
     <gid start='0' target='1000' count='10'/>
   </idmap>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
     <numa>
       <cell id='0' cpus='0-1' memory='219136' unit='KiB'/>
     </numa>
diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.xml b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.xml
index defa109e80..018a693aaf 100644
--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.xml
+++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.xml
@@ -14,7 +14,7 @@
     <gid start='0' target='1000' count='10'/>
   </idmap>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
     <numa>
       <cell id='0' cpus='0-1' memory='219136' unit='KiB'/>
     </numa>
diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.xml b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.xml
index 89d01d672f..c9d54a6088 100644
--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.xml
+++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.xml
@@ -14,7 +14,7 @@
     <gid start='0' target='1000' count='10'/>
   </idmap>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
     <numa>
       <cell id='0' cpus='0-1' memory='219136' unit='KiB'/>
     </numa>
diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.xml b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.xml
index e6a4f7901a..391d70f20e 100644
--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.xml
+++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.xml
@@ -14,7 +14,7 @@
     <gid start='0' target='1000' count='10'/>
   </idmap>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
     <numa>
       <cell id='0' cpus='0-1' memory='219136' unit='KiB'/>
     </numa>
diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.xml b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.xml
index dd48540712..09b2c5c833 100644
--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.xml
+++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.xml
@@ -14,7 +14,7 @@
     <gid start='0' target='1000' count='10'/>
   </idmap>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
     <numa>
       <cell id='0' cpus='0-1' memory='219136' unit='KiB'/>
     </numa>
diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm.xml b/tests/qemuxml2argvdata/memory-hotplug-nvdimm.xml
index 9c76dda6c8..a32474da06 100644
--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm.xml
+++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm.xml
@@ -14,7 +14,7 @@
     <gid start='0' target='1000' count='10'/>
   </idmap>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
     <numa>
       <cell id='0' cpus='0-1' memory='1048576' unit='KiB'/>
     </numa>
diff --git a/tests/qemuxml2argvdata/memory-hotplug.xml b/tests/qemuxml2argvdata/memory-hotplug.xml
index e1f086567b..8d09856e95 100644
--- a/tests/qemuxml2argvdata/memory-hotplug.xml
+++ b/tests/qemuxml2argvdata/memory-hotplug.xml
@@ -10,7 +10,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
     <numa>
       <cell id='0' cpus='0-1' memory='219136' unit='KiB'/>
     </numa>
diff --git a/tests/qemuxml2argvdata/numad-auto-memory-vcpu-cpuset.xml b/tests/qemuxml2argvdata/numad-auto-memory-vcpu-cpuset.xml
index 50dbc3c466..5758e65d09 100644
--- a/tests/qemuxml2argvdata/numad-auto-memory-vcpu-cpuset.xml
+++ b/tests/qemuxml2argvdata/numad-auto-memory-vcpu-cpuset.xml
@@ -12,7 +12,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuxml2argvdata/numad-auto-memory-vcpu-no-cpuset-and-placement.xml b/tests/qemuxml2argvdata/numad-auto-memory-vcpu-no-cpuset-and-placement.xml
index d9cd6b83f1..80314d05a3 100644
--- a/tests/qemuxml2argvdata/numad-auto-memory-vcpu-no-cpuset-and-placement.xml
+++ b/tests/qemuxml2argvdata/numad-auto-memory-vcpu-no-cpuset-and-placement.xml
@@ -12,7 +12,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuxml2argvdata/numad-auto-vcpu-no-numatune.xml b/tests/qemuxml2argvdata/numad-auto-vcpu-no-numatune.xml
index f21ba0a786..0edf8ee46f 100644
--- a/tests/qemuxml2argvdata/numad-auto-vcpu-no-numatune.xml
+++ b/tests/qemuxml2argvdata/numad-auto-vcpu-no-numatune.xml
@@ -9,7 +9,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuxml2argvdata/numad-auto-vcpu-static-numatune-no-nodeset.xml b/tests/qemuxml2argvdata/numad-auto-vcpu-static-numatune-no-nodeset.xml
index 378d17face..517dd5dbd7 100644
--- a/tests/qemuxml2argvdata/numad-auto-vcpu-static-numatune-no-nodeset.xml
+++ b/tests/qemuxml2argvdata/numad-auto-vcpu-static-numatune-no-nodeset.xml
@@ -12,7 +12,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuxml2argvdata/numad-auto-vcpu-static-numatune.xml b/tests/qemuxml2argvdata/numad-auto-vcpu-static-numatune.xml
index e20bd8db0b..a7f32b6802 100644
--- a/tests/qemuxml2argvdata/numad-auto-vcpu-static-numatune.xml
+++ b/tests/qemuxml2argvdata/numad-auto-vcpu-static-numatune.xml
@@ -12,7 +12,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuxml2argvdata/numad-static-memory-auto-vcpu.xml b/tests/qemuxml2argvdata/numad-static-memory-auto-vcpu.xml
index 50dbc3c466..5758e65d09 100644
--- a/tests/qemuxml2argvdata/numad-static-memory-auto-vcpu.xml
+++ b/tests/qemuxml2argvdata/numad-static-memory-auto-vcpu.xml
@@ -12,7 +12,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuxml2argvdata/numad-static-vcpu-no-numatune.xml b/tests/qemuxml2argvdata/numad-static-vcpu-no-numatune.xml
index 7ccaa5aff4..3237e7c7c5 100644
--- a/tests/qemuxml2argvdata/numad-static-vcpu-no-numatune.xml
+++ b/tests/qemuxml2argvdata/numad-static-vcpu-no-numatune.xml
@@ -9,7 +9,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuxml2argvdata/numad.xml b/tests/qemuxml2argvdata/numad.xml
index 081a59a013..ae995e2d6b 100644
--- a/tests/qemuxml2argvdata/numad.xml
+++ b/tests/qemuxml2argvdata/numad.xml
@@ -12,7 +12,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuxml2argvdata/numatune-auto-nodeset-invalid.xml b/tests/qemuxml2argvdata/numatune-auto-nodeset-invalid.xml
index 44ec55a810..e6ca895b0d 100644
--- a/tests/qemuxml2argvdata/numatune-auto-nodeset-invalid.xml
+++ b/tests/qemuxml2argvdata/numatune-auto-nodeset-invalid.xml
@@ -12,7 +12,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuxml2argvdata/numatune-memory-invalid-nodeset.xml b/tests/qemuxml2argvdata/numatune-memory-invalid-nodeset.xml
index 441f2b8989..70e7b92f34 100644
--- a/tests/qemuxml2argvdata/numatune-memory-invalid-nodeset.xml
+++ b/tests/qemuxml2argvdata/numatune-memory-invalid-nodeset.xml
@@ -12,7 +12,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuxml2argvdata/numatune-memory.xml b/tests/qemuxml2argvdata/numatune-memory.xml
index c9887dbebc..93ee70cc0b 100644
--- a/tests/qemuxml2argvdata/numatune-memory.xml
+++ b/tests/qemuxml2argvdata/numatune-memory.xml
@@ -12,7 +12,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuxml2argvdata/pci-expander-bus-bad-machine.xml b/tests/qemuxml2argvdata/pci-expander-bus-bad-machine.xml
index 606ddfd73c..5093944a1c 100644
--- a/tests/qemuxml2argvdata/pci-expander-bus-bad-machine.xml
+++ b/tests/qemuxml2argvdata/pci-expander-bus-bad-machine.xml
@@ -8,7 +8,7 @@
     <type arch='x86_64' machine='q35'>hvm</type>
   </os>
   <cpu>
-    <topology sockets='2' cores='4' threads='2'/>
+    <topology sockets='2' dies='1' cores='4' threads='2'/>
     <numa>
       <cell cpus='0-7' memory='109550' unit='KiB'/>
       <cell cpus='8-15' memory='109550' unit='KiB'/>
diff --git a/tests/qemuxml2argvdata/pci-expander-bus.xml b/tests/qemuxml2argvdata/pci-expander-bus.xml
index 79c959346d..d9aeda1757 100644
--- a/tests/qemuxml2argvdata/pci-expander-bus.xml
+++ b/tests/qemuxml2argvdata/pci-expander-bus.xml
@@ -8,7 +8,7 @@
     <type arch='x86_64' machine='pc-i440fx-2.5'>hvm</type>
   </os>
   <cpu>
-    <topology sockets='2' cores='4' threads='2'/>
+    <topology sockets='2' dies='1' cores='4' threads='2'/>
     <numa>
       <cell cpus='0-7' memory='109550' unit='KiB'/>
       <cell cpus='8-15' memory='109550' unit='KiB'/>
diff --git a/tests/qemuxml2argvdata/pcie-expander-bus-bad-bus.xml b/tests/qemuxml2argvdata/pcie-expander-bus-bad-bus.xml
index f0ab0a16d1..4a6cb492bb 100644
--- a/tests/qemuxml2argvdata/pcie-expander-bus-bad-bus.xml
+++ b/tests/qemuxml2argvdata/pcie-expander-bus-bad-bus.xml
@@ -9,7 +9,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='4' threads='2'/>
+    <topology sockets='2' dies='1' cores='4' threads='2'/>
     <numa>
       <cell cpus='0-7' memory='109550' unit='KiB'/>
       <cell cpus='8-15' memory='109550' unit='KiB'/>
diff --git a/tests/qemuxml2argvdata/pcie-expander-bus-bad-machine.xml b/tests/qemuxml2argvdata/pcie-expander-bus-bad-machine.xml
index dc64d97b83..1c27047b75 100644
--- a/tests/qemuxml2argvdata/pcie-expander-bus-bad-machine.xml
+++ b/tests/qemuxml2argvdata/pcie-expander-bus-bad-machine.xml
@@ -8,7 +8,7 @@
     <type arch='x86_64' machine='pc-i440fx-2.5'>hvm</type>
   </os>
   <cpu>
-    <topology sockets='2' cores='4' threads='2'/>
+    <topology sockets='2' dies='1' cores='4' threads='2'/>
     <numa>
       <cell cpus='0-7' memory='109550' unit='KiB'/>
       <cell cpus='8-15' memory='109550' unit='KiB'/>
diff --git a/tests/qemuxml2argvdata/pcie-expander-bus.xml b/tests/qemuxml2argvdata/pcie-expander-bus.xml
index 5c5d34d1e0..80693f8a1c 100644
--- a/tests/qemuxml2argvdata/pcie-expander-bus.xml
+++ b/tests/qemuxml2argvdata/pcie-expander-bus.xml
@@ -9,7 +9,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='4' threads='2'/>
+    <topology sockets='2' dies='1' cores='4' threads='2'/>
     <numa>
       <cell cpus='0-7' memory='109550' unit='KiB'/>
       <cell cpus='8-15' memory='109550' unit='KiB'/>
diff --git a/tests/qemuxml2argvdata/pseries-default-phb-numa-node.xml b/tests/qemuxml2argvdata/pseries-default-phb-numa-node.xml
index 12d277aaf8..27f211d59d 100644
--- a/tests/qemuxml2argvdata/pseries-default-phb-numa-node.xml
+++ b/tests/qemuxml2argvdata/pseries-default-phb-numa-node.xml
@@ -7,7 +7,7 @@
     <memnode cellid="0" mode="strict" nodeset="1"/>
   </numatune>
   <cpu>
-    <topology sockets='3' cores='1' threads='8'/>
+    <topology sockets='3' dies='1' cores='1' threads='8'/>
     <numa>
       <cell id='0' cpus='0-23' memory='1048576' unit='KiB'/>
     </numa>
diff --git a/tests/qemuxml2argvdata/pseries-phb-numa-node.xml b/tests/qemuxml2argvdata/pseries-phb-numa-node.xml
index aeccb14dfb..52c39d5dbd 100644
--- a/tests/qemuxml2argvdata/pseries-phb-numa-node.xml
+++ b/tests/qemuxml2argvdata/pseries-phb-numa-node.xml
@@ -8,7 +8,7 @@
     <memnode cellid="1" mode="strict" nodeset="2"/>
   </numatune>
   <cpu>
-    <topology sockets='2' cores='1' threads='4'/>
+    <topology sockets='2' dies='1' cores='1' threads='4'/>
     <numa>
       <cell id='0' cpus='0-3' memory='1048576' unit='KiB'/>
       <cell id='1' cpus='4-7' memory='1048576' unit='KiB'/>
diff --git a/tests/qemuxml2argvdata/smp.xml b/tests/qemuxml2argvdata/smp.xml
index 55d5cdeff2..6041506ed8 100644
--- a/tests/qemuxml2argvdata/smp.xml
+++ b/tests/qemuxml2argvdata/smp.xml
@@ -9,7 +9,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuxml2xmloutdata/cpu-numa-disjoint.xml b/tests/qemuxml2xmloutdata/cpu-numa-disjoint.xml
index f0ca39b5d3..d7f5372fbc 100644
--- a/tests/qemuxml2xmloutdata/cpu-numa-disjoint.xml
+++ b/tests/qemuxml2xmloutdata/cpu-numa-disjoint.xml
@@ -9,7 +9,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='4' threads='2'/>
+    <topology sockets='2' dies='1' cores='4' threads='2'/>
     <numa>
       <cell id='0' cpus='0-3,8-11' memory='109550' unit='KiB'/>
       <cell id='1' cpus='4-7,12-15' memory='109550' unit='KiB'/>
diff --git a/tests/qemuxml2xmloutdata/cpu-numa-disordered.xml b/tests/qemuxml2xmloutdata/cpu-numa-disordered.xml
index 1e672adc44..487ced1008 100644
--- a/tests/qemuxml2xmloutdata/cpu-numa-disordered.xml
+++ b/tests/qemuxml2xmloutdata/cpu-numa-disordered.xml
@@ -9,7 +9,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='4' threads='2'/>
+    <topology sockets='2' dies='1' cores='4' threads='2'/>
     <numa>
       <cell id='0' cpus='0-5' memory='109550' unit='KiB'/>
       <cell id='1' cpus='11-15' memory='109550' unit='KiB'/>
diff --git a/tests/qemuxml2xmloutdata/cpu-numa-memshared.xml b/tests/qemuxml2xmloutdata/cpu-numa-memshared.xml
index 3db0db047c..f472bffec3 100644
--- a/tests/qemuxml2xmloutdata/cpu-numa-memshared.xml
+++ b/tests/qemuxml2xmloutdata/cpu-numa-memshared.xml
@@ -9,7 +9,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='4' threads='2'/>
+    <topology sockets='2' dies='1' cores='4' threads='2'/>
     <numa>
       <cell id='0' cpus='0-7' memory='109550' unit='KiB' memAccess='shared'/>
       <cell id='1' cpus='8-15' memory='109550' unit='KiB' memAccess='private'/>
diff --git a/tests/qemuxml2xmloutdata/cpu-numa-no-memory-element.xml b/tests/qemuxml2xmloutdata/cpu-numa-no-memory-element.xml
index 8596baae6c..2ef7f84646 100644
--- a/tests/qemuxml2xmloutdata/cpu-numa-no-memory-element.xml
+++ b/tests/qemuxml2xmloutdata/cpu-numa-no-memory-element.xml
@@ -9,7 +9,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='4' threads='2'/>
+    <topology sockets='2' dies='1' cores='4' threads='2'/>
     <numa>
       <cell id='0' cpus='0-7' memory='109550' unit='KiB'/>
       <cell id='1' cpus='8-15' memory='109550' unit='KiB'/>
diff --git a/tests/qemuxml2xmloutdata/cpu-numa1.xml b/tests/qemuxml2xmloutdata/cpu-numa1.xml
index 8596baae6c..2ef7f84646 100644
--- a/tests/qemuxml2xmloutdata/cpu-numa1.xml
+++ b/tests/qemuxml2xmloutdata/cpu-numa1.xml
@@ -9,7 +9,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='4' threads='2'/>
+    <topology sockets='2' dies='1' cores='4' threads='2'/>
     <numa>
       <cell id='0' cpus='0-7' memory='109550' unit='KiB'/>
       <cell id='1' cpus='8-15' memory='109550' unit='KiB'/>
diff --git a/tests/qemuxml2xmloutdata/cpu-numa2.xml b/tests/qemuxml2xmloutdata/cpu-numa2.xml
index 8596baae6c..2ef7f84646 100644
--- a/tests/qemuxml2xmloutdata/cpu-numa2.xml
+++ b/tests/qemuxml2xmloutdata/cpu-numa2.xml
@@ -9,7 +9,7 @@
     <boot dev='network'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='4' threads='2'/>
+    <topology sockets='2' dies='1' cores='4' threads='2'/>
     <numa>
       <cell id='0' cpus='0-7' memory='109550' unit='KiB'/>
       <cell id='1' cpus='8-15' memory='109550' unit='KiB'/>
diff --git a/tests/qemuxml2xmloutdata/graphics-spice-timeout.xml b/tests/qemuxml2xmloutdata/graphics-spice-timeout.xml
index 3f0babd8fc..6e23652448 100644
--- a/tests/qemuxml2xmloutdata/graphics-spice-timeout.xml
+++ b/tests/qemuxml2xmloutdata/graphics-spice-timeout.xml
@@ -18,7 +18,7 @@
   <cpu mode='custom' match='exact' check='partial'>
     <model fallback='allow'>core2duo</model>
     <vendor>Intel</vendor>
-    <topology sockets='1' cores='2' threads='1'/>
+    <topology sockets='1' dies='1' cores='2' threads='1'/>
     <feature policy='require' name='ds'/>
     <feature policy='require' name='acpi'/>
     <feature policy='require' name='ss'/>
diff --git a/tests/qemuxml2xmloutdata/memory-hotplug-dimm.xml b/tests/qemuxml2xmloutdata/memory-hotplug-dimm.xml
index f4a118cea5..326b5c954c 100644
--- a/tests/qemuxml2xmloutdata/memory-hotplug-dimm.xml
+++ b/tests/qemuxml2xmloutdata/memory-hotplug-dimm.xml
@@ -14,7 +14,7 @@
     <gid start='0' target='1000' count='10'/>
   </idmap>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
     <numa>
       <cell id='0' cpus='0-1' memory='219136' unit='KiB'/>
     </numa>
diff --git a/tests/qemuxml2xmloutdata/memory-hotplug.xml b/tests/qemuxml2xmloutdata/memory-hotplug.xml
index 0e02f210bc..0e5295dcd0 100644
--- a/tests/qemuxml2xmloutdata/memory-hotplug.xml
+++ b/tests/qemuxml2xmloutdata/memory-hotplug.xml
@@ -10,7 +10,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
     <numa>
       <cell id='0' cpus='0-1' memory='219136' unit='KiB'/>
     </numa>
diff --git a/tests/qemuxml2xmloutdata/numad-auto-memory-vcpu-cpuset.xml b/tests/qemuxml2xmloutdata/numad-auto-memory-vcpu-cpuset.xml
index 133177b679..841ea699a1 100644
--- a/tests/qemuxml2xmloutdata/numad-auto-memory-vcpu-cpuset.xml
+++ b/tests/qemuxml2xmloutdata/numad-auto-memory-vcpu-cpuset.xml
@@ -12,7 +12,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuxml2xmloutdata/numad-auto-memory-vcpu-no-cpuset-and-placement.xml b/tests/qemuxml2xmloutdata/numad-auto-memory-vcpu-no-cpuset-and-placement.xml
index dc14ecd139..2e3998e155 100644
--- a/tests/qemuxml2xmloutdata/numad-auto-memory-vcpu-no-cpuset-and-placement.xml
+++ b/tests/qemuxml2xmloutdata/numad-auto-memory-vcpu-no-cpuset-and-placement.xml
@@ -12,7 +12,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuxml2xmloutdata/numad-auto-vcpu-no-numatune.xml b/tests/qemuxml2xmloutdata/numad-auto-vcpu-no-numatune.xml
index 76d7c3b835..7c1f18c216 100644
--- a/tests/qemuxml2xmloutdata/numad-auto-vcpu-no-numatune.xml
+++ b/tests/qemuxml2xmloutdata/numad-auto-vcpu-no-numatune.xml
@@ -12,7 +12,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuxml2xmloutdata/numad-static-vcpu-no-numatune.xml b/tests/qemuxml2xmloutdata/numad-static-vcpu-no-numatune.xml
index 523962117e..3d05790c0e 100644
--- a/tests/qemuxml2xmloutdata/numad-static-vcpu-no-numatune.xml
+++ b/tests/qemuxml2xmloutdata/numad-static-vcpu-no-numatune.xml
@@ -9,7 +9,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuxml2xmloutdata/pci-expander-bus.xml b/tests/qemuxml2xmloutdata/pci-expander-bus.xml
index e0d787e57c..60e4e4af7f 100644
--- a/tests/qemuxml2xmloutdata/pci-expander-bus.xml
+++ b/tests/qemuxml2xmloutdata/pci-expander-bus.xml
@@ -9,7 +9,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='4' threads='2'/>
+    <topology sockets='2' dies='1' cores='4' threads='2'/>
     <numa>
       <cell id='0' cpus='0-7' memory='109550' unit='KiB'/>
       <cell id='1' cpus='8-15' memory='109550' unit='KiB'/>
diff --git a/tests/qemuxml2xmloutdata/pcie-expander-bus.xml b/tests/qemuxml2xmloutdata/pcie-expander-bus.xml
index 643b4823bb..452d476da6 100644
--- a/tests/qemuxml2xmloutdata/pcie-expander-bus.xml
+++ b/tests/qemuxml2xmloutdata/pcie-expander-bus.xml
@@ -9,7 +9,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='4' threads='2'/>
+    <topology sockets='2' dies='1' cores='4' threads='2'/>
     <numa>
       <cell id='0' cpus='0-7' memory='109550' unit='KiB'/>
       <cell id='1' cpus='8-15' memory='109550' unit='KiB'/>
diff --git a/tests/qemuxml2xmloutdata/pseries-phb-numa-node.xml b/tests/qemuxml2xmloutdata/pseries-phb-numa-node.xml
index 80b771e89d..b05ac334a6 100644
--- a/tests/qemuxml2xmloutdata/pseries-phb-numa-node.xml
+++ b/tests/qemuxml2xmloutdata/pseries-phb-numa-node.xml
@@ -13,7 +13,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='1' threads='4'/>
+    <topology sockets='2' dies='1' cores='1' threads='4'/>
     <numa>
       <cell id='0' cpus='0-3' memory='1048576' unit='KiB'/>
       <cell id='1' cpus='4-7' memory='1048576' unit='KiB'/>
diff --git a/tests/qemuxml2xmloutdata/smp.xml b/tests/qemuxml2xmloutdata/smp.xml
index d3712cb7df..3e00f578e5 100644
--- a/tests/qemuxml2xmloutdata/smp.xml
+++ b/tests/qemuxml2xmloutdata/smp.xml
@@ -9,7 +9,7 @@
     <boot dev='hd'/>
   </os>
   <cpu>
-    <topology sockets='2' cores='1' threads='1'/>
+    <topology sockets='2' dies='1' cores='1' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/vmx2xmldata/vmx2xml-esx-in-the-wild-8.xml b/tests/vmx2xmldata/vmx2xml-esx-in-the-wild-8.xml
index eba5f4734a..2011bfb3b9 100644
--- a/tests/vmx2xmldata/vmx2xml-esx-in-the-wild-8.xml
+++ b/tests/vmx2xmldata/vmx2xml-esx-in-the-wild-8.xml
@@ -11,7 +11,7 @@
     <type arch='x86_64'>hvm</type>
   </os>
   <cpu>
-    <topology sockets='4' cores='2' threads='1'/>
+    <topology sockets='4' dies='1' cores='2' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
diff --git a/tests/vmx2xmldata/vmx2xml-esx-in-the-wild-9.xml b/tests/vmx2xmldata/vmx2xml-esx-in-the-wild-9.xml
index f1fe6dd4c9..fa428c1986 100644
--- a/tests/vmx2xmldata/vmx2xml-esx-in-the-wild-9.xml
+++ b/tests/vmx2xmldata/vmx2xml-esx-in-the-wild-9.xml
@@ -12,7 +12,7 @@
     <type arch='x86_64'>hvm</type>
   </os>
   <cpu>
-    <topology sockets='4' cores='4' threads='1'/>
+    <topology sockets='4' dies='1' cores='4' threads='1'/>
   </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
-- 
2.25.0