diff --git a/debian/patches/pve/0006-Revert-PCI-Coalesce-host-bridge-contiguous-apertures.patch b/debian/patches/pve/0006-Revert-PCI-Coalesce-host-bridge-contiguous-apertures.patch new file mode 100644 index 0000000..0601ede --- /dev/null +++ b/debian/patches/pve/0006-Revert-PCI-Coalesce-host-bridge-contiguous-apertures.patch @@ -0,0 +1,105 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Thomas Lamprecht +Date: Mon, 27 Sep 2021 11:28:39 +0200 +Subject: [PATCH] Revert "PCI: Coalesce host bridge contiguous apertures" +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +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 +Signed-off-by: Thomas Lamprecht +--- + 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 e322907d1f3c..d9fc02a71baa 100644 +--- a/drivers/pci/probe.c ++++ b/drivers/pci/probe.c +@@ -20,7 +20,6 @@ + #include + #include + #include +-#include + #include "pci.h" + + #define CARDBUS_LATENCY_TIMER 176 /* secondary latency timer */ +@@ -881,31 +880,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; +@@ -988,35 +970,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); \ No newline at end of file diff --git a/debian/patches/pve/0007-PCI-Reinstate-PCI-Coalesce-host-bridge-contiguous-ap.patch b/debian/patches/pve/0007-PCI-Reinstate-PCI-Coalesce-host-bridge-contiguous-ap.patch new file mode 100644 index 0000000..c4162cb --- /dev/null +++ b/debian/patches/pve/0007-PCI-Reinstate-PCI-Coalesce-host-bridge-contiguous-ap.patch @@ -0,0 +1,113 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Kai-Heng Feng +Date: Tue, 13 Jul 2021 20:50:07 +0800 +Subject: [PATCH] PCI: Reinstate "PCI: Coalesce host bridge contiguous + apertures" +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Built-in graphics on HP EliteDesk 805 G6 doesn't work because graphics +can't get the BAR it needs: + pci_bus 0000:00: root bus resource [mem 0x10020200000-0x100303fffff window] + pci_bus 0000:00: root bus resource [mem 0x10030400000-0x100401fffff window] + + pci 0000:00:08.1: bridge window [mem 0xd2000000-0xd23fffff] + pci 0000:00:08.1: bridge window [mem 0x10030000000-0x100401fffff 64bit pref] + pci 0000:00:08.1: can't claim BAR 15 [mem 0x10030000000-0x100401fffff 64bit pref]: no compatible bridge window + pci 0000:00:08.1: [mem 0x10030000000-0x100401fffff 64bit pref] clipped to [mem 0x10030000000-0x100303fffff 64bit pref] + pci 0000:00:08.1: bridge window [mem 0x10030000000-0x100303fffff 64bit pref] + pci 0000:07:00.0: can't claim BAR 0 [mem 0x10030000000-0x1003fffffff 64bit pref]: no compatible bridge window + pci 0000:07:00.0: can't claim BAR 2 [mem 0x10040000000-0x100401fffff 64bit pref]: no compatible bridge window + +However, the root bus has two contiguous apertures that can contain the +child resource requested. + +Coalesce contiguous apertures so we can allocate from the entire contiguous +region. + +This is the second take of commit 65db04053efe ("PCI: Coalesce host +bridge contiguous apertures"). The original approach sorts the apertures +by address, but that makes NVMe stop working on QEMU ppc:sam460ex: + PCI host bridge to bus 0002:00 + pci_bus 0002:00: root bus resource [io 0x0000-0xffff] + pci_bus 0002:00: root bus resource [mem 0xd80000000-0xdffffffff] (bus address [0x80000000-0xffffffff]) + pci_bus 0002:00: root bus resource [mem 0xc0ee00000-0xc0eefffff] (bus address [0x00000000-0x000fffff]) + +After the offending commit: + PCI host bridge to bus 0002:00 + pci_bus 0002:00: root bus resource [io 0x0000-0xffff] + pci_bus 0002:00: root bus resource [mem 0xc0ee00000-0xc0eefffff] (bus address [0x00000000-0x000fffff]) + pci_bus 0002:00: root bus resource [mem 0xd80000000-0xdffffffff] (bus address [0x80000000-0xffffffff]) + +Since the apertures on HP EliteDesk 805 G6 are already in ascending +order, doing a precautious sorting is not necessary. + +Remove the sorting part to avoid the regression on ppc:sam460ex. + +Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=212013 +Cc: Guenter Roeck +Suggested-by: Bjorn Helgaas +Signed-off-by: Kai-Heng Feng +Signed-off-by: Fabian Grünbichler +Signed-off-by: Thomas Lamprecht +--- + drivers/pci/probe.c | 33 ++++++++++++++++++++++++++++----- + 1 file changed, 28 insertions(+), 5 deletions(-) + +diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c +index d9fc02a71baa..3459f460dbd8 100644 +--- a/drivers/pci/probe.c ++++ b/drivers/pci/probe.c +@@ -883,11 +883,11 @@ static void pci_set_bus_msi_domain(struct pci_bus *bus) + static int pci_register_host_bridge(struct pci_host_bridge *bridge) + { + struct device *parent = bridge->dev.parent; +- struct resource_entry *window, *n; ++ struct resource_entry *window, *next, *n; + struct pci_bus *bus, *b; +- resource_size_t offset; ++ resource_size_t offset, next_offset; + LIST_HEAD(resources); +- struct resource *res; ++ struct resource *res, *next_res; + char addr[64], *fmt; + const char *name; + int err; +@@ -970,11 +970,34 @@ 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"); + ++ /* Coalesce contiguous windows */ ++ 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); \ No newline at end of file diff --git a/debian/patches/pve/0008-disable-split-btf.patch b/debian/patches/pve/0008-disable-split-btf.patch new file mode 100644 index 0000000..879c4f7 --- /dev/null +++ b/debian/patches/pve/0008-disable-split-btf.patch @@ -0,0 +1,13 @@ +diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug +index 25dc20175bba..7ff51a3f65e6 100644 +--- a/lib/Kconfig.debug ++++ b/lib/Kconfig.debug +@@ -314,7 +314,7 @@ config PAHOLE_HAS_SPLIT_BTF + def_bool $(success, test `$(PAHOLE) --version | sed -E 's/v([0-9]+)\.([0-9]+)/\1\2/'` -ge "119") + + config DEBUG_INFO_BTF_MODULES +- def_bool y ++ def_bool n + depends on DEBUG_INFO_BTF && MODULES && PAHOLE_HAS_SPLIT_BTF + help + Generate compact split BTF type information for kernel modules. \ No newline at end of file diff --git a/debian/patches/pve/0006-apparmor-compatibility-v2.x-net-rules.patch b/debian/patches/pve/0009-apparmor-compatibility-v2.x-net-rules.patch similarity index 100% rename from debian/patches/pve/0006-apparmor-compatibility-v2.x-net-rules.patch rename to debian/patches/pve/0009-apparmor-compatibility-v2.x-net-rules.patch diff --git a/debian/patches/pve/0007-apparmor-af_unix-mediation.patch b/debian/patches/pve/0010-apparmor-af_unix-mediation.patch similarity index 100% rename from debian/patches/pve/0007-apparmor-af_unix-mediation.patch rename to debian/patches/pve/0010-apparmor-af_unix-mediation.patch diff --git a/debian/patches/pve/0008-apparmor-fix-apparmor-mediating-locking-non-fs-unix-sockets.patch b/debian/patches/pve/0011-apparmor-fix-apparmor-mediating-locking-non-fs-unix-sockets.patch similarity index 100% rename from debian/patches/pve/0008-apparmor-fix-apparmor-mediating-locking-non-fs-unix-sockets.patch rename to debian/patches/pve/0011-apparmor-fix-apparmor-mediating-locking-non-fs-unix-sockets.patch diff --git a/debian/patches/pve/0009-apparmor-fix-use-after-free-in-sk_peer_label.patch b/debian/patches/pve/0012-apparmor-fix-use-after-free-in-sk_peer_label.patch similarity index 100% rename from debian/patches/pve/0009-apparmor-fix-use-after-free-in-sk_peer_label.patch rename to debian/patches/pve/0012-apparmor-fix-use-after-free-in-sk_peer_label.patch diff --git a/debian/patches/series.linux b/debian/patches/series.linux index b33879f..c082b04 100644 --- a/debian/patches/series.linux +++ b/debian/patches/series.linux @@ -3,7 +3,10 @@ pve/0002-bridge-keep-MAC-of-first-assigned-port.patch pve/0003-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch pve/0004-kvm-disable-default-dynamic-halt-polling-growth.patch pve/0005-net-core-downgrade-unregister_netdevice-refcount-lea.patch -pve/0006-apparmor-compatibility-v2.x-net-rules.patch -pve/0007-apparmor-af_unix-mediation.patch -pve/0008-apparmor-fix-apparmor-mediating-locking-non-fs-unix-sockets.patch -pve/0009-apparmor-fix-use-after-free-in-sk_peer_label.patch +pve/0006-Revert-PCI-Coalesce-host-bridge-contiguous-apertures.patch +pve/0007-PCI-Reinstate-PCI-Coalesce-host-bridge-contiguous-ap.patch +pve/0008-disable-split-btf.patch +pve/0009-apparmor-compatibility-v2.x-net-rules.patch +pve/0010-apparmor-af_unix-mediation.patch +pve/0011-apparmor-fix-apparmor-mediating-locking-non-fs-unix-sockets.patch +pve/0012-apparmor-fix-use-after-free-in-sk_peer_label.patch