All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915: Don't recheck link status for eDP display.
@ 2017-10-17 21:01 Puthikorn Voravootivat
  2017-10-17 21:21 ` Manasi Navare
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Puthikorn Voravootivat @ 2017-10-17 21:01 UTC (permalink / raw)
  To: intel-gfx
  Cc: Ville Syrjälä,
	Dhinakaran Pandiyan, Rodrigo Vivi, Puthikorn Voravootivat,
	Rich Chen

intel_dp_long_pulse() is always checking link status because
there has been known issues of link loss triggerring long pulse.

However this is not needed for eDP display since we won't have
link loss for internal display. Also there are reports that
screens are flickering during link status check. (repro by
running modetest command repeatedly)

Signed-off-by: Puthikorn Voravootivat <puthik@chromium.org>
---
 drivers/gpu/drm/i915/intel_dp.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 4b65cf137f79..75a77ef257e2 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4763,7 +4763,8 @@ intel_dp_long_pulse(struct intel_connector *intel_connector)
 		 */
 		status = connector_status_disconnected;
 		goto out;
-	} else {
+	} else if (status != connector_status_connected ||
+		   intel_encoder->type != INTEL_OUTPUT_EDP) {
 		/*
 		 * If display is now connected check links status,
 		 * there has been known issues of link loss triggerring
@@ -4775,6 +4776,10 @@ intel_dp_long_pulse(struct intel_connector *intel_connector)
 		 * going back up soon after. And once that happens we must
 		 * retrain the link to get a picture. That's in case no
 		 * userspace component reacted to intermittent HPD dip.
+		 *
+		 * Skip checking links status for connected eDP display.
+		 * There are known issues of display blinking during checking
+		 * link status and we don't have link loss for internal display.
 		 */
 		intel_dp_check_link_status(intel_dp);
 	}
-- 
2.15.0.rc0.271.g36b669edcc-goog

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] drm/i915: Don't recheck link status for eDP display.
  2017-10-17 21:01 [PATCH] drm/i915: Don't recheck link status for eDP display Puthikorn Voravootivat
@ 2017-10-17 21:21 ` Manasi Navare
  2017-10-17 22:46   ` Puthikorn Voravootivat
  2017-10-17 21:44 ` ✓ Fi.CI.BAT: success for " Patchwork
  2017-10-18  9:36 ` ✓ Fi.CI.IGT: " Patchwork
  2 siblings, 1 reply; 9+ messages in thread
From: Manasi Navare @ 2017-10-17 21:21 UTC (permalink / raw)
  To: Puthikorn Voravootivat
  Cc: intel-gfx, Ville Syrjälä,
	Dhinakaran Pandiyan, Rich Chen, Rodrigo Vivi

On Tue, Oct 17, 2017 at 02:01:56PM -0700, Puthikorn Voravootivat wrote:
> intel_dp_long_pulse() is always checking link status because
> there has been known issues of link loss triggerring long pulse.
> 
> However this is not needed for eDP display since we won't have
> link loss for internal display. Also there are reports that
> screens are flickering during link status check. (repro by
> running modetest command repeatedly)
> 
> Signed-off-by: Puthikorn Voravootivat <puthik@chromium.org>
> ---
>  drivers/gpu/drm/i915/intel_dp.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index 4b65cf137f79..75a77ef257e2 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -4763,7 +4763,8 @@ intel_dp_long_pulse(struct intel_connector *intel_connector)
>  		 */
>  		status = connector_status_disconnected;
>  		goto out;
> -	} else {
> +	} else if (status != connector_status_connected ||
> +		   intel_encoder->type != INTEL_OUTPUT_EDP) {
>  		/*
>  		 * If display is now connected check links status,
>  		 * there has been known issues of link loss triggerring
> @@ -4775,6 +4776,10 @@ intel_dp_long_pulse(struct intel_connector *intel_connector)
>  		 * going back up soon after. And once that happens we must
>  		 * retrain the link to get a picture. That's in case no
>  		 * userspace component reacted to intermittent HPD dip.
> +		 *
> +		 * Skip checking links status for connected eDP display.
> +		 * There are known issues of display blinking during checking
> +		 * link status and we don't have link loss for internal display.
>  		 */

Inside intel_dp_check_link_status(), it actually checks if link status is good by
checking both clock recovery and Channel EQ bits in DPCD, only then it will retrain.
So in case of eDP panel, if there is no link loss then it should always return link
status as good and not retrain.
So IMHO I dont think we need to explicitly avoid this for eDP.

When you see the display blinking, do you know for sure that drm_dp_channel_eq_ok() returns false?
Also look at this patch: https://patchwork.freedesktop.org/series/30670/
This makes sure none of the eDP training parameters change unless link is bad. So with this patch, if the
link is good then it should never retrain even in intel_dp_check_link_status() for eDP.

Manasi
>  		intel_dp_check_link_status(intel_dp);
>  	}
> -- 
> 2.15.0.rc0.271.g36b669edcc-goog
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 9+ messages in thread

* ✓ Fi.CI.BAT: success for drm/i915: Don't recheck link status for eDP display.
  2017-10-17 21:01 [PATCH] drm/i915: Don't recheck link status for eDP display Puthikorn Voravootivat
  2017-10-17 21:21 ` Manasi Navare
