]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drm/i915: Make IRQ reset and postinstall multi-gt aware
authorAndi Shyti <andi.shyti@linux.intel.com>
Mon, 17 Apr 2023 23:53:56 +0000 (01:53 +0200)
committerAndi Shyti <andi.shyti@linux.intel.com>
Tue, 18 Apr 2023 11:19:21 +0000 (13:19 +0200)
In multi-gt systems IRQs need to be reset and enabled per GT.

This might add some redundancy when handling interrupts for
engines that might not exist in every tile, but helps to keep the
code cleaner and more understandable.

Signed-off-by: Andi Shyti <andi.shyti@linux.intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230417235356.1291060-1-andi.shyti@linux.intel.com
drivers/gpu/drm/i915/i915_irq.c

index d24bdea65a3dc5e1997bffca5c30523574b54546..53c83e2570553fa156f4804f05c6bdc33f089a1b 100644 (file)
@@ -2762,12 +2762,15 @@ static void gen11_irq_reset(struct drm_i915_private *dev_priv)
 
 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;
+       struct intel_uncore *uncore = &dev_priv->uncore;
+       struct intel_gt *gt;
+       unsigned int i;
 
        dg1_master_intr_disable(dev_priv->uncore.regs);
 
-       gen11_gt_irq_reset(gt);
+       for_each_gt(gt, dev_priv, i)
+               gen11_gt_irq_reset(gt);
+
        gen11_display_irq_reset(dev_priv);
 
        GEN3_IRQ_RESET(uncore, GEN11_GU_MISC_);
@@ -3425,11 +3428,13 @@ 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;
+       struct intel_uncore *uncore = &dev_priv->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);