From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Rafael J. Wysocki" Date: Sat, 20 Aug 2011 19:33:09 +0000 Subject: [PATCH 2/2] sh-sci / PM: Use power.irq_safe Message-Id: <201108202133.09222.rjw@sisk.pl> List-Id: References: <201108202131.19479.rjw@sisk.pl> In-Reply-To: <201108202131.19479.rjw@sisk.pl> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-sh@vger.kernel.org Cc: Linux PM mailing list , LKML , Magnus Damm From: Rafael J. Wysocki 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 --- 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,