drm/i915/gt: move remaining debugfs interfaces into gt
authorAndi Shyti <andi.shyti@linux.intel.com>
Tue, 12 Oct 2021 22:17:38 +0000 (00:17 +0200)
committerLucas De Marchi <lucas.demarchi@intel.com>
Fri, 15 Oct 2021 04:47:49 +0000 (21:47 -0700)
The following interfaces:

  i915_wedged
  i915_forcewake_user

are dependent on gt values. Put them inside gt/ and drop the
"i915_" prefix name. This would be the new structure:

  dri/0/gt
  |
  +-- forcewake_user
  |
  \-- reset

For backwards compatibility with existing igt (and the slight
semantic difference between operating on the i915 abi entry
points and the deep gt info):

  dri/0
  |
  +-- i915_wedged
  |
  \-- i915_forcewake_user

remain at the top level.

Signed-off-by: Andi Shyti <andi.shyti@linux.intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20211012221738.16029-1-andi@etezian.org
drivers/gpu/drm/i915/gt/intel_gt_debugfs.c
drivers/gpu/drm/i915/gt/intel_gt_debugfs.h
drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.c
drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.h
drivers/gpu/drm/i915/i915_debugfs.c

index 1fe19ccd27942900488ad449b321ebd8f201625c..f103664b71d44ef61188ade99e1b0e9b7b8c8bf5 100644 (file)
 #include "pxp/intel_pxp_debugfs.h"
 #include "uc/intel_uc_debugfs.h"
 
+int intel_gt_debugfs_reset_show(struct intel_gt *gt, u64 *val)
+{
+       int ret = intel_gt_terminally_wedged(gt);
+
+       switch (ret) {
+       case -EIO:
+               *val = 1;
+               return 0;
+       case 0:
+               *val = 0;
+               return 0;
+       default:
+               return ret;
+       }
+}
+
+int intel_gt_debugfs_reset_store(struct intel_gt *gt, u64 val)
+{
+       /* Flush any previous reset before applying for a new one */
+       wait_event(gt->reset.queue,
+                  !test_bit(I915_RESET_BACKOFF, &gt->reset.flags));
+
+       intel_gt_handle_error(gt, val, I915_ERROR_CAPTURE,
+                             "Manually reset engine mask to %llx", val);
+       return 0;
+}
+
+/*
+ * keep the interface clean where the first parameter
+ * is a 'struct intel_gt *' instead of 'void *'
+ */
+static int __intel_gt_debugfs_reset_show(void *data, u64 *val)
+{
+       return intel_gt_debugfs_reset_show(data, val);
+}
+
+static int __intel_gt_debugfs_reset_store(void *data, u64 val)
+{
+       return intel_gt_debugfs_reset_store(data, val);
+}
+
+DEFINE_SIMPLE_ATTRIBUTE(reset_fops, __intel_gt_debugfs_reset_show,
+                       __intel_gt_debugfs_reset_store, "%llu\n");
+
+static void gt_debugfs_register(struct intel_gt *gt, struct dentry *root)
+{
+       static const struct intel_gt_debugfs_file files[] = {
+               { "reset", &reset_fops, NULL },
+       };
+
+       intel_gt_debugfs_register_files(root, files, ARRAY_SIZE(files), gt);
+}
+
 void intel_gt_debugfs_register(struct intel_gt *gt)
 {
        struct dentry *root;
@@ -24,6 +77,8 @@ void intel_gt_debugfs_register(struct intel_gt *gt)
        if (IS_ERR(root))
                return;
 
+       gt_debugfs_register(gt, root);
+
        intel_gt_engines_debugfs_register(gt, root);
        intel_gt_pm_debugfs_register(gt, root);
        intel_sseu_debugfs_register(gt, root);
index 8b6fca09897cec194e11b3480fe94372ea526caf..e307ceb990313354023fa0b1252bcdfc9ce22cf3 100644 (file)
@@ -35,4 +35,8 @@ void intel_gt_debugfs_register_files(struct dentry *root,
                                     const struct intel_gt_debugfs_file *files,
                                     unsigned long count, void *data);
 
+/* functions that need to be accessed by the upper level non-gt interfaces */
+int intel_gt_debugfs_reset_show(struct intel_gt *gt, u64 *val);
+int intel_gt_debugfs_reset_store(struct intel_gt *gt, u64 val);
+
 #endif /* INTEL_GT_DEBUGFS_H */
index 5f84ad6026423dc95b002648e2b0f7f340ae4902..0bc1454f38dd3a36e11046ec9bef71b9b6f3b4ea 100644 (file)
 #include "intel_sideband.h"
 #include "intel_uncore.h"
 
+int intel_gt_pm_debugfs_forcewake_user_open(struct intel_gt *gt)
+{
+       atomic_inc(&gt->user_wakeref);
+       intel_gt_pm_get(gt);
+       if (GRAPHICS_VER(gt->i915) >= 6)
+               intel_uncore_forcewake_user_get(gt->uncore);
+
+       return 0;
+}
+
+int intel_gt_pm_debugfs_forcewake_user_release(struct intel_gt *gt)
+{
+       if (GRAPHICS_VER(gt->i915) >= 6)
+               intel_uncore_forcewake_user_put(gt->uncore);
+       intel_gt_pm_put(gt);
+       atomic_dec(&gt->user_wakeref);
+
+       return 0;
+}
+
+static int forcewake_user_open(struct inode *inode, struct file *file)
+{
+       struct intel_gt *gt = inode->i_private;
+
+       return intel_gt_pm_debugfs_forcewake_user_open(gt);
+}
+
+static int forcewake_user_release(struct inode *inode, struct file *file)
+{
+       struct intel_gt *gt = inode->i_private;
+
+       return intel_gt_pm_debugfs_forcewake_user_release(gt);
+}
+
+static const struct file_operations forcewake_user_fops = {
+       .owner = THIS_MODULE,
+       .open = forcewake_user_open,
+       .release = forcewake_user_release,
+};
+
 static int fw_domains_show(struct seq_file *m, void *data)
 {
        struct intel_gt *gt = m->private;
@@ -627,6 +667,7 @@ void intel_gt_pm_debugfs_register(struct intel_gt *gt, struct dentry *root)
                { "drpc", &drpc_fops, NULL },
                { "frequency", &frequency_fops, NULL },
                { "forcewake", &fw_domains_fops, NULL },
+               { "forcewake_user", &forcewake_user_fops, NULL},
                { "llc", &llc_fops, llc_eval },
                { "rps_boost", &rps_boost_fops, rps_eval },
        };
index 2b824289582bed115a1be3c2892f0132078c463a..a8457887ec65eb80daefa12e6da0a5134b6e085e 100644 (file)
@@ -13,4 +13,8 @@ struct drm_printer;
 void intel_gt_pm_debugfs_register(struct intel_gt *gt, struct dentry *root);
 void intel_gt_pm_frequency_dump(struct intel_gt *gt, struct drm_printer *m);
 
+/* functions that need to be accessed by the upper level non-gt interfaces */
+int intel_gt_pm_debugfs_forcewake_user_open(struct intel_gt *gt);
+int intel_gt_pm_debugfs_forcewake_user_release(struct intel_gt *gt);
+
 #endif /* INTEL_GT_PM_DEBUGFS_H */
index fdbd46ff59e0e93408228202bf5f0f88f69f92b5..636cc3cf88be525a7969e2ce390af98bdad62e81 100644 (file)
@@ -35,6 +35,7 @@
 #include "gt/intel_gt.h"
 #include "gt/intel_gt_buffer_pool.h"
 #include "gt/intel_gt_clock_utils.h"
+#include "gt/intel_gt_debugfs.h"
 #include "gt/intel_gt_pm.h"
 #include "gt/intel_gt_pm_debugfs.h"
 #include "gt/intel_gt_requests.h"
@@ -554,36 +555,18 @@ static int i915_wa_registers(struct seq_file *m, void *unused)
        return 0;
 }
 
