Commit 6f508c88 authored by Dmitry Osipenko's avatar Dmitry Osipenko

media: videobuf2: Don't assert held reservation lock for dma-buf mmapping

Don't assert held dma-buf reservation lock on memory mapping of exported
buffer.

We're going to change dma-buf mmap() locking policy such that exporters
will have to handle the lock. The previous locking policy caused deadlock
problem for DRM drivers in a case of self-imported dma-bufs once these
drivers are moved to use reservation lock universally. The problem is
solved by moving the lock down to exporters. This patch prepares videobuf2
for the locking policy update.
Reviewed-by: default avatarEmil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarDmitry Osipenko <dmitry.osipenko@collabora.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230529223935.2672495-2-dmitry.osipenko@collabora.com
parent 387dc06f
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
*/ */
#include <linux/dma-buf.h> #include <linux/dma-buf.h>
#include <linux/dma-resv.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/refcount.h> #include <linux/refcount.h>
#include <linux/scatterlist.h> #include <linux/scatterlist.h>
...@@ -456,8 +455,6 @@ static int vb2_dc_dmabuf_ops_vmap(struct dma_buf *dbuf, struct iosys_map *map) ...@@ -456,8 +455,6 @@ static int vb2_dc_dmabuf_ops_vmap(struct dma_buf *dbuf, struct iosys_map *map)
static int vb2_dc_dmabuf_ops_mmap(struct dma_buf *dbuf, static int vb2_dc_dmabuf_ops_mmap(struct dma_buf *dbuf,
struct vm_area_struct *vma) struct vm_area_struct *vma)
{ {
dma_resv_assert_held(dbuf->resv);
return vb2_dc_mmap(dbuf->priv, vma); return vb2_dc_mmap(dbuf->priv, vma);
} }
......
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
* the Free Software Foundation. * the Free Software Foundation.
*/ */
#include <linux/dma-resv.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/refcount.h> #include <linux/refcount.h>
...@@ -498,8 +497,6 @@ static int vb2_dma_sg_dmabuf_ops_vmap(struct dma_buf *dbuf, ...@@ -498,8 +497,6 @@ static int vb2_dma_sg_dmabuf_ops_vmap(struct dma_buf *dbuf,
static int vb2_dma_sg_dmabuf_ops_mmap(struct dma_buf *dbuf, static int vb2_dma_sg_dmabuf_ops_mmap(struct dma_buf *dbuf,
struct vm_area_struct *vma) struct vm_area_struct *vma)
{ {
dma_resv_assert_held(dbuf->resv);
return vb2_dma_sg_mmap(dbuf->priv, vma); return vb2_dma_sg_mmap(dbuf->priv, vma);
} }
......
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
* the Free Software Foundation. * the Free Software Foundation.
*/ */
#include <linux/dma-resv.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/mm.h> #include <linux/mm.h>
...@@ -319,8 +318,6 @@ static int vb2_vmalloc_dmabuf_ops_vmap(struct dma_buf *dbuf, ...@@ -319,8 +318,6 @@ static int vb2_vmalloc_dmabuf_ops_vmap(struct dma_buf *dbuf,
static int vb2_vmalloc_dmabuf_ops_mmap(struct dma_buf *dbuf, static int vb2_vmalloc_dmabuf_ops_mmap(struct dma_buf *dbuf,
struct vm_area_struct *vma) struct vm_area_struct *vma)
{ {
dma_resv_assert_held(dbuf->resv);
return vb2_vmalloc_mmap(dbuf->priv, vma); return vb2_vmalloc_mmap(dbuf->priv, vma);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment