[PATCH V2 00/68] PowerISA 3.0 Radix page table support
Aneesh Kumar K.V
aneesh.kumar at linux.vnet.ibm.com
Sat Apr 9 16:12:56 AEST 2016
This patch series implements Radix page table support for ppc64 book3s
as defined by PowerISA 3.0.
Changes from V1:
* Make sure each patch build without errors on different configs
* Address review feedback
Aneesh Kumar K.V (68):
powerpc/cxl: Use REGION_ID instead of opencoding
powerpc/mm/nohash: Return correctly from flush_tlb_page
powerpc/mm/nohash: Update non SMP version of flush_tlb_page to handle
hugetlb address
powerpc/mm: Use big endian page table for book3s 64
powerpc/mm: use _PAGE_READ to indicate Read access
powerpc/mm/subpage: Clear RWX bit to indicate no access
powerpc/mm: Use pte_user instead of opencoding
powerpc/mm: Replace _PAGE_USER with _PAGE_PRIVILEGED
powerpc/mm: Remove RPN_SHIFT and RPN_SIZE
powerpc/mm: Update _PAGE_KERNEL_RO
powerpc/mm: Use helper for finding pte bits mapping I/O area
powerpc/mm: Drop WIMG in favour of new constants
powerpc/mm: Use generic version of pmdp_clear_flush_young
powerpc/mm: Use generic version of ptep_clear_flush_young
powerpc/mm: Move common data structure between radix and hash to
book3s 64 generic headers
powerpc/mm/power9: Add partition table format
powerpc/mm/hash: Add support for POWER9 hash
powerpc/mm: Move hash and no hash code to separate files
powerpc/mm/book3s: Rename hash specific PTE bits to carry H_ prefix
powerpc/mm: Handle _PTE_NONE_MASK
powerpc/mm: Move common pte bits and accessors to book3s/64/pgtable.h
powerpc/mm: Move pte accessors that operate on common pte bits to
pgtable.h
powerpc/mm: Make page table size a variable
powerpc/mm: Move page table index and and vaddr to pgtable.h
powerpc/mm: Move pte related function together
powerpc/mm/radix: Add radix pte defines
powerpc/mm/radix: Dummy radix_enabled()
powerpc/mm: Add radix callbacks to pte accessors
powerpc/mm: Move hugetlb and THP related pmd accessors to pgtable.h
powerpc/mm/radix: Add radix callback for pmd accessors
powerpc/mm: Abstraction for early init routines
powerpc/mm/radix: Add radix callback for early init routines
powerpc/mm: Abstraction for vmemmap and map_kernel_page
powerpc/mm/radix: Add radix callback for vmemmap and map_kernel page
powerpc/mm: Abstraction for switch_mmu_context
powerpc/mm/radix: Add mmu context handling callback for radix
powerpc/mm: Rename mmu_context_hash64.c to mmu_context_book3s64.c
powerpc/mm: Hash linux abstraction for tlbflush routines
powerpc/mm/radix: Add tlbflush routines
powerpc/mm/radix: Add MMU_FTR_RADIX
powerpc/mm/radix: Use STD_MMU_64 to properly isolate hash related code
powerpc/mm/radix: Isolate hash table function from pseries guest code
powerpc/mm/radix: Add checks in slice code to catch radix usage
powerpc/mm/radix: Limit paca allocation in radix
powerpc/mm/radix: Pick the address layout for radix config
powerpc/mm/radix: Update secondary PTCR
powerpc/mm: Make a copy of pgalloc.h for 32 and 64 book3s
powerpc/mm: Copy pgalloc (part 2)
powerpc/mm: Revert changes made to nohash pgalloc-64.h
powerpc/mm: Simplify the code dropping 4 level table #ifdef
powerpc/mm: Rename function to indicate we are allocating fragments
powerpc/mm: make 4k and 64k use pte_t for pgtable_t
powerpc/mm: Add radix pgalloc details
powerpc/mm: Update pte filter for radix
powerpc/mm: VMALLOC abstraction
powerpc/radix: update mmu cache
powerpc/mm: pte_frag abstraction
powerpc/mm: Fix vma_mmu_pagesize for radix
powerpc/mm: Add radix support for hugetlb
powerpc/mm/radix: Make sure swapper pgdir is properly aligned
powerpc/mm/radix: Add hugetlb support 4K page size
powerpc/mm: Drop PTE_ATOMIC_UPDATES from pmd_hugepage_update
powerpc/mm: THP is only available on hash64 as of now
powerpc/mm/thp: Abstraction for THP functions
powerpc/mm/radix: Add radix THP callbacks
powerpc/mm/radix: Add THP support for 4k linux page size
powerpc/mm/radix: Cputable update for radix
powerpc/mm/radix: Use firmware feature to disable radix
arch/powerpc/include/asm/book3s/32/mmu-hash.h | 6 +-
arch/powerpc/include/asm/book3s/32/pgalloc.h | 109 +++
arch/powerpc/include/asm/book3s/64/hash-4k.h | 136 ++--
arch/powerpc/include/asm/book3s/64/hash-64k.h | 213 ++----
arch/powerpc/include/asm/book3s/64/hash.h | 477 ++----------
arch/powerpc/include/asm/book3s/64/hugetlb-radix.h | 14 +
arch/powerpc/include/asm/book3s/64/mmu-hash.h | 79 +-
arch/powerpc/include/asm/book3s/64/mmu.h | 137 ++++
arch/powerpc/include/asm/book3s/64/pgalloc.h | 207 ++++++
arch/powerpc/include/asm/book3s/64/pgtable-4k.h | 53 ++
arch/powerpc/include/asm/book3s/64/pgtable-64k.h | 64 ++
arch/powerpc/include/asm/book3s/64/pgtable.h | 812 +++++++++++++++++++--
arch/powerpc/include/asm/book3s/64/radix-4k.h | 12 +
arch/powerpc/include/asm/book3s/64/radix-64k.h | 12 +
arch/powerpc/include/asm/book3s/64/radix.h | 188 +++++
arch/powerpc/include/asm/book3s/64/tlbflush-hash.h | 41 +-
.../powerpc/include/asm/book3s/64/tlbflush-radix.h | 33 +
arch/powerpc/include/asm/book3s/64/tlbflush.h | 76 ++
arch/powerpc/include/asm/book3s/pgalloc.h | 19 +
arch/powerpc/include/asm/hugetlb.h | 23 +-
arch/powerpc/include/asm/kvm_book3s_64.h | 42 +-
arch/powerpc/include/asm/machdep.h | 1 +
arch/powerpc/include/asm/mmu.h | 32 +-
arch/powerpc/include/asm/mmu_context.h | 29 +-
.../asm/{pgalloc-32.h => nohash/32/pgalloc.h} | 0
.../asm/{pgalloc-64.h => nohash/64/pgalloc.h} | 92 +--
arch/powerpc/include/asm/nohash/64/pgtable.h | 10 +-
arch/powerpc/include/asm/nohash/pgalloc.h | 23 +
arch/powerpc/include/asm/page.h | 14 +-
arch/powerpc/include/asm/page_64.h | 2 +-
arch/powerpc/include/asm/pgalloc.h | 19 +-
arch/powerpc/include/asm/pgtable-be-types.h | 104 +++
arch/powerpc/include/asm/pte-common.h | 9 +
arch/powerpc/include/asm/reg.h | 5 +
arch/powerpc/include/asm/tlbflush.h | 3 +-
arch/powerpc/kernel/asm-offsets.c | 4 +
arch/powerpc/kernel/btext.c | 2 +-
arch/powerpc/kernel/cputable.c | 2 +-
arch/powerpc/kernel/entry_64.S | 7 +-
arch/powerpc/kernel/exceptions-64s.S | 28 +-
arch/powerpc/kernel/head_64.S | 13 +-
arch/powerpc/kernel/isa-bridge.c | 4 +-
arch/powerpc/kernel/machine_kexec_64.c | 6 +-
arch/powerpc/kernel/mce_power.c | 13 +-
arch/powerpc/kernel/pci_64.c | 5 +-
arch/powerpc/kernel/process.c | 15 +-
arch/powerpc/kernel/prom.c | 1 +
arch/powerpc/kernel/swsusp.c | 2 +-
arch/powerpc/kvm/book3s_64_mmu_hv.c | 11 +-
arch/powerpc/kvm/book3s_hv.c | 6 +
arch/powerpc/kvm/book3s_hv_rm_mmu.c | 12 +-
arch/powerpc/kvm/book3s_pr.c | 6 +-
arch/powerpc/mm/Makefile | 10 +-
arch/powerpc/mm/hash64_4k.c | 32 +-
arch/powerpc/mm/hash64_64k.c | 77 +-
arch/powerpc/mm/hash_native_64.c | 11 +-
arch/powerpc/mm/hash_utils_64.c | 161 +++-
arch/powerpc/mm/hugepage-hash64.c | 25 +-
arch/powerpc/mm/hugetlbpage-book3e.c | 8 +
arch/powerpc/mm/hugetlbpage-hash64.c | 32 +-
arch/powerpc/mm/hugetlbpage-radix.c | 87 +++
arch/powerpc/mm/hugetlbpage.c | 20 +-
arch/powerpc/mm/init_64.c | 73 +-
arch/powerpc/mm/mem.c | 2 +
arch/powerpc/mm/mmap.c | 109 +++
...mmu_context_hash64.c => mmu_context_book3s64.c} | 42 +-
arch/powerpc/mm/mmu_context_nohash.c | 3 +-
arch/powerpc/mm/mmu_decl.h | 5 -
arch/powerpc/mm/pgtable-book3e.c | 129 ++++
arch/powerpc/mm/pgtable-book3s64.c | 123 ++++
arch/powerpc/mm/pgtable-hash64.c | 347 +++++++++
arch/powerpc/mm/pgtable-radix.c | 527 +++++++++++++
arch/powerpc/mm/pgtable.c | 24 +-
arch/powerpc/mm/pgtable_64.c | 555 ++------------
arch/powerpc/mm/slb_low.S | 4 +-
arch/powerpc/mm/slice.c | 20 +-
arch/powerpc/mm/tlb-radix.c | 252 +++++++
arch/powerpc/mm/tlb_hash64.c | 6 +-
arch/powerpc/mm/tlb_nohash.c | 7 +-
arch/powerpc/perf/callchain.c | 2 +-
arch/powerpc/platforms/Kconfig.cputype | 6 +-
arch/powerpc/platforms/cell/spu_base.c | 2 +-
arch/powerpc/platforms/cell/spufs/fault.c | 4 +-
arch/powerpc/platforms/powernv/setup.c | 5 +-
arch/powerpc/platforms/ps3/htab.c | 2 +-
arch/powerpc/platforms/ps3/spu.c | 4 +-
arch/powerpc/platforms/pseries/lpar.c | 20 +-
arch/powerpc/platforms/pseries/lparcfg.c | 3 +-
arch/powerpc/xmon/xmon.c | 2 +-
drivers/cpufreq/pmac32-cpufreq.c | 2 +-
drivers/macintosh/via-pmu.c | 4 +-
drivers/misc/cxl/fault.c | 10 +-
drivers/pcmcia/electra_cf.c | 2 +-
93 files changed, 4280 insertions(+), 1712 deletions(-)
create mode 100644 arch/powerpc/include/asm/book3s/32/pgalloc.h
create mode 100644 arch/powerpc/include/asm/book3s/64/hugetlb-radix.h
create mode 100644 arch/powerpc/include/asm/book3s/64/mmu.h
create mode 100644 arch/powerpc/include/asm/book3s/64/pgalloc.h
create mode 100644 arch/powerpc/include/asm/book3s/64/pgtable-4k.h
create mode 100644 arch/powerpc/include/asm/book3s/64/pgtable-64k.h
create mode 100644 arch/powerpc/include/asm/book3s/64/radix-4k.h
create mode 100644 arch/powerpc/include/asm/book3s/64/radix-64k.h
create mode 100644 arch/powerpc/include/asm/book3s/64/radix.h
create mode 100644 arch/powerpc/include/asm/book3s/64/tlbflush-radix.h
create mode 100644 arch/powerpc/include/asm/book3s/64/tlbflush.h
create mode 100644 arch/powerpc/include/asm/book3s/pgalloc.h
rename arch/powerpc/include/asm/{pgalloc-32.h => nohash/32/pgalloc.h} (100%)
rename arch/powerpc/include/asm/{pgalloc-64.h => nohash/64/pgalloc.h} (68%)
create mode 100644 arch/powerpc/include/asm/nohash/pgalloc.h
create mode 100644 arch/powerpc/include/asm/pgtable-be-types.h
create mode 100644 arch/powerpc/mm/hugetlbpage-radix.c
rename arch/powerpc/mm/{mmu_context_hash64.c => mmu_context_book3s64.c} (78%)
create mode 100644 arch/powerpc/mm/pgtable-book3e.c
create mode 100644 arch/powerpc/mm/pgtable-book3s64.c
create mode 100644 arch/powerpc/mm/pgtable-hash64.c
create mode 100644 arch/powerpc/mm/pgtable-radix.c
create mode 100644 arch/powerpc/mm/tlb-radix.c
--
2.5.0
More information about the Linuxppc-dev
mailing list