diff options
author | Pekka Enberg <penberg@kernel.org> | 2011-03-22 21:32:46 +0200 |
---|---|---|
committer | Will Deacon <will.deacon@arm.com> | 2015-06-01 16:39:41 +0100 |
commit | 8315b1925c890cfc0ec78659d47fc7da3988df00 (patch) | |
tree | 6b98ed1f7e420d5f909eb960131364add93cef88 /main.c | |
parent | 03110ff36b3587a67d751f3b1529882d29aa83cd (diff) | |
download | kvmtool-8315b1925c890cfc0ec78659d47fc7da3988df00.tar.gz |
tools/kvm: Exit gracefully upon KVM_EXIT_SHUTDOWN
This patch changes the userspace hypervisor to exit gracefully upon
KVM_EXIT_SHUTDOWN which is triggered when guest userspace is shut down.
Signed-off-by: Pekka Enberg <penberg@kernel.org>
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 16 |
1 files changed, 10 insertions, 6 deletions
@@ -190,7 +190,7 @@ int main(int argc, char *argv[]) kvm->kvm_run->io.count); if (!ret) - goto exit_kvm; + goto panic_kvm; break; } case KVM_EXIT_MMIO: { @@ -203,30 +203,34 @@ int main(int argc, char *argv[]) kvm->kvm_run->mmio.is_write); if (!ret) - goto exit_kvm; + goto panic_kvm; break; } case KVM_EXIT_INTR: { serial8250__interrupt(kvm); break; } - default: + case KVM_EXIT_SHUTDOWN: goto exit_kvm; + default: + goto panic_kvm; } } - exit_kvm: + kvm__delete(kvm); + return 0; + +panic_kvm: fprintf(stderr, "KVM exit reason: %" PRIu32 " (\"%s\")\n", kvm->kvm_run->exit_reason, kvm_exit_reasons[kvm->kvm_run->exit_reason]); if (kvm->kvm_run->exit_reason == KVM_EXIT_UNKNOWN) fprintf(stderr, "KVM exit code: 0x%" PRIu64 "\n", kvm->kvm_run->hw.hardware_exit_reason); - kvm__show_registers(kvm); kvm__show_code(kvm); kvm__show_page_tables(kvm); kvm__delete(kvm); - return 0; + return 1; } |