Patchwork [9/20] powerpc/mm: Call mmu_context_init() from ppc64

login
register
mail settings
Submitter Benjamin Herrenschmidt
Date July 23, 2009, 5:59 a.m.
Message ID <20090723055955.757B4DDD1B@ozlabs.org>
Download mbox | patch
Permalink /patch/30118/
State Superseded
Headers show

Comments

Benjamin Herrenschmidt - July 23, 2009, 5:59 a.m.
Our 64-bit hash context handling has no init function, but 64-bit Book3E
will use the common mmu_context_nohash.c code which does, so define an
empty inline mmu_context_init() for 64-bit server and call it from
our 64-bit setup_arch()

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---

 arch/powerpc/include/asm/mmu_context.h |    7 ++++++-
 arch/powerpc/kernel/setup_64.c         |    4 ++++
 arch/powerpc/mm/mmu_context_hash64.c   |    1 +
 3 files changed, 11 insertions(+), 1 deletion(-)
Stephen Rothwell - July 23, 2009, 6:22 a.m.
Hi Ben,

On Thu, 23 Jul 2009 15:59:44 +1000 Benjamin Herrenschmidt <benh@kernel.crashing.org> wrote:
>
> Index: linux-work/arch/powerpc/mm/mmu_context_hash64.c
> ===================================================================
> --- linux-work.orig/arch/powerpc/mm/mmu_context_hash64.c	2009-07-22 16:24:43.000000000 +1000
> +++ linux-work/arch/powerpc/mm/mmu_context_hash64.c	2009-07-22 16:24:56.000000000 +1000
> @@ -76,3 +76,4 @@ void destroy_context(struct mm_struct *m
>  
>  	mm->context.id = NO_CONTEXT;
>  }
> +

Really? :-(
Benjamin Herrenschmidt - July 23, 2009, 7:07 a.m.
On Thu, 2009-07-23 at 16:22 +1000, Stephen Rothwell wrote:
> Hi Ben,
> 
> On Thu, 23 Jul 2009 15:59:44 +1000 Benjamin Herrenschmidt <benh@kernel.crashing.org> wrote:
> >
> > Index: linux-work/arch/powerpc/mm/mmu_context_hash64.c
> > ===================================================================
> > --- linux-work.orig/arch/powerpc/mm/mmu_context_hash64.c	2009-07-22 16:24:43.000000000 +1000
> > +++ linux-work/arch/powerpc/mm/mmu_context_hash64.c	2009-07-22 16:24:56.000000000 +1000
> > @@ -76,3 +76,4 @@ void destroy_context(struct mm_struct *m
> >  
> >  	mm->context.id = NO_CONTEXT;
> >  }
> > +
> 
> Really? :-(

Little mechanical problem, I used to have something in there in a
previous rev of the patch, I'll re-spin that one without that bit.

Cheers,
Ben.
Kumar Gala - July 23, 2009, 2:48 p.m.
On Jul 23, 2009, at 12:59 AM, Benjamin Herrenschmidt wrote:

> Our 64-bit hash context handling has no init function, but 64-bit  
> Book3E
> will use the common mmu_context_nohash.c code which does, so define an
> empty inline mmu_context_init() for 64-bit server and call it from
> our 64-bit setup_arch()
>
> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> ---
>
> arch/powerpc/include/asm/mmu_context.h |    7 ++++++-
> arch/powerpc/kernel/setup_64.c         |    4 ++++
> arch/powerpc/mm/mmu_context_hash64.c   |    1 +
> 3 files changed, 11 insertions(+), 1 deletion(-)


Acked-by: Kumar Gala <galak@kernel.crashing.org>

(w/the assumption the respin will just change the whitespace issue).

- k

Patch

--- linux-work.orig/arch/powerpc/include/asm/mmu_context.h	2009-07-22 16:25:25.000000000 +1000
+++ linux-work/arch/powerpc/include/asm/mmu_context.h	2009-07-22 16:25:50.000000000 +1000
@@ -14,7 +14,6 @@ 
 /*
  * Most if the context management is out of line
  */
-extern void mmu_context_init(void);
 extern int init_new_context(struct task_struct *tsk, struct mm_struct *mm);
 extern void destroy_context(struct mm_struct *mm);
 
@@ -23,6 +22,12 @@  extern void switch_stab(struct task_stru
 extern void switch_slb(struct task_struct *tsk, struct mm_struct *mm);
 extern void set_context(unsigned long id, pgd_t *pgd);
 
+#ifdef CONFIG_PPC_BOOK3S_64
+static inline void mmu_context_init(void) { }
+#else
+extern void mmu_context_init(void);
+#endif
+
 /*
  * switch_mm is the entry point called from the architecture independent
  * code in kernel/sched.c
Index: linux-work/arch/powerpc/kernel/setup_64.c
===================================================================
--- linux-work.orig/arch/powerpc/kernel/setup_64.c	2009-07-22 16:26:23.000000000 +1000
+++ linux-work/arch/powerpc/kernel/setup_64.c	2009-07-22 16:26:31.000000000 +1000
@@ -534,6 +534,10 @@  void __init setup_arch(char **cmdline_p)
 #endif
 
 	paging_init();
+
+	/* Initialize the MMU context management stuff */
+	mmu_context_init();
+
 	ppc64_boot_msg(0x15, "Setup Done");
 }
 
Index: linux-work/arch/powerpc/mm/mmu_context_hash64.c
===================================================================
--- linux-work.orig/arch/powerpc/mm/mmu_context_hash64.c	2009-07-22 16:24:43.000000000 +1000
+++ linux-work/arch/powerpc/mm/mmu_context_hash64.c	2009-07-22 16:24:56.000000000 +1000
@@ -76,3 +76,4 @@  void destroy_context(struct mm_struct *m
 
 	mm->context.id = NO_CONTEXT;
 }
+