From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.linuxfoundation.org ([140.211.169.12]:39373 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751999AbbJQVHb (ORCPT ); Sat, 17 Oct 2015 17:07:31 -0400 Subject: Patch "[PATCH REPOST] serial/amba-pl011: Disable interrupts around TX softirq" has been added to the 4.1-stable tree To: Dave.Martin@arm.com, Andre.Przywara@arm.com, Andrew.Jackson@arm.com, Robin.Murphy@arm.com, gg@slimlogic.co.uk, gregkh@linuxfoundation.org, jorge.ramirez-ortiz@linaro.org, linux@arm.linux.org.uk, moorray3@wp.pl, popcornmix@gmail.com, robin.murphy@arm.com, stable@vger.kernel.org, stefan.wahren@i2se.com Cc: , From: Date: Sat, 17 Oct 2015 14:07:30 -0700 In-Reply-To: <1437755961-15403-1-git-send-email-Dave.Martin@arm.com> Message-ID: <1445116050212177@kroah.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org List-ID: This is a note to let you know that I've just added the patch titled [PATCH REPOST] serial/amba-pl011: Disable interrupts around TX softirq to the 4.1-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: serial-amba-pl011-disable-interrupts-around-tx-softirq.patch and it can be found in the queue-4.1 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let know about it. >>From Dave.Martin@arm.com Sat Oct 17 13:59:05 2015 From: Dave Martin Date: Fri, 24 Jul 2015 17:39:21 +0100 Subject: [PATCH REPOST] serial/amba-pl011: Disable interrupts around TX softirq To: linux-serial@vger.kernel.org, Greg Kroah-Hartman Cc: Russell King , Robin Murphy , linux-arm-kernel@lists.infradead.org, Jakub KiciƄski , Andrew Jackson , Graeme Gregory , Andre Przywara , Jorge Ramirez-Ortiz , popcorn mix , stable Message-ID: <1437755961-15403-1-git-send-email-Dave.Martin@arm.com> From: Dave Martin pl011_tx_softirq() currently uses spin_{,un}lock(), which are not sufficient to inhibit pl011_int() from being triggered by a local IRQ and trying to re-take the same lock. This can lead to deadlocks. This patch uses the _irq() locking variants instead to ensure that pl011_int() handling for a given port is deferred until any pl011_tx_softirq() work for that port is complete. Notes for stable: This patch fixes an issue that is fixed by the following upstream commit, which is a more substantial rewrite of the affected code, fixing multiple, mostly more minor issues: 1e84d22322ceed4767db1e5342c830dd60c8210f serial/amba-pl011: Refactor and simplify TX FIFO handling The upstream patch was rejected for stable on the reasonable grounds that it was too big and complex a patch. The original buggy code was merged in v4.1, and the rewrite was merged in v4.2, leaving only v4.1 affected. This patch replaces the 1e84d22, for 4.1.x only. Fixes: 734745caeb9f serial/amba-pl011: Activate TX IRQ passively Signed-off-by: Dave Martin Tested-by: Robin Murphy Tested-by: Stefan Wahren Signed-off-by: Greg Kroah-Hartman --- drivers/tty/serial/amba-pl011.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c @@ -1360,9 +1360,9 @@ static void pl011_tx_softirq(struct work struct uart_amba_port *uap = container_of(dwork, struct uart_amba_port, tx_softirq_work); - spin_lock(&uap->port.lock); + spin_lock_irq(&uap->port.lock); while (pl011_tx_chars(uap)) ; - spin_unlock(&uap->port.lock); + spin_unlock_irq(&uap->port.lock); } static void pl011_tx_irq_seen(struct uart_amba_port *uap) Patches currently in stable-queue which might be from Dave.Martin@arm.com are queue-4.1/serial-amba-pl011-disable-interrupts-around-tx-softirq.patch