diff options
-rw-r--r-- | drivers/pci/pci-driver.c | 11 | ||||
-rw-r--r-- | drivers/pci/pci.c | 3 | ||||
-rw-r--r-- | drivers/pci/probe.c | 3 |
3 files changed, 8 insertions, 9 deletions
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c index dbfc93cb5d01..ffc15e97d11c 100644 --- a/drivers/pci/pci-driver.c +++ b/drivers/pci/pci-driver.c | |||
@@ -445,8 +445,6 @@ static int pci_legacy_suspend(struct device *dev, pm_message_t state) | |||
445 | struct pci_dev * pci_dev = to_pci_dev(dev); | 445 | struct pci_dev * pci_dev = to_pci_dev(dev); |
446 | struct pci_driver * drv = pci_dev->driver; | 446 | struct pci_driver * drv = pci_dev->driver; |
447 | 447 | ||
448 | pci_dev->state_saved = false; | ||
449 | |||
450 | if (drv && drv->suspend) { | 448 | if (drv && drv->suspend) { |
451 | pci_power_t prev = pci_dev->current_state; | 449 | pci_power_t prev = pci_dev->current_state; |
452 | int error; | 450 | int error; |
@@ -542,7 +540,6 @@ static int pci_restore_standard_config(struct pci_dev *pci_dev) | |||
542 | static void pci_pm_default_resume_noirq(struct pci_dev *pci_dev) | 540 | static void pci_pm_default_resume_noirq(struct pci_dev *pci_dev) |
543 | { | 541 | { |
544 | pci_restore_standard_config(pci_dev); | 542 | pci_restore_standard_config(pci_dev); |
545 | pci_dev->state_saved = false; | ||
546 | pci_fixup_device(pci_fixup_resume_early, pci_dev); | 543 | pci_fixup_device(pci_fixup_resume_early, pci_dev); |
547 | } | 544 | } |
548 | 545 | ||
@@ -608,8 +605,6 @@ static int pci_pm_suspend(struct device *dev) | |||
608 | if (pci_has_legacy_pm_support(pci_dev)) | 605 | if (pci_has_legacy_pm_support(pci_dev)) |
609 | return pci_legacy_suspend(dev, PMSG_SUSPEND); | 606 | return pci_legacy_suspend(dev, PMSG_SUSPEND); |
610 | 607 | ||
611 | pci_dev->state_saved = false; | ||
612 | |||
613 | if (!pm) { | 608 | if (!pm) { |
614 | pci_pm_default_suspend(pci_dev); | 609 | pci_pm_default_suspend(pci_dev); |
615 | goto Fixup; | 610 | goto Fixup; |
@@ -744,8 +739,6 @@ static int pci_pm_freeze(struct device *dev) | |||
744 | if (pci_has_legacy_pm_support(pci_dev)) | 739 | if (pci_has_legacy_pm_support(pci_dev)) |
745 | return pci_legacy_suspend(dev, PMSG_FREEZE); | 740 | return pci_legacy_suspend(dev, PMSG_FREEZE); |
746 | 741 | ||
747 | pci_dev->state_saved = false; | ||
748 | |||
749 | if (!pm) { | 742 | if (!pm) { |
750 | pci_pm_default_suspend(pci_dev); | 743 | pci_pm_default_suspend(pci_dev); |
751 | return 0; | 744 | return 0; |
@@ -821,6 +814,8 @@ static int pci_pm_thaw(struct device *dev) | |||
821 | pci_pm_reenable_device(pci_dev); | 814 | pci_pm_reenable_device(pci_dev); |
822 | } | 815 | } |
823 | 816 | ||
817 | pci_dev->state_saved = false; | ||
818 | |||
824 | return error; | 819 | return error; |
825 | } | 820 | } |
826 | 821 | ||
@@ -832,8 +827,6 @@ static int pci_pm_poweroff(struct device *dev) | |||
832 | if (pci_has_legacy_pm_support(pci_dev)) | 827 | if (pci_has_legacy_pm_support(pci_dev)) |
833 | return pci_legacy_suspend(dev, PMSG_HIBERNATE); | 828 | return pci_legacy_suspend(dev, PMSG_HIBERNATE); |
834 | 829 | ||
835 | pci_dev->state_saved = false; | ||
836 | |||
837 | if (!pm) { | 830 | if (!pm) { |
838 | pci_pm_default_suspend(pci_dev); | 831 | pci_pm_default_suspend(pci_dev); |
839 | goto Fixup; | 832 | goto Fixup; |
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index dcdfb2212ca3..6edecff0b419 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c | |||
@@ -854,6 +854,7 @@ pci_restore_state(struct pci_dev *dev) | |||
854 | 854 | ||
855 | if (!dev->state_saved) | 855 | if (!dev->state_saved) |
856 | return 0; | 856 | return 0; |
857 | |||
857 | /* PCI Express register must be restored first */ | 858 | /* PCI Express register must be restored first */ |
858 | pci_restore_pcie_state(dev); | 859 | pci_restore_pcie_state(dev); |
859 | 860 | ||
@@ -875,6 +876,8 @@ pci_restore_state(struct pci_dev *dev) | |||
875 | pci_restore_msi_state(dev); | 876 | pci_restore_msi_state(dev); |
876 | pci_restore_iov_state(dev); | 877 | pci_restore_iov_state(dev); |
877 | 878 | ||
879 | dev->state_saved = false; | ||
880 | |||
878 | return 0; | 881 | return 0; |
879 | } | 882 | } |
880 | 883 | ||
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index 882383b61d30..8105e32117f6 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c | |||
@@ -1032,6 +1032,9 @@ void pci_device_add(struct pci_dev *dev, struct pci_bus *bus) | |||
1032 | /* Fix up broken headers */ | 1032 | /* Fix up broken headers */ |
1033 | pci_fixup_device(pci_fixup_header, dev); | 1033 | pci_fixup_device(pci_fixup_header, dev); |
1034 | 1034 | ||
1035 | /* Clear the state_saved flag. */ | ||
1036 | dev->state_saved = false; | ||
1037 | |||
1035 | /* Initialize various capabilities */ | 1038 | /* Initialize various capabilities */ |
1036 | pci_init_capabilities(dev); | 1039 | pci_init_capabilities(dev); |
1037 | 1040 | ||