All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lucas De Marchi <lucas.demarchi@intel.com>
To: Matt Roper <matthew.d.roper@intel.com>
Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	Paulo Zanoni <paulo.r.zanoni@intel.com>,
	Stuart Summers <stuart.summers@intel.com>,
	Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Subject: Re: [PATCH 07/11] drm/i915/xehp: Determine which tile raised an interrupt
Date: Wed, 27 Oct 2021 00:13:43 -0700	[thread overview]
Message-ID: <20211027071343.s4rrp2v3kfnfj3sl@ldmartin-desk2> (raw)
In-Reply-To: <20211008215635.2026385-8-matthew.d.roper@intel.com>

On Fri, Oct 08, 2021 at 02:56:31PM -0700, Matt Roper wrote:
>From: Paulo Zanoni <paulo.r.zanoni@intel.com>
>
>The first step of interrupt handling is to read a tile0 register that
>tells us in which tile the interrupt happened; we can then we read the
>usual interrupt registers from the appropriate tile.
>
>Note that this is just the first step of handling interrupts properly on
>multi-tile platforms.  Subsequent patches will convert other parts of
>the interrupt handling flow.
>
>Cc: Stuart Summers <stuart.summers@intel.com>
>Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
>Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
>---
> drivers/gpu/drm/i915/i915_irq.c | 31 ++++++++++++++++---------------
> 1 file changed, 16 insertions(+), 15 deletions(-)
>
>diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
>index 038a9ec563c1..9f99ad56cde6 100644
>--- a/drivers/gpu/drm/i915/i915_irq.c
>+++ b/drivers/gpu/drm/i915/i915_irq.c
>@@ -2772,37 +2772,38 @@ static irqreturn_t dg1_irq_handler(int irq, void *arg)
> {
> 	struct drm_i915_private * const i915 = arg;
> 	struct intel_gt *gt = &i915->gt;
>-	void __iomem * const regs = gt->uncore->regs;
>+	void __iomem * const t0_regs = gt->uncore->regs;

given that we later make gt point elsewhere since it's now only used
inside the loop, I think this would be clearer with

	void __iomem * const t0_regs = i915->gt->uncore->regs;
	struct intel_gt *gt;

but see below


> 	u32 master_tile_ctl, master_ctl;
>-	u32 gu_misc_iir;
>+	u32 gu_misc_iir = 0;
>+	unsigned int i;
>
> 	if (!intel_irqs_enabled(i915))
> 		return IRQ_NONE;
>
>-	master_tile_ctl = dg1_master_intr_disable(regs);
>+	master_tile_ctl = dg1_master_intr_disable(t0_regs);
> 	if (!master_tile_ctl) {
>-		dg1_master_intr_enable(regs);
>+		dg1_master_intr_enable(t0_regs);
> 		return IRQ_NONE;
> 	}
>
>-	/* FIXME: we only support tile 0 for now. */
>-	if (master_tile_ctl & DG1_MSTR_TILE(0)) {
>+	for_each_gt(i915, i, gt) {
>+		void __iomem *const regs = gt->uncore->regs;
>+
>+		if ((master_tile_ctl & DG1_MSTR_TILE(i)) == 0)
>+			continue;
>+
> 		master_ctl = raw_reg_read(regs, GEN11_GFX_MSTR_IRQ);
> 		raw_reg_write(regs, GEN11_GFX_MSTR_IRQ, master_ctl);
>-	} else {
>-		DRM_ERROR("Tile not supported: 0x%08x\n", master_tile_ctl);
>-		dg1_master_intr_enable(regs);
>-		return IRQ_NONE;
>-	}
>
>-	gen11_gt_irq_handler(gt, master_ctl);
>+		gen11_gt_irq_handler(gt, master_ctl);
>+
>+		gu_misc_iir = gen11_gu_misc_irq_ack(gt, master_ctl);
>+	}
>
> 	if (master_ctl & GEN11_DISPLAY_IRQ)
> 		gen11_display_irq_handler(i915);
>
>-	gu_misc_iir = gen11_gu_misc_irq_ack(gt, master_ctl);
>-
>-	dg1_master_intr_enable(regs);
>+	dg1_master_intr_enable(t0_regs);
>
> 	gen11_gu_misc_irq_handler(gt, gu_misc_iir);

since we used gt in the for_each_gt() loop it looks like this is not
the gt we wanted anymore. Alas gen11_gu_misc_irq_handler() only uses gt
to backpoint to i915... so I'm not sure if it should actually be taking
a gt as parameter if it is per device rather than per tile/gt.

Lucas De Marchi

>
>-- 
>2.33.0
>

WARNING: multiple messages have this Message-ID (diff)
From: Lucas De Marchi <lucas.demarchi@intel.com>
To: Matt Roper <matthew.d.roper@intel.com>
Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	Paulo Zanoni <paulo.r.zanoni@intel.com>,
	Stuart Summers <stuart.summers@intel.com>,
	Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Subject: Re: [Intel-gfx] [PATCH 07/11] drm/i915/xehp: Determine which tile raised an interrupt
Date: Wed, 27 Oct 2021 00:13:43 -0700	[thread overview]
Message-ID: <20211027071343.s4rrp2v3kfnfj3sl@ldmartin-desk2> (raw)
In-Reply-To: <20211008215635.2026385-8-matthew.d.roper@intel.com>

On Fri, Oct 08, 2021 at 02:56:31PM -0700, Matt Roper wrote:
>From: Paulo Zanoni <paulo.r.zanoni@intel.com>
>
>The first step of interrupt handling is to read a tile0 register that
>tells us in which tile the interrupt happened; we can then we read the
>usual interrupt registers from the appropriate tile.
>
>Note that this is just the first step of handling interrupts properly on
>multi-tile platforms.  Subsequent patches will convert other parts of
>the interrupt handling flow.
>
>Cc: Stuart Summers <stuart.summers@intel.com>
>Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
>Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
>---
> drivers/gpu/drm/i915/i915_irq.c | 31 ++++++++++++++++---------------
> 1 file changed, 16 insertions(+), 15 deletions(-)
>
>diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
>index 038a9ec563c1..9f99ad56cde6 100644
>--- a/drivers/gpu/drm/i915/i915_irq.c
>+++ b/drivers/gpu/drm/i915/i915_irq.c
>@@ -2772,37 +2772,38 @@ static irqreturn_t dg1_irq_handler(int irq, void *arg)
> {
> 	struct drm_i915_private * const i915 = arg;
> 	struct intel_gt *gt = &i915->gt;
>-	void __iomem * const regs = gt->uncore->regs;
>+	void __iomem * const t0_regs = gt->uncore->regs;

given that we later make gt point elsewhere since it's now only used
inside the loop, I think this would be clearer with

	void __iomem * const t0_regs = i915->gt->uncore->regs;
	struct intel_gt *gt;

but see below


> 	u32 master_tile_ctl, master_ctl;
>-	u32 gu_misc_iir;
>+	u32 gu_misc_iir = 0;
>+	unsigned int i;
>
> 	if (!intel_irqs_enabled(i915))
> 		return IRQ_NONE;
>
>-	master_tile_ctl = dg1_master_intr_disable(regs);
>+	master_tile_ctl = dg1_master_intr_disable(t0_regs);
> 	if (!master_tile_ctl) {
>-		dg1_master_intr_enable(regs);
>+		dg1_master_intr_enable(t0_regs);
> 		return IRQ_NONE;
> 	}
>
>-	/* FIXME: we only support tile 0 for now. */
>-	if (master_tile_ctl & DG1_MSTR_TILE(0)) {
>+	for_each_gt(i915, i, gt) {
>+		void __iomem *const regs = gt->uncore->regs;
>+
>+		if ((master_tile_ctl & DG1_MSTR_TILE(i)) == 0)
>+			continue;
>+
> 		master_ctl = raw_reg_read(regs, GEN11_GFX_MSTR_IRQ);
> 		raw_reg_write(regs, GEN11_GFX_MSTR_IRQ, master_ctl);
>-	} else {
>-		DRM_ERROR("Tile not supported: 0x%08x\n", master_tile_ctl);
>-		dg1_master_intr_enable(regs);
>-		return IRQ_NONE;
>-	}
>
>-	gen11_gt_irq_handler(gt, master_ctl);
>+		gen11_gt_irq_handler(gt, master_ctl);
>+
>+		gu_misc_iir = gen11_gu_misc_irq_ack(gt, master_ctl);
>+	}
>
> 	if (master_ctl & GEN11_DISPLAY_IRQ)
> 		gen11_display_irq_handler(i915);
>
>-	gu_misc_iir = gen11_gu_misc_irq_ack(gt, master_ctl);
>-
>-	dg1_master_intr_enable(regs);
>+	dg1_master_intr_enable(t0_regs);
>
> 	gen11_gu_misc_irq_handler(gt, gu_misc_iir);

since we used gt in the for_each_gt() loop it looks like this is not
the gt we wanted anymore. Alas gen11_gu_misc_irq_handler() only uses gt
to backpoint to i915... so I'm not sure if it should actually be taking
a gt as parameter if it is per device rather than per tile/gt.

Lucas De Marchi

>
>-- 
>2.33.0
>

  parent reply	other threads:[~2021-10-27  7:13 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-08 21:56 [PATCH 00/11] i915: Initial multi-tile support Matt Roper
2021-10-08 21:56 ` [Intel-gfx] " Matt Roper
2021-10-08 21:56 ` [PATCH 01/11] drm/i915: rework some irq functions to take intel_gt as argument Matt Roper
2021-10-08 21:56   ` [Intel-gfx] " Matt Roper
2021-10-27  6:22   ` Lucas De Marchi
2021-10-28 14:13   ` Andi Shyti
2021-10-08 21:56 ` [PATCH 02/11] drm/i915: split general MMIO setup from per-GT uncore init Matt Roper
2021-10-08 21:56   ` [Intel-gfx] " Matt Roper
2021-10-27  6:26   ` Lucas De Marchi
2021-10-28 14:17   ` Andi Shyti
2021-10-08 21:56 ` [PATCH 03/11] drm/i915: Restructure probe to handle multi-tile platforms Matt Roper
2021-10-08 21:56   ` [Intel-gfx] " Matt Roper
2021-10-13 12:12   ` Jani Nikula
2021-10-13 12:12     ` [Intel-gfx] " Jani Nikula
2021-10-27  6:57     ` Lucas De Marchi
2021-10-27  7:58       ` Jani Nikula
2021-10-08 21:56 ` [PATCH 04/11] drm/i915: Store backpointer to GT in uncore Matt Roper
2021-10-08 21:56   ` [Intel-gfx] " Matt Roper
2021-10-28 14:26   ` Andi Shyti
2021-10-08 21:56 ` [PATCH 05/11] drm/i915: Prepare for multiple gts Matt Roper
2021-10-08 21:56   ` [Intel-gfx] " Matt Roper
2021-10-27  7:01   ` Lucas De Marchi
2021-10-08 21:56 ` [PATCH 06/11] drm/i915: Initial support for per-tile uncore Matt Roper
2021-10-08 21:56   ` [Intel-gfx] " Matt Roper
2021-10-28 15:41   ` Andi Shyti
2021-10-08 21:56 ` [PATCH 07/11] drm/i915/xehp: Determine which tile raised an interrupt Matt Roper
2021-10-08 21:56   ` [Intel-gfx] " Matt Roper
2021-10-08 23:48   ` Matt Roper
2021-10-08 23:48     ` [Intel-gfx] " Matt Roper
2021-10-13  0:55   ` Andi Shyti
2021-10-27  7:13   ` Lucas De Marchi [this message]
2021-10-27  7:13     ` Lucas De Marchi
2021-10-08 21:56 ` [PATCH 08/11] drm/i915/xehp: Make IRQ reset and postinstall multi-tile aware Matt Roper
2021-10-08 21:56   ` [Intel-gfx] " Matt Roper
2021-10-28 16:30   ` Andi Shyti
2021-10-28 23:20     ` Matt Roper
2021-10-29  0:16       ` Andi Shyti
2021-10-08 21:56 ` [PATCH 09/11] drm/i915/guc: Update CT debug macro for multi-tile Matt Roper
2021-10-08 21:56   ` [Intel-gfx] " Matt Roper
2021-10-08 21:56 ` [PATCH 10/11] drm/i915: Release per-gt resources allocated Matt Roper
2021-10-08 21:56   ` [Intel-gfx] " Matt Roper
2021-10-28 16:33   ` Andi Shyti
2021-10-08 21:56 ` [PATCH 11/11] drm/i915/xehpsdv: Initialize multi-tiles Matt Roper
2021-10-08 21:56   ` [Intel-gfx] " Matt Roper
2021-10-08 23:33   ` [PATCH v2 " Matt Roper
2021-10-08 23:33     ` [Intel-gfx] " Matt Roper
2021-10-11  7:51     ` Tvrtko Ursulin
2021-10-12 23:11     ` Andi Shyti
2021-10-08 22:30 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for i915: Initial multi-tile support Patchwork
2021-10-08 23:01 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2021-10-09  0:05 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for i915: Initial multi-tile support (rev2) Patchwork
2021-10-09  0:36 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork
2021-10-09  2:54 ` [Intel-gfx] ✗ Fi.CI.IGT: failure for i915: Initial multi-tile support 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=20211027071343.s4rrp2v3kfnfj3sl@ldmartin-desk2 \
    --to=lucas.demarchi@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=matthew.d.roper@intel.com \
    --cc=paulo.r.zanoni@intel.com \
    --cc=stuart.summers@intel.com \
    --cc=tvrtko.ursulin@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.