diff options
-rw-r--r-- | arch/tile/mm/init.c | 11 |
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 | /* |