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) { |
