Re: [PATCH 1/3] m68k: use asm-generic/memory_model.h for both MMU and !MMU

2023-01-26 Thread Geert Uytterhoeven
On Wed, Jan 25, 2023 at 8:08 PM Mike Rapoport  wrote:
> From: "Mike Rapoport (IBM)" 
>
> The MMU variant uses generic definitions of page_to_pfn() and
> pfn_to_page(), but !MMU defines them in include/asm/page_no.h for no
> good reason.
>
> Include asm-generic/memory_model.h in the common include/asm/page.h and
> drop redundant definitions.
>
> Signed-off-by: Mike Rapoport (IBM) 

Reviewed-by: Geert Uytterhoeven 
Acked-by: Geert Uytterhoeven 

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

___
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc


Re: [PATCH 3/3] mm, arch: add generic implementation of pfn_valid() for FLATMEM

2023-01-26 Thread Guo Ren
On Thu, Jan 26, 2023 at 3:08 AM Mike Rapoport  wrote:
>
> From: "Mike Rapoport (IBM)" 
>
> Every architecture that supports FLATMEM memory model defines its own
> version of pfn_valid() that essentially compares a pfn to max_mapnr.
>
> Use mips/powerpc version implemented as static inline as a generic
> implementation of pfn_valid() and drop its per-architecture definitions
>
> Signed-off-by: Mike Rapoport (IBM) 
> ---
>  arch/alpha/include/asm/page.h  |  4 
>  arch/arc/include/asm/page.h|  1 -
>  arch/csky/include/asm/page.h   |  1 -
>  arch/hexagon/include/asm/page.h|  1 -
>  arch/ia64/include/asm/page.h   |  4 
>  arch/loongarch/include/asm/page.h  | 13 -
>  arch/m68k/include/asm/page_no.h|  2 --
>  arch/microblaze/include/asm/page.h |  1 -
>  arch/mips/include/asm/page.h   | 13 -
>  arch/nios2/include/asm/page.h  |  9 -
>  arch/openrisc/include/asm/page.h   |  2 --
>  arch/parisc/include/asm/page.h |  4 
>  arch/powerpc/include/asm/page.h|  9 -
>  arch/riscv/include/asm/page.h  |  5 -
>  arch/sh/include/asm/page.h |  3 ---
>  arch/sparc/include/asm/page_32.h   |  1 -
>  arch/um/include/asm/page.h |  1 -
>  arch/x86/include/asm/page_32.h |  4 
>  arch/x86/include/asm/page_64.h |  4 
>  arch/xtensa/include/asm/page.h |  2 --
>  include/asm-generic/memory_model.h | 12 
>  include/asm-generic/page.h |  2 --
>  22 files changed, 12 insertions(+), 86 deletions(-)
>
> diff --git a/arch/alpha/include/asm/page.h b/arch/alpha/include/asm/page.h
> index 8f3f5eecba28..227d32b6b75f 100644
> --- a/arch/alpha/include/asm/page.h
> +++ b/arch/alpha/include/asm/page.h
> @@ -87,10 +87,6 @@ typedef struct page *pgtable_t;
>  #define virt_to_page(kaddr)pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
>  #define virt_addr_valid(kaddr) pfn_valid((__pa(kaddr) >> PAGE_SHIFT))
>
> -#ifdef CONFIG_FLATMEM
> -#define pfn_valid(pfn) ((pfn) < max_mapnr)
> -#endif /* CONFIG_FLATMEM */
> -
>  #include 
>  #include 
>
> diff --git a/arch/arc/include/asm/page.h b/arch/arc/include/asm/page.h
> index 9a62e1d87967..e43fe27ec54d 100644
> --- a/arch/arc/include/asm/page.h
> +++ b/arch/arc/include/asm/page.h
> @@ -109,7 +109,6 @@ extern int pfn_valid(unsigned long pfn);
>  #else /* CONFIG_HIGHMEM */
>
>  #define ARCH_PFN_OFFSETvirt_to_pfn(CONFIG_LINUX_RAM_BASE)
> -#define pfn_valid(pfn) (((pfn) - ARCH_PFN_OFFSET) < max_mapnr)
>
>  #endif /* CONFIG_HIGHMEM */
>
> diff --git a/arch/csky/include/asm/page.h b/arch/csky/include/asm/page.h
> index ed7451478b1b..b23e3006a9e0 100644
> --- a/arch/csky/include/asm/page.h
> +++ b/arch/csky/include/asm/page.h
> @@ -39,7 +39,6 @@
>
>  #define virt_addr_valid(kaddr)  ((void *)(kaddr) >= (void *)PAGE_OFFSET && \
> (void *)(kaddr) < high_memory)
> -#define pfn_valid(pfn) ((pfn) >= ARCH_PFN_OFFSET && ((pfn) - 
> ARCH_PFN_OFFSET) < max_mapnr)
For csky part:
Acked-by: Guo Ren 

>
>  extern void *memset(void *dest, int c, size_t l);
>  extern void *memcpy(void *to, const void *from, size_t l);
> diff --git a/arch/hexagon/include/asm/page.h b/arch/hexagon/include/asm/page.h
> index d7d4f9fca327..9c03b9965f07 100644
> --- a/arch/hexagon/include/asm/page.h
> +++ b/arch/hexagon/include/asm/page.h
> @@ -95,7 +95,6 @@ struct page;
>  /* Default vm area behavior is non-executable.  */
>  #define VM_DATA_DEFAULT_FLAGS  VM_DATA_FLAGS_NON_EXEC
>
> -#define pfn_valid(pfn) ((pfn) < max_mapnr)
>  #define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
>
>  /*  Need to not use a define for linesize; may move this to another file.  */
> diff --git a/arch/ia64/include/asm/page.h b/arch/ia64/include/asm/page.h
> index 1b990466d540..783eceab5df3 100644
> --- a/arch/ia64/include/asm/page.h
> +++ b/arch/ia64/include/asm/page.h
> @@ -97,10 +97,6 @@ do { \
>
>  #include 
>
> -#ifdef CONFIG_FLATMEM
> -# define pfn_valid(pfn)((pfn) < max_mapnr)
> -#endif
> -
>  #define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT)
>  #define virt_to_page(kaddr)pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
>  #define pfn_to_kaddr(pfn)  __va((pfn) << PAGE_SHIFT)
> diff --git a/arch/loongarch/include/asm/page.h 
> b/arch/loongarch/include/asm/page.h
> index 53f284a96182..fb5338b352e6 100644
> --- a/arch/loongarch/include/asm/page.h
> +++ b/arch/loongarch/include/asm/page.h
> @@ -82,19 +82,6 @@ typedef struct { unsigned long pgprot; } pgprot_t;
>
>  #define pfn_to_kaddr(pfn)  __va((pfn) << PAGE_SHIFT)
>
> -#ifdef CONFIG_FLATMEM
> -
> -static inline int pfn_valid(unsigned long pfn)
> -{
> -   /* avoid  include hell */
> -   extern unsigned long max_mapnr;
> -   unsigned long pfn_offset = ARCH_PFN_OFFSET;
> -
> -   return pfn >= pfn_offset && pfn < max_mapnr;
> -}
> -
> -#endif
> -
>  #define virt_to_pfn(kaddr) PFN_DOWN(PHYSADDR(kaddr))
>  #d