aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/hvm/io.c
diff options
context:
space:
mode:
Diffstat (limited to 'xen/arch/x86/hvm/io.c')
-rw-r--r--xen/arch/x86/hvm/io.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/xen/arch/x86/hvm/io.c b/xen/arch/x86/hvm/io.c
index 041d237888..bc5f8acce3 100644
--- a/xen/arch/x86/hvm/io.c
+++ b/xen/arch/x86/hvm/io.c
@@ -183,7 +183,9 @@ int handle_mmio(void)
rc = hvm_emulate_one(&ctxt);
if ( curr->arch.hvm_vcpu.io_state == HVMIO_awaiting_completion )
- curr->arch.hvm_vcpu.io_state = HVMIO_handle_mmio_awaiting_completion;
+ curr->arch.hvm_vcpu.io_state = HVMIO_handle_mmio_awaiting_completion;
+ else
+ curr->arch.hvm_vcpu.mmio_gva = 0;
switch ( rc )
{
@@ -210,6 +212,13 @@ int handle_mmio(void)
return 1;
}
+int handle_mmio_with_translation(unsigned long gva, unsigned long gpfn)
+{
+ current->arch.hvm_vcpu.mmio_gva = gva & PAGE_MASK;
+ current->arch.hvm_vcpu.mmio_gpfn = gpfn;
+ return handle_mmio();
+}
+
void hvm_io_assist(void)
{
struct vcpu *v = current;