Subject: [PATCH] ARM: fix missing flush_kernel_dcache_page() for noMMU

From: [email-masked] (Kevin Hilman)
Date: Thu, 20 Jun 2013 07:30:54 -0700

Simon Baatz <[email-masked]> writes:

> Commit 1bc3974 moved the implementation of flush_kernel_dcache_page()
> into in mm/flush.c but did not implement it on noMMU ARM.
>
> Signed-off-by: Simon Baatz <[email-masked]>
> Cc: <[email-masked]> # 3.2+: 1bc3974: ARM: 7755/1
> Cc: <[email-masked]> # 3.2+
> ---
>
> ARM 7755/1 "handle user space mapped pages in flush_kernel_dcache_page"
> unfortunately broke the no MMU case.  Compile tested with allnoconfig and
> at91x40_defconfig on v3.10-rc6/v3.9.6 + ARM 7755/1.  On older stable kernels
> (3.2.47 & 3.4.49) compiled with at91x40_defconfig.

Acked-by: Kevin Hilman <[email-masked]>

This fix is needed in linux-next also, which started failing 
allnoconfig builds since next-20130619.

Kevin

>
> - Simon
>
>  arch/arm/mm/nommu.c |    6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/arch/arm/mm/nommu.c b/arch/arm/mm/nommu.c
> index d51225f..eb5293a 100644
> --- a/arch/arm/mm/nommu.c
> +++ b/arch/arm/mm/nommu.c
> @@ -57,6 +57,12 @@ void flush_dcache_page(struct page *page)
>  }
>  EXPORT_SYMBOL(flush_dcache_page);
>  
> +void flush_kernel_dcache_page(struct page *page)
> +{
> +	__cpuc_flush_dcache_area(page_address(page), PAGE_SIZE);
> +}
> +EXPORT_SYMBOL(flush_kernel_dcache_page);
> +
>  void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
>  		       unsigned long uaddr, void *dst, const void *src,
>  		       unsigned long len)