diff options
Diffstat (limited to 'drivers/kvm/vmx.c')
-rw-r--r-- | drivers/kvm/vmx.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/kvm/vmx.c b/drivers/kvm/vmx.c index a721b60f7385..4d5f40fcb651 100644 --- a/drivers/kvm/vmx.c +++ b/drivers/kvm/vmx.c | |||
@@ -1459,12 +1459,14 @@ static int handle_io(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) | |||
1459 | = (vmcs_readl(GUEST_RFLAGS) & X86_EFLAGS_DF) != 0; | 1459 | = (vmcs_readl(GUEST_RFLAGS) & X86_EFLAGS_DF) != 0; |
1460 | kvm_run->io.rep = (exit_qualification & 32) != 0; | 1460 | kvm_run->io.rep = (exit_qualification & 32) != 0; |
1461 | kvm_run->io.port = exit_qualification >> 16; | 1461 | kvm_run->io.port = exit_qualification >> 16; |
1462 | kvm_run->io.count = 1; | ||
1462 | if (kvm_run->io.string) { | 1463 | if (kvm_run->io.string) { |
1463 | if (!get_io_count(vcpu, &kvm_run->io.count)) | 1464 | if (!get_io_count(vcpu, &kvm_run->io.count)) |
1464 | return 1; | 1465 | return 1; |
1465 | kvm_run->io.address = vmcs_readl(GUEST_LINEAR_ADDRESS); | 1466 | kvm_run->io.address = vmcs_readl(GUEST_LINEAR_ADDRESS); |
1466 | } else | 1467 | } else |
1467 | kvm_run->io.value = vcpu->regs[VCPU_REGS_RAX]; /* rax */ | 1468 | kvm_run->io.value = vcpu->regs[VCPU_REGS_RAX]; /* rax */ |
1469 | vcpu->pio_pending = 1; | ||
1468 | return 0; | 1470 | return 0; |
1469 | } | 1471 | } |
1470 | 1472 | ||