|
@@ -35,11 +35,14 @@
|
|
|
#include <ttm/ttm_module.h>
|
|
|
#include <drm/drmP.h>
|
|
|
#include <drm/radeon_drm.h>
|
|
|
+#include <linux/seq_file.h>
|
|
|
#include "radeon_reg.h"
|
|
|
#include "radeon.h"
|
|
|
|
|
|
#define DRM_FILE_PAGE_OFFSET (0x100000000ULL >> PAGE_SHIFT)
|
|
|
|
|
|
+static int radeon_ttm_debugfs_init(struct radeon_device *rdev);
|
|
|
+
|
|
|
static struct radeon_device *radeon_get_rdev(struct ttm_bo_device *bdev)
|
|
|
{
|
|
|
struct radeon_mman *mman;
|
|
@@ -504,6 +507,12 @@ int radeon_ttm_init(struct radeon_device *rdev)
|
|
|
if (unlikely(rdev->mman.bdev.dev_mapping == NULL)) {
|
|
|
rdev->mman.bdev.dev_mapping = rdev->ddev->dev_mapping;
|
|
|
}
|
|
|
+
|
|
|
+ r = radeon_ttm_debugfs_init(rdev);
|
|
|
+ if (r) {
|
|
|
+ DRM_ERROR("Failed to init debugfs\n");
|
|
|
+ return r;
|
|
|
+ }
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -678,3 +687,50 @@ struct ttm_backend *radeon_ttm_backend_create(struct radeon_device *rdev)
|
|
|
gtt->bound = false;
|
|
|
return >t->backend;
|
|
|
}
|
|
|
+
|
|
|
+#define RADEON_DEBUGFS_MEM_TYPES 2
|
|
|
+
|
|
|
+static struct drm_info_list radeon_mem_types_list[RADEON_DEBUGFS_MEM_TYPES];
|
|
|
+static char radeon_mem_types_names[RADEON_DEBUGFS_MEM_TYPES][32];
|
|
|
+
|
|
|
+#if defined(CONFIG_DEBUG_FS)
|
|
|
+static int radeon_mm_dump_table(struct seq_file *m, void *data)
|
|
|
+{
|
|
|
+ struct drm_info_node *node = (struct drm_info_node *)m->private;
|
|
|
+ struct drm_mm *mm = (struct drm_mm *)node->info_ent->data;
|
|
|
+ struct drm_device *dev = node->minor->dev;
|
|
|
+ struct radeon_device *rdev = dev->dev_private;
|
|
|
+ int ret;
|
|
|
+ struct ttm_bo_global *glob = rdev->mman.bdev.glob;
|
|
|
+
|
|
|
+ spin_lock(&glob->lru_lock);
|
|
|
+ ret = drm_mm_dump_table(m, mm);
|
|
|
+ spin_unlock(&glob->lru_lock);
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
+static int radeon_ttm_debugfs_init(struct radeon_device *rdev)
|
|
|
+{
|
|
|
+ unsigned i;
|
|
|
+
|
|
|
+#if defined(CONFIG_DEBUG_FS)
|
|
|
+ for (i = 0; i < RADEON_DEBUGFS_MEM_TYPES; i++) {
|
|
|
+ if (i == 0)
|
|
|
+ sprintf(radeon_mem_types_names[i], "radeon_vram_mm");
|
|
|
+ else
|
|
|
+ sprintf(radeon_mem_types_names[i], "radeon_gtt_mm");
|
|
|
+ radeon_mem_types_list[i].name = radeon_mem_types_names[i];
|
|
|
+ radeon_mem_types_list[i].show = &radeon_mm_dump_table;
|
|
|
+ radeon_mem_types_list[i].driver_features = 0;
|
|
|
+ if (i == 0)
|
|
|
+ radeon_mem_types_list[i].data = &rdev->mman.bdev.man[TTM_PL_VRAM].manager;
|
|
|
+ else
|
|
|
+ radeon_mem_types_list[i].data = &rdev->mman.bdev.man[TTM_PL_TT].manager;
|
|
|
+
|
|
|
+ }
|
|
|
+ return radeon_debugfs_add_files(rdev, radeon_mem_types_list, RADEON_DEBUGFS_MEM_TYPES);
|
|
|
+
|
|
|
+#endif
|
|
|
+ return 0;
|
|
|
+}
|