[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: PenCentra hungup



Takao Shinohara <shin@sm.sony.co.jp> writes:
> mips3_proc_trapmolineの先頭でSRにMIPS_SR_EXLを書き込む命令を実行する時点
> で割り込みを受け付ける状態になっていると仮定します。すると、以下のような
> シナリオで"trap: TLB miss (load or instr. fetch) in kernel mode"が発生す
> ると思われます。

	(中略)

> 取りあえずの回避策ですが、以下のようにmips3_proc_trampolineの先頭でSRに
> MIPS_SR_EXLを書き込む前に割り込みを禁止すればよいと思われます。

この件ですが、私がさぼっている間にrafalさんが修正をcommitしてくれました。

RCS file: /cvsroot/syssrc/sys/arch/mips/mips/locore_mips3.S,v
----------------------------
revision 1.70
date: 2001/07/24 23:13:33;  author: rafal;  state: Exp;  lines: +11 -1
Fix bug in mips3_proc_trampoline: SR wasn't disabled on entry, allowing an
interrupt to sneak in after EXL had been set; the interrupt EPC was stale
as PC isn't saved if EXL is set, causing the eret to return to the wrong
place and leading to kernel-mode TLB misses on user addresses.  The bug
was discovered by the japanese NetBSD/*mips folks and the same fix was
found independently by shinohara-san (shin@netbsd.org).
----------------------------

これで、-currentに関しては問題がなくなったのですが、実はNetBSD 1.5.1にも
このバグがあることに気が付きました。1.5にはありません。

1.5.xに反映されるように修正依頼を出したので、受理されれば1.5.2(?)では直
ると思われます。

篠原