qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@siemens.com>
To: Avi Kivity <avi@redhat.com>
Cc: blauwirbel@gmail.com, amit.shah@redhat.com, aliguori@us.ibm.com,
	qemu-devel@nongnu.org, Luiz Capitulino <lcapitulino@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 2/7] Replace VMSTOP macros with a proper QemuState type
Date: Thu, 04 Aug 2011 12:17:55 +0200	[thread overview]
Message-ID: <4E3A71D3.6030700@siemens.com> (raw)
In-Reply-To: <4E3A6C8C.8060304@redhat.com>

On 2011-08-04 11:55, Avi Kivity wrote:
> On 08/03/2011 06:17 PM, Luiz Capitulino wrote:
>> @@ -9,6 +9,20 @@
>>   #include "notify.h"
>>
>>   /* vl.c */
>> +
>> +typedef enum {
>> +    QSTATE_DEBUG,         /* qemu is running under gdb */
>> +    QSTATE_INTERROR,      /* paused due to an internal error */
>> +    QSTATE_IOERROR,       /* paused due to an I/O error */
>> +    QSTATE_PAUSED,        /* paused by the user (ie. the 'stop'
>> command) */
>> +    QSTATE_PREMIGRATE,    /* paused preparing to finish migrate */
>> +    QSTATE_RESTVM,        /* paused restoring the VM state */
>> +    QSTATE_RUNNING,       /* qemu is running */
>> +    QSTATE_SAVEVM,        /* paused saving VM state */
>> +    QSTATE_SHUTDOWN,      /* guest shut down and -no-shutdown is in
>> use */
>> +    QSTATE_WATCHDOG       /* watchdog fired and qemu is configured to
>> pause */
>> +} QemuState;
>> +
>>   extern const char *bios_name;
>>
> 
> Why "QemuState"?  In general, "qemu" can be inferred from the fact that
> we're in qemu.git.  Suggest "RunState".
> 
> Second, these states can coexist.  A user may pause the VM
> simultaneously with the watchdog firing or entering premigrate state. 
> In fact, with multiple monitors, each monitor can pause and resume the
> vm independently.
> 
> So I think we should keep a reference count instead of just a start/stop
> state.  Perhaps
> 
> vm_stop(QemuState s)
> {
>     ++stopcount[s];
> }
> 
> vm_is_stopped()
> {
>     for (s in states)
>           if (stopcount[s])
>               return true;
>     return false;
> }

I don't think this makes sense nor is user-friendly. If one command
channel suspends the machine, others have the chance to subscribe for
that event. Maintaining a suspension counter would mean you also need a
channel to query its value.

IMHO, there is also no use for defining stopped orthogonally to
premigrate and other states that imply that the machine is stopped.
Basically they mean "stopped for/because of X". We just need to avoid
that you can enter plain stopped state from them by issuing the
corresponding monitor command. The other way around might be possible,
though, if there are race windows.

Jan


-- 
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux

  reply	other threads:[~2011-08-04 10:18 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-03 15:17 [Qemu-devel] [PATCH 0/7]: Introduce the QemuState type Luiz Capitulino
2011-08-03 15:17 ` [Qemu-devel] [PATCH 1/7] Move vm_state_notify() prototype from cpus.h to sysemu.h Luiz Capitulino
2011-08-03 15:17 ` [Qemu-devel] [PATCH 2/7] Replace VMSTOP macros with a proper QemuState type Luiz Capitulino
2011-08-04  9:55   ` Avi Kivity
2011-08-04 10:17     ` Jan Kiszka [this message]
2011-08-04 10:27       ` Jan Kiszka
2011-08-04 14:06       ` Luiz Capitulino
2011-08-08 11:22       ` Avi Kivity
2011-08-08 13:25         ` Luiz Capitulino
2011-08-08 13:27           ` Avi Kivity
2011-08-08 13:28             ` Luiz Capitulino
2011-08-08 13:40               ` Avi Kivity
2011-08-08 13:47                 ` Luiz Capitulino
2011-08-08 13:54                   ` Avi Kivity
2011-08-08 14:06                     ` Luiz Capitulino
2011-08-08 14:27                       ` Avi Kivity
2011-08-08 20:25                         ` Luiz Capitulino
2011-08-03 15:17 ` [Qemu-devel] [PATCH 3/7] QemuState: Add additional states Luiz Capitulino
2011-08-04  9:02   ` Markus Armbruster
2011-08-04 12:32     ` Kevin Wolf
2011-08-04 13:23       ` Anthony Liguori
2011-08-04 13:54     ` Luiz Capitulino
2011-08-08  6:02       ` Markus Armbruster
2011-08-03 15:17 ` [Qemu-devel] [PATCH 4/7] Drop the incoming_expected global variable Luiz Capitulino
2011-08-03 15:17 ` [Qemu-devel] [PATCH 5/7] Drop the vm_running " Luiz Capitulino
2011-08-03 15:17 ` [Qemu-devel] [PATCH 6/7] Monitor: Don't allow cont on bad VM state Luiz Capitulino
2011-08-03 15:32   ` Jan Kiszka
2011-08-03 17:32     ` Luiz Capitulino
2011-08-04  8:42       ` Jan Kiszka
2011-08-03 15:17 ` [Qemu-devel] [PATCH 7/7] QMP: query-status: Introduce 'status' key Luiz Capitulino
2011-08-04  9:06 ` [Qemu-devel] [PATCH 0/7]: Introduce the QemuState type Markus Armbruster

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4E3A71D3.6030700@siemens.com \
    --to=jan.kiszka@siemens.com \
    --cc=aliguori@us.ibm.com \
    --cc=amit.shah@redhat.com \
    --cc=avi@redhat.com \
    --cc=blauwirbel@gmail.com \
    --cc=lcapitulino@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).