debug: 0.841 device: 0.833 socket: 0.830 network: 0.787 boot: 0.785 PID: 0.751 performance: 0.726 graphic: 0.685 other: 0.677 permissions: 0.675 semantic: 0.634 vnc: 0.618 files: 0.605 KVM: 0.471 QEMU fails to boot DR DOS Plus since 0.6.1 The commit in r1049 (serial interrupt fix (Hampa Hug)) prevents booting Digital Research DOS Plus. 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); } > 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: No it doesn't. Same as unpatched. Can you add some debugging to see what IER is being set to? Do you have any insight into why DR DOS Plus is failing? > Can you add some debugging to see what IER is being set to? With DEBUG_SERIAL defined, serial logs: serial: event 2 serial: write addr=0x01 val=0x02 serial: read addr=0x01 val=0x02 serial: read addr=0x02 val=0x02 serial: write addr=0x01 val=0x00 serial: write addr=0x03 val=0x80 serial: write addr=0x00 val=0x0c serial: write addr=0x01 val=0x00 serial: write addr=0x03 val=0x03 serial: write addr=0x04 val=0x0b serial: read addr=0x05 val=0x60 serial: read addr=0x06 val=0xb0 serial: read addr=0x00 val=0x00 serial: write addr=0x01 val=0x0f serial: read addr=0x02 val=0x02 serial: read addr=0x02 val=0x01 (stalls here) I think the interrupt should be raised only on the rising edge of THRE. Has this bug been fixed by this commit here: http://git.qemu.org/?p=qemu.git;a=commitdiff;h=1645b8eee558ffe2389 ? If so, I think we could now close this bug ticket...