EPIPE is not a recoverable error, so retrying on serial_xmit is a waste of CPU cycles, and can potentially comprosie the Guest OS stability if both the vCPU and the emulator thread are pinned to the same pCPU, with the first one actively polling the serial device and barely giving time to the second to make any actual progress.
Sergio Lopez (3): io: Implement QIO_CHANNEL_ERR_BROKEN chardev: On QIO_CHANNEL_ERR_BROKEN set errno to EPIPE hw/char/serial: Don't retry on serial_xmit if errno == EPIPE chardev/char-io.c | 3 +++ hw/char/serial.c | 1 + include/io/channel.h | 1 + io/channel-file.c | 3 +++ 4 files changed, 8 insertions(+) -- 1.8.3.1