@ 2017-10-17 21:44 ` Patchwork
  2017-10-18  9:36 ` ✓ Fi.CI.IGT: " Patchwork
  2 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2017-10-17 21:44 UTC (permalink / raw)
  To: Puthikorn Voravootivat; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Don't recheck link status for eDP display.
URL   : https://patchwork.freedesktop.org/series/32164/
State : success

== Summary ==

Series 32164v1 drm/i915: Don't recheck link status for eDP display.
https://patchwork.freedesktop.org/api/1.0/series/32164/revisions/1/mbox/

Test chamelium:
        Subgroup dp-edid-read:
                incomplete -> SKIP       (fi-hsw-4770r)
        Subgroup dp-crc-fast:
                dmesg-fail -> PASS       (fi-kbl-7500u) fdo#102514

fdo#102514 https://bugs.freedesktop.org/show_bug.cgi?id=102514

fi-bdw-5557u     total:289  pass:268  dwarn:0   dfail:0   fail:0   skip:21  time:439s
fi-bdw-gvtdvm    total:289  pass:265  dwarn:0   dfail:0   fail:0   skip:24  time:455s
fi-blb-e6850     total:289  pass:223  dwarn:1   dfail:0   fail:0   skip:65  time:370s
fi-bsw-n3050     total:289  pass:243  dwarn:0   dfail:0   fail:0   skip:46  time:522s
fi-bwr-2160      total:289  pass:183  dwarn:0   dfail:0   fail:0   skip:106 time:263s
fi-bxt-dsi       total:289  pass:259  dwarn:0   dfail:0   fail:0   skip:30  time:496s
fi-bxt-j4205     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:495s
fi-byt-j1900     total:289  pass:253  dwarn:1   dfail:0   fail:0   skip:35  time:490s
fi-byt-n2820     total:289  pass:249  dwarn:1   dfail:0   fail:0   skip:39  time:470s
fi-cfl-s         total:289  pass:253  dwarn:4   dfail:0   fail:0   skip:32  time:556s
fi-elk-e7500     total:289  pass:229  dwarn:0   dfail:0   fail:0   skip:60  time:419s
fi-gdg-551       total:289  pass:178  dwarn:1   dfail:0   fail:1   skip:109 time:250s
fi-glk-1         total:289  pass:261  dwarn:0   dfail:0   fail:0   skip:28  time:584s
fi-hsw-4770r     total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:423s
fi-ilk-650       total:289  pass:228  dwarn:0   dfail:0   fail:0   skip:61  time:431s
fi-ivb-3520m     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:485s
fi-ivb-3770      total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:459s
fi-kbl-7500u     total:289  pass:264  dwarn:1   dfail:0   fail:0   skip:24  time:489s
fi-kbl-7560u     total:289  pass:270  dwarn:0   dfail:0   fail:0   skip:19  time:570s
fi-kbl-7567u     total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:476s
fi-kbl-r         total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:580s
fi-pnv-d510      total:289  pass:222  dwarn:1   dfail:0   fail:0   skip:66  time:538s
fi-skl-6700hq    total:289  pass:263  dwarn:0   dfail:0   fail:0   skip:26  time:650s
fi-skl-6700k     total:289  pass:265  dwarn:0   dfail:0   fail:0   skip:24  time:519s
fi-skl-6770hq    total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:499s
fi-skl-gvtdvm    total:289  pass:266  dwarn:0   dfail:0   fail:0   skip:23  time:453s
fi-snb-2520m     total:289  pass:250  dwarn:0   dfail:0   fail:0   skip:39  time:560s
fi-snb-2600      total:289  pass:249  dwarn:0   dfail:0   fail:0   skip:40  time:416s
fi-skl-6260u failed to connect after reboot

