x86/HVM: send mapcache invalidation request to qemu regardless of preemption
authorJan Beulich <jbeulich@suse.com>
Fri, 30 Oct 2020 13:30:00 +0000 (14:30 +0100)
committerJan Beulich <jbeulich@suse.com>
Fri, 30 Oct 2020 13:30:00 +0000 (14:30 +0100)
Even if only part of a hypercall completed before getting preempted,
invalidation ought to occur. Therefore fold the two return statements.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
xen/arch/x86/hvm/hypercall.c

index b6ccaf44576772053aa5455f9426d772ecc07f2a..ac573c8e94f81e20b6880092dcfe9cedca19eb10 100644 (file)
@@ -326,14 +326,11 @@ int hvm_hypercall(struct cpu_user_regs *regs)
 
     HVM_DBG_LOG(DBG_LEVEL_HCALL, "hcall%lu -> %lx", eax, regs->rax);
 
-    if ( curr->hcall_preempted )
-        return HVM_HCALL_preempted;
-
     if ( unlikely(currd->arch.hvm.qemu_mapcache_invalidate) &&
          test_and_clear_bool(currd->arch.hvm.qemu_mapcache_invalidate) )
         send_invalidate_req();
 
-    return HVM_HCALL_completed;
+    return curr->hcall_preempted ? HVM_HCALL_preempted : HVM_HCALL_completed;
 }
 
 /*