svn commit: r252095 - user/attilio/vmobj-readlock/sys/dev/drm2/i915

Attilio Rao attilio at FreeBSD.org
Sat Jun 22 12:50:05 UTC 2013


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);


More information about the svn-src-user mailing list