17972293741c44cf70b30bb740bc3d4f2333403c drm-tip: 2017y-10m-17d-18h-04m-07s UTC integration manifest
463a0b758573 drm/i915: Don't recheck link status for eDP display.

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_6083/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] drm/i915: Don't recheck link status for eDP display.
  2017-10-17 21:21 ` Manasi Navare
@ 2017-10-17 22:46   ` Puthikorn Voravootivat
  2017-10-17 23:29     ` Manasi Navare
  0 siblings, 1 reply; 9+ messages in thread
From: Puthikorn Voravootivat @ 2017-10-17 22:46 UTC (permalink / raw)
  To: Manasi Navare
  Cc: Ville Syrjälä,
	intel-gfx, Dhinakaran Pandiyan, Rodrigo Vivi,
	Puthikorn Voravootivat, Rich Chen

I tried  https://patchwork.freedesktop.org/series/30670/ but it doesn't work.

> When you see the display blinking, do you know for sure that drm_dp_channel_eq_ok() returns false?
Yes. Repro is running "modetest" while PSR is on (easier to repro with
PSR2 but PSR1 is fine too)

> lane_align = dp_link_status(link_status,
>    DP_LANE_ALIGN_STATUS_UPDATED);
> if ((lane_align & DP_INTERLANE_ALIGN_DONE) == 0)
>    return false;

I always got lane_align = 128 (DP_LINK_STATUS_UPDATED)
So drm_dp_channel_eq_ok() always return false.

If I disable PSR, drm_dp_channel_eq_ok() will return true and no
blinking occurs.

On Tue, Oct 17, 2017 at 2:21 PM, Manasi Navare
<manasi.d.navare@intel.com> wrote:
> On Tue, Oct 17, 2017 at 02:01:56PM -0700, Puthikorn Voravootivat wrote:
>> intel_dp_long_pulse() is always checking link status because
>> there has been known issues of link loss triggerring long pulse.
>>
>> However this is not needed for eDP display since we won't have
>> link loss for internal display. Also there are reports that
>> screens are flickering during link status check. (repro by
>> running modetest command repeatedly)
>>
>> Signed-off-by: Puthikorn Voravootivat <puthik@chromium.org>
>> ---
>>  drivers/gpu/drm/i915/intel_dp.c | 7 ++++++-
>>  1 file changed, 6 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
>> index 4b65cf137f79..75a77ef257e2 100644
>> --- a/drivers/gpu/drm/i915/intel_dp.c
>> +++ b/drivers/gpu/drm/i915/intel_dp.c
>> @@ -4763,7 +4763,8 @@ intel_dp_long_pulse(struct intel_connector *intel_connector)
>>                */
>>               status = connector_status_disconnected;
>>               goto out;
>> -     } else {
>> +     } else if (status != connector_status_connected ||
>> +                intel_encoder->type != INTEL_OUTPUT_EDP) {
>>               /*
>>                * If display is now connected check links status,
>>                * there has been known issues of link loss triggerring
>> @@ -4775,6 +4776,10 @@ intel_dp_long_pulse(struct intel_connector *intel_connector)
>>                * going back up soon after. And once that happens we must
>>                * retrain the link to get a picture. That's in case no
>>                * userspace component reacted to intermittent HPD dip.
>> +              *
>> +              * Skip checking links status for connected eDP display.
>> +              * There are known issues of display blinking during checking
>> +              * link status and we don't have link loss for internal display.
>>                */
>
> Inside intel_dp_check_link_status(), it actually checks if link status is good by
> checking both clock recovery and Channel EQ bits in DPCD, only then it will retrain.
> So in case of eDP panel, if there is no link loss then it should always return link
> status as good and not retrain.
> So IMHO I dont think we need to explicitly avoid this for eDP.
>
> When you see the display blinking, do you know for sure that drm_dp_channel_eq_ok() returns false?
> Also look at this patch: https://patchwork.freedesktop.org/series/30670/
> This makes sure none of the eDP training parameters change unless link is bad. So with this patch, if the
> link is good then it should never retrain even in intel_dp_check_link_status() for eDP.
>
> Manasi
>>               intel_dp_check_link_status(intel_dp);
>>       }
>> --
>> 2.15.0.rc0.271.g36b669edcc-goog
>>
>> _______________________________________________
>> Intel-gfx mailing list
>> Intel-gfx@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] drm/i915: Don't recheck link status for eDP display.
  2017-10-17 22:46   ` Puthikorn Voravootivat
@ 2017-10-17 23:29     ` Manasi Navare
  2017-10-17 23:31       ` Puthikorn Voravootivat
  0 siblings, 1 reply; 9+ messages in thread
From: Manasi Navare @ 2017-10-17 23:29 UTC (permalink / raw)
  To: Puthikorn Voravootivat
  Cc: intel-gfx, Ville Syrjälä,
	Dhinakaran Pandiyan, Rich Chen, Rodrigo Vivi

On Tue, Oct 17, 2017 at 03:46:00PM -0700, Puthikorn Voravootivat wrote:
> I tried  https://patchwork.freedesktop.org/series/30670/ but it doesn't work.
> 
> > When you see the display blinking, do you know for sure that drm_dp_channel_eq_ok() returns false?
> Yes. Repro is running "modetest" while PSR is on (easier to repro with
> PSR2 but PSR1 is fine too)
> 
> > lane_align = dp_link_status(link_status,
> >    DP_LANE_ALIGN_STATUS_UPDATED);
> > if ((lane_align & DP_INTERLANE_ALIGN_DONE) == 0)
> >    return false;
> 
> I always got lane_align = 128 (DP_LINK_STATUS_UPDATED)
> So drm_dp_channel_eq_ok() always return false.

