summary refs log tree commit diff stats
path: root/contrib/vhost-user-gpu/vugbm.c
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2021-03-26 12:58:58 +0000
committerPeter Maydell <peter.maydell@linaro.org>2021-03-26 12:58:58 +0000
commit7b9a3c9f94bcac23c534bc9f42a9e914b433b299 (patch)
tree794d6b143ec807591987b2b26595cba504ca0052 /contrib/vhost-user-gpu/vugbm.c
parent63ad23fa240bb7cdbf6d0440c5670cc7935032b0 (diff)
parentdb0b034185824ac33e1a85ba62ab2030eb17b00d (diff)
downloadfocaccia-qemu-7b9a3c9f94bcac23c534bc9f42a9e914b433b299.tar.gz
focaccia-qemu-7b9a3c9f94bcac23c534bc9f42a9e914b433b299.zip
Merge remote-tracking branch 'remotes/kraxel/tags/fixes-20210326-pull-request' into staging
fixes for usb, virtio-gpu and vhost-gpu

# gpg: Signature made Fri 26 Mar 2021 12:49:14 GMT
# gpg:                using RSA key A0328CFFB93A17A79901FE7D4CB6D8EED3E87138
# gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>" [full]
# gpg:                 aka "Gerd Hoffmann <gerd@kraxel.org>" [full]
# gpg:                 aka "Gerd Hoffmann (private) <kraxel@gmail.com>" [full]
# Primary key fingerprint: A032 8CFF B93A 17A7 9901  FE7D 4CB6 D8EE D3E8 7138

* remotes/kraxel/tags/fixes-20210326-pull-request:
  hw/usb/hcd-ehci: Fix crash when showing help of EHCI devices
  s390x: modularize virtio-gpu-ccw
  s390x: add have_virtio_ccw
  s390x: move S390_ADAPTER_SUPPRESSIBLE
  hw/usb/hcd-ehci-sysbus: Free USBPacket on instance finalize()
  vhost-user-gpu: fix cursor move/update
  vhost-user-gpu: fix vugbm_device_init fallback
  vhost-user-gpu: glFlush before notifying clients
  usb: Remove "-usbdevice ccid"

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'contrib/vhost-user-gpu/vugbm.c')
-rw-r--r--contrib/vhost-user-gpu/vugbm.c44
1 files changed, 20 insertions, 24 deletions
diff --git a/contrib/vhost-user-gpu/vugbm.c b/contrib/vhost-user-gpu/vugbm.c
index f5304ada2f..fb15d0372c 100644
--- a/contrib/vhost-user-gpu/vugbm.c
+++ b/contrib/vhost-user-gpu/vugbm.c
@@ -199,55 +199,51 @@ vugbm_device_destroy(struct vugbm_device *dev)
     dev->device_destroy(dev);
 }
 
-bool
+void
 vugbm_device_init(struct vugbm_device *dev, int fd)
 {
-    dev->fd = fd;
+    assert(!dev->inited);
 
 #ifdef CONFIG_GBM
-    dev->dev = gbm_create_device(fd);
-#endif
-
-    if (0) {
-        /* nothing */
+    if (fd >= 0) {
+        dev->dev = gbm_create_device(fd);
     }
-#ifdef CONFIG_GBM
-    else if (dev->dev != NULL) {
+    if (dev->dev != NULL) {
+        dev->fd = fd;
         dev->alloc_bo = alloc_bo;
         dev->free_bo = free_bo;
         dev->get_fd = get_fd;
         dev->map_bo = map_bo;
         dev->unmap_bo = unmap_bo;
         dev->device_destroy = device_destroy;
+        dev->inited = true;
     }
 #endif
 #ifdef CONFIG_MEMFD
-    else if (g_file_test("/dev/udmabuf", G_FILE_TEST_EXISTS)) {
+    if (!dev->inited && g_file_test("/dev/udmabuf", G_FILE_TEST_EXISTS)) {
         dev->fd = open("/dev/udmabuf", O_RDWR);
-        if (dev->fd < 0) {
-            return false;
+        if (dev->fd >= 0) {
+            g_debug("Using experimental udmabuf backend");
+            dev->alloc_bo = udmabuf_alloc_bo;
+            dev->free_bo = udmabuf_free_bo;
+            dev->get_fd = udmabuf_get_fd;
+            dev->map_bo = udmabuf_map_bo;
+            dev->unmap_bo = udmabuf_unmap_bo;
+            dev->device_destroy = udmabuf_device_destroy;
+            dev->inited = true;
         }
-        g_debug("Using experimental udmabuf backend");
-        dev->alloc_bo = udmabuf_alloc_bo;
-        dev->free_bo = udmabuf_free_bo;
-        dev->get_fd = udmabuf_get_fd;
-        dev->map_bo = udmabuf_map_bo;
-        dev->unmap_bo = udmabuf_unmap_bo;
-        dev->device_destroy = udmabuf_device_destroy;
     }
 #endif
-    else {
+    if (!dev->inited) {
         g_debug("Using mem fallback");
         dev->alloc_bo = mem_alloc_bo;
         dev->free_bo = mem_free_bo;
         dev->map_bo = mem_map_bo;
         dev->unmap_bo = mem_unmap_bo;
         dev->device_destroy = mem_device_destroy;
-        return false;
+        dev->inited = true;
     }
-
-    dev->inited = true;
-    return true;
+    assert(dev->inited);
 }
 
 static bool