diff mbox

[v2,16/16] vl: enable vhost-pci-slave

Message ID 1494578148-102868-17-git-send-email-wei.w.wang@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Wang, Wei W May 12, 2017, 8:35 a.m. UTC
Enable the use of vhost-pci. The init and cleanup stub functions are
added for the platforms that do not support the use of virtio.

Signed-off-by: Wei Wang <wei.w.wang@intel.com>
---
 hw/virtio/vhost-stub.c | 11 +++++++++++
 vl.c                   | 24 ++++++++++++++++++++++++
 2 files changed, 35 insertions(+)
diff mbox

Patch

diff --git a/hw/virtio/vhost-stub.c b/hw/virtio/vhost-stub.c
index e130791..bfb73df 100644
--- a/hw/virtio/vhost-stub.c
+++ b/hw/virtio/vhost-stub.c
@@ -1,6 +1,7 @@ 
 #include "qemu/osdep.h"
 #include "hw/virtio/vhost.h"
 #include "hw/virtio/vhost-user.h"
+#include "hw/virtio/vhost-pci-slave.h"
 
 bool vhost_has_free_slot(void)
 {
@@ -16,3 +17,13 @@  int vhost_user_can_read(void *opaque)
 {
     return 0;
 }
+
+int vhost_pci_slave_init(QemuOpts *opt)
+{
+    return -1;
+}
+
+int vhost_pci_slave_cleanup(void)
+{
+    return -1;
+}
diff --git a/vl.c b/vl.c
index 2ee4713..18102d7 100644
--- a/vl.c
+++ b/vl.c
@@ -129,6 +129,7 @@  int main(int argc, char **argv)
 #include "sysemu/replay.h"
 #include "qapi/qmp/qerror.h"
 #include "sysemu/iothread.h"
+#include "hw/virtio/vhost-pci-slave.h"
 
 #define MAX_VIRTIO_CONSOLES 1
 #define MAX_SCLP_CONSOLES 1
@@ -187,6 +188,7 @@  uint8_t *boot_splash_filedata;
 size_t boot_splash_filedata_size;
 uint8_t qemu_extra_params_fw[2];
 int only_migratable; /* turn it off unless user states otherwise */
+bool vhost_pci_slave_enabled;
 
 int icount_align_option;
 
@@ -4060,6 +4062,7 @@  int main(int argc, char **argv, char **envp)
                 if (!opts) {
                     exit(1);
                 }
+                vhost_pci_slave_enabled = true;
                 break;
             default:
                 os_parse_cmd_args(popt->index, optarg);
@@ -4591,6 +4594,18 @@  int main(int argc, char **argv, char **envp)
         exit(1);
     }
 
+    /* check if the vhost-pci-server is enabled */
+    if (vhost_pci_slave_enabled) {
+        int ret;
+        ret = vhost_pci_slave_init(qemu_opts_find(
+                                    qemu_find_opts("vhost-pci-slave"),
+                                    NULL));
+        if (ret < 0) {
+            error_report("vhost-pci-slave init failed");
+            exit(1);
+        }
+    }
+
     /* init USB devices */
     if (machine_usb(current_machine)) {
         if (foreach_device_config(DEV_USB, usb_parse) < 0)
@@ -4736,6 +4751,15 @@  int main(int argc, char **argv, char **envp)
     pause_all_vcpus();
     res_free();
 
+    if (vhost_pci_slave_enabled) {
+        int ret;
+        ret = vhost_pci_slave_cleanup();
+        if (ret < 0) {
+            error_report("vhost-pci-slave init failed");
+            exit(1);
+        }
+    }
+
     /* vhost-user must be cleaned up before chardevs.  */
     net_cleanup();
     audio_cleanup();