Source-Changes-HG archive

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

[src/trunk]: src/sys/uvm uvm_km_pgremove_intrsafe(): properly compute the siz...



details:   https://anonhg.NetBSD.org/src/rev/6ed76834a116
branches:  trunk
changeset: 778022:6ed76834a116
user:      bouyer <bouyer%NetBSD.org@localhost>
date:      Mon Mar 12 21:37:12 2012 +0000

description:
uvm_km_pgremove_intrsafe(): properly compute the size to pmap_kremove()
(do not trucate it to the first __PGRM_BATCH pages per batch): if we were
given a sparse mapping, we could leave mappings in place.
Note that this doesn't seem to be a problem right now: I added a KASSERT
in my private tree to see if uvm_km_pgremove_intrsafe() would use a
too short size, and it didn't fire.

diffstat:

 sys/uvm/uvm_km.c |  6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diffs (27 lines):

diff -r b176b048a463 -r 6ed76834a116 sys/uvm/uvm_km.c
--- a/sys/uvm/uvm_km.c  Mon Mar 12 21:35:10 2012 +0000
+++ b/sys/uvm/uvm_km.c  Mon Mar 12 21:37:12 2012 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: uvm_km.c,v 1.123 2012/02/25 22:28:06 rmind Exp $       */
+/*     $NetBSD: uvm_km.c,v 1.124 2012/03/12 21:37:12 bouyer Exp $      */
 
 /*
  * Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -120,7 +120,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_km.c,v 1.123 2012/02/25 22:28:06 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_km.c,v 1.124 2012/03/12 21:37:12 bouyer Exp $");
 
 #include "opt_uvmhist.h"
 
@@ -485,7 +485,7 @@
                }
                npgrm = i;
                /* now remove the mappings */
-               pmap_kremove(batch_vastart, PAGE_SIZE * npgrm);
+               pmap_kremove(batch_vastart, va - batch_vastart);
                /* and free the pages */
                for (i = 0; i < npgrm; i++) {
                        pg = PHYS_TO_VM_PAGE(pa[i]);



Home | Main Index | Thread Index | Old Index