Merge tag 'devprop-4.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael...
[linux-2.6-block.git] / arch / x86 / xen / suspend.c
CommitLineData
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
17void xen_arch_pre_suspend(void)
18{
65d0cf0b
BO
19 if (xen_pv_domain())
20 xen_pv_pre_suspend();
aa8532c3
DV
21}
22
23void 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
31static 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
40static void xen_vcpu_notify_suspend(void *data)
41{
42 tick_suspend_local();
43}
44
ad55db9f
IY
45void 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
55void 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}