From: Rafael J. Wysocki <rjw@xxxxxxx> Since sci_port_enable() and sci_port_disable() may be run with interrupts off and they execute pm_runtime_get_sync() and pm_runtime_put_sync(), respectively, the SCI device's power.irq_safe flags has to be used to indicate that it is safe to execute runtime PM callbacks for this device with interrupts off. Signed-off-by: Rafael J. Wysocki <rjw@xxxxxxx> --- drivers/tty/serial/sh-sci.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) Index: linux/drivers/tty/serial/sh-sci.c =================================================================== --- linux.orig/drivers/tty/serial/sh-sci.c +++ linux/drivers/tty/serial/sh-sci.c @@ -1582,11 +1582,15 @@ static int sci_startup(struct uart_port dev_dbg(port->dev, "%s(%d)\n", __func__, port->line); + pm_runtime_irq_safe(port->dev); + sci_port_enable(s); ret = sci_request_irq(s); - if (unlikely(ret < 0)) + if (unlikely(ret < 0)) { + pm_runtime_irq_unsafe(port->dev); return ret; + } sci_request_dma(port); @@ -1609,6 +1613,8 @@ static void sci_shutdown(struct uart_por sci_free_irq(s); sci_port_disable(s); + + pm_runtime_irq_unsafe(port->dev); } static unsigned int sci_scbrr_calc(unsigned int algo_id, unsigned int bps, _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm