aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/pci/pci.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 111569ccab4..9e31c0ab650 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -3164,18 +3164,12 @@ static int pci_parent_bus_reset(struct pci_dev *dev, int probe)
3164 return 0; 3164 return 0;
3165} 3165}
3166 3166
3167static int pci_dev_reset(struct pci_dev *dev, int probe) 3167static int __pci_dev_reset(struct pci_dev *dev, int probe)
3168{ 3168{
3169 int rc; 3169 int rc;
3170 3170
3171 might_sleep(); 3171 might_sleep();
3172 3172
3173 if (!probe) {
3174 pci_cfg_access_lock(dev);
3175 /* block PM suspend, driver probe, etc. */
3176 device_lock(&dev->dev);
3177 }
3178
3179 rc = pci_dev_specific_reset(dev, probe); 3173 rc = pci_dev_specific_reset(dev, probe);
3180 if (rc != -ENOTTY) 3174 if (rc != -ENOTTY)
3181 goto done; 3175 goto done;
@@ -3194,14 +3188,27 @@ static int pci_dev_reset(struct pci_dev *dev, int probe)
3194 3188
3195 rc = pci_parent_bus_reset(dev, probe); 3189 rc = pci_parent_bus_reset(dev, probe);
3196done: 3190done:
3191 return rc;
3192}
3193
3194static int pci_dev_reset(struct pci_dev *dev, int probe)
3195{
3196 int rc;
3197
3198 if (!probe) {
3199 pci_cfg_access_lock(dev);
3200 /* block PM suspend, driver probe, etc. */
3201 device_lock(&dev->dev);
3202 }
3203
3204 rc = __pci_dev_reset(dev, probe);
3205
3197 if (!probe) { 3206 if (!probe) {
3198 device_unlock(&dev->dev); 3207 device_unlock(&dev->dev);
3199 pci_cfg_access_unlock(dev); 3208 pci_cfg_access_unlock(dev);
3200 } 3209 }
3201
3202 return rc; 3210 return rc;
3203} 3211}
3204
3205/** 3212/**
3206 * __pci_reset_function - reset a PCI device function 3213 * __pci_reset_function - reset a PCI device function
3207 * @dev: PCI device to reset 3214 * @dev: PCI device to reset
@@ -3246,7 +3253,7 @@ EXPORT_SYMBOL_GPL(__pci_reset_function);
3246 */ 3253 */
3247int __pci_reset_function_locked(struct pci_dev *dev) 3254int __pci_reset_function_locked(struct pci_dev *dev)
3248{ 3255{
3249 return pci_dev_reset(dev, 1); 3256 return __pci_dev_reset(dev, 0);
3250} 3257}
3251EXPORT_SYMBOL_GPL(__pci_reset_function_locked); 3258EXPORT_SYMBOL_GPL(__pci_reset_function_locked);
3252 3259