Skip to content

Commit f9f031d

Browse files
vsyrjalajlahtine-intel
authored andcommitted
drm/i915/psr: Only allow PSR in LPSP mode on HSW non-ULT
On HSW non-ULT (or at least on Dell Latitude E6540) external displays start to flicker when we enable PSR on the eDP. We observe a much higher SR and PC6 residency than should be possible with an external display, and indeen much higher than what we observe with eDP disabled and only the external display enabled. Looks like the hardware is somehow ignoring the fact that the external display is active during PSR. I wasn't able to redproduce this on my HSW ULT machine, or BDW. So either there's something specific about this particular laptop (eg. some unknown firmware thing) or the issue is limited to just non-ULT HSW systems. All known registers that could affect this look perfectly reasonable on the affected machine. As a workaround let's unmask the LPSP event to prevent PSR entry except while in LPSP mode (only pipe A + eDP active). This will prevent PSR entry entirely when multiple pipes are active. The one slight downside is that we now also prevent PSR entry when driving eDP with pipe B or C, but I think that's a reasonable tradeoff to avoid having to implement a more complex workaround. Cc: [email protected] Fixes: 783d8b8 ("drm/i915/psr: Re-enable PSR1 on hsw/bdw") Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/10092 Signed-off-by: Ville Syrjälä <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] Reviewed-by: Jouni Högander <[email protected]> (cherry picked from commit 94501c3) Signed-off-by: Joonas Lahtinen <[email protected]>
1 parent 6613476 commit f9f031d

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

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

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1525,8 +1525,18 @@ static void intel_psr_enable_source(struct intel_dp *intel_dp,
15251525
* can rely on frontbuffer tracking.
15261526
*/
15271527
mask = EDP_PSR_DEBUG_MASK_MEMUP |
1528-
EDP_PSR_DEBUG_MASK_HPD |
1529-
EDP_PSR_DEBUG_MASK_LPSP;
1528+
EDP_PSR_DEBUG_MASK_HPD;
1529+
1530+
/*
1531+
* For some unknown reason on HSW non-ULT (or at least on
1532+
* Dell Latitude E6540) external displays start to flicker
1533+
* when PSR is enabled on the eDP. SR/PC6 residency is much
1534+
* higher than should be possible with an external display.
1535+
* As a workaround leave LPSP unmasked to prevent PSR entry
1536+
* when external displays are active.
1537+
*/
1538+
if (DISPLAY_VER(dev_priv) >= 8 || IS_HASWELL_ULT(dev_priv))
1539+
mask |= EDP_PSR_DEBUG_MASK_LPSP;
15301540

15311541
if (DISPLAY_VER(dev_priv) < 20)
15321542
mask |= EDP_PSR_DEBUG_MASK_MAX_SLEEP;

0 commit comments

Comments
 (0)