[ARM] Fix mm initialisation with write buffered write allocate caches
authorRussell King <rmk@dyn-67.arm.linux.org.uk>
Wed, 2 Nov 2005 14:11:35 +0000 (14:11 +0000)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Wed, 2 Nov 2005 14:11:35 +0000 (14:11 +0000)
It seems that without the extra tlb flush, we may end up faulting
during the early kernel initialisation because the TLB can't see
the updated page tables.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mm/init.c

index fd079ff1fc53808ccda32e62fae09b24f6175b4d..c168f322ef8c80d91fcdbded23a56d76856162c3 100644 (file)
@@ -486,10 +486,17 @@ static void __init devicemaps_init(struct machine_desc *mdesc)
 
        /*
         * Ask the machine support to map in the statically mapped devices.
-        * After this point, we can start to touch devices again.
         */
        if (mdesc->map_io)
                mdesc->map_io();
+
+       /*
+        * Finally flush the tlb again - this ensures that we're in a
+        * consistent state wrt the writebuffer if the writebuffer needs
+        * draining.  After this point, we can start to touch devices
+        * again.
+        */
+       local_flush_tlb_all();
 }
 
 /*