Index: sys/dev/uart/uart_dev_ns8250.c =================================================================== --- sys/dev/uart/uart_dev_ns8250.c +++ sys/dev/uart/uart_dev_ns8250.c @@ -738,6 +738,7 @@ } else { if (iir & IIR_TXRDY) { ipend |= SER_INT_TXIDLE; + ns8250->ier &= ~IER_ETXRDY; uart_setreg(bas, REG_IER, ns8250->ier); uart_barrier(bas); } else @@ -1035,6 +1036,8 @@ uart_setreg(bas, REG_DATA, sc->sc_txbuf[i]); uart_barrier(bas); } + if (!broken_txfifo) + ns8250->ier |= IER_ETXRDY; uart_setreg(bas, REG_IER, ns8250->ier | IER_ETXRDY); uart_barrier(bas); if (broken_txfifo)