<div dir="ltr">Hi,<div><br></div><div style>(userspace DMA)</div><div style><br></div><div style>I&#39;m writing a device driver for a h/w decoder which (dma) source buffers should (preferably) be visible to userspace (mmap&#39;ed) so that the application can directly load data into these.</div>

<div style><br></div><div style>The h/w expects the buffer to be circular in physical ram (ring buffer) with data starting from the middle of it, whereas userspace would be providing a vma when mmap()&#39;ing which is linear in its virtual address space.</div>

<div style><br></div><div style>Is it possible to alter the incoming vma so that a first region of that vma is mapped to the bottom of the dma buffer whereas a second region of the vma is mapped to the beginning of the dma buffer? This way the circular layout constraint of the dma buffer won&#39;t be visible to the userspace application, while also enabling it to directly load data in the correct order.</div>

<div style><br></div><div style>Is it possible to achieve this (such as via split_vma() and a couple of remap_pfn_range() calls into the mmap handler)?</div><div style><br></div><div style>Thanks,</div><div style><br></div>

<div style>Ilyes</div></div>