diff options
Diffstat (limited to 'arch/x86/xen/suspend.c')
| -rw-r--r-- | arch/x86/xen/suspend.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/arch/x86/xen/suspend.c b/arch/x86/xen/suspend.c index 95be7b434724..987267f79bf5 100644 --- a/arch/x86/xen/suspend.c +++ b/arch/x86/xen/suspend.c | |||
| @@ -1,4 +1,5 @@ | |||
| 1 | #include <linux/types.h> | 1 | #include <linux/types.h> |
| 2 | #include <linux/clockchips.h> | ||
| 2 | 3 | ||
| 3 | #include <xen/interface/xen.h> | 4 | #include <xen/interface/xen.h> |
| 4 | #include <xen/grant_table.h> | 5 | #include <xen/grant_table.h> |
| @@ -27,6 +28,8 @@ void xen_pre_suspend(void) | |||
| 27 | 28 | ||
| 28 | void xen_post_suspend(int suspend_cancelled) | 29 | void xen_post_suspend(int suspend_cancelled) |
| 29 | { | 30 | { |
| 31 | xen_build_mfn_list_list(); | ||
| 32 | |||
| 30 | xen_setup_shared_info(); | 33 | xen_setup_shared_info(); |
| 31 | 34 | ||
| 32 | if (suspend_cancelled) { | 35 | if (suspend_cancelled) { |
| @@ -44,7 +47,19 @@ void xen_post_suspend(int suspend_cancelled) | |||
| 44 | 47 | ||
| 45 | } | 48 | } |
| 46 | 49 | ||
| 50 | static void xen_vcpu_notify_restore(void *data) | ||
| 51 | { | ||
| 52 | unsigned long reason = (unsigned long)data; | ||
| 53 | |||
| 54 | /* Boot processor notified via generic timekeeping_resume() */ | ||
| 55 | if ( smp_processor_id() == 0) | ||
| 56 | return; | ||
| 57 | |||
| 58 | clockevents_notify(reason, NULL); | ||
| 59 | } | ||
| 60 | |||
| 47 | void xen_arch_resume(void) | 61 | void xen_arch_resume(void) |
| 48 | { | 62 | { |
| 49 | /* nothing */ | 63 | smp_call_function(xen_vcpu_notify_restore, |
| 64 | (void *)CLOCK_EVT_NOTIFY_RESUME, 1); | ||
| 50 | } | 65 | } |
