d76c62
From 15b2ac591a1c024ecf92a7e40d22eed6e59684b8 Mon Sep 17 00:00:00 2001
d76c62
Message-Id: <15b2ac591a1c024ecf92a7e40d22eed6e59684b8@dist-git>
d76c62
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
d76c62
Date: Mon, 3 Feb 2020 18:07:25 +0000
d76c62
Subject: [PATCH] hostcpu: add support for reporting die_id in NUMA topology
d76c62
MIME-Version: 1.0
d76c62
Content-Type: text/plain; charset=UTF-8
d76c62
Content-Transfer-Encoding: 8bit
d76c62
d76c62
Update the host CPU code to report the die_id in the NUMA topology
d76c62
capabilities. On systems with multiple dies, this fixes the bug
d76c62
where CPU cores can't be distinguished:
d76c62
d76c62
 <cpus num='12'>
d76c62
   <cpu id='0' socket_id='0' core_id='0' siblings='0'/>
d76c62
   <cpu id='1' socket_id='0' core_id='1' siblings='1'/>
d76c62
   <cpu id='2' socket_id='0' core_id='0' siblings='2'/>
d76c62
   <cpu id='3' socket_id='0' core_id='1' siblings='3'/>
d76c62
 </cpus>
d76c62
d76c62
Notice how core_id is repeated within the scope of the same socket_id.
d76c62
d76c62
It now reports
d76c62
d76c62
 <cpus num='12'>
d76c62
   <cpu id='0' socket_id='0' die_id='0' core_id='0' siblings='0'/>
d76c62
   <cpu id='1' socket_id='0' die_id='0' core_id='1' siblings='1'/>
d76c62
   <cpu id='2' socket_id='0' die_id='1' core_id='0' siblings='2'/>
d76c62
   <cpu id='3' socket_id='0' die_id='1' core_id='1' siblings='3'/>
d76c62
 </cpus>
d76c62
d76c62
So core_id is now unique within a (socket_id, die_id) pair.
d76c62
d76c62
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
d76c62
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
d76c62
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
d76c62
(cherry picked from commit 7b79ee2f78bbf2af76df2f6466919e19ae05aeeb)
d76c62
d76c62
BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1785211
d76c62
Message-Id: <20200203180726.2203691-5-berrange@redhat.com>
d76c62
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
d76c62
---
d76c62
 docs/schemas/capability.rng                   |  3 ++
d76c62
 src/conf/capabilities.c                       |  5 ++-
d76c62
 src/conf/capabilities.h                       |  1 +
d76c62
 src/libvirt_linux.syms                        |  1 +
d76c62
 src/util/virhostcpu.c                         | 16 ++++++++++
d76c62
 src/util/virhostcpu.h                         |  1 +
d76c62
 .../vircaps2xmldata/vircaps-aarch64-basic.xml | 32 +++++++++----------
d76c62
 .../vircaps2xmldata/vircaps-x86_64-basic.xml  | 32 +++++++++----------
d76c62
 .../vircaps2xmldata/vircaps-x86_64-caches.xml | 16 +++++-----
d76c62
 .../vircaps-x86_64-resctrl-cdp.xml            | 24 +++++++-------
d76c62
 .../vircaps-x86_64-resctrl-cmt.xml            | 24 +++++++-------
d76c62
 .../vircaps-x86_64-resctrl-fake-feature.xml   | 24 +++++++-------
d76c62
 .../vircaps-x86_64-resctrl-skx-twocaches.xml  |  2 +-
d76c62
 .../vircaps-x86_64-resctrl-skx.xml            |  2 +-
d76c62
 .../vircaps-x86_64-resctrl.xml                | 24 +++++++-------
d76c62
 15 files changed, 116 insertions(+), 91 deletions(-)
d76c62
d76c62
diff --git a/docs/schemas/capability.rng b/docs/schemas/capability.rng
d76c62
index 91ee523116..031c55bf20 100644
d76c62
--- a/docs/schemas/capability.rng
d76c62
+++ b/docs/schemas/capability.rng
d76c62
@@ -265,6 +265,9 @@
d76c62
         <attribute name='socket_id'>
d76c62
           <ref name='unsignedInt'/>
d76c62
         </attribute>
d76c62
+        <attribute name='die_id'>
d76c62
+          <ref name='unsignedInt'/>
d76c62
+        </attribute>
d76c62
         <attribute name='core_id'>
d76c62
           <ref name='unsignedInt'/>
d76c62
         </attribute>
