These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / arch / arm64 / include / asm / fixmap.h
index 95e6b6d..3097045 100644 (file)
@@ -8,7 +8,7 @@
  * Copyright (C) 1998 Ingo Molnar
  * Copyright (C) 2013 Mark Salter <msalter@redhat.com>
  *
- * Adapted from arch/x86_64 version.
+ * Adapted from arch/x86 version.
  *
  */
 
@@ -17,6 +17,8 @@
 
 #ifndef __ASSEMBLY__
 #include <linux/kernel.h>
+#include <linux/sizes.h>
+#include <asm/boot.h>
 #include <asm/page.h>
 
 /*
  */
 enum fixed_addresses {
        FIX_HOLE,
+
+       /*
+        * Reserve a virtual window for the FDT that is 2 MB larger than the
+        * maximum supported size, and put it at the top of the fixmap region.
+        * The additional space ensures that any FDT that does not exceed
+        * MAX_FDT_SIZE can be mapped regardless of whether it crosses any
+        * 2 MB alignment boundaries.
+        *
+        * Keep this at the top so it remains 2 MB aligned.
+        */
+#define FIX_FDT_SIZE           (MAX_FDT_SIZE + SZ_2M)
+       FIX_FDT_END,
+       FIX_FDT = FIX_FDT_END + FIX_FDT_SIZE / PAGE_SIZE - 1,
+
        FIX_EARLYCON_MEM_BASE,
        FIX_TEXT_POKE0,
        __end_of_permanent_fixed_addresses,
@@ -40,11 +56,7 @@ enum fixed_addresses {
         * Temporary boot-time mappings, used by early_ioremap(),
         * before ioremap() is functional.
         */
-#ifdef CONFIG_ARM64_64K_PAGES
-#define NR_FIX_BTMAPS          4
-#else
-#define NR_FIX_BTMAPS          64
-#endif
+#define NR_FIX_BTMAPS          (SZ_256K / PAGE_SIZE)
 #define FIX_BTMAPS_SLOTS       7
 #define TOTAL_FIX_BTMAPS       (NR_FIX_BTMAPS * FIX_BTMAPS_SLOTS)