Skip to contentSkip to conversation

qemu-kvm: Fix guest single-stepping

PATCH Applied Jan Kiszka 2 participants 2 messages Sep 17, 2009 – Sep 18, 2009 KVM

lore
Share & tools
lore

Jan Kiszka

author
#0 lore raw

PATCH 1/1 qemu-kvm: Fix guest single-stepping

Hopefully the last regression of 4c0960c0: KVM_SET_GUEST_DEBUG requires properly synchronized guest registers (on x86: eflags) on entry.

---

 qemu-kvm.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)
qemu-kvm.c +4 -0
index 78eeb6f..569397e 100644
@@ -2282,6 +2282,10 @@ static void kvm_invoke_set_guest_debug(void *data)
 {
     struct kvm_set_guest_debug_data *dbg_data = data;
 
+    if (cpu_single_env->kvm_cpu_state.regs_modified) {
+        kvm_arch_put_registers(cpu_single_env);
+        cpu_single_env->kvm_cpu_state.regs_modified = 0;
+    }
     dbg_data->err =
         kvm_set_guest_debug(cpu_single_env->kvm_cpu_state.vcpu_ctx,
                             &dbg_data->dbg);
#1 lore raw

Applied, thanks.

Quoted 28 lines · Jan Kiszka

Hopefully the last regression of 4c0960c0: KVM_SET_GUEST_DEBUG requires properly synchronized guest registers (on x86: eflags) on entry.

---

 qemu-kvm.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)
qemu-kvm.c +4 -1
index 78eeb6f..569397e 100644
@@ -2282,6 +2282,10 @@ static void kvm_invoke_set_guest_debug(void *data)
 {
     struct kvm_set_guest_debug_data *dbg_data = data;
 
+    if (cpu_single_env->kvm_cpu_state.regs_modified) {
+        kvm_arch_put_registers(cpu_single_env);
+        cpu_single_env->kvm_cpu_state.regs_modified = 0;
+    }
     dbg_data->err =
         kvm_set_guest_debug(cpu_single_env->kvm_cpu_state.vcpu_ctx,
                             &dbg_data->dbg);
--

To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html