]> xenbits.xensource.com Git - xen.git/commitdiff
x86: correctly set nonlazy_xstate_used when loading full state
authorJan Beulich <jbeulich@suse.com>
Mon, 30 Jul 2018 09:35:11 +0000 (11:35 +0200)
committerJan Beulich <jbeulich@suse.com>
Mon, 30 Jul 2018 09:35:11 +0000 (11:35 +0200)
In this case, just like xcr0_accum, nonlazy_xstate_used should always be
set to the intended new value, rather than possibly leaving the flag set
from a prior state load.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Wei Liu <wei.liu2@citrix.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
master commit: f46bf0e101ca63118b9db2616e8f51e972d7f563
master date: 2018-07-09 10:51:02 +0200

xen/arch/x86/domctl.c
xen/arch/x86/hvm/hvm.c

index 74e9749d89c48d631b10136d9a16e8e0afd45968..08fb5e83fe4f4584153fc467b4f606f032e73414 100644 (file)
@@ -1251,8 +1251,7 @@ long arch_do_domctl(
                 vcpu_pause(v);
                 v->arch.xcr0 = _xcr0;
                 v->arch.xcr0_accum = _xcr0_accum;
-                if ( _xcr0_accum & XSTATE_NONLAZY )
-                    v->arch.nonlazy_xstate_used = 1;
+                v->arch.nonlazy_xstate_used = _xcr0_accum & XSTATE_NONLAZY;
                 compress_xsave_states(v, _xsave_area,
                                       evc->size - PV_XSAVE_HDR_SIZE);
                 vcpu_unpause(v);
index 18adec5ad89fb7edc77bef8109f03f1e0e3fcf0f..fedcb9e6ac445becf18fbf4e91941a2bc5891ff6 100644 (file)
@@ -1313,8 +1313,7 @@ static int hvm_load_cpu_xsave_states(struct domain *d, hvm_domain_context_t *h)
 
     v->arch.xcr0 = ctxt->xcr0;
     v->arch.xcr0_accum = ctxt->xcr0_accum;
-    if ( ctxt->xcr0_accum & XSTATE_NONLAZY )
-        v->arch.nonlazy_xstate_used = 1;
+    v->arch.nonlazy_xstate_used = ctxt->xcr0_accum & XSTATE_NONLAZY;
     compress_xsave_states(v, &ctxt->save_area,
                           size - offsetof(struct hvm_hw_cpu_xsave, save_area));