Include Proxmox patches
This change adds recent patches included in the stock Proxmox kernels.
This commit is contained in:
parent
ed134665cb
commit
fa9f77096c
8 changed files with 238 additions and 4 deletions
105
debian/patches/pve/0006-Revert-PCI-Coalesce-host-bridge-contiguous-apertures.patch
vendored
Normal file
105
debian/patches/pve/0006-Revert-PCI-Coalesce-host-bridge-contiguous-apertures.patch
vendored
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
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"
|
||||||
|
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 <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 e322907d1f3c..d9fc02a71baa 100644
|
||||||
|
--- a/drivers/pci/probe.c
|
||||||
|
+++ b/drivers/pci/probe.c
|
||||||
|
@@ -20,7 +20,6 @@
|
||||||
|
#include <linux/irqdomain.h>
|
||||||
|
#include <linux/pm_runtime.h>
|
||||||
|
#include <linux/bitfield.h>
|
||||||
|
-#include <linux/list_sort.h>
|
||||||
|
#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);
|
113
debian/patches/pve/0007-PCI-Reinstate-PCI-Coalesce-host-bridge-contiguous-ap.patch
vendored
Normal file
113
debian/patches/pve/0007-PCI-Reinstate-PCI-Coalesce-host-bridge-contiguous-ap.patch
vendored
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kai-Heng Feng <kai.heng.feng@canonical.com>
|
||||||
|
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 <linux@roeck-us.net>
|
||||||
|
Suggested-by: Bjorn Helgaas <bhelgaas@google.com>
|
||||||
|
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
|
||||||
|
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
|
||||||
|
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||||
|
---
|
||||||
|
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);
|
13
debian/patches/pve/0008-disable-split-btf.patch
vendored
Normal file
13
debian/patches/pve/0008-disable-split-btf.patch
vendored
Normal file
|
@ -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.
|
11
debian/patches/series.linux
vendored
11
debian/patches/series.linux
vendored
|
@ -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/0003-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch
|
||||||
pve/0004-kvm-disable-default-dynamic-halt-polling-growth.patch
|
pve/0004-kvm-disable-default-dynamic-halt-polling-growth.patch
|
||||||
pve/0005-net-core-downgrade-unregister_netdevice-refcount-lea.patch
|
pve/0005-net-core-downgrade-unregister_netdevice-refcount-lea.patch
|
||||||
pve/0006-apparmor-compatibility-v2.x-net-rules.patch
|
pve/0006-Revert-PCI-Coalesce-host-bridge-contiguous-apertures.patch
|
||||||
pve/0007-apparmor-af_unix-mediation.patch
|
pve/0007-PCI-Reinstate-PCI-Coalesce-host-bridge-contiguous-ap.patch
|
||||||
pve/0008-apparmor-fix-apparmor-mediating-locking-non-fs-unix-sockets.patch
|
pve/0008-disable-split-btf.patch
|
||||||
pve/0009-apparmor-fix-use-after-free-in-sk_peer_label.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
|
||||||
|
|
Loading…
Reference in a new issue