summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@citrix.com>2011-02-17 11:04:20 +0000
committerStefano Stabellini <stefano.stabellini@eu.citrix.com>2011-02-25 16:43:10 +0000
commit8e15597fa430c03415e2268dfbae0f262b948788 (patch)
tree33a132fefac3ef8c540ecfe63145d1ca4f5b4a06 /arch
parent552717231e50b478dfd19d63fd97879476ae051d (diff)
downloadlinux-8e15597fa430c03415e2268dfbae0f262b948788.tar.gz
linux-8e15597fa430c03415e2268dfbae0f262b948788.tar.bz2
linux-8e15597fa430c03415e2268dfbae0f262b948788.zip
xen: use new schedop interface for suspend
Take the opportunity to comment on the semantics of the PV guest suspend hypercall arguments. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/include/asm/xen/hypercall.h13
1 files changed, 10 insertions, 3 deletions
diff --git a/arch/x86/include/asm/xen/hypercall.h b/arch/x86/include/asm/xen/hypercall.h
index a3c28ae4025b..a7d5823862b4 100644
--- a/arch/x86/include/asm/xen/hypercall.h
+++ b/arch/x86/include/asm/xen/hypercall.h
@@ -422,10 +422,17 @@ HYPERVISOR_set_segment_base(int reg, unsigned long value)
#endif
static inline int
-HYPERVISOR_suspend(unsigned long srec)
+HYPERVISOR_suspend(unsigned long start_info_mfn)
{
- return _hypercall3(int, sched_op, SCHEDOP_shutdown,
- SHUTDOWN_suspend, srec);
+ struct sched_shutdown r = { .reason = SHUTDOWN_suspend };
+
+ /*
+ * For a PV guest the tools require that the start_info mfn be
+ * present in rdx/edx when the hypercall is made. Per the
+ * hypercall calling convention this is the third hypercall
+ * argument, which is start_info_mfn here.
+ */
+ return _hypercall3(int, sched_op_new, SCHEDOP_shutdown, &r, start_info_mfn);
}
static inline int