Give the compiler a helping hand in mapping (bank,bit) to our struct
intel_engine_cs by trading object code size for data cache:

add/remove: 2/0 grow/shrink: 0/1 up/down: 192/-135 (57)
Function                                     old     new   delta
bank1_map                                      -     128    +128
bank0_map                                      -      64     +64
gen11_irq_handler                            706     571    -135

Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuopp...@linux.intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursu...@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospu...@intel.com>
---
 drivers/gpu/drm/i915/i915_irq.c | 53 +++++++++++------------------------------
 1 file changed, 14 insertions(+), 39 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index c8c29d8ecbab..5a42d8a63677 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -2762,44 +2762,6 @@ static void __fini_wedge(struct wedge_me *w)
             (W)->i915;                                                 \
             __fini_wedge((W)))
 
-static void
-gen11_gt_engine_irq_handler(struct drm_i915_private * const i915,
-                           const unsigned int bank,
-                           const unsigned int engine_n,
-                           const u16 iir)
-{
-       struct intel_engine_cs ** const engine = i915->engine;
-
-       switch (bank) {
-       case 0:
-               switch (engine_n) {
-
-               case GEN11_RCS0:
-                       return gen8_cs_irq_handler(engine[RCS], iir);
-
-               case GEN11_BCS:
-                       return gen8_cs_irq_handler(engine[BCS], iir);
-               }
-       case 1:
-               switch (engine_n) {
-
-               case GEN11_VCS(0):
-                       return gen8_cs_irq_handler(engine[_VCS(0)], iir);
-               case GEN11_VCS(1):
-                       return gen8_cs_irq_handler(engine[_VCS(1)], iir);
-               case GEN11_VCS(2):
-                       return gen8_cs_irq_handler(engine[_VCS(2)], iir);
-               case GEN11_VCS(3):
-                       return gen8_cs_irq_handler(engine[_VCS(3)], iir);
-
-               case GEN11_VECS(0):
-                       return gen8_cs_irq_handler(engine[_VECS(0)], iir);
-               case GEN11_VECS(1):
-                       return gen8_cs_irq_handler(engine[_VECS(1)], iir);
-               }
-       }
-}
-
 static u32
 gen11_gt_engine_intr(struct drm_i915_private * const i915,
                     const unsigned int bank, const unsigned int bit)
@@ -2836,10 +2798,23 @@ static void
 gen11_gt_irq_handler(struct drm_i915_private * const i915,
                     const u32 master_ctl)
 {
+       static const int bank0_map[] = {
+               [GEN11_RCS0] = RCS,
+               [GEN11_BCS] = BCS,
+       };
+       static const int bank1_map[] = {
+               [GEN11_VCS(0)]  = _VCS(0),
+               [GEN11_VCS(1)]  = _VCS(1),
+               [GEN11_VCS(2)]  = _VCS(2),
+               [GEN11_VCS(3)]  = _VCS(3),
+               [GEN11_VECS(0)] = _VECS(0),
+               [GEN11_VECS(1)] = _VECS(1),
+       };
        void __iomem * const regs = i915->regs;
        unsigned int bank;
 
        for (bank = 0; bank < 2; bank++) {
+               const int *map = bank ? bank1_map : bank0_map;
                unsigned long intr_dw;
                unsigned int bit;
 
@@ -2859,7 +2834,7 @@ gen11_gt_irq_handler(struct drm_i915_private * const i915,
                        if (unlikely(!iir))
                                continue;
 
-                       gen11_gt_engine_irq_handler(i915, bank, bit, iir);
+                       gen8_cs_irq_handler(i915->engine[map[bit]], iir);
                }
 
                /* Clear must be after shared has been served for engine */
-- 
2.16.2

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to