Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/external/bsd/drm2/dist/drm/i915 Ensure we call uvmfault_...
details: https://anonhg.NetBSD.org/src/rev/50c8d7b4fca6
branches: trunk
changeset: 796434:50c8d7b4fca6
user: riastradh <riastradh%NetBSD.org@localhost>
date: Tue Jun 03 15:06:36 2014 +0000
description:
Ensure we call uvmfault_unlockall on every exit from i915_gem_fault.
diffstat:
sys/external/bsd/drm2/dist/drm/i915/i915_gem.c | 9 +++------
1 files changed, 3 insertions(+), 6 deletions(-)
diffs (45 lines):
diff -r 6b6cf4300237 -r 50c8d7b4fca6 sys/external/bsd/drm2/dist/drm/i915/i915_gem.c
--- a/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c Tue Jun 03 14:59:30 2014 +0000
+++ b/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c Tue Jun 03 15:06:36 2014 +0000
@@ -1564,6 +1564,9 @@
unlock:
mutex_unlock(&dev->struct_mutex);
out:
+ uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap, uobj);
+ if (ret == -ERESTART)
+ uvm_wait("i915flt");
return ret;
}
@@ -1581,7 +1584,6 @@
paddr_t gtt_paddr)
{
struct vm_map_entry *entry = ufi->entry;
- struct uvm_object *uobj = entry->object.uvm_obj;
vaddr_t curr_va;
off_t curr_offset;
paddr_t paddr;
@@ -1599,7 +1601,6 @@
if (UVM_ET_ISCOPYONWRITE(entry)) {
UVMHIST_LOG(maphist, "<- failed -- COW entry (etype=0x%x)",
entry->etype, 0,0,0);
- uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap, uobj);
return(EIO);
}
@@ -1647,15 +1648,11 @@
* XXX case.
*/
pmap_update(ufi->orig_map->pmap); /* sync what we have so far */
- uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap,
- uobj);
- uvm_wait("i915flt");
return (ERESTART);
}
}
pmap_update(ufi->orig_map->pmap);
- uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap, uobj);
return (retval);
}
#else
Home |
Main Index |
Thread Index |
Old Index