mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
x86/hvm: introduce viridian_save_vcpu_ctxt_one()
This is used to save data from a single instance. Signed-off-by: Alexandru Isaila <aisaila@bitdefender.com> Reviewed-by: Paul Durrant <paul.durrant@citrix.com>
This commit is contained in:
1 parent
343eb57023
commit
824800a062
1 file changed
+20
-12
+20
-12
@@ -1030,24 +1030,32 @@ static int viridian_load_domain_ctxt(struct domain *d, hvm_domain_context_t *h)
|
||||
HVM_REGISTER_SAVE_RESTORE(VIRIDIAN_DOMAIN, viridian_save_domain_ctxt,
|
||||
viridian_load_domain_ctxt, 1, HVMSR_PER_DOM);
|
||||
|
||||
static int viridian_save_vcpu_ctxt_one(struct vcpu *v, hvm_domain_context_t *h)
|
||||
{
|
||||
struct hvm_viridian_vcpu_context ctxt = {
|
||||
.vp_assist_msr = v->arch.hvm.viridian.vp_assist.msr.raw,
|
||||
.vp_assist_pending = v->arch.hvm.viridian.vp_assist.pending,
|
||||
};
|
||||
|
||||
if ( !is_viridian_domain(v->domain) )
|
||||
return 0;
|
||||
|
||||
return hvm_save_entry(VIRIDIAN_VCPU, v->vcpu_id, h, &ctxt);
|
||||
}
|
||||
|
||||
static int viridian_save_vcpu_ctxt(struct domain *d, hvm_domain_context_t *h)
|
||||
{
|
||||
struct vcpu *v;
|
||||
int err = 0;
|
||||
|
||||
if ( !is_viridian_domain(d) )
|
||||
return 0;
|
||||
|
||||
for_each_vcpu( d, v ) {
|
||||
struct hvm_viridian_vcpu_context ctxt = {
|
||||
.vp_assist_msr = v->arch.hvm.viridian.vp_assist.msr.raw,
|
||||
.vp_assist_pending = v->arch.hvm.viridian.vp_assist.pending,
|
||||
};
|
||||
|
||||
if ( hvm_save_entry(VIRIDIAN_VCPU, v->vcpu_id, h, &ctxt) != 0 )
|
||||
return 1;
|
||||
for_each_vcpu ( d, v )
|
||||
{
|
||||
err = viridian_save_vcpu_ctxt_one(v, h);
|
||||
if ( err )
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return err;
|
||||
}
|
||||
|
||||
static int viridian_load_vcpu_ctxt(struct domain *d, hvm_domain_context_t *h)
|
||||
|
||||