summary refs log tree commit diff stats
path: root/hw/acpi.c
diff options
context:
space:
mode:
authorLuiz Capitulino <lcapitulino@redhat.com>2012-08-08 17:03:01 -0300
committerLuiz Capitulino <lcapitulino@redhat.com>2012-08-13 16:10:18 -0300
commit25df49f6eb113081f48fdb3a3dd17bf1c0b25600 (patch)
treed4b3a5ab8407736f05b46607b495bb82320b83e4 /hw/acpi.c
parent67e3cf2664b3fc858a895d1e0e4b8d81c3400823 (diff)
downloadfocaccia-qemu-25df49f6eb113081f48fdb3a3dd17bf1c0b25600.tar.gz
focaccia-qemu-25df49f6eb113081f48fdb3a3dd17bf1c0b25600.zip
qmp: add SUSPEND_DISK event
Emitted when the guest makes a request to enter S4 state.

There are three possible ways of having this event, as described here:

 http://lists.gnu.org/archive/html/qemu-devel/2012-07/msg02307.html

I've decided to add a new event and make it indepedent of SHUTDOWN.
This means that the SHUTDOWN event will eventually follow the
SUSPEND_DISK event.

I've choosen this way because of two reasons:

 1. Having an indepedent event makes it possible to query for its
    existence by using query-events

 2. In the future, we may allow the user to change what QEMU should
    do as a result of the guest entering S4. So it's a good idea to
    keep both events separated

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Diffstat (limited to 'hw/acpi.c')
-rw-r--r--hw/acpi.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/hw/acpi.c b/hw/acpi.c
index effc7ec23e..f7950be267 100644
--- a/hw/acpi.c
+++ b/hw/acpi.c
@@ -22,6 +22,7 @@
 #include "hw.h"
 #include "pc.h"
 #include "acpi.h"
+#include "monitor.h"
 
 struct acpi_table_header {
     uint16_t _length;         /* our length, not actual part of the hdr */
@@ -386,6 +387,7 @@ void acpi_pm1_cnt_write(ACPIREGS *ar, uint16_t val, char s4)
             break;
         default:
             if (sus_typ == s4) { /* S4 request */
+                monitor_protocol_event(QEVENT_SUSPEND_DISK, NULL);
                 qemu_system_shutdown_request();
             }
             break;