Module Name: src
Committed By: rmind
Date: Wed Jun 15 19:51:50 UTC 2011
Modified Files:
src/sys/arch/xen/xen: privcmd.c xengnt.c
Log Message:
- privpgop_fault: call pmap_update() before uvmfault_unlockall().
- privcmd_ioctl, xengnt_more_entries: add missing pmap_update().
To generate a diff of this commit:
cvs rdiff -u -r1.42 -r1.43 src/sys/arch/xen/xen/privcmd.c
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/xen/xen/xengnt.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/xen/xen/privcmd.c
diff -u src/sys/arch/xen/xen/privcmd.c:1.42 src/sys/arch/xen/xen/privcmd.c:1.43
--- src/sys/arch/xen/xen/privcmd.c:1.42 Sun Jun 12 03:35:50 2011
+++ src/sys/arch/xen/xen/privcmd.c Wed Jun 15 19:51:50 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: privcmd.c,v 1.42 2011/06/12 03:35:50 rmind Exp $ */
+/* $NetBSD: privcmd.c,v 1.43 2011/06/15 19:51:50 rmind Exp $ */
/*-
* Copyright (c) 2004 Christian Limpach.
@@ -27,7 +27,7 @@
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: privcmd.c,v 1.42 2011/06/12 03:35:50 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: privcmd.c,v 1.43 2011/06/15 19:51:50 rmind Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -416,6 +416,8 @@
va = va0 + (i * PAGE_SIZE);
error = copyin(&pmb->arr[i], &mfn, sizeof(mfn));
if (error != 0) {
+ /* XXX: mappings */
+ pmap_update(pmap_kernel());
kmem_free(maddr, sizeof(paddr_t) * pmb->num);
uvm_km_free(kernel_map, trymap, PAGE_SIZE,
UVM_KMF_VAONLY);
@@ -433,6 +435,8 @@
maddr[i] = ma;
}
}
+ pmap_update(pmap_kernel());
+
error = privcmd_map_obj(vmm, va0, maddr, pmb->num, pmb->dom);
uvm_km_free(kernel_map, trymap, PAGE_SIZE, UVM_KMF_VAONLY);
@@ -518,8 +522,9 @@
vaddr + PAGE_SIZE);
}
}
- uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap, uobj);
pmap_update(ufi->orig_map->pmap);
+ uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap, uobj);
+
if (error == ERESTART) {
uvm_wait("privpgop_fault");
}
Index: src/sys/arch/xen/xen/xengnt.c
diff -u src/sys/arch/xen/xen/xengnt.c:1.18 src/sys/arch/xen/xen/xengnt.c:1.19
--- src/sys/arch/xen/xen/xengnt.c:1.18 Thu May 26 22:18:13 2011
+++ src/sys/arch/xen/xen/xengnt.c Wed Jun 15 19:51:50 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: xengnt.c,v 1.18 2011/05/26 22:18:13 jym Exp $ */
+/* $NetBSD: xengnt.c,v 1.19 2011/06/15 19:51:50 rmind Exp $ */
/*
* Copyright (c) 2006 Manuel Bouyer.
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xengnt.c,v 1.18 2011/05/26 22:18:13 jym Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xengnt.c,v 1.19 2011/06/15 19:51:50 rmind Exp $");
#include <sys/types.h>
#include <sys/param.h>
@@ -167,6 +167,7 @@
pmap_kenter_ma(((vaddr_t)grant_table) + gnt_nr_grant_frames * PAGE_SIZE,
((paddr_t)pages[gnt_nr_grant_frames]) << PAGE_SHIFT,
VM_PROT_WRITE, 0);
+ pmap_update(pmap_kernel());
/*
* add the grant entries associated to the last grant table frame