-static int
-i915_wedged_get(void *data, u64 *val)
+static int i915_wedged_get(void *data, u64 *val)
 {
        struct drm_i915_private *i915 = data;
-       int ret = intel_gt_terminally_wedged(&i915->gt);
 
-       switch (ret) {
-       case -EIO:
-               *val = 1;
-               return 0;
-       case 0:
-               *val = 0;
-               return 0;
-       default:
-               return ret;
-       }
+       return intel_gt_debugfs_reset_show(&i915->gt, val);
 }
 
-static int
-i915_wedged_set(void *data, u64 val)
+static int i915_wedged_set(void *data, u64 val)
 {
        struct drm_i915_private *i915 = data;
 
-       /* Flush any previous reset before applying for a new one */
-       wait_event(i915->gt.reset.queue,
-                  !test_bit(I915_RESET_BACKOFF, &i915->gt.reset.flags));
-
-       intel_gt_handle_error(&i915->gt, val, I915_ERROR_CAPTURE,
-                             "Manually set wedged engine mask = %llx", val);
-       return 0;
+       return intel_gt_debugfs_reset_store(&i915->gt, val);
 }
 
 DEFINE_SIMPLE_ATTRIBUTE(i915_wedged_fops,
@@ -728,27 +711,15 @@ static int i915_sseu_status(struct seq_file *m, void *unused)
 static int i915_forcewake_open(struct inode *inode, struct file *file)
 {
        struct drm_i915_private *i915 = inode->i_private;
-       struct intel_gt *gt = &i915->gt;
-
-       atomic_inc(&gt->user_wakeref);
-       intel_gt_pm_get(gt);
-       if (GRAPHICS_VER(i915) >= 6)
-               intel_uncore_forcewake_user_get(gt->uncore);
 
-       return 0;
+       return intel_gt_pm_debugfs_forcewake_user_open(&i915->gt);
 }
 
 static int i915_forcewake_release(struct inode *inode, struct file *file)
 {
        struct drm_i915_private *i915 = inode->i_private;
-       struct intel_gt *gt = &i915->gt;
 
-       if (GRAPHICS_VER(i915) >= 6)
-               intel_uncore_forcewake_user_put(&i915->uncore);
-       intel_gt_pm_put(gt);
-       atomic_dec(&gt->user_wakeref);
-
-       return 0;
+       return intel_gt_pm_debugfs_forcewake_user_release(&i915->gt);
 }
 
 static const struct file_operations i915_forcewake_fops = {