]> git.proxmox.com Git - pve-kernel.git/blobdiff - patches/kernel/0008-Revert-PCI-Coalesce-host-bridge-contiguous-apertures.patch
rebase patches on top of Ubuntu-5.13.0-21.21
[pve-kernel.git] / patches / kernel / 0008-Revert-PCI-Coalesce-host-bridge-contiguous-apertures.patch
diff --git a/patches/kernel/0008-Revert-PCI-Coalesce-host-bridge-contiguous-apertures.patch b/patches/kernel/0008-Revert-PCI-Coalesce-host-bridge-contiguous-apertures.patch
deleted file mode 100644 (file)
index 1cd38d8..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Thomas Lamprecht <t.lamprecht@proxmox.com>
-Date: Mon, 27 Sep 2021 11:28:39 +0200
-Subject: [PATCH] Revert "PCI: Coalesce host bridge contiguous apertures"
-
-This reverts commit ab20e43b20b60f5cc8e2ea3763ffa388158469ac.
-
-was reverted upstream because of reports similar to
-
-Link: https://bugzilla.proxmox.com/show_bug.cgi?id=3552
-Link: https://lore.kernel.org/r/20210709231529.GA3270116@roeck-us.net
-Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
-Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
----
- drivers/pci/probe.c | 52 +++++----------------------------------------
- 1 file changed, 5 insertions(+), 47 deletions(-)
-
-diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
-index f6046a16dac1..275204646c68 100644
---- a/drivers/pci/probe.c
-+++ b/drivers/pci/probe.c
-@@ -19,7 +19,6 @@
- #include <linux/hypervisor.h>
- #include <linux/irqdomain.h>
- #include <linux/pm_runtime.h>
--#include <linux/list_sort.h>
- #include "pci.h"
- #define CARDBUS_LATENCY_TIMER 176     /* secondary latency timer */
-@@ -875,31 +874,14 @@ static void pci_set_bus_msi_domain(struct pci_bus *bus)
-       dev_set_msi_domain(&bus->dev, d);
- }
--static int res_cmp(void *priv, const struct list_head *a,
--                 const struct list_head *b)
--{
--      struct resource_entry *entry1, *entry2;
--
--      entry1 = container_of(a, struct resource_entry, node);
--      entry2 = container_of(b, struct resource_entry, node);
--
--      if (entry1->res->flags != entry2->res->flags)
--              return entry1->res->flags > entry2->res->flags;
--
--      if (entry1->offset != entry2->offset)
--              return entry1->offset > entry2->offset;
--
--      return entry1->res->start > entry2->res->start;
--}
--
- static int pci_register_host_bridge(struct pci_host_bridge *bridge)
- {
-       struct device *parent = bridge->dev.parent;
--      struct resource_entry *window, *next, *n;
-+      struct resource_entry *window, *n;
-       struct pci_bus *bus, *b;
--      resource_size_t offset, next_offset;
-+      resource_size_t offset;
-       LIST_HEAD(resources);
--      struct resource *res, *next_res;
-+      struct resource *res;
-       char addr[64], *fmt;
-       const char *name;
-       int err;
-@@ -979,35 +961,11 @@ static int pci_register_host_bridge(struct pci_host_bridge *bridge)
-       if (nr_node_ids > 1 && pcibus_to_node(bus) == NUMA_NO_NODE)
-               dev_warn(&bus->dev, "Unknown NUMA node; performance will be reduced\n");
--      /* Sort and coalesce contiguous windows */
--      list_sort(NULL, &resources, res_cmp);
--      resource_list_for_each_entry_safe(window, n, &resources) {
--              if (list_is_last(&window->node, &resources))
--                      break;
--
--              next = list_next_entry(window, node);
--              offset = window->offset;
--              res = window->res;
--              next_offset = next->offset;
--              next_res = next->res;
--
--              if (res->flags != next_res->flags || offset != next_offset)
--                      continue;
--
--              if (res->end + 1 == next_res->start) {
--                      next_res->start = res->start;
--                      res->flags = res->start = res->end = 0;
--              }
--      }
--
-       /* Add initial resources to the bus */
-       resource_list_for_each_entry_safe(window, n, &resources) {
--              offset = window->offset;
--              res = window->res;
--              if (!res->end)
--                      continue;
--
-               list_move_tail(&window->node, &bridge->windows);
-+              offset = window->offset;
-+              res = window->res;
-               if (res->flags & IORESOURCE_BUS)
-                       pci_bus_insert_busn_res(bus, bus->number, res->end);