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