qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v4 2/2] qemu-kvm: x86: Add support for saving&restor


From: Jan Kiszka
Subject: [Qemu-devel] [PATCH v4 2/2] qemu-kvm: x86: Add support for saving&restoring debug registers
Date: Fri, 12 Mar 2010 15:20:50 +0100

Corresponding support for qemu-kvm.

Signed-off-by: Jan Kiszka <address@hidden>
---
 qemu-kvm-x86.c    |    2 ++
 qemu-kvm.c        |    5 +++++
 qemu-kvm.h        |    1 +
 target-i386/kvm.c |    2 +-
 4 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c
index 0160fe9..65a3cfc 100644
--- a/qemu-kvm-x86.c
+++ b/qemu-kvm-x86.c
@@ -1012,6 +1012,7 @@ void kvm_arch_load_regs(CPUState *env, int level)
     }
 
     kvm_put_vcpu_events(env, level);
+    kvm_put_debugregs(env);
 
     /* must be last */
     kvm_guest_debug_workarounds(env);
@@ -1185,6 +1186,7 @@ void kvm_arch_save_regs(CPUState *env)
     kvm_arch_save_mpstate(env);
     kvm_save_lapic(env);
     kvm_get_vcpu_events(env);
+    kvm_get_debugregs(env);
 }
 
 static void do_cpuid_ent(struct kvm_cpuid_entry2 *e, uint32_t function,
diff --git a/qemu-kvm.c b/qemu-kvm.c
index e417f21..0e7d594 100644
--- a/qemu-kvm.c
+++ b/qemu-kvm.c
@@ -2115,6 +2115,11 @@ static int kvm_create_context(void)
     kvm_state->vcpu_events = kvm_check_extension(kvm_state, 
KVM_CAP_VCPU_EVENTS);
 #endif
 
+    kvm_state->debugregs = 0;
+#ifdef KVM_CAP_DEBUGREGS
+    kvm_state->debugregs = kvm_check_extension(kvm_state, KVM_CAP_DEBUGREGS);
+#endif
+
     kvm_init_ap();
     if (kvm_irqchip) {
         if (!qemu_kvm_has_gsi_routing()) {
diff --git a/qemu-kvm.h b/qemu-kvm.h
index f5db9e6..0cbc6f7 100644
--- a/qemu-kvm.h
+++ b/qemu-kvm.h
@@ -970,6 +970,7 @@ struct KVMState {
     int migration_log;
     int vcpu_events;
     int robust_singlestep;
+    int debugregs;
 #ifdef KVM_CAP_SET_GUEST_DEBUG
     QTAILQ_HEAD(, kvm_sw_breakpoint) kvm_sw_breakpoints;
 #endif
diff --git a/target-i386/kvm.c b/target-i386/kvm.c
index b5c3c27..8d00774 100644
--- a/target-i386/kvm.c
+++ b/target-i386/kvm.c
@@ -902,7 +902,6 @@ static int kvm_guest_debug_workarounds(CPUState *env)
     return ret;
 }
 
-#ifdef KVM_UPSTREAM
 static int kvm_put_debugregs(CPUState *env)
 {
 #ifdef KVM_CAP_DEBUGREGS
@@ -950,6 +949,7 @@ static int kvm_get_debugregs(CPUState *env)
     return 0;
 }
 
+#ifdef KVM_UPSTREAM
 int kvm_arch_put_registers(CPUState *env, int level)
 {
     int ret;
-- 
1.6.0.2





reply via email to

[Prev in Thread] Current Thread [Next in Thread]