On Tue, Mar 31, 2020 at 4:39 PM Jean-Baptiste Maneyrol <jmaneyrol@xxxxxxxxxxxxxx> wrote: > > Suspend/resume were not working correctly with pm runtime. > Now suspend check if the chip is already suspended, and > resume put runtime pm in the correct state. > > Fixes: 4599cac84614 ("iio: imu: inv_mpu6050: use runtime pm with autosuspend") > Signed-off-by: Jean-Baptiste Maneyrol <jmaneyrol@xxxxxxxxxxxxxx> > + st->suspended_sensors = 0; > + if (pm_runtime_suspended(dev)) { > + result = 0; > + goto out_unlock; > + } AFAIK this is not enough to guarantee that device *will be* suspended. That said, in one thread you may get device in the middle of RPM suspend, while here you are checking if it's okay or not, but after in the other thread you will get an error and roll back to the resumed state. -- With Best Regards, Andy Shevchenko