]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - mm/sparse.c
mm/sparsemem: Fix ARM64 boot crash when CONFIG_SPARSEMEM_EXTREME=y
[mirror_ubuntu-artful-kernel.git] / mm / sparse.c
index 308a0789d1bb6f98e722dcfa1fc5f0bb4135c186..9c48e4fe8ce0a1f0e35364b800030037b851ee6f 100644 (file)
@@ -210,6 +210,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) {