unsigned int count)
 {
        unsigned int ucon = rd_regl(cons_uart, S3C2410_UCON);
+       unsigned long flags;
+       bool locked = true;
 
        /* not possible to xmit on unconfigured port */
        if (!s3c24xx_port_configured(ucon))
                return;
 
+       if (cons_uart->sysrq)
+               locked = false;
+       else if (oops_in_progress)
+               locked = spin_trylock_irqsave(&cons_uart->lock, flags);
+       else
+               spin_lock_irqsave(&cons_uart->lock, flags);
+
        uart_console_write(cons_uart, s, count, s3c24xx_serial_console_putchar);
+
+       if (locked)
+               spin_unlock_irqrestore(&cons_uart->lock, flags);
 }
 
 /* Shouldn't be __init, as it can be instantiated from other module */