[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v16 11/13] x86/domctl: Use hvm_save_vcpu_handler
This patch is aimed on using the new save_one fuctions in the hvm_save Signed-off-by: Alexandru Isaila <aisaila@xxxxxxxxxxxxxxx> --- Changes since V15: - Moved declarations into their scopes - Remove redundant NULL check - Remove rc variable - Change fault return to -ENODATA. --- xen/arch/x86/hvm/save.c | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/xen/arch/x86/hvm/save.c b/xen/arch/x86/hvm/save.c index 1106b96..1eb2b01 100644 --- a/xen/arch/x86/hvm/save.c +++ b/xen/arch/x86/hvm/save.c @@ -195,7 +195,6 @@ int hvm_save(struct domain *d, hvm_domain_context_t *h) char *c; struct hvm_save_header hdr; struct hvm_save_end end; - hvm_save_handler handler; unsigned int i; if ( d->is_dying ) @@ -223,17 +222,37 @@ int hvm_save(struct domain *d, hvm_domain_context_t *h) /* Save all available kinds of state */ for ( i = 0; i <= HVM_SAVE_CODE_MAX; i++ ) { - handler = hvm_sr_handlers[i].save; - if ( handler != NULL ) + struct vcpu *v; + hvm_save_vcpu_handler save_one_handler = hvm_sr_handlers[i].save_one; + hvm_save_handler handler = hvm_sr_handlers[i].save;; + + if ( save_one_handler ) + { + for_each_vcpu ( d, v ) + { + printk(XENLOG_G_INFO "HVM %pv save: %s\n", + v, hvm_sr_handlers[i].name); + + if ( save_one_handler(v, h) != 0 ) + { + printk(XENLOG_G_ERR + "HVM %pv save: failed to save type %"PRIu16"\n", + v, i); + return -ENODATA; + } + } + } + else if ( handler ) { printk(XENLOG_G_INFO "HVM%d save: %s\n", d->domain_id, hvm_sr_handlers[i].name); + if ( handler(d, h) != 0 ) { printk(XENLOG_G_ERR "HVM%d save: failed to save type %"PRIu16"\n", d->domain_id, i); - return -EFAULT; + return -ENODATA; } } } -- 2.7.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |