On Wednesday, September 6, 2017 2:52:59 AM CEST Rafael J. Wysocki wrote: > On Monday, September 4, 2017 2:55:37 PM CEST Ulf Hansson wrote: > > [...] I guess I can wrap it up, because all of the points seem to have been stated and repeating them would not be useful. My summary of the discussion is as follows. It only is valid to use pm_runtime_force_suspend/resume() as *driver* callbacks for system suspend/resume if both the driver itself and all of the middle layers it has to work with carry out the same sequence of operations in order to suspend the device both in runtime PM and for system sleep (and analogously for resuming). [The middle layers need to meet additional conditions, but that's less relevant.] Unfortunately, for the ACPI PM domain and the PCI bus type the situation is different, because they generally need to do different things to suspend devices for system sleep than they do for runtime PM (which mostly is related to the handling of ACPI-defined sleep states and device/system wakeup, but not limited to that). This clearly means that drivers needing to work with the ACPI PM domain and PCI drivers cannot use pm_runtime_force_suspend/resume() as their PM callbacks for system suspend/resume (quite fundamentally). [Note that for i2c-designware-platdrv the situation is even more complicated, because on some platforms it has to work with the ACPI PM domain (or the ACPI LPSS driver), on some platforms its parent is a PCI device and on some other platforms there's none of them.] However, for drivers that need to work with the ACPI PM domain and PCI drivers the differences in the device handling between runtime PM and system suspend/resume are *very* often (even though not always) covered entirely by the middle layer code. Then, the driver itself actually always carries out the same sequence of operations in order to suspend the device (or to resume it, analogously). The driver then can re-use its runtime PM callbacks for system suspend/resume (but at the driver level only) and it would be good to make that easy (or easier) for these drivers somehow. Thanks, Rafael