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:
Alexandru Isaila authored and Jan Beulich committed 2018-09-12 16:40:03 +02:00
1 parent 343eb57023
commit 824800a062
1 file changed
+20 -12
+20 -12
View File
@@ -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)
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.