All of lore.kernel.org
 help / color / mirror / Atom feed
From: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
To: Ashutosh Dixit <ashutosh.dixit@intel.com>
Cc: <intel-xe@lists.freedesktop.org>
Subject: Re: [PATCH 16/17] drm/xe/oa: Changes to OA_TAKEN
Date: Tue, 12 Mar 2024 12:08:48 -0700	[thread overview]
Message-ID: <ZfCoQFMgXG2MD8rA@unerlige-ril> (raw)
In-Reply-To: <20240312034003.2747815-1-ashutosh.dixit@intel.com>

On Mon, Mar 11, 2024 at 08:40:02PM -0700, Ashutosh Dixit wrote:
>Rename OA_TAKEN to xe_oa_circ_diff, since xe_oa_circ_diff better describes
>what the macro actually does. Also convert to function and add xe_oa_stream
>arg. These will be used in the following patch.
>
>Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

Umesh
>---
> drivers/gpu/drm/xe/xe_oa.c | 22 +++++++++++++---------
> 1 file changed, 13 insertions(+), 9 deletions(-)
>
>diff --git a/drivers/gpu/drm/xe/xe_oa.c b/drivers/gpu/drm/xe/xe_oa.c
>index b33976db1da5..6f5bbb0787d9 100644
>--- a/drivers/gpu/drm/xe/xe_oa.c
>+++ b/drivers/gpu/drm/xe/xe_oa.c
>@@ -28,7 +28,6 @@
> #include "xe_sched_job.h"
> #include "xe_perf.h"
>
>-#define OA_TAKEN(tail, head)	(((tail) - (head)) & (XE_OA_BUFFER_SIZE - 1))
> #define DEFAULT_POLL_FREQUENCY_HZ 200
> #define DEFAULT_POLL_PERIOD_NS (NSEC_PER_SEC / DEFAULT_POLL_FREQUENCY_HZ)
> #define XE_OA_UNIT_INVALID U32_MAX
>@@ -105,6 +104,11 @@ static const struct xe_oa_format oa_formats[] = {
> 	[XE_OA_FORMAT_PEC36u64_G1_4_G2_32]	= { 4, 320, DRM_FMT(PEC), HDR_64_BIT, 1, 0 },
> };
>
>+static u32 xe_oa_circ_diff(struct xe_oa_stream *stream, u32 tail, u32 head)
>+{
>+	return (tail - head) & (XE_OA_BUFFER_SIZE - 1);
>+}
>+
> static void xe_oa_config_release(struct kref *ref)
> {
> 	struct xe_oa_config *oa_config =
>@@ -209,11 +213,11 @@ static bool xe_oa_buffer_check_unlocked(struct xe_oa_stream *stream)
> 	 * increments. Also report size may not be a power of 2. Compute potential
> 	 * partially landed report in OA buffer.
> 	 */
>-	partial_report_size = OA_TAKEN(hw_tail, stream->oa_buffer.tail);
>+	partial_report_size = xe_oa_circ_diff(stream, hw_tail, stream->oa_buffer.tail);
> 	partial_report_size %= report_size;
>
> 	/* Subtract partial amount off the tail */
>-	hw_tail = OA_TAKEN(hw_tail, partial_report_size);
>+	hw_tail = xe_oa_circ_diff(stream, hw_tail, partial_report_size);
>
> 	tail = hw_tail;
>
>@@ -225,24 +229,24 @@ static bool xe_oa_buffer_check_unlocked(struct xe_oa_stream *stream)
> 	 * This is assuming that the writes of the OA unit land in memory in the order
> 	 * they were written.  If not : (╯°□°)╯︵ ┻━┻
> 	 */
>-	while (OA_TAKEN(tail, stream->oa_buffer.tail) >= report_size) {
>+	while (xe_oa_circ_diff(stream, tail, stream->oa_buffer.tail) >= report_size) {
> 		void *report = stream->oa_buffer.vaddr + tail;
>
> 		if (oa_report_id(stream, report) || oa_timestamp(stream, report))
> 			break;
>
>-		tail = OA_TAKEN(tail, report_size);
>+		tail = xe_oa_circ_diff(stream, tail, report_size);
> 	}
>
>-	if (OA_TAKEN(hw_tail, tail) > report_size)
>+	if (xe_oa_circ_diff(stream, hw_tail, tail) > report_size)
> 		drm_dbg(&stream->oa->xe->drm,
> 			"unlanded report(s) head=0x%x tail=0x%x hw_tail=0x%x\n",
> 			stream->oa_buffer.head, tail, hw_tail);
>
> 	stream->oa_buffer.tail = tail;
>
>-	pollin = OA_TAKEN(stream->oa_buffer.tail,
>-			  stream->oa_buffer.head) >= report_size;
>+	pollin = xe_oa_circ_diff(stream, stream->oa_buffer.tail,
>+				 stream->oa_buffer.head) >= report_size;
>
> 	spin_unlock_irqrestore(&stream->oa_buffer.ptr_lock, flags);
>
>@@ -315,7 +319,7 @@ static int xe_oa_append_reports(struct xe_oa_stream *stream, char __user *buf,
>
> 	xe_assert(stream->oa->xe, head < XE_OA_BUFFER_SIZE && tail < XE_OA_BUFFER_SIZE);
>
>-	for (; OA_TAKEN(tail, head); head = (head + report_size) & mask) {
>+	for (; xe_oa_circ_diff(stream, tail, head); head = (head + report_size) & mask) {
> 		u8 *report = oa_buf_base + head;
>
> 		ret = xe_oa_append_report(stream, buf, count, offset, report);
>-- 
>2.41.0
>

  parent reply	other threads:[~2024-03-12 19:09 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-12  3:40 [PATCH 16/17] drm/xe/oa: Changes to OA_TAKEN Ashutosh Dixit
2024-03-12  3:40 ` [PATCH 17/17] drm/xe/oa: Enable Xe2+ overrun mode Ashutosh Dixit
2024-03-12 20:14   ` Umesh Nerlige Ramappa
2024-03-12 20:17     ` Umesh Nerlige Ramappa
2024-03-14  0:48     ` Dixit, Ashutosh
2024-03-12 19:08 ` Umesh Nerlige Ramappa [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-06-18  1:45 [PATCH v19 00/17] Add OA functionality to Xe Ashutosh Dixit
2024-06-18  1:46 ` [PATCH 16/17] drm/xe/oa: Changes to OA_TAKEN Ashutosh Dixit
2024-06-17 22:36 [PATCH v18 00/17] Add OA functionality to Xe Ashutosh Dixit
2024-06-17 22:36 ` [PATCH 16/17] drm/xe/oa: Changes to OA_TAKEN Ashutosh Dixit
2024-06-12  2:05 [PATCH v17 00/17] Add OA functionality to Xe Ashutosh Dixit
2024-06-12  2:05 ` [PATCH 16/17] drm/xe/oa: Changes to OA_TAKEN Ashutosh Dixit
2024-06-07 20:43 [PATCH v16 00/17] Add OA functionality to Xe Ashutosh Dixit
2024-06-07 20:43 ` [PATCH 16/17] drm/xe/oa: Changes to OA_TAKEN Ashutosh Dixit
2024-05-27  1:43 [PATCH v15 00/17] Add OA functionality to Xe Ashutosh Dixit
2024-05-27  1:43 ` [PATCH 16/17] drm/xe/oa: Changes to OA_TAKEN Ashutosh Dixit
2024-05-24 19:01 [PATCH v14 00/17] Add OA functionality to Xe Ashutosh Dixit
2024-05-24 19:01 ` [PATCH 16/17] drm/xe/oa: Changes to OA_TAKEN Ashutosh Dixit
2024-03-15  1:35 [PATCH 00/17] Add OA functionality to Xe Ashutosh Dixit
2024-03-15  1:35 ` [PATCH 16/17] drm/xe/oa: Changes to OA_TAKEN Ashutosh Dixit
2024-03-12  3:38 [PATCH v12 00/17] Add OA functionality to Xe Ashutosh Dixit
2024-03-12  3:59 ` [PATCH 16/17] drm/xe/oa: Changes to OA_TAKEN Ashutosh Dixit

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=ZfCoQFMgXG2MD8rA@unerlige-ril \
    --to=umesh.nerlige.ramappa@intel.com \
    --cc=ashutosh.dixit@intel.com \
    --cc=intel-xe@lists.freedesktop.org \
    /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.