mirror of https://gitee.com/openkylin/linux.git
drm/i915: Handle inactivating objects for all VMAs
This came from a patch called, "drm/i915: Move active to vma" When moving an object to the inactive list, we do it for all VMs for which the object is bound. The primary difference from that patch is this time around we don't not track 'active' per vma, but rather by object. Therefore, we only need one unref. Signed-off-by: Ben Widawsky <ben@bwidawsk.net> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
c39538a88d
commit
feb822cfc2
|
@ -2008,13 +2008,17 @@ static void
|
|||
i915_gem_object_move_to_inactive(struct drm_i915_gem_object *obj)
|
||||
{
|
||||
struct drm_i915_private *dev_priv = obj->base.dev->dev_private;
|
||||
struct i915_address_space *ggtt_vm = &dev_priv->gtt.base;
|
||||
struct i915_vma *vma = i915_gem_obj_to_vma(obj, ggtt_vm);
|
||||
struct i915_address_space *vm;
|
||||
struct i915_vma *vma;
|
||||
|
||||
BUG_ON(obj->base.write_domain & ~I915_GEM_GPU_DOMAINS);
|
||||
BUG_ON(!obj->active);
|
||||
|
||||
list_move_tail(&vma->mm_list, &ggtt_vm->inactive_list);
|
||||
list_for_each_entry(vm, &dev_priv->vm_list, global_link) {
|
||||
vma = i915_gem_obj_to_vma(obj, vm);
|
||||
if (vma && !list_empty(&vma->mm_list))
|
||||
list_move_tail(&vma->mm_list, &vm->inactive_list);
|
||||
}
|
||||
|
||||
list_del_init(&obj->ring_list);
|
||||
obj->ring = NULL;
|
||||
|
|
Loading…
Reference in New Issue