diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2021-03-26 12:58:58 +0000 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2021-03-26 12:58:58 +0000 |
commit | 7b9a3c9f94bcac23c534bc9f42a9e914b433b299 (patch) | |
tree | 794d6b143ec807591987b2b26595cba504ca0052 /contrib/vhost-user-gpu/vugbm.c | |
parent | 63ad23fa240bb7cdbf6d0440c5670cc7935032b0 (diff) | |
parent | db0b034185824ac33e1a85ba62ab2030eb17b00d (diff) |
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.c | 44 |
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 |