powerpc/mm/book3s-64: Expand the real page number field of the Linux PTE
authorPaul Mackerras <paulus@samba.org>
Mon, 22 Feb 2016 02:41:20 +0000 (13:41 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Mon, 29 Feb 2016 09:34:41 +0000 (20:34 +1100)
Now that other PTE fields have been moved out of the way, we can
expand the RPN field of the PTE on 64-bit Book 3S systems and align
it with the RPN field in the radix PTE format used by PowerISA v3.0
CPUs in radix mode.  For 64k page size, this means we need to move
the _PAGE_COMBO and _PAGE_4K_PFN bits.

Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/include/asm/book3s/64/hash-4k.h
arch/powerpc/include/asm/book3s/64/hash-64k.h

index 0425d3e..7f60f7e 100644 (file)
@@ -52,8 +52,8 @@
                         _PAGE_F_SECOND | _PAGE_F_GIX)
 
 /* shift to put page number into pte */
-#define PTE_RPN_SHIFT  (18)
-#define PTE_RPN_SIZE   (39)    /* gives 51-bit real addresses */
+#define PTE_RPN_SHIFT  (12)
+#define PTE_RPN_SIZE   (45)    /* gives 57-bit real addresses */
 
 #define _PAGE_4K_PFN           0
 #ifndef __ASSEMBLY__
index ed390e1..8bb0325 100644 (file)
@@ -25,8 +25,8 @@
 #define PGDIR_SIZE     (1UL << PGDIR_SHIFT)
 #define PGDIR_MASK     (~(PGDIR_SIZE-1))
 
-#define _PAGE_COMBO    0x00040000 /* this is a combo 4k page */
-#define _PAGE_4K_PFN   0x00080000 /* PFN is for a single 4k page */
+#define _PAGE_COMBO    0x00001000 /* this is a combo 4k page */
+#define _PAGE_4K_PFN   0x00002000 /* PFN is for a single 4k page */
 /*
  * Used to track subpage group valid if _PAGE_COMBO is set
  * This overloads _PAGE_F_GIX and _PAGE_F_SECOND
 
 /* Shift to put page number into pte.
  *
- * That gives us a max RPN of 37 bits, which means a max of 53 bits
- * of addressable physical space, or 49 bits for the special 4k PFNs.
+ * That gives us a max RPN of 41 bits, which means a max of 57 bits
+ * of addressable physical space, or 53 bits for the special 4k PFNs.
  */
-#define PTE_RPN_SHIFT  (20)
-#define PTE_RPN_SIZE   (37)
+#define PTE_RPN_SHIFT  (16)
+#define PTE_RPN_SIZE   (41)
 
 /*
  * we support 16 fragments per PTE page of 64K size.