[media] dma-mapping: enable no mmu support in dma_common_mmap

Message ID 1362526811-15768-1-git-send-email-scott.jiang.linux@gmail.com (mailing list archive)
State RFC, archived
Headers

Commit Message

Scott Jiang March 5, 2013, 11:40 p.m. UTC
  No MMU systems also make use of this function to do mmap.

Signed-off-by: Scott Jiang <scott.jiang.linux@gmail.com>
---
 drivers/base/dma-mapping.c |    2 --
 1 files changed, 0 insertions(+), 2 deletions(-)
  

Comments

Marek Szyprowski March 13, 2013, 3:54 p.m. UTC | #1
Hello,

On 3/6/2013 12:40 AM, Scott Jiang wrote:
> No MMU systems also make use of this function to do mmap.
>
> Signed-off-by: Scott Jiang <scott.jiang.linux@gmail.com>
> ---
>   drivers/base/dma-mapping.c |    2 --
>   1 files changed, 0 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/base/dma-mapping.c b/drivers/base/dma-mapping.c
> index 0ce39a3..ae655b2 100644
> --- a/drivers/base/dma-mapping.c
> +++ b/drivers/base/dma-mapping.c
> @@ -245,7 +245,6 @@ int dma_common_mmap(struct device *dev, struct vm_area_struct *vma,
>   		    void *cpu_addr, dma_addr_t dma_addr, size_t size)
>   {
>   	int ret = -ENXIO;
> -#ifdef CONFIG_MMU
>   	unsigned long user_count = (vma->vm_end - vma->vm_start) >> PAGE_SHIFT;
>   	unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT;
>   	unsigned long pfn = page_to_pfn(virt_to_page(cpu_addr));
> @@ -262,7 +261,6 @@ int dma_common_mmap(struct device *dev, struct vm_area_struct *vma,
>   				      user_count << PAGE_SHIFT,
>   				      vma->vm_page_prot);
>   	}
> -#endif	/* CONFIG_MMU */
>   
>   	return ret;
>   }

I really have no experience with NO-MMU kernels, could you explain a bit 
more how this
is useful for handling mmap on such systems? How remap_pfn_range() is 
handled on no-mmu
systems?

I've thought that mmap on no-mmu systems is silently replaced by a call to
get_unmapped_area(), but it looks that there is still a call to mmap 
function.

Best regards
  

Patch

diff --git a/drivers/base/dma-mapping.c b/drivers/base/dma-mapping.c
index 0ce39a3..ae655b2 100644
--- a/drivers/base/dma-mapping.c
+++ b/drivers/base/dma-mapping.c
@@ -245,7 +245,6 @@  int dma_common_mmap(struct device *dev, struct vm_area_struct *vma,
 		    void *cpu_addr, dma_addr_t dma_addr, size_t size)
 {
 	int ret = -ENXIO;
-#ifdef CONFIG_MMU
 	unsigned long user_count = (vma->vm_end - vma->vm_start) >> PAGE_SHIFT;
 	unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT;
 	unsigned long pfn = page_to_pfn(virt_to_page(cpu_addr));
@@ -262,7 +261,6 @@  int dma_common_mmap(struct device *dev, struct vm_area_struct *vma,
 				      user_count << PAGE_SHIFT,
 				      vma->vm_page_prot);
 	}
-#endif	/* CONFIG_MMU */
 
 	return ret;
 }