on sailfish, in contrast to aosp9, I was getting lots of failed suspend attempts. they seem to boil down to rather fast transition between exit of suspend to the entry to the new one. while in aosp9, I saw about 10-40ms delay between exit->entry in dmesg, in sailfish, the corresponding delay was usually ~1 ms or even less. as a result of a short delay, in sailfish, all processes that wanted to report their state after suspend, were doing so during the next suspend attempt. this includes power related events and thermo handling. in turn, that fired wakelocks, including uevent handling wakelocks by sailfish. and this resulted in failed suspend attempts. the whole process was repeating itself at rate 10 times per second and just occasionally breaking out of it with successful suspend. right now I am fixing it with https://github.com/sailfishos-sony-tama/android_kernel_sony_msm/commit/e980ddcfc0d224779f6dd65215fce7d41a959768 result - suspending perfectly (about 90+% in sleep), very low rate of failures.