diff options
Diffstat (limited to 'hw/char')
-rw-r--r-- | hw/char/cadence_uart.c | 3 | ||||
-rw-r--r-- | hw/char/serial.c | 2 | ||||
-rw-r--r-- | hw/char/virtio-console.c | 3 |
3 files changed, 5 insertions, 3 deletions
diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c index bf0c853499..dbbc167425 100644 --- a/hw/char/cadence_uart.c +++ b/hw/char/cadence_uart.c @@ -306,7 +306,8 @@ static gboolean cadence_uart_xmit(GIOChannel *chan, GIOCondition cond, memmove(s->tx_fifo, s->tx_fifo + ret, s->tx_count); if (s->tx_count) { - int r = qemu_chr_fe_add_watch(s->chr, G_IO_OUT, cadence_uart_xmit, s); + int r = qemu_chr_fe_add_watch(s->chr, G_IO_OUT|G_IO_HUP, + cadence_uart_xmit, s); assert(r); } diff --git a/hw/char/serial.c b/hw/char/serial.c index d17da1654c..54180a9cba 100644 --- a/hw/char/serial.c +++ b/hw/char/serial.c @@ -246,7 +246,7 @@ static gboolean serial_xmit(GIOChannel *chan, GIOCondition cond, void *opaque) serial_receive1(s, &s->tsr, 1); } else if (qemu_chr_fe_write(s->chr, &s->tsr, 1) != 1) { if (s->tsr_retry >= 0 && s->tsr_retry < MAX_XMIT_RETRY && - qemu_chr_fe_add_watch(s->chr, G_IO_OUT, serial_xmit, s) > 0) { + qemu_chr_fe_add_watch(s->chr, G_IO_OUT|G_IO_HUP, serial_xmit, s) > 0) { s->tsr_retry++; return FALSE; } diff --git a/hw/char/virtio-console.c b/hw/char/virtio-console.c index 54eb15f3af..752ed2c3c8 100644 --- a/hw/char/virtio-console.c +++ b/hw/char/virtio-console.c @@ -70,7 +70,8 @@ static ssize_t flush_buf(VirtIOSerialPort *port, if (!k->is_console) { virtio_serial_throttle_port(port, true); if (!vcon->watch) { - vcon->watch = qemu_chr_fe_add_watch(vcon->chr, G_IO_OUT, + vcon->watch = qemu_chr_fe_add_watch(vcon->chr, + G_IO_OUT|G_IO_HUP, chr_write_unblocked, vcon); } } |