d76c62
diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c
d76c62
index bf1d9936ed..4bbc79334e 100644
d76c62
--- a/src/conf/capabilities.c
d76c62
+++ b/src/conf/capabilities.c
d76c62
@@ -874,8 +874,9 @@ virCapabilitiesHostNUMAFormat(virCapsHostNUMAPtr caps,
d76c62
                     return -1;
d76c62
 
d76c62
                 virBufferAsprintf(buf,
d76c62
-                                  " socket_id='%d' core_id='%d' siblings='%s'",
d76c62
+                                  " socket_id='%d' die_id='%d' core_id='%d' siblings='%s'",
d76c62
                                   cell->cpus[j].socket_id,
d76c62
+                                  cell->cpus[j].die_id,
d76c62
                                   cell->cpus[j].core_id,
d76c62
                                   siblings);
d76c62
                 VIR_FREE(siblings);
d76c62
@@ -1463,6 +1464,7 @@ virCapabilitiesFillCPUInfo(int cpu_id G_GNUC_UNUSED,
d76c62
     cpu->id = cpu_id;
d76c62
 
d76c62
     if (virHostCPUGetSocket(cpu_id, &cpu->socket_id) < 0 ||
d76c62
+        virHostCPUGetDie(cpu_id, &cpu->die_id) < 0 ||
d76c62
         virHostCPUGetCore(cpu_id, &cpu->core_id) < 0)
d76c62
         return -1;
d76c62
 
d76c62
@@ -1591,6 +1593,7 @@ virCapabilitiesHostNUMAInitFake(virCapsHostNUMAPtr caps)
d76c62
                         goto error;
d76c62
                     if (tmp) {
d76c62
                         cpus[cid].id = id;
d76c62
+                        cpus[cid].die_id = 0;
d76c62
                         cpus[cid].socket_id = s;
d76c62
                         cpus[cid].core_id = c;
d76c62
                         if (!(cpus[cid].siblings = virBitmapNew(ncpus)))
d76c62
diff --git a/src/conf/capabilities.h b/src/conf/capabilities.h
d76c62
index 4a49e94aa5..75f29666c9 100644
d76c62
--- a/src/conf/capabilities.h
d76c62
+++ b/src/conf/capabilities.h
d76c62
@@ -88,6 +88,7 @@ struct _virCapsGuest {
d76c62
 struct _virCapsHostNUMACellCPU {
d76c62
     unsigned int id;
d76c62
     unsigned int socket_id;
d76c62
+    unsigned int die_id;
d76c62
     unsigned int core_id;
d76c62
     virBitmapPtr siblings;
d76c62
 };
d76c62
diff --git a/src/libvirt_linux.syms b/src/libvirt_linux.syms
d76c62
index 5fa2c790ef..55649ae39c 100644
d76c62
--- a/src/libvirt_linux.syms
d76c62
+++ b/src/libvirt_linux.syms
d76c62
@@ -4,6 +4,7 @@
d76c62
 
d76c62
 # util/virhostcpu.h
d76c62
 virHostCPUGetCore;
d76c62
+virHostCPUGetDie;
d76c62
 virHostCPUGetInfoPopulateLinux;
d76c62
 virHostCPUGetSiblingsList;
d76c62
 virHostCPUGetSocket;
d76c62
diff --git a/src/util/virhostcpu.c b/src/util/virhostcpu.c
d76c62
index 256976cce1..09c959cd25 100644
d76c62
--- a/src/util/virhostcpu.c
d76c62
+++ b/src/util/virhostcpu.c
d76c62
@@ -218,6 +218,22 @@ virHostCPUGetSocket(unsigned int cpu, unsigned int *socket)
d76c62
     return 0;
d76c62
 }
d76c62
 
d76c62
+int
d76c62
+virHostCPUGetDie(unsigned int cpu, unsigned int *die)
d76c62
+{
d76c62
+    int ret = virFileReadValueUint(die,
d76c62
+                                   "%s/cpu/cpu%u/topology/die_id",
d76c62
+                                   SYSFS_SYSTEM_PATH, cpu);
d76c62
+
d76c62
+    /* If the file is not there, it's 0 */
d76c62
+    if (ret == -2)
d76c62
+        *die = 0;
d76c62
+    else if (ret < 0)
d76c62
+        return -1;
d76c62
+
d76c62
+    return 0;
d76c62
+}
d76c62
+
d76c62
 int
d76c62
 virHostCPUGetCore(unsigned int cpu, unsigned int *core)
d76c62
 {
d76c62
diff --git a/src/util/virhostcpu.h b/src/util/virhostcpu.h
d76c62
index d95d380d4a..9be2e51a38 100644
d76c62
--- a/src/util/virhostcpu.h
d76c62
+++ b/src/util/virhostcpu.h
d76c62
@@ -65,6 +65,7 @@ int virHostCPUStatsAssign(virNodeCPUStatsPtr param,
d76c62
 
d76c62
 #ifdef __linux__
d76c62
 int virHostCPUGetSocket(unsigned int cpu, unsigned int *socket);
d76c62
+int virHostCPUGetDie(unsigned int cpu, unsigned int *die);
d76c62
 int virHostCPUGetCore(unsigned int cpu, unsigned int *core);
d76c62
 
d76c62
 virBitmapPtr virHostCPUGetSiblingsList(unsigned int cpu);
d76c62
diff --git a/tests/vircaps2xmldata/vircaps-aarch64-basic.xml b/tests/vircaps2xmldata/vircaps-aarch64-basic.xml
d76c62
index 50466f9162..0a04052c40 100644
d76c62
--- a/tests/vircaps2xmldata/vircaps-aarch64-basic.xml
d76c62
+++ b/tests/vircaps2xmldata/vircaps-aarch64-basic.xml
d76c62
@@ -16,10 +16,10 @@
d76c62
           <pages unit='KiB' size='2048'>4096</pages>
d76c62
           <pages unit='KiB' size='1048576'>6144</pages>
d76c62
           <cpus num='4'>
d76c62
-            <cpu id='0' socket_id='0' core_id='0' siblings='0'/>
d76c62
-            <cpu id='1' socket_id='0' core_id='1' siblings='1'/>
d76c62
-            <cpu id='2' socket_id='0' core_id='2' siblings='2'/>
d76c62
-            <cpu id='3' socket_id='0' core_id='3' siblings='3'/>
d76c62
+            <cpu id='0' socket_id='0' die_id='0' core_id='0' siblings='0'/>
d76c62
+            <cpu id='1' socket_id='0' die_id='0' core_id='1' siblings='1'/>
d76c62
+            <cpu id='2' socket_id='0' die_id='0' core_id='2' siblings='2'/>
d76c62
+            <cpu id='3' socket_id='0' die_id='0' core_id='3' siblings='3'/>
d76c62
           </cpus>
d76c62
         </cell>
d76c62
         <cell id='1'>
d76c62
@@ -28,10 +28,10 @@
d76c62
           <pages unit='KiB' size='2048'>6144</pages>
d76c62
           <pages unit='KiB' size='1048576'>8192</pages>
d76c62
           <cpus num='4'>
d76c62
-            <cpu id='4' socket_id='1' core_id='4' siblings='4'/>
d76c62
-            <cpu id='5' socket_id='1' core_id='5' siblings='5'/>
d76c62
-            <cpu id='6' socket_id='1' core_id='6' siblings='6'/>
d76c62
-            <cpu id='7' socket_id='1' core_id='7' siblings='7'/>
d76c62
+            <cpu id='4' socket_id='1' die_id='0' core_id='4' siblings='4'/>
d76c62
+            <cpu id='5' socket_id='1' die_id='0' core_id='5' siblings='5'/>
d76c62
+            <cpu id='6' socket_id='1' die_id='0' core_id='6' siblings='6'/>
d76c62
+            <cpu id='7' socket_id='1' die_id='0' core_id='7' siblings='7'/>
d76c62
           </cpus>
d76c62
         </cell>
d76c62
         <cell id='2'>
d76c62
@@ -40,10 +40,10 @@
d76c62
           <pages unit='KiB' size='2048'>8192</pages>
d76c62
           <pages unit='KiB' size='1048576'>10240</pages>
d76c62
           <cpus num='4'>
d76c62
-            <cpu id='8' socket_id='2' core_id='8' siblings='8'/>
d76c62
-            <cpu id='9' socket_id='2' core_id='9' siblings='9'/>
d76c62
-            <cpu id='10' socket_id='2' core_id='10' siblings='10'/>
d76c62
-            <cpu id='11' socket_id='2' core_id='11' siblings='11'/>
d76c62
+            <cpu id='8' socket_id='2' die_id='0' core_id='8' siblings='8'/>
d76c62
+            <cpu id='9' socket_id='2' die_id='0' core_id='9' siblings='9'/>
d76c62
+            <cpu id='10' socket_id='2' die_id='0' core_id='10' siblings='10'/>
d76c62
+            <cpu id='11' socket_id='2' die_id='0' core_id='11' siblings='11'/>
d76c62
           </cpus>
d76c62
         </cell>
d76c62
         <cell id='3'>
d76c62
@@ -52,10 +52,10 @@
d76c62
           <pages unit='KiB' size='2048'>10240</pages>
d76c62
           <pages unit='KiB' size='1048576'>12288</pages>
d76c62
           <cpus num='4'>
d76c62
-            <cpu id='12' socket_id='3' core_id='12' siblings='12'/>
d76c62
-            <cpu id='13' socket_id='3' core_id='13' siblings='13'/>
d76c62
-            <cpu id='14' socket_id='3' core_id='14' siblings='14'/>
d76c62
-            <cpu id='15' socket_id='3' core_id='15' siblings='15'/>
d76c62
+            <cpu id='12' socket_id='3' die_id='0' core_id='12' siblings='12'/>
d76c62
+            <cpu id='13' socket_id='3' die_id='0' core_id='13' siblings='13'/>
d76c62
+            <cpu id='14' socket_id='3' die_id='0' core_id='14' siblings='14'/>
d76c62
+            <cpu id='15' socket_id='3' die_id='0' core_id='15' siblings='15'/>
d76c62
           </cpus>
d76c62
         </cell>
d76c62
       </cells>
d76c62
diff --git a/tests/vircaps2xmldata/vircaps-x86_64-basic.xml b/tests/vircaps2xmldata/vircaps-x86_64-basic.xml
d76c62
index e7be6def3e..4da09f889c 100644
d76c62
--- a/tests/vircaps2xmldata/vircaps-x86_64-basic.xml
d76c62
+++ b/tests/vircaps2xmldata/vircaps-x86_64-basic.xml
d76c62
@@ -14,10 +14,10 @@
d76c62
           <pages unit='KiB' size='2048'>4096</pages>
d76c62
           <pages unit='KiB' size='1048576'>6144</pages>
d76c62
           <cpus num='4'>
d76c62
-            <cpu id='0' socket_id='0' core_id='0' siblings='0'/>
d76c62
-            <cpu id='1' socket_id='0' core_id='1' siblings='1'/>
d76c62
-            <cpu id='2' socket_id='0' core_id='2' siblings='2'/>
d76c62
-            <cpu id='3' socket_id='0' core_id='3' siblings='3'/>
d76c62
+            <cpu id='0' socket_id='0' die_id='0' core_id='0' siblings='0'/>
d76c62
+            <cpu id='1' socket_id='0' die_id='0' core_id='1' siblings='1'/>
d76c62
+            <cpu id='2' socket_id='0' die_id='0' core_id='2' siblings='2'/>
d76c62
+            <cpu id='3' socket_id='0' die_id='0' core_id='3' siblings='3'/>
d76c62
           </cpus>
d76c62
         </cell>
d76c62
         <cell id='1'>
d76c62
@@ -26,10 +26,10 @@
d76c62
           <pages unit='KiB' size='2048'>6144</pages>
d76c62
           <pages unit='KiB' size='1048576'>8192</pages>
d76c62
           <cpus num='4'>
d76c62
-            <cpu id='4' socket_id='1' core_id='4' siblings='4'/>
d76c62
-            <cpu id='5' socket_id='1' core_id='5' siblings='5'/>
d76c62
-            <cpu id='6' socket_id='1' core_id='6' siblings='6'/>
d76c62
-            <cpu id='7' socket_id='1' core_id='7' siblings='7'/>
d76c62
+            <cpu id='4' socket_id='1' die_id='0' core_id='4' siblings='4'/>
d76c62
+            <cpu id='5' socket_id='1' die_id='0' core_id='5' siblings='5'/>
d76c62
+            <cpu id='6' socket_id='1' die_id='0' core_id='6' siblings='6'/>
d76c62
+            <cpu id='7' socket_id='1' die_id='0' core_id='7' siblings='7'/>
d76c62
           </cpus>
d76c62
         </cell>
d76c62
         <cell id='2'>
d76c62
@@ -38,10 +38,10 @@
d76c62
           <pages unit='KiB' size='2048'>8192</pages>
d76c62
           <pages unit='KiB' size='1048576'>10240</pages>
d76c62
           <cpus num='4'>
d76c62
-            <cpu id='8' socket_id='2' core_id='8' siblings='8'/>
d76c62
-            <cpu id='9' socket_id='2' core_id='9' siblings='9'/>
d76c62
-            <cpu id='10' socket_id='2' core_id='10' siblings='10'/>
d76c62
-            <cpu id='11' socket_id='2' core_id='11' siblings='11'/>
d76c62
+            <cpu id='8' socket_id='2' die_id='0' core_id='8' siblings='8'/>
d76c62
+            <cpu id='9' socket_id='2' die_id='0' core_id='9' siblings='9'/>
d76c62
+            <cpu id='10' socket_id='2' die_id='0' core_id='10' siblings='10'/>
d76c62
+            <cpu id='11' socket_id='2' die_id='0' core_id='11' siblings='11'/>
d76c62
           </cpus>
d76c62
         </cell>
d76c62
         <cell id='3'>
d76c62
@@ -50,10 +50,10 @@
d76c62
           <pages unit='KiB' size='2048'>10240</pages>
d76c62
           <pages unit='KiB' size='1048576'>12288</pages>
d76c62
           <cpus num='4'>
d76c62
-            <cpu id='12' socket_id='3' core_id='12' siblings='12'/>
d76c62
-            <cpu id='13' socket_id='3' core_id='13' siblings='13'/>
d76c62
-            <cpu id='14' socket_id='3' core_id='14' siblings='14'/>
d76c62
-            <cpu id='15' socket_id='3' core_id='15' siblings='15'/>
d76c62
+            <cpu id='12' socket_id='3' die_id='0' core_id='12' siblings='12'/>
d76c62
+            <cpu id='13' socket_id='3' die_id='0' core_id='13' siblings='13'/>
d76c62
+            <cpu id='14' socket_id='3' die_id='0' core_id='14' siblings='14'/>
d76c62
+            <cpu id='15' socket_id='3' die_id='0' core_id='15' siblings='15'/>
d76c62
           </cpus>
d76c62
         </cell>
d76c62
       </cells>
d76c62
diff --git a/tests/vircaps2xmldata/vircaps-x86_64-caches.xml b/tests/vircaps2xmldata/vircaps-x86_64-caches.xml
d76c62
index ca671a1640..28f00c0a90 100644
d76c62
--- a/tests/vircaps2xmldata/vircaps-x86_64-caches.xml
d76c62
+++ b/tests/vircaps2xmldata/vircaps-x86_64-caches.xml
d76c62
@@ -17,14 +17,14 @@
d76c62
           <pages unit='KiB' size='2048'>4096</pages>
d76c62
           <pages unit='KiB' size='1048576'>6144</pages>
d76c62
           <cpus num='8'>
d76c62
-            <cpu id='0' socket_id='0' core_id='0' siblings='0,4'/>
d76c62
-            <cpu id='1' socket_id='0' core_id='1' siblings='1,5'/>
d76c62
-            <cpu id='2' socket_id='0' core_id='2' siblings='2,6'/>
d76c62
-            <cpu id='3' socket_id='0' core_id='3' siblings='3,7'/>
d76c62
-            <cpu id='4' socket_id='0' core_id='0' siblings='0,4'/>
d76c62
-            <cpu id='5' socket_id='0' core_id='1' siblings='1,5'/>
d76c62
-            <cpu id='6' socket_id='0' core_id='2' siblings='2,6'/>
d76c62
-            <cpu id='7' socket_id='0' core_id='3' siblings='3,7'/>
d76c62
+            <cpu id='0' socket_id='0' die_id='0' core_id='0' siblings='0,4'/>
d76c62
+            <cpu id='1' socket_id='0' die_id='0' core_id='1' siblings='1,5'/>
d76c62
+            <cpu id='2' socket_id='0' die_id='0' core_id='2' siblings='2,6'/>
d76c62
+            <cpu id='3' socket_id='0' die_id='0' core_id='3' siblings='3,7'/>
d76c62
+            <cpu id='4' socket_id='0' die_id='0' core_id='0' siblings='0,4'/>
d76c62
+            <cpu id='5' socket_id='0' die_id='0' core_id='1' siblings='1,5'/>
d76c62
+            <cpu id='6' socket_id='0' die_id='0' core_id='2' siblings='2,6'/>
d76c62
+            <cpu id='7' socket_id='0' die_id='0' core_id='3' siblings='3,7'/>
d76c62
           </cpus>
d76c62
         </cell>
d76c62
       </cells>
d76c62
diff --git a/tests/vircaps2xmldata/vircaps-x86_64-resctrl-cdp.xml b/tests/vircaps2xmldata/vircaps-x86_64-resctrl-cdp.xml
d76c62
index 1d3df318c5..ee26fe9464 100644
d76c62
--- a/tests/vircaps2xmldata/vircaps-x86_64-resctrl-cdp.xml
d76c62
+++ b/tests/vircaps2xmldata/vircaps-x86_64-resctrl-cdp.xml
d76c62
@@ -17,12 +17,12 @@
d76c62
           <pages unit='KiB' size='2048'>4096</pages>
d76c62
           <pages unit='KiB' size='1048576'>6144</pages>
d76c62
           <cpus num='6'>
d76c62
-            <cpu id='0' socket_id='0' core_id='0' siblings='0'/>
d76c62
-            <cpu id='1' socket_id='0' core_id='1' siblings='1'/>
d76c62
-            <cpu id='2' socket_id='0' core_id='2' siblings='2'/>
d76c62
-            <cpu id='3' socket_id='0' core_id='3' siblings='3'/>
d76c62
-            <cpu id='4' socket_id='0' core_id='4' siblings='4'/>
d76c62
-            <cpu id='5' socket_id='0' core_id='5' siblings='5'/>
d76c62
+            <cpu id='0' socket_id='0' die_id='0' core_id='0' siblings='0'/>
d76c62
+            <cpu id='1' socket_id='0' die_id='0' core_id='1' siblings='1'/>
d76c62
+            <cpu id='2' socket_id='0' die_id='0' core_id='2' siblings='2'/>
d76c62
+            <cpu id='3' socket_id='0' die_id='0' core_id='3' siblings='3'/>
d76c62
+            <cpu id='4' socket_id='0' die_id='0' core_id='4' siblings='4'/>
d76c62
+            <cpu id='5' socket_id='0' die_id='0' core_id='5' siblings='5'/>
d76c62
           </cpus>
d76c62
         </cell>
d76c62
         <cell id='1'>
d76c62
@@ -31,12 +31,12 @@
d76c62
           <pages unit='KiB' size='2048'>6144</pages>
d76c62
           <pages unit='KiB' size='1048576'>8192</pages>
d76c62
           <cpus num='6'>
d76c62
-            <cpu id='6' socket_id='1' core_id='0' siblings='6'/>
d76c62
-            <cpu id='7' socket_id='1' core_id='1' siblings='7'/>
d76c62
-            <cpu id='8' socket_id='1' core_id='2' siblings='8'/>
d76c62
-            <cpu id='9' socket_id='1' core_id='3' siblings='9'/>
d76c62
-            <cpu id='10' socket_id='1' core_id='4' siblings='10'/>
d76c62
-            <cpu id='11' socket_id='1' core_id='5' siblings='11'/>
d76c62
+            <cpu id='6' socket_id='1' die_id='0' core_id='0' siblings='6'/>
d76c62
+            <cpu id='7' socket_id='1' die_id='0' core_id='1' siblings='7'/>
d76c62
+            <cpu id='8' socket_id='1' die_id='0' core_id='2' siblings='8'/>
d76c62
+            <cpu id='9' socket_id='1' die_id='0' core_id='3' siblings='9'/>
d76c62
+            <cpu id='10' socket_id='1' die_id='0' core_id='4' siblings='10'/>
d76c62
+            <cpu id='11' socket_id='1' die_id='0' core_id='5' siblings='11'/>
d76c62
           </cpus>
d76c62
         </cell>
d76c62
       </cells>
d76c62
diff --git a/tests/vircaps2xmldata/vircaps-x86_64-resctrl-cmt.xml b/tests/vircaps2xmldata/vircaps-x86_64-resctrl-cmt.xml
d76c62
index 6a8cd0e909..acdd97ec58 100644
d76c62
--- a/tests/vircaps2xmldata/vircaps-x86_64-resctrl-cmt.xml
d76c62
+++ b/tests/vircaps2xmldata/vircaps-x86_64-resctrl-cmt.xml
d76c62
@@ -17,12 +17,12 @@
d76c62
           <pages unit='KiB' size='2048'>4096</pages>
d76c62
           <pages unit='KiB' size='1048576'>6144</pages>
d76c62
           <cpus num='6'>
d76c62
-            <cpu id='0' socket_id='0' core_id='0' siblings='0'/>
d76c62
-            <cpu id='1' socket_id='0' core_id='1' siblings='1'/>
d76c62
-            <cpu id='2' socket_id='0' core_id='2' siblings='2'/>
d76c62
-            <cpu id='3' socket_id='0' core_id='3' siblings='3'/>
d76c62
-            <cpu id='4' socket_id='0' core_id='4' siblings='4'/>
d76c62
-            <cpu id='5' socket_id='0' core_id='5' siblings='5'/>
d76c62
+            <cpu id='0' socket_id='0' die_id='0' core_id='0' siblings='0'/>
d76c62
+            <cpu id='1' socket_id='0' die_id='0' core_id='1' siblings='1'/>
d76c62
+            <cpu id='2' socket_id='0' die_id='0' core_id='2' siblings='2'/>
d76c62
+            <cpu id='3' socket_id='0' die_id='0' core_id='3' siblings='3'/>
d76c62
+            <cpu id='4' socket_id='0' die_id='0' core_id='4' siblings='4'/>
d76c62
+            <cpu id='5' socket_id='0' die_id='0' core_id='5' siblings='5'/>
d76c62
           </cpus>
d76c62
         </cell>
d76c62
         <cell id='1'>
d76c62
@@ -31,12 +31,12 @@
d76c62
           <pages unit='KiB' size='2048'>6144</pages>
d76c62
           <pages unit='KiB' size='1048576'>8192</pages>
d76c62
           <cpus num='6'>
d76c62
-            <cpu id='6' socket_id='1' core_id='0' siblings='6'/>
d76c62
-            <cpu id='7' socket_id='1' core_id='1' siblings='7'/>
d76c62
-            <cpu id='8' socket_id='1' core_id='2' siblings='8'/>
d76c62
-            <cpu id='9' socket_id='1' core_id='3' siblings='9'/>
d76c62
-            <cpu id='10' socket_id='1' core_id='4' siblings='10'/>
d76c62
-            <cpu id='11' socket_id='1' core_id='5' siblings='11'/>
d76c62
+            <cpu id='6' socket_id='1' die_id='0' core_id='0' siblings='6'/>
d76c62
+            <cpu id='7' socket_id='1' die_id='0' core_id='1' siblings='7'/>
d76c62
+            <cpu id='8' socket_id='1' die_id='0' core_id='2' siblings='8'/>
d76c62
+            <cpu id='9' socket_id='1' die_id='0' core_id='3' siblings='9'/>
d76c62
+            <cpu id='10' socket_id='1' die_id='0' core_id='4' siblings='10'/>
d76c62
+            <cpu id='11' socket_id='1' die_id='0' core_id='5' siblings='11'/>
d76c62
           </cpus>
d76c62
         </cell>
d76c62
       </cells>
d76c62
diff --git a/tests/vircaps2xmldata/vircaps-x86_64-resctrl-fake-feature.xml b/tests/vircaps2xmldata/vircaps-x86_64-resctrl-fake-feature.xml
d76c62
index 4e46ead616..5f3678e072 100644
d76c62
--- a/tests/vircaps2xmldata/vircaps-x86_64-resctrl-fake-feature.xml
d76c62
+++ b/tests/vircaps2xmldata/vircaps-x86_64-resctrl-fake-feature.xml
d76c62
@@ -17,12 +17,12 @@
d76c62
           <pages unit='KiB' size='2048'>4096</pages>
d76c62
           <pages unit='KiB' size='1048576'>6144</pages>
d76c62
           <cpus num='6'>
d76c62
-            <cpu id='0' socket_id='0' core_id='0' siblings='0'/>
d76c62
-            <cpu id='1' socket_id='0' core_id='1' siblings='1'/>
d76c62
-            <cpu id='2' socket_id='0' core_id='2' siblings='2'/>
d76c62
-            <cpu id='3' socket_id='0' core_id='3' siblings='3'/>
d76c62
-            <cpu id='4' socket_id='0' core_id='4' siblings='4'/>
d76c62
-            <cpu id='5' socket_id='0' core_id='5' siblings='5'/>
d76c62
+            <cpu id='0' socket_id='0' die_id='0' core_id='0' siblings='0'/>
d76c62
+            <cpu id='1' socket_id='0' die_id='0' core_id='1' siblings='1'/>
d76c62
+            <cpu id='2' socket_id='0' die_id='0' core_id='2' siblings='2'/>
d76c62
+            <cpu id='3' socket_id='0' die_id='0' core_id='3' siblings='3'/>
d76c62
+            <cpu id='4' socket_id='0' die_id='0' core_id='4' siblings='4'/>
d76c62
+            <cpu id='5' socket_id='0' die_id='0' core_id='5' siblings='5'/>
d76c62
           </cpus>
d76c62
         </cell>
d76c62
         <cell id='1'>
d76c62
@@ -31,12 +31,12 @@
d76c62
           <pages unit='KiB' size='2048'>6144</pages>
d76c62
           <pages unit='KiB' size='1048576'>8192</pages>
d76c62
           <cpus num='6'>
d76c62
-            <cpu id='6' socket_id='1' core_id='0' siblings='6'/>
d76c62
-            <cpu id='7' socket_id='1' core_id='1' siblings='7'/>
d76c62
-            <cpu id='8' socket_id='1' core_id='2' siblings='8'/>
d76c62
-            <cpu id='9' socket_id='1' core_id='3' siblings='9'/>
d76c62
-            <cpu id='10' socket_id='1' core_id='4' siblings='10'/>
d76c62
-            <cpu id='11' socket_id='1' core_id='5' siblings='11'/>
d76c62
+            <cpu id='6' socket_id='1' die_id='0' core_id='0' siblings='6'/>
d76c62
+            <cpu id='7' socket_id='1' die_id='0' core_id='1' siblings='7'/>
d76c62
+            <cpu id='8' socket_id='1' die_id='0' core_id='2' siblings='8'/>
d76c62
+            <cpu id='9' socket_id='1' die_id='0' core_id='3' siblings='9'/>
d76c62
+            <cpu id='10' socket_id='1' die_id='0' core_id='4' siblings='10'/>
d76c62
+            <cpu id='11' socket_id='1' die_id='0' core_id='5' siblings='11'/>
d76c62
           </cpus>
d76c62
         </cell>
d76c62
       </cells>
d76c62
diff --git a/tests/vircaps2xmldata/vircaps-x86_64-resctrl-skx-twocaches.xml b/tests/vircaps2xmldata/vircaps-x86_64-resctrl-skx-twocaches.xml
d76c62
index 44c1042afe..6769bd0591 100644
d76c62
--- a/tests/vircaps2xmldata/vircaps-x86_64-resctrl-skx-twocaches.xml
d76c62
+++ b/tests/vircaps2xmldata/vircaps-x86_64-resctrl-skx-twocaches.xml
d76c62
@@ -17,7 +17,7 @@
d76c62
           <pages unit='KiB' size='2048'>4096</pages>
d76c62
           <pages unit='KiB' size='1048576'>6144</pages>
d76c62
           <cpus num='1'>
d76c62
-            <cpu id='0' socket_id='0' core_id='0' siblings='0'/>
d76c62
+            <cpu id='0' socket_id='0' die_id='0' core_id='0' siblings='0'/>
d76c62
           </cpus>
d76c62
         </cell>
d76c62
       </cells>
d76c62
diff --git a/tests/vircaps2xmldata/vircaps-x86_64-resctrl-skx.xml b/tests/vircaps2xmldata/vircaps-x86_64-resctrl-skx.xml
d76c62
index 8382a26c7a..bc52480905 100644
d76c62
--- a/tests/vircaps2xmldata/vircaps-x86_64-resctrl-skx.xml
d76c62
+++ b/tests/vircaps2xmldata/vircaps-x86_64-resctrl-skx.xml
d76c62
@@ -17,7 +17,7 @@
d76c62
           <pages unit='KiB' size='2048'>4096</pages>
d76c62
           <pages unit='KiB' size='1048576'>6144</pages>
d76c62
           <cpus num='1'>
d76c62
-            <cpu id='0' socket_id='0' core_id='0' siblings='0'/>
d76c62
+            <cpu id='0' socket_id='0' die_id='0' core_id='0' siblings='0'/>
d76c62
           </cpus>
d76c62
         </cell>
d76c62
       </cells>
d76c62
diff --git a/tests/vircaps2xmldata/vircaps-x86_64-resctrl.xml b/tests/vircaps2xmldata/vircaps-x86_64-resctrl.xml
d76c62
index a27b3e247e..c386edd4b0 100644
d76c62
--- a/tests/vircaps2xmldata/vircaps-x86_64-resctrl.xml
d76c62
+++ b/tests/vircaps2xmldata/vircaps-x86_64-resctrl.xml
d76c62
@@ -17,12 +17,12 @@
d76c62
           <pages unit='KiB' size='2048'>4096</pages>
d76c62
           <pages unit='KiB' size='1048576'>6144</pages>
d76c62
           <cpus num='6'>
d76c62
-            <cpu id='0' socket_id='0' core_id='0' siblings='0'/>
d76c62
-            <cpu id='1' socket_id='0' core_id='1' siblings='1'/>
d76c62
-            <cpu id='2' socket_id='0' core_id='2' siblings='2'/>
d76c62
-            <cpu id='3' socket_id='0' core_id='3' siblings='3'/>
d76c62
-            <cpu id='4' socket_id='0' core_id='4' siblings='4'/>
d76c62
-            <cpu id='5' socket_id='0' core_id='5' siblings='5'/>
d76c62
+            <cpu id='0' socket_id='0' die_id='0' core_id='0' siblings='0'/>
d76c62
+            <cpu id='1' socket_id='0' die_id='0' core_id='1' siblings='1'/>
d76c62
+            <cpu id='2' socket_id='0' die_id='0' core_id='2' siblings='2'/>
d76c62
+            <cpu id='3' socket_id='0' die_id='0' core_id='3' siblings='3'/>
d76c62
+            <cpu id='4' socket_id='0' die_id='0' core_id='4' siblings='4'/>
d76c62
+            <cpu id='5' socket_id='0' die_id='0' core_id='5' siblings='5'/>
d76c62
           </cpus>
d76c62
         </cell>
d76c62
         <cell id='1'>
d76c62
@@ -31,12 +31,12 @@
d76c62
           <pages unit='KiB' size='2048'>6144</pages>
d76c62
           <pages unit='KiB' size='1048576'>8192</pages>
d76c62
           <cpus num='6'>
d76c62
-            <cpu id='6' socket_id='1' core_id='0' siblings='6'/>
d76c62
-            <cpu id='7' socket_id='1' core_id='1' siblings='7'/>
d76c62
-            <cpu id='8' socket_id='1' core_id='2' siblings='8'/>
d76c62
-            <cpu id='9' socket_id='1' core_id='3' siblings='9'/>
d76c62
-            <cpu id='10' socket_id='1' core_id='4' siblings='10'/>
d76c62
-            <cpu id='11' socket_id='1' core_id='5' siblings='11'/>
d76c62
+            <cpu id='6' socket_id='1' die_id='0' core_id='0' siblings='6'/>
d76c62
+            <cpu id='7' socket_id='1' die_id='0' core_id='1' siblings='7'/>
d76c62
+            <cpu id='8' socket_id='1' die_id='0' core_id='2' siblings='8'/>
d76c62
+            <cpu id='9' socket_id='1' die_id='0' core_id='3' siblings='9'/>
d76c62
+            <cpu id='10' socket_id='1' die_id='0' core_id='4' siblings='10'/>
d76c62
+            <cpu id='11' socket_id='1' die_id='0' core_id='5' siblings='11'/>
d76c62
           </cpus>
d76c62
         </cell>
d76c62
       </cells>
d76c62
-- 
d76c62
2.25.0
d76c62