Re: [PATCH] xen-mapcache: don''t unmap locked entry during mapcache invalidation

Stefano Stabellini
2012-03-15T17:14:53Z

On Thu, 15 Mar 2012, Julien Grall wrote:
> When an IOREQ_TYPE_INVALIDATE is sent to QEMU, it invalidates all entry
> of the map cache even if it''s locked.
>
> QEMU is not able to know that entry was invalidated, so when an IO
> access is requested a segfault occured.

The problem here is the long term mappings in QEMU that cannot easily be
re-created.
I am not sure whether this can cause any trouble to things like
xenpaging.


> Signed-off-by: Julien Grall <julien.grall@citrix.com>
> ---
>   xen-mapcache.c |    3 +++
>   1 files changed, 3 insertions(+), 0 deletions(-)
>
> diff --git a/xen-mapcache.c b/xen-mapcache.c
> index 585b559..6e7e5ab 100644
> --- a/xen-mapcache.c
> +++ b/xen-mapcache.c
> @@ -370,6 +370,9 @@ void xen_invalidate_map_cache(void)
>               continue;
>           }
> +	if (entry->lock > 0)
> +	    continue;
> +
>           if (munmap(entry->vaddr_base, entry->size) != 0) {
>               perror("unmap fails");
>               exit(-1);

CODING_STYLE