diff options
Diffstat (limited to 'arch/x86/include/asm/xen/hypercall.h')
| -rw-r--r-- | arch/x86/include/asm/xen/hypercall.h | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/arch/x86/include/asm/xen/hypercall.h b/arch/x86/include/asm/xen/hypercall.h index a3c28ae4025..8508bfe5229 100644 --- a/arch/x86/include/asm/xen/hypercall.h +++ b/arch/x86/include/asm/xen/hypercall.h | |||
| @@ -287,7 +287,7 @@ HYPERVISOR_fpu_taskswitch(int set) | |||
| 287 | static inline int | 287 | static inline int |
| 288 | HYPERVISOR_sched_op(int cmd, void *arg) | 288 | HYPERVISOR_sched_op(int cmd, void *arg) |
| 289 | { | 289 | { |
| 290 | return _hypercall2(int, sched_op_new, cmd, arg); | 290 | return _hypercall2(int, sched_op, cmd, arg); |
| 291 | } | 291 | } |
| 292 | 292 | ||
| 293 | static inline long | 293 | static inline long |
| @@ -422,10 +422,17 @@ HYPERVISOR_set_segment_base(int reg, unsigned long value) | |||
| 422 | #endif | 422 | #endif |
| 423 | 423 | ||
| 424 | static inline int | 424 | static inline int |
| 425 | HYPERVISOR_suspend(unsigned long srec) | 425 | HYPERVISOR_suspend(unsigned long start_info_mfn) |
| 426 | { | 426 | { |
| 427 | return _hypercall3(int, sched_op, SCHEDOP_shutdown, | 427 | struct sched_shutdown r = { .reason = SHUTDOWN_suspend }; |
| 428 | SHUTDOWN_suspend, srec); | 428 | |
| 429 | /* | ||
| 430 | * For a PV guest the tools require that the start_info mfn be | ||
| 431 | * present in rdx/edx when the hypercall is made. Per the | ||
| 432 | * hypercall calling convention this is the third hypercall | ||
| 433 | * argument, which is start_info_mfn here. | ||
| 434 | */ | ||
| 435 | return _hypercall3(int, sched_op, SCHEDOP_shutdown, &r, start_info_mfn); | ||
| 429 | } | 436 | } |
| 430 | 437 | ||
| 431 | static inline int | 438 | static inline int |
