Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph...
[firefly-linux-kernel-4.4.55.git] / arch / arm64 / mm / init.c
index e90c5426fe14e5a1212706e3802aa32325c77d95..5b4526ee3a01a6b9c65f15a4985b70cccaf3edea 100644 (file)
@@ -33,6 +33,7 @@
 #include <linux/dma-mapping.h>
 #include <linux/dma-contiguous.h>
 
+#include <asm/fixmap.h>
 #include <asm/sections.h>
 #include <asm/setup.h>
 #include <asm/sizes.h>
@@ -137,20 +138,16 @@ void __init arm64_memblock_init(void)
 {
        phys_addr_t dma_phys_limit = 0;
 
-       /* Register the kernel text, kernel data and initrd with memblock */
+       /*
+        * Register the kernel text, kernel data, initrd, and initial
+        * pagetables with memblock.
+        */
        memblock_reserve(__pa(_text), _end - _text);
 #ifdef CONFIG_BLK_DEV_INITRD
        if (initrd_start)
                memblock_reserve(__virt_to_phys(initrd_start), initrd_end - initrd_start);
 #endif
 
-       /*
-        * Reserve the page tables.  These are already in use,
-        * and can only be in node 0.
-        */
-       memblock_reserve(__pa(swapper_pg_dir), SWAPPER_DIR_SIZE);
-       memblock_reserve(__pa(idmap_pg_dir), IDMAP_DIR_SIZE);
-
        early_init_fdt_scan_reserved_mem();
 
        /* 4GB maximum for 32-bit only capable devices */
@@ -269,26 +266,33 @@ void __init mem_init(void)
 
 #define MLK(b, t) b, t, ((t) - (b)) >> 10
 #define MLM(b, t) b, t, ((t) - (b)) >> 20
+#define MLG(b, t) b, t, ((t) - (b)) >> 30
 #define MLK_ROUNDUP(b, t) b, t, DIV_ROUND_UP(((t) - (b)), SZ_1K)
 
        pr_notice("Virtual kernel memory layout:\n"
-                 "    vmalloc : 0x%16lx - 0x%16lx   (%6ld MB)\n"
+                 "    vmalloc : 0x%16lx - 0x%16lx   (%6ld GB)\n"
 #ifdef CONFIG_SPARSEMEM_VMEMMAP
-                 "    vmemmap : 0x%16lx - 0x%16lx   (%6ld MB)\n"
+                 "    vmemmap : 0x%16lx - 0x%16lx   (%6ld GB maximum)\n"
+                 "              0x%16lx - 0x%16lx   (%6ld MB actual)\n"
 #endif
+                 "    PCI I/O : 0x%16lx - 0x%16lx   (%6ld MB)\n"
+                 "    fixed   : 0x%16lx - 0x%16lx   (%6ld KB)\n"
                  "    modules : 0x%16lx - 0x%16lx   (%6ld MB)\n"
                  "    memory  : 0x%16lx - 0x%16lx   (%6ld MB)\n"
-                 "      .init : 0x%p" " - 0x%p" "   (%6ld kB)\n"
-                 "      .text : 0x%p" " - 0x%p" "   (%6ld kB)\n"
-                 "      .data : 0x%p" " - 0x%p" "   (%6ld kB)\n",
-                 MLM(VMALLOC_START, VMALLOC_END),
+                 "      .init : 0x%p" " - 0x%p" "   (%6ld KB)\n"
+                 "      .text : 0x%p" " - 0x%p" "   (%6ld KB)\n"
+                 "      .data : 0x%p" " - 0x%p" "   (%6ld KB)\n",
+                 MLG(VMALLOC_START, VMALLOC_END),
 #ifdef CONFIG_SPARSEMEM_VMEMMAP
+                 MLG((unsigned long)vmemmap,
+                     (unsigned long)vmemmap + VMEMMAP_SIZE),
                  MLM((unsigned long)virt_to_page(PAGE_OFFSET),
                      (unsigned long)virt_to_page(high_memory)),
 #endif
+                 MLM((unsigned long)PCI_IOBASE, (unsigned long)PCI_IOBASE + SZ_16M),
+                 MLK(FIXADDR_START, FIXADDR_TOP),
                  MLM(MODULES_VADDR, MODULES_END),
                  MLM(PAGE_OFFSET, (unsigned long)high_memory),
-
                  MLK_ROUNDUP(__init_begin, __init_end),
                  MLK_ROUNDUP(_text, _etext),
                  MLK_ROUNDUP(_sdata, _edata));