[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 0/2] changes related to monitor flow control
From: |
Laszlo Ersek |
Subject: |
[Qemu-devel] [PATCH 0/2] changes related to monitor flow control |
Date: |
Tue, 16 Jul 2013 20:19:39 +0200 |
When the IO thread calls monitor_flush() repeatedly & quickly in
succession, outside of callback context, many redundant G_IO_OUT watches
are installed. (One such caller is the "info tlb" / tlb_info() HMP
command which produces a lot of monitor output.)
While this redundancy is no problem in itself, it can trigger -1/EINVAL
in poll() by growing "gpollfds" beyond limits. This is a persistent
condition, causing qemu to spin in the main loop.
Patch #2 corrects this.
My first stab at a fix was patch #1. Although in retrospect probably
unrelated to the main problem, I'm including it because it should
qualify as an improvement / cleanup in its own right.
See <https://bugzilla.redhat.com/show_bug.cgi?id=970047> for more
details.
Laszlo Ersek (2):
char: io_channel_send: don't lose written bytes
monitor: maintain at most one G_IO_OUT watch
monitor.c | 11 +++++++++--
qemu-char.c | 41 +++++++++++++++++++----------------------
2 files changed, 28 insertions(+), 24 deletions(-)