Revert to Fedora kernel-2.6.17-1.2187_FC5 patched with vs2.0.2.1; there are too many...
[linux-2.6.git] / arch / ppc / mm / 4xx_mmu.c
index 6066ff3..4d006aa 100644 (file)
@@ -36,7 +36,6 @@
 #include <linux/vmalloc.h>
 #include <linux/init.h>
 #include <linux/delay.h>
-#include <linux/bootmem.h>
 #include <linux/highmem.h>
 
 #include <asm/pgalloc.h>
@@ -52,6 +51,7 @@
 #include <asm/setup.h>
 #include "mmu_decl.h"
 
+extern int __map_without_ltlbs;
 /*
  * MMU_init_hw does the chip-specific initialization of the MMU hardware.
  */
@@ -102,17 +102,19 @@ unsigned long __init mmu_mapin_ram(void)
        p = PPC_MEMSTART;
        s = 0;
 
+       if (__map_without_ltlbs) {
+               return s;
+       }
+
        while (s <= (total_lowmem - LARGE_PAGE_SIZE_16M)) {
                pmd_t *pmdp;
                unsigned long val = p | _PMD_SIZE_16M | _PAGE_HWEXEC | _PAGE_HWWRITE;
 
-               spin_lock(&init_mm.page_table_lock);
                pmdp = pmd_offset(pgd_offset_k(v), v);
                pmd_val(*pmdp++) = val;
                pmd_val(*pmdp++) = val;
                pmd_val(*pmdp++) = val;
                pmd_val(*pmdp++) = val;
-               spin_unlock(&init_mm.page_table_lock);
 
                v += LARGE_PAGE_SIZE_16M;
                p += LARGE_PAGE_SIZE_16M;
@@ -123,10 +125,8 @@ unsigned long __init mmu_mapin_ram(void)
                pmd_t *pmdp;
                unsigned long val = p | _PMD_SIZE_4M | _PAGE_HWEXEC | _PAGE_HWWRITE;
 
-               spin_lock(&init_mm.page_table_lock);
                pmdp = pmd_offset(pgd_offset_k(v), v);
                pmd_val(*pmdp) = val;
-               spin_unlock(&init_mm.page_table_lock);
 
                v += LARGE_PAGE_SIZE_4M;
                p += LARGE_PAGE_SIZE_4M;