Skip to content

Commit b2f7e30

Browse files
committed
drm/i915/dsb: Disable the GOSUB interrupt
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. Reviewed-by: Uma Shankar <[email protected]> Signed-off-by: Ville Syrjälä <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent 7c50c6a commit b2f7e30

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

drivers/gpu/drm/i915/display/intel_dsb.c

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -554,8 +554,8 @@ static void intel_dsb_gosub_align(struct intel_dsb *dsb)
554554
aligned_tail = ALIGN(tail, CACHELINE_BYTES);
555555

556556
/*
557-
* "The GOSUB instruction cannot be placed in
558-
* cacheline QW slot 6 or 7 (numbered 0-7)"
557+
* Wa_16024917128
558+
* "Ensure GOSUB is not placed in cacheline QW slot 6 or 7 (numbered 0-7)"
559559
*/
560560
if (aligned_tail - tail <= 2 * 8)
561561
intel_dsb_buffer_memset(&dsb->dsb_buf, dsb->free_pos, 0,
@@ -618,8 +618,8 @@ void intel_dsb_gosub_finish(struct intel_dsb *dsb)
618618
intel_dsb_align_tail(dsb);
619619

620620
/*
621-
* "All subroutines called by the GOSUB instruction
622-
* must end with a cacheline of NOPs"
621+
* Wa_16024917128
622+
* "Ensure that all subroutines called by GOSUB end with a cacheline of NOPs"
623623
*/
624624
intel_dsb_noop(dsb, 8);
625625

@@ -667,7 +667,11 @@ static u32 dsb_error_int_en(struct intel_display *display)
667667
if (DISPLAY_VER(display) >= 14)
668668
errors |= DSB_ATS_FAULT_INT_EN;
669669

670-
if (DISPLAY_VER(display) >= 30)
670+
/*
671+
* Wa_16024917128
672+
* "Disable nested GOSUB interrupt (DSB_INTERRUPT bit 21)"
673+
*/
674+
if (0 && DISPLAY_VER(display) >= 30)
671675
errors |= DSB_GOSUB_INT_EN;
672676

673677
return errors;

0 commit comments

Comments
 (0)