Mesa (main): freedreno/drm, turnip: set DRM_RDWR for exported dma-bufs
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Jan 25 06:00:05 UTC 2022
Module: Mesa
Branch: main
Commit: ef325d46503d66aa1bc3f860fa3b0b0486ee45a5
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ef325d46503d66aa1bc3f860fa3b0b0486ee45a5
Author: Chia-I Wu <olvaffe at gmail.com>
Date: Mon Jan 24 17:30:23 2022 -0800
freedreno/drm, turnip: set DRM_RDWR for exported dma-bufs
This allows the exported fds to be mapped for writing. My use case is
for virtio-gpu blob resources where the fds are mapped rw and mappings
are added to the guests using KVM_SET_USER_MEMORY_REGION.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14699>
---
src/freedreno/drm/freedreno_bo.c | 3 ++-
src/freedreno/vulkan/tu_drm.c | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/freedreno/drm/freedreno_bo.c b/src/freedreno/drm/freedreno_bo.c
index 15491b965dd..2e518f9f4d0 100644
--- a/src/freedreno/drm/freedreno_bo.c
+++ b/src/freedreno/drm/freedreno_bo.c
@@ -416,7 +416,8 @@ fd_bo_dmabuf(struct fd_bo *bo)
{
int ret, prime_fd;
- ret = drmPrimeHandleToFD(bo->dev->fd, bo->handle, DRM_CLOEXEC, &prime_fd);
+ ret = drmPrimeHandleToFD(bo->dev->fd, bo->handle, DRM_CLOEXEC | DRM_RDWR,
+ &prime_fd);
if (ret) {
ERROR_MSG("failed to get dmabuf fd: %d", ret);
return ret;
diff --git a/src/freedreno/vulkan/tu_drm.c b/src/freedreno/vulkan/tu_drm.c
index 7a3f4106d6c..c33c9f6fb4b 100644
--- a/src/freedreno/vulkan/tu_drm.c
+++ b/src/freedreno/vulkan/tu_drm.c
@@ -288,7 +288,7 @@ tu_bo_export_dmabuf(struct tu_device *dev, struct tu_bo *bo)
{
int prime_fd;
int ret = drmPrimeHandleToFD(dev->fd, bo->gem_handle,
- DRM_CLOEXEC, &prime_fd);
+ DRM_CLOEXEC | DRM_RDWR, &prime_fd);
return ret == 0 ? prime_fd : -1;
}
More information about the mesa-commit
mailing list