diff --git a/docs/formatdomaincaps.html.in b/docs/formatdomaincaps.html.in index 62f1940e6a..10d23f4c0b 100644 --- a/docs/formatdomaincaps.html.in +++ b/docs/formatdomaincaps.html.in @@ -290,6 +290,34 @@ <domainCapabilities> +

Memory Backing

+ +

+ The memory backing element indicates whether or not + memory backing + is supported. +

+ +
+<domainCapabilities>
+  ...
+  <memoryBacking supported='yes'>
+    <enum name='sourceType'>
+      <value>anonymous</value>
+      <value>file</value>
+      <value>memfd</value>
+    </enum>
+  </memoryBacking>
+  ...
+<domainCapabilities>
+
+ +
+
sourceType
+
Options for the type attribute of the + <memoryBacking><source> element.
+
+

Devices

diff --git a/docs/schemas/domaincaps.rng b/docs/schemas/domaincaps.rng index fc668e0c78..69d7824e7c 100644 --- a/docs/schemas/domaincaps.rng +++ b/docs/schemas/domaincaps.rng @@ -37,6 +37,9 @@ + + + @@ -165,6 +168,13 @@ + + + + + + + diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c index cb90ae0176..73139d0ec6 100644 --- a/src/conf/domain_capabilities.c +++ b/src/conf/domain_capabilities.c @@ -457,6 +457,18 @@ virDomainCapsCPUFormat(virBuffer *buf, virBufferAddLit(buf, "\n"); } +static void +virDomainCapsMemoryBackingFormat(virBuffer *buf, + const virDomainCapsMemoryBacking *memoryBacking) +{ + FORMAT_PROLOGUE(memoryBacking); + + ENUM_PROCESS(memoryBacking, sourceType, virDomainMemorySourceTypeToString); + + FORMAT_EPILOGUE(memoryBacking); +} + + static void virDomainCapsDeviceDiskFormat(virBuffer *buf, const virDomainCapsDeviceDisk *disk) @@ -632,6 +644,8 @@ virDomainCapsFormat(const virDomainCaps *caps) virDomainCapsOSFormat(&buf, &caps->os); virDomainCapsCPUFormat(&buf, &caps->cpu); + virDomainCapsMemoryBackingFormat(&buf, &caps->memoryBacking); + virBufferAddLit(&buf, "\n"); virBufferAdjustIndent(&buf, 2); diff --git a/src/conf/domain_capabilities.h b/src/conf/domain_capabilities.h index b6433b20c9..a3765832c1 100644 --- a/src/conf/domain_capabilities.h +++ b/src/conf/domain_capabilities.h @@ -62,6 +62,13 @@ struct _virDomainCapsOS { virDomainCapsLoader loader; /* Info about virDomainLoaderDef */ }; +STATIC_ASSERT_ENUM(VIR_DOMAIN_MEMORY_SOURCE_LAST); +typedef struct _virDomainCapsMemoryBacking virDomainCapsMemoryBacking; +struct _virDomainCapsMemoryBacking { + virTristateBool supported; + virDomainCapsEnum sourceType; /* virDomainMemorySource */ +}; + STATIC_ASSERT_ENUM(VIR_DOMAIN_DISK_DEVICE_LAST); STATIC_ASSERT_ENUM(VIR_DOMAIN_DISK_BUS_LAST); STATIC_ASSERT_ENUM(VIR_DOMAIN_DISK_MODEL_LAST); @@ -196,6 +203,7 @@ struct _virDomainCaps { virDomainCapsOS os; virDomainCapsCPU cpu; + virDomainCapsMemoryBacking memoryBacking; virDomainCapsDeviceDisk disk; virDomainCapsDeviceGraphics graphics; virDomainCapsDeviceVideo video;