From 67cdb419321b3dc3d90ea4047c69feaf1bc4a0a1 Mon Sep 17 00:00:00 2001 From: Josh Triplett Date: Fri, 10 Jan 2020 18:25:13 -0800 Subject: [PATCH] serial: 8250: Support disabling mdelay-filled probes of 16550A variants to #26832542 commit dc56ecb81a0aa46a7e127e916df5c8fdb8364f0b upstream 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: Josh Triplett Link: https://lore.kernel.org/r/20200111022513.GA166267@localhost Signed-off-by: Greg Kroah-Hartman Signed-off-by: Huaixin Chang Acked-by: luanshi --- drivers/tty/serial/8250/8250_port.c | 3 +++ drivers/tty/serial/8250/Kconfig | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c index aa4de6907f77..d45d6a4604bc 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c @@ -1011,6 +1011,9 @@ static void autoconfig_16550a(struct uart_8250_port *up) up->port.type = PORT_16550A; up->capabilities |= UART_CAP_FIFO; + if (!IS_ENABLED(CONFIG_SERIAL_8250_16550A_VARIANTS)) + return; + /* * XR17V35x UARTs have an extra divisor register, DLD * that gets enabled with when DLAB is set which will diff --git a/drivers/tty/serial/8250/Kconfig b/drivers/tty/serial/8250/Kconfig index f005eaf8bc57..d4dc8bab4f83 100644 --- a/drivers/tty/serial/8250/Kconfig +++ b/drivers/tty/serial/8250/Kconfig @@ -58,6 +58,16 @@ config SERIAL_8250_PNP This builds standard PNP serial support. You may be able to 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 bool "Support for Fintek F81216A LPC to 4 UART RS485 API" depends on SERIAL_8250 -- GitLab