[Intel-gfx] [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 Intel-gfx
mailing list