Message ID | 20221108211822.28048-3-animesh.manna@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/3] drm/i915/pps: Add get_pps_idx() hook as part of pps_get_register() cleanup | expand |
On Wed, 09 Nov 2022, Animesh Manna <animesh.manna@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. 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@intel.com> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Cc: Uma Shankar <uma.shankar@intel.com> > Signed-off-by: Animesh Manna <animesh.manna@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 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,
> -----Original Message----- > From: Nikula, Jani <jani.nikula@intel.com> > Sent: Wednesday, November 9, 2022 3:26 PM > To: Manna, Animesh <animesh.manna@intel.com>; intel- > gfx@lists.freedesktop.org > Cc: Manna, Animesh <animesh.manna@intel.com>; Ville Syrjälä > <ville.syrjala@linux.intel.com>; Shankar, Uma <uma.shankar@intel.com> > Subject: Re: [PATCH 3/3] drm/i915/edp: Fix warning as vdd went down without > driver knowledge > > On Wed, 09 Nov 2022, Animesh Manna <animesh.manna@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. > > 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? With the patch series - https://patchwork.freedesktop.org/series/109820/ & The following log - https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_109820v2/bat-adlp-4/igt@i915_module_load@load.html We can see the WARN_ON() called after <7> [114.864669] i915 0000:00:02.0: [drm:intel_panel_add_edid_fixed_modes [i915]] [CONNECTOR:236:eDP-1] using preferred EDID fixed mode: "1920x1080": 60 138500 1920 1968 2000 2080 1080 1083 1088 1111 0x48 0xa <7> [114.864784] i915 0000:00:02.0: [drm:intel_panel_add_edid_fixed_modes [i915]] [CONNECTOR:236:eDP-1] using alternate EDID fixed mode: "1920x1080": 30 69320 1920 1968 2000 2080 1080 1083 1088 1111 0x40 0xa <4> [114.864923] ------------[ cut here ]------------ <4> [114.864927] i915 0000:00:02.0: drm_WARN_ON(intel_dp->pps.vdd_wakeref) <4> [114.864951] WARNING: CPU: 4 PID: 1281 at drivers/gpu/drm/i915/display/intel_pps.c:603 intel_pps_vdd_on_unlocked+0x2b8/0x2d0 [i915] My fix also added in intel_pps_vdd_on_unlocked() only. I have run with the fix and warning is not seen. Can you please let me know if this changes looks ok. Please me know for any additional info. Regards, Animesh > > BR, > Jani. > > > > > Cc: Jani Nikula <jani.nikula@intel.com> > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Cc: Uma Shankar <uma.shankar@intel.com> > > Signed-off-by: Animesh Manna <animesh.manna@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 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
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,
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@intel.com> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Uma Shankar <uma.shankar@intel.com> Signed-off-by: Animesh Manna <animesh.manna@intel.com> --- drivers/gpu/drm/i915/display/intel_pps.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)