Hi Daniel,
On 07.10.2020 14:01, Daniel Vetter wrote:
On Wed, Oct 7, 2020 at 12:47 PM Marek Szyprowski m.szyprowski@samsung.com wrote:
On 03.10.2020 11:40, Daniel Vetter wrote:
After he three places above should use pin_user_pages_fast(), then this whole broken API should be moved into videobuf2-memops.c and a big fat "THIS DOESN'T WORK" stuck on it.
videobuf2 should probably use P2P DMA buf for this instead.
Yup this should be done with dma_buf instead, and v4l has that.
Yes, V4L2 has dma_buf support NOW. That days, using so called V4L2 USERPTR method was the only way to achieve zero copy buffer sharing between devices, so this is just a historical baggage. I've been actively involved in implementing that. I've tried to make it secure as much as possible assuming the limitation of that approach. With a few assumptions it works fine. Buffers are refcounted both by the vm_ops->open or by incrementing the refcount of the vm->file. This basically works with any sane driver, which doesn't free the mmaped buffer until the file is released. This is true for V4L2 and FBdev devices.
I'm not seeing any of that vm->file refcounting going on, so not seeing anything that prevents the mmap area from being removed. Can you pls give me some pointers about which code you're thinking of?
Well, it was in vb2_get_vma() function, but now I see that it has been lost in fb639eb39154 and 6690c8c78c74 some time ago...
Best regards