drm/i915/gem: Drop cached obj->bind_count
We cached the number of vma bound to the object in order to speed up shrinker decisions. This has been superseded by being more proactive in removing objects we cannot shrink from the shrinker lists, and so we can drop the clumsy attempt at atomically counting the bind count and comparing it to the number of pinned mappings of the object. This will only get more clumsier with asynchronous binding and unbinding. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Matthew Auld <matthew.auld@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200401223924.16667-1-chris@chris-wilson.co.uk
This commit is contained in:
@@ -118,7 +118,7 @@ int i915_gem_object_unbind(struct drm_i915_gem_object *obj,
|
||||
struct i915_vma *vma;
|
||||
int ret;
|
||||
|
||||
if (!atomic_read(&obj->bind_count))
|
||||
if (list_empty(&obj->vma.list))
|
||||
return 0;
|
||||
|
||||
/*
|
||||
@@ -141,6 +141,11 @@ try_again:
|
||||
if (!i915_vma_is_bound(vma, I915_VMA_BIND_MASK))
|
||||
continue;
|
||||
|
||||
if (flags & I915_GEM_OBJECT_UNBIND_TEST) {
|
||||
ret = -EBUSY;
|
||||
break;
|
||||
}
|
||||
|
||||
ret = -EAGAIN;
|
||||
if (!i915_vm_tryopen(vm))
|
||||
break;
|
||||
|
Reference in New Issue
Block a user