[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[pbsd-mg2] Re: yet another virtual alias problem?
Takao Shinohara <shin@sm.sony.co.jp> writes:
>
> virtual aliasが原因で誤動作していると思しき現象を見つけました。
> physio()の中でvmapbuf()を使ってユーザプロセスのアドレス空間に対応してい
> る物理ページをカーネル仮想空間にマップしているようなのですが、この時に
> virtual aliasに対する配慮がなされていないように思います。
もう少し良くソースを読んでみたのですが、問題の根はもっと深そうです。
vmapbuf()でカーネル空間にユーザプロセスの物理ページをマップする場合でも、
最終的にはpmap_enter()からpmap_enter_pv()が呼ばれてvirtual aliasのチェッ
クとその対処がなされているように見えます。
ところで、pmap_enter_pv()のvirtual aliasのチェックですが、以前修正したよ
うに、mips_CacheAliasMaskの計算式が間違っていて、virtual alias対策は絶対
に実行されないようになっていました。つまり、virtual alias対策はこれまで
テストされたことがなかったということです。
テストされたことのないコードが正しいことはあまり期待できませんが、実際、
cacheの処理を間違っているように思います。
もう少し詳しく調べて、テストプログラムを作って検証してみるつもりです。
篠原