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;
}
|