diff --git a/docs/schemas/capability.rng b/docs/schemas/capability.rng
index 91ee523116..031c55bf20 100644
--- a/docs/schemas/capability.rng
+++ b/docs/schemas/capability.rng
@@ -265,6 +265,9 @@
+
+
+
diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c
index bf1d9936ed..4bbc79334e 100644
--- a/src/conf/capabilities.c
+++ b/src/conf/capabilities.c
@@ -874,8 +874,9 @@ virCapabilitiesHostNUMAFormat(virCapsHostNUMAPtr caps,
return -1;
virBufferAsprintf(buf,
- " socket_id='%d' core_id='%d' siblings='%s'",
+ " socket_id='%d' die_id='%d' core_id='%d' siblings='%s'",
cell->cpus[j].socket_id,
+ cell->cpus[j].die_id,
cell->cpus[j].core_id,
siblings);
VIR_FREE(siblings);
@@ -1463,6 +1464,7 @@ virCapabilitiesFillCPUInfo(int cpu_id G_GNUC_UNUSED,
cpu->id = cpu_id;
if (virHostCPUGetSocket(cpu_id, &cpu->socket_id) < 0 ||
+ virHostCPUGetDie(cpu_id, &cpu->die_id) < 0 ||
virHostCPUGetCore(cpu_id, &cpu->core_id) < 0)
return -1;
@@ -1591,6 +1593,7 @@ virCapabilitiesHostNUMAInitFake(virCapsHostNUMAPtr caps)
goto error;
if (tmp) {
cpus[cid].id = id;
+ cpus[cid].die_id = 0;
cpus[cid].socket_id = s;
cpus[cid].core_id = c;
if (!(cpus[cid].siblings = virBitmapNew(ncpus)))
diff --git a/src/conf/capabilities.h b/src/conf/capabilities.h
index 4a49e94aa5..75f29666c9 100644
--- a/src/conf/capabilities.h
+++ b/src/conf/capabilities.h
@@ -88,6 +88,7 @@ struct _virCapsGuest {
struct _virCapsHostNUMACellCPU {
unsigned int id;
unsigned int socket_id;
+ unsigned int die_id;
unsigned int core_id;
virBitmapPtr siblings;
};
diff --git a/src/libvirt_linux.syms b/src/libvirt_linux.syms
index 5fa2c790ef..55649ae39c 100644
--- a/src/libvirt_linux.syms
+++ b/src/libvirt_linux.syms
@@ -4,6 +4,7 @@
# util/virhostcpu.h
virHostCPUGetCore;
+virHostCPUGetDie;
virHostCPUGetInfoPopulateLinux;
virHostCPUGetSiblingsList;
virHostCPUGetSocket;
diff --git a/src/util/virhostcpu.c b/src/util/virhostcpu.c
index 7f14340f49..0ed2c9e9b4 100644
--- a/src/util/virhostcpu.c
+++ b/src/util/virhostcpu.c
@@ -218,6 +218,22 @@ virHostCPUGetSocket(unsigned int cpu, unsigned int *socket)
return 0;
}
+int
+virHostCPUGetDie(unsigned int cpu, unsigned int *die)
+{
+ int ret = virFileReadValueUint(die,
+ "%s/cpu/cpu%u/topology/die_id",
+ SYSFS_SYSTEM_PATH, cpu);
+
+ /* If the file is not there, it's 0 */
+ if (ret == -2)
+ *die = 0;
+ else if (ret < 0)
+ return -1;
+
+ return 0;
+}
+
int
virHostCPUGetCore(unsigned int cpu, unsigned int *core)
{
diff --git a/src/util/virhostcpu.h b/src/util/virhostcpu.h
index d95d380d4a..9be2e51a38 100644
--- a/src/util/virhostcpu.h
+++ b/src/util/virhostcpu.h
@@ -65,6 +65,7 @@ int virHostCPUStatsAssign(virNodeCPUStatsPtr param,
#ifdef __linux__
int virHostCPUGetSocket(unsigned int cpu, unsigned int *socket);
+int virHostCPUGetDie(unsigned int cpu, unsigned int *die);
int virHostCPUGetCore(unsigned int cpu, unsigned int *core);
virBitmapPtr virHostCPUGetSiblingsList(unsigned int cpu);
diff --git a/tests/vircaps2xmldata/vircaps-aarch64-basic.xml b/tests/vircaps2xmldata/vircaps-aarch64-basic.xml
index 50466f9162..0a04052c40 100644
--- a/tests/vircaps2xmldata/vircaps-aarch64-basic.xml
+++ b/tests/vircaps2xmldata/vircaps-aarch64-basic.xml
@@ -16,10 +16,10 @@
4096
6144
-
-
-
-
+
+
+
+
@@ -28,10 +28,10 @@
6144
8192
-
-
-
-
+
+
+
+
|
@@ -40,10 +40,10 @@
8192
10240
-
-
-
-
+
+
+
+
|
@@ -52,10 +52,10 @@
10240
12288
-
-
-
-
+
+
+
+
|
diff --git a/tests/vircaps2xmldata/vircaps-x86_64-basic.xml b/tests/vircaps2xmldata/vircaps-x86_64-basic.xml
index e7be6def3e..4da09f889c 100644
--- a/tests/vircaps2xmldata/vircaps-x86_64-basic.xml
+++ b/tests/vircaps2xmldata/vircaps-x86_64-basic.xml
@@ -14,10 +14,10 @@
4096
6144
-
-
-
-
+
+
+
+
@@ -26,10 +26,10 @@
6144
8192
-
-
-
-
+
+
+
+
|
@@ -38,10 +38,10 @@
8192
10240
-
-
-
-
+
+
+
+
|
@@ -50,10 +50,10 @@
10240
12288
-
-
-
-
+
+
+
+
|
diff --git a/tests/vircaps2xmldata/vircaps-x86_64-caches.xml b/tests/vircaps2xmldata/vircaps-x86_64-caches.xml
index ca671a1640..28f00c0a90 100644
--- a/tests/vircaps2xmldata/vircaps-x86_64-caches.xml
+++ b/tests/vircaps2xmldata/vircaps-x86_64-caches.xml
@@ -17,14 +17,14 @@
4096
6144
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/tests/vircaps2xmldata/vircaps-x86_64-resctrl-cdp.xml b/tests/vircaps2xmldata/vircaps-x86_64-resctrl-cdp.xml
index 1d3df318c5..ee26fe9464 100644
--- a/tests/vircaps2xmldata/vircaps-x86_64-resctrl-cdp.xml
+++ b/tests/vircaps2xmldata/vircaps-x86_64-resctrl-cdp.xml
@@ -17,12 +17,12 @@
4096
6144
-
-
-
-
-
-
+
+
+
+
+
+
@@ -31,12 +31,12 @@
6144
8192
-
-
-
-
-
-
+
+
+
+
+
+
|
diff --git a/tests/vircaps2xmldata/vircaps-x86_64-resctrl-cmt.xml b/tests/vircaps2xmldata/vircaps-x86_64-resctrl-cmt.xml
index 6a8cd0e909..acdd97ec58 100644
--- a/tests/vircaps2xmldata/vircaps-x86_64-resctrl-cmt.xml
+++ b/tests/vircaps2xmldata/vircaps-x86_64-resctrl-cmt.xml
@@ -17,12 +17,12 @@
4096
6144
-
-
-
-
-
-
+
+
+
+
+
+
@@ -31,12 +31,12 @@
6144
8192
-
-
-
-
-
-
+
+
+
+
+
+
|
diff --git a/tests/vircaps2xmldata/vircaps-x86_64-resctrl-fake-feature.xml b/tests/vircaps2xmldata/vircaps-x86_64-resctrl-fake-feature.xml
index 4e46ead616..5f3678e072 100644
--- a/tests/vircaps2xmldata/vircaps-x86_64-resctrl-fake-feature.xml
+++ b/tests/vircaps2xmldata/vircaps-x86_64-resctrl-fake-feature.xml
@@ -17,12 +17,12 @@
4096
6144
-
-
-
-
-
-
+
+
+
+
+
+
@@ -31,12 +31,12 @@
6144
8192
-
-
-
-
-
-
+
+
+
+
+
+
|
diff --git a/tests/vircaps2xmldata/vircaps-x86_64-resctrl-skx-twocaches.xml b/tests/vircaps2xmldata/vircaps-x86_64-resctrl-skx-twocaches.xml
index 44c1042afe..6769bd0591 100644
--- a/tests/vircaps2xmldata/vircaps-x86_64-resctrl-skx-twocaches.xml
+++ b/tests/vircaps2xmldata/vircaps-x86_64-resctrl-skx-twocaches.xml
@@ -17,7 +17,7 @@
4096
6144
-
+
diff --git a/tests/vircaps2xmldata/vircaps-x86_64-resctrl-skx.xml b/tests/vircaps2xmldata/vircaps-x86_64-resctrl-skx.xml
index 8382a26c7a..bc52480905 100644
--- a/tests/vircaps2xmldata/vircaps-x86_64-resctrl-skx.xml
+++ b/tests/vircaps2xmldata/vircaps-x86_64-resctrl-skx.xml
@@ -17,7 +17,7 @@
4096
6144
-
+
diff --git a/tests/vircaps2xmldata/vircaps-x86_64-resctrl.xml b/tests/vircaps2xmldata/vircaps-x86_64-resctrl.xml
index a27b3e247e..c386edd4b0 100644
--- a/tests/vircaps2xmldata/vircaps-x86_64-resctrl.xml
+++ b/tests/vircaps2xmldata/vircaps-x86_64-resctrl.xml
@@ -17,12 +17,12 @@
4096
6144
-
-
-
-
-
-
+
+
+
+
+
+
@@ -31,12 +31,12 @@
6144
8192
-
-
-
-
-
-
+
+
+
+
+
+
|