diff mbox series

[RESEND] thunderbolt: Fix Thunderbolt 3 display flickering issue on 2nd hot plug onwards

Message ID 1689139946-18667-1-git-send-email-Sanju.Mehta@amd.com (mailing list archive)
State Superseded
Headers show
Series [RESEND] thunderbolt: Fix Thunderbolt 3 display flickering issue on 2nd hot plug onwards | expand

Commit Message

Mehta, Sanju July 12, 2023, 5:32 a.m. UTC
From: Sanjay R Mehta <sanju.mehta@amd.com>

Previously, on unplug events, the TMU mode was disabled first
followed by the Time Synchronization Handshake, irrespective of
whether the tb_switch_tmu_rate_write() API was successful or not.

However, this caused a problem with Thunderbolt 3 (TBT3)
devices, as the TSPacketInterval bits were always enabled by default,
leading the host router to assume that the device router's TMU was
already enabled and preventing it from initiating the Time
Synchronization Handshake. As a result, TBT3 monitors experienced
display flickering from the second hot plug onwards.

To address this issue, we have modified the code to only disable the
Time Synchronization Handshake during TMU disable if the
tb_switch_tmu_rate_write() function is successful. This ensures that
the TBT3 devices function correctly and eliminates the display
flickering issue.

Signed-off-by: Sanjay R Mehta <sanju.mehta@amd.com>
Signed-off-by: Sanath S <Sanath.S@amd.com>
---
 drivers/thunderbolt/tmu.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

gregkh@linuxfoundation.org July 12, 2023, 5:53 a.m. UTC | #1
On Wed, Jul 12, 2023 at 12:32:26AM -0500, Sanjay R Mehta wrote:
> From: Sanjay R Mehta <sanju.mehta@amd.com>
> 
> Previously, on unplug events, the TMU mode was disabled first
> followed by the Time Synchronization Handshake, irrespective of
> whether the tb_switch_tmu_rate_write() API was successful or not.
> 
> However, this caused a problem with Thunderbolt 3 (TBT3)
> devices, as the TSPacketInterval bits were always enabled by default,
> leading the host router to assume that the device router's TMU was
> already enabled and preventing it from initiating the Time
> Synchronization Handshake. As a result, TBT3 monitors experienced
> display flickering from the second hot plug onwards.
> 
> To address this issue, we have modified the code to only disable the
> Time Synchronization Handshake during TMU disable if the
> tb_switch_tmu_rate_write() function is successful. This ensures that
> the TBT3 devices function correctly and eliminates the display
> flickering issue.
> 
> Signed-off-by: Sanjay R Mehta <sanju.mehta@amd.com>
> Signed-off-by: Sanath S <Sanath.S@amd.com>
> ---
>  drivers/thunderbolt/tmu.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)

Why is this a RESEND?  What changed?

And the ordering of the signed-off-by is incorrect.

thanks,

greg k-h
Sanjay R Mehta July 12, 2023, 6:03 a.m. UTC | #2
On 7/12/2023 11:23 AM, Greg KH wrote:
> On Wed, Jul 12, 2023 at 12:32:26AM -0500, Sanjay R Mehta wrote:
>> From: Sanjay R Mehta <sanju.mehta@amd.com>
>>
>> Previously, on unplug events, the TMU mode was disabled first
>> followed by the Time Synchronization Handshake, irrespective of
>> whether the tb_switch_tmu_rate_write() API was successful or not.
>>
>> However, this caused a problem with Thunderbolt 3 (TBT3)
>> devices, as the TSPacketInterval bits were always enabled by default,
>> leading the host router to assume that the device router's TMU was
>> already enabled and preventing it from initiating the Time
>> Synchronization Handshake. As a result, TBT3 monitors experienced
>> display flickering from the second hot plug onwards.
>>
>> To address this issue, we have modified the code to only disable the
>> Time Synchronization Handshake during TMU disable if the
>> tb_switch_tmu_rate_write() function is successful. This ensures that
>> the TBT3 devices function correctly and eliminates the display
>> flickering issue.
>>
>> Signed-off-by: Sanjay R Mehta <sanju.mehta@amd.com>
>> Signed-off-by: Sanath S <Sanath.S@amd.com>
>> ---
>>  drivers/thunderbolt/tmu.c | 4 +++-
>>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> Why is this a RESEND?  What changed?
> 
> And the ordering of the signed-off-by is incorrect.
> 
Hi Greg, My Apologies, but am unable to comprehend what I should be
doing here. Please guide me on this.
> thanks,
> 
> greg k-h
gregkh@linuxfoundation.org July 12, 2023, 4:42 p.m. UTC | #3
On Wed, Jul 12, 2023 at 11:33:58AM +0530, Sanjay R Mehta wrote:
> 
> 
> On 7/12/2023 11:23 AM, Greg KH wrote:
> > On Wed, Jul 12, 2023 at 12:32:26AM -0500, Sanjay R Mehta wrote:
> >> From: Sanjay R Mehta <sanju.mehta@amd.com>
> >>
> >> Previously, on unplug events, the TMU mode was disabled first
> >> followed by the Time Synchronization Handshake, irrespective of
> >> whether the tb_switch_tmu_rate_write() API was successful or not.
> >>
> >> However, this caused a problem with Thunderbolt 3 (TBT3)
> >> devices, as the TSPacketInterval bits were always enabled by default,
> >> leading the host router to assume that the device router's TMU was
> >> already enabled and preventing it from initiating the Time
> >> Synchronization Handshake. As a result, TBT3 monitors experienced
> >> display flickering from the second hot plug onwards.
> >>
> >> To address this issue, we have modified the code to only disable the
> >> Time Synchronization Handshake during TMU disable if the
> >> tb_switch_tmu_rate_write() function is successful. This ensures that
> >> the TBT3 devices function correctly and eliminates the display
> >> flickering issue.
> >>
> >> Signed-off-by: Sanjay R Mehta <sanju.mehta@amd.com>
> >> Signed-off-by: Sanath S <Sanath.S@amd.com>
> >> ---
> >>  drivers/thunderbolt/tmu.c | 4 +++-
> >>  1 file changed, 3 insertions(+), 1 deletion(-)
> > 
> > Why is this a RESEND?  What changed?
> > 
> > And the ordering of the signed-off-by is incorrect.
> > 
> Hi Greg, My Apologies, but am unable to comprehend what I should be
> doing here. Please guide me on this.

