[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