From: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
To: intel-gfx@lists.freedesktop.org, john.c.harrison@intel.com
Subject: [PATCH 2/3] i915/guc: Ensure busyness counter increases monotonically
Date: Mon, 18 Nov 2024 15:22:22 -0800 [thread overview]
Message-ID: <20241118232223.53639-3-umesh.nerlige.ramappa@intel.com> (raw)
In-Reply-To: <20241118232223.53639-1-umesh.nerlige.ramappa@intel.com>
Active busyness of an engine is calculated using gt timestamp and the
context switch in time. While capturing the gt timestamp, it's possible
that the context switches out. This race could result in an active
busyness value that is greater than the actual context runtime value by a
small amount. This leads to a negative delta and throws off busyness
calculations for the user.
If a subsequent count is smaller than the previous one, just return the
previous one, since we expect the busyness to catch up.
Fixes: 77cdd054dd2c ("drm/i915/pmu: Connect engine busyness stats from GuC to pmu")
Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
drivers/gpu/drm/i915/gt/intel_engine_types.h | 5 +++++
drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c | 5 ++++-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/gt/intel_engine_types.h b/drivers/gpu/drm/i915/gt/intel_engine_types.h
index ba55c059063d..fe1f85e5dda3 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_types.h
+++ b/drivers/gpu/drm/i915/gt/intel_engine_types.h
@@ -343,6 +343,11 @@ struct intel_engine_guc_stats {
* @start_gt_clk: GT clock time of last idle to active transition.
*/
u64 start_gt_clk;
+
+ /**
+ * @total: The last value of total returned
+ */
+ u64 total;
};
union intel_engine_tlb_inv_reg {
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 c71aedcbce43..56be9f385270 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
@@ -1378,9 +1378,12 @@ static ktime_t guc_engine_busyness(struct intel_engine_cs *engine, ktime_t *now)
total += intel_gt_clock_interval_to_ns(gt, clk);
}
+ if (total > stats->total)
+ stats->total = total;
+
spin_unlock_irqrestore(&guc->timestamp.lock, flags);
- return ns_to_ktime(total);
+ return ns_to_ktime(stats->total);
}
static void guc_enable_busyness_worker(struct intel_guc *guc)
--
2.34.1
next prev parent reply other threads:[~2024-11-18 23:22 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-18 23:22 [PATCH 0/3] Fix some races/bugs in GuC engine busyness Umesh Nerlige Ramappa
2024-11-18 23:22 ` [PATCH 1/3] i915/guc: Reset engine utilization buffer before registration Umesh Nerlige Ramappa
2024-11-22 0:29 ` John Harrison
2024-11-18 23:22 ` Umesh Nerlige Ramappa [this message]
2024-11-22 0:31 ` [PATCH 2/3] i915/guc: Ensure busyness counter increases monotonically John Harrison
2024-11-22 0:34 ` John Harrison
2024-11-25 20:10 ` Umesh Nerlige Ramappa
2024-11-18 23:22 ` [PATCH 3/3] i915/guc: Accumulate active runtime on gt reset Umesh Nerlige Ramappa
2024-11-22 0:37 ` John Harrison
2024-11-25 20:12 ` Umesh Nerlige Ramappa
2024-11-19 0:04 ` ✗ Fi.CI.SPARSE: warning for Fix some races/bugs in GuC engine busyness Patchwork
2024-11-19 0:23 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-11-19 18:46 ` Umesh Nerlige Ramappa
2024-11-19 20:04 ` ✗ Fi.CI.SPARSE: warning for Fix some races/bugs in GuC engine busyness (rev2) Patchwork
2024-11-19 20:18 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-11-21 8:38 ` ✗ Fi.CI.SPARSE: warning for Fix some races/bugs in GuC engine busyness (rev3) Patchwork
2024-11-24 9:47 ` ✗ i915.CI.Full: failure " Patchwork
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=20241118232223.53639-3-umesh.nerlige.ramappa@intel.com \
--to=umesh.nerlige.ramappa@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=john.c.harrison@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox