From: Matt Roper <matthew.d.roper@intel.com>
To: Andi Shyti <andi.shyti@linux.intel.com>
Cc: Intel GFX <intel-gfx@lists.freedesktop.org>,
Jonathan Cavitt <jonathan.cavitt@intel.com>,
DRI Devel <dri-devel@lists.freedesktop.org>,
Chris Wilson <chris@chris-wilson.co.uk>,
Nirmoy Das <nirmoy.das@intel.com>
Subject: Re: [Intel-gfx] [PATCH v4 5/6] drm/i915/gt: Poll aux invalidation register bit on invalidation
Date: Mon, 17 Jul 2023 13:05:35 -0700 [thread overview]
Message-ID: <20230717200535.GE138014@mdroper-desk1.amr.corp.intel.com> (raw)
In-Reply-To: <20230717173059.422892-6-andi.shyti@linux.intel.com>
On Mon, Jul 17, 2023 at 07:30:58PM +0200, Andi Shyti wrote:
> From: Jonathan Cavitt <jonathan.cavitt@intel.com>
>
> For platforms that use Aux CCS, wait for aux invalidation to
> complete by checking the aux invalidation register bit is
> cleared.
>
> Fixes: 972282c4cf24 ("drm/i915/gen12: Add aux table invalidate for all engines")
> Signed-off-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
> Signed-off-by: Andi Shyti <andi.shyti@linux.intel.com>
> Cc: <stable@vger.kernel.org> # v5.8+
> Reviewed-by: Nirmoy Das <nirmoy.das@intel.com>
> ---
> drivers/gpu/drm/i915/gt/gen8_engine_cs.c | 17 +++++++++++++----
> drivers/gpu/drm/i915/gt/intel_gpu_commands.h | 1 +
> 2 files changed, 14 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/gen8_engine_cs.c b/drivers/gpu/drm/i915/gt/gen8_engine_cs.c
> index aa2fb9d72745a..fbc70f3b7f2fd 100644
> --- a/drivers/gpu/drm/i915/gt/gen8_engine_cs.c
> +++ b/drivers/gpu/drm/i915/gt/gen8_engine_cs.c
> @@ -174,6 +174,16 @@ u32 *gen12_emit_aux_table_inv(struct intel_gt *gt, u32 *cs, const i915_reg_t inv
> *cs++ = AUX_INV;
> *cs++ = MI_NOOP;
We only need qword alignment for sequences of commands, not each
individual command, right? So technically we could drop this noop...
>
> + *cs++ = MI_SEMAPHORE_WAIT_TOKEN |
> + MI_SEMAPHORE_REGISTER_POLL |
> + MI_SEMAPHORE_POLL |
> + MI_SEMAPHORE_SAD_EQ_SDD;
> + *cs++ = 0;
> + *cs++ = i915_mmio_reg_offset(inv_reg) + gsi_offset;
> + *cs++ = 0;
> + *cs++ = 0;
> + *cs++ = MI_NOOP;
...and then we wouldn't need an extra one here.
If we drop the pair of noops, that would also change the # of dwords
farther down too.
> +
> return cs;
> }
>
> @@ -284,10 +294,9 @@ int gen12_emit_flush_rcs(struct i915_request *rq, u32 mode)
> else if (engine->class == COMPUTE_CLASS)
> flags &= ~PIPE_CONTROL_3D_ENGINE_FLAGS;
>
> + count = 8;
> if (!HAS_FLAT_CCS(rq->engine->i915))
As noted on the earlier patch, we should probably make this check that
the platform actually has AuxCCS.
Anyway, up to you whether you want to make that change or not. The
extra noops don't actually hurt anything.
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
> - count = 8 + 4;
> - else
> - count = 8;
> + count += 10;
>
> cs = intel_ring_begin(rq, count);
> if (IS_ERR(cs))
> @@ -330,7 +339,7 @@ int gen12_emit_flush_xcs(struct i915_request *rq, u32 mode)
> aux_inv = rq->engine->mask &
> ~GENMASK(_BCS(I915_MAX_BCS - 1), BCS0);
> if (aux_inv)
> - cmd += 4;
> + cmd += 10;
> }
> }
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_gpu_commands.h b/drivers/gpu/drm/i915/gt/intel_gpu_commands.h
> index 5df7cce23197c..2bd8d98d21102 100644
> --- a/drivers/gpu/drm/i915/gt/intel_gpu_commands.h
> +++ b/drivers/gpu/drm/i915/gt/intel_gpu_commands.h
> @@ -121,6 +121,7 @@
> #define MI_SEMAPHORE_TARGET(engine) ((engine)<<15)
> #define MI_SEMAPHORE_WAIT MI_INSTR(0x1c, 2) /* GEN8+ */
> #define MI_SEMAPHORE_WAIT_TOKEN MI_INSTR(0x1c, 3) /* GEN12+ */
> +#define MI_SEMAPHORE_REGISTER_POLL (1 << 16)
> #define MI_SEMAPHORE_POLL (1 << 15)
> #define MI_SEMAPHORE_SAD_GT_SDD (0 << 12)
> #define MI_SEMAPHORE_SAD_GTE_SDD (1 << 12)
> --
> 2.40.1
>
--
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation
next prev parent reply other threads:[~2023-07-17 20:06 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-17 17:30 [Intel-gfx] [PATCH v4 0/6] Update AUX invalidation sequence Andi Shyti
2023-07-17 17:30 ` [Intel-gfx] [PATCH v4 1/6] drm/i915/gt: Cleanup aux invalidation registers Andi Shyti
2023-07-17 17:30 ` [Intel-gfx] [PATCH v4 2/6] drm/i915/gt: Ensure memory quiesced before invalidation Andi Shyti
2023-07-17 17:54 ` Matt Roper
2023-07-17 20:31 ` Matt Roper
2023-07-17 21:52 ` Andi Shyti
2023-07-17 22:00 ` Matt Roper
2023-07-18 0:28 ` Andi Shyti
2023-07-18 15:53 ` Matt Roper
2023-07-17 17:30 ` [Intel-gfx] [PATCH v4 3/6] drm/i915/gt: Rename flags with bit_group_X according to the datasheet Andi Shyti
2023-07-17 17:32 ` Andi Shyti
2023-07-17 17:59 ` Matt Roper
2023-07-17 18:21 ` Andrzej Hajda
2023-07-17 21:54 ` Andi Shyti
2023-07-17 18:45 ` Nirmoy Das
2023-07-17 17:30 ` [Intel-gfx] [PATCH v4 4/6] drm/i915/gt: Enable the CCS_FLUSH bit in the pipe control Andi Shyti
2023-07-17 18:23 ` Andrzej Hajda
2023-07-17 19:40 ` Matt Roper
2023-07-17 17:30 ` [Intel-gfx] [PATCH v4 5/6] drm/i915/gt: Poll aux invalidation register bit on invalidation Andi Shyti
2023-07-17 18:51 ` Andrzej Hajda
2023-07-17 20:05 ` Matt Roper [this message]
2023-07-17 17:30 ` [Intel-gfx] [PATCH v4 6/6] drm/i915/gt: Support aux invalidation on all engines Andi Shyti
2023-07-17 19:11 ` Andrzej Hajda
2023-07-17 22:00 ` Andi Shyti
2023-07-17 20:27 ` Matt Roper
2023-07-17 22:02 ` Andi Shyti
2023-07-17 21:07 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Update AUX invalidation sequence (rev4) Patchwork
2023-07-17 21:07 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2023-07-17 21:26 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2023-07-18 3:06 ` [Intel-gfx] ✗ Fi.CI.IGT: 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=20230717200535.GE138014@mdroper-desk1.amr.corp.intel.com \
--to=matthew.d.roper@intel.com \
--cc=andi.shyti@linux.intel.com \
--cc=chris@chris-wilson.co.uk \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jonathan.cavitt@intel.com \
--cc=nirmoy.das@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