aboutsummaryrefslogtreecommitdiff
path: root/shared-core/i915_dma.c
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2008-06-06 12:59:52 -0700
committerKeith Packard <keithp@keithp.com>2008-06-06 13:00:47 -0700
commit9f46c6935d154743162c6239903a4a9e443907bc (patch)
tree8212464335d194a7c1f909d2eb20523fbcd6b789 /shared-core/i915_dma.c
parenta708106c77f74f146722fba35eae772fb554ee9a (diff)
[intel-gem] Use timers to retire requests periodically.
Without the user IRQ running constantly, there's no wakeup when the ring empties to go retire requests and free buffers. Use a 1 second timer to make that happen more often.
Diffstat (limited to 'shared-core/i915_dma.c')
-rw-r--r--shared-core/i915_dma.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/shared-core/i915_dma.c b/shared-core/i915_dma.c
index c0ddeae0..f6465bf6 100644
--- a/shared-core/i915_dma.c
+++ b/shared-core/i915_dma.c
@@ -1078,6 +1078,11 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
INIT_LIST_HEAD(&dev_priv->mm.flushing_list);
INIT_LIST_HEAD(&dev_priv->mm.inactive_list);
INIT_LIST_HEAD(&dev_priv->mm.request_list);
+ dev_priv->mm.retire_timer.function = i915_gem_retire_timeout;
+ dev_priv->mm.retire_timer.data = (unsigned long) dev;
+ init_timer_deferrable (&dev_priv->mm.retire_timer);
+ INIT_WORK(&dev_priv->mm.retire_task,
+ i915_gem_retire_handler);
INIT_WORK(&dev_priv->user_interrupt_task,
i915_user_interrupt_handler);
dev_priv->mm.next_gem_seqno = 1;