Hmm, it looks like there is a bug somewhere else that is causing the
link status to get updated and bit LINK_STATUS_UPDATED from LANE_ALIGN_STATUS_UPDATED register
is not being read so not being cleared causing the link to be retrained again.

So I still feel that this patch is a workaround for another bug in the PSR code.
But I will let others comment on this.

Regards
Manasi

> 
> If I disable PSR, drm_dp_channel_eq_ok() will return true and no
> blinking occurs.
> 
> On Tue, Oct 17, 2017 at 2:21 PM, Manasi Navare
> <manasi.d.navare@intel.com> wrote:
> > On Tue, Oct 17, 2017 at 02:01:56PM -0700, Puthikorn Voravootivat wrote:
> >> intel_dp_long_pulse() is always checking link status because
> >> there has been known issues of link loss triggerring long pulse.
> >>
> >> However this is not needed for eDP display since we won't have
> >> link loss for internal display. Also there are reports that
> >> screens are flickering during link status check. (repro by
> >> running modetest command repeatedly)
> >>
> >> Signed-off-by: Puthikorn Voravootivat <puthik@chromium.org>
> >> ---
> >>  drivers/gpu/drm/i915/intel_dp.c | 7 ++++++-
> >>  1 file changed, 6 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> >> index 4b65cf137f79..75a77ef257e2 100644
> >> --- a/drivers/gpu/drm/i915/intel_dp.c
> >> +++ b/drivers/gpu/drm/i915/intel_dp.c
> >> @@ -4763,7 +4763,8 @@ intel_dp_long_pulse(struct intel_connector *intel_connector)
> >>                */
> >>               status = connector_status_disconnected;
> >>               goto out;
> >> -     } else {
> >> +     } else if (status != connector_status_connected ||
> >> +                intel_encoder->type != INTEL_OUTPUT_EDP) {
> >>               /*
> >>                * If display is now connected check links status,
> >>                * there has been known issues of link loss triggerring
> >> @@ -4775,6 +4776,10 @@ intel_dp_long_pulse(struct intel_connector *intel_connector)
> >>                * going back up soon after. And once that happens we must
> >>                * retrain the link to get a picture. That's in case no
> >>                * userspace component reacted to intermittent HPD dip.
> >> +              *
> >> +              * Skip checking links status for connected eDP display.
> >> +              * There are known issues of display blinking during checking
> >> +              * link status and we don't have link loss for internal display.
> >>                */
> >
> > Inside intel_dp_check_link_status(), it actually checks if link status is good by
> > checking both clock recovery and Channel EQ bits in DPCD, only then it will retrain.
> > So in case of eDP panel, if there is no link loss then it should always return link
> > status as good and not retrain.
> > So IMHO I dont think we need to explicitly avoid this for eDP.
> >
> > When you see the display blinking, do you know for sure that drm_dp_channel_eq_ok() returns false?
> > Also look at this patch: https://patchwork.freedesktop.org/series/30670/
> > This makes sure none of the eDP training parameters change unless link is bad. So with this patch, if the
> > link is good then it should never retrain even in intel_dp_check_link_status() for eDP.
> >
> > Manasi
> >>               intel_dp_check_link_status(intel_dp);
> >>       }
> >> --
> >> 2.15.0.rc0.271.g36b669edcc-goog
> >>
> >> _______________________________________________
> >> Intel-gfx mailing list
> >> Intel-gfx@lists.freedesktop.org
> >> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] drm/i915: Don't recheck link status for eDP display.
  2017-10-17 23:29     ` Manasi Navare
@ 2017-10-17 23:31       ` Puthikorn Voravootivat
  2017-10-17 23:39         ` Rodrigo Vivi
  0 siblings, 1 reply; 9+ messages in thread
From: Puthikorn Voravootivat @ 2017-10-17 23:31 UTC (permalink / raw)
  To: vathsala nagaraju
  Cc: Ville Syrjälä,
	intel-gfx, Dhinakaran Pandiyan, Rodrigo Vivi,
	Puthikorn Voravootivat, Rich Chen

+ Vathsala for PSR related code.

On Tue, Oct 17, 2017 at 4:29 PM, Manasi Navare
<manasi.d.navare@intel.com> wrote:
> On Tue, Oct 17, 2017 at 03:46:00PM -0700, Puthikorn Voravootivat wrote:
>> I tried  https://patchwork.freedesktop.org/series/30670/ but it doesn't work.
>>
>> > When you see the display blinking, do you know for sure that drm_dp_channel_eq_ok() returns false?
>> Yes. Repro is running "modetest" while PSR is on (easier to repro with
>> PSR2 but PSR1 is fine too)
>>
>> > lane_align = dp_link_status(link_status,
>> >    DP_LANE_ALIGN_STATUS_UPDATED);
>> > if ((lane_align & DP_INTERLANE_ALIGN_DONE) == 0)
>> >    return false;
>>
>> I always got lane_align = 128 (DP_LINK_STATUS_UPDATED)
>> So drm_dp_channel_eq_ok() always return false.
>
> Hmm, it looks like there is a bug somewhere else that is causing the
> link status to get updated and bit LINK_STATUS_UPDATED from LANE_ALIGN_STATUS_UPDATED register
> is not being read so not being cleared causing the link to be retrained again.
>
> So I still feel that this patch is a workaround for another bug in the PSR code.
> But I will let others comment on this.
>
> Regards
> Manasi
>
>>
>> If I disable PSR, drm_dp_channel_eq_ok() will return true and no
>> blinking occurs.
>>
>> On Tue, Oct 17, 2017 at 2:21 PM, Manasi Navare
>> <manasi.d.navare@intel.com> wrote:
>> > On Tue, Oct 17, 2017 at 02:01:56PM -0700, Puthikorn Voravootivat wrote:
>> >> intel_dp_long_pulse() is always checking link status because
>> >> there has been known issues of link loss triggerring long pulse.
>> >>
>> >> However this is not needed for eDP display since we won't have
>> >> link loss for internal display. Also there are reports that
>> >> screens are flickering during link status check. (repro by
>> >> running modetest command repeatedly)
>> >>
>> >> Signed-off-by: Puthikorn Voravootivat <puthik@chromium.org>
>> >> ---
>> >>  drivers/gpu/drm/i915/intel_dp.c | 7 ++++++-
>> >>  1 file changed, 6 insertions(+), 1 deletion(-)
>> >>
>> >> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
>> >> index 4b65cf137f79..75a77ef257e2 100644
>> >> --- a/drivers/gpu/drm/i915/intel_dp.c
>> >> +++ b/drivers/gpu/drm/i915/intel_dp.c
>> >> @@ -4763,7 +4763,8 @@ intel_dp_long_pulse(struct intel_connector *intel_connector)
>> >>                */
>> >>               status = connector_status_disconnected;
>> >>               goto out;
>> >> -     } else {
>> >> +     } else if (status != connector_status_connected ||
>> >> +                intel_encoder->type != INTEL_OUTPUT_EDP) {
>> >>               /*
>> >>                * If display is now connected check links status,
>> >>                * there has been known issues of link loss triggerring
>> >> @@ -4775,6 +4776,10 @@ intel_dp_long_pulse(struct intel_connector *intel_connector)
>> >>                * going back up soon after. And once that happens we must
>> >>                * retrain the link to get a picture. That's in case no
>> >>                * userspace component reacted to intermittent HPD dip.
>> >> +              *
>> >> +              * Skip checking links status for connected eDP display.
>> >> +              * There are known issues of display blinking during checking
>> >> +              * link status and we don't have link loss for internal display.
>> >>                */
>> >
>> > Inside intel_dp_check_link_status(), it actually checks if link status is good by
>> > checking both clock recovery and Channel EQ bits in DPCD, only then it will retrain.
>> > So in case of eDP panel, if there is no link loss then it should always return link
>> > status as good and not retrain.
>> > So IMHO I dont think we need to explicitly avoid this for eDP.
>> >
>> > When you see the display blinking, do you know for sure that drm_dp_channel_eq_ok() returns false?
>> > Also look at this patch: https://patchwork.freedesktop.org/series/30670/
>> > This makes sure none of the eDP training parameters change unless link is bad. So with this patch, if the
>> > link is good then it should never retrain even in intel_dp_check_link_status() for eDP.
>> >
>> > Manasi
>> >>               intel_dp_check_link_status(intel_dp);
>> >>       }
>> >> --
>> >> 2.15.0.rc0.271.g36b669edcc-goog
>> >>
>> >> _______________________________________________
>> >> Intel-gfx mailing list
>> >> Intel-gfx@lists.freedesktop.org
>> >> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] drm/i915: Don't recheck link status for eDP display.
  2017-10-17 23:31       ` Puthikorn Voravootivat
