diff options
author | Amit Shah <amit.shah@redhat.com> | 2012-03-29 03:21:41 -0400 |
---|---|---|
committer | Amit Shah <amit.shah@redhat.com> | 2012-03-30 22:39:51 -0400 |
commit | 04c2322bee841121cfdd7f284e1d4274e9e60e33 (patch) | |
tree | b1968224ab84bef66adba00d7480d4b449a0c946 | |
parent | 0517fdd156c46c23501451158c6b0ff9fb7236d1 (diff) |
virtio-pci: S3 support
There's no difference in supporting S3 and S4 for virtio devices: the
vqs have to be re-created as the device has to be assumed to be reset at
restore-time. Since S4 already handles this situation, we can directly
use the same code and callbacks for S3 support.
Signed-off-by: Amit Shah <amit.shah@redhat.com>
-rw-r--r-- | drivers/virtio/virtio_pci.c | 24 |
1 files changed, 3 insertions, 21 deletions
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c index 982d6c9a2bf0..0fa4f8551c3a 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) | |||
720 | } | 720 | } |
721 | 721 | ||
722 | #ifdef CONFIG_PM | 722 | #ifdef CONFIG_PM |
723 | static int virtio_pci_suspend(struct device *dev) | ||
724 | { | ||
725 | struct pci_dev *pci_dev = to_pci_dev(dev); | ||
726 | |||
727 | pci_save_state(pci_dev); | ||
728 | pci_set_power_state(pci_dev, PCI_D3hot); | ||
729 | return 0; | ||
730 | } | ||
731 | |||
732 | static int virtio_pci_resume(struct device *dev) | ||
733 | { | ||
734 | struct pci_dev *pci_dev = to_pci_dev(dev); | ||
735 | |||
736 | pci_restore_state(pci_dev); | ||
737 | pci_set_power_state(pci_dev, PCI_D0); | ||
738 | return 0; | ||
739 | } | ||
740 | |||
741 | static int virtio_pci_freeze(struct device *dev) | 723 | static int virtio_pci_freeze(struct device *dev) |
742 | { | 724 | { |
743 | struct pci_dev *pci_dev = to_pci_dev(dev); | 725 | struct pci_dev *pci_dev = to_pci_dev(dev); |
@@ -786,12 +768,12 @@ static int virtio_pci_restore(struct device *dev) | |||
786 | } | 768 | } |
787 | 769 | ||
788 | static const struct dev_pm_ops virtio_pci_pm_ops = { | 770 | static const struct dev_pm_ops virtio_pci_pm_ops = { |
789 | .suspend = virtio_pci_suspend, | 771 | .suspend = virtio_pci_freeze, |
790 | .resume = virtio_pci_resume, | 772 | .resume = virtio_pci_restore, |
791 | .freeze = virtio_pci_freeze, | 773 | .freeze = virtio_pci_freeze, |
792 | .thaw = virtio_pci_restore, | 774 | .thaw = virtio_pci_restore, |
793 | .restore = virtio_pci_restore, | 775 | .restore = virtio_pci_restore, |
794 | .poweroff = virtio_pci_suspend, | 776 | .poweroff = virtio_pci_freeze, |
795 | }; | 777 | }; |
796 | #endif | 778 | #endif |
797 | 779 | ||