Browse Source

KVM: x86: add comments where MMIO does not return to the emulator

Support for single-step in the emulator (new in 3.12) does not work for
MMIO or PIO writes, because they are completed without returning to
the emulator.  This is not worse than what we had in 3.11; still, add
comments so that the issue is not forgotten.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Paolo Bonzini 12 năm trước cách đây
mục cha
commit
0912c9771e
1 tập tin đã thay đổi với 5 bổ sung2 xóa
  1. 5 2
      arch/x86/kvm/x86.c

+ 5 - 2
arch/x86/kvm/x86.c

@@ -5122,9 +5122,10 @@ restart:
 		inject_emulated_exception(vcpu);
 		inject_emulated_exception(vcpu);
 		r = EMULATE_DONE;
 		r = EMULATE_DONE;
 	} else if (vcpu->arch.pio.count) {
 	} else if (vcpu->arch.pio.count) {
-		if (!vcpu->arch.pio.in)
+		if (!vcpu->arch.pio.in) {
+			/* FIXME: return into emulator if single-stepping.  */
 			vcpu->arch.pio.count = 0;
 			vcpu->arch.pio.count = 0;
-		else {
+		} else {
 			writeback = false;
 			writeback = false;
 			vcpu->arch.complete_userspace_io = complete_emulated_pio;
 			vcpu->arch.complete_userspace_io = complete_emulated_pio;
 		}
 		}
@@ -6176,6 +6177,8 @@ static int complete_emulated_mmio(struct kvm_vcpu *vcpu)
 
 
 	if (vcpu->mmio_cur_fragment == vcpu->mmio_nr_fragments) {
 	if (vcpu->mmio_cur_fragment == vcpu->mmio_nr_fragments) {
 		vcpu->mmio_needed = 0;
 		vcpu->mmio_needed = 0;
+
+		/* FIXME: return into emulator if single-stepping.  */
 		if (vcpu->mmio_is_write)
 		if (vcpu->mmio_is_write)
 			return 1;
 			return 1;
 		vcpu->mmio_read_completed = 1;
 		vcpu->mmio_read_completed = 1;