From 73f6ccd9e7e140223f797e600f282c0f4e012535 Mon Sep 17 00:00:00 2001 From: Marcelo Araujo Date: Wed, 16 Jan 2019 03:46:27 +0000 Subject: [PATCH] Fix broken uart on Win2016 guest. Obtained from: Joyent (commit/2bf1a940afbd1382faff159e7c93c72779ca10f4) MFC after: 3 weeks. --- usr.sbin/bhyve/uart_emul.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/usr.sbin/bhyve/uart_emul.c b/usr.sbin/bhyve/uart_emul.c index 3c45ac7fc95..c9d136930eb 100644 --- a/usr.sbin/bhyve/uart_emul.c +++ b/usr.sbin/bhyve/uart_emul.c @@ -431,6 +431,13 @@ uart_write(struct uart_softc *sc, int offset, uint8_t value) sc->thre_int_pending = true; break; case REG_IER: + /* Assert an interrupt if re-enabling the THRE intr, since we + * always report THRE as active in the status register. + */ + if ((sc->ier & IER_ETXRDY) == 0 && + (value & IER_ETXRDY) != 0) { + sc->thre_int_pending = true; + } /* * Apply mask so that bits 4-7 are 0 * Also enables bits 0-3 only if they're 1