This patch series add split pmd pagetable lock for book3s64. nohash64 also should be able to switch to this. I need to workout the code dependency. This series also migh have broken the build on platforms otherthan book3s64. I am sending this early to get feedback on whether we should continue with the approach.
We switch the pmd allocator to use something similar to what we already use for level 4 pagetable allocation. We get an order 0 page and divide that to fragments and hand over fragments when we get request for a pmd pagetable. The pmd lock is now stashed in the struct page backing the allocated page. The series should help in reducing lock contention on mm->page_table_lock. Aneesh Kumar K.V (6): powerpc/mm: Rename pte fragment functions powerpc/mm/4k: Switch 4k pagesize config to use pagetable fragment powerpc/mm: Implement helpers for pagetable fragment support at PMD level powerpc/mm: Simplify the rcu callback for page table free powerpc/mm: Use page fragments for allocation page table at PMD level enable split pmd ptlock. arch/powerpc/include/asm/book3s/32/pgalloc.h | 2 +- arch/powerpc/include/asm/book3s/64/hash-4k.h | 10 +- arch/powerpc/include/asm/book3s/64/hash-64k.h | 4 + arch/powerpc/include/asm/book3s/64/mmu.h | 7 +- arch/powerpc/include/asm/book3s/64/pgalloc.h | 43 ++------ arch/powerpc/include/asm/book3s/64/pgtable.h | 6 ++ arch/powerpc/include/asm/book3s/64/radix-4k.h | 8 ++ arch/powerpc/include/asm/book3s/64/radix-64k.h | 4 + arch/powerpc/include/asm/pgalloc.h | 9 ++ arch/powerpc/mm/hash_utils_64.c | 2 + arch/powerpc/mm/init-common.c | 2 - arch/powerpc/mm/mmu_context_book3s64.c | 39 ++++--- arch/powerpc/mm/pgtable-radix.c | 2 + arch/powerpc/mm/pgtable_64.c | 144 +++++++++++++++++++++---- arch/powerpc/platforms/Kconfig.cputype | 4 + 15 files changed, 209 insertions(+), 77 deletions(-) -- 2.14.3