mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
Currently, we mark an IO request to STATE_IOREQ_READY state before
calling IO handlers in xen HV, i.e. vmx_portio_intercept or vmx_mmio_intercept. Actually, STATE_IOREQ_READY means it's ready for DM handling, only if IO handlers in xen HV won't handle it, it should be passed to DM. This patch fixes this issue. Signed-off-by: Yunhong Jiang <yunhong.jiang@intel.com> Signed-off-by: Xin Li <xin.b.li@intel.com> Signed-off-by: Nakajima Jun <nakajima.jun@intel.com>
This commit is contained in:
1 parent
dfc0b259c1
commit
ac9725dff6
2 files changed
+4
-4
No files matched your search
+2
-2
@@ -646,14 +646,14 @@ void send_pio_req(struct cpu_user_regs *regs, unsigned long port,
|
||||
} else
|
||||
p->u.data = value;
|
||||
|
||||
p->state = STATE_IOREQ_READY;
|
||||
|
||||
if (vmx_portio_intercept(p)) {
|
||||
/* no blocking & no evtchn notification */
|
||||
clear_bit(ARCH_VMX_IO_WAIT, &v->arch.arch_vmx.flags);
|
||||
return;
|
||||
}
|
||||
|
||||
p->state = STATE_IOREQ_READY;
|
||||
|
||||
evtchn_send(iopacket_port(v->domain));
|
||||
vmx_wait_io();
|
||||
}
|
||||
|
||||
@@ -643,14 +643,14 @@ void send_mmio_req(unsigned char type, unsigned long gpa,
|
||||
} else
|
||||
p->u.data = value;
|
||||
|
||||
p->state = STATE_IOREQ_READY;
|
||||
|
||||
if (vmx_mmio_intercept(p)){
|
||||
p->state = STATE_IORESP_READY;
|
||||
vmx_io_assist(v);
|
||||
return;
|
||||
}
|
||||
|
||||
p->state = STATE_IOREQ_READY;
|
||||
|
||||
evtchn_send(iopacket_port(v->domain));
|
||||
vmx_wait_io();
|
||||
}
|
||||
|
||||