Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 22 Jun 2013 12:50:05 +0000 (UTC)
From:      Attilio Rao <attilio@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r252095 - user/attilio/vmobj-readlock/sys/dev/drm2/i915
Message-ID:  <201306221250.r5MCo538026115@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: attilio
Date: Sat Jun 22 12:50:05 2013
New Revision: 252095
URL: http://svnweb.freebsd.org/changeset/base/252095

Log:
  - Remove an unuseful goto label
  - Fix locking for busy
  
  Sponsored by:	EMC / Isilon storage division

Modified:
  user/attilio/vmobj-readlock/sys/dev/drm2/i915/i915_gem.c

Modified: user/attilio/vmobj-readlock/sys/dev/drm2/i915/i915_gem.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/dev/drm2/i915/i915_gem.c	Sat Jun 22 05:32:45 2013	(r252094)
+++ user/attilio/vmobj-readlock/sys/dev/drm2/i915/i915_gem.c	Sat Jun 22 12:50:05 2013	(r252095)
@@ -1356,9 +1356,8 @@ i915_gem_pager_fault(vm_object_t vm_obj,
 		*mres = NULL;
 	} else
 		oldm = NULL;
-retry:
 	VM_OBJECT_WUNLOCK(vm_obj);
-unlocked_vmobj:
+retry:
 	cause = ret = 0;
 	m = NULL;
 
@@ -1381,6 +1380,8 @@ unlocked_vmobj:
 	if (m != NULL) {
 		if ((m->flags & VPO_BUSY) != 0) {
 			DRM_UNLOCK(dev);
+			vm_page_lock(m);
+			VM_OBJECT_WUNLOCK(vm_obj);
 			vm_page_sleep(m, "915pee");
 			goto retry;
 		}
@@ -1440,7 +1441,6 @@ unlocked_vmobj:
 		vm_page_lock(m);
 		VM_OBJECT_WUNLOCK(vm_obj);
 		vm_page_sleep(m, "915pbs");
-		VM_OBJECT_WLOCK(vm_obj);
 		goto retry;
 	}
 	m->valid = VM_PAGE_BITS_ALL;
@@ -1468,7 +1468,7 @@ out:
 	    -ret, cause);
 	if (ret == -EAGAIN || ret == -EIO || ret == -EINTR) {
 		kern_yield(PRI_USER);
-		goto unlocked_vmobj;
+		goto retry;
 	}
 	VM_OBJECT_WLOCK(vm_obj);
 	vm_object_pip_wakeup(vm_obj);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201306221250.r5MCo538026115>