Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/bouyer-xen2]: src/sys/arch/xen/i386 With help from YAMAMOTO Takashi, get...



details:   https://anonhg.NetBSD.org/src/rev/163db3c0ca31
branches:  bouyer-xen2
changeset: 571875:163db3c0ca31
user:      bouyer <bouyer%NetBSD.org@localhost>
date:      Wed Jan 19 17:33:37 2005 +0000

description:
With help from YAMAMOTO Takashi, get the XEN0 kernel multiuser again:
In pmap_pdp_dtor(), make the page writable again, now that it's no longer
a PDP page.
yamt says that we should use pmap_kenter_pa here, but I'm not sure if I
have to call pmap_remove() first, so for now this his #ifdef'd out.

diffstat:

 sys/arch/xen/i386/pmap.c |  14 ++++++++++++--
 1 files changed, 12 insertions(+), 2 deletions(-)

diffs (42 lines):

diff -r af5264ed17b2 -r 163db3c0ca31 sys/arch/xen/i386/pmap.c
--- a/sys/arch/xen/i386/pmap.c  Wed Jan 19 10:24:22 2005 +0000
+++ b/sys/arch/xen/i386/pmap.c  Wed Jan 19 17:33:37 2005 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: pmap.c,v 1.6.6.4 2005/01/19 10:22:45 bouyer Exp $      */
+/*     $NetBSD: pmap.c,v 1.6.6.5 2005/01/19 17:33:37 bouyer Exp $      */
 /*     NetBSD: pmap.c,v 1.179 2004/10/10 09:55:24 yamt Exp             */
 
 /*
@@ -61,7 +61,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.6.6.4 2005/01/19 10:22:45 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.6.6.5 2005/01/19 17:33:37 bouyer Exp $");
 
 #include "opt_cputype.h"
 #include "opt_user_ldt.h"
@@ -1922,6 +1922,9 @@
 
        pmap_enter(pmap_kernel(), (vaddr_t)pdir, pdirpa, VM_PROT_READ,
            VM_PROT_READ);
+#if 0
+       pmap_kenter_pa((vaddr_t)pdir, pdirpa, VM_PROT_READ);
+#endif
        pmap_update(pmap_kernel());
 
        /* pin page type */
@@ -1945,6 +1948,13 @@
        /* unpin page type */
        xpq_queue_unpin_table(xpmap_ptom(pdirpa));
        xpq_flush_queue();
+       pmap_enter(pmap_kernel(), (vaddr_t)pdir, pdirpa,
+           VM_PROT_READ | VM_PROT_WRITE, VM_PROT_READ | VM_PROT_WRITE);
+#if 0
+       pmap_kremove((vaddr_t)pdir, PAGE_SIZE)
+       pmap_kenter_pa((vaddr_t)pdir, pdirpa, VM_PROT_READ | VM_PROT_WRITE);
+#endif
+       pmap_update(pmap_kernel());
 }
 
 /*



Home | Main Index | Thread Index | Old Index