qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Luiz Capitulino <lcapitulino@redhat.com>
To: aliguori@us.ibm.com
Cc: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH 37/48] qmp: don't emit the RESET event on wakeup from S3
Date: Mon, 13 Aug 2012 16:48:58 -0300	[thread overview]
Message-ID: <1344887349-13041-38-git-send-email-lcapitulino@redhat.com> (raw)
In-Reply-To: <1344887349-13041-1-git-send-email-lcapitulino@redhat.com>

QEMU is basically using reset logic when waking up from S3. This
causes the QMP RESET event to be emitted, which is wrong. Also,
the runstate checks done in reset are not necessary for S3 wakeup.

Fix this by untangling wakeup from reset logic and passing
VMRESET_SILENT to qemu_system_reset() to avoid emitting the RESET
event.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
---
 vl.c | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/vl.c b/vl.c
index 91076f0..68fa0a0 100644
--- a/vl.c
+++ b/vl.c
@@ -1298,6 +1298,7 @@ static pid_t shutdown_pid;
 static int powerdown_requested;
 static int debug_requested;
 static int suspend_requested;
+static int wakeup_requested;
 static NotifierList suspend_notifiers =
     NOTIFIER_LIST_INITIALIZER(suspend_notifiers);
 static NotifierList wakeup_notifiers =
@@ -1352,6 +1353,13 @@ static int qemu_suspend_requested(void)
     return r;
 }
 
+static int qemu_wakeup_requested(void)
+{
+    int r = wakeup_requested;
+    wakeup_requested = 0;
+    return r;
+}
+
 int qemu_powerdown_requested(void)
 {
     int r = powerdown_requested;
@@ -1459,7 +1467,7 @@ void qemu_system_wakeup_request(WakeupReason reason)
     runstate_set(RUN_STATE_RUNNING);
     monitor_protocol_event(QEVENT_WAKEUP, NULL);
     notifier_list_notify(&wakeup_notifiers, &reason);
-    reset_requested = 1;
+    wakeup_requested = 1;
     qemu_notify_event();
 }
 
@@ -1539,6 +1547,12 @@ static bool main_loop_should_exit(void)
             runstate_set(RUN_STATE_PAUSED);
         }
     }
+    if (qemu_wakeup_requested()) {
+        pause_all_vcpus();
+        cpu_synchronize_all_states();
+        qemu_system_reset(VMRESET_SILENT);
+        resume_all_vcpus();
+    }
     if (qemu_powerdown_requested()) {
         monitor_protocol_event(QEVENT_POWERDOWN, NULL);
         qemu_irq_raise(qemu_system_powerdown);
-- 
1.7.11.2.249.g31c7954.dirty

  parent reply	other threads:[~2012-08-13 19:49 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-13 19:48 [Qemu-devel] [PULL 00/48]: QMP queue Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 01/48] monitor: drop unused monitor debug code Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 02/48] qerror: QERR_AMBIGUOUS_PATH: drop %(object) from human msg Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 03/48] qerror: QERR_DEVICE_ENCRYPTED: change error message Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 04/48] qerror: reduce public exposure Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 05/48] qerror: drop qerror_abort() Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 06/48] qerror: avoid passing qerr pointer Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 07/48] qerror: QError: drop file, linenr, func Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 08/48] qerror: qerror_format(): return an allocated string Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 09/48] qerror: don't delay error message construction Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 10/48] error: " Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 11/48] qmp: query-block: add 'encryption_key_missing' field Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 12/48] hmp: hmp_cont(): don't rely on QERR_DEVICE_ENCRYPTED Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 13/48] hmp_change(): don't access DeviceEncrypted's data Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 14/48] net: inet_connect(), inet_connect_opts(): add in_progress argument Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 15/48] migration: don't rely on any QERR_SOCKET_* Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 16/48] qerror: drop QERR_SOCKET_CONNECT_IN_PROGRESS Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 17/48] block: block_int: include qerror.h Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 18/48] hmp: hmp.h: include qdict.h Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 19/48] qapi: qapi-types.h: don't include qapi/qapi-types-core.h Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 20/48] qapi: generate correct enum names for camel case enums Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 21/48] qapi: don't convert enum strings to lowercase Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 22/48] qapi-schema: add ErrorClass enum Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 23/48] qerror: qerror_table: don't use C99 struct initializers Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 24/48] error, qerror: add ErrorClass argument to error functions Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 25/48] qerror: add proper ErrorClass value for QERR_ macros Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 26/48] error: add error_get_class() Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 27/48] hmp: hmp_change(): use error_get_class() Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 28/48] error: drop unused functions Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 29/48] qmp: switch to the new error format on the wire Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 30/48] qemu-ga: " Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 31/48] error: drop error_get_qobject()/error_set_qobject() Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 32/48] error, qerror: pass desc string to error calls Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 33/48] qerror: drop qerror_table and qerror_format() Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 34/48] error, qerror: drop QDict member Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 35/48] docs: writing-qmp-commands.txt: update error section Luiz Capitulino
2012-08-13 19:48 ` [Qemu-devel] [PATCH 36/48] scripts: qapi-commands.py: qmp-commands.h: include qdict.h Luiz Capitulino
2012-08-13 19:48 ` Luiz Capitulino [this message]
2012-08-13 19:48 ` [Qemu-devel] [PATCH 38/48] qmp: emit the WAKEUP event when the guest is put to run Luiz Capitulino
2012-08-13 19:49 ` [Qemu-devel] [PATCH 39/48] qmp: qmp-events.txt: put events in alphabetical order Luiz Capitulino
2012-08-13 19:49 ` [Qemu-devel] [PATCH 40/48] qmp: qmp-events.txt: add missing doc for the SUSPEND event Luiz Capitulino
2012-08-13 19:49 ` [Qemu-devel] [PATCH 41/48] qmp: add SUSPEND_DISK event Luiz Capitulino
2012-08-13 19:49 ` [Qemu-devel] [PATCH 42/48] qmp: introduce device-list-properties command Luiz Capitulino
2012-08-13 19:49 ` [Qemu-devel] [PATCH 43/48] qapi: mark QOM commands stable Luiz Capitulino
2012-08-13 19:49 ` [Qemu-devel] [PATCH 44/48] qapi: add query-machines command Luiz Capitulino
2012-08-13 19:49 ` [Qemu-devel] [PATCH 45/48] compiler: add macro for GCC weak symbols Luiz Capitulino
2012-08-13 19:49 ` [Qemu-devel] [PATCH 46/48] qapi: add query-cpu-definitions command (v2) Luiz Capitulino
2012-08-13 19:49 ` [Qemu-devel] [PATCH 47/48] target-i386: add implementation of query-cpu-definitions (v2) Luiz Capitulino
2012-08-13 19:49 ` [Qemu-devel] [PATCH 48/48] target-ppc: " Luiz Capitulino
2012-08-14  0:12 ` [Qemu-devel] [PULL 00/48]: QMP queue Anthony Liguori

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=1344887349-13041-38-git-send-email-lcapitulino@redhat.com \
    --to=lcapitulino@redhat.com \
    --cc=aliguori@us.ibm.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).