Re: [PATCH v2] soc: qcom: Add support for mmap functionality.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.
> 



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux