There seems to be a hazard problem in the local_flush_tlb_range function in tlb-r4k.c, which the patch below will fix. It could hit anyone, but it probably only a problem on CPUs, which doesn't allow matching entries in the TLB. /Carsten -- _ _ ____ ___ Carsten Langgaard Mailto:carstenl@mips.com |\ /|||___)(___ MIPS Denmark Direct: +45 4486 5527 | \/ ||| ____) Lautrupvang 4B Switch: +45 4486 5555 TECHNOLOGIES 2750 Ballerup Fax...: +45 4486 5556 Denmark http://www.mips.com
Index: arch/mips/mm/tlb-r4k.c =================================================================== RCS file: /cvs/linux/arch/mips/mm/tlb-r4k.c,v retrieving revision 1.6.2.3 diff -u -r1.6.2.3 tlb-r4k.c --- arch/mips/mm/tlb-r4k.c 2002/01/18 03:16:24 1.6.2.3 +++ arch/mips/mm/tlb-r4k.c 2002/05/17 11:36:58 @@ -119,12 +119,11 @@ idx = get_index(); set_entrylo0(0); set_entrylo1(0); - set_entryhi(KSEG0); if (idx < 0) continue; - BARRIER; /* Make sure all entries differ. */ set_entryhi(KSEG0+idx*0x2000); + BARRIER; tlb_write_indexed(); BARRIER; }