mirror of
https://github.com/torvalds/linux.git
synced 2026-05-29 17:43:52 +02:00
x86/mm/64: Make SPARSEMEM_VMEMMAP the only memory model
5-level paging only supports SPARSEMEM_VMEMMAP. CONFIG_X86_5LEVEL is being phased out, making 5-level paging support mandatory. Make CONFIG_SPARSEMEM_VMEMMAP mandatory for x86-64 and eliminate any associated conditional statements. Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Signed-off-by: Ingo Molnar <mingo@kernel.org> Reviewed-by: Ard Biesheuvel <ardb@kernel.org> Reviewed-by: Borislav Petkov (AMD) <bp@alien8.de> Cc: Dave Hansen <dave.hansen@linux.intel.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Link: https://lore.kernel.org/r/20250516123306.3812286-3-kirill.shutemov@linux.intel.com
This commit is contained in:
parent
1bffe6f689
commit
cba5d9b3e9
|
|
@ -1467,7 +1467,6 @@ config X86_PAE
|
|||
config X86_5LEVEL
|
||||
bool "Enable 5-level page tables support"
|
||||
default y
|
||||
select SPARSEMEM_VMEMMAP
|
||||
depends on X86_64
|
||||
help
|
||||
5-level paging enables access to larger address space:
|
||||
|
|
@ -1579,6 +1578,7 @@ config ARCH_SPARSEMEM_ENABLE
|
|||
def_bool y
|
||||
select SPARSEMEM_STATIC if X86_32
|
||||
select SPARSEMEM_VMEMMAP_ENABLE if X86_64
|
||||
select SPARSEMEM_VMEMMAP if X86_64
|
||||
|
||||
config ARCH_SPARSEMEM_DEFAULT
|
||||
def_bool X86_64 || (NUMA && X86_32)
|
||||
|
|
|
|||
|
|
@ -833,7 +833,6 @@ void __init paging_init(void)
|
|||
zone_sizes_init();
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SPARSEMEM_VMEMMAP
|
||||
#define PAGE_UNUSED 0xFD
|
||||
|
||||
/*
|
||||
|
|
@ -932,7 +931,6 @@ static void __meminit vmemmap_use_new_sub_pmd(unsigned long start, unsigned long
|
|||
if (!IS_ALIGNED(end, PMD_SIZE))
|
||||
unused_pmd_start = end;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Memory hotplug specific functions
|
||||
|
|
@ -1152,16 +1150,13 @@ remove_pmd_table(pmd_t *pmd_start, unsigned long addr, unsigned long end,
|
|||
pmd_clear(pmd);
|
||||
spin_unlock(&init_mm.page_table_lock);
|
||||
pages++;
|
||||
}
|
||||
#ifdef CONFIG_SPARSEMEM_VMEMMAP
|
||||
else if (vmemmap_pmd_is_unused(addr, next)) {
|
||||
} else if (vmemmap_pmd_is_unused(addr, next)) {
|
||||
free_hugepage_table(pmd_page(*pmd),
|
||||
altmap);
|
||||
spin_lock(&init_mm.page_table_lock);
|
||||
pmd_clear(pmd);
|
||||
spin_unlock(&init_mm.page_table_lock);
|
||||
}
|
||||
#endif
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
@ -1500,7 +1495,6 @@ unsigned long memory_block_size_bytes(void)
|
|||
return memory_block_size_probed;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SPARSEMEM_VMEMMAP
|
||||
/*
|
||||
* Initialise the sparsemem vmemmap using huge-pages at the PMD level.
|
||||
*/
|
||||
|
|
@ -1647,4 +1641,3 @@ void __meminit vmemmap_populate_print_last(void)
|
|||
node_start = 0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user