diff options
Diffstat (limited to 'drivers/virtio')
-rw-r--r-- | drivers/virtio/virtio_balloon.c | 14 | ||||
-rw-r--r-- | drivers/virtio/virtio_pci.c | 74 |
2 files changed, 8 insertions, 80 deletions
diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c index 958e5129c601..05f0a80818a2 100644 --- a/drivers/virtio/virtio_balloon.c +++ b/drivers/virtio/virtio_balloon.c @@ -398,21 +398,8 @@ static int restore_common(struct virtio_device *vdev) return 0; } -static int virtballoon_thaw(struct virtio_device *vdev) -{ - return restore_common(vdev); -} - static int virtballoon_restore(struct virtio_device *vdev) { - struct virtio_balloon *vb = vdev->priv; - - /* - * If a request wasn't complete at the time of freezing, this - * could have been set. - */ - vb->need_stats_update = 0; - return restore_common(vdev); } #endif @@ -434,7 +421,6 @@ static struct virtio_driver virtio_balloon_driver = { #ifdef CONFIG_PM .freeze = virtballoon_freeze, .restore = virtballoon_restore, - .thaw = virtballoon_thaw, #endif }; diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c index 635e1efb3792..2e03d416b9af 100644 --- a/drivers/virtio/virtio_pci.c +++ b/drivers/virtio/virtio_pci.c @@ -720,24 +720,6 @@ static void __devexit virtio_pci_remove(struct pci_dev *pci_dev) } #ifdef CONFIG_PM -static int virtio_pci_suspend(struct device *dev) -{ - struct pci_dev *pci_dev = to_pci_dev(dev); - - pci_save_state(pci_dev); - pci_set_power_state(pci_dev, PCI_D3hot); - return 0; -} - -static int virtio_pci_resume(struct device *dev) -{ - struct pci_dev *pci_dev = to_pci_dev(dev); - - pci_restore_state(pci_dev); - pci_set_power_state(pci_dev, PCI_D0); - return 0; -} - static int virtio_pci_freeze(struct device *dev) { struct pci_dev *pci_dev = to_pci_dev(dev); @@ -758,59 +740,24 @@ static int virtio_pci_freeze(struct device *dev) return ret; } -static int restore_common(struct device *dev) -{ - struct pci_dev *pci_dev = to_pci_dev(dev); - struct virtio_pci_device *vp_dev = pci_get_drvdata(pci_dev); - int ret; - - ret = pci_enable_device(pci_dev); - if (ret) - return ret; - pci_set_master(pci_dev); - vp_finalize_features(&vp_dev->vdev); - - return ret; -} - -static int virtio_pci_thaw(struct device *dev) +static int virtio_pci_restore(struct device *dev) { struct pci_dev *pci_dev = to_pci_dev(dev); struct virtio_pci_device *vp_dev = pci_get_drvdata(pci_dev); struct virtio_driver *drv; int ret; - ret = restore_common(dev); - if (ret) - return ret; - drv = container_of(vp_dev->vdev.dev.driver, struct virtio_driver, driver); - if (drv && drv->thaw) - ret = drv->thaw(&vp_dev->vdev); - else if (drv && drv->restore) - ret = drv->restore(&vp_dev->vdev); - - /* Finally, tell the device we're all set */ - if (!ret) - vp_set_status(&vp_dev->vdev, vp_dev->saved_status); - - return ret; -} - -static int virtio_pci_restore(struct device *dev) -{ - struct pci_dev *pci_dev = to_pci_dev(dev); - struct virtio_pci_device *vp_dev = pci_get_drvdata(pci_dev); - struct virtio_driver *drv; - int ret; + ret = pci_enable_device(pci_dev); + if (ret) + return ret; - drv = container_of(vp_dev->vdev.dev.driver, - struct virtio_driver, driver); + pci_set_master(pci_dev); + vp_finalize_features(&vp_dev->vdev); - ret = restore_common(dev); - if (!ret && drv && drv->restore) + if (drv && drv->restore) ret = drv->restore(&vp_dev->vdev); /* Finally, tell the device we're all set */ @@ -821,12 +768,7 @@ static int virtio_pci_restore(struct device *dev) } static const struct dev_pm_ops virtio_pci_pm_ops = { - .suspend = virtio_pci_suspend, - .resume = virtio_pci_resume, - .freeze = virtio_pci_freeze, - .thaw = virtio_pci_thaw, - .restore = virtio_pci_restore, - .poweroff = virtio_pci_suspend, + SET_SYSTEM_SLEEP_PM_OPS(virtio_pci_freeze, virtio_pci_restore) }; #endif |