From 1e77a5a8391769fc05f6e6782b4f8baa2d9d5670 Mon Sep 17 00:00:00 2001 From: Khalid Aziz Date: Tue, 3 May 2016 08:04:53 -0600 Subject: [PATCH] Revert "PCI: Only treat non-pref mmio64 as pref if all bridges have MEM_64" This reverts commit 18d135012bbc70a30df2a664c4470ce94430c9ea. This commit causes hotplug to break as documented in Orabug 22855133. Orabug: 22855133 Signed-off-by: Khalid Aziz (cherry picked from commit 2998a347e93c41d8677e73510a139aa54339c88f) Signed-off-by: Allen Pais --- drivers/pci/setup-bus.c | 31 ++----------------------------- 1 file changed, 2 insertions(+), 29 deletions(-) diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c index b1e4595ba934..6c43c43d5d61 100644 --- a/drivers/pci/setup-bus.c +++ b/drivers/pci/setup-bus.c @@ -739,29 +739,6 @@ int pci_claim_bridge_resource(struct pci_dev *bridge, int i) return -EINVAL; } -static bool pci_up_path_over_pref_mem64(struct pci_bus *bus) -{ - if (pci_is_root_bus(bus)) - return true; - - if (bus->self) { - int i; - bool found = false; - struct resource *res; - - pci_bus_for_each_resource(bus, res, i) - if (res->flags & IORESOURCE_MEM_64) { - found = true; - break; - } - - if (!found) - return false; - } - - return pci_up_path_over_pref_mem64(bus->parent); -} - int pci_resource_pref_compatible(const struct pci_dev *dev, struct resource *res) { @@ -770,8 +747,7 @@ int pci_resource_pref_compatible(const struct pci_dev *dev, if ((res->flags & IORESOURCE_MEM) && (res->flags & IORESOURCE_MEM_64) && - dev->on_all_pcie_path && - pci_up_path_over_pref_mem64(dev->bus)) + dev->on_all_pcie_path) return res->flags | IORESOURCE_PREFETCH; return res->flags; @@ -1263,10 +1239,6 @@ void __pci_bus_size_bridges(struct pci_bus *bus, struct list_head *realloc_head) struct resource *b_res; int ret; - if (!pci_is_root_bus(bus) && - (bus->self->class >> 8) == PCI_CLASS_BRIDGE_PCI) - pci_bridge_check_ranges(bus); - list_for_each_entry(dev, &bus->devices, bus_list) { struct pci_bus *b = dev->subordinate; if (!b) @@ -1294,6 +1266,7 @@ void __pci_bus_size_bridges(struct pci_bus *bus, struct list_head *realloc_head) break; case PCI_CLASS_BRIDGE_PCI: + pci_bridge_check_ranges(bus); if (bus->self->is_hotplug_bridge) { additional_io_size = pci_hotplug_io_size; additional_mem_size = pci_hotplug_mem_size; -- 2.50.1