[PATCH v4 2/6] conf, qemu: Add newer shmem models

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The old ivshmem is deprecated in QEMU, so let's use the better
ivshmem-{plain,doorbell} variants instead.

Signed-off-by: Martin Kletzander <mkletzan@xxxxxxxxxx>
---
 docs/formatdomain.html.in     | 10 +++++++---
 docs/schemas/domaincommon.rng |  2 ++
 src/conf/domain_conf.c        |  4 +++-
 src/conf/domain_conf.h        |  2 ++
 src/qemu/qemu_command.c       |  7 +++++++
 5 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index 10a692de2553..11b3330cee87 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -6826,10 +6826,11 @@ qemu-kvm -net nic,model=? /dev/null
   ...
   &lt;devices&gt;
     &lt;shmem name='my_shmem0'&gt;
+      &lt;model type='ivshmem-plain'/&gt;
       &lt;size unit='M'&gt;4&lt;/size&gt;
     &lt;/shmem&gt;
     &lt;shmem name='shmem_server'&gt;
-      &lt;model type='ivshmem'/&gt;
+      &lt;model type='ivshmem-doorbell'/&gt;
       &lt;size unit='M'&gt;2&lt;/size&gt;
       &lt;server path='/tmp/socket-shmem'/&gt;
       &lt;msi vectors='32' ioeventfd='on'/&gt;
@@ -6848,8 +6849,11 @@ qemu-kvm -net nic,model=? /dev/null
     <dd>
       Attribute <code>type</code> of the optional element <code>model</code>
       specifies the model of the underlying device providing the
-      <code>shmem</code> device.  Currently the only supported model is
-      <code>ivshmem</code>.
+      <code>shmem</code> device.  The models currently supported are
+      <code>ivshmem</code> (supports both server and server-less shmem, but is
+      deprecated by newer QEMU in favour of the -plain and -doorbell variants),
+      <code>ivshmem-plain</code> (only for server-less shmem) and
+      <code>ivshmem-doorbell</code> (only for shmem with the server).
     </dd>
     <dt><code>size</code></dt>
     <dd>
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index 99e0eb6cb448..19d45fd6eae3 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -3596,6 +3596,8 @@
             <attribute name="type">
               <choice>
                 <value>ivshmem</value>
+                <value>ivshmem-plain</value>
+                <value>ivshmem-doorbell</value>
               </choice>
             </attribute>
           </element>
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 108a48ee974e..a233c0c4208a 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -845,7 +845,9 @@ VIR_ENUM_IMPL(virDomainMemoryModel, VIR_DOMAIN_MEMORY_MODEL_LAST,
               "", "dimm")

 VIR_ENUM_IMPL(virDomainShmemModel, VIR_DOMAIN_SHMEM_MODEL_LAST,
-              "ivshmem")
+              "ivshmem",
+              "ivshmem-plain",
+              "ivshmem-doorbell")

 static virClassPtr virDomainObjClass;
 static virClassPtr virDomainXMLOptionClass;
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index d2a9289e077d..541b6003c87e 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -1564,6 +1564,8 @@ struct _virDomainNVRAMDef {

 typedef enum {
     VIR_DOMAIN_SHMEM_MODEL_IVSHMEM,
+    VIR_DOMAIN_SHMEM_MODEL_IVSHMEM_PLAIN,
+    VIR_DOMAIN_SHMEM_MODEL_IVSHMEM_DOORBELL,

     VIR_DOMAIN_SHMEM_MODEL_LAST
 } virDomainShmemModel;
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index f05f2fd1c5c4..558122b4cf7e 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -8504,6 +8504,13 @@ qemuBuildShmemCommandLine(virLogManagerPtr logManager,
         devstr = qemuBuildShmemDevLegacyStr(def, shmem, qemuCaps);
         break;

+    case VIR_DOMAIN_SHMEM_MODEL_IVSHMEM_PLAIN:
+    case VIR_DOMAIN_SHMEM_MODEL_IVSHMEM_DOORBELL:
+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                       _("%s device is not supported with this QEMU binary"),
+                       virDomainShmemModelTypeToString(shmem->model));
+        break;
+
     case VIR_DOMAIN_SHMEM_MODEL_LAST:
         break;
     }
-- 
2.10.1

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]