On Thu, May 30, 2024 at 08:48:46AM -0700, Douglas Anderson wrote: > The DEFINE_RUNTIME_DEV_PM_OPS() used by the serial_port code means > that the system suspend function will be pm_runtime_force_suspend(). > In pm_runtime_force_suspend() we can see that before calling the > runtime suspend function we'll call pm_runtime_disable(). This should > be a reliable way to detect that we're called from system suspend and > that we shouldn't look for busyness. OK makes sense, one comment below though. > --- a/drivers/tty/serial/serial_port.c > +++ b/drivers/tty/serial/serial_port.c > @@ -64,6 +64,16 @@ static int serial_port_runtime_suspend(struct device *dev) > if (port->flags & UPF_DEAD) > return 0; > > + /* > + * We only want to check the busyness of the port if runtime PM is > + * enabled. Specifically runtime PM will be disabled by > + * pm_runtime_force_suspend() during system suspend and we don't want > + * to block system suspend even if there is data still left to > + * transmit. We only want to block regular runtime PM transitions. > + */ > + if (!pm_runtime_enabled(dev)) > + return 0; > + How about change the comment a bit to describe why this happens so it's easy to remember the next time looking at the code. I'd suggest just something like this: Nothing to do on pm_runtime_force_suspend(), see DEFINE_RUNTIME_DEV_PM_OPS Other than that: Reviewed-by: Tony Lindgren <tony.lindgren@xxxxxxxxxxxxxxx>