Merge commit 'paulus-perf/master' into next
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Thu, 20 Aug 2009 01:07:56 +0000 (11:07 +1000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Thu, 20 Aug 2009 01:07:56 +0000 (11:07 +1000)
1  2 
arch/powerpc/kernel/Makefile
arch/powerpc/kernel/asm-offsets.c
arch/powerpc/kernel/exceptions-64s.S
arch/powerpc/mm/slb.c

Simple merge
Simple merge
Simple merge
index 6bc8b4aeba5c3cc00a6b5ace179698eda08d8948,a685652effeb05cd303b75a7a2a07e796d1a9a89..07961c5c169e937ac444dde67ece5ae052ef5082
@@@ -184,8 -191,16 +191,16 @@@ void switch_slb(struct task_struct *tsk
        unsigned long slbie_data = 0;
        unsigned long pc = KSTK_EIP(tsk);
        unsigned long stack = KSTK_ESP(tsk);
 -      unsigned long unmapped_base;
 +      unsigned long exec_base;
  
+       /*
+        * We need interrupts hard-disabled here, not just soft-disabled,
+        * so that a PMU interrupt can't occur, which might try to access
+        * user memory (to get a stack trace) and possible cause an SLB miss
+        * which would update the slb_cache/slb_cache_ptr fields in the PACA.
+        */
+       hard_irq_disable();
+       offset = get_paca()->slb_cache_ptr;
        if (!cpu_has_feature(CPU_FTR_NO_SLBIE_B) &&
            offset <= SLB_CACHE_ENTRIES) {
                int i;