[Intel-gfx] [PATCH 40/66] drm/i915: Track all VMAs per VM
Ben Widawsky
ben at bwidawsk.net
Fri Jun 28 01:30:41 CEST 2013
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 <ben at bwidawsk.net>
---
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
More information about the Intel-gfx
mailing list