[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: NetBSD/powerpc pmap.c
<199810120939.SAA23206@ruri.iri.co.jp>の記事において
1998年10月12日18時39分頃、tsubai@iri.co.jpさんは書きました。
> NetBSD/powerpc でデバイス(framebufferとか)を mmap して munmap すると
> -DDIAGNOSTIC の場合、panic しちゃいます。
>
> 落ちるのは pmap_remove_pv の最初の pa_to_attr() で、
> 理由は mmap の時の pmap_enter で実メモリーじゃないものは pv table
> に記録しないからなんですが、どう直すのがいいでしょう?
pa_to_attr()内の DIAGNOSTIC blockを削るというのはどうでしょう。
> 原理的には pa_to_attr(pa) の直前に
> if (vm_physseg_find(atop(pa), NULL) == -1)
> return;
> してやればいいんですが、同じ pa に2回も vm_physseg_find() するのは
> もったいないし。:-)
ということは、pa_to_attr()での
bank = vm_physseg_find(atop(pa), &pg);
で、bank == -1があり得るのですから、panicする必要がないと思うのです。
あ、でもpmap_remove_pvでのみで起りうるのであれば、
pmap_remove_pvでのみ、vm_physseg_find()するのも良いのかもしれませんが、
いかんせんpmap,VMまわりも知識が足らないので、これ以上はわかりません。
sakamoto@cec.co.jp