aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/tile/mm/init.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/tile/mm/init.c b/arch/tile/mm/init.c
index e34597e512df..9a62479aafb4 100644
--- a/arch/tile/mm/init.c
+++ b/arch/tile/mm/init.c
@@ -653,6 +653,17 @@ static void __init kernel_physical_mapping_init(pgd_t *pgd_base)
653 memcpy(pgd_base, pgtables, sizeof(pgtables)); 653 memcpy(pgd_base, pgtables, sizeof(pgtables));
654 __install_page_table(pgd_base, __get_cpu_var(current_asid), 654 __install_page_table(pgd_base, __get_cpu_var(current_asid),
655 swapper_pgprot); 655 swapper_pgprot);
656
657 /*
658 * We just read swapper_pgprot and thus brought it into the cache,
659 * with its new home & caching mode. When we start the other CPUs,
660 * they're going to reference swapper_pgprot via their initial fake
661 * VA-is-PA mappings, which cache everything locally. At that
662 * time, if it's in our cache with a conflicting home, the
663 * simulator's coherence checker will complain. So, flush it out
664 * of our cache; we're not going to ever use it again anyway.
665 */
666 __insn_finv(&swapper_pgprot);
656} 667}
657 668
658/* 669/*