On Tue, Dec 3, 2024 at 1:51 PM Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx> wrote: > > On Tue, Dec 03, 2024 at 02:48:59PM +0200, Heikki Krogerus wrote: > > On Tue, Dec 03, 2024 at 10:23:18AM +0000, Łukasz Bartosik wrote: > > > OPM PPM LPM > > > | 1.send cmd | | > > > |-------------------------->| | > > > | |-- | > > > | | | 2.set busy bit in CCI | > > > | |<- | > > > | 3.notify the OPM | | > > > |<--------------------------| | > > > | | 4.send cmd to be executed | > > > | |-------------------------->| > > > | | | > > > | | 5.cmd completed | > > > | |<--------------------------| > > > | | | > > > | |-- | > > > | | | 6.set cmd completed | > > > | |<- bit in CCI | > > > | | | > > > | 7.notify the OPM | | > > > |<--------------------------| | > > > | | | > > > | 8.handle notification | | > > > | from point 3, read CCI | | > > > |<--------------------------| | > > > | | | > > > > > > When the PPM receives command from the OPM (p.1) it sets the busy bit > > > in the CCI (p.2), sends notification to the OPM (p.3) and forwards the > > > command to be executed by the LPM (p.4). When the PPM receives command > > > completion from the LPM (p.5) it sets command completion bit in the CCI > > > (p.6) and sends notification to the OPM (p.7). If command execution by > > > the LPM is fast enough then when the OPM starts handling the notification > > > from p.3 in p.8 and reads the CCI value it will see command completion bit > > > set and will call complete(). Then complete() might be called again when > > > the OPM handles notification from p.7. > > > > > > This fix replaces test_bit() with test_and_clear_bit() > > > in ucsi_notify_common() in order to call complete() only > > > once per request. > > > > > > This fix also reinitializes completion variable in > > > ucsi_sync_control_common() before a command is sent. > > > > > > Fixes: 584e8df58942 ("usb: typec: ucsi: extract common code for command handling") > > > Cc: stable@xxxxxxxxxxxxxxx > > > Signed-off-by: Łukasz Bartosik <ukaszb@xxxxxxxxxxxx> > > > > Reviewed-by: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx > > Reviewed-by: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx> > > Sorry about that typo. > > -- > heikki Heikki, Dmitry, Thank you for the review. Regards, Łukasz