> -----Original Message-----
> From: Intel-xe <intel-xe-boun...@lists.freedesktop.org> On Behalf Of Gustavo
> Sousa
> Sent: Friday, December 20, 2024 3:44 AM
> To: intel...@lists.freedesktop.org; intel-gfx@lists.freedesktop.org
> Subject: [PATCH 4/4] drm/i915/dmc_wl: Allow enable_dmc_wl=3 to mean
> "always locked"
> 
> When debugging issues that might be related to the DMC wakelock code, it might
> be useful to compare runs with the lock acquired while DC states are enabled 
> vs
> the regular case. If issues disappear with the former, it might be a symptom 
> of
> something wrong in our code. Support having this "always locked" behavior with
> enable_dmc_wl=3.
> 
> Signed-off-by: Gustavo Sousa <gustavo.so...@intel.com>
Reviewed-by: Dnyaneshwar Bhadane <dnyaneshwar.bhad...@intel.com>

Dnyaneshwar
> ---
>  drivers/gpu/drm/i915/display/intel_display_params.c | 2 +-
>  drivers/gpu/drm/i915/display/intel_dmc_wl.c         | 7 ++++++-
>  2 files changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_params.c
> b/drivers/gpu/drm/i915/display/intel_display_params.c
> index f0f388f38fa7..c4f1ab43fc0c 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_params.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_params.c
> @@ -130,7 +130,7 @@
> intel_display_param_named_unsafe(enable_psr2_sel_fetch, bool, 0400,
> 
>  intel_display_param_named_unsafe(enable_dmc_wl, int, 0400,
>       "Enable DMC wakelock "
> -     "(-1=use per-chip default, 0=disabled, 1=enabled, 2=match any register) 
> "
> +     "(-1=use per-chip default, 0=disabled, 1=enabled, 2=match any register,
> 3=always locked) "
>       "Default: -1");
> 
>  __maybe_unused
> diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> index 22e963da65c6..a277c5025f8d 100644
> --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> @@ -57,6 +57,7 @@ enum {
>       ENABLE_DMC_WL_DISABLED,
>       ENABLE_DMC_WL_ENABLED,
>       ENABLE_DMC_WL_ANY_REGISTER,
> +     ENABLE_DMC_WL_ALWAYS_LOCKED,
>       ENABLE_DMC_WL_MAX,
>  };
> 
> @@ -312,6 +313,9 @@ static void intel_dmc_wl_sanitize_param(struct
> intel_display *display)
>       case ENABLE_DMC_WL_ANY_REGISTER:
>               desc = "match any register";
>               break;
> +     case ENABLE_DMC_WL_ALWAYS_LOCKED:
> +             desc = "always locked";
> +             break;
>       default:
>               desc = "unknown";
>               break;
> @@ -332,7 +336,8 @@ void intel_dmc_wl_init(struct intel_display *display)
> 
>       INIT_DELAYED_WORK(&wl->work, intel_dmc_wl_work);
>       spin_lock_init(&wl->lock);
> -     refcount_set(&wl->refcount, 0);
> +     refcount_set(&wl->refcount,
> +                  display->params.enable_dmc_wl ==
> ENABLE_DMC_WL_ALWAYS_LOCKED ? 1
> +: 0);
>  }
> 
>  /* Must only be called as part of enabling dynamic DC states. */
> --
> 2.47.1

Reply via email to