Comment 2 for bug 588748

Revision history for this message
Anthony Liguori (anthony-codemonkey) wrote :

This patch doesn't seem correct as the spec is pretty clear that THRE interrupt enable is set to high, then an interrupt is rased if LSR.THRE=1. Does the following also make DOSPlus boot again:

diff --git a/hw/serial.c b/hw/serial.c
index 9102edb..b0ac52f 100644
--- a/hw/serial.c
+++ b/hw/serial.c
@@ -401,7 +401,8 @@ static void serial_ioport_write(void *opaque, uint32_t addr,
                      s->poll_msl = 0;
                 }
             }
- if (s->lsr & UART_LSR_THRE) {
+ if (s->ier & UART_IER_THRI &&
+ s->lsr & UART_LSR_THRE) {
                 s->thr_ipending = 1;
                 serial_update_irq(s);
             }