Commit 5ab06e10 authored by Mike Rapoport's avatar Mike Rapoport Committed by Linus Torvalds
Browse files

m68k: remove support for DISCONTIGMEM

DISCONTIGMEM was replaced by FLATMEM with freeing of the unused memory map
in v5.11.

Remove the support for DISCONTIGMEM entirely.

Link: https://lkml.kernel.org/r/20210608091316.3622-5-rppt@kernel.org


Signed-off-by: default avatarMike Rapoport <rppt@linux.ibm.com>
Reviewed-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
Acked-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Matt Turner <mattst88@gmail.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Vineet Gupta <vgupta@synopsys.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 8b793b44
Loading
Loading
Loading
Loading
+0 −10
Original line number Diff line number Diff line
@@ -408,10 +408,6 @@ config SINGLE_MEMORY_CHUNK
	  order" to save memory that could be wasted for unused memory map.
	  Say N if not sure.

config ARCH_DISCONTIGMEM_ENABLE
	depends on BROKEN
	def_bool MMU && !SINGLE_MEMORY_CHUNK

config FORCE_MAX_ZONEORDER
	int "Maximum zone order" if ADVANCED
	depends on !SINGLE_MEMORY_CHUNK
@@ -451,11 +447,6 @@ config M68K_L2_CACHE
	depends on MAC
	default y

config NODES_SHIFT
	int
	default "3"
	depends on DISCONTIGMEM

config CPU_HAS_NO_BITFIELDS
	bool

@@ -553,4 +544,3 @@ config CACHE_COPYBACK
	  The ColdFire CPU cache is set into Copy-back mode.
endchoice
endif

arch/m68k/include/asm/mmzone.h

deleted100644 → 0
+0 −10
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M68K_MMZONE_H_
#define _ASM_M68K_MMZONE_H_

extern pg_data_t pg_data_map[];

#define NODE_DATA(nid)		(&pg_data_map[nid])
#define NODE_MEM_MAP(nid)	(NODE_DATA(nid)->node_mem_map)

#endif /* _ASM_M68K_MMZONE_H_ */
+1 −1
Original line number Diff line number Diff line
@@ -62,7 +62,7 @@ extern unsigned long _ramend;
#include <asm/page_no.h>
#endif

#if !defined(CONFIG_MMU) || defined(CONFIG_DISCONTIGMEM)
#ifndef CONFIG_MMU
#define __phys_to_pfn(paddr)	((unsigned long)((paddr) >> PAGE_SHIFT))
#define __pfn_to_phys(pfn)	PFN_PHYS(pfn)
#endif
+0 −35
Original line number Diff line number Diff line
@@ -126,26 +126,6 @@ static inline void *__va(unsigned long x)

extern int m68k_virt_to_node_shift;

#ifndef CONFIG_DISCONTIGMEM
#define __virt_to_node(addr)	(&pg_data_map[0])
#else
extern struct pglist_data *pg_data_table[];

static inline __attribute_const__ int __virt_to_node_shift(void)
{
	int shift;

	asm (
		"1:	moveq	#0,%0\n"
		m68k_fixup(%c1, 1b)
		: "=d" (shift)
		: "i" (m68k_fixup_vnode_shift));
	return shift;
}

#define __virt_to_node(addr)	(pg_data_table[(unsigned long)(addr) >> __virt_to_node_shift()])
#endif

#define virt_to_page(addr) ({						\
	pfn_to_page(virt_to_pfn(addr));					\
})
@@ -153,23 +133,8 @@ static inline __attribute_const__ int __virt_to_node_shift(void)
	pfn_to_virt(page_to_pfn(page));					\
})

#ifdef CONFIG_DISCONTIGMEM
#define pfn_to_page(pfn) ({						\
	unsigned long __pfn = (pfn);					\
	struct pglist_data *pgdat;					\
	pgdat = __virt_to_node((unsigned long)pfn_to_virt(__pfn));	\
	pgdat->node_mem_map + (__pfn - pgdat->node_start_pfn);		\
})
#define page_to_pfn(_page) ({						\
	const struct page *__p = (_page);				\
	struct pglist_data *pgdat;					\
	pgdat = &pg_data_map[page_to_nid(__p)];				\
	((__p) - pgdat->node_mem_map) + pgdat->node_start_pfn;		\
})
#else
#define ARCH_PFN_OFFSET (m68k_memory[0].addr >> PAGE_SHIFT)
#include <asm-generic/memory_model.h>
#endif

#define virt_addr_valid(kaddr)	((unsigned long)(kaddr) >= PAGE_OFFSET && (unsigned long)(kaddr) < (unsigned long)high_memory)
#define pfn_valid(pfn)		virt_addr_valid(pfn_to_virt(pfn))
+0 −20
Original line number Diff line number Diff line
@@ -44,28 +44,8 @@ EXPORT_SYMBOL(empty_zero_page);

int m68k_virt_to_node_shift;

#ifdef CONFIG_DISCONTIGMEM
pg_data_t pg_data_map[MAX_NUMNODES];
EXPORT_SYMBOL(pg_data_map);

pg_data_t *pg_data_table[65];
EXPORT_SYMBOL(pg_data_table);
#endif

void __init m68k_setup_node(int node)
{
#ifdef CONFIG_DISCONTIGMEM
	struct m68k_mem_info *info = m68k_memory + node;
	int i, end;

	i = (unsigned long)phys_to_virt(info->addr) >> __virt_to_node_shift();
	end = (unsigned long)phys_to_virt(info->addr + info->size - 1) >> __virt_to_node_shift();
	for (; i <= end; i++) {
		if (pg_data_table[i])
			pr_warn("overlap at %u for chunk %u\n", i, node);
		pg_data_table[i] = pg_data_map + node;
	}
#endif
	node_set_online(node);
}