[Intel-gfx] [PATCH v2] drm/i915/display: Allow PSR2 selective fetch to be enabled at run-time

Mun, Gwan-gyeong gwan-gyeong.mun at intel.com
Mon Feb 22 11:17:11 UTC 2021


On Tue, 2021-02-09 at 12:50 -0800, José Roberto de Souza wrote:
> Right now CI is blacklisting module reload, so we need to be able to
> enable PSR2 selective fetch in run time to test this feature before
> enable it by default.
> Changes in IGT will also be needed.
> 
> v2:
> - Fixed handling of I915_PSR_DEBUG_ENABLE_SEL_FETCH in
> intel_psr_debug_set()
> 
> Cc: Gwan-gyeong Mun <gwan-gyeong.mun at intel.com>
> Signed-off-by: José Roberto de Souza <jose.souza at intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_display_types.h | 1 +
>  drivers/gpu/drm/i915/display/intel_psr.c           | 8 +++++---
>  2 files changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> b/drivers/gpu/drm/i915/display/intel_display_types.h
> index ebaa9d0ed376..577f47aa6b3e 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -1425,6 +1425,7 @@ struct intel_psr {
>  #define I915_PSR_DEBUG_DISABLE         0x01
>  #define I915_PSR_DEBUG_ENABLE          0x02
>  #define I915_PSR_DEBUG_FORCE_PSR1      0x03
> +#define I915_PSR_DEBUG_ENABLE_SEL_FETCH        0x4
>  #define I915_PSR_DEBUG_IRQ             0x10
>  
>         u32 debug;
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c
> b/drivers/gpu/drm/i915/display/intel_psr.c
> index bf214d0e2dec..43e9e362382b 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -684,7 +684,8 @@ static bool
> intel_psr2_sel_fetch_config_valid(struct intel_dp *intel_dp,
>         struct intel_plane *plane;
>         int i;
>  
> -       if (!dev_priv->params.enable_psr2_sel_fetch) {
> +       if (!dev_priv->params.enable_psr2_sel_fetch &&
> +           intel_dp->psr.debug != I915_PSR_DEBUG_ENABLE_SEL_FETCH) {
>                 drm_dbg_kms(&dev_priv->drm,
>                             "PSR2 sel fetch not enabled, disabled by
> parameter\n");
>                 return false;
> @@ -1448,7 +1449,8 @@ void intel_psr_update(struct intel_dp
> *intel_dp,
>         enable = crtc_state->has_psr;
>         psr2_enable = crtc_state->has_psr2;
>  
> -       if (enable == psr->enabled && psr2_enable == psr-
> >psr2_enabled) {
> +       if (enable == psr->enabled && psr2_enable == psr-
> >psr2_enabled &&
> +           crtc_state->enable_psr2_sel_fetch == psr-
> >psr2_sel_fetch_enabled) {
>                 /* Force a PSR exit when enabling CRC to avoid CRC
> timeouts */
>                 if (crtc_state->crc_enabled && psr->enabled)
>                         psr_force_hw_tracking_exit(intel_dp);
> @@ -1637,7 +1639,7 @@ int intel_psr_debug_set(struct intel_dp
> *intel_dp, u64 val)
>         int ret;
>  
>         if (val & ~(I915_PSR_DEBUG_IRQ | I915_PSR_DEBUG_MODE_MASK) ||
> -           mode > I915_PSR_DEBUG_FORCE_PSR1) {
> +           mode > I915_PSR_DEBUG_ENABLE_SEL_FETCH) {
>                 drm_dbg_kms(&dev_priv->drm, "Invalid debug mask
> %llx\n", val);
>                 return -EINVAL;
>         }

Looks good to me.
Reviewed-by: Gwan-gyeong Mun <gwan-gyeong.mun at intel.com>





More information about the Intel-gfx mailing list