diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2012-11-26 15:00:57 -0500 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2012-11-26 15:00:57 -0500 |
commit | d3fe3988fb24e5ed13b2243b789a652882d3b26c (patch) | |
tree | 1257424a712583bf474cb0831621a47e73dfc3de /drivers/pci/pci-sysfs.c | |
parent | 7db78a9c864d1baf916d849febef31e274cfcb1f (diff) | |
parent | ff8e59bc4ec3f31789a47dce9b6fe44bd7bc5fcc (diff) |
Merge branch 'for-linus' into next
* for-linus:
PCI/portdrv: Don't create hotplug slots unless port supports hotplug
PCI/PM: Fix proc config reg access for D3cold and bridge suspending
PCI/PM: Resume device before shutdown
PCI/PM: Fix deadlock when unbinding device if parent in D3cold
Diffstat (limited to 'drivers/pci/pci-sysfs.c')
-rw-r--r-- | drivers/pci/pci-sysfs.c | 34 |
1 files changed, 0 insertions, 34 deletions
diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c index 2f21991b8bcd..5d883a152789 100644 --- a/drivers/pci/pci-sysfs.c +++ b/drivers/pci/pci-sysfs.c | |||
@@ -558,40 +558,6 @@ boot_vga_show(struct device *dev, struct device_attribute *attr, char *buf) | |||
558 | } | 558 | } |
559 | struct device_attribute vga_attr = __ATTR_RO(boot_vga); | 559 | struct device_attribute vga_attr = __ATTR_RO(boot_vga); |
560 | 560 | ||
561 | static void | ||
562 | pci_config_pm_runtime_get(struct pci_dev *pdev) | ||
563 | { | ||
564 | struct device *dev = &pdev->dev; | ||
565 | struct device *parent = dev->parent; | ||
566 | |||
567 | if (parent) | ||
568 | pm_runtime_get_sync(parent); | ||
569 | pm_runtime_get_noresume(dev); | ||
570 | /* | ||
571 | * pdev->current_state is set to PCI_D3cold during suspending, | ||
572 | * so wait until suspending completes | ||
573 | */ | ||
574 | pm_runtime_barrier(dev); | ||
575 | /* | ||
576 | * Only need to resume devices in D3cold, because config | ||
577 | * registers are still accessible for devices suspended but | ||
578 | * not in D3cold. | ||
579 | */ | ||
580 | if (pdev->current_state == PCI_D3cold) | ||
581 | pm_runtime_resume(dev); | ||
582 | } | ||
583 | |||
584 | static void | ||
585 | pci_config_pm_runtime_put(struct pci_dev *pdev) | ||
586 | { | ||
587 | struct device *dev = &pdev->dev; | ||
588 | struct device *parent = dev->parent; | ||
589 | |||
590 | pm_runtime_put(dev); | ||
591 | if (parent) | ||
592 | pm_runtime_put_sync(parent); | ||
593 | } | ||
594 | |||
595 | static ssize_t | 561 | static ssize_t |
596 | pci_read_config(struct file *filp, struct kobject *kobj, | 562 | pci_read_config(struct file *filp, struct kobject *kobj, |
597 | struct bin_attribute *bin_attr, | 563 | struct bin_attribute *bin_attr, |