@ 2017-10-17 23:39         ` Rodrigo Vivi
  2017-10-17 23:43           ` Puthikorn Voravootivat
  0 siblings, 1 reply; 9+ messages in thread
From: Rodrigo Vivi @ 2017-10-17 23:39 UTC (permalink / raw)
  To: Puthikorn Voravootivat
  Cc: Ville Syrjälä, intel-gfx, Dhinakaran Pandiyan, Rich Chen


Puthikorn,

could you please test the patch Manasi had pointed out [1] to see if that
solves your issue instead of your patch?

If that one solves it you put a Tested-by on that one to help that getting merged.

If that is not the case so we need to hunt down PSR2 bugs that are killing the link status.

[1]: https://patchwork.freedesktop.org/patch/178035/

Thanks,
Rodrigo.

On Tue, Oct 17, 2017 at 11:31:46PM +0000, Puthikorn Voravootivat wrote:
> + Vathsala for PSR related code.
> 
> On Tue, Oct 17, 2017 at 4:29 PM, Manasi Navare
> <manasi.d.navare@intel.com> wrote:
> > On Tue, Oct 17, 2017 at 03:46:00PM -0700, Puthikorn Voravootivat wrote:
> >> I tried  https://patchwork.freedesktop.org/series/30670/ but it doesn't work.
> >>
> >> > When you see the display blinking, do you know for sure that drm_dp_channel_eq_ok() returns false?
> >> Yes. Repro is running "modetest" while PSR is on (easier to repro with
> >> PSR2 but PSR1 is fine too)
> >>
> >> > lane_align = dp_link_status(link_status,
> >> >    DP_LANE_ALIGN_STATUS_UPDATED);
> >> > if ((lane_align & DP_INTERLANE_ALIGN_DONE) == 0)
> >> >    return false;
> >>
> >> I always got lane_align = 128 (DP_LINK_STATUS_UPDATED)
> >> So drm_dp_channel_eq_ok() always return false.
> >
> > Hmm, it looks like there is a bug somewhere else that is causing the
> > link status to get updated and bit LINK_STATUS_UPDATED from LANE_ALIGN_STATUS_UPDATED register
> > is not being read so not being cleared causing the link to be retrained again.
> >
> > So I still feel that this patch is a workaround for another bug in the PSR code.
> > But I will let others comment on this.
> >
> > Regards
> > Manasi
> >
> >>
> >> If I disable PSR, drm_dp_channel_eq_ok() will return true and no
> >> blinking occurs.
> >>
> >> On Tue, Oct 17, 2017 at 2:21 PM, Manasi Navare
> >> <manasi.d.navare@intel.com> wrote:
> >> > On Tue, Oct 17, 2017 at 02:01:56PM -0700, Puthikorn Voravootivat wrote:
> >> >> intel_dp_long_pulse() is always checking link status because
> >> >> there has been known issues of link loss triggerring long pulse.
> >> >>
> >> >> However this is not needed for eDP display since we won't have
> >> >> link loss for internal display. Also there are reports that
> >> >> screens are flickering during link status check. (repro by
> >> >> running modetest command repeatedly)
> >> >>
> >> >> Signed-off-by: Puthikorn Voravootivat <puthik@chromium.org>
> >> >> ---
> >> >>  drivers/gpu/drm/i915/intel_dp.c | 7 ++++++-
> >> >>  1 file changed, 6 insertions(+), 1 deletion(-)
> >> >>
> >> >> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> >> >> index 4b65cf137f79..75a77ef257e2 100644
> >> >> --- a/drivers/gpu/drm/i915/intel_dp.c
> >> >> +++ b/drivers/gpu/drm/i915/intel_dp.c
> >> >> @@ -4763,7 +4763,8 @@ intel_dp_long_pulse(struct intel_connector *intel_connector)
> >> >>                */
> >> >>               status = connector_status_disconnected;
> >> >>               goto out;
> >> >> -     } else {
> >> >> +     } else if (status != connector_status_connected ||
> >> >> +                intel_encoder->type != INTEL_OUTPUT_EDP) {
> >> >>               /*
> >> >>                * If display is now connected check links status,
> >> >>                * there has been known issues of link loss triggerring
> >> >> @@ -4775,6 +4776,10 @@ intel_dp_long_pulse(struct intel_connector *intel_connector)
> >> >>                * going back up soon after. And once that happens we must
> >> >>                * retrain the link to get a picture. That's in case no
> >> >>                * userspace component reacted to intermittent HPD dip.
> >> >> +              *
> >> >> +              * Skip checking links status for connected eDP display.
> >> >> +              * There are known issues of display blinking during checking
> >> >> +              * link status and we don't have link loss for internal display.
> >> >>                */
> >> >
> >> > Inside intel_dp_check_link_status(), it actually checks if link status is good by
> >> > checking both clock recovery and Channel EQ bits in DPCD, only then it will retrain.
> >> > So in case of eDP panel, if there is no link loss then it should always return link
> >> > status as good and not retrain.
> >> > So IMHO I dont think we need to explicitly avoid this for eDP.
> >> >
> >> > When you see the display blinking, do you know for sure that drm_dp_channel_eq_ok() returns false?
> >> > Also look at this patch: https://patchwork.freedesktop.org/series/30670/
> >> > This makes sure none of the eDP training parameters change unless link is bad. So with this patch, if the
> >> > link is good then it should never retrain even in intel_dp_check_link_status() for eDP.
> >> >
> >> > Manasi
> >> >>               intel_dp_check_link_status(intel_dp);
> >> >>       }
> >> >> --
> >> >> 2.15.0.rc0.271.g36b669edcc-goog
> >> >>
> >> >> _______________________________________________
> >> >> Intel-gfx mailing list
> >> >> Intel-gfx@lists.freedesktop.org
> >> >> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] drm/i915: Don't recheck link status for eDP display.
  2017-10-17 23:39         ` Rodrigo Vivi
@ 2017-10-17 23:43           ` Puthikorn Voravootivat
  0 siblings, 0 replies; 9+ messages in thread
