]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
Revert "PCI: Restore pref MMIO allocation logic for host bridge without mmio64"
authorKhalid Aziz <khalid.aziz@oracle.com>
Tue, 3 May 2016 14:03:37 +0000 (08:03 -0600)
committerChuck Anderson <chuck.anderson@oracle.com>
Sun, 28 May 2017 02:43:53 +0000 (19:43 -0700)
This reverts commit 88f97208c7a78187924924f741f864d6a3ccc62e. This
commit causes hotplug to break as documented in Orabug 22855133.

Orabug: 22855133

Signed-off-by: Khalid Aziz <khalid.aziz@oracle.com>
(cherry picked from commit 5b6a6cf1e2785b6bf9153c726e09435c05921040)
Signed-off-by: Allen Pais <allen.pais@oracle.com>
drivers/pci/bus.c
drivers/pci/setup-bus.c
drivers/pci/setup-res.c

index 7f7bf04ef6f779248471ba7b1f4bf04cabdb8896..89b3befc7155325b12f21d4667a675b52423bb6d 100644 (file)
@@ -204,10 +204,8 @@ int pci_bus_alloc_resource(struct pci_bus *bus, struct resource *res,
 {
 #ifdef CONFIG_PCI_BUS_ADDR_T_64BIT
        int rc;
-       unsigned long mmio64 = pci_find_host_bridge(bus)->has_mem64 ?
-                               IORESOURCE_MEM_64 : 0;
 
-       if (res->flags & mmio64) {
+       if (res->flags & IORESOURCE_MEM_64) {
                rc = pci_bus_alloc_from_region(bus, res, size, align, min,
                                               type_mask, alignf, alignf_data,
                                               &pci_high);
index 0d64677e8b2fab1e9ae81c55ab70720563bdf162..95d18ef267e1063773bcb703d7e5680632396f0c 100644 (file)
@@ -1311,8 +1311,7 @@ void __pci_bus_size_bridges(struct pci_bus *bus, struct list_head *realloc_head)
                b_res = &bus->self->resource[PCI_BRIDGE_RESOURCES];
                mask = IORESOURCE_MEM;
                prefmask = IORESOURCE_MEM | IORESOURCE_PREFETCH;
-               if ((b_res[2].flags & IORESOURCE_MEM_64) &&
-                   pci_find_host_bridge(bus)->has_mem64) {
+               if (b_res[2].flags & IORESOURCE_MEM_64) {
                        prefmask |= IORESOURCE_MEM_64;
                        ret = pbus_size_mem(bus, prefmask, prefmask,
                                  prefmask, prefmask,
@@ -1471,21 +1470,17 @@ static void pci_bridge_release_resources(struct pci_bus *bus,
         *        io port.
         *     2. if there is non pref mmio assign fail, release bridge
         *        nonpref mmio.
-        *     3. if there is pref mmio assign fail, and host bridge does
-        *        have 64bit mmio, release bridge pref mmio.
-        *     4. if there is 64bit pref mmio assign fail, and bridge pref
+        *     3. if there is 64bit pref mmio assign fail, and bridge pref
         *        is 64bit, release bridge pref mmio.
-        *     5. if there is pref mmio assign fail, and bridge pref is
+        *     4. if there is pref mmio assign fail, and bridge pref is
         *        32bit mmio, release bridge pref mmio
-        *     6. if there is pref mmio assign fail, and bridge pref is not
+        *     5. if there is pref mmio assign fail, and bridge pref is not
         *        assigned, release bridge nonpref mmio.
         */
        if (type & IORESOURCE_IO)
                idx = 0;
        else if (!(type & IORESOURCE_PREFETCH))
                idx = 1;
-       else if (!pci_find_host_bridge(bus)->has_mem64)
-               idx = 2;
        else if ((type & IORESOURCE_MEM_64) &&
                 (b_res[2].flags & IORESOURCE_MEM_64))
                idx = 2;
index 26aeddea0524085ff4e5fa235d1ca0e456afded1..b19aa5bec47e5e8bae898ade703a1aeda2e5a70d 100644 (file)
@@ -205,8 +205,6 @@ static int __pci_assign_resource(struct pci_bus *bus, struct pci_dev *dev,
        struct resource *res = dev->resource + resno;
        resource_size_t min;
        int ret;
-       unsigned long mmio64 = pci_find_host_bridge(bus)->has_mem64 ?
-                               IORESOURCE_MEM_64 : 0;
 
        min = (res->flags & IORESOURCE_IO) ? PCIBIOS_MIN_IO : PCIBIOS_MIN_MEM;
 
@@ -218,7 +216,7 @@ static int __pci_assign_resource(struct pci_bus *bus, struct pci_dev *dev,
         * things differently than they were sized, not everything will fit.
         */
        ret = pci_bus_alloc_resource(bus, res, size, align, min,
-                                    IORESOURCE_PREFETCH | mmio64,
+                                    IORESOURCE_PREFETCH | IORESOURCE_MEM_64,
                                     pcibios_align_resource, dev);
        if (ret == 0)
                return 0;
@@ -227,8 +225,7 @@ static int __pci_assign_resource(struct pci_bus *bus, struct pci_dev *dev,
         * If the prefetchable window is only 32 bits wide, we can put
         * 64-bit prefetchable resources in it.
         */
-       if (mmio64 &&
-           (res->flags & (IORESOURCE_PREFETCH | IORESOURCE_MEM_64)) ==
+       if ((res->flags & (IORESOURCE_PREFETCH | IORESOURCE_MEM_64)) ==
             (IORESOURCE_PREFETCH | IORESOURCE_MEM_64)) {
                ret = pci_bus_alloc_resource(bus, res, size, align, min,
                                             IORESOURCE_PREFETCH,
@@ -243,7 +240,7 @@ static int __pci_assign_resource(struct pci_bus *bus, struct pci_dev *dev,
         * non-prefetchable, the first call already tried the only possibility
         * so we don't need to try again.
         */
-       if (res->flags & (IORESOURCE_PREFETCH | mmio64))
+       if (res->flags & (IORESOURCE_PREFETCH | IORESOURCE_MEM_64))
                ret = pci_bus_alloc_resource(bus, res, size, align, min, 0,
                                             pcibios_align_resource, dev);