[PATCH v2 2/2] drm/i915/debugfs: Enable upper layer interfaces to act on all gt's

Das, Nirmoy nirmoy.das at linux.intel.com
Fri Mar 17 11:26:24 UTC 2023


On 3/1/2023 12:02 PM, Andi Shyti wrote:
> The commit 82a149a62b6b5 ('drm/i915/gt: move remaining debugfs
> interfaces into gt') moved gt-related debugfs files in the gtX/
> directories to operate on individual gt's.
>
> However, the original files were only functioning on the root
> tile (tile 0) and have been left in the same location to maintain
> compatibility with userspace users.
>
> Add multiplexing functionality to the higher directories' files.
> This enables the operations to be performed on all the tiles with
> a single write. In the case of reads, the files provide an or'ed
> value across all the tiles.
>
> Signed-off-by: Andi Shyti <andi.shyti at linux.intel.com>
> Cc: Maciej Patelczyk <maciej.patelczyk at intel.com>


Reviewed-by: Nirmoy Das <nirmoy.das at intel.com>

> ---
>   drivers/gpu/drm/i915/i915_debugfs.c | 38 ++++++++++++++++++++++++++---
>   1 file changed, 34 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
> index 45773ce1deac2..90663f251fd10 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> @@ -575,14 +575,36 @@ static int i915_wa_registers(struct seq_file *m, void *unused)
>   static int i915_wedged_get(void *data, u64 *val)
>   {
>   	struct drm_i915_private *i915 = data;
> +	struct intel_gt *gt;
> +	unsigned int i;
>   
> -	return intel_gt_debugfs_reset_show(to_gt(i915), val);
> +	*val = 0;
> +
> +	for_each_gt(gt, i915, i) {
> +		int ret;
> +		u64 v;
> +
> +		ret = intel_gt_debugfs_reset_show(gt, &v);
> +		if (ret)
> +			return ret;
> +
> +		/* at least one tile should be wedged */
> +		*val |= !!v;
> +		if (*val)
> +			break;
> +	}
> +
> +	return 0;
>   }
>   
>   static int i915_wedged_set(void *data, u64 val)
>   {
>   	struct drm_i915_private *i915 = data;
> -	intel_gt_debugfs_reset_store(to_gt(i915), val);
> +	struct intel_gt *gt;
> +	unsigned int i;
> +
> +	for_each_gt(gt, i915, i)
> +		intel_gt_debugfs_reset_store(gt, val);
>   
>   	return 0;
>   }
> @@ -733,7 +755,11 @@ 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;
> -	intel_gt_pm_debugfs_forcewake_user_open(to_gt(i915));
> +	struct intel_gt *gt;
> +	unsigned int i;
> +
> +	for_each_gt(gt, i915, i)
> +		intel_gt_pm_debugfs_forcewake_user_open(gt);
>   
>   	return 0;
>   }
> @@ -741,7 +767,11 @@ static int i915_forcewake_open(struct inode *inode, struct file *file)
>   static int i915_forcewake_release(struct inode *inode, struct file *file)
>   {
>   	struct drm_i915_private *i915 = inode->i_private;
> -	intel_gt_pm_debugfs_forcewake_user_release(to_gt(i915));
> +	struct intel_gt *gt;
> +	unsigned int i;
> +
> +	for_each_gt(gt, i915, i)
> +		intel_gt_pm_debugfs_forcewake_user_release(gt);
>   
>   	return 0;
>   }


More information about the dri-devel mailing list