[PATCH 3/3] media: videobuf2: set dma_coherent flag for DMA-buf
Hans Verkuil
hverkuil at xs4all.nl
Fri Nov 4 10:42:23 UTC 2022
Hi Christian,
On 20/10/2022 14:13, Christian König wrote:
> When a device is snooping the CPU cache we assume that all importers
> must snoop the CPU cache as well.
>
> Execpt for vmalloc allocations since those implement mmap() imports must
> always snoop the cache or we will run into coherency problems.
Looks reasonable.
For this series:
Acked-by: Hans Verkuil <hverkuil-cisco at xs4all.nl>
Regards,
Hans
>
> Signed-off-by: Christian König <christian.koenig at amd.com>
> ---
> drivers/media/common/videobuf2/videobuf2-dma-contig.c | 2 ++
> drivers/media/common/videobuf2/videobuf2-dma-sg.c | 2 ++
> drivers/media/common/videobuf2/videobuf2-vmalloc.c | 1 +
> 3 files changed, 5 insertions(+)
>
> diff --git a/drivers/media/common/videobuf2/videobuf2-dma-contig.c b/drivers/media/common/videobuf2/videobuf2-dma-contig.c
> index 555bd40fa472..57433310c55c 100644
> --- a/drivers/media/common/videobuf2/videobuf2-dma-contig.c
> +++ b/drivers/media/common/videobuf2/videobuf2-dma-contig.c
> @@ -11,6 +11,7 @@
> */
>
> #include <linux/dma-buf.h>
> +#include <linux/dma-map-ops.h>
> #include <linux/module.h>
> #include <linux/refcount.h>
> #include <linux/scatterlist.h>
> @@ -507,6 +508,7 @@ static struct dma_buf *vb2_dc_get_dmabuf(struct vb2_buffer *vb,
> exp_info.size = buf->size;
> exp_info.flags = flags;
> exp_info.priv = buf;
> + exp_info.coherent = dev_is_dma_coherent(vb->vb2_queue->dev);
>
> if (!buf->sgt_base)
> buf->sgt_base = vb2_dc_get_base_sgt(buf);
> diff --git a/drivers/media/common/videobuf2/videobuf2-dma-sg.c b/drivers/media/common/videobuf2/videobuf2-dma-sg.c
> index 36981a5b5c53..dbdd753e4a39 100644
> --- a/drivers/media/common/videobuf2/videobuf2-dma-sg.c
> +++ b/drivers/media/common/videobuf2/videobuf2-dma-sg.c
> @@ -10,6 +10,7 @@
> * the Free Software Foundation.
> */
>
> +#include <linux/dma-map-ops.h>
> #include <linux/module.h>
> #include <linux/mm.h>
> #include <linux/refcount.h>
> @@ -522,6 +523,7 @@ static struct dma_buf *vb2_dma_sg_get_dmabuf(struct vb2_buffer *vb,
> exp_info.size = buf->size;
> exp_info.flags = flags;
> exp_info.priv = buf;
> + exp_info.coherent = dev_is_dma_coherent(vb->vb2_queue->dev);
>
> if (WARN_ON(!buf->dma_sgt))
> return NULL;
> diff --git a/drivers/media/common/videobuf2/videobuf2-vmalloc.c b/drivers/media/common/videobuf2/videobuf2-vmalloc.c
> index 41db707e43a4..0b6874733e86 100644
> --- a/drivers/media/common/videobuf2/videobuf2-vmalloc.c
> +++ b/drivers/media/common/videobuf2/videobuf2-vmalloc.c
> @@ -341,6 +341,7 @@ static struct dma_buf *vb2_vmalloc_get_dmabuf(struct vb2_buffer *vb,
> exp_info.size = buf->size;
> exp_info.flags = flags;
> exp_info.priv = buf;
> + exp_info.coherent = true;
>
> if (WARN_ON(!buf->vaddr))
> return NULL;
More information about the dri-devel
mailing list