From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Tony Lindgren <tony@atomide.com>
Cc: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Jiri Slaby" <jirislaby@kernel.org>,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
"Johan Hovold" <johan@kernel.org>,
"Sebastian Andrzej Siewior" <bigeasy@linutronix.de>,
"Vignesh Raghavendra" <vigneshr@ti.com>,
linux-omap@vger.kernel.org, linux-serial@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] serial: 8250: Clear port->pm on port specific driver unbind
Date: Thu, 13 Apr 2023 19:06:35 +0300 [thread overview]
Message-ID: <ZDgoi2mFYYqswAhu@smile.fi.intel.com> (raw)
In-Reply-To: <20230413070342.36155-1-tony@atomide.com>
On Thu, Apr 13, 2023 at 10:03:41AM +0300, Tony Lindgren wrote:
> When we unbind a serial port hardware specific 8250 driver, the generic
> serial8250 driver takes over the port. After that we see an oops about 10
> seconds later. This can produce the following at least on some TI SoCs:
>
> Unhandled fault: imprecise external abort (0x1406)
> Internal error: : 1406 [#1] SMP ARM
>
> Turns out that we may still have the serial port hardware specific driver
> port->pm in use, and serial8250_pm() tries to call it after the port
> specific driver is gone:
>
> serial8250_pm [8250_base] from uart_change_pm+0x54/0x8c [serial_base]
> uart_change_pm [serial_base] from uart_hangup+0x154/0x198 [serial_base]
> uart_hangup [serial_base] from __tty_hangup.part.0+0x328/0x37c
> __tty_hangup.part.0 from disassociate_ctty+0x154/0x20c
> disassociate_ctty from do_exit+0x744/0xaac
> do_exit from do_group_exit+0x40/0x8c
> do_group_exit from __wake_up_parent+0x0/0x1c
>
> Let's fix the issue by clearing port->pm in serial8250_unregister_port().
Sounds to me like a fix that needs a Fixes tag.
Code wise LGTM,
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> ---
> drivers/tty/serial/8250/8250_core.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
> --- a/drivers/tty/serial/8250/8250_core.c
> +++ b/drivers/tty/serial/8250/8250_core.c
> @@ -1157,6 +1157,7 @@ void serial8250_unregister_port(int line)
> uart->port.flags &= ~UPF_BOOT_AUTOCONF;
> uart->port.type = PORT_UNKNOWN;
> uart->port.dev = &serial8250_isa_devs->dev;
> + uart->port.pm = NULL;
> uart->capabilities = 0;
> serial8250_apply_quirks(uart);
> uart_add_one_port(&serial8250_reg, &uart->port);
> --
> 2.40.0
--
With Best Regards,
Andy Shevchenko
next prev parent reply other threads:[~2023-04-13 16:06 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-13 7:03 [PATCH] serial: 8250: Clear port->pm on port specific driver unbind Tony Lindgren
2023-04-13 16:06 ` Andy Shevchenko [this message]
2023-04-14 5:47 ` Tony Lindgren
2023-04-14 7:35 ` Ilpo Järvinen
2023-04-14 9:40 ` Tony Lindgren
2023-04-18 9:41 ` Tony Lindgren
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZDgoi2mFYYqswAhu@smile.fi.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=bigeasy@linutronix.de \
--cc=gregkh@linuxfoundation.org \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=jirislaby@kernel.org \
--cc=johan@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=tony@atomide.com \
--cc=vigneshr@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.