[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