Re: [PATCH 1/2] drm/i915: Runtime disable for eDP DRRS

Rodrigo Vivi
2017-10-31T18:57:06Z

On Tue, Oct 31, 2017 at 09:20:42AM +0000, Ramalingam C wrote:
> From: "C, Ramalingam" <ramalingam.c@intel.com>
>
> Module parameter enable_drrs(Boolean flag) is added to control the
> eDP Idleness drrs enable flow.

This goes on the opposite direction of the current trends.

Well, I'm a big fan of the parameters, but there's a big effort
going on to remove all kernel parameters. I believe it will
be just a matter of time that we have to remove fbc and psr as well.
So probably not a good idea to add something now that we will
have to rework soon.

Maybe we could add a on/off toggle on DRRS now and then
when we remove the parameter for fbc and psr we also add toggles
on debugfs...

Thanks,
Rodrigo.

>
> Modification to this module parameter will be considered on next
> eDP_DRRS enable flow. So after module parameter update, a modeset
> will help to modify the feature state as per the module parameter's
> current state.
>
> Possibility of disabling the DRRS, enables the testing of the
> frontbuffer tracking based features (FBC, DRRS and PSR) as standalone
> or any combination of the set.
>
> Signed-off-by: C, Ramalingam <ramalingam.c@intel.com>
> ---
> drivers/gpu/drm/i915/i915_params.c | 3 +++
> drivers/gpu/drm/i915/i915_params.h | 3 ++-
> drivers/gpu/drm/i915/intel_dp.c | 6 ++++++
> 3 files changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c
> index b4faeb6aa2bd..32f06bb74f9d 100644
> --- a/drivers/gpu/drm/i915/i915_params.c
> +++ b/drivers/gpu/drm/i915/i915_params.c
> @@ -190,3 +190,6 @@ i915_param_named(enable_dpcd_backlight, bool, 0600,
>
> i915_param_named(enable_gvt, bool, 0400,
> "Enable support for Intel GVT-g graphics virtualization host support(default:false)");
> +
> +i915_param_named_unsafe(enable_drrs, bool, 0600,
> + "Enable DRRS. (True=Enabled, False=Disabled [Default])");
> diff --git a/drivers/gpu/drm/i915/i915_params.h b/drivers/gpu/drm/i915/i915_params.h
> index c7292268ed43..3c6fdce1c122 100644
> --- a/drivers/gpu/drm/i915/i915_params.h
> +++ b/drivers/gpu/drm/i915/i915_params.h
> @@ -67,7 +67,8 @@
> param(bool, nuclear_pageflip, false) \
> param(bool, enable_dp_mst, true) \
> param(bool, enable_dpcd_backlight, false) \
> - param(bool, enable_gvt, false)
> + param(bool, enable_gvt, false) \
> + param(bool, enable_drrs, false)
>
> #define MEMBER(T, member, ...) T member;
> struct i915_params {
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index ca48bce23a6f..ff9964cf15cd 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -5568,6 +5568,11 @@ void intel_edp_drrs_enable(struct intel_dp *intel_dp,
> return;
> }
>
> + if (!i915_modparams.enable_drrs) {
> + DRM_DEBUG_KMS("DRRS is disabled from modparams\n");
> + return;
> + }
> +
> mutex_lock(&dev_priv->drrs.mutex);
> if (WARN_ON(dev_priv->drrs.dp)) {
> DRM_ERROR("DRRS already enabled\n");
> @@ -5817,6 +5822,7 @@ intel_dp_drrs_init(struct intel_connector *intel_connector,
> }
>
> dev_priv->drrs.type = dev_priv->vbt.drrs_type;
> + i915_modparams.enable_drrs = true;
>
> dev_priv->drrs.refresh_rate_type = DRRS_HIGH_RR;
> DRM_DEBUG_KMS("seamless DRRS supported for eDP panel.\n");
> --
> 2.7.4
>