From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Widawsky Subject: [PATCH 40/66] drm/i915: Track all VMAs per VM Date: Thu, 27 Jun 2013 16:30:41 -0700 Message-ID: <1372375867-1003-41-git-send-email-ben@bwidawsk.net> References: <1372375867-1003-1-git-send-email-ben@bwidawsk.net> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from shiva.localdomain (unknown [209.20.75.48]) by gabe.freedesktop.org (Postfix) with ESMTP id BD3BAE5C48 for ; Thu, 27 Jun 2013 16:28:31 -0700 (PDT) In-Reply-To: <1372375867-1003-1-git-send-email-ben@bwidawsk.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Intel GFX Cc: Ben Widawsky List-Id: intel-gfx@lists.freedesktop.org This allows us to be aware of all the VMAs leftover and teardown, and is useful for debug. I suspect it will prove even more useful later. Signed-off-by: Ben Widawsky --- drivers/gpu/drm/i915/i915_drv.h | 2 ++ drivers/gpu/drm/i915/i915_gem.c | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 247a124..0bc4251 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -446,6 +446,7 @@ struct i915_address_space { struct drm_mm mm; struct drm_device *dev; struct list_head global_link; + struct list_head vma_list; unsigned long start; /* Start offset always 0 for dri2 */ size_t total; /* size addr space maps (ex. 2GB for ggtt) */ @@ -556,6 +557,7 @@ struct i915_vma { struct list_head mm_list; struct list_head vma_link; /* Link in the object's VMA list */ + struct list_head per_vm_link; /* Link in the VM's VMA list */ }; struct i915_ctx_hang_stats { diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index a3e8c26..5c0ad6a 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -4112,14 +4112,17 @@ struct i915_vma *i915_gem_vma_create(struct drm_i915_gem_object *obj, INIT_LIST_HEAD(&vma->vma_link); INIT_LIST_HEAD(&vma->mm_list); + INIT_LIST_HEAD(&vma->per_vm_link); vma->vm = vm; vma->obj = obj; + list_add_tail(&vma->per_vm_link, &vm->vma_list); return vma; } void i915_gem_vma_destroy(struct i915_vma *vma) { + list_del(&vma->per_vm_link); WARN_ON(vma->node.allocated); kfree(vma); } @@ -4473,6 +4476,7 @@ static void i915_init_vm(struct drm_i915_private *dev_priv, INIT_LIST_HEAD(&vm->active_list); INIT_LIST_HEAD(&vm->inactive_list); INIT_LIST_HEAD(&vm->global_link); + INIT_LIST_HEAD(&vm->vma_list); list_add(&vm->global_link, &dev_priv->vm_list); } -- 1.8.3.1