aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/libxc/xc_domain_restore.c10
-rw-r--r--tools/libxc/xc_domain_save.c9
2 files changed, 16 insertions, 3 deletions
diff --git a/tools/libxc/xc_domain_restore.c b/tools/libxc/xc_domain_restore.c
index a85a0413d6..02bfa1c163 100644
--- a/tools/libxc/xc_domain_restore.c
+++ b/tools/libxc/xc_domain_restore.c
@@ -1967,8 +1967,14 @@ int xc_domain_restore(xc_interface *xch, int io_fd, uint32_t dom,
if ( i == 0 )
{
/*
- * Uncanonicalise the suspend-record frame number and poke
- * resume record.
+ * Uncanonicalise the start info frame number and poke in
+ * updated values into the start info itself.
+ *
+ * The start info MFN is the 3rd argument to the
+ * HYPERVISOR_sched_op hypercall when op==SCHEDOP_shutdown
+ * and reason==SHUTDOWN_suspend, it is canonicalised in
+ * xc_domain_save and therefore the PFN is found in the
+ * edx register.
*/
pfn = GET_FIELD(ctxt, user_regs.edx);
if ( (pfn >= dinfo->p2m_size) ||
diff --git a/tools/libxc/xc_domain_save.c b/tools/libxc/xc_domain_save.c
index 57d5347363..d48e9c0fb0 100644
--- a/tools/libxc/xc_domain_save.c
+++ b/tools/libxc/xc_domain_save.c
@@ -1868,7 +1868,14 @@ int xc_domain_save(xc_interface *xch, int io_fd, uint32_t dom, uint32_t max_iter
goto out;
}
- /* Canonicalise the suspend-record frame number. */
+ /*
+ * Canonicalise the start info frame number.
+ *
+ * The start info MFN is the 3rd argument to the
+ * HYPERVISOR_sched_op hypercall when op==SCHEDOP_shutdown and
+ * reason==SHUTDOWN_suspend and is therefore found in the edx
+ * register.
+ */
mfn = GET_FIELD(&ctxt, user_regs.edx);
if ( !MFN_IS_IN_PSEUDOPHYS_MAP(mfn) )
{