Subject: Re: -current TLB panics on 3100?
To: None <port-pmax@netbsd.org>
From: Toru Nishimura <nisimura@itc.aist-nara.ac.jp>
List: port-pmax
Date: 11/10/1999 14:10:55
> I'm not certain what the actual CPU is in my 5000/200 and 5000/25
> without opening up the boxes. The 5000/200 displays "CPU Rev. 2.0 with
> MIPS R3010 FPC Rev. 2.0", while the 5000/25 displays "CPU Rev. 3.0 with
> MIPS R3010 FPC Rev. 4.0".
>
> Also, I modified the two places in trap.c to "undo" the MIPS1-only code,
> and I was able to boot that kernel on my 5000/200 without any problems.
I'll dispose the small scale 'enhancement' which is now proven harmful.
#if defined(MIPS1) && !defined(MIPS3)
MachTLBUpdate(~0, entry); /* use entryhi */
#else
The code segment above is corresponding to the following;
LEAF(mips1_TLBUpdate)
mfc0 v1, MIPS_COP_0_STATUS # save the status register
mtc0 zero, MIPS_COP_0_STATUS # disable interrupts
li v0, -1 # check to use current entryhi
bne v0, a0, 1f
nop
tlbp
mtc0 a1, MIPS_COP_0_TLB_LOW # set new entrylo
nop
tlbwi # update the entry
j ra
mtc0 v1, MIPS_COP_0_STATUS
1:
My reasoning was like this;
Whenever TLBmod exeception happens, TLB EntryHi register already has
the TLB high part in question. I remember now that at that time I
expected TLB Index register already pointing the TLB entry brought the
exception, but later concluded 'tblp' instrunction was necessary.
I managed to reproduce the panic at the exactly same location which
people reported, with very high load of 6-parallel make (-j 6) ran on
/usr/src/lib/libc. Another theory is EntryHi register has been changed
when the 'tlbp' is about to be called.
Tohru Nishimura