]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - include/drm/ttm/ttm_bo_driver.h
Merge tag 'drm-for-v4.11-less-shouty' of git://people.freedesktop.org/~airlied/linux
[karo-tx-linux.git] / include / drm / ttm / ttm_bo_driver.h
index feecf33a1212279d19eee8d0dfd266be3ed99351..8145773c582cd407cf53be70bb8434f4a25dbe30 100644 (file)
@@ -42,6 +42,8 @@
 #include <linux/spinlock.h>
 #include <linux/reservation.h>
 
+#define TTM_MAX_BO_PRIORITY    16U
+
 struct ttm_backend_func {
        /**
         * struct ttm_backend_func member bind
@@ -298,7 +300,7 @@ struct ttm_mem_type_manager {
         * Protected by the global->lru_lock.
         */
 
-       struct list_head lru;
+       struct list_head lru[TTM_MAX_BO_PRIORITY];
 
        /*
         * Protected by @move_lock.
@@ -431,9 +433,15 @@ struct ttm_bo_driver {
        int (*verify_access)(struct ttm_buffer_object *bo,
                             struct file *filp);
 
-       /* hook to notify driver about a driver move so it
-        * can do tiling things */
+       /**
+        * Hook to notify driver about a driver move so it
+        * can do tiling things and book-keeping.
+        *
+        * @evict: whether this move is evicting the buffer from the graphics
+        * address space
+        */
        void (*move_notify)(struct ttm_buffer_object *bo,
+                           bool evict,
                            struct ttm_mem_reg *new_mem);
        /* notify the driver we are taking a fault on this BO
         * and have reserved it */
@@ -454,18 +462,6 @@ struct ttm_bo_driver {
                              struct ttm_mem_reg *mem);
        void (*io_mem_free)(struct ttm_bo_device *bdev,
                            struct ttm_mem_reg *mem);
-
-       /**
-        * Optional driver callback for when BO is removed from the LRU.
-        * Called with LRU lock held immediately before the removal.
-        */
-       void (*lru_removal)(struct ttm_buffer_object *bo);
-
-       /**
-        * Return the list_head after which a BO should be inserted in the LRU.
-        */
-       struct list_head *(*lru_tail)(struct ttm_buffer_object *bo);
-       struct list_head *(*swap_lru_tail)(struct ttm_buffer_object *bo);
 };
 
 /**
@@ -512,7 +508,7 @@ struct ttm_bo_global {
        /**
         * Protected by the lru_lock.
         */
-       struct list_head swap_lru;
+       struct list_head swap_lru[TTM_MAX_BO_PRIORITY];
 
        /**
         * Internal protection.
@@ -780,9 +776,6 @@ extern void ttm_mem_io_unlock(struct ttm_mem_type_manager *man);
 extern void ttm_bo_del_sub_from_lru(struct ttm_buffer_object *bo);
 extern void ttm_bo_add_to_lru(struct ttm_buffer_object *bo);
 
-struct list_head *ttm_bo_default_lru_tail(struct ttm_buffer_object *bo);
-struct list_head *ttm_bo_default_swap_lru_tail(struct ttm_buffer_object *bo);
-
 /**
  * __ttm_bo_reserve:
  *