struct termios termios;
        int i;
 
+       /*
+        * Ensure that the serial console lock is initialised
+        * early.
+        */
+       spin_lock_init(&port->lock);
+
        memset(&termios, 0, sizeof(struct termios));
 
        termios.c_cflag = CREAD | HUPCL | CLOCAL;
 
        state->port = port;
 
-       spin_lock_init(&port->lock);
        port->cons = drv->cons;
        port->info = state->info;
 
+       /*
+        * If this port is a console, then the spinlock is already
+        * initialised.
+        */
+       if (!uart_console(port))
+               spin_lock_init(&port->lock);
+
        uart_configure_port(drv, state, port);
 
        /*