Subject: Re: remplacing page mappings behind uvm
To: None <bouyer@antioche.eu.org>
From: YAMAMOTO Takashi <yamt@mwd.biglobe.ne.jp>
List: tech-kern
Date: 12/01/2007 22:40:04
> > is this uvm_map_pageable only for debug?
>
> No, it's because we need to enter the mappings *now*, to be able to
> report mappings that failed back to the ioctl caller.
hm, i didn't know that.
> > why do checkprot here?
>
> To know if the va range was mapped read-only or read-write. Is there some
> other way to get it ?
why bother to check it?
> > please don't use uvm_unmap_remove and uvm_unmap_detach here.
> > they are uvm-internal.
>
> What would you suggect to use instead here ?
uvm_unmap without checkprot. but see below.
> > besides, normally uvm_unmap_detach should not be used with the map locked.
> > (it's the main reason why it's separated from uvm_unmap_remove.)
>
> OK, that's easy :)
>
> >
> > if the process is multithreaded (is xentools multithreaded?),
>
> xentools is multithreaded, but I don't think this interface is going to
> be used from multiple threads.
another thread does not need to use this interface.
calling mmap is enough to interfere us.
> > you need to replace the mapping atomically.
> > othewise the va range can be taken by another thread while we unmap it.
> > uvm_map_replace does something similar, but it doesn't deal with
> > arbitrary existing mappings.
i don't think it can be done without touching uvm internals currently.
probably uvm_map can obtain a "replace existing mapping" flag.
but i don't think it's worth to have. i realy think it's better to fix
the broken "replace anonymous mmap" interface.
YAMAMOTO Takashi