Re: [PATCH v2 3/9] arc: remove support for DISCONTIGMEM

Vineet Gupta
2021-06-04T14:07:59Z

On 6/3/21 11:49 PM, Mike Rapoport wrote:
> From: Mike Rapoport <rppt@linux.ibm.com>
>
> DISCONTIGMEM was replaced by FLATMEM with freeing of the unused memory map
> in v5.11.
>
> Remove the support for DISCONTIGMEM entirely.
>
> Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>

Looks non intrusive, but I'd still like to give this a spin on hardware
- considering highmem on ARC has tendency to go sideways ;-)
Can you please share a branch !

Acked-by: Vineet Gupta <vgupta@synopsys.com>

Thx,
-Vineet

> ---
> arch/arc/Kconfig | 13 ------------
> arch/arc/include/asm/mmzone.h | 40 -----------------------------------
> arch/arc/mm/init.c | 8 -------
> 3 files changed, 61 deletions(-)
> delete mode 100644 arch/arc/include/asm/mmzone.h
>
> diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig
> index 2d98501c0897..d8f51eb8963b 100644
> --- a/arch/arc/Kconfig
> +++ b/arch/arc/Kconfig
> @@ -62,10 +62,6 @@ config SCHED_OMIT_FRAME_POINTER
> config GENERIC_CSUM
> def_bool y
>
> -config ARCH_DISCONTIGMEM_ENABLE
> - def_bool n
> - depends on BROKEN
> -
> config ARCH_FLATMEM_ENABLE
> def_bool y
>
> @@ -344,15 +340,6 @@ config ARC_HUGEPAGE_16M
>
> endchoice
>
> -config NODES_SHIFT
> - int "Maximum NUMA Nodes (as a power of 2)"
> - default "0" if !DISCONTIGMEM
> - default "1" if DISCONTIGMEM
> - depends on NEED_MULTIPLE_NODES
> - help
> - Accessing memory beyond 1GB (with or w/o PAE) requires 2 memory
> - zones.
> -
> config ARC_COMPACT_IRQ_LEVELS
> depends on ISA_ARCOMPACT
> bool "Setup Timer IRQ as high Priority"
> diff --git a/arch/arc/include/asm/mmzone.h b/arch/arc/include/asm/mmzone.h
> deleted file mode 100644
> index b86b9d1e54dc..000000000000
> --- a/arch/arc/include/asm/mmzone.h
> +++ /dev/null
> @@ -1,40 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - * Copyright (C) 2016 Synopsys, Inc. (www.synopsys.com)
> - */
> -
> -#ifndef _ASM_ARC_MMZONE_H
> -#define _ASM_ARC_MMZONE_H
> -
> -#ifdef CONFIG_DISCONTIGMEM
> -
> -extern struct pglist_data node_data[];
> -#define NODE_DATA(nid) (&node_data[nid])
> -
> -static inline int pfn_to_nid(unsigned long pfn)
> -{
> - int is_end_low = 1;
> -
> - if (IS_ENABLED(CONFIG_ARC_HAS_PAE40))
> - is_end_low = pfn <= virt_to_pfn(0xFFFFFFFFUL);
> -
> - /*
> - * node 0: lowmem: 0x8000_0000 to 0xFFFF_FFFF
> - * node 1: HIGHMEM w/o PAE40: 0x0 to 0x7FFF_FFFF
> - * HIGHMEM with PAE40: 0x1_0000_0000 to ...
> - */
> - if (pfn >= ARCH_PFN_OFFSET && is_end_low)
> - return 0;
> -
> - return 1;
> -}
> -
> -static inline int pfn_valid(unsigned long pfn)
> -{
> - int nid = pfn_to_nid(pfn);
> -
> - return (pfn <= node_end_pfn(nid));
> -}
> -#endif /* CONFIG_DISCONTIGMEM */
> -
> -#endif
> diff --git a/arch/arc/mm/init.c b/arch/arc/mm/init.c
> index 397a201adfe3..abfeef7bf6f8 100644
> --- a/arch/arc/mm/init.c
> +++ b/arch/arc/mm/init.c
> @@ -32,11 +32,6 @@ unsigned long arch_pfn_offset;
> EXPORT_SYMBOL(arch_pfn_offset);
> #endif
>
> -#ifdef CONFIG_DISCONTIGMEM
> -struct pglist_data node_data[MAX_NUMNODES] __read_mostly;
> -EXPORT_SYMBOL(node_data);
> -#endif
> -
> long __init arc_get_mem_sz(void)
> {
> return low_mem_sz;
> @@ -147,9 +142,6 @@ void __init setup_arch_memory(void)
> * to the hole is freed and ARC specific version of pfn_valid()
> * handles the hole in the memory map.
> */
> -#ifdef CONFIG_DISCONTIGMEM
> - node_set_online(1);
> -#endif
>
> min_high_pfn = PFN_DOWN(high_mem_start);
> max_high_pfn = PFN_DOWN(high_mem_start + high_mem_sz);