[PATCH 0/6] tty: serial: propagate errors from uart_ops.pm callback

Jiri Slaby jirislaby at kernel.org
Wed Jul 8 23:53:54 PDT 2026


On 09. 07. 26, 8:25, Praveen Talari wrote:
> The uart_ops.pm callback has been declared void since its introduction,
> which means any error from a driver's power management implementation is
> silently discarded by uart_change_pm(). Beyond losing the error
> information, uart_change_pm() unconditionally updates state->pm_state
> even when the underlying hardware transition failed. This causes the
> serial core to track a power state that does not reflect reality:
> subsequent calls to uart_change_pm() see the stale cached state as
> matching the requested state and skip the callback entirely, leaving the
> hardware permanently stuck with no further recovery attempt.
> 
> On modern platforms where the .pm callback performs real work —
> enabling clock trees, interacting with runtime PM, asserting voltage
> regulators — this is a correctness gap. Failures are invisible to the
> PM framework, the port proceeds to call ops->startup() on potentially
> unpowered hardware, and suspend/resume errors are hidden from the core
> that needs to handle them.
> 
> This series fixes the problem in four steps:
> 
>    Patch 1 changes the uart_ops.pm callback signature from void to int,
>    updates uart_change_pm() to propagate errors and only commit
>    state->pm_state on success, and handles the return value at every
>    call site in serial_core.c with appropriate policy per context
>    (propagate, log, or skip-on-failure).

So does this break build without the below applied? IOW: breaks 
bisectability?

>    Patch 2 updates the 8250 driver family: serial8250_do_pm() and
>    serial8250_pm() are updated to return int (with the exported symbol
>    declaration updated in serial_8250.h), and the 8250 sub-driver
>    pm callbacks are updated to return 0.
> 
>    Patch 3 updates the remaining non-8250 serial drivers. All .pm
>    implementations are updated to return 0. The sh-sci forward
>    declaration shared with rsci is also updated.
> 
>    Patch 4 updates arch-level implementations: SA1100 (assabet, h3xxx),
>    OMAP1/ams-delta (modem_pm, now propagates regulator errors), and
>    MIPS/Alchemy (alchemy_8250_pm).
> 
> All existing .pm implementations return 0, so there is no functional
> change for any current driver. The series purely adds the infrastructure
> for drivers to report errors going forward, with the serial core ready
> to handle them correctly.

OK, now I miss the rationale behind the patchset. Neither there is a 
possible code path to actually test this?

thanks,
-- 
js
suse labs



More information about the Linux-mediatek mailing list