[PATCH 152] M68k TLB fixes

From: Geert Uytterhoeven
Date: Fri Apr 23 2004 - 10:12:58 EST


M68k TLB fixes from Roman Zippel:
- Check current->active_mm for currently active mm
- Set correct context to flush the right ATC entry
This is especially important for kswapd to correctly flush unmapped entries (it
caused random segfaults during large compiles)

--- linux-2.4.25/include/asm-m68k/motorola_pgalloc.h 2003-12-23 11:31:10.000000000 +0100
+++ linux-m68k-2.4.25/include/asm-m68k/motorola_pgalloc.h 2004-04-06 10:53:50.000000000 +0200
@@ -231,20 +231,24 @@

static inline void flush_tlb_mm(struct mm_struct *mm)
{
- if (mm == current->mm)
+ if (mm == current->active_mm)
__flush_tlb();
}

static inline void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr)
{
- if (vma->vm_mm == current->mm)
+ if (vma->vm_mm == current->active_mm) {
+ mm_segment_t old_fs = get_fs();
+ set_fs(USER_DS);
__flush_tlb_one(addr);
+ set_fs(old_fs);
+ }
}

static inline void flush_tlb_range(struct mm_struct *mm,
unsigned long start, unsigned long end)
{
- if (mm == current->mm)
+ if (mm == current->active_mm)
__flush_tlb();
}


Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/