[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH v1 24/26] kvm: vmi: add 'unhook_on_shutdown' property
From: |
Adalbert Lazăr |
Subject: |
[RFC PATCH v1 24/26] kvm: vmi: add 'unhook_on_shutdown' property |
Date: |
Wed, 15 Apr 2020 03:59:36 +0300 |
Some introspection tools can detect when the guest is shutting down.
This new option, 'unhook_on_shutdown' controls if QEMU will notify the
introspection tool on a shutdown command at its level.
Signed-off-by: Adalbert Lazăr <address@hidden>
---
accel/kvm/vmi.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/accel/kvm/vmi.c b/accel/kvm/vmi.c
index 2c6981a4bf..02877eec06 100644
--- a/accel/kvm/vmi.c
+++ b/accel/kvm/vmi.c
@@ -58,6 +58,7 @@ typedef struct VMIntrospection {
GSource *unhook_timer;
uint32_t unhook_timeout;
bool async_unhook;
+ bool unhook_on_shutdown;
int reconnect_time;
@@ -203,6 +204,20 @@ static void prop_set_async_unhook(Object *obj, bool value,
Error **errp)
i->async_unhook = value;
}
+static bool prop_get_unhook_on_shutdown(Object *obj, Error **errp)
+{
+ VMIntrospection *i = VM_INTROSPECTION(obj);
+
+ return i->unhook_on_shutdown;
+}
+
+static void prop_set_unhook_on_shutdown(Object *obj, bool value, Error **errp)
+{
+ VMIntrospection *i = VM_INTROSPECTION(obj);
+
+ i->unhook_on_shutdown = value;
+}
+
static void prop_get_uint32(Object *obj, Visitor *v, const char *name,
void *opaque, Error **errp)
{
@@ -285,6 +300,11 @@ static void instance_init(Object *obj)
prop_get_async_unhook,
prop_set_async_unhook, NULL);
+ i->unhook_on_shutdown = true;
+ object_property_add_bool(obj, "unhook_on_shutdown",
+ prop_get_unhook_on_shutdown,
+ prop_set_unhook_on_shutdown, NULL);
+
vmstate_register(NULL, 0, &vmstate_introspection, i);
}
@@ -801,6 +821,11 @@ static bool intercept_action(VMIntrospection *i,
}
switch (action) {
+ case VMI_INTERCEPT_SHUTDOWN:
+ if (!i->unhook_on_shutdown) {
+ return false;
+ }
+ break;
case VMI_INTERCEPT_FORCE_RESET:
disconnect_and_unhook_kvmi(i);
return false;
- [RFC PATCH v1 02/26] char-socket: allow vsock parameters (cid, port), (continued)
- [RFC PATCH v1 02/26] char-socket: allow vsock parameters (cid, port), Adalbert Lazăr, 2020/04/14
- [RFC PATCH v1 01/26] chardev: tcp: allow to change the reconnect timer, Adalbert Lazăr, 2020/04/14
- [RFC PATCH v1 14/26] kvm: vmi: allow only one instance of the introspection object, Adalbert Lazăr, 2020/04/14
- [RFC PATCH v1 11/26] kvm: vmi: add 'handshake_timeout' property, Adalbert Lazăr, 2020/04/14
- [RFC PATCH v1 15/26] kvm: vmi: reconnect the socket on reset, Adalbert Lazăr, 2020/04/14
- [RFC PATCH v1 19/26] kvm: vmi: intercept force-reset, Adalbert Lazăr, 2020/04/14
- [RFC PATCH v1 22/26] kvm: vmi: add 'async_unhook' property, Adalbert Lazăr, 2020/04/14
- [RFC PATCH v1 17/26] kvm: vmi: add 'unhook_timeout' property, Adalbert Lazăr, 2020/04/14
- [RFC PATCH v1 24/26] kvm: vmi: add 'unhook_on_shutdown' property,
Adalbert Lazăr <=
- [RFC PATCH v1 12/26] kvm: vmi: add 'key' property, Adalbert Lazăr, 2020/04/14
- [RFC PATCH v1 21/26] kvm: vmi: postpone the OK response from qmp_stop(), Adalbert Lazăr, 2020/04/14
- [RFC PATCH v1 18/26] kvm: vmi: store/restore 'vm_start_time' on migrate/snapshot, Adalbert Lazăr, 2020/04/14
- [RFC PATCH v1 23/26] kvm: vmi: intercept shutdown, Adalbert Lazăr, 2020/04/14
- [RFC PATCH v1 16/26] kvm: vmi: intercept pause/resume, Adalbert Lazăr, 2020/04/14
- [RFC PATCH v1 25/26] kvm: vmi: extend handshake to include the e820 table, Adalbert Lazăr, 2020/04/14
- [RFC PATCH v1 26/26] kvm: vmi: add 'command' and 'event' properties, Adalbert Lazăr, 2020/04/14
- [RFC PATCH v1 10/26] kvm: vmi: add the handshake with the introspection tool, Adalbert Lazăr, 2020/04/14
- [RFC PATCH v1 20/26] kvm: vmi: intercept live migration, Adalbert Lazăr, 2020/04/14