[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RESEND][PATCH 2/2 v3] deal with guest panicked event
From: |
Wen Congyang |
Subject: |
[Qemu-devel] [RESEND][PATCH 2/2 v3] deal with guest panicked event |
Date: |
Thu, 08 Mar 2012 18:15:32 +0800 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100413 Fedora/3.0.4-2.fc13 Thunderbird/3.0.4 |
When the host knows the guest is panicked, it will set
exit_reason to KVM_EXIT_GUEST_PANICKED. So if qemu receive
this exit_reason, we can send a event to tell management
application that the guest is panicked and set the guest
status to RUN_STATE_PANICKED.
Signed-off-by: Wen Congyang <address@hidden>
---
kvm-all.c | 5 +++++
monitor.c | 3 +++
monitor.h | 1 +
qapi-schema.json | 2 +-
qmp.c | 3 ++-
vl.c | 1 +
6 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/kvm-all.c b/kvm-all.c
index 77eadf6..b3c9a83 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -1290,6 +1290,11 @@ int kvm_cpu_exec(CPUState *env)
(uint64_t)run->hw.hardware_exit_reason);
ret = -1;
break;
+ case KVM_EXIT_GUEST_PANICKED:
+ monitor_protocol_event(QEVENT_GUEST_PANICKED, NULL);
+ vm_stop(RUN_STATE_PANICKED);
+ ret = -1;
+ break;
case KVM_EXIT_INTERNAL_ERROR:
ret = kvm_handle_internal_error(env, run);
break;
diff --git a/monitor.c b/monitor.c
index cbdfbad..a0ad0a9 100644
--- a/monitor.c
+++ b/monitor.c
@@ -494,6 +494,9 @@ void monitor_protocol_event(MonitorEvent event, QObject
*data)
case QEVENT_WAKEUP:
event_name = "WAKEUP";
break;
+ case QEVENT_GUEST_PANICKED:
+ event_name = "GUEST_PANICKED";
+ break;
default:
abort();
break;
diff --git a/monitor.h b/monitor.h
index 0d49800..94e8a3c 100644
--- a/monitor.h
+++ b/monitor.h
@@ -41,6 +41,7 @@ typedef enum MonitorEvent {
QEVENT_DEVICE_TRAY_MOVED,
QEVENT_SUSPEND,
QEVENT_WAKEUP,
+ QEVENT_GUEST_PANICKED,
QEVENT_MAX,
} MonitorEvent;
diff --git a/qapi-schema.json b/qapi-schema.json
index 5f293c4..4f1ae20 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -121,7 +121,7 @@
{ 'enum': 'RunState',
'data': [ 'debug', 'inmigrate', 'internal-error', 'io-error', 'paused',
'postmigrate', 'prelaunch', 'finish-migrate', 'restore-vm',
- 'running', 'save-vm', 'shutdown', 'watchdog' ] }
+ 'running', 'save-vm', 'shutdown', 'watchdog', 'panicked' ] }
##
# @StatusInfo:
diff --git a/qmp.c b/qmp.c
index a182b51..e535969 100644
--- a/qmp.c
+++ b/qmp.c
@@ -148,7 +148,8 @@ void qmp_cont(Error **errp)
error_set(errp, QERR_MIGRATION_EXPECTED);
return;
} else if (runstate_check(RUN_STATE_INTERNAL_ERROR) ||
- runstate_check(RUN_STATE_SHUTDOWN)) {
+ runstate_check(RUN_STATE_SHUTDOWN) ||
+ runstate_check(RUN_STATE_PANICKED)) {
error_set(errp, QERR_RESET_REQUIRED);
return;
}
diff --git a/vl.c b/vl.c
index 97ab2b9..65390fa 100644
--- a/vl.c
+++ b/vl.c
@@ -359,6 +359,7 @@ static const RunStateTransition runstate_transitions_def[]
= {
{ RUN_STATE_RUNNING, RUN_STATE_SAVE_VM },
{ RUN_STATE_RUNNING, RUN_STATE_SHUTDOWN },
{ RUN_STATE_RUNNING, RUN_STATE_WATCHDOG },
+ { RUN_STATE_RUNNING, RUN_STATE_PANICKED },
{ RUN_STATE_SAVE_VM, RUN_STATE_RUNNING },
--
1.7.1
- [Qemu-devel] [PATCH 0/2 v3] kvm: notify host when guest panicked, Wen Congyang, 2012/03/08
- [Qemu-devel] [PATCH 1/2 v3] kvm: notify host when guest panicked, Wen Congyang, 2012/03/08
- [Qemu-devel] [PATCH 2/2 v3] kvm: set exit_reason to KVM_EXIT_GUEST_PANICKED when guest panicked, Wen Congyang, 2012/03/08
- [Qemu-devel] [PATCH 1/2 v3] update linux-headers, Wen Congyang, 2012/03/08
- [Qemu-devel] [PATCH 2/2 v3] deal with guest panicked event, Wen Congyang, 2012/03/08
- Re: [Qemu-devel] [PATCH 2/2 v3] deal with guest panicked event, Jan Kiszka, 2012/03/08
- [Qemu-devel] [RESEND][PATCH 2/2 v3] deal with guest panicked event,
Wen Congyang <=
- Re: [Qemu-devel] [RESEND][PATCH 2/2 v3] deal with guest panicked event, Avi Kivity, 2012/03/08
- Re: [Qemu-devel] [RESEND][PATCH 2/2 v3] deal with guest panicked event, Daniel P. Berrange, 2012/03/08
- Re: [Qemu-devel] [RESEND][PATCH 2/2 v3] deal with guest panicked event, Avi Kivity, 2012/03/08
- Re: [Qemu-devel] [RESEND][PATCH 2/2 v3] deal with guest panicked event, Daniel P. Berrange, 2012/03/08
- Re: [Qemu-devel] [RESEND][PATCH 2/2 v3] deal with guest panicked event, Marcelo Tosatti, 2012/03/09
- Re: [Qemu-devel] [RESEND][PATCH 2/2 v3] deal with guest panicked event, Anthony Liguori, 2012/03/21
- Re: [Qemu-devel] [RESEND][PATCH 2/2 v3] deal with guest panicked event, Wen Congyang, 2012/03/11
Re: [Qemu-devel] [PATCH 0/2 v3] kvm: notify host when guest panicked, Avi Kivity, 2012/03/08