For testing purposes it may make sense to reduce the number of guc_ids
available to be allocated. Add debugfs support for setting the number of
guc_ids.

Signed-off-by: Matthew Brost <matthew.br...@intel.com>
---
 .../gpu/drm/i915/gt/uc/intel_guc_debugfs.c    | 31 +++++++++++++++++++
 .../gpu/drm/i915/gt/uc/intel_guc_submission.c |  3 +-
 2 files changed, 33 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_debugfs.c 
b/drivers/gpu/drm/i915/gt/uc/intel_guc_debugfs.c
index 9a03ff56e654..474c96fc16ef 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc_debugfs.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_debugfs.c
@@ -50,11 +50,42 @@ static int guc_registered_contexts_show(struct seq_file *m, 
void *data)
 }
 DEFINE_GT_DEBUGFS_ATTRIBUTE(guc_registered_contexts);
 
+static int guc_num_id_get(void *data, u64 *val)
+{
+       struct intel_guc *guc = data;
+
+       if (!intel_guc_submission_is_used(guc))
+               return -ENODEV;
+
+       *val = guc->num_guc_ids;
+
+       return 0;
+}
+
+static int guc_num_id_set(void *data, u64 val)
+{
+       struct intel_guc *guc = data;
+
+       if (!intel_guc_submission_is_used(guc))
+               return -ENODEV;
+
+       if (val > guc->max_guc_ids)
+               val = guc->max_guc_ids;
+       else if (val < 256)
+               val = 256;
+
+       guc->num_guc_ids = val;
+
+       return 0;
+}
+DEFINE_SIMPLE_ATTRIBUTE(guc_num_id_fops, guc_num_id_get, guc_num_id_set, 
"%lld\n");
+
 void intel_guc_debugfs_register(struct intel_guc *guc, struct dentry *root)
 {
        static const struct debugfs_gt_file files[] = {
                { "guc_info", &guc_info_fops, NULL },
                { "guc_registered_contexts", &guc_registered_contexts_fops, 
NULL },
+               { "guc_num_id", &guc_num_id_fops, NULL },
        };
 
        if (!intel_guc_is_supported(guc))
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c 
b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
index 8f40e534bc81..3c73c2ca668e 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
@@ -2153,7 +2153,8 @@ g2h_context_lookup(struct intel_guc *guc, u32 desc_idx)
 
        if (unlikely(desc_idx >= guc->max_guc_ids)) {
                drm_dbg(&guc_to_gt(guc)->i915->drm,
-                       "Invalid desc_idx %u", desc_idx);
+                       "Invalid desc_idx %u, max %u",
+                       desc_idx, guc->max_guc_ids);
                return NULL;
        }
 
-- 
2.28.0

Reply via email to