Module Name: src Committed By: yamt Date: Tue Jul 5 13:47:24 UTC 2011
Modified Files: src/sys/uvm: uvm_amap.c uvm_anon.c uvm_fault.c Log Message: reduce the number of atomic ops in common cases. it's exceptional for anons to remain longer than amap. To generate a diff of this commit: cvs rdiff -u -r1.100 -r1.101 src/sys/uvm/uvm_amap.c cvs rdiff -u -r1.57 -r1.58 src/sys/uvm/uvm_anon.c cvs rdiff -u -r1.188 -r1.189 src/sys/uvm/uvm_fault.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/uvm/uvm_amap.c diff -u src/sys/uvm/uvm_amap.c:1.100 src/sys/uvm/uvm_amap.c:1.101 --- src/sys/uvm/uvm_amap.c:1.100 Mon Jun 27 15:56:36 2011 +++ src/sys/uvm/uvm_amap.c Tue Jul 5 13:47:24 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_amap.c,v 1.100 2011/06/27 15:56:36 hannken Exp $ */ +/* $NetBSD: uvm_amap.c,v 1.101 2011/07/05 13:47:24 yamt Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: uvm_amap.c,v 1.100 2011/06/27 15:56:36 hannken Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uvm_amap.c,v 1.101 2011/07/05 13:47:24 yamt Exp $"); #include "opt_uvmhist.h" @@ -1060,7 +1060,6 @@ */ nanon->an_lock = amap->am_lock; - mutex_obj_hold(nanon->an_lock); uvm_pagecopy(pg, npg); anon->an_ref--; KASSERT(anon->an_ref > 0); Index: src/sys/uvm/uvm_anon.c diff -u src/sys/uvm/uvm_anon.c:1.57 src/sys/uvm/uvm_anon.c:1.58 --- src/sys/uvm/uvm_anon.c:1.57 Fri Jun 24 01:39:22 2011 +++ src/sys/uvm/uvm_anon.c Tue Jul 5 13:47:24 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_anon.c,v 1.57 2011/06/24 01:39:22 rmind Exp $ */ +/* $NetBSD: uvm_anon.c,v 1.58 2011/07/05 13:47:24 yamt Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: uvm_anon.c,v 1.57 2011/06/24 01:39:22 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uvm_anon.c,v 1.58 2011/07/05 13:47:24 yamt Exp $"); #include "opt_uvmhist.h" @@ -158,6 +158,7 @@ if (pg->flags & PG_BUSY) { pg->flags |= PG_RELEASED; + mutex_obj_hold(anon->an_lock); return; } mutex_enter(&uvm_pageqlock); @@ -191,9 +192,6 @@ KASSERT(anon->an_swslot == 0); #endif - if (anon->an_lock != NULL) { - mutex_obj_free(anon->an_lock); - } pool_cache_put(&uvm_anon_cache, anon); UVMHIST_LOG(maphist,"<- done!",0,0,0,0); } @@ -422,7 +420,6 @@ KASSERT(anon->an_page == NULL); - mutex_obj_hold(lock); uvm_anfree(anon); mutex_exit(lock); mutex_obj_free(lock); Index: src/sys/uvm/uvm_fault.c diff -u src/sys/uvm/uvm_fault.c:1.188 src/sys/uvm/uvm_fault.c:1.189 --- src/sys/uvm/uvm_fault.c:1.188 Fri Jun 24 01:39:22 2011 +++ src/sys/uvm/uvm_fault.c Tue Jul 5 13:47:24 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_fault.c,v 1.188 2011/06/24 01:39:22 rmind Exp $ */ +/* $NetBSD: uvm_fault.c,v 1.189 2011/07/05 13:47:24 yamt Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: uvm_fault.c,v 1.188 2011/06/24 01:39:22 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uvm_fault.c,v 1.189 2011/07/05 13:47:24 yamt Exp $"); #include "opt_uvmhist.h" @@ -614,11 +614,9 @@ KASSERT(anon->an_lock == NULL); anon->an_lock = amap->am_lock; - mutex_obj_hold(anon->an_lock); pg = uvm_pagealloc(NULL, ufi->orig_rvaddr, anon, UVM_FLAG_COLORMATCH | (opg == NULL ? UVM_PGA_ZERO : 0)); if (pg == NULL) { - mutex_obj_free(anon->an_lock); anon->an_lock = NULL; } } else {