sh: Use local TLB flush in set_pte_phys().
authorPaul Mundt <lethal@linux-sh.org>
Fri, 19 Jun 2009 06:37:11 +0000 (15:37 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Tue, 23 Jun 2009 08:30:17 +0000 (17:30 +0900)
set_pte_phys() presently uses the global flush_tlb_one(), which locks on
SMP trying to do the IPI. As we have not even initialized the other CPUs
at this point, switch to the local_ variant so the flush happens on the
boot CPU.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/mm/init.c

index ee8e6bbe882ca709b0fdfbf79e53b42c86a9be4a..d1be04204219d7ed13f92a4ce46b002b8a5ac937 100644 (file)
@@ -70,7 +70,7 @@ static void set_pte_phys(unsigned long addr, unsigned long phys, pgprot_t prot)
        }
 
        set_pte(pte, pfn_pte(phys >> PAGE_SHIFT, prot));
-       flush_tlb_one(get_asid(), addr);
+       local_flush_tlb_one(get_asid(), addr);
 }
 
 /*