summaryrefslogtreecommitdiff
path: root/shared-core
diff options
context:
space:
mode:
Diffstat (limited to 'shared-core')
-rw-r--r--shared-core/i915_dma.c2
-rw-r--r--shared-core/i915_drv.h9
2 files changed, 9 insertions, 2 deletions
diff --git a/shared-core/i915_dma.c b/shared-core/i915_dma.c
index 0601b89c..24f361e0 100644
--- a/shared-core/i915_dma.c
+++ b/shared-core/i915_dma.c
@@ -1052,6 +1052,7 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
_DRM_KERNEL | _DRM_DRIVER, &dev_priv->mmio_map);
INIT_LIST_HEAD(&dev_priv->mm.gtt_lru);
+ INIT_LIST_HEAD(&dev_priv->mm.execution_list);
#ifdef __linux__
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25)
@@ -1093,6 +1094,7 @@ void i915_driver_lastclose(struct drm_device * dev)
dev_priv->val_bufs = NULL;
}
#endif
+ i915_gem_lastclose(dev);
if (drm_getsarea(dev) && dev_priv->sarea_priv)
i915_do_cleanup_pageflip(dev);
diff --git a/shared-core/i915_drv.h b/shared-core/i915_drv.h
index 96257ab6..413fca89 100644
--- a/shared-core/i915_drv.h
+++ b/shared-core/i915_drv.h
@@ -244,7 +244,12 @@ typedef struct drm_i915_private {
struct {
struct drm_memrange gtt_space;
- /** LRU List of unpinned objects in the GTT. */
+ /**
+ * List of objects currently involved in rendering from the
+ * ringbuffer.
+ */
+ struct list_head execution_list;
+ /** LRU List of non-executing objects still in the GTT. */
struct list_head gtt_lru;
} mm;
} drm_i915_private_t;
@@ -386,7 +391,7 @@ void i915_gem_free_object(struct drm_gem_object *obj);
int i915_gem_set_domain_ioctl (struct drm_gem_object *obj,
uint32_t read_domains,
uint32_t write_domain);
-
+void i915_gem_lastclose(struct drm_device *dev);
#endif
#ifdef __linux__