[PATCH] powerpc: iSeries needs slb_initialize to be called
authorStephen Rothwell <sfr@canb.auug.org.au>
Sat, 1 Apr 2006 16:45:04 +0000 (02:45 +1000)
committerPaul Mackerras <paulus@samba.org>
Sat, 1 Apr 2006 23:32:15 +0000 (09:32 +1000)
Since the powerpc 64k pages patch went in, systems that have SLBs
(like Power4 iSeries) needed to have slb_initialize called to set up
some variables for the SLB miss handler.  This was not being called
on the boot processor on iSeries, so on single cpu iSeries machines,
we would get apparent memory curruption as soon as we entered user mode.

This patch fixes that by calling slb_initialize on the boot cpu if the
processor has an SLB.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/kernel/setup_64.c

index 59aa92cd6fa4eabab53ee3bc8d5381e4a3f095a0..13e91c4d70a8ff1444fff3ccc232750569c3c5c0 100644 (file)
@@ -215,12 +215,10 @@ void __init early_setup(unsigned long dt_ptr)
        /*
         * Initialize stab / SLB management except on iSeries
         */
-       if (!firmware_has_feature(FW_FEATURE_ISERIES)) {
-               if (cpu_has_feature(CPU_FTR_SLB))
-                       slb_initialize();
-               else
-                       stab_initialize(get_paca()->stab_real);
-       }
+       if (cpu_has_feature(CPU_FTR_SLB))
+               slb_initialize();
+       else if (!firmware_has_feature(FW_FEATURE_ISERIES))
+               stab_initialize(get_paca()->stab_real);
 
        DBG(" <- early_setup()\n");
 }