From: Puthikorn Voravootivat @ 2017-10-17 23:43 UTC (permalink / raw)
  To: Rodrigo Vivi
  Cc: Ville Syrjälä,
	intel-gfx, Dhinakaran Pandiyan, Puthikorn Voravootivat,
	Rich Chen

Hi Rodrigo

The previous email (quote below) is tested with that patch applied.

>> >> > lane_align = dp_link_status(link_status,
>> >> >    DP_LANE_ALIGN_STATUS_UPDATED);
>> >> > if ((lane_align & DP_INTERLANE_ALIGN_DONE) == 0)
>> >> >    return false;
>> >>
>> >> I always got lane_align = 128 (DP_LINK_STATUS_UPDATED)
>> >> So drm_dp_channel_eq_ok() always return false.

Thanks


On Tue, Oct 17, 2017 at 4:39 PM, Rodrigo Vivi <rodrigo.vivi@intel.com> wrote:
>
> Puthikorn,
>
> could you please test the patch Manasi had pointed out [1] to see if that
> solves your issue instead of your patch?
>
> If that one solves it you put a Tested-by on that one to help that getting merged.
>
> If that is not the case so we need to hunt down PSR2 bugs that are killing the link status.
>
> [1]: https://patchwork.freedesktop.org/patch/178035/
>
> Thanks,
> Rodrigo.
>
> On Tue, Oct 17, 2017 at 11:31:46PM +0000, Puthikorn Voravootivat wrote:
>> + Vathsala for PSR related code.
>>
>> On Tue, Oct 17, 2017 at 4:29 PM, Manasi Navare
>> <manasi.d.navare@intel.com> wrote:
>> > On Tue, Oct 17, 2017 at 03:46:00PM -0700, Puthikorn Voravootivat wrote:
>> >> I tried  https://patchwork.freedesktop.org/series/30670/ but it doesn't work.
>> >>
>> >> > When you see the display blinking, do you know for sure that drm_dp_channel_eq_ok() returns false?
>> >> Yes. Repro is running "modetest" while PSR is on (easier to repro with
>> >> PSR2 but PSR1 is fine too)
>> >>
>> >> > lane_align = dp_link_status(link_status,
>> >> >    DP_LANE_ALIGN_STATUS_UPDATED);
>> >> > if ((lane_align & DP_INTERLANE_ALIGN_DONE) == 0)
>> >> >    return false;
>> >>
>> >> I always got lane_align = 128 (DP_LINK_STATUS_UPDATED)
>> >> So drm_dp_channel_eq_ok() always return false.
>> >
>> > Hmm, it looks like there is a bug somewhere else that is causing the
>> > link status to get updated and bit LINK_STATUS_UPDATED from LANE_ALIGN_STATUS_UPDATED register
>> > is not being read so not being cleared causing the link to be retrained again.
>> >
>> > So I still feel that this patch is a workaround for another bug in the PSR code.
>> > But I will let others comment on this.
>> >
>> > Regards
>> > Manasi
>> >
>> >>
>> >> If I disable PSR, drm_dp_channel_eq_ok() will return true and no
>> >> blinking occurs.
>> >>
>> >> On Tue, Oct 17, 2017 at 2:21 PM, Manasi Navare
>> >> <manasi.d.navare@intel.com> wrote:
>> >> > On Tue, Oct 17, 2017 at 02:01:56PM -0700, Puthikorn Voravootivat wrote:
>> >> >> intel_dp_long_pulse() is always checking link status because
>> >> >> there has been known issues of link loss triggerring long pulse.
>> >> >>
>> >> >> However this is not needed for eDP display since we won't have
>> >> >> link loss for internal display. Also there are reports that
>> >> >> screens are flickering during link status check. (repro by
>> >> >> running modetest command repeatedly)
>> >> >>
>> >> >> Signed-off-by: Puthikorn Voravootivat <puthik@chromium.org>
>> >> >> ---
>> >> >>  drivers/gpu/drm/i915/intel_dp.c | 7 ++++++-
>> >> >>  1 file changed, 6 insertions(+), 1 deletion(-)
>> >> >>
>> >> >> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
>> >> >> index 4b65cf137f79..75a77ef257e2 100644
>> >> >> --- a/drivers/gpu/drm/i915/intel_dp.c
>> >> >> +++ b/drivers/gpu/drm/i915/intel_dp.c
>> >> >> @@ -4763,7 +4763,8 @@ intel_dp_long_pulse(struct intel_connector *intel_connector)
>> >> >>                */
>> >> >>               status = connector_status_disconnected;
>> >> >>               goto out;
>> >> >> -     } else {
>> >> >> +     } else if (status != connector_status_connected ||
>> >> >> +                intel_encoder->type != INTEL_OUTPUT_EDP) {
>> >> >>               /*
>> >> >>                * If display is now connected check links status,
>> >> >>                * there has been known issues of link loss triggerring
>> >> >> @@ -4775,6 +4776,10 @@ intel_dp_long_pulse(struct intel_connector *intel_connector)
>> >> >>                * going back up soon after. And once that happens we must
>> >> >>                * retrain the link to get a picture. That's in case no
>> >> >>                * userspace component reacted to intermittent HPD dip.
>> >> >> +              *
>> >> >> +              * Skip checking links status for connected eDP display.
>> >> >> +              * There are known issues of display blinking during checking
>> >> >> +              * link status and we don't have link loss for internal display.
>> >> >>                */
>> >> >
>> >> > Inside intel_dp_check_link_status(), it actually checks if link status is good by
>> >> > checking both clock recovery and Channel EQ bits in DPCD, only then it will retrain.
>> >> > So in case of eDP panel, if there is no link loss then it should always return link
>> >> > status as good and not retrain.
>> >> > So IMHO I dont think we need to explicitly avoid this for eDP.
>> >> >
>> >> > When you see the display blinking, do you know for sure that drm_dp_channel_eq_ok() returns false?
>> >> > Also look at this patch: https://patchwork.freedesktop.org/series/30670/
>> >> > This makes sure none of the eDP training parameters change unless link is bad. So with this patch, if the
>> >> > link is good then it should never retrain even in intel_dp_check_link_status() for eDP.
>> >> >
>> >> > Manasi
>> >> >>               intel_dp_check_link_status(intel_dp);
>> >> >>       }
>> >> >> --
>> >> >> 2.15.0.rc0.271.g36b669edcc-goog
>> >> >>
>> >> >> _______________________________________________
>> >> >> Intel-gfx mailing list
>> >> >> Intel-gfx@lists.freedesktop.org
>> >> >> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 9+ messages in thread

