Re: [PATCH 2/2] serial: amba-pl011: keep console clock enabled for atomic writes
From: sashiko-bot
Date: Sun Jul 19 2026 - 02:52:20 EST
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] The UART clock is kept unconditionally enabled during system suspend, potentially preventing deep system sleep.
--
--- Patch [2]: [PATCH 2/2] serial: amba-pl011: keep console clock enabled for atomic writes ---
commit d187007d951bc1373a13bbdbd4ba5d6db47490d1
Author: Karl Mehltretter <kmehltretter@xxxxxxxxx>
serial: amba-pl011: keep console clock enabled for atomic writes
This commit fixes a sleeping-in-atomic bug under PREEMPT_RT by keeping the
console clock enabled while the console is registered. It moves the clock
enable from the atomic write path to console setup and exit.
> diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
> index 1aa43994a3cdc..4facd1b350d5d 100644
> --- a/drivers/tty/serial/amba-pl011.c
> +++ b/drivers/tty/serial/amba-pl011.c
> @@ -2523,7 +2523,11 @@ static int pl011_console_setup(struct console *co, char *options)
> /* Allow pins to be muxed in and configured */
> pinctrl_pm_select_default_state(uap->port.dev);
>
> - ret = clk_prepare(uap->clk);
> + /*
> + * Keep the clock enabled while registered because write_atomic() may
> + * run in NMI context and must not acquire the clock framework lock.
> + */
> + ret = clk_prepare_enable(uap->clk);
[Severity: High]
Will this keep the UART clock unconditionally enabled during system suspend?
Because the persistent clock reference is acquired here during console
registration and only dropped on console exit in pl011_console_exit(), the
reference remains active.
During system suspend, pl011_suspend() delegates to uart_suspend_port() but
fails to drop this console's persistent clock enable reference. This might
prevent the SoC from turning off the clock tree or parent PLLs, preventing
deep system sleep.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260719063502.18852-1-kmehltretter@xxxxxxxxx?part=2