aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/hvm/intercept.c
diff options
context:
space:
mode:
authorTim Deegan <Tim.Deegan@xensource.com>2007-01-18 16:48:11 +0000
committerTim Deegan <Tim.Deegan@xensource.com>2007-01-18 16:48:11 +0000
commit60e7732ed89d4a6123097d15e570f73e92bacca9 (patch)
treece3e4576142e8c304478c03586bb9a15c62c000e /xen/arch/x86/hvm/intercept.c
parent7b56849fa7b8624a6c762a49153912c34a0a95e4 (diff)
downloadxen-60e7732ed89d4a6123097d15e570f73e92bacca9.tar.gz
xen-60e7732ed89d4a6123097d15e570f73e92bacca9.tar.bz2
xen-60e7732ed89d4a6123097d15e570f73e92bacca9.zip
[HVM] Save/restore: Sometimes the hg changeset is not available.
Signed-off-by: Tim Deegan <Tim.Deegan@xensource.com>
Diffstat (limited to 'xen/arch/x86/hvm/intercept.c')
-rw-r--r--xen/arch/x86/hvm/intercept.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/xen/arch/x86/hvm/intercept.c b/xen/arch/x86/hvm/intercept.c
index 8ea9bbb8a1..c7b56c0111 100644
--- a/xen/arch/x86/hvm/intercept.c
+++ b/xen/arch/x86/hvm/intercept.c
@@ -210,7 +210,11 @@ int hvm_save(struct vcpu *v, hvm_domain_context_t *h)
hvm_put_32u(h, HVM_FILE_VERSION);
/* save xen changeset */
- chgset = strrchr(XEN_CHANGESET, ' ') + 1;
+ chgset = strrchr(XEN_CHANGESET, ' ');
+ if ( chgset )
+ chgset++;
+ else
+ chgset = XEN_CHANGESET;
len = strlen(chgset);
hvm_put_8u(h, len);
@@ -303,7 +307,11 @@ int hvm_load(struct vcpu *v, hvm_domain_context_t *h)
}
/* check xen change set */
- cur_chgset = strrchr(XEN_CHANGESET, ' ') + 1;
+ cur_chgset = strrchr(XEN_CHANGESET, ' ');
+ if ( cur_chgset )
+ cur_chgset++;
+ else
+ cur_chgset = XEN_CHANGESET;
len = hvm_get_8u(h);
if (len > 20) { /*typical length is 18 -- "revision number:changeset id" */
@@ -317,6 +325,11 @@ int hvm_load(struct vcpu *v, hvm_domain_context_t *h)
printk("warnings: try to restore hvm guest(%s) on a different changeset %s.\n",
chgset, cur_chgset);
+
+ if ( !strcmp(cur_chgset, "unavailable") )
+ printk("warnings: try to restore hvm guest when changeset is unavailable.\n");
+
+
/* check cpuid */
cpuid(1, &eax, &ebx, &ecx, &edx);
ebx = hvm_get_32u(h);