Commit b430428a authored by David Daney's avatar David Daney Committed by Linus Torvalds

8250: Don't clobber spinlocks.

In serial8250_isa_init_ports(), the port's lock is initialized.  We
should not overwrite it.  In early_serial_setup(), only copy in the
fields we need.  Since the early console code only uses a subset of
the fields, these are sufficient.
Signed-off-by: default avatarDavid Daney <ddaney@caviumnetworks.com>
Signed-off-by: default avatarTomaso Paoletti <tpaoletti@caviumnetworks.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarAlan Cox <alan@redhat.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent bc325628
...@@ -2752,12 +2752,23 @@ static struct uart_driver serial8250_reg = { ...@@ -2752,12 +2752,23 @@ static struct uart_driver serial8250_reg = {
*/ */
int __init early_serial_setup(struct uart_port *port) int __init early_serial_setup(struct uart_port *port)
{ {
struct uart_port *p;
if (port->line >= ARRAY_SIZE(serial8250_ports)) if (port->line >= ARRAY_SIZE(serial8250_ports))
return -ENODEV; return -ENODEV;
serial8250_isa_init_ports(); serial8250_isa_init_ports();
serial8250_ports[port->line].port = *port; p = &serial8250_ports[port->line].port;
serial8250_ports[port->line].port.ops = &serial8250_pops; p->iobase = port->iobase;
p->membase = port->membase;
p->irq = port->irq;
p->uartclk = port->uartclk;
p->fifosize = port->fifosize;
p->regshift = port->regshift;
p->iotype = port->iotype;
p->flags = port->flags;
p->mapbase = port->mapbase;
p->private_data = port->private_data;
return 0; return 0;
} }
......
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