[PATCH v4 06/21] drm/i915/dsb: Disable the GOSUB interrupt
Shankar, Uma
uma.shankar at intel.com
Tue Jun 10 21:53:44 UTC 2025
> -----Original Message-----
> From: Intel-xe <intel-xe-bounces at lists.freedesktop.org> On Behalf Of Ville
> Syrjala
> Sent: Monday, June 9, 2025 7:41 PM
> To: intel-gfx at lists.freedesktop.org
> Cc: intel-xe at lists.freedesktop.org
> Subject: [PATCH v4 06/21] drm/i915/dsb: Disable the GOSUB interrupt
>
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> Current DSB hardware is apparently a bit borked and likes to signal spurious
> GOSUB errors. We already have most for the workarounds for this in place, but
> the last part is simply not enabling the corresponding interrupt.
>
> While at it polish up the w/a comments with the w/a number, and consistently take
> the short blurp from the w/a page.
Looks Good to me.
Reviewed-by: Uma Shankar <uma.shankar at intel.com>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_dsb.c | 14 +++++++++-----
> 1 file changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dsb.c
> b/drivers/gpu/drm/i915/display/intel_dsb.c
> index 6fdd324615e2..f60a6698419c 100644
> --- a/drivers/gpu/drm/i915/display/intel_dsb.c
> +++ b/drivers/gpu/drm/i915/display/intel_dsb.c
> @@ -555,8 +555,8 @@ static void intel_dsb_gosub_align(struct intel_dsb *dsb)
> aligned_tail = ALIGN(tail, CACHELINE_BYTES);
>
> /*
> - * "The GOSUB instruction cannot be placed in
> - * cacheline QW slot 6 or 7 (numbered 0-7)"
> + * Wa_16024917128
> + * "Ensure GOSUB is not placed in cacheline QW slot 6 or 7 (numbered 0-
> 7)"
> */
> if (aligned_tail - tail <= 2 * 8)
> intel_dsb_buffer_memset(&dsb->dsb_buf, dsb->free_pos, 0, @@
> -619,8 +619,8 @@ void intel_dsb_gosub_finish(struct intel_dsb *dsb)
> intel_dsb_align_tail(dsb);
>
> /*
> - * "All subroutines called by the GOSUB instruction
> - * must end with a cacheline of NOPs"
> + * Wa_16024917128
> + * "Ensure that all subroutines called by GOSUB end with a cacheline of
> NOPs"
> */
> intel_dsb_noop(dsb, 8);
>
> @@ -668,7 +668,11 @@ static u32 dsb_error_int_en(struct intel_display *display)
> if (DISPLAY_VER(display) >= 14)
> errors |= DSB_ATS_FAULT_INT_EN;
>
> - if (DISPLAY_VER(display) >= 30)
> + /*
> + * Wa_16024917128
> + * "Disable nested GOSUB interrupt (DSB_INTERRUPT bit 21)"
> + */
> + if (0 && DISPLAY_VER(display) >= 30)
> errors |= DSB_GOSUB_INT_EN;
>
> return errors;
> --
> 2.49.0
More information about the Intel-gfx
mailing list