Commit | Line | Data |
---|---|---|
0e91398f | 1 | #include <linux/types.h> |
4ffee521 | 2 | #include <linux/tick.h> |
0e91398f | 3 | |
facca616 | 4 | #include <xen/xen.h> |
0e91398f JF |
5 | #include <xen/interface/xen.h> |
6 | #include <xen/grant_table.h> | |
7 | #include <xen/events.h> | |
8 | ||
9 | #include <asm/xen/hypercall.h> | |
10 | #include <asm/xen/page.h> | |
99d0000f | 11 | #include <asm/fixmap.h> |
0e91398f JF |
12 | |
13 | #include "xen-ops.h" | |
14 | #include "mmu.h" | |
65d0cf0b | 15 | #include "pmu.h" |
0e91398f | 16 | |
aa8532c3 DV |
17 | void xen_arch_pre_suspend(void) |
18 | { | |
65d0cf0b BO |
19 | if (xen_pv_domain()) |
20 | xen_pv_pre_suspend(); | |
aa8532c3 DV |
21 | } |
22 | ||
23 | void xen_arch_post_suspend(int cancelled) | |
24 | { | |
65d0cf0b BO |
25 | if (xen_pv_domain()) |
26 | xen_pv_post_suspend(cancelled); | |
27 | else | |
28 | xen_hvm_post_suspend(cancelled); | |
0e91398f JF |
29 | } |
30 | ||
f6eafe36 IC |
31 | static void xen_vcpu_notify_restore(void *data) |
32 | { | |
f6eafe36 | 33 | /* Boot processor notified via generic timekeeping_resume() */ |
4ffee521 | 34 | if (smp_processor_id() == 0) |
f6eafe36 IC |
35 | return; |
36 | ||
f46481d0 | 37 | tick_resume_local(); |
f6eafe36 IC |
38 | } |
39 | ||
2b953a5e BO |
40 | static void xen_vcpu_notify_suspend(void *data) |
41 | { | |
42 | tick_suspend_local(); | |
43 | } | |
44 | ||
ad55db9f IY |
45 | void xen_arch_resume(void) |
46 | { | |
de0afc9b BO |
47 | int cpu; |
48 | ||
4ffee521 | 49 | on_each_cpu(xen_vcpu_notify_restore, NULL, 1); |
de0afc9b BO |
50 | |
51 | for_each_online_cpu(cpu) | |
52 | xen_pmu_init(cpu); | |
ad55db9f | 53 | } |
2b953a5e BO |
54 | |
55 | void xen_arch_suspend(void) | |
56 | { | |
de0afc9b BO |
57 | int cpu; |
58 | ||
59 | for_each_online_cpu(cpu) | |
60 | xen_pmu_finish(cpu); | |
61 | ||
2b953a5e BO |
62 | on_each_cpu(xen_vcpu_notify_suspend, NULL, 1); |
63 | } |