OSDN Git Service

drm/ttm: allow drivers to provide their own manager subclasses
authorDave Airlie <airlied@redhat.com>
Tue, 4 Aug 2020 02:56:17 +0000 (12:56 +1000)
committerDave Airlie <airlied@redhat.com>
Thu, 6 Aug 2020 03:12:21 +0000 (13:12 +1000)
This will get removed eventually and all drivers will use this.

Reviewed-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200804025632.3868079-45-airlied@gmail.com
include/drm/ttm/ttm_bo_driver.h

index f97c047..ce15eb0 100644 (file)
@@ -419,7 +419,7 @@ struct ttm_bo_device {
         * access via ttm_manager_type.
         */
        struct ttm_mem_type_manager man_priv[TTM_NUM_MEM_TYPES];
-
+       struct ttm_mem_type_manager *man_drv[TTM_NUM_MEM_TYPES];
        /*
         * Protected by internal locks.
         */
@@ -450,9 +450,18 @@ struct ttm_bo_device {
 static inline struct ttm_mem_type_manager *ttm_manager_type(struct ttm_bo_device *bdev,
                                                            int mem_type)
 {
+       if (bdev->man_drv[mem_type])
+               return bdev->man_drv[mem_type];
        return &bdev->man_priv[mem_type];
 }
 
+static inline void ttm_set_driver_manager(struct ttm_bo_device *bdev,
+                                         int type,
+                                         struct ttm_mem_type_manager *manager)
+{
+       bdev->man_drv[type] = manager;
+}
+
 /**
  * struct ttm_lru_bulk_move_pos
  *