Messages in this thread | ![/](/images/icornerl.gif) | | Date | Thu, 5 Oct 2023 15:00:51 +0300 | From | Andy Shevchenko <> | Subject | Re: [PATCH] serial: core: Fix checks for tx runtime PM state |
| |
On Thu, Oct 05, 2023 at 10:56:42AM +0300, Tony Lindgren wrote: > Maximilian reported that surface_serial_hub serdev tx does not work during > system suspend. During system suspend, runtime PM gets disabled in > __device_suspend_late(), and tx is unable to wake-up the serial core port > device that we use to check if tx is safe to start. Johan summarized the > regression noting that serdev tx no longer always works as earlier when the > serdev device is runtime PM active. > > The serdev device and the serial core controller devices are siblings of > the serial port hardware device. The runtime PM usage count from serdev
I'm a bit lost in terminology here. AFAIU there are: 1) children of the serial physical device; 2) siblings (to each other).
But may be I mistakenly deciphered the diagram from the previous discussion.
> device does not propagate to the serial core device siblings, it only > propagates to the parent. > > In addition to the tx issue for suspend, testing for the serial core port > device can cause an unnecessary delay in enabling tx while waiting for the > serial core port device to wake-up. The serial core port device wake-up is > only needed to flush pending tx when the serial port hardware device was > in runtime PM suspended state. > > To fix the regression, we need to check the runtime PM state of the parent > serial port hardware device for tx instead of the serial core port device. > > As the serial port device drivers may or may not implement runtime PM, we > need to also add a check for pm_runtime_enabled().
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
-- With Best Regards, Andy Shevchenko
| ![\](/images/icornerr.gif) |