It seems calling flush_tlb_all() doesn't reliable flush the tlb on all CPUs. Disable it when used with huge pages. Signed-off-by: Helge Deller <deller@xxxxxx> --- arch/parisc/kernel/cache.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c index cda6dbb..aee27e1 100644 --- a/arch/parisc/kernel/cache.c +++ b/arch/parisc/kernel/cache.c @@ -442,13 +442,15 @@ EXPORT_SYMBOL(copy_user_page); int __flush_tlb_range(unsigned long sid, unsigned long start, unsigned long end) { - unsigned long flags, size; + unsigned long flags; - size = (end - start); +#if !defined(CONFIG_HUGETLB_PAGE) + unsigned long size = (end - start); if (size >= parisc_tlb_flush_threshold) { flush_tlb_all(); return 1; } +#endif /* Purge TLB entries for small ranges using the pdtlb and pitlb instructions. These instructions execute locally -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe linux-parisc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html