Commit 8a695a58 authored by James Morse's avatar James Morse Committed by Catalin Marinas

arm64: Kconfig: Remove ARCH_HAS_HOLES_MEMORYMODEL

include/linux/mmzone.h describes ARCH_HAS_HOLES_MEMORYMODEL as
relevant when parts the memmap have been free()d. This would
happen on systems where memory is smaller than a sparsemem-section,
and the extra struct pages are expensive. pfn_valid() on these
systems returns true for the whole sparsemem-section, so an extra
memmap_valid_within() check is needed.

On arm64 we have nomap memory, so always provide pfn_valid() to test
for nomap pages. This means ARCH_HAS_HOLES_MEMORYMODEL's extra checks
are already rolled up into pfn_valid().

Remove it.
Acked-by: default avatarWill Deacon <will.deacon@arm.com>
Signed-off-by: default avatarJames Morse <james.morse@arm.com>
Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent 21f84796
...@@ -771,9 +771,6 @@ source kernel/Kconfig.hz ...@@ -771,9 +771,6 @@ source kernel/Kconfig.hz
config ARCH_SUPPORTS_DEBUG_PAGEALLOC config ARCH_SUPPORTS_DEBUG_PAGEALLOC
def_bool y def_bool y
config ARCH_HAS_HOLES_MEMORYMODEL
def_bool y if SPARSEMEM
config ARCH_SPARSEMEM_ENABLE config ARCH_SPARSEMEM_ENABLE
def_bool y def_bool y
select SPARSEMEM_VMEMMAP_ENABLE select SPARSEMEM_VMEMMAP_ENABLE
...@@ -788,7 +785,7 @@ config ARCH_FLATMEM_ENABLE ...@@ -788,7 +785,7 @@ config ARCH_FLATMEM_ENABLE
def_bool !NUMA def_bool !NUMA
config HAVE_ARCH_PFN_VALID config HAVE_ARCH_PFN_VALID
def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM def_bool y
config HW_PERF_EVENTS config HW_PERF_EVENTS
def_bool y def_bool y
......
...@@ -37,9 +37,7 @@ extern void clear_page(void *to); ...@@ -37,9 +37,7 @@ extern void clear_page(void *to);
typedef struct page *pgtable_t; typedef struct page *pgtable_t;
#ifdef CONFIG_HAVE_ARCH_PFN_VALID
extern int pfn_valid(unsigned long); extern int pfn_valid(unsigned long);
#endif
#include <asm/memory.h> #include <asm/memory.h>
......
...@@ -284,7 +284,6 @@ static void __init zone_sizes_init(unsigned long min, unsigned long max) ...@@ -284,7 +284,6 @@ static void __init zone_sizes_init(unsigned long min, unsigned long max)
#endif /* CONFIG_NUMA */ #endif /* CONFIG_NUMA */
#ifdef CONFIG_HAVE_ARCH_PFN_VALID
int pfn_valid(unsigned long pfn) int pfn_valid(unsigned long pfn)
{ {
phys_addr_t addr = pfn << PAGE_SHIFT; phys_addr_t addr = pfn << PAGE_SHIFT;
...@@ -294,7 +293,6 @@ int pfn_valid(unsigned long pfn) ...@@ -294,7 +293,6 @@ int pfn_valid(unsigned long pfn)
return memblock_is_map_memory(addr); return memblock_is_map_memory(addr);
} }
EXPORT_SYMBOL(pfn_valid); EXPORT_SYMBOL(pfn_valid);
#endif
#ifndef CONFIG_SPARSEMEM #ifndef CONFIG_SPARSEMEM
static void __init arm64_memory_present(void) static void __init arm64_memory_present(void)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment