[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 01/19] char: Fix initial reset
From: |
Jan Kiszka |
Subject: |
[Qemu-devel] [PATCH v2 01/19] char: Fix initial reset |
Date: |
Sat, 21 Feb 2009 19:29:15 +0100 |
User-agent: |
StGIT/0.14.2 |
Recent changes to the graphical console initialization broke the initial
CHR_EVENT_RESET distribution. The reset BHs generated on char device
initialization are now already consumed during machine init (ide init
... -> qemu_aio_wait -> qemu_bh_poll). Therefore, this patch moves the
initial qemu_chr_reset calls into a separate funtion which is called
after machine init.
Signed-off-by: Jan Kiszka <address@hidden>
---
qemu-char.c | 20 ++++++++++++++++----
qemu-char.h | 1 +
vl.c | 1 +
3 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/qemu-char.c b/qemu-char.c
index 7cdeffd..1332863 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -101,6 +101,10 @@
/***********************************************************/
/* character device */
+static TAILQ_HEAD(CharDriverStateHead, CharDriverState) chardevs =
+ TAILQ_HEAD_INITIALIZER(chardevs);
+static int initial_reset_issued;
+
static void qemu_chr_event(CharDriverState *s, int event)
{
if (!s->chr_event)
@@ -118,12 +122,23 @@ static void qemu_chr_reset_bh(void *opaque)
void qemu_chr_reset(CharDriverState *s)
{
- if (s->bh == NULL) {
+ if (s->bh == NULL && initial_reset_issued) {
s->bh = qemu_bh_new(qemu_chr_reset_bh, s);
qemu_bh_schedule(s->bh);
}
}
+void qemu_chr_initial_reset(void)
+{
+ CharDriverState *chr;
+
+ initial_reset_issued = 1;
+
+ TAILQ_FOREACH(chr, &chardevs, next) {
+ qemu_chr_reset(chr);
+ }
+}
+
int qemu_chr_write(CharDriverState *s, const uint8_t *buf, int len)
{
return s->chr_write(s, buf, len);
@@ -2076,9 +2091,6 @@ static CharDriverState *qemu_chr_open_tcp(const char
*host_str,
return NULL;
}
-static TAILQ_HEAD(CharDriverStateHead, CharDriverState) chardevs
-= TAILQ_HEAD_INITIALIZER(chardevs);
-
CharDriverState *qemu_chr_open(const char *label, const char *filename, void
(*init)(struct CharDriverState *s))
{
const char *p;
diff --git a/qemu-char.h b/qemu-char.h
index bc0fcf3..9ff6b99 100644
--- a/qemu-char.h
+++ b/qemu-char.h
@@ -74,6 +74,7 @@ void qemu_chr_add_handlers(CharDriverState *s,
void *opaque);
int qemu_chr_ioctl(CharDriverState *s, int cmd, void *arg);
void qemu_chr_reset(CharDriverState *s);
+void qemu_chr_initial_reset(void);
int qemu_chr_can_read(CharDriverState *s);
void qemu_chr_read(CharDriverState *s, uint8_t *buf, int len);
void qemu_chr_accept_input(CharDriverState *s);
diff --git a/vl.c b/vl.c
index b653056..16353f5 100644
--- a/vl.c
+++ b/vl.c
@@ -5667,6 +5667,7 @@ int main(int argc, char **argv, char **envp)
}
text_consoles_set_display(display_state);
+ qemu_chr_initial_reset();
if (monitor_device && monitor_hd)
monitor_init(monitor_hd, !nographic);
- [Qemu-devel] [PATCH v2 00/19] monitor rework, Jan Kiszka, 2009/02/21
- [Qemu-devel] [PATCH v2 02/19] char-mux: Use separate input buffers, Jan Kiszka, 2009/02/21
- [Qemu-devel] [PATCH v2 04/19] block: Improve bdrv_iterate, Jan Kiszka, 2009/02/21
- [Qemu-devel] [PATCH v2 06/19] monitor: Use reasonable default virtual console size, Jan Kiszka, 2009/02/21
- [Qemu-devel] [PATCH v2 01/19] char: Fix initial reset,
Jan Kiszka <=
- [Qemu-devel] [PATCH v2 03/19] block: Polish error handling of brdv_open2, Jan Kiszka, 2009/02/21
- [Qemu-devel] [PATCH v2 05/19] block: Introduce bdrv_get_encrypted_filename, Jan Kiszka, 2009/02/21
- [Qemu-devel] [PATCH v2 09/19] monitor: Simplify password input mode, Jan Kiszka, 2009/02/21
- [Qemu-devel] [PATCH v2 08/19] monitor: Rework early disk password inquiry, Jan Kiszka, 2009/02/21
- [Qemu-devel] [PATCH v2 07/19] monitor: Report encrypted disks in snapshot mode, Jan Kiszka, 2009/02/21
- [Qemu-devel] [PATCH v2 14/19] monitor: Drop banner hiding, Jan Kiszka, 2009/02/21
- [Qemu-devel] [PATCH v2 11/19] monitor: Rework modal password input, Jan Kiszka, 2009/02/21
- [Qemu-devel] [PATCH v2 19/19] monitor: Pass-through for gdbstub, Jan Kiszka, 2009/02/21
- [Qemu-devel] [PATCH v2 13/19] monitor: Rework terminal management, Jan Kiszka, 2009/02/21
- [Qemu-devel] [PATCH v2 10/19] monitor: Break out readline_show_prompt, Jan Kiszka, 2009/02/21