summaryrefslogtreecommitdiffstats
path: root/mm/sparse.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2017-11-10 08:05:30 +0100
committerIngo Molnar <mingo@kernel.org>2017-11-10 08:05:30 +0100
commitd04fdafc066fed10cc9610b2f36f1d0ff0327864 (patch)
treef3365e4bf1064737a36e5488641a14e54fc173bc /mm/sparse.c
parent7980f029d05d8a3b4634aa6952e1ec51bce9431f (diff)
parentc5e260890d5fd6687287f2b532c738a359a61a82 (diff)
downloadlinux-d04fdafc066fed10cc9610b2f36f1d0ff0327864.tar.bz2
Merge branch 'x86/mm' into x86/asm, to merge branches
Most of x86/mm is already in x86/asm, so merge the rest too. Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'mm/sparse.c')
-rw-r--r--mm/sparse.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/mm/sparse.c b/mm/sparse.c
index 044138852baf..60805abf98af 100644
--- a/mm/sparse.c
+++ b/mm/sparse.c
@@ -207,6 +207,16 @@ void __init memory_present(int nid, unsigned long start, unsigned long end)
{
unsigned long pfn;
+#ifdef CONFIG_SPARSEMEM_EXTREME
+ if (unlikely(!mem_section)) {
+ unsigned long size, align;
+
+ size = sizeof(struct mem_section) * NR_SECTION_ROOTS;
+ align = 1 << (INTERNODE_CACHE_SHIFT);
+ mem_section = memblock_virt_alloc(size, align);
+ }
+#endif
+
start &= PAGE_SECTION_MASK;
mminit_validate_memmodel_limits(&start, &end);
for (pfn = start; pfn < end; pfn += PAGES_PER_SECTION) {