Message ID | 20190617195154.30292-1-jose.souza@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/i915/psr: Force manual PSR exit in older gens | expand |
On Mon, Jun 17, 2019 at 12:51:54PM -0700, José Roberto de Souza wrote: > To do frontbuffer tracking we are depending on Display WA #0884 to > exit PSR when there is a frontbuffer modification but according to > user reports a write to CURSURFLIVE do not cause PSR to exit in older > gens so lets force a PSR exit. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110799 :( Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> and if bugs persist or this brings back older bugs it is time to consider removing psr support at all for gen < 9 :-/ > Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> > Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> > Signed-off-by: José Roberto de Souza <jose.souza@intel.com> > --- > drivers/gpu/drm/i915/display/intel_psr.c | 36 +++++++++++++++++------- > 1 file changed, 26 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c > index 69709df4a648..69d908e6a050 100644 > --- a/drivers/gpu/drm/i915/display/intel_psr.c > +++ b/drivers/gpu/drm/i915/display/intel_psr.c > @@ -863,16 +863,23 @@ void intel_psr_disable(struct intel_dp *intel_dp, > > static void psr_force_hw_tracking_exit(struct drm_i915_private *dev_priv) > { > - /* > - * Display WA #0884: all > - * This documented WA for bxt can be safely applied > - * broadly so we can force HW tracking to exit PSR > - * instead of disabling and re-enabling. > - * Workaround tells us to write 0 to CUR_SURFLIVE_A, > - * but it makes more sense write to the current active > - * pipe. > - */ > - I915_WRITE(CURSURFLIVE(dev_priv->psr.pipe), 0); > + if (INTEL_GEN(dev_priv) >= 9) > + /* > + * Display WA #0884: skl+ > + * This documented WA for bxt can be safely applied > + * broadly so we can force HW tracking to exit PSR > + * instead of disabling and re-enabling. > + * Workaround tells us to write 0 to CUR_SURFLIVE_A, > + * but it makes more sense write to the current active > + * pipe. > + */ > + I915_WRITE(CURSURFLIVE(dev_priv->psr.pipe), 0); > + else > + /* > + * A write to CURSURFLIVE do not cause HW tracking to exit PSR > + * on older gens so doing the manual exit instead. > + */ > + intel_psr_exit(dev_priv); > } > > /** > @@ -903,6 +910,15 @@ void intel_psr_update(struct intel_dp *intel_dp, > /* Force a PSR exit when enabling CRC to avoid CRC timeouts */ > if (crtc_state->crc_enabled && psr->enabled) > psr_force_hw_tracking_exit(dev_priv); > + else if (INTEL_GEN(dev_priv) < 9 && psr->enabled) { > + /* > + * Activate PSR again after a force exit when enabling > + * CRC in older gens > + */ > + if (!dev_priv->psr.active && > + !dev_priv->psr.busy_frontbuffer_bits) > + schedule_work(&dev_priv->psr.work); > + } > > goto unlock; > } > -- > 2.22.0 >
On Tue, 2019-06-18 at 12:00 +0000, Patchwork wrote: > == Series Details == > > Series: drm/i915/psr: Force manual PSR exit in older gens > URL : https://patchwork.freedesktop.org/series/62249/ > State : failure > > == Summary == > > CI Bug Log - changes from CI_DRM_6287_full -> Patchwork_13316_full > ==================================================== > > Summary > ------- > > **FAILURE** > > Serious unknown changes coming with Patchwork_13316_full absolutely > need to be > verified manually. > > If you think the reported changes have nothing to do with the > changes > introduced in Patchwork_13316_full, please notify your bug team to > allow them > to document this new failure mode, which will reduce false > positives in CI. > > > > Possible new issues > ------------------- > > Here are the unknown changes that may have been introduced in > Patchwork_13316_full: > > ### IGT changes ### > > #### Possible regressions #### > > * igt@gem_eio@hibernate: > - shard-snb: [PASS][1] -> [DMESG-WARN][2] > [1]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-snb4/igt@gem_eio@hibernate.html > [2]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-snb6/igt@gem_eio@hibernate.html > Not related so pushed to dinq, thanks for the review Rodrigo. > > Known issues > ------------ > > Here are the changes found in Patchwork_13316_full that come from > known issues: > > ### IGT changes ### > > #### Issues hit #### > > * igt@gem_eio@throttle: > - shard-kbl: [PASS][3] -> [DMESG-WARN][4] ([fdo#110913 > ]) +2 similar issues > [3]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-kbl7/igt@gem_eio@throttle.html > [4]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-kbl4/igt@gem_eio@throttle.html > > * igt@gem_userptr_blits@sync-unmap-cycles: > - shard-apl: [PASS][5] -> [DMESG-WARN][6] ([fdo#110913 > ]) > [5]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-apl8/igt@gem_userptr_blits@sync-unmap-cycles.html > [6]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-apl4/igt@gem_userptr_blits@sync-unmap-cycles.html > > * igt@i915_pm_rpm@i2c: > - shard-hsw: [PASS][7] -> [FAIL][8] ([fdo#104097]) > [7]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-hsw4/igt@i915_pm_rpm@i2c.html > [8]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-hsw1/igt@i915_pm_rpm@i2c.html > > * igt@i915_selftest@live_evict: > - shard-kbl: [PASS][9] -> [INCOMPLETE][10] ([fdo#103665] > / [fdo#110938]) > [9]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-kbl2/igt@i915_selftest@live_evict.html > [10]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-kbl4/igt@i915_selftest@live_evict.html > > * igt@i915_suspend@sysfs-reader: > - shard-apl: [PASS][11] -> [DMESG-WARN][12] > ([fdo#108566]) +2 similar issues > [11]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-apl6/igt@i915_suspend@sysfs-reader.html > [12]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-apl3/igt@i915_suspend@sysfs-reader.html > > * igt@kms_cursor_crc@pipe-c-cursor-suspend: > - shard-kbl: [PASS][13] -> [DMESG-WARN][14] > ([fdo#108566]) +2 similar issues > [13]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-kbl2/igt@kms_cursor_crc@pipe-c-cursor-suspend.html > [14]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-kbl2/igt@kms_cursor_crc@pipe-c-cursor-suspend.html > > * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible: > - shard-glk: [PASS][15] -> [FAIL][16] ([fdo#105363]) > [15]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-glk9/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible.html > [16]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-glk5/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible.html > > * igt@kms_flip@flip-vs-suspend-interruptible: > - shard-skl: [PASS][17] -> [INCOMPLETE][18] > ([fdo#109507]) > [17]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-skl3/igt@kms_flip@flip-vs-suspend-interruptible.html > [18]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-skl8/igt@kms_flip@flip-vs-suspend-interruptible.html > > * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-blt: > - shard-iclb: [PASS][19] -> [FAIL][20] ([fdo#103167]) +4 > similar issues > [19]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-iclb4/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-blt.html > [20]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-iclb2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-blt.html > > * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-move: > - shard-hsw: [PASS][21] -> [SKIP][22] ([fdo#109271]) +18 > similar issues > [21]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-hsw5/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-move.html > [22]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-hsw1/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-move.html > > * igt@kms_plane_lowres@pipe-a-tiling-x: > - shard-iclb: [PASS][23] -> [FAIL][24] ([fdo#103166]) > [23]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-iclb7/igt@kms_plane_lowres@pipe-a-tiling-x.html > [24]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-iclb2/igt@kms_plane_lowres@pipe-a-tiling-x.html > > * igt@kms_psr@psr2_cursor_render: > - shard-iclb: [PASS][25] -> [SKIP][26] ([fdo#109441]) +1 > similar issue > [25]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-iclb2/igt@kms_psr@psr2_cursor_render.html > [26]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-iclb5/igt@kms_psr@psr2_cursor_render.html > > > #### Possible fixes #### > > * igt@gem_exec_balancer@smoke: > - shard-iclb: [SKIP][27] ([fdo#110854]) -> [PASS][28] > [27]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-iclb3/igt@gem_exec_balancer@smoke.html > [28]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-iclb4/igt@gem_exec_balancer@smoke.html > > * igt@gem_exec_blt@normal-min: > - shard-apl: [INCOMPLETE][29] ([fdo#103927]) -> > [PASS][30] > [29]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-apl2/igt@gem_exec_blt@normal-min.html > [30]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-apl1/igt@gem_exec_blt@normal-min.html > > * igt@gem_mmap_gtt@hang: > - shard-apl: [DMESG-WARN][31] ([fdo#110913 ]) -> > [PASS][32] > [31]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-apl4/igt@gem_mmap_gtt@hang.html > [32]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-apl5/igt@gem_mmap_gtt@hang.html > - shard-snb: [INCOMPLETE][33] ([fdo#105411]) -> > [PASS][34] > [33]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-snb6/igt@gem_mmap_gtt@hang.html > [34]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-snb6/igt@gem_mmap_gtt@hang.html > > * igt@gem_persistent_relocs@forked-faulting-reloc-thrashing: > - shard-snb: [DMESG-WARN][35] ([fdo#110789] / > [fdo#110913 ]) -> [PASS][36] > [35]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-snb7/igt@gem_persistent_relocs@forked-faulting-reloc-thrashing.html > [36]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-snb1/igt@gem_persistent_relocs@forked-faulting-reloc-thrashing.html > > * igt@gem_userptr_blits@sync-unmap-cycles: > - shard-kbl: [DMESG-WARN][37] ([fdo#110913 ]) -> > [PASS][38] +1 similar issue > [37]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-kbl3/igt@gem_userptr_blits@sync-unmap-cycles.html > [38]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-kbl3/igt@gem_userptr_blits@sync-unmap-cycles.html > > * igt@i915_suspend@fence-restore-tiled2untiled: > - shard-apl: [DMESG-WARN][39] ([fdo#108566]) -> > [PASS][40] +3 similar issues > [39]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-apl8/igt@i915_suspend@fence-restore-tiled2untiled.html > [40]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-apl8/igt@i915_suspend@fence-restore-tiled2untiled.html > > * igt@kms_cursor_crc@pipe-a-cursor-256x256-sliding: > - shard-skl: [FAIL][41] ([fdo#103232]) -> [PASS][42] > [41]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-skl3/igt@kms_cursor_crc@pipe-a-cursor-256x256-sliding.html > [42]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-skl9/igt@kms_cursor_crc@pipe-a-cursor-256x256-sliding.html > > * igt@kms_draw_crc@draw-method-xrgb2101010-mmap-gtt-ytiled: > - shard-skl: [FAIL][43] ([fdo#103184] / [fdo#103232]) -> > [PASS][44] > [43]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-skl3/igt@kms_draw_crc@draw-method-xrgb2101010-mmap-gtt-ytiled.html > [44]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-skl9/igt@kms_draw_crc@draw-method-xrgb2101010-mmap-gtt-ytiled.html > > * igt@kms_flip@flip-vs-suspend: > - shard-kbl: [DMESG-WARN][45] ([fdo#108566]) -> > [PASS][46] +1 similar issue > [45]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-kbl4/igt@kms_flip@flip-vs-suspend.html > [46]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-kbl7/igt@kms_flip@flip-vs-suspend.html > > * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-msflip-blt: > - shard-iclb: [FAIL][47] ([fdo#103167]) -> [PASS][48] +8 > similar issues > [47]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-iclb4/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-msflip-blt.html > [48]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-iclb3/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-msflip-blt.html > > * igt@kms > _frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-pwrite: > - shard-hsw: [SKIP][49] ([fdo#109271]) -> [PASS][50] +20 > similar issues > [49]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-hsw1/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-pwrite.html > [50]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-hsw6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-pwrite.html > > * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b: > - shard-skl: [INCOMPLETE][51] ([fdo#104108]) -> > [PASS][52] > [51]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-skl9/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b.html > [52]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-skl1/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b.html > > * igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min: > - shard-skl: [FAIL][53] ([fdo#108145]) -> [PASS][54] +1 > similar issue > [53]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-skl3/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min.html > [54]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-skl9/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min.html > > * igt@kms_psr@psr2_sprite_plane_move: > - shard-iclb: [SKIP][55] ([fdo#109441]) -> [PASS][56] +2 > similar issues > [55]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-iclb7/igt@kms_psr@psr2_sprite_plane_move.html > [56]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-iclb2/igt@kms_psr@psr2_sprite_plane_move.html > > * igt@kms_setmode@basic: > - shard-kbl: [FAIL][57] ([fdo#99912]) -> [PASS][58] > [57]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-kbl4/igt@kms_setmode@basic.html > [58]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-kbl7/igt@kms_setmode@basic.html > > * igt@kms_sysfs_edid_timing: > - shard-iclb: [FAIL][59] ([fdo#100047]) -> [PASS][60] > [59]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-iclb3/igt@kms_sysfs_edid_timing.html > [60]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-iclb4/igt@kms_sysfs_edid_timing.html > > > #### Warnings #### > > * igt@kms > _frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-gtt: > - shard-skl: [FAIL][61] ([fdo#108040]) -> [FAIL][62] > ([fdo#103167]) > [61]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6287/shard-skl4/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-gtt.html > [62]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/shard-skl9/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-gtt.html > > > [fdo#100047]: https://bugs.freedesktop.org/show_bug.cgi?id=100047 > [fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166 > [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 > [fdo#103184]: https://bugs.freedesktop.org/show_bug.cgi?id=103184 > [fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232 > [fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665 > [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927 > [fdo#104097]: https://bugs.freedesktop.org/show_bug.cgi?id=104097 > [fdo#104108]: https://bugs.freedesktop.org/show_bug.cgi?id=104108 > [fdo#105363]: https://bugs.freedesktop.org/show_bug.cgi?id=105363 > [fdo#105411]: https://bugs.freedesktop.org/show_bug.cgi?id=105411 > [fdo#108040]: https://bugs.freedesktop.org/show_bug.cgi?id=108040 > [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145 > [fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566 > [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 > [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441 > [fdo#109507]: https://bugs.freedesktop.org/show_bug.cgi?id=109507 > [fdo#110789]: https://bugs.freedesktop.org/show_bug.cgi?id=110789 > [fdo#110854]: https://bugs.freedesktop.org/show_bug.cgi?id=110854 > [fdo#110913 ]: https://bugs.freedesktop.org/show_bug.cgi?id=110913 > [fdo#110938]: https://bugs.freedesktop.org/show_bug.cgi?id=110938 > [fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912 > > > Participating hosts (10 -> 10) > ------------------------------ > > No changes in participating hosts > > > Build changes > ------------- > > * Linux: CI_DRM_6287 -> Patchwork_13316 > > CI_DRM_6287: 3765c2bb2bf60f35709fba4c23070e2b74e14247 @ > git://anongit.freedesktop.org/gfx-ci/linux > IGT_5059: 1f67ee0d09d6513f487f2be74aae9700e755258a @ > git://anongit.freedesktop.org/xorg/app/intel-gpu-tools > Patchwork_13316: 9c14588342ae49686a5bb8948f47554068004a68 @ > git://anongit.freedesktop.org/gfx-ci/linux > piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ > git://anongit.freedesktop.org/piglit > > == Logs == > > For more details see: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13316/
diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c index 69709df4a648..69d908e6a050 100644 --- a/drivers/gpu/drm/i915/display/intel_psr.c +++ b/drivers/gpu/drm/i915/display/intel_psr.c @@ -863,16 +863,23 @@ void intel_psr_disable(struct intel_dp *intel_dp, static void psr_force_hw_tracking_exit(struct drm_i915_private *dev_priv) { - /* - * Display WA #0884: all - * This documented WA for bxt can be safely applied - * broadly so we can force HW tracking to exit PSR - * instead of disabling and re-enabling. - * Workaround tells us to write 0 to CUR_SURFLIVE_A, - * but it makes more sense write to the current active - * pipe. - */ - I915_WRITE(CURSURFLIVE(dev_priv->psr.pipe), 0); + if (INTEL_GEN(dev_priv) >= 9) + /* + * Display WA #0884: skl+ + * This documented WA for bxt can be safely applied + * broadly so we can force HW tracking to exit PSR + * instead of disabling and re-enabling. + * Workaround tells us to write 0 to CUR_SURFLIVE_A, + * but it makes more sense write to the current active + * pipe. + */ + I915_WRITE(CURSURFLIVE(dev_priv->psr.pipe), 0); + else + /* + * A write to CURSURFLIVE do not cause HW tracking to exit PSR + * on older gens so doing the manual exit instead. + */ + intel_psr_exit(dev_priv); } /** @@ -903,6 +910,15 @@ void intel_psr_update(struct intel_dp *intel_dp, /* Force a PSR exit when enabling CRC to avoid CRC timeouts */ if (crtc_state->crc_enabled && psr->enabled) psr_force_hw_tracking_exit(dev_priv); + else if (INTEL_GEN(dev_priv) < 9 && psr->enabled) { + /* + * Activate PSR again after a force exit when enabling + * CRC in older gens + */ + if (!dev_priv->psr.active && + !dev_priv->psr.busy_frontbuffer_bits) + schedule_work(&dev_priv->psr.work); + } goto unlock; }
To do frontbuffer tracking we are depending on Display WA #0884 to exit PSR when there is a frontbuffer modification but according to user reports a write to CURSURFLIVE do not cause PSR to exit in older gens so lets force a PSR exit. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110799 Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com> --- drivers/gpu/drm/i915/display/intel_psr.c | 36 +++++++++++++++++------- 1 file changed, 26 insertions(+), 10 deletions(-)