[Intel-gfx] [PATCH v2 3/9] drm/i915/mtl: make IRQ reset and postinstall multi-gt aware

Lucas De Marchi lucas.demarchi at intel.com
Wed Feb 22 15:19:50 UTC 2023


On Tue, Feb 21, 2023 at 11:35:01PM -0800, Radhakrishna Sripada wrote:
>Irq reset and post install are to be made multi-gt aware for the
>interrupts to work for the media tile on Meteorlake. Iterate through
>all the gts to process irq reset for each gt.
>
>Based on original version by Paulo and Tvrtko

add a blank line here so the sentence above is not part of the commit
trailers.

>Cc: Paulo Zanoni <paulo.r.zanoni at intel.com>
>Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
>Signed-off-by: Radhakrishna Sripada <radhakrishna.sripada at intel.com>
>---
> drivers/gpu/drm/i915/i915_irq.c | 28 ++++++++++++++++++----------
> 1 file changed, 18 insertions(+), 10 deletions(-)
>
>diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
>index b024a3a7ca19..be1212a5f4c5 100644
>--- a/drivers/gpu/drm/i915/i915_irq.c
>+++ b/drivers/gpu/drm/i915/i915_irq.c
>@@ -2761,14 +2761,19 @@ static void dg1_irq_reset(struct drm_i915_private *dev_priv)
> {
> 	struct intel_gt *gt = to_gt(dev_priv);
> 	struct intel_uncore *uncore = gt->uncore;

probably better to remove these 2, so it's explicit what we are doing on
a gt level and what we are doing on a device/root-gt level.

struct intel_gt *gt;

>+	unsigned int i;
>
> 	dg1_master_intr_disable(dev_priv->uncore.regs);
>
>-	gen11_gt_irq_reset(gt);
>-	gen11_display_irq_reset(dev_priv);
>+	for_each_gt(gt, dev_priv, i) {
>+		gen11_gt_irq_reset(gt);

ok

>
>-	GEN3_IRQ_RESET(uncore, GEN11_GU_MISC_);
>-	GEN3_IRQ_RESET(uncore, GEN8_PCU_);
>+		uncore = gt->uncore;

remove this line

>+		GEN3_IRQ_RESET(uncore, GEN11_GU_MISC_);
>+		GEN3_IRQ_RESET(uncore, GEN8_PCU_);
>+	}

s/uncore/gt->uncore/

>+
>+	gen11_display_irq_reset(dev_priv);
> }
>
> void gen8_irq_power_well_post_enable(struct drm_i915_private *dev_priv,
>@@ -3422,13 +3427,16 @@ static void gen11_irq_postinstall(struct drm_i915_private *dev_priv)
>
> static void dg1_irq_postinstall(struct drm_i915_private *dev_priv)
> {
>-	struct intel_gt *gt = to_gt(dev_priv);
>-	struct intel_uncore *uncore = gt->uncore;
> 	u32 gu_misc_masked = GEN11_GU_MISC_GSE;
>+	struct intel_gt *gt;
>+	unsigned int i;
>
>-	gen11_gt_irq_postinstall(gt);
>+	for_each_gt(gt, dev_priv, i) {
>+		gen11_gt_irq_postinstall(gt);
>
>-	GEN3_IRQ_INIT(uncore, GEN11_GU_MISC_, ~gu_misc_masked, gu_misc_masked);
>+		GEN3_IRQ_INIT(gt->uncore, GEN11_GU_MISC_, ~gu_misc_masked,
>+			      gu_misc_masked);
>+	}

yep, the postinstall matches the logic I mentioned above.


with the changes above,

	
	Reviewed-by: Lucas De Marchi <lucas.demarchi at intel.com>

thanks
Lucas De Marchi

>
> 	if (HAS_DISPLAY(dev_priv)) {
> 		icp_irq_postinstall(dev_priv);
>@@ -3437,8 +3445,8 @@ static void dg1_irq_postinstall(struct drm_i915_private *dev_priv)
> 				   GEN11_DISPLAY_IRQ_ENABLE);
> 	}
>
>-	dg1_master_intr_enable(uncore->regs);
>-	intel_uncore_posting_read(uncore, DG1_MSTR_TILE_INTR);
>+	dg1_master_intr_enable(to_gt(dev_priv)->uncore->regs);
>+	intel_uncore_posting_read(to_gt(dev_priv)->uncore, DG1_MSTR_TILE_INTR);
> }
>
> static void cherryview_irq_postinstall(struct drm_i915_private *dev_priv)
>-- 
>2.34.1
>


More information about the Intel-gfx mailing list