All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rodrigo Vivi <rodrigo.vivi@intel.com>
To: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Cc: <intel-xe@lists.freedesktop.org>, <kernel-dev@igalia.com>
Subject: Re: [PATCH v11 02/13] drm/xe/xelp: Quiesce memory traffic before invalidating auxccs
Date: Tue, 2 Sep 2025 13:33:11 -0400	[thread overview]
Message-ID: <aLcqVyZEKXlSqHwF@intel.com> (raw)
In-Reply-To: <52e66d66-c479-40f1-872d-7f6b26912544@igalia.com>

On Mon, Sep 01, 2025 at 11:37:33AM +0100, Tvrtko Ursulin wrote:
> 
> On 27/08/2025 15:39, Rodrigo Vivi wrote:
> > On Thu, Aug 21, 2025 at 03:14:44PM +0100, Tvrtko Ursulin wrote:
> > > According to i915 before invalidating auxccs we must quiesce the memory
> > > traffic by an extra flush.
> > 
> > Perhaps we should be more specific about what commits exactly are mentioning this?
> > 
> > > 
> > > Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
> > > ---
> > >   drivers/gpu/drm/xe/xe_ring_ops.c       | 7 ++++++-
> > >   drivers/gpu/drm/xe/xe_ring_ops_types.h | 2 +-
> > >   2 files changed, 7 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/xe/xe_ring_ops.c b/drivers/gpu/drm/xe/xe_ring_ops.c
> > > index 761740d7769f..f56506ebbeca 100644
> > > --- a/drivers/gpu/drm/xe/xe_ring_ops.c
> > > +++ b/drivers/gpu/drm/xe/xe_ring_ops.c
> > > @@ -358,10 +358,15 @@ static void __emit_job_gen12_render_compute(struct xe_sched_job *job,
> > >   	struct xe_gt *gt = job->q->gt;
> > >   	struct xe_device *xe = gt_to_xe(gt);
> > >   	bool lacks_render = !(gt->info.engine_mask & XE_HW_ENGINE_RCS_MASK);
> > > +	const bool aux_ccs = has_aux_ccs(xe);
> > >   	u32 mask_flags = 0;
> > >   	i = emit_copy_timestamp(lrc, dw, i);
> > > +	/* hsdes: 1809175790 */
> > 
> > in i915 I just see a mention to this HSD which is the
> > 972282c4cf24 ("drm/i915/gen12: Add aux table invalidate for all engines")
> > 
> > but that is not about emitting the flush, but about fixing the aux
> > table invalidation itself. And that is in sync what written on this
> > HSD, but I don't believe this patch is about that.
> > 
> > So, although this patch itself kind of makes sense, I believe it
> > deserves a better message.
> 
> My logic was this:
> 
> d0d829e56674c (Daniele Ceraolo Spurio 2020-12-09 23:36:18 +0000 244) int
> gen12_emit_flush_rcs(struct i915_request *rq, u32 mode)
> d0d829e56674c (Daniele Ceraolo Spurio 2020-12-09 23:36:18 +0000 245) {
> 803efd297e315 (Daniele Ceraolo Spurio 2022-03-01 15:15:40 -0800 246) struct
> intel_engine_cs *engine = rq->engine;
> 803efd297e315 (Daniele Ceraolo Spurio 2022-03-01 15:15:40 -0800 247)
> ad8ebf12217e4 (Jonathan Cavitt        2023-07-25 02:19:46 +0200 248)    /*
> ad8ebf12217e4 (Jonathan Cavitt        2023-07-25 02:19:46 +0200 249) * On
> Aux CCS platforms the invalidation of the Aux
> ad8ebf12217e4 (Jonathan Cavitt        2023-07-25 02:19:46 +0200 250) * table
> requires quiescing memory traffic beforehand
> ad8ebf12217e4 (Jonathan Cavitt        2023-07-25 02:19:46 +0200 251)     */
> ad8ebf12217e4 (Jonathan Cavitt        2023-07-25 02:19:46 +0200 252) if
> (mode & EMIT_FLUSH || gen12_needs_ccs_aux_inv(engine)) {
> 
> So commit ad8ebf12217e4 added the flush before invalidate:
> 
> commit ad8ebf12217e451cd19804b1c3e97ad56491c74a
> Author: Jonathan Cavitt <jonathan.cavitt@intel.com>
> Date:   Tue Jul 25 02:19:46 2023 +0200
> 
>     drm/i915/gt: Ensure memory quiesced before invalidation
> 
>     All memory traffic must be quiesced before requesting
>     an aux invalidation on platforms that use Aux CCS.
> 
>     Fixes: 972282c4cf24 ("drm/i915/gen12: Add aux table invalidate for all
> engines")
>     Requires: a2a4aa0eef3b ("drm/i915: Add the gen12_needs_ccs_aux_inv
> helper")
>     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>
>     Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com>
>     Link: https://patchwork.freedesktop.org/patch/msgid/20230725001950.1014671-4-andi.shyti@linux.intel.com
> 
> diff --git a/drivers/gpu/drm/i915/gt/gen8_engine_cs.c
> b/drivers/gpu/drm/i915/gt/gen8_engine_cs.c
> index 46744f966077..58b448708e75 100644
> --- a/drivers/gpu/drm/i915/gt/gen8_engine_cs.c
> +++ b/drivers/gpu/drm/i915/gt/gen8_engine_cs.c
> @@ -214,7 +214,11 @@ int gen12_emit_flush_rcs(struct i915_request *rq, u32
> mode)
>  {
>         struct intel_engine_cs *engine = rq->engine;
> 
> -       if (mode & EMIT_FLUSH) {
> +       /*
> +        * On Aux CCS platforms the invalidation of the Aux
> +        * table requires quiescing memory traffic beforehand
> +        */
> +       if (mode & EMIT_FLUSH || gen12_needs_ccs_aux_inv(engine)) {
> 
> And ad8ebf12217e4 referenced 972282c4cf24 as the commit it was fixing, while
> 972282c4cf24 is the one which references hsdes#1809175790. So I decided to
> tag this patch with it as a transitive property.
> 
> If I remove the HSD reference, replace it with a comment as the one in i915,
> and put the above commit chain reasoning to the commit message will that be
> good enough?

Yeap, I believe it makes more sense.

> 
> Regards,
> 
> Tvrtko
> 
> > > +	if (aux_ccs)
> > > +		i = emit_render_cache_flush(job, dw, i);
> > > +
> > >   	dw[i++] = preparser_disable(true);
> > >   	if (lacks_render)
> > >   		mask_flags = PIPE_CONTROL_3D_ARCH_FLAGS;
> > > @@ -372,7 +377,7 @@ static void __emit_job_gen12_render_compute(struct xe_sched_job *job,
> > >   	i = emit_pipe_invalidate(mask_flags, job->ring_ops_flush_tlb, dw, i);
> > >   	/* hsdes: 1809175790 */
> > > -	if (has_aux_ccs(xe))
> > > +	if (aux_ccs)
> > >   		i = emit_aux_table_inv(gt, CCS_AUX_INV, dw, i);
> > >   	dw[i++] = preparser_disable(false);
> > > diff --git a/drivers/gpu/drm/xe/xe_ring_ops_types.h b/drivers/gpu/drm/xe/xe_ring_ops_types.h
> > > index d7e3e150a9a5..477dc7defd72 100644
> > > --- a/drivers/gpu/drm/xe/xe_ring_ops_types.h
> > > +++ b/drivers/gpu/drm/xe/xe_ring_ops_types.h
> > > @@ -8,7 +8,7 @@
> > >   struct xe_sched_job;
> > > -#define MAX_JOB_SIZE_DW 58
> > > +#define MAX_JOB_SIZE_DW 70
> > >   #define MAX_JOB_SIZE_BYTES (MAX_JOB_SIZE_DW * 4)
> > >   /**
> > > -- 
> > > 2.48.0
> > > 
> 

  reply	other threads:[~2025-09-02 17:33 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-21 14:14 [PATCH v11 00/13] AuxCCS handling and render compression modifiers Tvrtko Ursulin
2025-08-21 14:14 ` [PATCH v11 01/13] drm/xe/xelpg: Flush CCS when flushing caches Tvrtko Ursulin
2025-08-27 14:10   ` Rodrigo Vivi
2025-08-21 14:14 ` [PATCH v11 02/13] drm/xe/xelp: Quiesce memory traffic before invalidating auxccs Tvrtko Ursulin
2025-08-27 14:39   ` Rodrigo Vivi
2025-09-01 10:37     ` Tvrtko Ursulin
2025-09-02 17:33       ` Rodrigo Vivi [this message]
2025-09-03  7:50         ` Tvrtko Ursulin
2025-08-21 14:14 ` [PATCH v11 03/13] drm/xe/xelp: Support auxccs invalidation on blitter Tvrtko Ursulin
2025-08-21 14:14 ` [PATCH v11 04/13] drm/xe/xelp: Use MI_FLUSH_DW_CCS on auxccs platforms Tvrtko Ursulin
2025-09-12 14:25   ` Rodrigo Vivi
2025-08-21 14:14 ` [PATCH v11 05/13] drm/xe/xelp: Wait for AuxCCS invalidation to complete Tvrtko Ursulin
2025-09-12 14:23   ` Rodrigo Vivi
2025-08-21 14:14 ` [PATCH v11 06/13] drm/xe: Export xe_emit_aux_table_inv Tvrtko Ursulin
2025-08-21 14:14 ` [PATCH v11 07/13] drm/xe/xelp: Add AuxCCS invalidation to the indirect context workarounds Tvrtko Ursulin
2025-08-21 14:14 ` [PATCH v11 08/13] drm/xe: Flush GGTT writes after populating DPT Tvrtko Ursulin
2025-08-21 14:14 ` [PATCH v11 09/13] drm/xe: Handle DPT in system memory Tvrtko Ursulin
2025-08-21 14:14 ` [PATCH v11 10/13] drm/xe/display: Add support for AuxCCS Tvrtko Ursulin
2025-08-21 14:14 ` [PATCH v11 11/13] drm/xe: Force flush system memory AuxCCS framebuffers before scan out Tvrtko Ursulin
2025-08-21 14:14 ` [PATCH v11 12/13] drm/xe: Do not use stolen memory for DPT on IGFX and AuxCCS Tvrtko Ursulin
2025-08-21 14:14 ` [PATCH v11 13/13] drm/i915/display: Expose AuxCCS frame buffer modifiers for Xe Tvrtko Ursulin
2025-08-21 14:55 ` ✗ CI.checkpatch: warning for AuxCCS handling and render compression modifiers (rev13) Patchwork
2025-08-21 14:57 ` ✓ CI.KUnit: success " Patchwork
2025-08-21 16:08 ` ✓ Xe.CI.BAT: " Patchwork
2025-08-22 14:30 ` ✗ Xe.CI.Full: failure " Patchwork
2025-08-23  9:16   ` Tvrtko Ursulin

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=aLcqVyZEKXlSqHwF@intel.com \
    --to=rodrigo.vivi@intel.com \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=kernel-dev@igalia.com \
    --cc=tvrtko.ursulin@igalia.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.