aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/xen/xenbus
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/xen/xenbus')
-rw-r--r--drivers/xen/xenbus/xenbus_probe.c12
-rw-r--r--drivers/xen/xenbus/xenbus_probe.h3
-rw-r--r--drivers/xen/xenbus/xenbus_probe_frontend.c11
3 files changed, 21 insertions, 5 deletions
diff --git a/drivers/xen/xenbus/xenbus_probe.c b/drivers/xen/xenbus/xenbus_probe.c
index baa65e7fbbc7..739769551e33 100644
--- a/drivers/xen/xenbus/xenbus_probe.c
+++ b/drivers/xen/xenbus/xenbus_probe.c
@@ -577,7 +577,7 @@ void xenbus_dev_changed(const char *node, struct xen_bus_type *bus)
577} 577}
578EXPORT_SYMBOL_GPL(xenbus_dev_changed); 578EXPORT_SYMBOL_GPL(xenbus_dev_changed);
579 579
580int xenbus_dev_suspend(struct device *dev, pm_message_t state) 580int xenbus_dev_suspend(struct device *dev)
581{ 581{
582 int err = 0; 582 int err = 0;
583 struct xenbus_driver *drv; 583 struct xenbus_driver *drv;
@@ -590,7 +590,7 @@ int xenbus_dev_suspend(struct device *dev, pm_message_t state)
590 return 0; 590 return 0;
591 drv = to_xenbus_driver(dev->driver); 591 drv = to_xenbus_driver(dev->driver);
592 if (drv->suspend) 592 if (drv->suspend)
593 err = drv->suspend(xdev, state); 593 err = drv->suspend(xdev);
594 if (err) 594 if (err)
595 printk(KERN_WARNING 595 printk(KERN_WARNING
596 "xenbus: suspend %s failed: %i\n", dev_name(dev), err); 596 "xenbus: suspend %s failed: %i\n", dev_name(dev), err);
@@ -642,6 +642,14 @@ int xenbus_dev_resume(struct device *dev)
642} 642}
643EXPORT_SYMBOL_GPL(xenbus_dev_resume); 643EXPORT_SYMBOL_GPL(xenbus_dev_resume);
644 644
645int xenbus_dev_cancel(struct device *dev)
646{
647 /* Do nothing */
648 DPRINTK("cancel");
649 return 0;
650}
651EXPORT_SYMBOL_GPL(xenbus_dev_cancel);
652
645/* A flag to determine if xenstored is 'ready' (i.e. has started) */ 653/* A flag to determine if xenstored is 'ready' (i.e. has started) */
646int xenstored_ready = 0; 654int xenstored_ready = 0;
647 655
diff --git a/drivers/xen/xenbus/xenbus_probe.h b/drivers/xen/xenbus/xenbus_probe.h
index 24665812316a..888b9900ca08 100644
--- a/drivers/xen/xenbus/xenbus_probe.h
+++ b/drivers/xen/xenbus/xenbus_probe.h
@@ -64,8 +64,9 @@ extern void xenbus_dev_changed(const char *node, struct xen_bus_type *bus);
64 64
65extern void xenbus_dev_shutdown(struct device *_dev); 65extern void xenbus_dev_shutdown(struct device *_dev);
66 66
67extern int xenbus_dev_suspend(struct device *dev, pm_message_t state); 67extern int xenbus_dev_suspend(struct device *dev);
68extern int xenbus_dev_resume(struct device *dev); 68extern int xenbus_dev_resume(struct device *dev);
69extern int xenbus_dev_cancel(struct device *dev);
69 70
70extern void xenbus_otherend_changed(struct xenbus_watch *watch, 71extern void xenbus_otherend_changed(struct xenbus_watch *watch,
71 const char **vec, unsigned int len, 72 const char **vec, unsigned int len,
diff --git a/drivers/xen/xenbus/xenbus_probe_frontend.c b/drivers/xen/xenbus/xenbus_probe_frontend.c
index 5bcc2d6cf129..b6a2690c9d49 100644
--- a/drivers/xen/xenbus/xenbus_probe_frontend.c
+++ b/drivers/xen/xenbus/xenbus_probe_frontend.c
@@ -85,6 +85,14 @@ static struct device_attribute xenbus_frontend_dev_attrs[] = {
85 __ATTR_NULL 85 __ATTR_NULL
86}; 86};
87 87
88static const struct dev_pm_ops xenbus_pm_ops = {
89 .suspend = xenbus_dev_suspend,
90 .resume = xenbus_dev_resume,
91 .freeze = xenbus_dev_suspend,
92 .thaw = xenbus_dev_cancel,
93 .restore = xenbus_dev_resume,
94};
95
88static struct xen_bus_type xenbus_frontend = { 96static struct xen_bus_type xenbus_frontend = {
89 .root = "device", 97 .root = "device",
90 .levels = 2, /* device/type/<id> */ 98 .levels = 2, /* device/type/<id> */
@@ -100,8 +108,7 @@ static struct xen_bus_type xenbus_frontend = {
100 .shutdown = xenbus_dev_shutdown, 108 .shutdown = xenbus_dev_shutdown,
101 .dev_attrs = xenbus_frontend_dev_attrs, 109 .dev_attrs = xenbus_frontend_dev_attrs,
102 110
103 .suspend = xenbus_dev_suspend, 111 .pm = &xenbus_pm_ops,
104 .resume = xenbus_dev_resume,
105 }, 112 },
106}; 113};
107 114