linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greentime Hu <green.hu@gmail.com>
To: Mike Rapoport <rppt@kernel.org>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Nick Hu <nickhu@andestech.com>,
	Vincent Chen <deanbo422@gmail.com>, Arnd Bergmann <arnd@arndb.de>,
	linux-arch <linux-arch@vger.kernel.org>,
	Mike Rapoport <rppt@linux.ibm.com>,
	kbuild test robot <lkp@intel.com>
Subject: Re: [PATCH 1/2] asm-generic/nds32: don't redefine cacheflush primitives
Date: Tue, 24 Dec 2019 10:13:53 +0800	[thread overview]
Message-ID: <CAEbi=3eGPkQLALqspua3g0ZLkkm+t7myW8hopZO+dzQhpf4DmQ@mail.gmail.com> (raw)
In-Reply-To: <20191223110004.2157-2-rppt@kernel.org>

Mike Rapoport <rppt@kernel.org> 於 2019年12月23日 週一 下午7:00寫道:
>
> From: Mike Rapoport <rppt@linux.ibm.com>
>
> The commit c296d4dc13ae ("asm-generic: fix a compilation warning") changed
> asm-generic/cachflush.h to use static inlines instead of macros and as a
> result the nds32 build with CONFIG_CPU_CACHE_ALIASING=n fails:
>
>   CC      init/main.o
> In file included from arch/nds32/include/asm/cacheflush.h:43,
>                  from include/linux/highmem.h:12,
>                  from include/linux/pagemap.h:11,
>                  from include/linux/blkdev.h:16,
>                  from include/linux/blk-cgroup.h:23,
>                  from include/linux/writeback.h:14,
>                  from init/main.c:44:
> include/asm-generic/cacheflush.h:50:20: error: static declaration of 'flush_icache_range' follows non-static declaration
>  static inline void flush_icache_range(unsigned long start, unsigned long end)
>                     ^~~~~~~~~~~~~~~~~~
> In file included from include/linux/highmem.h:12,
>                  from include/linux/pagemap.h:11,
>                  from include/linux/blkdev.h:16,
>                  from include/linux/blk-cgroup.h:23,
>                  from include/linux/writeback.h:14,
>                  from init/main.c:44:
> arch/nds32/include/asm/cacheflush.h:11:6: note: previous declaration of 'flush_icache_range' was here
>  void flush_icache_range(unsigned long start, unsigned long end);
>       ^~~~~~~~~~~~~~~~~~
>
> Surround the inline functions in asm-generic/cacheflush.h by ifdef's so
> that architectures could override them and add the required overrides to
> nds32.
>
> Fixes: c296d4dc13ae ("asm-generic: fix a compilation warning")
> Link: https://lore.kernel.org/lkml/201912212139.yptX8CsV%25lkp@intel.com/
> Reported-by: kbuild test robot <lkp@intel.com>
> Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
> ---
>  arch/nds32/include/asm/cacheflush.h | 11 ++++++----
>  include/asm-generic/cacheflush.h    | 33 ++++++++++++++++++++++++++++-
>  2 files changed, 39 insertions(+), 5 deletions(-)
>
> diff --git a/arch/nds32/include/asm/cacheflush.h b/arch/nds32/include/asm/cacheflush.h
> index d9ac7e6408ef..caddded56e77 100644
> --- a/arch/nds32/include/asm/cacheflush.h
> +++ b/arch/nds32/include/asm/cacheflush.h
> @@ -9,7 +9,11 @@
>  #define PG_dcache_dirty PG_arch_1
>
>  void flush_icache_range(unsigned long start, unsigned long end);
> +#define flush_icache_range flush_icache_range
> +
>  void flush_icache_page(struct vm_area_struct *vma, struct page *page);
> +#define flush_icache_page flush_icache_page
> +
>  #ifdef CONFIG_CPU_CACHE_ALIASING
>  void flush_cache_mm(struct mm_struct *mm);
>  void flush_cache_dup_mm(struct mm_struct *mm);
> @@ -40,12 +44,11 @@ void invalidate_kernel_vmap_range(void *addr, int size);
>  #define flush_dcache_mmap_unlock(mapping) xa_unlock_irq(&(mapping)->i_pages)
>
>  #else
> -#include <asm-generic/cacheflush.h>
> -#undef flush_icache_range
> -#undef flush_icache_page
> -#undef flush_icache_user_range
>  void flush_icache_user_range(struct vm_area_struct *vma, struct page *page,
>                              unsigned long addr, int len);
> +#define flush_icache_user_range flush_icache_user_range
> +
> +#include <asm-generic/cacheflush.h>
>  #endif
>
>  #endif /* __NDS32_CACHEFLUSH_H__ */
> diff --git a/include/asm-generic/cacheflush.h b/include/asm-generic/cacheflush.h
> index a950a22c4890..cac7404b2bdd 100644
> --- a/include/asm-generic/cacheflush.h
> +++ b/include/asm-generic/cacheflush.h
> @@ -11,71 +11,102 @@
>   * The cache doesn't need to be flushed when TLB entries change when
>   * the cache is mapped to physical memory, not virtual memory
>   */
> +#ifndef flush_cache_all
>  static inline void flush_cache_all(void)
>  {
>  }
> +#endif
>
> +#ifndef flush_cache_mm
>  static inline void flush_cache_mm(struct mm_struct *mm)
>  {
>  }
> +#endif
>
> +#ifndef flush_cache_dup_mm
>  static inline void flush_cache_dup_mm(struct mm_struct *mm)
>  {
>  }
> +#endif
>
> +#ifndef flush_cache_range
>  static inline void flush_cache_range(struct vm_area_struct *vma,
>                                      unsigned long start,
>                                      unsigned long end)
>  {
>  }
> +#endif
>
> +#ifndef flush_cache_page
>  static inline void flush_cache_page(struct vm_area_struct *vma,
>                                     unsigned long vmaddr,
>                                     unsigned long pfn)
>  {
>  }
> +#endif
>
> +#ifndef flush_dcache_page
>  static inline void flush_dcache_page(struct page *page)
>  {
>  }
> +#endif
>
> +#ifndef flush_dcache_mmap_lock
>  static inline void flush_dcache_mmap_lock(struct address_space *mapping)
>  {
>  }
> +#endif
>
> +#ifndef flush_dcache_mmap_unlock
>  static inline void flush_dcache_mmap_unlock(struct address_space *mapping)
>  {
>  }
> +#endif
>
> +#ifndef flush_icache_range
>  static inline void flush_icache_range(unsigned long start, unsigned long end)
>  {
>  }
> +#endif
>
> +#ifndef flush_icache_page
>  static inline void flush_icache_page(struct vm_area_struct *vma,
>                                      struct page *page)
>  {
>  }
> +#endif
>
> +#ifndef flush_icache_user_range
>  static inline void flush_icache_user_range(struct vm_area_struct *vma,
>                                            struct page *page,
>                                            unsigned long addr, int len)
>  {
>  }
> +#endif
>
> +#ifndef flush_cache_vmap
>  static inline void flush_cache_vmap(unsigned long start, unsigned long end)
>  {
>  }
> +#endif
>
> +#ifndef flush_cache_vunmap
>  static inline void flush_cache_vunmap(unsigned long start, unsigned long end)
>  {
>  }
> +#endif
>
> -#define copy_to_user_page(vma, page, vaddr, dst, src, len) \
> +#ifndef copy_to_user_page
> +#define copy_to_user_page(vma, page, vaddr, dst, src, len)     \
>         do { \
>                 memcpy(dst, src, len); \
>                 flush_icache_user_range(vma, page, vaddr, len); \
>         } while (0)
> +#endif
> +
> +#ifndef copy_from_user_page
>  #define copy_from_user_page(vma, page, vaddr, dst, src, len) \
>         memcpy(dst, src, len)
> +#endif
>
>  #endif /* __ASM_CACHEFLUSH_H */

Thank you, Mike.
Reviewed-by: Greentime Hu <green.hu@gmail.com>

  reply	other threads:[~2019-12-24  2:14 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-23 11:00 [PATCH 0/2] fix recent nds32 build breakage Mike Rapoport
2019-12-23 11:00 ` [PATCH 1/2] asm-generic/nds32: don't redefine cacheflush primitives Mike Rapoport
2019-12-24  2:13   ` Greentime Hu [this message]
2019-12-23 11:00 ` [PATCH 2/2] nds32: fix build failure caused by page table folding updates Mike Rapoport
2019-12-24  2:14   ` Greentime Hu
2019-12-27 11:07 ` [PATCH 0/2] fix recent nds32 build breakage Mike Rapoport
2019-12-30 10:21   ` Arnd Bergmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAEbi=3eGPkQLALqspua3g0ZLkkm+t7myW8hopZO+dzQhpf4DmQ@mail.gmail.com' \
    --to=green.hu@gmail.com \
    --cc=arnd@arndb.de \
    --cc=deanbo422@gmail.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=nickhu@andestech.com \
    --cc=rppt@kernel.org \
    --cc=rppt@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).