[PATCH 2/3] PCI: Remove the MPS suggestion from pcie_bus_configure_settings

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Rework the pcie_bus_configure_settings to not include an MPS suggestion
from the root port and simply use the root port MPSS as a starting point
(thus removing the need to pass around the info and making the call
simplier).

Signed-off-by: Jon Mason <mason@xxxxxxxx>
---
 arch/x86/pci/acpi.c              |   11 +----------
 drivers/pci/hotplug/pcihp_slot.c |    4 +---
 drivers/pci/probe.c              |   19 ++++++++++++++++---
 include/linux/pci.h              |    3 ++-
 4 files changed, 20 insertions(+), 17 deletions(-)

diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c
index 039d913..d3b85fb 100644
--- a/arch/x86/pci/acpi.c
+++ b/arch/x86/pci/acpi.c
@@ -363,16 +363,7 @@ struct pci_bus * __devinit pci_acpi_scan_root(struct acpi_pci_root *root)
 	/* After the PCI-E bus has been walked and all devices discovered,
 	 * configure any settings of the fabric that might be necessary.
 	 */
-	if (bus) {
-		struct pci_bus *child;
-		list_for_each_entry(child, &bus->children, node) {
-			struct pci_dev *self = child->self;
-			if (!self)
-				continue;
-
-			pcie_bus_configure_settings(child, self->pcie_mpss);
-		}
-	}
+	pcie_bus_configure_settings_root(bus);
 
 	if (!bus)
 		kfree(sd);
diff --git a/drivers/pci/hotplug/pcihp_slot.c b/drivers/pci/hotplug/pcihp_slot.c
index 3ffd9c1..37dfae0 100644
--- a/drivers/pci/hotplug/pcihp_slot.c
+++ b/drivers/pci/hotplug/pcihp_slot.c
@@ -169,9 +169,7 @@ void pci_configure_slot(struct pci_dev *dev)
 			(dev->class >> 8) == PCI_CLASS_BRIDGE_PCI)))
 		return;
 
-	if (dev->bus && dev->bus->self)
-		pcie_bus_configure_settings(dev->bus,
-					    dev->bus->self->pcie_mpss);
+	pcie_bus_configure_settings(dev->bus);
 
 	memset(&hpp, 0, sizeof(hpp));
 	ret = pci_get_hp_params(dev, &hpp);
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index a919db2..e85f994 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -1449,14 +1449,16 @@ static int pcie_bus_configure_set(struct pci_dev *dev, void *data)
  * parents then children fashion.  If this changes, then this code will not
  * work as designed.
  */
-void pcie_bus_configure_settings(struct pci_bus *bus, u8 mpss)
+void pcie_bus_configure_settings(struct pci_bus *bus)
 {
-	u8 smpss = mpss;
+	u8 smpss;
 
-	if (!pci_is_pcie(bus->self))
+	if (!bus || !bus->self || !pci_is_pcie(bus->self))
 		return;
 
 	if (pcie_bus_config == PCIE_BUS_SAFE) {
+		smpss = bus->self->pcie_mpss;
+
 		pcie_find_smpss(bus->self, &smpss);
 		pci_walk_bus(bus, pcie_find_smpss, &smpss);
 	}
@@ -1466,6 +1468,17 @@ void pcie_bus_configure_settings(struct pci_bus *bus, u8 mpss)
 }
 EXPORT_SYMBOL_GPL(pcie_bus_configure_settings);
 
+void pcie_bus_configure_settings_root(struct pci_bus *bus)
+{
+	struct pci_bus *child;
+
+	if (!bus)
+		return;
+
+	list_for_each_entry(child, &bus->children, node)
+		pcie_bus_configure_settings(child);
+}
+
 unsigned int __devinit pci_scan_child_bus(struct pci_bus *bus)
 {
 	unsigned int devfn, pass, max = bus->secondary;
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 8c230cb..4d857bf 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -618,7 +618,8 @@ struct pci_driver {
 /* these external functions are only available when PCI support is enabled */
 #ifdef CONFIG_PCI
 
-extern void pcie_bus_configure_settings(struct pci_bus *bus, u8 smpss);
+extern void pcie_bus_configure_settings_root(struct pci_bus *bus);
+extern void pcie_bus_configure_settings(struct pci_bus *bus);
 
 enum pcie_bus_config_types {
 	PCIE_BUS_PERFORMANCE,
-- 
1.7.6.2

--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux