Patchwork kvm: Fix guest single-stepping

login
register
mail settings
Submitter Jan Kiszka
Date Sept. 17, 2009, 6:05 p.m.
Message ID <4AB27A86.3020007@siemens.com>
Download mbox | patch
Permalink /patch/33796/
State Superseded
Headers show

Comments

Jan Kiszka - Sept. 17, 2009, 6:05 p.m.
Hopefully the last regression of 4c0960c0: KVM_SET_GUEST_DEBUG requires
properly synchronized guest registers (on x86: eflags) on entry.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---

 kvm-all.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

Patch

diff --git a/kvm-all.c b/kvm-all.c
index 3c37dd7..6142e3f 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -942,7 +942,13 @@  struct kvm_set_guest_debug_data {
 static void kvm_invoke_set_guest_debug(void *data)
 {
     struct kvm_set_guest_debug_data *dbg_data = data;
-    dbg_data->err = kvm_vcpu_ioctl(dbg_data->env, KVM_SET_GUEST_DEBUG, &dbg_data->dbg);
+    CPUState *env = dbg_data->env;
+
+    if (env->kvm_state->regs_modified) {
+        kvm_arch_put_registers(env);
+        env->kvm_state->regs_modified = 0;
+    }
+    dbg_data->err = kvm_vcpu_ioctl(env, KVM_SET_GUEST_DEBUG, &dbg_data->dbg);
 }
 
 int kvm_update_guest_debug(CPUState *env, unsigned long reinject_trap)