Message ID | 1371645291-3178-1-git-send-email-mjt@msgid.tls.msk.ru |
---|---|
State | New |
Headers | show |
Ping? 19.06.2013 16:34, Michael Tokarev wrote: > It looks like initially there was -nographic option to turn > off display, now there's another option of the same sort, > -display none. But code in other places of qemu checks for > DT_NOGRAPHIC and does not work well with -display none. > Make DT_NOGRAPHIC an internal version which selects DT_NONE, > and check for that in all other places where previously we > checked for DT_NOGRAPHIC. > > While at it, rename two private variants of display (DT_DEFAULT > and DT_NOGRAPHIC) to use two underscores and make them negative, > and set DT_NONE to 0. > > This should fix the issue of non-working sun serial console > with the suggested replacement of -nographic which is > -display none. > > I'm not still sure we really want to check for display type > in qemu-char.c where we allow/disallow signals delivery from > terminal, -- for other display types (CURSES) this makes no > good sense. > > If the fix is correct, it is a stable material. > > Cc: Todd T. Fries <todd@fries.net> > Signed-off-by: Michael Tokarev <mjt@tls.msk.ru> > --- > hw/lm32/milkymist-hw.h | 2 +- > hw/nvram/fw_cfg.c | 2 +- > hw/sparc/sun4m.c | 2 +- > include/sysemu/sysemu.h | 6 +++--- > qemu-char.c | 4 ++-- > vl.c | 15 +++++++-------- > 6 files changed, 15 insertions(+), 16 deletions(-) []
On 19 June 2013 13:34, Michael Tokarev <mjt@tls.msk.ru> wrote: > It looks like initially there was -nographic option to turn > off display, now there's another option of the same sort, > -display none. But code in other places of qemu checks for > DT_NOGRAPHIC and does not work well with -display none. > Make DT_NOGRAPHIC an internal version which selects DT_NONE, > and check for that in all other places where previously we > checked for DT_NOGRAPHIC. > > While at it, rename two private variants of display (DT_DEFAULT > and DT_NOGRAPHIC) to use two underscores and make them negative, > and set DT_NONE to 0. > > This should fix the issue of non-working sun serial console > with the suggested replacement of -nographic which is > -display none. Note that "-display none" and "-nographic" aren't exactly equivalent -- the latter is an option which turns on a bunch of behaviour including but not limited to "-display none". > I'm not still sure we really want to check for display type > in qemu-char.c where we allow/disallow signals delivery from > terminal, -- for other display types (CURSES) this makes no > good sense. ...in particular I don't think "-display none" should mean "don't allow ctrl-c" (though -nographic should continue to have that effect), and this patch currently introduces that behaviour change. > --- a/include/sysemu/sysemu.h > +++ b/include/sysemu/sysemu.h > @@ -87,12 +87,12 @@ void do_info_slirp(Monitor *mon); > > typedef enum DisplayType > { > - DT_DEFAULT, > + DT__DEFAULT = -1, /* private */ > + DT__NOGRAPHIC = -2, /* private */ > + DT_NONE = 0, I think these could use a slightly longer comment than just "private", eg "private, used internally by vl.c only". > DT_CURSES, > DT_SDL, > DT_GTK, > - DT_NOGRAPHIC, > - DT_NONE, > } DisplayType; thanks -- PMM
28.06.2013 15:24, Peter Maydell wrote: > On 19 June 2013 13:34, Michael Tokarev <mjt@tls.msk.ru> wrote: >> It looks like initially there was -nographic option to turn >> off display, now there's another option of the same sort, >> -display none. But code in other places of qemu checks for >> DT_NOGRAPHIC and does not work well with -display none. >> Make DT_NOGRAPHIC an internal version which selects DT_NONE, >> and check for that in all other places where previously we >> checked for DT_NOGRAPHIC. >> >> While at it, rename two private variants of display (DT_DEFAULT >> and DT_NOGRAPHIC) to use two underscores and make them negative, >> and set DT_NONE to 0. >> >> This should fix the issue of non-working sun serial console >> with the suggested replacement of -nographic which is >> -display none. > > Note that "-display none" and "-nographic" aren't exactly > equivalent -- the latter is an option which turns on a bunch > of behaviour including but not limited to "-display none". Exactly. See ab51b1d568e02c80b1abf9016bda3a86dc1db389 for a bit more context of this. >> I'm not still sure we really want to check for display type >> in qemu-char.c where we allow/disallow signals delivery from >> terminal, -- for other display types (CURSES) this makes no >> good sense. > > ...in particular I don't think "-display none" should > mean "don't allow ctrl-c" (though -nographic should > continue to have that effect), and this patch currently > introduces that behaviour change. As Anthony said before, -nographic is legacy. So there should be some more modern way to control this. That's exactly the change which I don't like myself. But "don't allow ctrl-c" which is currently bound to -nographic is equally wrong. >> + DT__DEFAULT = -1, /* private */ > I think these could use a slightly longer comment than just "private", > eg "private, used internally by vl.c only". Okay.
On 28 June 2013 12:29, Michael Tokarev <mjt@tls.msk.ru> wrote: > 28.06.2013 15:24, Peter Maydell wrote: >> ...in particular I don't think "-display none" should >> mean "don't allow ctrl-c" (though -nographic should >> continue to have that effect), and this patch currently >> introduces that behaviour change. > > As Anthony said before, -nographic is legacy. So there should > be some more modern way to control this. That's exactly the > change which I don't like myself. But "don't allow ctrl-c" > which is currently bound to -nographic is equally wrong. All I'm saying is that I use -display none and I like that it defaults to "ctrl-c works and kills qemu" and I don't want you to break that :-) thanks -- PMM
28.06.2013 15:34, Peter Maydell wrote: > On 28 June 2013 12:29, Michael Tokarev <mjt@tls.msk.ru> wrote: >> 28.06.2013 15:24, Peter Maydell wrote: >>> ...in particular I don't think "-display none" should >>> mean "don't allow ctrl-c" (though -nographic should >>> continue to have that effect), and this patch currently >>> introduces that behaviour change. >> >> As Anthony said before, -nographic is legacy. So there should >> be some more modern way to control this. That's exactly the >> change which I don't like myself. But "don't allow ctrl-c" >> which is currently bound to -nographic is equally wrong. > > All I'm saying is that I use -display none and I like that > it defaults to "ctrl-c works and kills qemu" and I don't > want you to break that :-) I'm not. Code in qemu-char.c: static bool stdio_allow_signal; static void qemu_chr_set_echo_stdio(CharDriverState *chr, bool echo) { ... /* if graphical mode, we allow Ctrl-C handling */ if (!stdio_allow_signal) tty.c_lflag &= ~ISIG; ... } static CharDriverState *qemu_chr_open_stdio(ChardevStdio *opts) { ... stdio_allow_signal = display_type != DT_NOGRAPHIC; if (opts->has_signal) { stdio_allow_signal = opts->signal; } ... } Note it is used only for stdio char device, like -serial stdio, so if you _just_ use -display none, without -serial stdio, you wont notice a change. And note that original intention isn't exactly clear, either. How it is related with, say, curses display which needs raw keypresses? Adding Paolo who wrote that code in bb002513. Thanks, /mjt
Am 28.06.2013 13:29, schrieb Michael Tokarev: > 28.06.2013 15:24, Peter Maydell wrote: >> On 19 June 2013 13:34, Michael Tokarev <mjt@tls.msk.ru> wrote: >>> It looks like initially there was -nographic option to turn >>> off display, now there's another option of the same sort, >>> -display none. But code in other places of qemu checks for >>> DT_NOGRAPHIC and does not work well with -display none. >>> Make DT_NOGRAPHIC an internal version which selects DT_NONE, >>> and check for that in all other places where previously we >>> checked for DT_NOGRAPHIC. >>> >>> While at it, rename two private variants of display (DT_DEFAULT >>> and DT_NOGRAPHIC) to use two underscores and make them negative, >>> and set DT_NONE to 0. >>> >>> This should fix the issue of non-working sun serial console >>> with the suggested replacement of -nographic which is >>> -display none. >> >> Note that "-display none" and "-nographic" aren't exactly >> equivalent -- the latter is an option which turns on a bunch >> of behaviour including but not limited to "-display none". > > Exactly. See ab51b1d568e02c80b1abf9016bda3a86dc1db389 > for a bit more context of this. > >>> I'm not still sure we really want to check for display type >>> in qemu-char.c where we allow/disallow signals delivery from >>> terminal, -- for other display types (CURSES) this makes no >>> good sense. >> >> ...in particular I don't think "-display none" should >> mean "don't allow ctrl-c" (though -nographic should >> continue to have that effect), and this patch currently >> introduces that behaviour change. > > As Anthony said before, -nographic is legacy. So there should > be some more modern way to control this. That's exactly the > change which I don't like myself. > But "don't allow ctrl-c" > which is currently bound to -nographic is equally wrong. What's wrong about that? Isn't Ctrl+C passed through to the guest in -nographic mode? I don't see how any other mode inclusing daemonize would need that. Andreas > >>> + DT__DEFAULT = -1, /* private */ >> I think these could use a slightly longer comment than just "private", >> eg "private, used internally by vl.c only". > > Okay. > >
On 28 June 2013 12:43, Michael Tokarev <mjt@tls.msk.ru> wrote: > Note it is used only for stdio char device, like -serial stdio, > so if you _just_ use -display none, without -serial stdio, you > wont notice a change. Yes, I use "-display none -serial stdio". -- PMM
28.06.2013 15:45, Andreas Färber пишет: > Am 28.06.2013 13:29, schrieb Michael Tokarev: >> 28.06.2013 15:24, Peter Maydell wrote: [] >>> ...in particular I don't think "-display none" should >>> mean "don't allow ctrl-c" (though -nographic should >>> continue to have that effect), and this patch currently >>> introduces that behaviour change. >> >> As Anthony said before, -nographic is legacy. So there should >> be some more modern way to control this. That's exactly the >> change which I don't like myself. > >> But "don't allow ctrl-c" >> which is currently bound to -nographic is equally wrong. > > What's wrong about that? Isn't Ctrl+C passed through to the guest in > -nographic mode? I don't see how any other mode inclusing daemonize > would need that. Um. With either -nographic or -display none, there's no "display" per se, and it is the "display" who relays keypresses and such into guest. Without display, the guest becomes headless completely, not only it does not have a monitor of a video card, but also does not have keyboard or mouse or other similar stuff. Or it may have these, but you can't "touch" neither keyboard nor mouse because you don't "see" them without a display. Fun thing but here we go. This ctrl+c handling is only about when you explicitly redirected some other char device to guest, such as serial port. Which don't have much to do with display I think, hence I don't understand the logic here. Thanks, /mjt
On 28 June 2013 12:50, Michael Tokarev <mjt@tls.msk.ru> wrote: > Um. With either -nographic or -display none, there's no "display" > per se, and it is the "display" who relays keypresses and such into > guest. Without display, the guest becomes headless completely, not > only it does not have a monitor of a video card, but also does not > have keyboard or mouse or other similar stuff. Or it may have these, > but you can't "touch" neither keyboard nor mouse because you don't > "see" them without a display. Fun thing but here we go. > > This ctrl+c handling is only about when you explicitly redirected > some other char device to guest, such as serial port. Which don't > have much to do with display I think, hence I don't understand the > logic here. The point is that one of the things -nographic does, as well as disabling the graphics display, is to redirect the serial port (among other things) to stdio. That's why there's code in the char backend that cares about "did you say -nographic": because -nographic means "no graphic display, serial port on terminal, send ctrl-c in terminal to guest rather than killing qemu, [some other stuff]". It would be nice to be able to say "-nographic is equivalent to '-display none -serial stdio -disable-ctrl-c -other-things'" but I'm not sure exactly what the -other-things are or even if we can set them all on the command line specifically. -- PMM
Am 28.06.2013 13:50, schrieb Michael Tokarev: > 28.06.2013 15:45, Andreas Färber пишет: >> Am 28.06.2013 13:29, schrieb Michael Tokarev: >>> 28.06.2013 15:24, Peter Maydell wrote: > [] >>>> ...in particular I don't think "-display none" should >>>> mean "don't allow ctrl-c" (though -nographic should >>>> continue to have that effect), and this patch currently >>>> introduces that behaviour change. >>> >>> As Anthony said before, -nographic is legacy. So there should >>> be some more modern way to control this. That's exactly the >>> change which I don't like myself. >> >>> But "don't allow ctrl-c" >>> which is currently bound to -nographic is equally wrong. >> >> What's wrong about that? Isn't Ctrl+C passed through to the guest in >> -nographic mode? I don't see how any other mode inclusing daemonize >> would need that. > > Um. With either -nographic or -display none, there's no "display" > per se, and it is the "display" who relays keypresses and such into > guest. Without display, the guest becomes headless completely, not > only it does not have a monitor of a video card, but also does not > have keyboard or mouse or other similar stuff. Or it may have these, > but you can't "touch" neither keyboard nor mouse because you don't > "see" them without a display. Fun thing but here we go. > > This ctrl+c handling is only about when you explicitly redirected > some other char device to guest, such as serial port. Which don't > have much to do with display I think, hence I don't understand the > logic here. The logic is that a) -nographic does have serial I/O on stdio and b) emulated serial ports may get repurposed (change order/usage) for this to work. CC'ing Alex and Blue who might remember more details. So in the end it boils down to whether we consider stdio a "display" and whether we may want to split this out into its own global variable to cleanly separate it from graphical DT_* options. Andreas > > Thanks, > > /mjt >
Am 28.06.2013 13:50, schrieb Michael Tokarev: > 28.06.2013 15:45, Andreas Färber пишет: >> Am 28.06.2013 13:29, schrieb Michael Tokarev: >>> 28.06.2013 15:24, Peter Maydell wrote: > [] >>>> ...in particular I don't think "-display none" should >>>> mean "don't allow ctrl-c" (though -nographic should >>>> continue to have that effect), and this patch currently >>>> introduces that behaviour change. >>> >>> As Anthony said before, -nographic is legacy. So there should >>> be some more modern way to control this. That's exactly the >>> change which I don't like myself. >> >>> But "don't allow ctrl-c" >>> which is currently bound to -nographic is equally wrong. >> >> What's wrong about that? Isn't Ctrl+C passed through to the guest in >> -nographic mode? I don't see how any other mode inclusing daemonize >> would need that. > > Um. With either -nographic or -display none, there's no "display" > per se, and it is the "display" who relays keypresses and such into > guest. Without display, the guest becomes headless completely, not > only it does not have a monitor of a video card, but also does not > have keyboard or mouse or other similar stuff. Or it may have these, > but you can't "touch" neither keyboard nor mouse because you don't > "see" them without a display. Fun thing but here we go. BTW just try it out using the following to see for yourself: $ qemu-system-ppc -nographic should get you to an interactive OpenBIOS prompt. Same for sparc. This involves communicating to firmware that we are in -nographic mode, which then redirects its output to serial rather then VGA (think of sgabios in x86 terms). Andreas > > This ctrl+c handling is only about when you explicitly redirected > some other char device to guest, such as serial port. Which don't > have much to do with display I think, hence I don't understand the > logic here. > > Thanks, > > /mjt >
28.06.2013 15:55, Peter Maydell wrote: > On 28 June 2013 12:50, Michael Tokarev <mjt@tls.msk.ru> wrote: >> This ctrl+c handling is only about when you explicitly redirected >> some other char device to guest, such as serial port. Which don't >> have much to do with display I think, hence I don't understand the >> logic here. > > The point is that one of the things -nographic does, as well > as disabling the graphics display, is to redirect the serial > port (among other things) to stdio. That's why there's code > in the char backend that cares about "did you say -nographic": > because -nographic means "no graphic display, serial port on > terminal, send ctrl-c in terminal to guest rather than killing > qemu, [some other stuff]". That's exactly why I don't think looking at -nographic here in serial code is wrong. It should do the same regardless of -nographic - if, say, serial is redirected to stdio, it should always pass Ctrl+C to guest instead of killing it. So I'm not really sure we should test for -display none here, either. > It would be nice to be able to say "-nographic is equivalent to > '-display none -serial stdio -disable-ctrl-c -other-things'" > but I'm not sure exactly what the -other-things are or even > if we can set them all on the command line specifically. We have some code in sun4 which also enabled serial ports differently with and without -nographic, maybe because of the same thing (which is what this all is about!). And there's also another place, passing this NOGRAPHIC thing to bios. So far that's all. With chardev you can explicitly control Ctrl+C behavour using signal={on|off} attribute. 28.06.2013 15:56, Andreas Färber wrote: [] > The logic is that a) -nographic does have serial I/O on stdio and b) > emulated serial ports may get repurposed (change order/usage) for this > to work. CC'ing Alex and Blue who might remember more details. > > So in the end it boils down to whether we consider stdio a "display" and > whether we may want to split this out into its own global variable to > cleanly separate it from graphical DT_* options. This is still wrong because it works differently if we explicitly redirected serial port to stdio and used -display none, or it was due to -nographic. Thanks, /mjt
Il 28/06/2013 14:05, Michael Tokarev ha scritto: > That's exactly why I don't think looking at -nographic here in > serial code is wrong. It should do the same regardless of > -nographic - if, say, serial is redirected to stdio, it should > always pass Ctrl+C to guest instead of killing it. So I'm > not really sure we should test for -display none here, either. See the patch I just sent. >> > It would be nice to be able to say "-nographic is equivalent to >> > '-display none -serial stdio -disable-ctrl-c -other-things'" >> > but I'm not sure exactly what the -other-things are or even >> > if we can set them all on the command line specifically. > We have some code in sun4 which also enabled serial ports > differently with and without -nographic, maybe because of > the same thing (which is what this all is about!). > > And there's also another place, passing this NOGRAPHIC thing > to bios. > > So far that's all. With chardev you can explicitly control > Ctrl+C behavour using signal={on|off} attribute. Unfortunately, you cannot use -chardev for the vast majority of boards (all those that have no ISA/PCI/virtio). Paolo
On 28 June 2013 13:05, Michael Tokarev <mjt@tls.msk.ru> wrote: > 28.06.2013 15:55, Peter Maydell wrote: >> The point is that one of the things -nographic does, as well >> as disabling the graphics display, is to redirect the serial >> port (among other things) to stdio. That's why there's code >> in the char backend that cares about "did you say -nographic": >> because -nographic means "no graphic display, serial port on >> terminal, send ctrl-c in terminal to guest rather than killing >> qemu, [some other stuff]". > > That's exactly why I don't think looking at -nographic here in > serial code is wrong. It should do the same regardless of > -nographic - if, say, serial is redirected to stdio, it should > always pass Ctrl+C to guest instead of killing it. So I'm > not really sure we should test for -display none here, either. No, I do not want "-serial stdio" to mean "and also stop ctrl-c killing QEMU". If you want that you should have to specify it specifically (or if you say -nographic it should happen by the code in vl.c opening the serial backend with the right options). -- PMM
Il 28/06/2013 14:05, Andreas Färber ha scritto: > BTW just try it out using the following to see for yourself: > > $ qemu-system-ppc -nographic > > should get you to an interactive OpenBIOS prompt. Same for sparc. > This involves communicating to firmware that we are in -nographic mode, > which then redirects its output to serial rather then VGA (think of > sgabios in x86 terms). Is this FW_CFG_NOGRAPHIC? This is really a good usecase for making the machine a Device, so you can control it with -global. It can be useful even if you do have a VGA attached. Paolo
Michael Tokarev <mjt@tls.msk.ru> writes: > It looks like initially there was -nographic option to turn > off display, now there's another option of the same sort, > -display none. But code in other places of qemu checks for > DT_NOGRAPHIC and does not work well with -display none. > Make DT_NOGRAPHIC an internal version which selects DT_NONE, > and check for that in all other places where previously we > checked for DT_NOGRAPHIC. > > While at it, rename two private variants of display (DT_DEFAULT > and DT_NOGRAPHIC) to use two underscores and make them negative, > and set DT_NONE to 0. > > This should fix the issue of non-working sun serial console > with the suggested replacement of -nographic which is > -display none. > > I'm not still sure we really want to check for display type > in qemu-char.c where we allow/disallow signals delivery from > terminal, -- for other display types (CURSES) this makes no > good sense. > > If the fix is correct, it is a stable material. Breaks make check: main-loop: WARNING: I/O thread spun for 1000 iterations ** ERROR:/home/aliguori/git/qemu/tests/fw_cfg-test.c:63:test_fw_cfg_nographic: assertion failed (qfw_cfg_get_u16(fw_cfg, FW_CFG_NOGRAPHIC) == 0): (1 == 0) GTester: last random seed: R02S25031265f05e4d41efcf758c9ef6043b Regards, Anthony Liguori > > Cc: Todd T. Fries <todd@fries.net> > Signed-off-by: Michael Tokarev <mjt@tls.msk.ru> > --- > hw/lm32/milkymist-hw.h | 2 +- > hw/nvram/fw_cfg.c | 2 +- > hw/sparc/sun4m.c | 2 +- > include/sysemu/sysemu.h | 6 +++--- > qemu-char.c | 4 ++-- > vl.c | 15 +++++++-------- > 6 files changed, 15 insertions(+), 16 deletions(-) > > diff --git a/hw/lm32/milkymist-hw.h b/hw/lm32/milkymist-hw.h > index 5317ce6..59af720 100644 > --- a/hw/lm32/milkymist-hw.h > +++ b/hw/lm32/milkymist-hw.h > @@ -107,7 +107,7 @@ static inline DeviceState *milkymist_tmu2_create(hwaddr base, > int nelements; > int ver_major, ver_minor; > > - if (display_type == DT_NOGRAPHIC) { > + if (display_type == DT_NONE) { > return NULL; > } > > diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c > index 3c255ce..b3d163a 100644 > --- a/hw/nvram/fw_cfg.c > +++ b/hw/nvram/fw_cfg.c > @@ -510,7 +510,7 @@ FWCfgState *fw_cfg_init(uint32_t ctl_port, uint32_t data_port, > } > fw_cfg_add_bytes(s, FW_CFG_SIGNATURE, (char *)"QEMU", 4); > fw_cfg_add_bytes(s, FW_CFG_UUID, qemu_uuid, 16); > - fw_cfg_add_i16(s, FW_CFG_NOGRAPHIC, (uint16_t)(display_type == DT_NOGRAPHIC)); > + fw_cfg_add_i16(s, FW_CFG_NOGRAPHIC, (uint16_t)(display_type == DT_NONE)); > fw_cfg_add_i16(s, FW_CFG_NB_CPUS, (uint16_t)smp_cpus); > fw_cfg_add_i16(s, FW_CFG_BOOT_MENU, (uint16_t)boot_menu); > fw_cfg_bootsplash(s); > diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c > index 0e86ca7..c1d42ec 100644 > --- a/hw/sparc/sun4m.c > +++ b/hw/sparc/sun4m.c > @@ -919,7 +919,7 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef, ram_addr_t RAM_size, > slavio_timer_init_all(hwdef->counter_base, slavio_irq[19], slavio_cpu_irq, smp_cpus); > > slavio_serial_ms_kbd_init(hwdef->ms_kb_base, slavio_irq[14], > - display_type == DT_NOGRAPHIC, ESCC_CLOCK, 1); > + display_type == DT_NONE, ESCC_CLOCK, 1); > /* Slavio TTYA (base+4, Linux ttyS0) is the first QEMU serial device > Slavio TTYB (base+0, Linux ttyS1) is the second QEMU serial device */ > escc_init(hwdef->serial_base, slavio_irq[15], slavio_irq[15], > diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h > index 2fb71af..fba7a7a 100644 > --- a/include/sysemu/sysemu.h > +++ b/include/sysemu/sysemu.h > @@ -87,12 +87,12 @@ void do_info_slirp(Monitor *mon); > > typedef enum DisplayType > { > - DT_DEFAULT, > + DT__DEFAULT = -1, /* private */ > + DT__NOGRAPHIC = -2, /* private */ > + DT_NONE = 0, > DT_CURSES, > DT_SDL, > DT_GTK, > - DT_NOGRAPHIC, > - DT_NONE, > } DisplayType; > > extern int autostart; > diff --git a/qemu-char.c b/qemu-char.c > index 2c3cfe6..3434971 100644 > --- a/qemu-char.c > +++ b/qemu-char.c > @@ -955,7 +955,7 @@ static CharDriverState *qemu_chr_open_stdio(ChardevStdio *opts) > chr = qemu_chr_open_fd(0, 1); > chr->chr_close = qemu_chr_close_stdio; > chr->chr_set_echo = qemu_chr_set_echo_stdio; > - stdio_allow_signal = display_type != DT_NOGRAPHIC; > + stdio_allow_signal = display_type != DT_NONE; > if (opts->has_signal) { > stdio_allow_signal = opts->signal; > } > @@ -3066,7 +3066,7 @@ static void qemu_chr_parse_stdio(QemuOpts *opts, ChardevBackend *backend, > backend->stdio = g_new0(ChardevStdio, 1); > backend->stdio->has_signal = true; > backend->stdio->signal = > - qemu_opt_get_bool(opts, "signal", display_type != DT_NOGRAPHIC); > + qemu_opt_get_bool(opts, "signal", display_type != DT_NONE); > } > > static void qemu_chr_parse_serial(QemuOpts *opts, ChardevBackend *backend, > diff --git a/vl.c b/vl.c > index f94ec9c..0269965 100644 > --- a/vl.c > +++ b/vl.c > @@ -183,7 +183,7 @@ static const char *data_dir[16]; > static int data_dir_idx; > const char *bios_name = NULL; > enum vga_retrace_method vga_retrace_method = VGA_RETRACE_DUMB; > -DisplayType display_type = DT_DEFAULT; > +DisplayType display_type = DT__DEFAULT; > static int display_remote; > const char* keyboard_layout = NULL; > ram_addr_t ram_size; > @@ -2152,7 +2152,7 @@ static void select_vgahw (const char *p) > static DisplayType select_display(const char *p) > { > const char *opts; > - DisplayType display = DT_DEFAULT; > + DisplayType display = DT__DEFAULT; > > if (strstart(p, "sdl", &opts)) { > #ifdef CONFIG_SDL > @@ -3093,7 +3093,7 @@ int main(int argc, char **argv, char **envp) > display_type = select_display(optarg); > break; > case QEMU_OPTION_nographic: > - display_type = DT_NOGRAPHIC; > + display_type = DT__NOGRAPHIC; > break; > case QEMU_OPTION_curses: > #ifdef CONFIG_CURSES > @@ -4018,7 +4018,7 @@ int main(int argc, char **argv, char **envp) > * -nographic _and_ redirects all ports explicitly - this is valid > * usage, -nographic is just a no-op in this case. > */ > - if (display_type == DT_NOGRAPHIC > + if (display_type == DT__NOGRAPHIC > && (default_parallel || default_serial > || default_monitor || default_virtcon)) { > fprintf(stderr, "-nographic can not be used with -daemonize\n"); > @@ -4032,7 +4032,8 @@ int main(int argc, char **argv, char **envp) > #endif > } > > - if (display_type == DT_NOGRAPHIC) { > + if (display_type == DT__NOGRAPHIC) { > + display_type = DT_NONE; > if (default_parallel) > add_device_config(DEV_PARALLEL, "null"); > if (default_serial && default_monitor) { > @@ -4066,7 +4067,7 @@ int main(int argc, char **argv, char **envp) > } > } > > - if (display_type == DT_DEFAULT && !display_remote) { > + if (display_type == DT__DEFAULT && !display_remote) { > #if defined(CONFIG_GTK) > display_type = DT_GTK; > #elif defined(CONFIG_SDL) || defined(CONFIG_COCOA) > @@ -4333,8 +4334,6 @@ int main(int argc, char **argv, char **envp) > > /* init local displays */ > switch (display_type) { > - case DT_NOGRAPHIC: > - break; > #if defined(CONFIG_CURSES) > case DT_CURSES: > curses_display_init(ds, full_screen); > -- > 1.7.10.4
09.07.2013 22:37, Anthony Liguori wrote: > Michael Tokarev <mjt@tls.msk.ru> writes: > >> It looks like initially there was -nographic option to turn >> off display, now there's another option of the same sort, >> -display none. But code in other places of qemu checks for >> DT_NOGRAPHIC and does not work well with -display none. >> Make DT_NOGRAPHIC an internal version which selects DT_NONE, >> and check for that in all other places where previously we >> checked for DT_NOGRAPHIC. [] > Breaks make check: > > main-loop: WARNING: I/O thread spun for 1000 iterations > ** > ERROR:/home/aliguori/git/qemu/tests/fw_cfg-test.c:63:test_fw_cfg_nographic: assertion failed (qfw_cfg_get_u16(fw_cfg, FW_CFG_NOGRAPHIC) == 0): (1 == 0) > GTester: last random seed: R02S25031265f05e4d41efcf758c9ef6043b Sure, because the test is bogus. Should I remove this bogus test? Thanks, /mjt
Michael Tokarev <mjt@tls.msk.ru> writes: > 09.07.2013 22:37, Anthony Liguori wrote: >> Michael Tokarev <mjt@tls.msk.ru> writes: >> >>> It looks like initially there was -nographic option to turn >>> off display, now there's another option of the same sort, >>> -display none. But code in other places of qemu checks for >>> DT_NOGRAPHIC and does not work well with -display none. >>> Make DT_NOGRAPHIC an internal version which selects DT_NONE, >>> and check for that in all other places where previously we >>> checked for DT_NOGRAPHIC. > [] >> Breaks make check: >> >> main-loop: WARNING: I/O thread spun for 1000 iterations >> ** >> ERROR:/home/aliguori/git/qemu/tests/fw_cfg-test.c:63:test_fw_cfg_nographic: assertion failed (qfw_cfg_get_u16(fw_cfg, FW_CFG_NOGRAPHIC) == 0): (1 == 0) >> GTester: last random seed: R02S25031265f05e4d41efcf758c9ef6043b > > Sure, because the test is bogus. No, it's a guest ABI. You cannot change the guest ABI. -display none != -nographic. nographic gives you -display none plus a stdio serial port (with muxing magic). -display none should not imply stdio serial port. The vc goes to a dummy display. That's a major semantic difference. Regards, Anthony Liguori > Should I remove this bogus test? > > Thanks, > > /mjt
On 9 July 2013 21:45, Anthony Liguori <aliguori@us.ibm.com> wrote: > Michael Tokarev <mjt@tls.msk.ru> writes: >> 09.07.2013 22:37, Anthony Liguori wrote: >>> ERROR:/home/aliguori/git/qemu/tests/fw_cfg-test.c:63:test_fw_cfg_nographic: assertion failed (qfw_cfg_get_u16(fw_cfg, FW_CFG_NOGRAPHIC) == 0): (1 == 0) >>> GTester: last random seed: R02S25031265f05e4d41efcf758c9ef6043b >> >> Sure, because the test is bogus. > > No, it's a guest ABI. You cannot change the guest ABI. Why the heck are we telling the guest that the user specified -nographic anyhow? It's a dumb guest ABI... > -display none != -nographic. > > nographic gives you -display none plus a stdio serial port (with muxing > magic). > > -display none should not imply stdio serial port. The vc goes to a > dummy display. That's a major semantic difference. None of these semantics have changed AFAICT. -- PMM
Peter Maydell <peter.maydell@linaro.org> writes: > On 9 July 2013 21:45, Anthony Liguori <aliguori@us.ibm.com> wrote: >> Michael Tokarev <mjt@tls.msk.ru> writes: >>> 09.07.2013 22:37, Anthony Liguori wrote: >>>> ERROR:/home/aliguori/git/qemu/tests/fw_cfg-test.c:63:test_fw_cfg_nographic: assertion failed (qfw_cfg_get_u16(fw_cfg, FW_CFG_NOGRAPHIC) == 0): (1 == 0) >>>> GTester: last random seed: R02S25031265f05e4d41efcf758c9ef6043b >>> >>> Sure, because the test is bogus. >> >> No, it's a guest ABI. You cannot change the guest ABI. > > Why the heck are we telling the guest that the user > specified -nographic anyhow? It's a dumb guest ABI... I believe OpenBIOS uses this to determine if it should display messages on serial or on the graphic display. It's actually a useful ABI in that regard. Regards, Anthony Liguori >> -display none != -nographic. >> >> nographic gives you -display none plus a stdio serial port (with muxing >> magic). >> >> -display none should not imply stdio serial port. The vc goes to a >> dummy display. That's a major semantic difference. > > None of these semantics have changed AFAICT. > > -- PMM
On 9 July 2013 22:24, Anthony Liguori <aliguori@us.ibm.com> wrote: > Peter Maydell <peter.maydell@linaro.org> writes: >> Why the heck are we telling the guest that the user >> specified -nographic anyhow? It's a dumb guest ABI... > > I believe OpenBIOS uses this to determine if it should display messages > on serial or on the graphic display. > > It's actually a useful ABI in that regard. OK, I might go for "useful but misnamed"; we should presumably have a command line option to set it cleanly (ie independently of display type), and add that to the list of random things -nographic does... -- PMM
Peter Maydell <peter.maydell@linaro.org> writes: > On 9 July 2013 22:24, Anthony Liguori <aliguori@us.ibm.com> wrote: >> Peter Maydell <peter.maydell@linaro.org> writes: >>> Why the heck are we telling the guest that the user >>> specified -nographic anyhow? It's a dumb guest ABI... >> >> I believe OpenBIOS uses this to determine if it should display messages >> on serial or on the graphic display. >> >> It's actually a useful ABI in that regard. > > OK, I might go for "useful but misnamed"; we should > presumably have a command line option to set it > cleanly (ie independently of display type), and add > that to the list of random things -nographic does... I wouldn't be opposed to that but whatever we do, it should be documented and should not break 'make check'. Regards, Anthony Liguori > > -- PMM
10.07.2013 00:45, Anthony Liguori wrote: > Michael Tokarev <mjt@tls.msk.ru> writes: > >> 09.07.2013 22:37, Anthony Liguori wrote: >>> Michael Tokarev <mjt@tls.msk.ru> writes: >>> >>>> It looks like initially there was -nographic option to turn >>>> off display, now there's another option of the same sort, >>>> -display none. But code in other places of qemu checks for >>>> DT_NOGRAPHIC and does not work well with -display none. >>>> Make DT_NOGRAPHIC an internal version which selects DT_NONE, >>>> and check for that in all other places where previously we >>>> checked for DT_NOGRAPHIC. >> [] >>> Breaks make check: >>> >>> main-loop: WARNING: I/O thread spun for 1000 iterations >>> ** >>> ERROR:/home/aliguori/git/qemu/tests/fw_cfg-test.c:63:test_fw_cfg_nographic: assertion failed (qfw_cfg_get_u16(fw_cfg, FW_CFG_NOGRAPHIC) == 0): (1 == 0) >>> GTester: last random seed: R02S25031265f05e4d41efcf758c9ef6043b >> >> Sure, because the test is bogus. > > No, it's a guest ABI. You cannot change the guest ABI. > > -display none != -nographic. > > nographic gives you -display none plus a stdio serial port (with muxing > magic). > > -display none should not imply stdio serial port. The vc goes to a > dummy display. That's a major semantic difference. So we're back to the original bugreport by Todd Fries -- apparently all my attempts to describe the proposed ways to change it failed. Note that -nographics does NOT imply a serial port either, because it can be redirected elsewhere. /mjt
10.07.2013 01:24, Anthony Liguori wrote: > Peter Maydell <peter.maydell@linaro.org> writes: > >> On 9 July 2013 21:45, Anthony Liguori <aliguori@us.ibm.com> wrote: >>> Michael Tokarev <mjt@tls.msk.ru> writes: >>>> 09.07.2013 22:37, Anthony Liguori wrote: >>>>> ERROR:/home/aliguori/git/qemu/tests/fw_cfg-test.c:63:test_fw_cfg_nographic: assertion failed (qfw_cfg_get_u16(fw_cfg, FW_CFG_NOGRAPHIC) == 0): (1 == 0) >>>>> GTester: last random seed: R02S25031265f05e4d41efcf758c9ef6043b >>>> >>>> Sure, because the test is bogus. >>> >>> No, it's a guest ABI. You cannot change the guest ABI. >> >> Why the heck are we telling the guest that the user >> specified -nographic anyhow? It's a dumb guest ABI... > > I believe OpenBIOS uses this to determine if it should display messages > on serial or on the graphic display. This is actually exactly the thing this very patch changes: it stops relying on -nographics and passes -display none to the bios/firmware instead. And the documentation has been updated accordingly, also in this very patch: hw/nvram/fw_cfg.c - fw_cfg_add_i16(s, FW_CFG_NOGRAPHIC, (uint16_t)(display_type == DT_NOGRAPHIC)); + fw_cfg_add_i16(s, FW_CFG_NOGRAPHIC, (uint16_t)(display_type == DT_NONE)); hw/sparc/sun4m.c slavio_serial_ms_kbd_init(hwdef->ms_kb_base, slavio_irq[14], - display_type == DT_NOGRAPHIC, ESCC_CLOCK, 1); + display_type == DT_NONE, ESCC_CLOCK, 1); qemu-options.hx @item none Do not display video output. The guest will still see an emulated graphics card, but its output will not be displayed to the QEMU -user. This option differs from the -nographic option in that it +user. The fact that we have no display is passed to firmware and +affects a few other places depending on the target architecture, +like switching console output to serial console or disabling keyboard +input. + +This option differs from the -nographic option in that it only affects what is done with video output; -nographic also changes the destination of the serial and parallel port data. Besides, -- I just noticed -- we're discussing a V1 of this patch, while I already sent a v3, -- it has a much more appropriate logic for the Ctrl+C handling. The only issue I see with it is the make check breakage which is easy to fix by s/==0/==1/. Thanks, /mjt
10.07.2013 08:45, Michael Tokarev wrote: [] > Besides, -- I just noticed -- we're discussing a V1 of this patch, > while I already sent a v3, -- it has a much more appropriate logic > for the Ctrl+C handling. The only issue I see with it is the make > check breakage which is easy to fix by s/==0/==1/. I updated the git branch on my site -- http://git.corpit.ru/?p=qemu.git;a=shortlog;h=refs/heads/mjt-dt-nographic (two patches on the top). This now includes the `make check' fix by flipping the check (FW_CFG_NOGRAPHIC==1 vs ==0), more documentation rewording (suggested by Peter) and Reviewed-by tags. And yes, I dislike this mess too -- neither -nographic nor -display none should be tied with guest serial port. Better approach for the Ctrl+C handling has been proposed by pbonzini. Better suggestions for FW_CFG_NOGRAPHIC welcome. Maybe something like -serial-console (linux has console=ttyS0,tty1) which will be turned on by -nographic and which will be passed to firmware as FW_CFG_NOGRAPHIC, and which can be used in -serial none case to check for sanity. But actually, -display none isn't that bad of a choice here (and maybe we may also enforce non-none serial in case of -display none). Thanks, /mjt
10.07.2013 02:03, Anthony Liguori wrote: > Peter Maydell <peter.maydell@linaro.org> writes: > >> On 9 July 2013 22:24, Anthony Liguori <aliguori@us.ibm.com> wrote: >>> Peter Maydell <peter.maydell@linaro.org> writes: >>>> Why the heck are we telling the guest that the user >>>> specified -nographic anyhow? It's a dumb guest ABI... >>> >>> I believe OpenBIOS uses this to determine if it should display messages >>> on serial or on the graphic display. >>> >>> It's actually a useful ABI in that regard. >> >> OK, I might go for "useful but misnamed"; we should >> presumably have a command line option to set it >> cleanly (ie independently of display type), and add >> that to the list of random things -nographic does... > > I wouldn't be opposed to that but whatever we do, it should be > documented and should not break 'make check'. So, what do we do now? Ping: http://git.corpit.ru/?p=qemu.git;a=shortlog;h=refs/heads/mjt-dt-nographic /mjt
On 10 July 2013 06:08, Michael Tokarev <mjt@tls.msk.ru> wrote: > I updated the git branch on my site -- > > http://git.corpit.ru/?p=qemu.git;a=shortlog;h=refs/heads/mjt-dt-nographic > > (two patches on the top). This now includes the `make check' fix by > flipping the check (FW_CFG_NOGRAPHIC==1 vs ==0), more documentation > rewording (suggested by Peter) and Reviewed-by tags. > > And yes, I dislike this mess too -- neither -nographic nor -display none > should be tied with guest serial port. Better approach for the Ctrl+C > handling has been proposed by pbonzini. Better suggestions for FW_CFG_NOGRAPHIC > welcome. Maybe something like -serial-console (linux has console=ttyS0,tty1) > which will be turned on by -nographic and which will be passed to firmware > as FW_CFG_NOGRAPHIC, and which can be used in -serial none case to check for > sanity. But actually, -display none isn't that bad of a choice here (and > maybe we may also enforce non-none serial in case of -display none). I think "-display none" should just mean "I didn't plug the monitor in": it should have no effect at all on the guest (or on the way we emulate or configure any other of our devices) -- it's just that graphics output doesn't go anywhere. So the test case is correct (the test was started with '-display none' and this shouldn't result in the FW_CFG_NOGRAPHIC bit being set) and we need to make QEMU behave correctly (ie by tying that FW_CFG_ setting to something other than display=none). On a similar line of thought: * milkymist_tmu2_create() should definitely not be doing the X probing if DT_NONE, but it should ideally still create the milkymist-tmu2 device. This is hard though because the device itself basically assumes it can use all the OpenGL APIs. So I think the change in your patch is as good as we're going to get. * I'm not convinced we should need to disable the sparc keyboard if DT_NONE -- shouldn't this just work as if you had a physical keyboard plugged in but never typed anything on it? (Or does real hardware use "keyboard plugged in" to decide something?) thanks -- PMM
diff --git a/hw/lm32/milkymist-hw.h b/hw/lm32/milkymist-hw.h index 5317ce6..59af720 100644 --- a/hw/lm32/milkymist-hw.h +++ b/hw/lm32/milkymist-hw.h @@ -107,7 +107,7 @@ static inline DeviceState *milkymist_tmu2_create(hwaddr base, int nelements; int ver_major, ver_minor; - if (display_type == DT_NOGRAPHIC) { + if (display_type == DT_NONE) { return NULL; } diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index 3c255ce..b3d163a 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -510,7 +510,7 @@ FWCfgState *fw_cfg_init(uint32_t ctl_port, uint32_t data_port, } fw_cfg_add_bytes(s, FW_CFG_SIGNATURE, (char *)"QEMU", 4); fw_cfg_add_bytes(s, FW_CFG_UUID, qemu_uuid, 16); - fw_cfg_add_i16(s, FW_CFG_NOGRAPHIC, (uint16_t)(display_type == DT_NOGRAPHIC)); + fw_cfg_add_i16(s, FW_CFG_NOGRAPHIC, (uint16_t)(display_type == DT_NONE)); fw_cfg_add_i16(s, FW_CFG_NB_CPUS, (uint16_t)smp_cpus); fw_cfg_add_i16(s, FW_CFG_BOOT_MENU, (uint16_t)boot_menu); fw_cfg_bootsplash(s); diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index 0e86ca7..c1d42ec 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -919,7 +919,7 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef, ram_addr_t RAM_size, slavio_timer_init_all(hwdef->counter_base, slavio_irq[19], slavio_cpu_irq, smp_cpus); slavio_serial_ms_kbd_init(hwdef->ms_kb_base, slavio_irq[14], - display_type == DT_NOGRAPHIC, ESCC_CLOCK, 1); + display_type == DT_NONE, ESCC_CLOCK, 1); /* Slavio TTYA (base+4, Linux ttyS0) is the first QEMU serial device Slavio TTYB (base+0, Linux ttyS1) is the second QEMU serial device */ escc_init(hwdef->serial_base, slavio_irq[15], slavio_irq[15], diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h index 2fb71af..fba7a7a 100644 --- a/include/sysemu/sysemu.h +++ b/include/sysemu/sysemu.h @@ -87,12 +87,12 @@ void do_info_slirp(Monitor *mon); typedef enum DisplayType { - DT_DEFAULT, + DT__DEFAULT = -1, /* private */ + DT__NOGRAPHIC = -2, /* private */ + DT_NONE = 0, DT_CURSES, DT_SDL, DT_GTK, - DT_NOGRAPHIC, - DT_NONE, } DisplayType; extern int autostart; diff --git a/qemu-char.c b/qemu-char.c index 2c3cfe6..3434971 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -955,7 +955,7 @@ static CharDriverState *qemu_chr_open_stdio(ChardevStdio *opts) chr = qemu_chr_open_fd(0, 1); chr->chr_close = qemu_chr_close_stdio; chr->chr_set_echo = qemu_chr_set_echo_stdio; - stdio_allow_signal = display_type != DT_NOGRAPHIC; + stdio_allow_signal = display_type != DT_NONE; if (opts->has_signal) { stdio_allow_signal = opts->signal; } @@ -3066,7 +3066,7 @@ static void qemu_chr_parse_stdio(QemuOpts *opts, ChardevBackend *backend, backend->stdio = g_new0(ChardevStdio, 1); backend->stdio->has_signal = true; backend->stdio->signal = - qemu_opt_get_bool(opts, "signal", display_type != DT_NOGRAPHIC); + qemu_opt_get_bool(opts, "signal", display_type != DT_NONE); } static void qemu_chr_parse_serial(QemuOpts *opts, ChardevBackend *backend, diff --git a/vl.c b/vl.c index f94ec9c..0269965 100644 --- a/vl.c +++ b/vl.c @@ -183,7 +183,7 @@ static const char *data_dir[16]; static int data_dir_idx; const char *bios_name = NULL; enum vga_retrace_method vga_retrace_method = VGA_RETRACE_DUMB; -DisplayType display_type = DT_DEFAULT; +DisplayType display_type = DT__DEFAULT; static int display_remote; const char* keyboard_layout = NULL; ram_addr_t ram_size; @@ -2152,7 +2152,7 @@ static void select_vgahw (const char *p) static DisplayType select_display(const char *p) { const char *opts; - DisplayType display = DT_DEFAULT; + DisplayType display = DT__DEFAULT; if (strstart(p, "sdl", &opts)) { #ifdef CONFIG_SDL @@ -3093,7 +3093,7 @@ int main(int argc, char **argv, char **envp) display_type = select_display(optarg); break; case QEMU_OPTION_nographic: - display_type = DT_NOGRAPHIC; + display_type = DT__NOGRAPHIC; break; case QEMU_OPTION_curses: #ifdef CONFIG_CURSES @@ -4018,7 +4018,7 @@ int main(int argc, char **argv, char **envp) * -nographic _and_ redirects all ports explicitly - this is valid * usage, -nographic is just a no-op in this case. */ - if (display_type == DT_NOGRAPHIC + if (display_type == DT__NOGRAPHIC && (default_parallel || default_serial || default_monitor || default_virtcon)) { fprintf(stderr, "-nographic can not be used with -daemonize\n"); @@ -4032,7 +4032,8 @@ int main(int argc, char **argv, char **envp) #endif } - if (display_type == DT_NOGRAPHIC) { + if (display_type == DT__NOGRAPHIC) { + display_type = DT_NONE; if (default_parallel) add_device_config(DEV_PARALLEL, "null"); if (default_serial && default_monitor) { @@ -4066,7 +4067,7 @@ int main(int argc, char **argv, char **envp) } } - if (display_type == DT_DEFAULT && !display_remote) { + if (display_type == DT__DEFAULT && !display_remote) { #if defined(CONFIG_GTK) display_type = DT_GTK; #elif defined(CONFIG_SDL) || defined(CONFIG_COCOA) @@ -4333,8 +4334,6 @@ int main(int argc, char **argv, char **envp) /* init local displays */ switch (display_type) { - case DT_NOGRAPHIC: - break; #if defined(CONFIG_CURSES) case DT_CURSES: curses_display_init(ds, full_screen);
It looks like initially there was -nographic option to turn off display, now there's another option of the same sort, -display none. But code in other places of qemu checks for DT_NOGRAPHIC and does not work well with -display none. Make DT_NOGRAPHIC an internal version which selects DT_NONE, and check for that in all other places where previously we checked for DT_NOGRAPHIC. While at it, rename two private variants of display (DT_DEFAULT and DT_NOGRAPHIC) to use two underscores and make them negative, and set DT_NONE to 0. This should fix the issue of non-working sun serial console with the suggested replacement of -nographic which is -display none. I'm not still sure we really want to check for display type in qemu-char.c where we allow/disallow signals delivery from terminal, -- for other display types (CURSES) this makes no good sense. If the fix is correct, it is a stable material. Cc: Todd T. Fries <todd@fries.net> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru> --- hw/lm32/milkymist-hw.h | 2 +- hw/nvram/fw_cfg.c | 2 +- hw/sparc/sun4m.c | 2 +- include/sysemu/sysemu.h | 6 +++--- qemu-char.c | 4 ++-- vl.c | 15 +++++++-------- 6 files changed, 15 insertions(+), 16 deletions(-)