arm64: mm: move vmemmap region right below the linear region
[linux-2.6-block.git] / arch / arm64 / mm / init.c
index 89376f3c65a3d3f0cb23a0b89afbadf0c3fbf48c..d55d720dba79ecef05f7c03685382315182d1a0e 100644 (file)
@@ -412,6 +412,10 @@ void __init mem_init(void)
                MLK_ROUNDUP(__start_rodata, _etext),
                MLK_ROUNDUP(__init_begin, __init_end),
                MLK_ROUNDUP(_sdata, _edata));
+       pr_cont("    fixed   : 0x%16lx - 0x%16lx   (%6ld KB)\n",
+               MLK(FIXADDR_START, FIXADDR_TOP));
+       pr_cont("    PCI I/O : 0x%16lx - 0x%16lx   (%6ld MB)\n",
+               MLM(PCI_IO_START, PCI_IO_END));
 #ifdef CONFIG_SPARSEMEM_VMEMMAP
        pr_cont("    vmemmap : 0x%16lx - 0x%16lx   (%6ld GB maximum)\n"
                "              0x%16lx - 0x%16lx   (%6ld MB actual)\n",
@@ -420,10 +424,6 @@ void __init mem_init(void)
                MLM((unsigned long)phys_to_page(memblock_start_of_DRAM()),
                    (unsigned long)virt_to_page(high_memory)));
 #endif
-       pr_cont("    fixed   : 0x%16lx - 0x%16lx   (%6ld KB)\n",
-               MLK(FIXADDR_START, FIXADDR_TOP));
-       pr_cont("    PCI I/O : 0x%16lx - 0x%16lx   (%6ld MB)\n",
-               MLM(PCI_IO_START, PCI_IO_END));
        pr_cont("    memory  : 0x%16lx - 0x%16lx   (%6ld MB)\n",
                MLM(__phys_to_virt(memblock_start_of_DRAM()),
                    (unsigned long)high_memory));
@@ -440,6 +440,12 @@ void __init mem_init(void)
        BUILD_BUG_ON(TASK_SIZE_32                       > TASK_SIZE_64);
 #endif
 
+       /*
+        * Make sure we chose the upper bound of sizeof(struct page)
+        * correctly.
+        */
+       BUILD_BUG_ON(sizeof(struct page) > (1 << STRUCT_PAGE_MAX_SHIFT));
+
        if (PAGE_SIZE >= 16384 && get_num_physpages() <= 128) {
                extern int sysctl_overcommit_memory;
                /*