Subject: Re: remplacing page mappings behind uvm
To: YAMAMOTO Takashi <yamt@mwd.biglobe.ne.jp>
From: Manuel Bouyer <bouyer@antioche.eu.org>
List: tech-kern
Date: 11/30/2007 13:17:45
On Fri, Nov 30, 2007 at 09:08:39PM +0900, YAMAMOTO Takashi wrote:
> > On Fri, Nov 30, 2007 at 12:31:06PM +0900, YAMAMOTO Takashi wrote:
> > > > Although it'a gross hack, it works for Xeni386. It also works on Xenamd64,
> > > > up to process exit: it triggers an assersion in pmap_destroy() because
> > > > pmap_remove() is not called on the hacked memory ranges.
> > > 
> > > how about tweaking device pager instead of maintaining these hacks?
> > 
> > I did look at this when I implemented these ioctls. It's not so easy.
> > mmap() on devices will use offsets, but the physical pages are not contigous,
> > yet xen wants them mapped as a contigous VM area. It can be done but would
> > mean a driver more complex than the simple ioctl I have now,
> 
> isn't an array enough to convert offset -> machine address?

No, because machine addresses are not contigous, but xen wants a contigous
virtual adresses. Also, you have to pass a domain id in some way

> 
> i'm not sure if it's a good idea to make vm deal with it
> in order to simplify this very uncommon driver.

pmap_enter_ma() is also used in other places.

> 
> > and to maintain
> > changes in qemu-dm too (or other hardware emulators when they show up in
> > Xen). 
> 
> does qemu-dm work without modifications currently?

There are some minor changes, mostly to deal with pkgsrc, and our
/dev/tap. This part is not touched.

-- 
Manuel Bouyer, LIP6, Universite Paris VI.           Manuel.Bouyer@lip6.fr
     NetBSD: 26 ans d'experience feront toujours la difference
--