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