فهرست منبع

sh: Fix multiple UTLB hit on UP SH-4.

This acts as a reversion of 1c6b2ca5e0939bf8b5d1a11f1646f25189ecd447 in
the case of UP SH-4, where we still have the risk of a multiple hit
between the slow and fast paths. As seen on SH7780.

Signed-off-by: Hideo Saito <saito@densan.co.jp>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Hideo Saito 17 سال پیش
والد
کامیت
a602cc05f8
1فایلهای تغییر یافته به همراه8 افزوده شده و 0 حذف شده
  1. 8 0
      arch/sh/mm/fault_32.c

+ 8 - 0
arch/sh/mm/fault_32.c

@@ -299,6 +299,14 @@ asmlinkage int __kprobes __do_page_fault(struct pt_regs *regs,
 		entry = pte_mkdirty(entry);
 		entry = pte_mkdirty(entry);
 	entry = pte_mkyoung(entry);
 	entry = pte_mkyoung(entry);
 
 
+#if defined(CONFIG_CPU_SH4) && !defined(CONFIG_SMP)
+	/*
+	 * ITLB is not affected by "ldtlb" instruction.
+	 * So, we need to flush the entry by ourselves.
+	 */
+	local_flush_tlb_one(get_asid(), address & PAGE_MASK);
+#endif
+
 	set_pte(pte, entry);
 	set_pte(pte, entry);
 	update_mmu_cache(NULL, address, entry);
 	update_mmu_cache(NULL, address, entry);