|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v18 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 V17:
- Remove double ;
- Move struct vcpu *v to reduce scope
- Remove stray lines.
---
xen/arch/x86/hvm/save.c | 26 ++++++++++++++++++++++----
1 file changed, 22 insertions(+), 4 deletions(-)
diff --git a/xen/arch/x86/hvm/save.c b/xen/arch/x86/hvm/save.c
index 1106b96..3d08aab 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,8 +222,27 @@ 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 )
+ 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 )
+ {
+ struct vcpu *v;
+
+ 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);
@@ -233,7 +251,7 @@ int hvm_save(struct domain *d, hvm_domain_context_t *h)
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 |