Gentle ping... On Sun, Feb 23, 2020 at 11:43:22AM +0200, Mike Rapoport wrote: > From: Mike Rapoport <r...@linux.ibm.com> > > The DISCONTIGMEM support was marked as deprecated in v5.2 and since there > were no complaints about it for almost 5 releases it can be completely > removed. > > Signed-off-by: Mike Rapoport <r...@linux.ibm.com> > --- > arch/x86/Kconfig | 9 ------- > arch/x86/include/asm/mmzone_32.h | 39 ------------------------------- > arch/x86/include/asm/pgtable_32.h | 3 +-- > arch/x86/mm/numa_32.c | 34 --------------------------- > 4 files changed, 1 insertion(+), 84 deletions(-) > > diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig > index beea77046f9b..e3fc3aa80f97 100644 > --- a/arch/x86/Kconfig > +++ b/arch/x86/Kconfig > @@ -1613,19 +1613,10 @@ config NODES_SHIFT > Specify the maximum number of NUMA Nodes available on the target > system. Increases memory reserved to accommodate various tables. > > -config ARCH_HAVE_MEMORY_PRESENT > - def_bool y > - depends on X86_32 && DISCONTIGMEM > - > config ARCH_FLATMEM_ENABLE > def_bool y > depends on X86_32 && !NUMA > > -config ARCH_DISCONTIGMEM_ENABLE > - def_bool n > - depends on NUMA && X86_32 > - depends on BROKEN > - > config ARCH_SPARSEMEM_ENABLE > def_bool y > depends on X86_64 || NUMA || X86_32 || X86_32_NON_STANDARD > diff --git a/arch/x86/include/asm/mmzone_32.h > b/arch/x86/include/asm/mmzone_32.h > index 73d8dd14dda2..2d4515e8b7df 100644 > --- a/arch/x86/include/asm/mmzone_32.h > +++ b/arch/x86/include/asm/mmzone_32.h > @@ -14,43 +14,4 @@ extern struct pglist_data *node_data[]; > #define NODE_DATA(nid) (node_data[nid]) > #endif /* CONFIG_NUMA */ > > -#ifdef CONFIG_DISCONTIGMEM > - > -/* > - * generic node memory support, the following assumptions apply: > - * > - * 1) memory comes in 64Mb contiguous chunks which are either present or not > - * 2) we will not have more than 64Gb in total > - * > - * for now assume that 64Gb is max amount of RAM for whole system > - * 64Gb / 4096bytes/page = 16777216 pages > - */ > -#define MAX_NR_PAGES 16777216 > -#define MAX_SECTIONS 1024 > -#define PAGES_PER_SECTION (MAX_NR_PAGES/MAX_SECTIONS) > - > -extern s8 physnode_map[]; > - > -static inline int pfn_to_nid(unsigned long pfn) > -{ > -#ifdef CONFIG_NUMA > - return((int) physnode_map[(pfn) / PAGES_PER_SECTION]); > -#else > - return 0; > -#endif > -} > - > -static inline int pfn_valid(int pfn) > -{ > - int nid = pfn_to_nid(pfn); > - > - if (nid >= 0) > - return (pfn < node_end_pfn(nid)); > - return 0; > -} > - > -#define early_pfn_valid(pfn) pfn_valid((pfn)) > - > -#endif /* CONFIG_DISCONTIGMEM */ > - > #endif /* _ASM_X86_MMZONE_32_H */ > diff --git a/arch/x86/include/asm/pgtable_32.h > b/arch/x86/include/asm/pgtable_32.h > index 0dca7f7aeff2..be7b19646897 100644 > --- a/arch/x86/include/asm/pgtable_32.h > +++ b/arch/x86/include/asm/pgtable_32.h > @@ -66,8 +66,7 @@ do { \ > #endif /* !__ASSEMBLY__ */ > > /* > - * kern_addr_valid() is (1) for FLATMEM and (0) for > - * SPARSEMEM and DISCONTIGMEM > + * kern_addr_valid() is (1) for FLATMEM and (0) for SPARSEMEM > */ > #ifdef CONFIG_FLATMEM > #define kern_addr_valid(addr) (1) > diff --git a/arch/x86/mm/numa_32.c b/arch/x86/mm/numa_32.c > index f2bd3d61e16b..104544359d69 100644 > --- a/arch/x86/mm/numa_32.c > +++ b/arch/x86/mm/numa_32.c > @@ -27,40 +27,6 @@ > > #include "numa_internal.h" > > -#ifdef CONFIG_DISCONTIGMEM > -/* > - * 4) physnode_map - the mapping between a pfn and owning node > - * physnode_map keeps track of the physical memory layout of a generic > - * numa node on a 64Mb break (each element of the array will > - * represent 64Mb of memory and will be marked by the node id. so, > - * if the first gig is on node 0, and the second gig is on node 1 > - * physnode_map will contain: > - * > - * physnode_map[0-15] = 0; > - * physnode_map[16-31] = 1; > - * physnode_map[32- ] = -1; > - */ > -s8 physnode_map[MAX_SECTIONS] __read_mostly = { [0 ... (MAX_SECTIONS - 1)] = > -1}; > -EXPORT_SYMBOL(physnode_map); > - > -void memory_present(int nid, unsigned long start, unsigned long end) > -{ > - unsigned long pfn; > - > - printk(KERN_INFO "Node: %d, start_pfn: %lx, end_pfn: %lx\n", > - nid, start, end); > - printk(KERN_DEBUG " Setting physnode_map array to node %d for > pfns:\n", nid); > - printk(KERN_DEBUG " "); > - start = round_down(start, PAGES_PER_SECTION); > - end = round_up(end, PAGES_PER_SECTION); > - for (pfn = start; pfn < end; pfn += PAGES_PER_SECTION) { > - physnode_map[pfn / PAGES_PER_SECTION] = nid; > - printk(KERN_CONT "%lx ", pfn); > - } > - printk(KERN_CONT "\n"); > -} > -#endif > - > extern unsigned long highend_pfn, highstart_pfn; > > void __init initmem_init(void) > -- > 2.24.0 >
-- Sincerely yours, Mike.