summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/include/asm/nohash
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@ozlabs.org>2016-02-23 13:36:17 +1100
committerMichael Ellerman <mpe@ellerman.id.au>2016-02-29 20:34:34 +1100
commitc61a8843124e353f4ba27c073133868da00e0335 (patch)
tree0454701b09a320be6186fcd4ed0447af3ee2b4ee /arch/powerpc/include/asm/nohash
parentf1a9ae034a263d93ea408825afe699aebf37010a (diff)
downloadlinux-c61a8843124e353f4ba27c073133868da00e0335.tar.gz
linux-c61a8843124e353f4ba27c073133868da00e0335.tar.bz2
linux-c61a8843124e353f4ba27c073133868da00e0335.zip
powerpc/mm/book3s-64: Use physical addresses in upper page table tree levels
This changes the Linux page tables to store physical addresses rather than kernel virtual addresses in the upper levels of the tree (pgd, pud and pmd) for 64-bit Book 3S machines. This also changes the hugepd pointers used to implement hugepages when the base page size is 4k to store physical addresses rather than virtual addresses (again just for 64-bit Book3S machines). This frees up some high order bits, and will be needed with PowerISA v3.0 machines which read the page table tree in hardware in radix mode. Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/include/asm/nohash')
-rw-r--r--arch/powerpc/include/asm/nohash/64/pgtable.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/nohash/64/pgtable.h b/arch/powerpc/include/asm/nohash/64/pgtable.h
index b9f734dd5b81..10debb93c4a4 100644
--- a/arch/powerpc/include/asm/nohash/64/pgtable.h
+++ b/arch/powerpc/include/asm/nohash/64/pgtable.h
@@ -108,6 +108,9 @@
#ifndef __ASSEMBLY__
/* pte_clear moved to later in this file */
+/* Pointers in the page table tree are virtual addresses */
+#define __pgtable_ptr_val(ptr) ((unsigned long)(ptr))
+
#define PMD_BAD_BITS (PTE_TABLE_SIZE-1)
#define PUD_BAD_BITS (PMD_TABLE_SIZE-1)