Commit dc56ecb8 authored by Josh Triplett's avatar Josh Triplett Committed by Greg Kroah-Hartman

serial: 8250: Support disabling mdelay-filled probes of 16550A variants

The 8250 driver can probe for many variants of the venerable 16550A
serial port. Some of those probes involve long (20ms) mdelay calls,
which delay system boot. Modern systems and virtual machines don't have
those variants.

Provide a Kconfig option to disable probes for 16550A variants.
Disabling this speeds up the boot of a virtual machine with a serial
console by more than 20ms (a substantial fraction of the ~100ms needed
to boot a carefully configured VM).

Before:
[  +0.021919] 00:04: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
After:
[  +0.000097] 00:04: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
Signed-off-by: default avatarJosh Triplett <josh@joshtriplett.org>
Link: https://lore.kernel.org/r/20200111022513.GA166267@localhostSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 5c116fdf
...@@ -997,6 +997,9 @@ static void autoconfig_16550a(struct uart_8250_port *up) ...@@ -997,6 +997,9 @@ static void autoconfig_16550a(struct uart_8250_port *up)
up->port.type = PORT_16550A; up->port.type = PORT_16550A;
up->capabilities |= UART_CAP_FIFO; up->capabilities |= UART_CAP_FIFO;
if (!IS_ENABLED(CONFIG_SERIAL_8250_16550A_VARIANTS))
return;
/* /*
* Check for presence of the EFR when DLAB is set. * Check for presence of the EFR when DLAB is set.
* Only ST16C650V1 UARTs pass this test. * Only ST16C650V1 UARTs pass this test.
......
...@@ -60,6 +60,16 @@ config SERIAL_8250_PNP ...@@ -60,6 +60,16 @@ config SERIAL_8250_PNP
This builds standard PNP serial support. You may be able to This builds standard PNP serial support. You may be able to
disable this feature if you only need legacy serial support. disable this feature if you only need legacy serial support.
config SERIAL_8250_16550A_VARIANTS
bool "Support for variants of the 16550A serial port"
depends on SERIAL_8250
help
The 8250 driver can probe for many variants of the venerable 16550A
serial port. Doing so takes additional time at boot.
On modern systems, especially those using serial only for a simple
console, you can say N here.
config SERIAL_8250_FINTEK config SERIAL_8250_FINTEK
bool "Support for Fintek F81216A LPC to 4 UART RS485 API" bool "Support for Fintek F81216A LPC to 4 UART RS485 API"
depends on SERIAL_8250 depends on SERIAL_8250
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment