[RESEND PATCH] riscv: Move nommu pgprot_* macros to pgtable.h

Palmer Dabbelt palmer at dabbelt.com
Mon Jul 13 21:21:20 EDT 2020


On Mon, 29 Jun 2020 23:28:28 PDT (-0700), penberg at gmail.com wrote:
> From: Pekka Enberg <penberg at kernel.org>
>
> The mmio.h header file defines some pgprot macros for !CONFIG_MMU, but
> pgtable.h seems like a better place for them.
>
> Compile tested with defconfig + !CONFIG_MMU.
>
> Cc: Kefeng Wang <wangkefeng.wang at huawei.com>
> Signed-off-by: Pekka Enberg <penberg at kernel.org>
> ---
> Although the patche appeard on the mailing list, they never made it to
> the inbox of some important folks such as maintainers... I assume the
> reason is that "git-send-email" used "penberg at kernel.org" in the email
> headers when it really was sent from "penberg at gmail.com".
>
>  arch/riscv/include/asm/mmio.h    | 6 ------
>  arch/riscv/include/asm/pgtable.h | 4 ++++
>  2 files changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/arch/riscv/include/asm/mmio.h b/arch/riscv/include/asm/mmio.h
> index 56053c9838b2..aff6c33ab0c0 100644
> --- a/arch/riscv/include/asm/mmio.h
> +++ b/arch/riscv/include/asm/mmio.h
> @@ -14,12 +14,6 @@
>  #include <linux/types.h>
>  #include <asm/mmiowb.h>
>
> -#ifndef CONFIG_MMU
> -#define pgprot_noncached(x)	(x)
> -#define pgprot_writecombine(x)	(x)
> -#define pgprot_device(x)	(x)
> -#endif /* CONFIG_MMU */
> -
>  /* Generic IO read/write.  These perform native-endian accesses. */
>  #define __raw_writeb __raw_writeb
>  static inline void __raw_writeb(u8 val, volatile void __iomem *addr)
> diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h
> index eaea1f717010..e82a32112b7e 100644
> --- a/arch/riscv/include/asm/pgtable.h
> +++ b/arch/riscv/include/asm/pgtable.h
> @@ -459,6 +459,10 @@ static inline int ptep_clear_flush_young(struct vm_area_struct *vma,
>
>  static inline void __kernel_map_pages(struct page *page, int numpages, int enable) {}
>
> +#define pgprot_noncached(x)	(x)
> +#define pgprot_writecombine(x)	(x)
> +#define pgprot_device(x)	(x)
> +
>  #endif /* !CONFIG_MMU */
>
>  #define kern_addr_valid(addr)   (1) /* FIXME */

This seems fine, but I guess I don't understand why they don't have default
values in the generic code for !MMU.  It kind of seems like it's an oversight
due to nested #ifdefs.  Assuming that's the case, we can just juggle those
around and then remove these from all the ports that define the now useless
macros.

LMK if you want to pursue that or if you want me to take it over.



More information about the linux-riscv mailing list