On Wed, 09 Nov 2022, Animesh Manna <animesh.manna@xxxxxxxxx> 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. Do you understand where the original drm_WARN_ON(intel_dp->pps.vdd_wakeref) warning comes from and why? What is this one? What are you doing here? Do you have a backtrace of this when running patches 1&2? BR, Jani. > > Cc: Jani Nikula <jani.nikula@xxxxxxxxx> > Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > Cc: Uma Shankar <uma.shankar@xxxxxxxxx> > Signed-off-by: Animesh Manna <animesh.manna@xxxxxxxxx> > --- > 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 0975e49f8d03..1857bbcc6fd4 100644 > --- a/drivers/gpu/drm/i915/display/intel_pps.c > +++ b/drivers/gpu/drm/i915/display/intel_pps.c > @@ -587,8 +587,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)); > + } > > 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