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

[pbsd-mg2] Re: cache problem again



Takao Shinohara <shin@sm.sony.co.jp> writes:
> sys/arch/mips/mips/mips_machdep.cのmips3_ConfigCache()の中で、virtual
> aliasを検出するためのmips_CacheAliasMaskという変数の値を計算している部分
> があり、以下のようになっています。
> 
> 	mips_CacheAliasMask = (mips_L1DCacheLSize - 1) & ~(NBPG - 1);
> 
> ここで、式の中でmips_L1DCacheLSizeを使っていますが、これはcacheのline
> sizeです。正しくは、mips_L1DCacheSize(primary cacheの大きさ)ではないか
> と思うのですが。

実機で確認してみました。確かに、mips_CacheAliasMaskは値が0になっていて、
virtual aliasの検出ができない状態でした。今まで動いていたように見えるの
が不思議なくらいです。

式を修正してmips_L1DCacheSizeを使うようにしたところ、動作がおかしかった
4KB/blockのファイルシステムでも快調に動くようになりました。

ソースの修正は先程commitしておきました。

P.S	修正前のカーネルで使用したファイルシステムは壊れている可能性が大
	なので、fsckをお忘れなく。

篠原