[CFT] Serial double initialisation

Russell King (rmk@arm.linux.org.uk)
Sat, 30 Nov 2002 23:50:31 +0000


A while ago, Alan reported to me a double-initialisation bug between the
ISA init and PNP initialisation of serial ports.

Since then, Alan integrated a patch I sent him into -ac, and as yet I
haven't heard any feedback. Since I don't have the PNP hardware to be
able to test this, I'm not putting it into Linus' tree until I hear some
success.

So, if people are using 2.5.50 with PNP support enabled, and if you are
seeing two "ttyS0" lines during the kernel boot messages, please apply
this patch and confirm to me that it correctly reports one ttyS0 message.

This is the exact same patch I sent to Alan, and appears to apply cleanly
to the current 2.5.50 BK tree.

Hopefully looking forward to some feedback.

Thanks.

--- orig/drivers/serial/core.c Tue Nov 5 12:51:26 2002
+++ linux/drivers/serial/core.c Mon Nov 25 11:44:08 2002
@@ -2405,17 +2405,22 @@
goto out;
}

- state->port->iobase = port->iobase;
- state->port->membase = port->membase;
- state->port->irq = port->irq;
- state->port->uartclk = port->uartclk;
- state->port->fifosize = port->fifosize;
- state->port->regshift = port->regshift;
- state->port->iotype = port->iotype;
- state->port->flags = port->flags;
- state->port->line = state - drv->state;
+ /*
+ * If the port is already initialised, don't touch it.
+ */
+ if (state->port->type == PORT_UNKNOWN) {
+ state->port->iobase = port->iobase;
+ state->port->membase = port->membase;
+ state->port->irq = port->irq;
+ state->port->uartclk = port->uartclk;
+ state->port->fifosize = port->fifosize;
+ state->port->regshift = port->regshift;
+ state->port->iotype = port->iotype;
+ state->port->flags = port->flags;
+ state->port->line = state - drv->state;

- __uart_register_port(drv, state, state->port);
+ __uart_register_port(drv, state, state->port);
+ }

ret = state->port->line;
} else

-- 
Russell King (rmk@arm.linux.org.uk)                The developer of ARM Linux
             http://www.arm.linux.org.uk/personal/aboutme.html

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/