* ✓ Fi.CI.IGT: success for drm/i915: Don't recheck link status for eDP display.
  2017-10-17 21:01 [PATCH] drm/i915: Don't recheck link status for eDP display Puthikorn Voravootivat
  2017-10-17 21:21 ` Manasi Navare
  2017-10-17 21:44 ` ✓ Fi.CI.BAT: success for " Patchwork
@ 2017-10-18  9:36 ` Patchwork
  2 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2017-10-18  9:36 UTC (permalink / raw)
  To: Puthikorn Voravootivat; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Don't recheck link status for eDP display.
URL   : https://patchwork.freedesktop.org/series/32164/
State : success

== Summary ==

Test kms_flip:
        Subgroup flip-vs-rmfb:
                pass       -> DMESG-WARN (shard-hsw) fdo#102614 +1
Test kms_setmode:
        Subgroup basic:
                fail       -> PASS       (shard-hsw) fdo#99912
Test perf:
        Subgroup polling:
                pass       -> FAIL       (shard-hsw) fdo#102252

fdo#102614 https://bugs.freedesktop.org/show_bug.cgi?id=102614
fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912
fdo#102252 https://bugs.freedesktop.org/show_bug.cgi?id=102252

shard-hsw        total:2551 pass:1439 dwarn:2   dfail:0   fail:9   skip:1101 time:9323s

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_6083/shards.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2017-10-18  9:36 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-17 21:01 [PATCH] drm/i915: Don't recheck link status for eDP display Puthikorn Voravootivat
2017-10-17 21:21 ` Manasi Navare
2017-10-17 22:46   ` Puthikorn Voravootivat
2017-10-17 23:29     ` Manasi Navare
2017-10-17 23:31       ` Puthikorn Voravootivat
2017-10-17 23:39         ` Rodrigo Vivi
2017-10-17 23:43           ` Puthikorn Voravootivat
2017-10-17 21:44 ` ✓ Fi.CI.BAT: success for " Patchwork
2017-10-18  9:36 ` ✓ Fi.CI.IGT: " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.