[Intel-gfx] [PATCH 3/3] drm/i915/edp: Fix warning as vdd went down without driver knowledge
Jani Nikula
jani.nikula at intel.com
Wed Nov 9 11:46:17 UTC 2022
On Wed, 09 Nov 2022, Animesh Manna <animesh.manna at intel.com> wrote:
> Kernel warning triggered as vdd went down after certain time during
> aux transfer in connector init sequence. To solve the kernel
> warning adjust power domain and vdd wakeref count.
> Currently issue seen on ADL so add the above adjustment part of
> ADL platform check, if needed will extend for future platform.
>
> Cc: Jani Nikula <jani.nikula at intel.com>
> Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> Cc: Uma Shankar <uma.shankar at intel.com>
> Signed-off-by: Animesh Manna <animesh.manna at intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_pps.c | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_pps.c b/drivers/gpu/drm/i915/display/intel_pps.c
> index 5738af154bd2..ebc03c8f73c5 100644
> --- a/drivers/gpu/drm/i915/display/intel_pps.c
> +++ b/drivers/gpu/drm/i915/display/intel_pps.c
> @@ -597,8 +597,15 @@ bool intel_pps_vdd_on_unlocked(struct intel_dp *intel_dp)
> cancel_delayed_work(&intel_dp->pps.panel_vdd_work);
> intel_dp->pps.want_panel_vdd = true;
>
> - if (edp_have_panel_vdd(intel_dp))
> + if (edp_have_panel_vdd(intel_dp)) {
> return need_to_disable;
> + } else {
> + if ((IS_ALDERLAKE_S(dev_priv) || IS_ALDERLAKE_P(dev_priv)) &&
> + intel_dp->pps.vdd_wakeref)
> + intel_display_power_put(dev_priv,
> + intel_aux_power_domain(dig_port),
> + fetch_and_zero(&intel_dp->pps.vdd_wakeref));
> + }
Already replied to patch 2, but repeating here:
We have two eDP, each with their own intel_dp->pps, but both checking
the same PPS hardware in edp_have_panel_vdd().
This is not the fix.
The fix is to ensure they both use their own PPS harware
instance. That's what the goal with patches 1&2 is, but there's still an
issue there.
BR,
Jani.
>
> drm_WARN_ON(&dev_priv->drm, intel_dp->pps.vdd_wakeref);
> intel_dp->pps.vdd_wakeref = intel_display_power_get(dev_priv,
--
Jani Nikula, Intel Open Source Graphics Center
More information about the Intel-gfx
mailing list