aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/hvm/emulate.c
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-04-15 15:45:42 +0100
committerKeir Fraser <keir.fraser@citrix.com>2008-04-15 15:45:42 +0100
commitb631149c20d11453d35cc77aa6abe33c7c07189e (patch)
tree0f24026c9e53125a93b2b3839cc185754070aa00 /xen/arch/x86/hvm/emulate.c
parentdc4c72a5fc74288f6e2f528b5afcf8226f89d43f (diff)
downloadxen-b631149c20d11453d35cc77aa6abe33c7c07189e.tar.gz
xen-b631149c20d11453d35cc77aa6abe33c7c07189e.tar.bz2
xen-b631149c20d11453d35cc77aa6abe33c7c07189e.zip
x86, hvm: If an MMIO handler returns X86EMUL_RETRY we must still
complete the dummy I/O request-response cycle. Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
Diffstat (limited to 'xen/arch/x86/hvm/emulate.c')
-rw-r--r--xen/arch/x86/hvm/emulate.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
index 036583d90c..d7bf9f3f2f 100644
--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -76,6 +76,7 @@ static int hvmemul_do_io(
switch ( rc )
{
case X86EMUL_OKAY:
+ case X86EMUL_RETRY:
*reps = p->count;
p->state = STATE_IORESP_READY;
hvm_io_assist();
@@ -87,8 +88,6 @@ static int hvmemul_do_io(
hvm_send_assist_req(curr);
rc = (val != NULL) ? X86EMUL_RETRY : X86EMUL_OKAY;
break;
- case X86EMUL_RETRY:
- break;
default:
BUG();
}