All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Dixit, Ashutosh" <ashutosh.dixit@intel.com>
To: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH] drm/i915/pmu: Fix wakeref leak in PMU busyness during reset
Date: Mon, 06 Dec 2021 17:30:43 -0800	[thread overview]
Message-ID: <87a6hd19rw.wl-ashutosh.dixit@intel.com> (raw)
In-Reply-To: <20211207004542.24298-1-umesh.nerlige.ramappa@intel.com>

On Mon, 06 Dec 2021 16:45:42 -0800, Umesh Nerlige Ramappa wrote:
>
> GuC PMU busyness gets gt wakeref if awake, but fails to release the
> wakeref if a reset is in progress. Release the wakeref if it was
> acquried successfully.
>
> Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
> ---
>  drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
>
> 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 1f9d4fde421f..a243304a2db1 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
> @@ -1181,6 +1181,7 @@ static ktime_t guc_engine_busyness(struct intel_engine_cs *engine, ktime_t *now)
>	struct intel_gt *gt = engine->gt;
>	struct intel_guc *guc = &gt->uc.guc;
>	u64 total, gt_stamp_saved;
> +	intel_wakeref_t wakeref;

Should be bool.

>	unsigned long flags;
>	u32 reset_count;
>	bool in_reset;
> @@ -1206,18 +1207,21 @@ static ktime_t guc_engine_busyness(struct intel_engine_cs *engine, ktime_t *now)
>	 * start_gt_clk is derived from GuC state. To get a consistent
>	 * view of activity, we query the GuC state only if gt is awake.
>	 */
> -	if (intel_gt_pm_get_if_awake(gt) && !in_reset) {

Also how about just switch them around:

	if (!in_reset && intel_gt_pm_get_if_awake(gt))

Then you don't need any other changes I think.

> +	wakeref = intel_gt_pm_get_if_awake(gt);
> +	if (wakeref && !in_reset) {
>		stats_saved = *stats;
>		gt_stamp_saved = guc->timestamp.gt_stamp;
>		guc_update_engine_gt_clks(engine);
>		guc_update_pm_timestamp(guc, engine, now);
> -		intel_gt_pm_put_async(gt);
>		if (i915_reset_count(gpu_error) != reset_count) {
>			*stats = stats_saved;
>			guc->timestamp.gt_stamp = gt_stamp_saved;
>		}
>	}
>
> +	if (wakeref)
> +		intel_gt_pm_put_async(gt);
> +
>	total = intel_gt_clock_interval_to_ns(gt, stats->total_gt_clks);
>	if (stats->running) {
>		u64 clk = guc->timestamp.gt_stamp - stats->start_gt_clk;
> --
> 2.20.1
>

  reply	other threads:[~2021-12-07  1:30 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-07  0:45 [Intel-gfx] [PATCH] drm/i915/pmu: Fix wakeref leak in PMU busyness during reset Umesh Nerlige Ramappa
2021-12-07  1:30 ` Dixit, Ashutosh [this message]
2021-12-07  2:04   ` Umesh Nerlige Ramappa
2021-12-07  1:59 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
2021-12-07  4:15 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2021-12-07  2:02 [Intel-gfx] [PATCH] " Umesh Nerlige Ramappa
2021-12-07  2:08 ` 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=87a6hd19rw.wl-ashutosh.dixit@intel.com \
    --to=ashutosh.dixit@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=umesh.nerlige.ramappa@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.