diff --git a/qemu-char.c b/qemu-char.c index 4757689993..0fd402c46d 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -119,7 +119,12 @@ static void qemu_chr_event(CharDriverState *s, int event) static void qemu_chr_reset_bh(void *opaque) { CharDriverState *s = opaque; - qemu_chr_event(s, CHR_EVENT_OPENED); + + if (s->initial_reset_issued) { + qemu_chr_event(s, CHR_EVENT_OPENED); + } else { + s->initial_reset_issued = true; + } qemu_bh_delete(s->bh); s->bh = NULL; } diff --git a/qemu-char.h b/qemu-char.h index 05fe15d8cd..409961d205 100644 --- a/qemu-char.h +++ b/qemu-char.h @@ -1,6 +1,7 @@ #ifndef QEMU_CHAR_H #define QEMU_CHAR_H +#include #include "qemu-common.h" #include "qemu-queue.h" #include "qemu-option.h" @@ -66,6 +67,7 @@ struct CharDriverState { QEMUBH *bh; char *label; char *filename; + bool initial_reset_issued; QTAILQ_ENTRY(CharDriverState) next; };