From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755103AbcAWVZe (ORCPT ); Sat, 23 Jan 2016 16:25:34 -0500 Received: from mail-pa0-f51.google.com ([209.85.220.51]:35918 "EHLO mail-pa0-f51.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755067AbcAWVZU (ORCPT ); Sat, 23 Jan 2016 16:25:20 -0500 Subject: Re: [PATCH REPOST] tty: serial: 8250: omap: restore registers on shutdown To: John Ogness , gregkh@linuxfoundation.org References: <87vb6llgst.fsf@linutronix.de> Cc: bigeasy@linutronix.de, tony@atomide.com, nsekhar@ti.com, peter.ujfalusi@ti.com, linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org From: Peter Hurley Message-ID: <56A3EFBD.9020209@hurleysoftware.com> Date: Sat, 23 Jan 2016 13:25:17 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1 MIME-Version: 1.0 In-Reply-To: <87vb6llgst.fsf@linutronix.de> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 01/22/2016 08:28 AM, John Ogness wrote: > If DMA is active during a shutdown, a delayed restore of the > registers may be pending. The restore must be performed after > the DMA is stopped, otherwise the delayed restore remains > pending and will fire upon the first DMA TX complete of a > totally different serial session. > > Signed-off-by: John Ogness > --- > This patch was originally posted and discussed here: > http://lkml.kernel.org/r/87egjp2r4a.fsf@linutronix.de > > The patch was not accepted because Peter expressed dissatisfaction with > the entire deferred implementation. (This patch fixes a bug in that > implementation.) However, no alternative solution was determined and the > bug continues to exist. Yeah, I made that comment a while ago and still no one's fixed that. What gives? Regards, Peter Hurley > Although we can certainly continue to debate about an alternate solution > to the deferred implementation, I think it makes sense to at least fix > the existing bug until an alternative exists. > > The bug can be easily produced with a `kill -9` on a process transmitting > on the serial port. > > patch against next-20160122 > > drivers/tty/serial/8250/8250_omap.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/tty/serial/8250/8250_omap.c b/drivers/tty/serial/8250/8250_omap.c > index a2c0734..0ffec67 100644 > --- a/drivers/tty/serial/8250/8250_omap.c > +++ b/drivers/tty/serial/8250/8250_omap.c > @@ -664,9 +664,15 @@ static void omap_8250_shutdown(struct uart_port *port) > up->ier = 0; > serial_out(up, UART_IER, 0); > > - if (up->dma) > + if (up->dma) { > serial8250_release_dma(up); > > + if (priv->delayed_restore) { > + priv->delayed_restore = 0; > + omap8250_restore_regs(up); > + } > + } > + > /* > * Disable break condition and FIFOs > */ >