> -----Original Message----- > From: Intel-xe <intel-xe-boun...@lists.freedesktop.org> On Behalf Of Ville > Syrjala > Sent: Monday, June 9, 2025 7:41 PM > To: intel-gfx@lists.freedesktop.org > Cc: intel...@lists.freedesktop.org > Subject: [PATCH v4 06/21] drm/i915/dsb: Disable the GOSUB interrupt > > From: Ville Syrjälä <ville.syrj...@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.shan...@intel.com> > Signed-off-by: Ville Syrjälä <ville.syrj...@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