qemu_chr_fe_write() is capable of returning 0 to indicate EAGAIN (and friends) and we don't handle this.
Just change it to qemu_chr_fe_write_all() to fix. Reported-by: Peter Crosthwaite <peter.crosthwa...@xilinx.com> Signed-off-by: Antony Pavlov <antonynpav...@gmail.com> CC: Peter Crosthwaite <peter.crosthwa...@xilinx.com> CC: Michael Walle <mich...@walle.cc> CC: Andreas Färber <afaer...@suse.de> --- hw/char/milkymist-uart.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/char/milkymist-uart.c b/hw/char/milkymist-uart.c index 2e4b5c5..6e4bc20 100644 --- a/hw/char/milkymist-uart.c +++ b/hw/char/milkymist-uart.c @@ -124,7 +124,7 @@ static void uart_write(void *opaque, hwaddr addr, uint64_t value, switch (addr) { case R_RXTX: if (s->chr) { - qemu_chr_fe_write(s->chr, &ch, 1); + qemu_chr_fe_write_all(s->chr, &ch, 1); } s->regs[R_STAT] |= STAT_TX_EVT; break; -- 1.8.4.rc3