]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/gpu/drm/via/via_mm.c
drm/via: clean up reclaim_buffers
[karo-tx-linux.git] / drivers / gpu / drm / via / via_mm.c
index a3574d09a07d0c95066f3010a40998f048f728f8..acfcb358e7b740eb7548595053183351d461984c 100644 (file)
@@ -215,14 +215,20 @@ void via_reclaim_buffers_locked(struct drm_device *dev,
        struct via_file_private *file_priv = file->driver_priv;
        struct via_memblock *entry, *next;
 
+       if (!(file->minor->master && file->master->lock.hw_lock))
+               return;
+
+       drm_idlelock_take(&file->master->lock);
+
        mutex_lock(&dev->struct_mutex);
        if (list_empty(&file_priv->obj_list)) {
                mutex_unlock(&dev->struct_mutex);
+               drm_idlelock_release(&file->master->lock);
+
                return;
        }
 
-       if (dev->driver->dma_quiescent)
-               dev->driver->dma_quiescent(dev);
+       via_driver_dma_quiescent(dev);
 
        list_for_each_entry_safe(entry, next, &file_priv->obj_list,
                                 owner_list) {
@@ -231,5 +237,8 @@ void via_reclaim_buffers_locked(struct drm_device *dev,
                kfree(entry);
        }
        mutex_unlock(&dev->struct_mutex);
+
+       drm_idlelock_release(&file->master->lock);
+
        return;
 }