On Mon, 09 Nov 2026, Ville Syrjala <[email protected]> wrote:
> From: Ville Syrjälä <[email protected]>
>
> Define GEN11_GT_IRQS (we already have the gen8 counterpart
> GEN8_GT_IRQS) and use it to skip the entire gen11_gt_irq_handler()
> call if none of the relevant bits are set, as a micro
> optimization.
>
> In addition to the redundant function call we also now skip
> the redundant gt->irq_lock spinlock which is taken unconditionally
> in gen11_gt_irq_handler().
>
> Signed-off-by: Ville Syrjälä <[email protected]>

Reviewed-by: Jani Nikula <[email protected]>

> ---
>  drivers/gpu/drm/i915/gt/intel_gt_irq.h | 3 +++
>  drivers/gpu/drm/i915/i915_irq.c        | 6 ++++--
>  2 files changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_gt_irq.h 
> b/drivers/gpu/drm/i915/gt/intel_gt_irq.h
> index 41cad38668c5..c8cc247778f0 100644
> --- a/drivers/gpu/drm/i915/gt/intel_gt_irq.h
> +++ b/drivers/gpu/drm/i915/gt/intel_gt_irq.h
> @@ -12,6 +12,9 @@
>  
>  struct intel_gt;
>  
> +#define GEN11_GT_IRQS (GEN11_GT_DW_IRQ(0) | \
> +                    GEN11_GT_DW_IRQ(1))
> +
>  #define GEN8_GT_IRQS (GEN8_GT_RCS_IRQ | \
>                     GEN8_GT_BCS_IRQ | \
>                     GEN8_GT_VCS0_IRQ | \
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index 448c4730d178..b3fc3e31a5d4 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -527,7 +527,8 @@ static irqreturn_t gen11_irq_handler(int irq, void *arg)
>       }
>  
>       /* Find, queue (onto bottom-halves), then clear each source */
> -     gen11_gt_irq_handler(gt, master_ctl);
> +     if (master_ctl & GEN11_GT_IRQS)
> +             gen11_gt_irq_handler(gt, master_ctl);
>  
>       /* IRQs are synced during runtime_suspend, we don't require a wakeref */
>       if (master_ctl & GEN11_DISPLAY_IRQ)
> @@ -596,7 +597,8 @@ static irqreturn_t dg1_irq_handler(int irq, void *arg)
>               return IRQ_NONE;
>       }
>  
> -     gen11_gt_irq_handler(gt, master_ctl);
> +     if (master_ctl & GEN11_GT_IRQS)
> +             gen11_gt_irq_handler(gt, master_ctl);
>  
>       if (master_ctl & GEN11_DISPLAY_IRQ)
>               intel_display_irq_handler(display, NULL);

-- 
Jani Nikula, Intel

Reply via email to