From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Simon Glass <sjg@chromium.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
Greg Kroah-Hartman <gregkh@suse.de>,
linux-serial@vger.kernel.org, "Rafael J. Wysocki" <rjw@sisk.pl>,
Alan Cox <alan@lxorguk.ukuu.org.uk>
Subject: Re: [PATCH] serial: Fix wakeup init logic to speed up startup
Date: Thu, 19 Jan 2012 11:42:42 -0800 [thread overview]
Message-ID: <20120119194242.GE2373@linux.vnet.ibm.com> (raw)
In-Reply-To: <1327001336-28703-1-git-send-email-sjg@chromium.org>
On Thu, Jan 19, 2012 at 11:28:56AM -0800, Simon Glass wrote:
> The synchronize_rcu() call resulting from making every serial driver
> wake-up capable (commit b3b708fa) slows boot down on my Tegra2x system
> (with CONFIG_PREEMPT disabled).
>
> But this is avoidable since it is the device_set_wakeup_enable() and then
> subsequence disable which causes the delay. We might as well just make
> the device wakeup capable but not actually enable it for wakeup until
> needed.
>
> Effectively the current code does this:
>
> device_set_wakeup_capable(dev, 1);
> device_set_wakeup_enable(dev, 1);
> device_set_wakeup_enable(dev, 0);
>
> We can just drop the last two lines.
>
> Before this change my boot log says:
> [ 0.227062] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
> [ 0.702928] serial8250.0: ttyS0 at MMIO 0x70006040 (irq = 69) is a Tegra
>
> after:
> [ 0.227264] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
> [ 0.227983] serial8250.0: ttyS0 at MMIO 0x70006040 (irq = 69) is a Tegra
>
> for saving of 450ms.
You have multiple CPUs running at this point, correct? Before that
second CPU starts up, synchronize_rcu() is a no-op.
The patch looks good to me, but then again, I do not consider myself
qualified to have an opinion on the TTY layer. ;-)
Thanx, Paul
> Suggested-by: Rafael J. Wysocki <rjw@sisk.pl>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
> drivers/tty/serial/serial_core.c | 6 +++---
> 1 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
> index c7bf31a..1305618 100644
> --- a/drivers/tty/serial/serial_core.c
> +++ b/drivers/tty/serial/serial_core.c
> @@ -2348,11 +2348,11 @@ int uart_add_one_port(struct uart_driver *drv, struct uart_port *uport)
> */
> tty_dev = tty_register_device(drv->tty_driver, uport->line, uport->dev);
> if (likely(!IS_ERR(tty_dev))) {
> - device_init_wakeup(tty_dev, 1);
> - device_set_wakeup_enable(tty_dev, 0);
> - } else
> + device_set_wakeup_capable(tty_dev, 1);
> + } else {
> printk(KERN_ERR "Cannot register tty device on line %d\n",
> uport->line);
> + }
>
> /*
> * Ensure UPF_DEAD is not set.
> --
> 1.7.7.3
>
next prev parent reply other threads:[~2012-01-19 19:43 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-19 19:28 [PATCH] serial: Fix wakeup init logic to speed up startup Simon Glass
2012-01-19 19:42 ` Paul E. McKenney [this message]
2012-01-19 19:51 ` Simon Glass
2012-01-19 19:51 ` Simon Glass
2012-01-19 20:12 ` Paul E. McKenney
2012-01-19 23:46 ` Rafael J. Wysocki
2012-01-19 23:57 ` Simon Glass
2012-01-19 23:57 ` Simon Glass
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=20120119194242.GE2373@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=gregkh@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=rjw@sisk.pl \
--cc=sjg@chromium.org \
/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.