sparc64: Increase MAX_PHYS_ADDRESS_BITS to 53.
authorDavid S. Miller <davem@davemloft.net>
Thu, 25 Sep 2014 04:49:29 +0000 (21:49 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sun, 5 Oct 2014 23:53:40 +0000 (16:53 -0700)
Make sure, at compile time, that the kernel can properly support
whatever MAX_PHYS_ADDRESS_BITS is defined to.

On M7 chips, use a max_phys_bits value of 49.

Based upon a patch by Bob Picco.

Signed-off-by: David S. Miller <davem@davemloft.net>
Acked-by: Bob Picco <bob.picco@oracle.com>
arch/sparc/include/asm/page_64.h
arch/sparc/include/asm/pgtable_64.h
arch/sparc/mm/init_64.c

index 732ba178a2891b0da3ba6be5cec8ed261c041852..6784a3382826876851ad118aa19d94a6ba398dfa 100644 (file)
@@ -122,11 +122,11 @@ extern unsigned long PAGE_OFFSET;
 
 #endif /* !(__ASSEMBLY__) */
 
-/* The maximum number of physical memory address bits we support, this
- * is used to size various tables used to manage kernel TLB misses and
- * also the sparsemem code.
+/* The maximum number of physical memory address bits we support.  The
+ * largest value we can support is whatever "KPGD_SHIFT + KPTE_BITS"
+ * evaluates to.
  */
-#define MAX_PHYS_ADDRESS_BITS  47
+#define MAX_PHYS_ADDRESS_BITS  53
 
 #define ILOG2_4MB              22
 #define ILOG2_256MB            28
index a305b22ab5818fef02efe3d7962fc229c7625cea..0552957f6ddc57f959c589dd34d85a7b6a92b4ad 100644 (file)
 #define PGDIR_MASK     (~(PGDIR_SIZE-1))
 #define PGDIR_BITS     (PAGE_SHIFT - 3)
 
+#if (MAX_PHYS_ADDRESS_BITS > PGDIR_SHIFT + PGDIR_BITS)
+#error MAX_PHYS_ADDRESS_BITS exceeds what kernel page tables can support
+#endif
+
 #if (PGDIR_SHIFT + PGDIR_BITS) != 53
 #error Page table parameters do not cover virtual address space properly.
 #endif
index 6d5d562a652e0405aa0ac148e36022100c0ecad2..e0c1206a44fabf13556f48665f85c4a4650bd78e 100644 (file)
@@ -1690,12 +1690,19 @@ static void __init setup_page_offset(void)
                case SUN4V_CHIP_NIAGARA4:
                case SUN4V_CHIP_NIAGARA5:
                case SUN4V_CHIP_SPARC64X:
-               default:
+               case SUN4V_CHIP_SPARC_M6:
                        /* T4 and later support 52-bit virtual addresses.  */
                        sparc64_va_hole_top =    0xfff8000000000000UL;
                        sparc64_va_hole_bottom = 0x0008000000000000UL;
                        max_phys_bits = 47;
                        break;
+               case SUN4V_CHIP_SPARC_M7:
+               default:
+                       /* M7 and later support 52-bit virtual addresses.  */
+                       sparc64_va_hole_top =    0xfff8000000000000UL;
+                       sparc64_va_hole_bottom = 0x0008000000000000UL;
+                       max_phys_bits = 49;
+                       break;
                }
        }