All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@linux.intel.com>
To: Ashutosh Dixit <ashutosh.dixit@intel.com>,
	intel-gfx@lists.freedesktop.org
Cc: dri-devel@lists.freedesktop.org, Rodrigo Vivi <rodrigo.vivi@intel.com>
Subject: Re: [Intel-gfx] [PATCH] drm/i915: Perf_limit_reasons are only available for Gen11+
Date: Wed, 28 Sep 2022 14:38:46 +0300	[thread overview]
Message-ID: <871qrvzq2h.fsf@intel.com> (raw)
In-Reply-To: <20220919162401.2077713-1-ashutosh.dixit@intel.com>

On Mon, 19 Sep 2022, Ashutosh Dixit <ashutosh.dixit@intel.com> wrote:
> Register GT0_PERF_LIMIT_REASONS (0x1381a8) is available only for
> Gen11+. Therefore ensure perf_limit_reasons sysfs/debugfs files are created
> only for Gen11+. Otherwise on Gen < 5 accessing these files results in the
> following oops:
>
> <1> [88.829420] BUG: unable to handle page fault for address: ffffc90000bb81a8
> <1> [88.829438] #PF: supervisor read access in kernel mode
> <1> [88.829447] #PF: error_code(0x0000) - not-present page
>
> Bspec: 20008
> Bug: https://gitlab.freedesktop.org/drm/intel/-/issues/6863
> Fixes: fe5979665f64 ("drm/i915/debugfs: Add perf_limit_reasons in debugfs")
> Fixes: fa68bff7cf27 ("drm/i915/gt: Add sysfs throttle frequency interfaces")
> Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>

Ashutosh, can you provide a backport of this i.e. commit 0d2d201095e9
("drm/i915: Perf_limit_reasons are only available for Gen11+") that
applies cleanly on drm-intel-fixes, please?

BR,
Jani.


> ---
>  drivers/gpu/drm/i915/gt/intel_gt.c            |  4 ++++
>  drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.c | 10 +++++++++-
>  drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.c   | 15 +++++++++++----
>  3 files changed, 24 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c b/drivers/gpu/drm/i915/gt/intel_gt.c
> index 5ddae95d4886..b367cfff48d5 100644
> --- a/drivers/gpu/drm/i915/gt/intel_gt.c
> +++ b/drivers/gpu/drm/i915/gt/intel_gt.c
> @@ -233,6 +233,10 @@ static void gen6_clear_engine_error_register(struct intel_engine_cs *engine)
>  
>  i915_reg_t intel_gt_perf_limit_reasons_reg(struct intel_gt *gt)
>  {
> +	/* GT0_PERF_LIMIT_REASONS is available only for Gen11+ */
> +	if (GRAPHICS_VER(gt->i915) < 11)
> +		return INVALID_MMIO_REG;
> +
>  	return gt->type == GT_MEDIA ?
>  		MTL_MEDIA_PERF_LIMIT_REASONS : GT0_PERF_LIMIT_REASONS;
>  }
> diff --git a/drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.c b/drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.c
> index 68310881a793..10f680dbd7b6 100644
> --- a/drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.c
> +++ b/drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.c
> @@ -682,6 +682,14 @@ static int perf_limit_reasons_clear(void *data, u64 val)
>  
>  	return 0;
>  }
> +
> +static bool perf_limit_reasons_eval(void *data)
> +{
> +	struct intel_gt *gt = data;
> +
> +	return i915_mmio_reg_valid(intel_gt_perf_limit_reasons_reg(gt));
> +}
> +
>  DEFINE_SIMPLE_ATTRIBUTE(perf_limit_reasons_fops, perf_limit_reasons_get,
>  			perf_limit_reasons_clear, "%llu\n");
>  
> @@ -694,7 +702,7 @@ void intel_gt_pm_debugfs_register(struct intel_gt *gt, struct dentry *root)
>  		{ "forcewake_user", &forcewake_user_fops, NULL},
>  		{ "llc", &llc_fops, llc_eval },
>  		{ "rps_boost", &rps_boost_fops, rps_eval },
> -		{ "perf_limit_reasons", &perf_limit_reasons_fops, NULL },
> +		{ "perf_limit_reasons", &perf_limit_reasons_fops, perf_limit_reasons_eval },
>  	};
>  
>  	intel_gt_debugfs_register_files(root, files, ARRAY_SIZE(files), gt);
> diff --git a/drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.c b/drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.c
> index 54deae45d81f..904160952369 100644
> --- a/drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.c
> +++ b/drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.c
> @@ -545,8 +545,7 @@ static INTEL_GT_RPS_BOOL_ATTR_RO(throttle_reason_ratl, RATL_MASK);
>  static INTEL_GT_RPS_BOOL_ATTR_RO(throttle_reason_vr_thermalert, VR_THERMALERT_MASK);
>  static INTEL_GT_RPS_BOOL_ATTR_RO(throttle_reason_vr_tdc, VR_TDC_MASK);
>  
> -static const struct attribute *freq_attrs[] = {
> -	&dev_attr_punit_req_freq_mhz.attr,
> +static const struct attribute *throttle_reason_attrs[] = {
>  	&attr_throttle_reason_status.attr,
>  	&attr_throttle_reason_pl1.attr,
>  	&attr_throttle_reason_pl2.attr,
> @@ -791,12 +790,20 @@ void intel_gt_sysfs_pm_init(struct intel_gt *gt, struct kobject *kobj)
>  	if (!is_object_gt(kobj))
>  		return;
>  
> -	ret = sysfs_create_files(kobj, freq_attrs);
> +	ret = sysfs_create_file(kobj, &dev_attr_punit_req_freq_mhz.attr);
>  	if (ret)
>  		drm_warn(&gt->i915->drm,
> -			 "failed to create gt%u throttle sysfs files (%pe)",
> +			 "failed to create gt%u punit_req_freq_mhz sysfs (%pe)",
>  			 gt->info.id, ERR_PTR(ret));
>  
> +	if (i915_mmio_reg_valid(intel_gt_perf_limit_reasons_reg(gt))) {
> +		ret = sysfs_create_files(kobj, throttle_reason_attrs);
> +		if (ret)
> +			drm_warn(&gt->i915->drm,
> +				 "failed to create gt%u throttle sysfs files (%pe)",
> +				 gt->info.id, ERR_PTR(ret));
> +	}
> +
>  	if (HAS_MEDIA_RATIO_MODE(gt->i915) && intel_uc_uses_guc_slpc(&gt->uc)) {
>  		ret = sysfs_create_files(kobj, media_perf_power_attrs);
>  		if (ret)

-- 
Jani Nikula, Intel Open Source Graphics Center

  parent reply	other threads:[~2022-09-28 11:38 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-19 16:24 [PATCH] drm/i915: Perf_limit_reasons are only available for Gen11+ Ashutosh Dixit
2022-09-19 16:24 ` [Intel-gfx] " Ashutosh Dixit
2022-09-20  0:13 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for " Patchwork
2022-09-20  0:33 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2022-09-20  9:27 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
2022-09-20 21:29 ` [Intel-gfx] [PATCH] " Rodrigo Vivi
2022-09-20 21:29   ` Rodrigo Vivi
2022-09-28 11:38 ` Jani Nikula [this message]
2022-09-28 18:17   ` [Intel-gfx] " Dixit, Ashutosh
2022-09-28 18:35     ` Rodrigo Vivi
2022-09-28 19:03       ` Dixit, Ashutosh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=871qrvzq2h.fsf@intel.com \
    --to=jani.nikula@linux.intel.com \
    --cc=ashutosh.dixit@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=rodrigo.vivi@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.