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: David Daney <ddaney@caviumnetworks.com> Signed-off-by: Tomaso Paoletti <tpaoletti@caviumnetworks.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
bc3256288b
Коммит
b430428a18
|
@ -2752,12 +2752,23 @@ static struct uart_driver serial8250_reg = {
|
|||
*/
|
||||
int __init early_serial_setup(struct uart_port *port)
|
||||
{
|
||||
struct uart_port *p;
|
||||
|
||||
if (port->line >= ARRAY_SIZE(serial8250_ports))
|
||||
return -ENODEV;
|
||||
|
||||
serial8250_isa_init_ports();
|
||||
serial8250_ports[port->line].port = *port;
|
||||
serial8250_ports[port->line].port.ops = &serial8250_pops;
|
||||
p = &serial8250_ports[port->line].port;
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче