[gem] Remove the interrupt handler for retiring requests.
authorEric Anholt <eric@anholt.net>
Fri, 13 Jun 2008 16:53:36 +0000 (09:53 -0700)
committerEric Anholt <eric@anholt.net>
Fri, 13 Jun 2008 16:54:14 +0000 (09:54 -0700)
This was insufficient once we started masking interrupts to only when someone
was waiting for them (and would thus retire requests themselves).  It was
replaced by the retire_timer.

shared-core/i915_dma.c
shared-core/i915_drv.h
shared-core/i915_irq.c

index 7e4de18..667a6ac 100644 (file)
@@ -1077,8 +1077,6 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
        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;
 
 #ifdef __linux__
index 9c9925b..5af9a96 100644 (file)
@@ -300,8 +300,6 @@ typedef struct drm_i915_private {
                 */
                int suspended;
        } mm;
-
-       struct work_struct user_interrupt_task;
 } drm_i915_private_t;
 
 enum intel_chip_family {
@@ -421,7 +419,6 @@ extern int i915_vblank_swap(struct drm_device *dev, void *data,
                            struct drm_file *file_priv);
 extern void i915_user_irq_on(drm_i915_private_t *dev_priv);
 extern void i915_user_irq_off(drm_i915_private_t *dev_priv);
-extern void i915_user_interrupt_handler(struct work_struct *work);
 
 /* i915_mem.c */
 extern int i915_mem_alloc(struct drm_device *dev, void *data,
index 39da814..6daf291 100644 (file)
@@ -435,28 +435,6 @@ u32 i915_get_vblank_counter(struct drm_device *dev, int plane)
        return count;
 }
 
-/**
- * Handler for user interrupts in process context (able to sleep, do VFS
- * operations, etc.
- *
- * If another IRQ comes in while we're in this handler, it will still get put
- * on the queue again to be rerun when we finish.
- */
-void
-i915_user_interrupt_handler(struct work_struct *work)
-{
-       drm_i915_private_t *dev_priv;
-       struct drm_device *dev;
-
-       dev_priv = container_of(work, drm_i915_private_t,
-                               user_interrupt_task);
-       dev = dev_priv->dev;
-
-       mutex_lock(&dev->struct_mutex);
-       i915_gem_retire_requests(dev);
-       mutex_unlock(&dev->struct_mutex);
-}
-
 irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
 {
        struct drm_device *dev = (struct drm_device *) arg;
@@ -514,7 +492,6 @@ irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
                DRM_WAKEUP(&dev_priv->irq_queue);
 #ifdef I915_HAVE_FENCE
                i915_fence_handler(dev);
-               schedule_work(&dev_priv->user_interrupt_task);
 #endif
        }