On 27/11/2020 17:41, Daniel Vetter wrote:
> The media model assumes that buffers are all preallocated, so that
> when a media pipeline is running we never miss a deadline because the
> buffers aren't allocated or available.
> 
> This means we cannot fix the v4l follow_pfn usage through
> mmu_notifier, without breaking how this all works. The only real fix
> is to deprecate userptr support for VM_IO | VM_PFNMAP mappings and
> tell everyone to cut over to dma-buf memory sharing for zerocopy.
> 
> userptr for normal memory will keep working as-is, this only affects
> the zerocopy userptr usage enabled in 50ac952d2263 ("[media]
> videobuf2-dma-sg: Support io userptr operations on io memory").
> 
> Acked-by: Tomasz Figa <tf...@chromium.org>

Acked-by: Hans Verkuil <hverkuil-ci...@xs4all.nl>

Regards,

        Hans

> Signed-off-by: Daniel Vetter <daniel.vet...@intel.com>
> Cc: Jason Gunthorpe <j...@ziepe.ca>
> Cc: Kees Cook <keesc...@chromium.org>
> Cc: Dan Williams <dan.j.willi...@intel.com>
> Cc: Andrew Morton <a...@linux-foundation.org>
> Cc: John Hubbard <jhubb...@nvidia.com>
> Cc: Jérôme Glisse <jgli...@redhat.com>
> Cc: Jan Kara <j...@suse.cz>
> Cc: Dan Williams <dan.j.willi...@intel.com>
> Cc: linux...@kvack.org
> Cc: linux-arm-ker...@lists.infradead.org
> Cc: linux-samsung-...@vger.kernel.org
> Cc: linux-me...@vger.kernel.org
> Cc: Pawel Osciak <pa...@osciak.com>
> Cc: Marek Szyprowski <m.szyprow...@samsung.com>
> Cc: Kyungmin Park <kyungmin.p...@samsung.com>
> Cc: Tomasz Figa <tf...@chromium.org>
> Cc: Laurent Dufour <lduf...@linux.ibm.com>
> Cc: Vlastimil Babka <vba...@suse.cz>
> Cc: Daniel Jordan <daniel.m.jor...@oracle.com>
> Cc: Michel Lespinasse <wal...@google.com>
> Signed-off-by: Daniel Vetter <daniel.vet...@ffwll.ch>
> --
> v3:
> - Reference the commit that enabled the zerocopy userptr use case to
>   make it abundandtly clear that this patch only affects that, and not
>   normal memory userptr. The old commit message already explained that
>   normal memory userptr is unaffected, but I guess that was not clear
>   enough.
> ---
>  drivers/media/common/videobuf2/frame_vector.c | 2 +-
>  drivers/media/v4l2-core/videobuf-dma-contig.c | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/media/common/videobuf2/frame_vector.c 
> b/drivers/media/common/videobuf2/frame_vector.c
> index a0e65481a201..1a82ec13ea00 100644
> --- a/drivers/media/common/videobuf2/frame_vector.c
> +++ b/drivers/media/common/videobuf2/frame_vector.c
> @@ -70,7 +70,7 @@ int get_vaddr_frames(unsigned long start, unsigned int 
> nr_frames,
>                       break;
>  
>               while (ret < nr_frames && start + PAGE_SIZE <= vma->vm_end) {
> -                     err = follow_pfn(vma, start, &nums[ret]);
> +                     err = unsafe_follow_pfn(vma, start, &nums[ret]);
>                       if (err) {
>                               if (ret == 0)
>                                       ret = err;
> diff --git a/drivers/media/v4l2-core/videobuf-dma-contig.c 
> b/drivers/media/v4l2-core/videobuf-dma-contig.c
> index 52312ce2ba05..821c4a76ab96 100644
> --- a/drivers/media/v4l2-core/videobuf-dma-contig.c
> +++ b/drivers/media/v4l2-core/videobuf-dma-contig.c
> @@ -183,7 +183,7 @@ static int videobuf_dma_contig_user_get(struct 
> videobuf_dma_contig_memory *mem,
>       user_address = untagged_baddr;
>  
>       while (pages_done < (mem->size >> PAGE_SHIFT)) {
> -             ret = follow_pfn(vma, user_address, &this_pfn);
> +             ret = unsafe_follow_pfn(vma, user_address, &this_pfn);
>               if (ret)
>                       break;
>  
> 

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to