Currently autoconf spends 25ms (on my laptop) testing if the UART
exported to it by KVM is an 8250 without FIFO and/or with strange
quirks, which it obviously isn't.  Assume it is exported to us by a
hypervisor, it's a normal, working 16550A.

Signed-off-by: Richard W.M. Jones <rjo...@redhat.com>
---
 drivers/tty/serial/8250/8250_port.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/tty/serial/8250/8250_port.c 
b/drivers/tty/serial/8250/8250_port.c
index 00ad2637..de19924 100644
--- a/drivers/tty/serial/8250/8250_port.c
+++ b/drivers/tty/serial/8250/8250_port.c
@@ -1171,6 +1171,13 @@ static void autoconfig(struct uart_8250_port *up)
        if (!port->iobase && !port->mapbase && !port->membase)
                return;
 
+       /* Hypervisors always export working 16550A devices. */
+       if (cpu_has_hypervisor) {
+               up->port.type = PORT_16550A;
+               up->capabilities |= UART_CAP_FIFO;
+               return;
+       }
+
        DEBUG_AUTOCONF("ttyS%d: autoconf (0x%04lx, 0x%p): ",
                       serial_index(port), port->iobase, port->membase);
 
-- 
2.7.4

Reply via email to