Commit 77775e24 authored by Maarten Lankhorst's avatar Maarten Lankhorst Committed by Rodrigo Vivi

drm/xe: Add debugfs for dumping GGTT mappings

Adding a debugfs dump of GGTT was useful for some debugging I did,
and easy to add. Might be useful for others too.
Signed-off-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: default avatarMatthew Auld <matthew.auld@intel.com>
Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
parent 50a48cca
...@@ -345,3 +345,16 @@ void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo) ...@@ -345,3 +345,16 @@ void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
xe_ggtt_remove_node(ggtt, &bo->ggtt_node); xe_ggtt_remove_node(ggtt, &bo->ggtt_node);
} }
int xe_ggtt_dump(struct xe_ggtt *ggtt, struct drm_printer *p)
{
int err;
err = mutex_lock_interruptible(&ggtt->lock);
if (err)
return err;
drm_mm_print(&ggtt->mm, p);
mutex_unlock(&ggtt->lock);
return err;
}
...@@ -8,6 +8,8 @@ ...@@ -8,6 +8,8 @@
#include "xe_ggtt_types.h" #include "xe_ggtt_types.h"
struct drm_printer;
u64 xe_ggtt_pte_encode(struct xe_bo *bo, u64 bo_offset); u64 xe_ggtt_pte_encode(struct xe_bo *bo, u64 bo_offset);
void xe_ggtt_set_pte(struct xe_ggtt *ggtt, u64 addr, u64 pte); void xe_ggtt_set_pte(struct xe_ggtt *ggtt, u64 addr, u64 pte);
void xe_ggtt_invalidate(struct xe_gt *gt); void xe_ggtt_invalidate(struct xe_gt *gt);
...@@ -26,4 +28,6 @@ int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo); ...@@ -26,4 +28,6 @@ int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
int xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo, u64 ofs); int xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo, u64 ofs);
void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo); void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
int xe_ggtt_dump(struct xe_ggtt *ggtt, struct drm_printer *p);
#endif #endif
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "xe_device.h" #include "xe_device.h"
#include "xe_force_wake.h" #include "xe_force_wake.h"
#include "xe_ggtt.h"
#include "xe_gt.h" #include "xe_gt.h"
#include "xe_gt_debugfs.h" #include "xe_gt_debugfs.h"
#include "xe_gt_mcr.h" #include "xe_gt_mcr.h"
...@@ -88,12 +89,21 @@ static int steering(struct seq_file *m, void *data) ...@@ -88,12 +89,21 @@ static int steering(struct seq_file *m, void *data)
return 0; return 0;
} }
static int ggtt(struct seq_file *m, void *data)
{
struct xe_gt *gt = node_to_gt(m->private);
struct drm_printer p = drm_seq_file_printer(m);
return xe_ggtt_dump(gt->mem.ggtt, &p);
}
static const struct drm_info_list debugfs_list[] = { static const struct drm_info_list debugfs_list[] = {
{"hw_engines", hw_engines, 0}, {"hw_engines", hw_engines, 0},
{"force_reset", force_reset, 0}, {"force_reset", force_reset, 0},
{"sa_info", sa_info, 0}, {"sa_info", sa_info, 0},
{"topology", topology, 0}, {"topology", topology, 0},
{"steering", steering, 0}, {"steering", steering, 0},
{"ggtt", ggtt, 0},
}; };
void xe_gt_debugfs_register(struct xe_gt *gt) void xe_gt_debugfs_register(struct xe_gt *gt)
......
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