[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をお忘れなく。
篠原