Re: [PATCH] drm/i915/psr: Only allow PSR in LPSP mode on HSW non-ULT

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2024-01-18 at 23:21 +0200, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>
> 
> 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: stable@xxxxxxxxxxxxxxx
> Fixes: 783d8b80871f ("drm/i915/psr: Re-enable PSR1 on hsw/bdw")
> Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/10092
> Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>

Reviewed-by: Jouni Högander <jouni.hogander@xxxxxxxxx>

> ---
>  drivers/gpu/drm/i915/display/intel_psr.c | 14 ++++++++++++--
>  1 file changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c
> b/drivers/gpu/drm/i915/display/intel_psr.c
> index 696d5d32ca9d..1010b8c405df 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -1544,8 +1544,18 @@ static void intel_psr_enable_source(struct
> intel_dp *intel_dp,
>          * can rely on frontbuffer tracking.
>          */
>         mask = EDP_PSR_DEBUG_MASK_MEMUP |
> -              EDP_PSR_DEBUG_MASK_HPD |
> -              EDP_PSR_DEBUG_MASK_LPSP;
> +              EDP_PSR_DEBUG_MASK_HPD;
> +
> +       /*
> +        * For some unknown reason on HSW non-ULT (or at least on
> +        * Dell Latitude E6540) external displays start to flicker
> +        * when PSR is enabled on the eDP. SR/PC6 residency is much
> +        * higher than should be possible with an external display.
> +        * As a workaround leave LPSP unmasked to prevent PSR entry
> +        * when external displays are active.
> +        */
> +       if (DISPLAY_VER(dev_priv) >= 8 || IS_HASWELL_ULT(dev_priv))
> +               mask |= EDP_PSR_DEBUG_MASK_LPSP;
>  
>         if (DISPLAY_VER(dev_priv) < 20)
>                 mask |= EDP_PSR_DEBUG_MASK_MAX_SLEEP;





[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux