On Sun 03 Feb 20:45 PST 2019, Ankit Jain wrote: > This change adds mmap functionality to rmtfs_mem driver. > Userspace application can map the address and use this > mapped address directly as buffer for read/write call to disk. > and avoid the read/write call to the shared path to copy the > buffer to userspace application. > Reviewed-by: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx> And I've picked it up for inclusion in 5.2. Regards, Bjorn > Signed-off-by: Ankit Jain <jankit@xxxxxxxxxxxxxx> > --- > drivers/soc/qcom/rmtfs_mem.c | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) > > diff --git a/drivers/soc/qcom/rmtfs_mem.c b/drivers/soc/qcom/rmtfs_mem.c > index 7200d76..6f5e8be 100644 > --- a/drivers/soc/qcom/rmtfs_mem.c > +++ b/drivers/soc/qcom/rmtfs_mem.c > @@ -137,6 +137,26 @@ static int qcom_rmtfs_mem_release(struct inode *inode, struct file *filp) > .name = "rmtfs", > }; > > +static int qcom_rmtfs_mem_mmap(struct file *filep, struct vm_area_struct *vma) > +{ > + struct qcom_rmtfs_mem *rmtfs_mem = filep->private_data; > + > + if (vma->vm_end - vma->vm_start > rmtfs_mem->size) { > + dev_dbg(&rmtfs_mem->dev, > + "vm_end[%lu] - vm_start[%lu] [%lu] > mem->size[%pa]\n", > + vma->vm_end, vma->vm_start, > + (vma->vm_end - vma->vm_start), &rmtfs_mem->size); > + return -EINVAL; > + } > + > + vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot); > + return remap_pfn_range(vma, > + vma->vm_start, > + rmtfs_mem->addr >> PAGE_SHIFT, > + vma->vm_end - vma->vm_start, > + vma->vm_page_prot); > +} > + > static const struct file_operations qcom_rmtfs_mem_fops = { > .owner = THIS_MODULE, > .open = qcom_rmtfs_mem_open, > @@ -144,6 +164,7 @@ static int qcom_rmtfs_mem_release(struct inode *inode, struct file *filp) > .write = qcom_rmtfs_mem_write, > .release = qcom_rmtfs_mem_release, > .llseek = default_llseek, > + .mmap = qcom_rmtfs_mem_mmap, > }; > > static void qcom_rmtfs_mem_release_device(struct device *dev) > -- > Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center, Inc. > Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation collaborative Project. >