summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Bennée <alex.bennee@linaro.org>2020-10-23 16:20:27 +0100
committerAlex Bennée <alex.bennee@linaro.org>2020-10-23 16:20:27 +0100
commit3fbcb6f7e7ceb4d4efe3a3295015aed99bfce755 (patch)
tree176aa6588f6b4fbfa05848526555b0d0d72c84f4
parent8da6b5545f703009b06d7bf588700f35225ab9fe (diff)
xen/x86: missed patch resolution bits
-rw-r--r--xen/arch/x86/hvm/hypercall.c14
-rw-r--r--xen/arch/x86/mm/p2m.c3
2 files changed, 9 insertions, 8 deletions
diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c
index 8ea5eb2c23..324ff97d3b 100644
--- a/xen/arch/x86/hvm/hypercall.c
+++ b/xen/arch/x86/hvm/hypercall.c
@@ -32,6 +32,7 @@
static long hvm_memory_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
{
+ const struct vcpu *curr = current;
long rc;
switch ( cmd & MEMOP_CMD_MASK )
@@ -41,7 +42,7 @@ static long hvm_memory_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
return -ENOSYS;
}
- if ( !current->hcall_compat )
+ if ( !curr->hcall_compat )
rc = do_memory_op(cmd, arg);
else
rc = compat_memory_op(cmd, arg);
@@ -326,11 +327,14 @@ int hvm_hypercall(struct cpu_user_regs *regs)
HVM_DBG_LOG(DBG_LEVEL_HCALL, "hcall%lu -> %lx", eax, regs->rax);
- if ( unlikely(currd->arch.hvm.qemu_mapcache_invalidate) &&
- test_and_clear_bool(currd->arch.hvm.qemu_mapcache_invalidate) )
- send_invalidate_req();
+ if ( curr->hcall_preempted )
+ return HVM_HCALL_preempted;
+
+ if ( unlikely(currd->qemu_mapcache_invalidate) &&
+ test_and_clear_bool(currd->qemu_mapcache_invalidate) )
+ send_invalidate_ioreq();
- return curr->hcall_preempted ? HVM_HCALL_preempted : HVM_HCALL_completed;
+ return HVM_HCALL_completed;
}
/*
diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index 32d85375b1..8d03ab4746 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -812,9 +812,6 @@ p2m_remove_page(struct p2m_domain *p2m, gfn_t gfn, mfn_t mfn,
}
}
- if ( p2m->domain == current->domain )
- p2m->domain->arch.hvm.qemu_mapcache_invalidate = true;
-
return p2m_set_entry(p2m, gfn, INVALID_MFN, page_order, p2m_invalid,
p2m->default_access);
}