]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: domcaps: Report <memoryBacking>
authorKristina Hanicova <khanicov@redhat.com>
Thu, 15 Jul 2021 12:18:04 +0000 (14:18 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Thu, 15 Jul 2021 13:13:04 +0000 (15:13 +0200)
We need to report via domcapabilities if specifying shared memory
is supported without hugepages or numa config in order to find
out if domain has suitable setup to make virtiofs work.
The solution is to report source types of memory backing to
determine if memfd is a valid option.

Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
docs/formatdomaincaps.html.in
docs/schemas/domaincaps.rng
src/conf/domain_capabilities.c
src/conf/domain_capabilities.h

index 62f1940e6a7e5322a8ca6e7b72c67d1e02e7ea13..10d23f4c0bcf840eedc61c2611f9606942d802de 100644 (file)
 &lt;domainCapabilities&gt;
 </pre>
 
+    <h3><a id="elementsMemoryBacking">Memory Backing</a></h3>
+
+    <p>
+      The <code>memory backing</code> element indicates whether or not
+      <a href="formatdomain.html#memory-backing">memory backing</a>
+      is supported.
+    </p>
+
+<pre>
+&lt;domainCapabilities&gt;
+  ...
+  &lt;memoryBacking supported='yes'&gt;
+    &lt;enum name='sourceType'&gt;
+      &lt;value&gt;anonymous&lt;/value&gt;
+      &lt;value&gt;file&lt;/value&gt;
+      &lt;value&gt;memfd&lt;/value&gt;
+    &lt;/enum&gt;
+  &lt;/memoryBacking&gt;
+  ...
+&lt;domainCapabilities&gt;
+</pre>
+
+    <dl>
+      <dt><code>sourceType</code></dt>
+      <dd>Options for the <code>type</code> attribute of the
+      &lt;memoryBacking&gt;&lt;source&gt; element.</dd>
+    </dl>
+
     <h3><a id="elementsDevices">Devices</a></h3>
 
     <p>
index fc668e0c78dcbb3b9c5ad4698928a78baf74b8e4..69d7824e7c9dc507ae0e31d2715a666292153db1 100644 (file)
@@ -37,6 +37,9 @@
         <optional>
           <ref name="cpu"/>
         </optional>
+        <optional>
+          <ref name="memoryBacking"/>
+        </optional>
         <optional>
           <ref name="devices"/>
         </optional>
     </element>
   </define>
 
+  <define name="memoryBacking">
+    <element name="memoryBacking">
+      <ref name="supported"/>
+      <ref name="enum"/>
+    </element>
+  </define>
+
   <define name="devices">
     <element name="devices">
       <optional>
index cb90ae0176cf3a7bd50b860c0c4bbd93709c6335..73139d0ec6cde6e592e3197df7d8292042d37eb8 100644 (file)
@@ -457,6 +457,18 @@ virDomainCapsCPUFormat(virBuffer *buf,
     virBufferAddLit(buf, "</cpu>\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, "<devices>\n");
     virBufferAdjustIndent(&buf, 2);
 
index b6433b20c9c86cb95d0f13cc15d5e272ae10325c..a3765832c1fd56c2d68b618c23b739427ed28081 100644 (file)
@@ -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;