diff options
Diffstat (limited to 'drivers/pci/pci-driver.c')
| -rw-r--r-- | drivers/pci/pci-driver.c | 6 | 
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c index 5270f1a9932..d6fd6b6d9d4 100644 --- a/drivers/pci/pci-driver.c +++ b/drivers/pci/pci-driver.c @@ -280,8 +280,12 @@ static long local_pci_probe(void *_ddi)  {  	struct drv_dev_and_id *ddi = _ddi;  	struct device *dev = &ddi->dev->dev; +	struct device *parent = dev->parent;  	int rc; +	/* The parent bridge must be in active state when probing */ +	if (parent) +		pm_runtime_get_sync(parent);  	/* Unbound PCI devices are always set to disabled and suspended.  	 * During probe, the device is set to enabled and active and the  	 * usage count is incremented.  If the driver supports runtime PM, @@ -298,6 +302,8 @@ static long local_pci_probe(void *_ddi)  		pm_runtime_set_suspended(dev);  		pm_runtime_put_noidle(dev);  	} +	if (parent) +		pm_runtime_put(parent);  	return rc;  }  |