From owner-svn-src-user@FreeBSD.ORG Mon Apr 8 21:51:31 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id D338FA48; Mon, 8 Apr 2013 21:51:31 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id C52BCE4D; Mon, 8 Apr 2013 21:51:31 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r38LpVBg036350; Mon, 8 Apr 2013 21:51:31 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r38LpU32036343; Mon, 8 Apr 2013 21:51:30 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201304082151.r38LpU32036343@svn.freebsd.org> From: Attilio Rao Date: Mon, 8 Apr 2013 21:51:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r249285 - in user/attilio/vmobj-readlock/sys: powerpc/aim powerpc/booke sparc64/sparc64 vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Apr 2013 21:51:31 -0000 Author: attilio Date: Mon Apr 8 21:51:30 2013 New Revision: 249285 URL: http://svnweb.freebsd.org/changeset/base/249285 Log: Make vm_fault_prefault() acquire only read locks for vm_object. Sponsored by: EMC / Isilon storage division Submitted by: alc Modified: user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea.c user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea64.c user/attilio/vmobj-readlock/sys/powerpc/booke/pmap.c user/attilio/vmobj-readlock/sys/sparc64/sparc64/pmap.c user/attilio/vmobj-readlock/sys/vm/vm_fault.c Modified: user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea.c ============================================================================== --- user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea.c Mon Apr 8 21:15:43 2013 (r249284) +++ user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea.c Mon Apr 8 21:51:30 2013 (r249285) @@ -1149,7 +1149,7 @@ moea_enter_locked(pmap_t pmap, vm_offset rw_assert(&pvh_global_lock, RA_WLOCKED); PMAP_LOCK_ASSERT(pmap, MA_OWNED); if ((m->oflags & (VPO_UNMANAGED | VPO_BUSY)) == 0) - VM_OBJECT_ASSERT_WLOCKED(m->object); + VM_OBJECT_ASSERT_LOCKED(m->object); /* XXX change the pvo head for fake pages */ if ((m->oflags & VPO_UNMANAGED) != 0) { Modified: user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea64.c ============================================================================== --- user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea64.c Mon Apr 8 21:15:43 2013 (r249284) +++ user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea64.c Mon Apr 8 21:51:30 2013 (r249285) @@ -1261,7 +1261,7 @@ moea64_enter(mmu_t mmu, pmap_t pmap, vm_ } if ((m->oflags & (VPO_UNMANAGED | VPO_BUSY)) == 0) - VM_OBJECT_ASSERT_WLOCKED(m->object); + VM_OBJECT_ASSERT_LOCKED(m->object); /* XXX change the pvo head for fake pages */ if ((m->oflags & VPO_UNMANAGED) != 0) { Modified: user/attilio/vmobj-readlock/sys/powerpc/booke/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/powerpc/booke/pmap.c Mon Apr 8 21:15:43 2013 (r249284) +++ user/attilio/vmobj-readlock/sys/powerpc/booke/pmap.c Mon Apr 8 21:51:30 2013 (r249285) @@ -1564,7 +1564,7 @@ mmu_booke_enter_locked(mmu_t mmu, pmap_t ("mmu_booke_enter_locked: user pmap, non user va")); } if ((m->oflags & (VPO_UNMANAGED | VPO_BUSY)) == 0) - VM_OBJECT_ASSERT_WLOCKED(m->object); + VM_OBJECT_ASSERT_LOCKED(m->object); PMAP_LOCK_ASSERT(pmap, MA_OWNED); Modified: user/attilio/vmobj-readlock/sys/sparc64/sparc64/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/sparc64/sparc64/pmap.c Mon Apr 8 21:15:43 2013 (r249284) +++ user/attilio/vmobj-readlock/sys/sparc64/sparc64/pmap.c Mon Apr 8 21:51:30 2013 (r249285) @@ -1495,7 +1495,7 @@ pmap_enter_locked(pmap_t pm, vm_offset_t rw_assert(&tte_list_global_lock, RA_WLOCKED); PMAP_LOCK_ASSERT(pm, MA_OWNED); if ((m->oflags & (VPO_UNMANAGED | VPO_BUSY)) == 0) - VM_OBJECT_ASSERT_WLOCKED(m->object); + VM_OBJECT_ASSERT_LOCKED(m->object); PMAP_STATS_INC(pmap_nenter); pa = VM_PAGE_TO_PHYS(m); Modified: user/attilio/vmobj-readlock/sys/vm/vm_fault.c ============================================================================== --- user/attilio/vmobj-readlock/sys/vm/vm_fault.c Mon Apr 8 21:15:43 2013 (r249284) +++ user/attilio/vmobj-readlock/sys/vm/vm_fault.c Mon Apr 8 21:51:30 2013 (r249285) @@ -1046,28 +1046,28 @@ vm_fault_prefault(pmap_t pmap, vm_offset pindex = ((addr - entry->start) + entry->offset) >> PAGE_SHIFT; lobject = object; - VM_OBJECT_WLOCK(lobject); + VM_OBJECT_RLOCK(lobject); while ((m = vm_page_lookup(lobject, pindex)) == NULL && lobject->type == OBJT_DEFAULT && (backing_object = lobject->backing_object) != NULL) { KASSERT((lobject->backing_object_offset & PAGE_MASK) == 0, ("vm_fault_prefault: unaligned object offset")); pindex += lobject->backing_object_offset >> PAGE_SHIFT; - VM_OBJECT_WLOCK(backing_object); - VM_OBJECT_WUNLOCK(lobject); + VM_OBJECT_RLOCK(backing_object); + VM_OBJECT_RUNLOCK(lobject); lobject = backing_object; } /* * give-up when a page is not in memory */ if (m == NULL) { - VM_OBJECT_WUNLOCK(lobject); + VM_OBJECT_RUNLOCK(lobject); break; } if (m->valid == VM_PAGE_BITS_ALL && (m->flags & PG_FICTITIOUS) == 0) pmap_enter_quick(pmap, addr, m, entry->protection); - VM_OBJECT_WUNLOCK(lobject); + VM_OBJECT_RUNLOCK(lobject); } }