Re: [PATCH] usb: typec: tcpm: Raise vdm_sm_running flag only when VDM SM is running

From: Greg KH
Date: Thu Aug 26 2021 - 07:48:58 EST


On Mon, Aug 16, 2021 at 03:54:49PM +0800, Kyle Tso wrote:
> If the port is going to send Discover_Identity Message, vdm_sm_running
> flag was intentionally set before entering Ready States in order to
> avoid the conflict because the port and the port partner might start
> AMS at almost the same time after entering Ready States.
>
> However, the original design has a problem. When the port is doing
> DR_SWAP from Device to Host, it raises the flag. Later in the
> tcpm_send_discover_work, the flag blocks the procedure of sending the
> Discover_Identity and it might never be cleared until disconnection.
>
> Since there exists another flag send_discover representing that the port
> is going to send Discover_Identity or not, it is enough to use that flag
> to prevent the conflict. Also change the timing of the set/clear of
> vdm_sm_running to indicate whether the VDM SM is actually running or
> not.
>
> Fixes: c34e85fa69b9 ("usb: typec: tcpm: Send DISCOVER_IDENTITY from dedicated work")
> Cc: Badhri Jagan Sridharan <badhri@xxxxxxxxxx>
> Signed-off-by: Kyle Tso <kyletso@xxxxxxxxxx>
> ---
> drivers/usb/typec/tcpm/tcpm.c | 81 ++++++++++++++++-------------------
> 1 file changed, 38 insertions(+), 43 deletions(-)

This does not apply to my usb-linus branch :(

Please rebase and resend, collecting the acks that others have done.

thanks,

greg k-h