Re: [PATCH v5 18/22] powerpc/mm: Extend pte_fragment functionality to nohash/32

From: Christophe LEROY
Date: Wed Sep 26 2018 - 04:10:45 EST




Le 26/09/2018 Ã 04:48, Aneesh Kumar K.V a ÃcritÂ:
Christophe Leroy <christophe.leroy@xxxxxx> writes:

In order to allow the 8xx to handle pte_fragments, this patch
extends the use of pte_fragments to nohash/32 platforms.

Signed-off-by: Christophe Leroy <christophe.leroy@xxxxxx>
---
arch/powerpc/include/asm/mmu_context.h | 2 +-
arch/powerpc/include/asm/nohash/32/mmu-40x.h | 1 +
arch/powerpc/include/asm/nohash/32/mmu-44x.h | 1 +
arch/powerpc/include/asm/nohash/32/mmu-8xx.h | 1 +
arch/powerpc/include/asm/nohash/32/mmu.h | 4 ++-
arch/powerpc/include/asm/nohash/32/pgalloc.h | 52 +++++++++++++---------------
arch/powerpc/include/asm/nohash/32/pgtable.h | 11 ++++--
arch/powerpc/include/asm/nohash/mmu-book3e.h | 1 +
arch/powerpc/mm/Makefile | 3 ++
arch/powerpc/mm/mmu_context_nohash.c | 14 ++++++++
10 files changed, 57 insertions(+), 33 deletions(-)

diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h
index b2f89b621b15..7f2c37a3f99d 100644
--- a/arch/powerpc/include/asm/mmu_context.h
+++ b/arch/powerpc/include/asm/mmu_context.h
@@ -222,7 +222,7 @@ static inline int arch_dup_mmap(struct mm_struct *oldmm,
return 0;
}
-#ifndef CONFIG_PPC_BOOK3S_64
+#if defined(CONFIG_PPC_BOOK3E_64) || defined(CONFIG_PPC_BOOK3S_32)
static inline void arch_exit_mmap(struct mm_struct *mm)
{
}


Can we do that with #ifndef arch_exit_mmap? This should handle every
platform that doesn't use pte_frag right?

Yes we can, that means moving arch_exit_mmap() prototype in platform specific mmu headers, and adding there a #define arch_exit_mmap arch_exit_mmap

Is that your idea ?

Christophe




diff --git a/arch/powerpc/include/asm/nohash/32/mmu-40x.h b/arch/powerpc/include/asm/nohash/32/mmu-40x.h
index 74f4edb5916e..7c77ceed71d6 100644
--- a/arch/powerpc/include/asm/nohash/32/mmu-40x.h
+++ b/arch/powerpc/include/asm/nohash/32/mmu-40x.h
@@ -58,6 +58,7 @@ typedef struct {
unsigned int id;
unsigned int active;
unsigned long vdso_base;

-aneesh