Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1168791 > unrolled thread
| Started by | Daniel Thompson <daniel.thompson@linaro.org> |
|---|---|
| First post | 2015-06-19 16:00 +0200 |
| Last post | 2015-06-19 16:00 +0200 |
| Articles | 2 — 1 participant |
Back to article view | Back to linux.kernel
[RESEND PATCH v2 v4.1-rc8 0/2] drm: prime: Allow exported dma-bufs to be mapped Daniel Thompson <daniel.thompson@linaro.org> - 2015-06-19 16:00 +0200
[RESEND PATCH v2 v4.1-rc8 1/2] drm: prime: Honour O_RDWR during prime-handle-to-fd Daniel Thompson <daniel.thompson@linaro.org> - 2015-06-19 16:00 +0200
| From | Daniel Thompson <daniel.thompson@linaro.org> |
|---|---|
| Date | 2015-06-19 16:00 +0200 |
| Subject | [RESEND PATCH v2 v4.1-rc8 0/2] drm: prime: Allow exported dma-bufs to be mapped |
| Message-ID | <pD4ZP-JR-3@gated-at.bofh.it> |
This patch set started out as a single patch with a trivial bit of
boilerplate to add dmabuf mmap support to the msm driver. However Rob
Clark pointed out that, rather than keep one of the tricks I had used, it
would be better to change the helpers resulting in this series.
I've tested this both with a rather hacked about Android userspace
and with a fairly small test case run from debian. Both bits of code
currently use dumb buffers.
Thanks to Benjamin Gaignard for his help in finding this bit of code and
to Damien Hobson-Garcia for pointing out that I'd forgotten (since 3.18)
to RESEND these patches.
Dave: I guess its probably too late in the dev. cycle to take this code
but don't worry, I will try really hard to remember to RESEND it
for 4.2. ;-)
v2:
* Modified DRM_PRIME_HANDLE_TO_FD to honour the O_RDRW from the user
and removed code to workaround this from the sti driver (Rob Clark).
* Added a patch to (rather spartanly) document gem_prime_mmap. Only
tacked into this series 'cos I spotted it was missing when I was
checking whether I needed to describe DRM_RDRW anywhere.
Daniel Thompson (2):
drm: prime: Honour O_RDWR during prime-handle-to-fd
drm: prime: Document gem_prime_mmap
drivers/gpu/drm/drm_prime.c | 13 ++++++-------
include/uapi/drm/drm.h | 1 +
2 files changed, 7 insertions(+), 7 deletions(-)
--
2.4.3
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Daniel Thompson <daniel.thompson@linaro.org> |
|---|---|
| Date | 2015-06-19 16:00 +0200 |
| Subject | [RESEND PATCH v2 v4.1-rc8 1/2] drm: prime: Honour O_RDWR during prime-handle-to-fd |
| Message-ID | <pD4ZQ-JR-19@gated-at.bofh.it> |
| In reply to | #1168791 |
Currently DRM_IOCTL_PRIME_HANDLE_TO_FD rejects all flags except
(DRM|O)_CLOEXEC making it difficult (maybe impossible) for userspace
to mmap() the resulting dma-buf even when this is supported by the
DRM driver.
It is trivial to relax the restriction and permit read/write access.
This is safe because the flags are seldom touched by drm; mostly they
are passed verbatim to dma_buf calls.
Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/gpu/drm/drm_prime.c | 9 +++------
include/uapi/drm/drm.h | 1 +
2 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
index 7fec191b45f7..6d2cf4fb4038 100644
--- a/drivers/gpu/drm/drm_prime.c
+++ b/drivers/gpu/drm/drm_prime.c
@@ -331,7 +331,7 @@ static const struct dma_buf_ops drm_gem_prime_dmabuf_ops = {
* drm_gem_prime_export - helper library implementation of the export callback
* @dev: drm_device to export from
* @obj: GEM object to export
- * @flags: flags like DRM_CLOEXEC
+ * @flags: flags like DRM_CLOEXEC and DRM_RDWR
*
* This is the implementation of the gem_prime_export functions for GEM drivers
* using the PRIME helpers.
@@ -639,14 +639,11 @@ int drm_prime_handle_to_fd_ioctl(struct drm_device *dev, void *data,
return -ENOSYS;
/* check flags are valid */
- if (args->flags & ~DRM_CLOEXEC)
+ if (args->flags & ~(DRM_CLOEXEC | DRM_RDWR))
return -EINVAL;
- /* we only want to pass DRM_CLOEXEC which is == O_CLOEXEC */
- flags = args->flags & DRM_CLOEXEC;
-
return dev->driver->prime_handle_to_fd(dev, file_priv,
- args->handle, flags, &args->fd);
+ args->handle, args->flags, &args->fd);
}
int drm_prime_fd_to_handle_ioctl(struct drm_device *dev, void *data,
diff --git a/include/uapi/drm/drm.h b/include/uapi/drm/drm.h
index ff6ef62d084b..092fe3fa8ec0 100644
--- a/include/uapi/drm/drm.h
+++ b/include/uapi/drm/drm.h
@@ -668,6 +668,7 @@ struct drm_set_client_cap {
__u64 value;
};
+#define DRM_RDWR O_RDWR
#define DRM_CLOEXEC O_CLOEXEC
struct drm_prime_handle {
__u32 handle;
--
2.4.3
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web