Em Fri, 9 Oct 2020 09:59:27 +0200 Daniel Vetter <daniel.vet...@ffwll.ch> escreveu:
> 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. I won't repeat here the discussions for patch 09/17, but just to be clear about this one: NACK. We need a better alternative to avoid breaking existing media applications. > > 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> > --- > 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 2b0b97761d15..a1b85fe9e7c1 100644 > --- a/drivers/media/common/videobuf2/frame_vector.c > +++ b/drivers/media/common/videobuf2/frame_vector.c > @@ -69,7 +69,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; > Thanks, Mauro