Commit 70b5ffb3 authored by Andi Shyti's avatar Andi Shyti

drm/i915/gt: Create per-gt debugfs files

To support multi-GT configurations, we need to generate
independent debug files for each GT.

To achieve this create a separate directory for each GT under the
debugfs directory. For instance, in a system with two GTs, the
debugfs structure would look like this:

/sys/kernel/debug/dri
                  └── 0
                      ├── gt0
                      │   ├── drpc
                      │   ├── engines
                      │   ├── forcewake
                      │   ├── frequency
                      │   └── rps_boost
                      └── gt1
                      :   ├── drpc
                      :   ├── engines
                      :   ├── forcewake
                          ├── frequency
                          └── rps_boost
Signed-off-by: default avatarAndi Shyti <andi.shyti@linux.intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: default avatarRadhakrishna Sripada <radhakrishna.sripada@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230318203616.183765-2-andi.shyti@linux.intel.com
parent 02abecde
...@@ -83,11 +83,13 @@ static void gt_debugfs_register(struct intel_gt *gt, struct dentry *root) ...@@ -83,11 +83,13 @@ static void gt_debugfs_register(struct intel_gt *gt, struct dentry *root)
void intel_gt_debugfs_register(struct intel_gt *gt) void intel_gt_debugfs_register(struct intel_gt *gt)
{ {
struct dentry *root; struct dentry *root;
char gtname[4];
if (!gt->i915->drm.primary->debugfs_root) if (!gt->i915->drm.primary->debugfs_root)
return; return;
root = debugfs_create_dir("gt", gt->i915->drm.primary->debugfs_root); snprintf(gtname, sizeof(gtname), "gt%u", gt->info.id);
root = debugfs_create_dir(gtname, gt->i915->drm.primary->debugfs_root);
if (IS_ERR(root)) if (IS_ERR(root))
return; return;
......
...@@ -42,6 +42,8 @@ struct intel_guc { ...@@ -42,6 +42,8 @@ struct intel_guc {
/** @capture: the error-state-capture module's data and objects */ /** @capture: the error-state-capture module's data and objects */
struct intel_guc_state_capture *capture; struct intel_guc_state_capture *capture;
struct dentry *dbgfs_node;
/** @sched_engine: Global engine used to submit requests to GuC */ /** @sched_engine: Global engine used to submit requests to GuC */
struct i915_sched_engine *sched_engine; struct i915_sched_engine *sched_engine;
/** /**
......
...@@ -542,8 +542,11 @@ static int guc_log_relay_create(struct intel_guc_log *log) ...@@ -542,8 +542,11 @@ static int guc_log_relay_create(struct intel_guc_log *log)
*/ */
n_subbufs = 8; n_subbufs = 8;
if (!guc->dbgfs_node)
return -ENOENT;
guc_log_relay_chan = relay_open("guc_log", guc_log_relay_chan = relay_open("guc_log",
i915->drm.primary->debugfs_root, guc->dbgfs_node,
subbuf_size, n_subbufs, subbuf_size, n_subbufs,
&relay_callbacks, i915); &relay_callbacks, i915);
if (!guc_log_relay_chan) { if (!guc_log_relay_chan) {
......
...@@ -54,6 +54,8 @@ void intel_uc_debugfs_register(struct intel_uc *uc, struct dentry *gt_root) ...@@ -54,6 +54,8 @@ void intel_uc_debugfs_register(struct intel_uc *uc, struct dentry *gt_root)
if (IS_ERR(root)) if (IS_ERR(root))
return; return;
uc->guc.dbgfs_node = root;
intel_gt_debugfs_register_files(root, files, ARRAY_SIZE(files), uc); intel_gt_debugfs_register_files(root, files, ARRAY_SIZE(files), uc);
intel_guc_debugfs_register(&uc->guc, root); intel_guc_debugfs_register(&uc->guc, root);
......
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