Please go and take the AMD kernel developer class/training/something and
work with internal developers to get this right before resending it
again.

thanks,

greg k-h
Sanjay R Mehta July 12, 2023, 4:53 p.m. UTC | #4
On 7/12/2023 10:12 PM, Greg KH wrote:
> On Wed, Jul 12, 2023 at 11:33:58AM +0530, Sanjay R Mehta wrote:
>>
>>
>> On 7/12/2023 11:23 AM, Greg KH wrote:
>>> On Wed, Jul 12, 2023 at 12:32:26AM -0500, Sanjay R Mehta wrote:
>>>> From: Sanjay R Mehta <sanju.mehta@amd.com>
>>>>
>>>> Previously, on unplug events, the TMU mode was disabled first
>>>> followed by the Time Synchronization Handshake, irrespective of
>>>> whether the tb_switch_tmu_rate_write() API was successful or not.
>>>>
>>>> However, this caused a problem with Thunderbolt 3 (TBT3)
>>>> devices, as the TSPacketInterval bits were always enabled by default,
>>>> leading the host router to assume that the device router's TMU was
>>>> already enabled and preventing it from initiating the Time
>>>> Synchronization Handshake. As a result, TBT3 monitors experienced
>>>> display flickering from the second hot plug onwards.
>>>>
>>>> To address this issue, we have modified the code to only disable the
>>>> Time Synchronization Handshake during TMU disable if the
>>>> tb_switch_tmu_rate_write() function is successful. This ensures that
>>>> the TBT3 devices function correctly and eliminates the display
>>>> flickering issue.
>>>>
>>>> Signed-off-by: Sanjay R Mehta <sanju.mehta@amd.com>
>>>> Signed-off-by: Sanath S <Sanath.S@amd.com>
>>>> ---
>>>>  drivers/thunderbolt/tmu.c | 4 +++-
>>>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>>
>>> Why is this a RESEND?  What changed?
>>>
>>> And the ordering of the signed-off-by is incorrect.
>>>
>> Hi Greg, My Apologies, but am unable to comprehend what I should be
>> doing here. Please guide me on this.
> 
> Please go and take the AMD kernel developer class/training/something and
> work with internal developers to get this right before resending it
> again.
> 
Thanks. I'll get this right and send the patch.
> thanks,
> 
> greg k-h
diff mbox series

Patch

diff --git a/drivers/thunderbolt/tmu.c b/drivers/thunderbolt/tmu.c
index 626aca3..49146f9 100644
--- a/drivers/thunderbolt/tmu.c
+++ b/drivers/thunderbolt/tmu.c
@@ -415,7 +415,9 @@  int tb_switch_tmu_disable(struct tb_switch *sw)
 		 * uni-directional mode and we don't want to change it's TMU
 		 * mode.
 		 */
-		tb_switch_tmu_rate_write(sw, TB_SWITCH_TMU_RATE_OFF);
+		ret = tb_switch_tmu_rate_write(sw, TB_SWITCH_TMU_RATE_OFF);
+		if (ret)
+			return ret;
 
 		tb_port_tmu_time_sync_disable(up);
 		ret = tb_port_tmu_time_sync_disable(down);