diff options
Diffstat (limited to 'drivers/xen/manage.c')
-rw-r--r-- | drivers/xen/manage.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/xen/manage.c b/drivers/xen/manage.c index 624e8dc24532..fc6c94c0b436 100644 --- a/drivers/xen/manage.c +++ b/drivers/xen/manage.c | |||
@@ -46,6 +46,20 @@ struct suspend_info { | |||
46 | void (*post)(int cancelled); | 46 | void (*post)(int cancelled); |
47 | }; | 47 | }; |
48 | 48 | ||
49 | static RAW_NOTIFIER_HEAD(xen_resume_notifier); | ||
50 | |||
51 | void xen_resume_notifier_register(struct notifier_block *nb) | ||
52 | { | ||
53 | raw_notifier_chain_register(&xen_resume_notifier, nb); | ||
54 | } | ||
55 | EXPORT_SYMBOL_GPL(xen_resume_notifier_register); | ||
56 | |||
57 | void xen_resume_notifier_unregister(struct notifier_block *nb) | ||
58 | { | ||
59 | raw_notifier_chain_unregister(&xen_resume_notifier, nb); | ||
60 | } | ||
61 | EXPORT_SYMBOL_GPL(xen_resume_notifier_unregister); | ||
62 | |||
49 | #ifdef CONFIG_HIBERNATE_CALLBACKS | 63 | #ifdef CONFIG_HIBERNATE_CALLBACKS |
50 | static void xen_hvm_post_suspend(int cancelled) | 64 | static void xen_hvm_post_suspend(int cancelled) |
51 | { | 65 | { |
@@ -152,6 +166,8 @@ static void do_suspend(void) | |||
152 | 166 | ||
153 | err = stop_machine(xen_suspend, &si, cpumask_of(0)); | 167 | err = stop_machine(xen_suspend, &si, cpumask_of(0)); |
154 | 168 | ||
169 | raw_notifier_call_chain(&xen_resume_notifier, 0, NULL); | ||
170 | |||
155 | dpm_resume_start(si.cancelled ? PMSG_THAW : PMSG_RESTORE); | 171 | dpm_resume_start(si.cancelled ? PMSG_THAW : PMSG_RESTORE); |
156 | 172 | ||
157 | if (err) { | 173 | if (err) { |