Commit a2ff1e81 authored by Dave Airlie's avatar Dave Airlie

drm/ttm: export memory type debug entrypoint.

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: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarBen Skeggs <bskeggs@redhat.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200804025632.3868079-9-airlied@gmail.com
parent 5977ffea
...@@ -77,26 +77,26 @@ static inline int ttm_mem_type_from_place(const struct ttm_place *place, ...@@ -77,26 +77,26 @@ static inline int ttm_mem_type_from_place(const struct ttm_place *place,
return 0; return 0;
} }
static void ttm_mem_type_debug(struct ttm_bo_device *bdev, struct drm_printer *p, void ttm_mem_type_manager_debug(struct ttm_mem_type_manager *man,
int mem_type) 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, " has_type: %d\n", man->has_type);
drm_printf(p, " use_type: %d\n", man->use_type); drm_printf(p, " use_type: %d\n", man->use_type);
drm_printf(p, " use_tt: %d\n", man->use_tt); drm_printf(p, " use_tt: %d\n", man->use_tt);
drm_printf(p, " size: %llu\n", man->size); drm_printf(p, " size: %llu\n", man->size);
drm_printf(p, " available_caching: 0x%08X\n", man->available_caching); drm_printf(p, " available_caching: 0x%08X\n", man->available_caching);
drm_printf(p, " default_caching: 0x%08X\n", man->default_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); (*man->func->debug)(man, p);
} }
EXPORT_SYMBOL(ttm_mem_type_manager_debug);
static void ttm_bo_mem_space_debug(struct ttm_buffer_object *bo, static void ttm_bo_mem_space_debug(struct ttm_buffer_object *bo,
struct ttm_placement *placement) struct ttm_placement *placement)
{ {
struct drm_printer p = drm_debug_printer(TTM_PFX); struct drm_printer p = drm_debug_printer(TTM_PFX);
int i, ret, mem_type; int i, ret, mem_type;
struct ttm_mem_type_manager *man;
drm_printf(&p, "No space for %p (%lu pages, %luK, %luM)\n", drm_printf(&p, "No space for %p (%lu pages, %luK, %luM)\n",
bo, bo->mem.num_pages, bo->mem.size >> 10, 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, ...@@ -108,7 +108,8 @@ static void ttm_bo_mem_space_debug(struct ttm_buffer_object *bo,
return; return;
drm_printf(&p, " placement[%d]=0x%08X (%d)\n", drm_printf(&p, " placement[%d]=0x%08X (%d)\n",
i, placement->placement[i].flags, mem_type); 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);
} }
} }
......
...@@ -806,4 +806,12 @@ pgprot_t ttm_io_prot(uint32_t caching_flags, pgprot_t tmp); ...@@ -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; 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 #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment