diff options
author | Alex Bennée <alex.bennee@linaro.org> | 2020-10-23 16:20:27 +0100 |
---|---|---|
committer | Alex Bennée <alex.bennee@linaro.org> | 2020-10-23 16:20:27 +0100 |
commit | 3fbcb6f7e7ceb4d4efe3a3295015aed99bfce755 (patch) | |
tree | 176aa6588f6b4fbfa05848526555b0d0d72c84f4 | |
parent | 8da6b5545f703009b06d7bf588700f35225ab9fe (diff) |
xen/x86: missed patch resolution bits
-rw-r--r-- | xen/arch/x86/hvm/hypercall.c | 14 | ||||
-rw-r--r-- | xen/arch/x86/mm/p2m.c | 3 |
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); } |