2023-06-15 00:02:23

by Pablo Ceballos

[permalink] [raw]
Subject: [PATCH v2] drm/i915/display/lspcon: Increase LSPCON mode settle timeout

This is to eliminate all cases of "*ERROR* LSPCON mode hasn't settled",
followed by link training errors. Intel engineers recommended increasing
this timeout and that does resolve the issue.

On some CometLake-based device designs the Parade PS175 takes more than
400ms to settle in PCON mode. 100 reboot trials on one device resulted
in a median settle time of 440ms and a maximum of 444ms. Even after
increasing the timeout to 500ms, 2% of devices still had this error. So
this increases the timeout to 800ms.

Signed-off-by: Pablo Ceballos <[email protected]>
---

Changelog since v1:
- Added more details in the commit message

drivers/gpu/drm/i915/display/intel_lspcon.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_lspcon.c b/drivers/gpu/drm/i915/display/intel_lspcon.c
index bb3b5355a0d9..d7299fdc43ad 100644
--- a/drivers/gpu/drm/i915/display/intel_lspcon.c
+++ b/drivers/gpu/drm/i915/display/intel_lspcon.c
@@ -167,7 +167,7 @@ static enum drm_lspcon_mode lspcon_wait_mode(struct intel_lspcon *lspcon,
drm_dbg_kms(&i915->drm, "Waiting for LSPCON mode %s to settle\n",
lspcon_mode_name(mode));

- wait_for((current_mode = lspcon_get_current_mode(lspcon)) == mode, 400);
+ wait_for((current_mode = lspcon_get_current_mode(lspcon)) == mode, 800);
if (current_mode != mode)
drm_err(&i915->drm, "LSPCON mode hasn't settled\n");

--
2.41.0.162.gfafddb0af9-goog



2023-06-15 05:10:57

by Nautiyal, Ankit K

[permalink] [raw]
Subject: Re: [Intel-gfx] [PATCH v2] drm/i915/display/lspcon: Increase LSPCON mode settle timeout


On 6/15/2023 5:24 AM, Pablo Ceballos wrote:
> This is to eliminate all cases of "*ERROR* LSPCON mode hasn't settled",
> followed by link training errors. Intel engineers recommended increasing
> this timeout and that does resolve the issue.
>
> On some CometLake-based device designs the Parade PS175 takes more than
> 400ms to settle in PCON mode. 100 reboot trials on one device resulted
> in a median settle time of 440ms and a maximum of 444ms. Even after
> increasing the timeout to 500ms, 2% of devices still had this error. So
> this increases the timeout to 800ms.

In one of the gitlab issue, it was tried with 1000ms as well, situation
did improve, but issue didn't get fully resolved. [1].

I was wondering if trying to set LS/PCON mode multiple time will have
any effect.

Unfortunately I do not have access to machine with Parade LSPCON chip,
had suggested in yet another git lab issue [2].

I have a patch for this, sent to try-bot, though not sent to intel-gfx
yet [3].


The timeout value was already increased from 100 ms to 400 ms earlier too.

If there is indeed no other way, perhaps need to have this solution.


[1] https://gitlab.freedesktop.org/drm/intel/-/issues/4516#note_1406500

[2] https://gitlab.freedesktop.org/drm/intel/-/issues/4458#note_1922654

[3] Patch :
https://patchwork.freedesktop.org/patch/538819/?series=118208&rev=1


Regards,

Ankit


>
> Signed-off-by: Pablo Ceballos <[email protected]>
> ---
>
> Changelog since v1:
> - Added more details in the commit message
>
> drivers/gpu/drm/i915/display/intel_lspcon.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_lspcon.c b/drivers/gpu/drm/i915/display/intel_lspcon.c
> index bb3b5355a0d9..d7299fdc43ad 100644
> --- a/drivers/gpu/drm/i915/display/intel_lspcon.c
> +++ b/drivers/gpu/drm/i915/display/intel_lspcon.c
> @@ -167,7 +167,7 @@ static enum drm_lspcon_mode lspcon_wait_mode(struct intel_lspcon *lspcon,
> drm_dbg_kms(&i915->drm, "Waiting for LSPCON mode %s to settle\n",
> lspcon_mode_name(mode));
>
> - wait_for((current_mode = lspcon_get_current_mode(lspcon)) == mode, 400);
> + wait_for((current_mode = lspcon_get_current_mode(lspcon)) == mode, 800);
> if (current_mode != mode)
> drm_err(&i915->drm, "LSPCON mode hasn't settled\n");
>

2023-07-07 19:56:29

by Pablo Ceballos

[permalink] [raw]
Subject: Re: [Intel-gfx] [PATCH v2] drm/i915/display/lspcon: Increase LSPCON mode settle timeout

On Wed, Jun 14, 2023 at 9:35 PM Nautiyal, Ankit K
<[email protected]> wrote:
> I was wondering if trying to set LS/PCON mode multiple time will have
> any effect.
>
> Unfortunately I do not have access to machine with Parade LSPCON chip,
> had suggested in yet another git lab issue [2].
>
> I have a patch for this, sent to try-bot, though not sent to intel-gfx
> yet [3].

I tested this patch and it did not resolve the problem. The error log
was repeated multiple times and there were still link training issues
afterwards.

> The timeout value was already increased from 100 ms to 400 ms earlier too.
>
> If there is indeed no other way, perhaps need to have this solution.

Yes, can this please be merged?

Regards,
Pablo

2023-07-10 04:29:17

by Nautiyal, Ankit K

[permalink] [raw]
Subject: Re: [Intel-gfx] [PATCH v2] drm/i915/display/lspcon: Increase LSPCON mode settle timeout


On 7/8/2023 1:04 AM, Pablo Ceballos wrote:
> On Wed, Jun 14, 2023 at 9:35 PM Nautiyal, Ankit K
> <[email protected]> wrote:
>> I was wondering if trying to set LS/PCON mode multiple time will have
>> any effect.
>>
>> Unfortunately I do not have access to machine with Parade LSPCON chip,
>> had suggested in yet another git lab issue [2].
>>
>> I have a patch for this, sent to try-bot, though not sent to intel-gfx
>> yet [3].
> I tested this patch and it did not resolve the problem. The error log
> was repeated multiple times and there were still link training issues
> afterwards.

Really appreciate to try this thing out, thanks. Too bad it didn't
workout :(

I have seen increasing timeout does improves situation, but didn't have
enough data points to come to a timeout value.

I agree with the change based on the experiments and data you have shared.

Lets just change the timeout to 800 ms when the lspcon->vendor is
LSPCON_VENDOR_PARADE, so that it doesn't have any effect on platforms
that don't have this.

IMHO a function to get timeout value based on lspcon vendor will be
better (returns 800 ms for Parade, 400 otherwise.)

In the function itself, we can have the explanation of arriving at 800
ms for the Parade chip (as given in the commit message) as a comment.


Thanks again for trying different solutions.

Regards,

Ankit


>> The timeout value was already increased from 100 ms to 400 ms earlier too.
>>
>> If there is indeed no other way, perhaps need to have this solution.
> Yes, can this please be merged?
>
> Regards,
> Pablo