drm/ttm: export memory type debug entrypoint.
authorDave Airlie <airlied@redhat.com>
Tue, 4 Aug 2020 02:55:41 +0000 (12:55 +1000)
committerDave Airlie <airlied@redhat.com>
Thu, 6 Aug 2020 02:16:39 +0000 (12:16 +1000)
As suggested on review, just export the memory type debug for
drivers to use, while also making the debug callback optional
(don't need to test for system as it won't init it).

rename it to be more consistent with object name for now.
(we may rename all the objects later.)

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-9-airlied@gmail.com
drivers/gpu/drm/ttm/ttm_bo.c
include/drm/ttm/ttm_bo_driver.h

index c5771a43d8ecdfe65541ca5b9b8201077e9630c6..8cd012f6bba20cb132ee39462dd058fd9cea01ff 100644 (file)
@@ -77,26 +77,26 @@ static inline int ttm_mem_type_from_place(const struct ttm_place *place,
        return 0;
 }
 
-static void ttm_mem_type_debug(struct ttm_bo_device *bdev, struct drm_printer *p,
-                              int mem_type)
+void ttm_mem_type_manager_debug(struct ttm_mem_type_manager *man,
+                               struct drm_printer *p)
 {
-       struct ttm_mem_type_manager *man = &bdev->man[mem_type];
-
        drm_printf(p, "    has_type: %d\n", man->has_type);
        drm_printf(p, "    use_type: %d\n", man->use_type);
        drm_printf(p, "    use_tt: %d\n", man->use_tt);
        drm_printf(p, "    size: %llu\n", man->size);
        drm_printf(p, "    available_caching: 0x%08X\n", man->available_caching);
        drm_printf(p, "    default_caching: 0x%08X\n", man->default_caching);
-       if (mem_type != TTM_PL_SYSTEM)
+       if (man->func && man->func->debug)
                (*man->func->debug)(man, p);
 }
+EXPORT_SYMBOL(ttm_mem_type_manager_debug);
 
 static void ttm_bo_mem_space_debug(struct ttm_buffer_object *bo,
                                        struct ttm_placement *placement)
 {
        struct drm_printer p = drm_debug_printer(TTM_PFX);
        int i, ret, mem_type;
+       struct ttm_mem_type_manager *man;
 
        drm_printf(&p, "No space for %p (%lu pages, %luK, %luM)\n",
                   bo, bo->mem.num_pages, bo->mem.size >> 10,
@@ -108,7 +108,8 @@ static void ttm_bo_mem_space_debug(struct ttm_buffer_object *bo,
                        return;
                drm_printf(&p, "  placement[%d]=0x%08X (%d)\n",
                           i, placement->placement[i].flags, mem_type);
-               ttm_mem_type_debug(bo->bdev, &p, mem_type);
+               man = &bo->bdev->man[mem_type];
+               ttm_mem_type_manager_debug(man, &p);
        }
 }
 
index 049ebf85712fc30de489341d7597069cc833e904..ee11ae621c3b3ee7869e2669c962e8f8dd64be37 100644 (file)
@@ -806,4 +806,12 @@ pgprot_t ttm_io_prot(uint32_t caching_flags, pgprot_t tmp);
 
 extern const struct ttm_mem_type_manager_func ttm_bo_manager_func;
 
+/**
+ * ttm_mem_type_manager_debug
+ *
+ * @man: manager type to dump.
+ * @p: printer to use for debug.
+ */
+void ttm_mem_type_manager_debug(struct ttm_mem_type_manager *man,
+                               struct drm_printer *p);
 #endif