PCI: Remove __pci_dev_reset() and pci_dev_reset()
authorChristoph Hellwig <hch@lst.de>
Thu, 1 Jun 2017 11:10:39 +0000 (13:10 +0200)
committerBjorn Helgaas <bhelgaas@google.com>
Mon, 3 Jul 2017 12:58:30 +0000 (07:58 -0500)
Implement the reset probing / reset chain directly in
__pci_probe_reset_function() and __pci_reset_function_locked()
respectively.

Link: http://lkml.kernel.org/r/20170601111039.8913-4-hch@lst.de
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/pci.c

index 56407eb1dc8825db85d0c8a5a3e1be0df983dd11..7a75502ece1d5186f8833cdffe7782801d33a975 100644 (file)
@@ -4071,40 +4071,6 @@ static int pci_dev_reset_slot_function(struct pci_dev *dev, int probe)
        return pci_reset_hotplug_slot(dev->slot->hotplug, probe);
 }
 
-static int __pci_dev_reset(struct pci_dev *dev, int probe)
-{
-       int rc;
-
-       might_sleep();
-
-       rc = pci_dev_specific_reset(dev, probe);
-       if (rc != -ENOTTY)
-               goto done;
-
-       if (pcie_has_flr(dev)) {
-               if (!probe)
-                       pcie_flr(dev);
-               rc = 0;
-               goto done;
-       }
-
-       rc = pci_af_flr(dev, probe);
-       if (rc != -ENOTTY)
-               goto done;
-
-       rc = pci_pm_reset(dev, probe);
-       if (rc != -ENOTTY)
-               goto done;
-
-       rc = pci_dev_reset_slot_function(dev, probe);
-       if (rc != -ENOTTY)
-               goto done;
-
-       rc = pci_parent_bus_reset(dev, probe);
-done:
-       return rc;
-}
-
 static void pci_dev_lock(struct pci_dev *dev)
 {
        pci_cfg_access_lock(dev);
@@ -4177,21 +4143,6 @@ static void pci_dev_restore(struct pci_dev *dev)
                err_handler->reset_done(dev);
 }
 
-static int pci_dev_reset(struct pci_dev *dev, int probe)
-{
-       int rc;
-
-       if (!probe)
-               pci_dev_lock(dev);
-
-       rc = __pci_dev_reset(dev, probe);
-
-       if (!probe)
-               pci_dev_unlock(dev);
-
-       return rc;
-}
-
 /**
  * __pci_reset_function - reset a PCI device function
  * @dev: PCI device to reset
@@ -4211,7 +4162,13 @@ static int pci_dev_reset(struct pci_dev *dev, int probe)
  */
 int __pci_reset_function(struct pci_dev *dev)
 {
-       return pci_dev_reset(dev, 0);
+       int ret;
+
+       pci_dev_lock(dev);
+       ret = __pci_reset_function_locked(dev);
+       pci_dev_unlock(dev);
+
+       return ret;
 }
 EXPORT_SYMBOL_GPL(__pci_reset_function);
 
@@ -4236,7 +4193,27 @@ EXPORT_SYMBOL_GPL(__pci_reset_function);
  */
 int __pci_reset_function_locked(struct pci_dev *dev)
 {
-       return __pci_dev_reset(dev, 0);
+       int rc;
+
+       might_sleep();
+
+       rc = pci_dev_specific_reset(dev, 0);
+       if (rc != -ENOTTY)
+               return rc;
+       if (pcie_has_flr(dev)) {
+               pcie_flr(dev);
+               return 0;
+       }
+       rc = pci_af_flr(dev, 0);
+       if (rc != -ENOTTY)
+               return rc;
+       rc = pci_pm_reset(dev, 0);
+       if (rc != -ENOTTY)
+               return rc;
+       rc = pci_dev_reset_slot_function(dev, 0);
+       if (rc != -ENOTTY)
+               return rc;
+       return pci_parent_bus_reset(dev, 0);
 }
 EXPORT_SYMBOL_GPL(__pci_reset_function_locked);
 
@@ -4253,7 +4230,26 @@ EXPORT_SYMBOL_GPL(__pci_reset_function_locked);
  */
 int pci_probe_reset_function(struct pci_dev *dev)
 {
-       return pci_dev_reset(dev, 1);
+       int rc;
+
+       might_sleep();
+
+       rc = pci_dev_specific_reset(dev, 1);
+       if (rc != -ENOTTY)
+               return rc;
+       if (pcie_has_flr(dev))
+               return 0;
+       rc = pci_af_flr(dev, 1);
+       if (rc != -ENOTTY)
+               return rc;
+       rc = pci_pm_reset(dev, 1);
+       if (rc != -ENOTTY)
+               return rc;
+       rc = pci_dev_reset_slot_function(dev, 1);
+       if (rc != -ENOTTY)
+               return rc;
+
+       return pci_parent_bus_reset(dev, 1);
 }
 
 /**
@@ -4276,14 +4272,14 @@ int pci_reset_function(struct pci_dev *dev)
 {
        int rc;
 
-       rc = pci_dev_reset(dev, 1);
+       rc = pci_probe_reset_function(dev);
        if (rc)
                return rc;
 
        pci_dev_lock(dev);
        pci_dev_save_and_disable(dev);
 
-       rc = __pci_dev_reset(dev, 0);
+       rc = __pci_reset_function_locked(dev);
 
        pci_dev_restore(dev);
        pci_dev_unlock(dev);
@@ -4302,7 +4298,7 @@ int pci_try_reset_function(struct pci_dev *dev)
 {
        int rc;
 
-       rc = pci_dev_reset(dev, 1);
+       rc = pci_probe_reset_function(dev);
        if (rc)
                return rc;
 
@@ -4310,7 +4306,7 @@ int pci_try_reset_function(struct pci_dev *dev)
                return -EAGAIN;
 
        pci_dev_save_and_disable(dev);
-       rc = __pci_dev_reset(dev, 0);
+       rc = __pci_reset_function_locked(dev);
        pci_dev_unlock(dev);
 
        pci_dev_restore(dev);