diff options
Diffstat (limited to 'target/linux')
17 files changed, 34 insertions, 258 deletions
diff --git a/target/linux/apm821xx/patches-4.19/801-usb-xhci-add-firmware-loader-for-uPD720201-and-uPD72.patch b/target/linux/apm821xx/patches-4.19/801-usb-xhci-add-firmware-loader-for-uPD720201-and-uPD72.patch index f3bd671cf7..e5000c911f 100644 --- a/target/linux/apm821xx/patches-4.19/801-usb-xhci-add-firmware-loader-for-uPD720201-and-uPD72.patch +++ b/target/linux/apm821xx/patches-4.19/801-usb-xhci-add-firmware-loader-for-uPD720201-and-uPD72.patch @@ -44,7 +44,7 @@ Signed-off-by: Christian Lamparter <chunkeey@googlemail.com> #include "xhci.h" #include "xhci-trace.h" -@@ -265,6 +267,458 @@ static void xhci_pme_acpi_rtd3_enable(st +@@ -268,6 +270,458 @@ static void xhci_pme_acpi_rtd3_enable(st static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev) { } #endif /* CONFIG_ACPI */ @@ -503,7 +503,7 @@ Signed-off-by: Christian Lamparter <chunkeey@googlemail.com> /* called during probe() after chip reset completes */ static int xhci_pci_setup(struct usb_hcd *hcd) { -@@ -306,6 +760,22 @@ static int xhci_pci_probe(struct pci_dev +@@ -309,6 +763,22 @@ static int xhci_pci_probe(struct pci_dev struct hc_driver *driver; struct usb_hcd *hcd; @@ -526,7 +526,7 @@ Signed-off-by: Christian Lamparter <chunkeey@googlemail.com> driver = (struct hc_driver *)id->driver_data; /* Prevent runtime suspending between USB-2 and USB-3 initialization */ -@@ -364,6 +834,16 @@ static void xhci_pci_remove(struct pci_d +@@ -367,6 +837,16 @@ static void xhci_pci_remove(struct pci_d { struct xhci_hcd *xhci; diff --git a/target/linux/ath79/patches-4.19/910-unaligned_access_hacks.patch b/target/linux/ath79/patches-4.19/910-unaligned_access_hacks.patch index 61695ae55f..fc77e6e42a 100644 --- a/target/linux/ath79/patches-4.19/910-unaligned_access_hacks.patch +++ b/target/linux/ath79/patches-4.19/910-unaligned_access_hacks.patch @@ -578,7 +578,7 @@ #include <net/if_inet6.h> --- a/include/net/inet_ecn.h +++ b/include/net/inet_ecn.h -@@ -125,9 +125,9 @@ static inline int IP6_ECN_set_ce(struct +@@ -126,9 +126,9 @@ static inline int IP6_ECN_set_ce(struct if (INET_ECN_is_not_ect(ipv6_get_dsfield(iph))) return 0; @@ -728,7 +728,7 @@ EXPORT_SYMBOL(xfrm_parse_spi); --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c -@@ -3906,14 +3906,16 @@ static bool tcp_parse_aligned_timestamp( +@@ -3907,14 +3907,16 @@ static bool tcp_parse_aligned_timestamp( { const __be32 *ptr = (const __be32 *)(th + 1); diff --git a/target/linux/generic/backport-4.19/395-v5.8-net-sch_cake-Take-advantage-of-skb-hash-where-appropriate.patch b/target/linux/generic/backport-4.19/395-v5.8-net-sch_cake-Take-advantage-of-skb-hash-where-appropriate.patch index 12962135d0..a4981acdee 100644 --- a/target/linux/generic/backport-4.19/395-v5.8-net-sch_cake-Take-advantage-of-skb-hash-where-appropriate.patch +++ b/target/linux/generic/backport-4.19/395-v5.8-net-sch_cake-Take-advantage-of-skb-hash-where-appropriate.patch @@ -67,7 +67,7 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> + bool rev = !skb->_nfct, upd = false; + __be32 ip; - if (tc_skb_protocol(skb) != htons(ETH_P_IP)) + if (skb_protocol(skb, true) != htons(ETH_P_IP)) - return; + return false; diff --git a/target/linux/generic/backport-4.19/711-v5.3-net-sfp-add-mandatory-attach-detach-methods-for-sfp-.patch b/target/linux/generic/backport-4.19/711-v5.3-net-sfp-add-mandatory-attach-detach-methods-for-sfp-.patch index 74dc39fa7f..0600da2fad 100644 --- a/target/linux/generic/backport-4.19/711-v5.3-net-sfp-add-mandatory-attach-detach-methods-for-sfp-.patch +++ b/target/linux/generic/backport-4.19/711-v5.3-net-sfp-add-mandatory-attach-detach-methods-for-sfp-.patch @@ -51,7 +51,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> .link_down = phylink_sfp_link_down, --- a/drivers/net/phy/sfp-bus.c +++ b/drivers/net/phy/sfp-bus.c -@@ -350,7 +350,7 @@ static int sfp_register_bus(struct sfp_b +@@ -425,7 +425,7 @@ static int sfp_register_bus(struct sfp_b bus->socket_ops->attach(bus->sfp); if (bus->started) bus->socket_ops->start(bus->sfp); @@ -60,7 +60,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> bus->registered = true; return 0; } -@@ -359,8 +359,8 @@ static void sfp_unregister_bus(struct sf +@@ -434,8 +434,8 @@ static void sfp_unregister_bus(struct sf { const struct sfp_upstream_ops *ops = bus->upstream_ops; diff --git a/target/linux/generic/backport-4.19/712-v5.3-net-sfp-remove-sfp-bus-use-of-netdevs.patch b/target/linux/generic/backport-4.19/712-v5.3-net-sfp-remove-sfp-bus-use-of-netdevs.patch index 8f0c37e092..e68cc381dc 100644 --- a/target/linux/generic/backport-4.19/712-v5.3-net-sfp-remove-sfp-bus-use-of-netdevs.patch +++ b/target/linux/generic/backport-4.19/712-v5.3-net-sfp-remove-sfp-bus-use-of-netdevs.patch @@ -30,7 +30,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> --- a/drivers/net/phy/sfp-bus.c +++ b/drivers/net/phy/sfp-bus.c -@@ -23,7 +23,6 @@ struct sfp_bus { +@@ -30,7 +30,6 @@ struct sfp_bus { const struct sfp_upstream_ops *upstream_ops; void *upstream; @@ -38,7 +38,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> struct phy_device *phydev; bool registered; -@@ -442,13 +441,11 @@ static void sfp_upstream_clear(struct sf +@@ -517,13 +516,11 @@ static void sfp_upstream_clear(struct sf { bus->upstream_ops = NULL; bus->upstream = NULL; @@ -52,7 +52,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> * @upstream: the upstream private data * @ops: the upstream's &struct sfp_upstream_ops * -@@ -459,7 +456,7 @@ static void sfp_upstream_clear(struct sf +@@ -534,7 +531,7 @@ static void sfp_upstream_clear(struct sf * On error, returns %NULL. */ struct sfp_bus *sfp_register_upstream(struct fwnode_handle *fwnode, @@ -61,7 +61,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> const struct sfp_upstream_ops *ops) { struct sfp_bus *bus = sfp_bus_get(fwnode); -@@ -469,7 +466,6 @@ struct sfp_bus *sfp_register_upstream(st +@@ -544,7 +541,6 @@ struct sfp_bus *sfp_register_upstream(st rtnl_lock(); bus->upstream_ops = ops; bus->upstream = upstream; @@ -69,7 +69,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> if (bus->sfp) { ret = sfp_register_bus(bus); -@@ -591,7 +587,7 @@ struct sfp_bus *sfp_register_socket(stru +@@ -670,7 +666,7 @@ struct sfp_bus *sfp_register_socket(stru bus->sfp = sfp; bus->socket_ops = ops; @@ -78,7 +78,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> ret = sfp_register_bus(bus); if (ret) sfp_socket_clear(bus); -@@ -611,7 +607,7 @@ EXPORT_SYMBOL_GPL(sfp_register_socket); +@@ -690,7 +686,7 @@ EXPORT_SYMBOL_GPL(sfp_register_socket); void sfp_unregister_socket(struct sfp_bus *bus) { rtnl_lock(); diff --git a/target/linux/generic/backport-4.19/716-v5.4-net-sfp-move-fwnode-parsing-into-sfp-bus-layer.patch b/target/linux/generic/backport-4.19/716-v5.4-net-sfp-move-fwnode-parsing-into-sfp-bus-layer.patch index 27ab78f3ee..bc16e8f1c6 100644 --- a/target/linux/generic/backport-4.19/716-v5.4-net-sfp-move-fwnode-parsing-into-sfp-bus-layer.patch +++ b/target/linux/generic/backport-4.19/716-v5.4-net-sfp-move-fwnode-parsing-into-sfp-bus-layer.patch @@ -59,7 +59,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> #include <linux/rtnetlink.h> #include <linux/slab.h> -@@ -444,45 +445,63 @@ static void sfp_upstream_clear(struct sf +@@ -519,45 +520,63 @@ static void sfp_upstream_clear(struct sf } /** diff --git a/target/linux/generic/backport-4.19/717-v5.5-net-sfp-rework-upstream-interface.patch b/target/linux/generic/backport-4.19/717-v5.5-net-sfp-rework-upstream-interface.patch index f7dd187c16..a901b15aaf 100644 --- a/target/linux/generic/backport-4.19/717-v5.5-net-sfp-rework-upstream-interface.patch +++ b/target/linux/generic/backport-4.19/717-v5.5-net-sfp-rework-upstream-interface.patch @@ -53,7 +53,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> --- a/drivers/net/phy/sfp-bus.c +++ b/drivers/net/phy/sfp-bus.c -@@ -328,10 +328,19 @@ static void sfp_bus_release(struct kref +@@ -403,10 +403,19 @@ static void sfp_bus_release(struct kref kfree(bus); } @@ -75,7 +75,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> static int sfp_register_bus(struct sfp_bus *bus) { -@@ -347,11 +356,11 @@ static int sfp_register_bus(struct sfp_b +@@ -422,11 +431,11 @@ static int sfp_register_bus(struct sfp_b return ret; } } @@ -88,7 +88,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> return 0; } -@@ -445,13 +454,12 @@ static void sfp_upstream_clear(struct sf +@@ -520,13 +529,12 @@ static void sfp_upstream_clear(struct sf } /** @@ -106,7 +106,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> * * Returns: on success, a pointer to the sfp_bus structure, * %NULL if no SFP is specified, -@@ -461,9 +469,7 @@ static void sfp_upstream_clear(struct sf +@@ -536,9 +544,7 @@ static void sfp_upstream_clear(struct sf * %-ENOMEM if we failed to allocate the bus. * an error from the upstream's connect_phy() method. */ @@ -117,7 +117,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> { struct fwnode_reference_args ref; struct sfp_bus *bus; -@@ -481,7 +487,39 @@ struct sfp_bus *sfp_register_upstream_no +@@ -556,7 +562,39 @@ struct sfp_bus *sfp_register_upstream_no if (!bus) return ERR_PTR(-ENOMEM); @@ -157,7 +157,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> bus->upstream_ops = ops; bus->upstream = upstream; -@@ -494,33 +532,33 @@ struct sfp_bus *sfp_register_upstream_no +@@ -569,33 +607,33 @@ struct sfp_bus *sfp_register_upstream_no } rtnl_unlock(); diff --git a/target/linux/generic/backport-4.19/718-v5.5-net-sfp-fix-sfp_bus_put-kernel-documentation.patch b/target/linux/generic/backport-4.19/718-v5.5-net-sfp-fix-sfp_bus_put-kernel-documentation.patch index 59d2ce588c..7bfff60f2f 100644 --- a/target/linux/generic/backport-4.19/718-v5.5-net-sfp-fix-sfp_bus_put-kernel-documentation.patch +++ b/target/linux/generic/backport-4.19/718-v5.5-net-sfp-fix-sfp_bus_put-kernel-documentation.patch @@ -16,7 +16,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> --- a/drivers/net/phy/sfp-bus.c +++ b/drivers/net/phy/sfp-bus.c -@@ -330,7 +330,7 @@ static void sfp_bus_release(struct kref +@@ -405,7 +405,7 @@ static void sfp_bus_release(struct kref /** * sfp_bus_put() - put a reference on the &struct sfp_bus diff --git a/target/linux/generic/backport-4.19/742-v5.5-net-sfp-add-support-for-module-quirks.patch b/target/linux/generic/backport-4.19/742-v5.5-net-sfp-add-support-for-module-quirks.patch deleted file mode 100644 index 5068bd468c..0000000000 --- a/target/linux/generic/backport-4.19/742-v5.5-net-sfp-add-support-for-module-quirks.patch +++ /dev/null @@ -1,111 +0,0 @@ -From 8df5dd55cef48c0769379e04dbc085a899b106d4 Mon Sep 17 00:00:00 2001 -From: Russell King <rmk+kernel@armlinux.org.uk> -Date: Fri, 8 Mar 2019 14:02:25 +0000 -Subject: [PATCH 640/660] net: sfp: add support for module quirks - -Add support for applying module quirks to the list of supported -ethtool link modes. - -Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> ---- - drivers/net/phy/sfp-bus.c | 54 +++++++++++++++++++++++++++++++++++++++ - 1 file changed, 54 insertions(+) - ---- a/drivers/net/phy/sfp-bus.c -+++ b/drivers/net/phy/sfp-bus.c -@@ -9,6 +9,12 @@ - - #include "sfp.h" - -+struct sfp_quirk { -+ const char *vendor; -+ const char *part; -+ void (*modes)(const struct sfp_eeprom_id *id, unsigned long *modes); -+}; -+ - /** - * struct sfp_bus - internal representation of a sfp bus - */ -@@ -21,6 +27,7 @@ struct sfp_bus { - const struct sfp_socket_ops *socket_ops; - struct device *sfp_dev; - struct sfp *sfp; -+ const struct sfp_quirk *sfp_quirk; - - const struct sfp_upstream_ops *upstream_ops; - void *upstream; -@@ -30,6 +37,46 @@ struct sfp_bus { - bool started; - }; - -+static const struct sfp_quirk sfp_quirks[] = { -+}; -+ -+static size_t sfp_strlen(const char *str, size_t maxlen) -+{ -+ size_t size, i; -+ -+ /* Trailing characters should be filled with space chars */ -+ for (i = 0, size = 0; i < maxlen; i++) -+ if (str[i] != ' ') -+ size = i + 1; -+ -+ return size; -+} -+ -+static bool sfp_match(const char *qs, const char *str, size_t len) -+{ -+ if (!qs) -+ return true; -+ if (strlen(qs) != len) -+ return false; -+ return !strncmp(qs, str, len); -+} -+ -+static const struct sfp_quirk *sfp_lookup_quirk(const struct sfp_eeprom_id *id) -+{ -+ const struct sfp_quirk *q; -+ unsigned int i; -+ size_t vs, ps; -+ -+ vs = sfp_strlen(id->base.vendor_name, ARRAY_SIZE(id->base.vendor_name)); -+ ps = sfp_strlen(id->base.vendor_pn, ARRAY_SIZE(id->base.vendor_pn)); -+ -+ for (i = 0, q = sfp_quirks; i < ARRAY_SIZE(sfp_quirks); i++, q++) -+ if (sfp_match(q->vendor, id->base.vendor_name, vs) && -+ sfp_match(q->part, id->base.vendor_pn, ps)) -+ return q; -+ -+ return NULL; -+} - /** - * sfp_parse_port() - Parse the EEPROM base ID, setting the port type - * @bus: a pointer to the &struct sfp_bus structure for the sfp module -@@ -233,6 +280,9 @@ void sfp_parse_support(struct sfp_bus *b - phylink_set(modes, 1000baseX_Full); - } - -+ if (bus->sfp_quirk) -+ bus->sfp_quirk->modes(id, modes); -+ - bitmap_or(support, support, modes, __ETHTOOL_LINK_MODE_MASK_NBITS); - - phylink_set(support, Autoneg); -@@ -609,6 +659,8 @@ int sfp_module_insert(struct sfp_bus *bu - const struct sfp_upstream_ops *ops = sfp_get_upstream_ops(bus); - int ret = 0; - -+ bus->sfp_quirk = sfp_lookup_quirk(id); -+ - if (ops && ops->module_insert) - ret = ops->module_insert(bus->upstream, id); - -@@ -622,6 +674,8 @@ void sfp_module_remove(struct sfp_bus *b - - if (ops && ops->module_remove) - ops->module_remove(bus->upstream); -+ -+ bus->sfp_quirk = NULL; - } - EXPORT_SYMBOL_GPL(sfp_module_remove); - diff --git a/target/linux/generic/backport-4.19/743-v5.5-net-sfp-add-some-quirks-for-GPON-modules.patch b/target/linux/generic/backport-4.19/743-v5.5-net-sfp-add-some-quirks-for-GPON-modules.patch deleted file mode 100644 index 10c34881d8..0000000000 --- a/target/linux/generic/backport-4.19/743-v5.5-net-sfp-add-some-quirks-for-GPON-modules.patch +++ /dev/null @@ -1,52 +0,0 @@ -From ecaa542cfed078dbc356dadff0bad4b6a8e704a0 Mon Sep 17 00:00:00 2001 -From: Russell King <rmk+kernel@armlinux.org.uk> -Date: Fri, 17 May 2019 10:14:45 +0100 -Subject: [PATCH 641/660] net: sfp: add some quirks for GPON modules - -Marc Micalizzi reports that Huawei MA5671A and Alcatel/Lucent G-010S-P -modules are capable of 2500base-X, but incorrectly report their -capabilities in the EEPROM. It seems rather common that GPON modules -mis-report. - -Let's fix these modules by adding some quirks. - -Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> ---- - drivers/net/phy/sfp-bus.c | 25 +++++++++++++++++++++++++ - 1 file changed, 25 insertions(+) - ---- a/drivers/net/phy/sfp-bus.c -+++ b/drivers/net/phy/sfp-bus.c -@@ -37,7 +37,32 @@ struct sfp_bus { - bool started; - }; - -+static void sfp_quirk_2500basex(const struct sfp_eeprom_id *id, -+ unsigned long *modes) -+{ -+ phylink_set(modes, 2500baseX_Full); -+} -+ - static const struct sfp_quirk sfp_quirks[] = { -+ { -+ // Alcatel Lucent G-010S-P can operate at 2500base-X, but -+ // incorrectly report 2500MBd NRZ in their EEPROM -+ .vendor = "ALCATELLUCENT", -+ .part = "G010SP", -+ .modes = sfp_quirk_2500basex, -+ }, { -+ // Alcatel Lucent G-010S-A can operate at 2500base-X, but -+ // report 3.2GBd NRZ in their EEPROM -+ .vendor = "ALCATELLUCENT", -+ .part = "3FE46541AA", -+ .modes = sfp_quirk_2500basex, -+ }, { -+ // Huawei MA5671A can operate at 2500base-X, but report 1.2GBd -+ // NRZ in their EEPROM -+ .vendor = "HUAWEI", -+ .part = "MA5671A", -+ .modes = sfp_quirk_2500basex, -+ }, - }; - - static size_t sfp_strlen(const char *str, size_t maxlen) diff --git a/target/linux/generic/hack-4.19/204-module_strip.patch b/target/linux/generic/hack-4.19/204-module_strip.patch index c9f84dd637..c5170ba295 100644 --- a/target/linux/generic/hack-4.19/204-module_strip.patch +++ b/target/linux/generic/hack-4.19/204-module_strip.patch @@ -114,7 +114,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> config MODULES_TREE_LOOKUP --- a/kernel/module.c +++ b/kernel/module.c -@@ -3028,9 +3028,11 @@ static int setup_load_info(struct load_i +@@ -3030,9 +3030,11 @@ static int setup_load_info(struct load_i static int check_modinfo(struct module *mod, struct load_info *info, int flags) { @@ -127,7 +127,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> if (flags & MODULE_INIT_IGNORE_VERMAGIC) modmagic = NULL; -@@ -3051,6 +3053,7 @@ static int check_modinfo(struct module * +@@ -3053,6 +3055,7 @@ static int check_modinfo(struct module * mod->name); add_taint_module(mod, TAINT_OOT_MODULE, LOCKDEP_STILL_OK); } diff --git a/target/linux/generic/hack-4.19/221-module_exports.patch b/target/linux/generic/hack-4.19/221-module_exports.patch index cd5ae5830c..457baa5a1e 100644 --- a/target/linux/generic/hack-4.19/221-module_exports.patch +++ b/target/linux/generic/hack-4.19/221-module_exports.patch @@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> /* Align . to a 8 byte boundary equals to maximum function alignment. */ #define ALIGN_FUNCTION() . = ALIGN(8) -@@ -372,14 +382,14 @@ +@@ -373,14 +383,14 @@ /* Kernel symbol table: Normal symbols */ \ __ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \ __start___ksymtab = .; \ @@ -47,7 +47,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> __stop___ksymtab_gpl = .; \ } \ \ -@@ -441,7 +451,7 @@ +@@ -442,7 +452,7 @@ \ /* Kernel symbol table: strings */ \ __ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \ @@ -56,7 +56,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> } \ \ /* __*init sections */ \ -@@ -841,6 +851,8 @@ +@@ -844,6 +854,8 @@ EXIT_TEXT \ EXIT_DATA \ EXIT_CALL \ diff --git a/target/linux/generic/hack-4.19/259-regmap_dynamic.patch b/target/linux/generic/hack-4.19/259-regmap_dynamic.patch index af9431e189..c9d88a4e5f 100644 --- a/target/linux/generic/hack-4.19/259-regmap_dynamic.patch +++ b/target/linux/generic/hack-4.19/259-regmap_dynamic.patch @@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> #include <linux/mutex.h> #include <linux/err.h> #include <linux/of.h> -@@ -3040,3 +3041,5 @@ static int __init regmap_initcall(void) +@@ -3032,3 +3033,5 @@ static int __init regmap_initcall(void) return 0; } postcore_initcall(regmap_initcall); diff --git a/target/linux/generic/hack-4.19/641-sch_cake-fix-IP-protocol-handling-in-the-presence-of.patch b/target/linux/generic/hack-4.19/641-sch_cake-fix-IP-protocol-handling-in-the-presence-of.patch index e651743c1d..c962b71068 100644 --- a/target/linux/generic/hack-4.19/641-sch_cake-fix-IP-protocol-handling-in-the-presence-of.patch +++ b/target/linux/generic/hack-4.19/641-sch_cake-fix-IP-protocol-handling-in-the-presence-of.patch @@ -98,7 +98,7 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> bool rev = !skb->_nfct, upd = false; __be32 ip; -- if (tc_skb_protocol(skb) != htons(ETH_P_IP)) +- if (skb_protocol(skb, true) != htons(ETH_P_IP)) + if (cake_skb_proto(skb) != htons(ETH_P_IP)) return false; @@ -107,7 +107,7 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> u16 *buf, buf_; u8 dscp; -- switch (tc_skb_protocol(skb)) { +- switch (skb_protocol(skb, true)) { + switch (cake_skb_proto(skb)) { case htons(ETH_P_IP): buf = skb_header_pointer(skb, offset, sizeof(buf_), &buf_); diff --git a/target/linux/generic/pending-4.19/350-MIPS-Add-missing-EHB-in-mtc0-mfc0-sequence-for-DSPen.patch b/target/linux/generic/pending-4.19/350-MIPS-Add-missing-EHB-in-mtc0-mfc0-sequence-for-DSPen.patch deleted file mode 100644 index 92a22bc655..0000000000 --- a/target/linux/generic/pending-4.19/350-MIPS-Add-missing-EHB-in-mtc0-mfc0-sequence-for-DSPen.patch +++ /dev/null @@ -1,61 +0,0 @@ -From db4603e30effd74d4adb6bcdf73072b2c06fafcd Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Fri, 3 Jul 2020 00:07:15 +0200 -Subject: [PATCH] MIPS: Add missing EHB in mtc0 -> mfc0 sequence for DSPen - -This resolves the hazard between the mtc0 in the change_c0_status() and -the mfc0 in configure_exception_vector(). Without resolving this hazard -configure_exception_vector() could read an old value and would restore -this old value again. This would revert the changes change_c0_status() -did. I checked this by printing out the read_c0_status() at the end of -per_cpu_trap_init() and the ST0_MX is not set without this patch. - -The hazard is documented in the MIPS Architecture Reference Manual Vol. -III: MIPS32/microMIPS32 Privileged Resource Architecture (MD00088), rev -6.03 table 8.1 which includes: - - Producer | Consumer | Hazard - ----------|----------|---------------------------- - mtc0 | mfc0 | any coprocessor 0 register - -I saw this hazard on an Atheros AR9344 rev 2 SoC with a MIPS 74Kc CPU. -There the change_c0_status() function would activate the DSPen by -setting ST0_MX in the c0_status register. This was reverted and then the -system got a DSP exception when the DSP registers were saved in -save_dsp() in the first process switch. The crash looks like this: - -[ 0.089999] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) -[ 0.097796] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) -[ 0.107070] Kernel panic - not syncing: Unexpected DSP exception -[ 0.113470] Rebooting in 1 seconds.. - -We saw this problem in OpenWrt only on the MIPS 74Kc based Atheros SoCs, -not on the 24Kc based SoCs. We only saw it with kernel 5.4 not with -kernel 4.19, in addition we had to use GCC 8.4 or 9.X, with GCC 8.3 it -did not happen. - -In the kernel I bisected this problem to commit 9012d011660e ("compiler: -allow all arches to enable CONFIG_OPTIMIZE_INLINING"), but when this was -reverted it also happened after commit 172dcd935c34b ("MIPS: Always -allocate exception vector for MIPSr2+"). - -Commit 0b24cae4d535 ("MIPS: Add missing EHB in mtc0 -> mfc0 sequence.") -does similar changes to a different file. I am not sure if there are -more places affected by this problem. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> -Cc: <stable@vger.kernel.org> ---- - arch/mips/kernel/traps.c | 1 + - 1 file changed, 1 insertion(+) - ---- a/arch/mips/kernel/traps.c -+++ b/arch/mips/kernel/traps.c -@@ -2096,6 +2096,7 @@ static void configure_status(void) - - change_c0_status(ST0_CU|ST0_MX|ST0_RE|ST0_FR|ST0_BEV|ST0_TS|ST0_KX|ST0_SX|ST0_UX, - status_set); -+ back_to_back_c0_hazard(); - } - - unsigned int hwrena; diff --git a/target/linux/generic/pending-4.19/810-pci_disable_common_quirks.patch b/target/linux/generic/pending-4.19/810-pci_disable_common_quirks.patch index 669229c620..c757aeeaad 100644 --- a/target/linux/generic/pending-4.19/810-pci_disable_common_quirks.patch +++ b/target/linux/generic/pending-4.19/810-pci_disable_common_quirks.patch @@ -33,7 +33,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org> /* * The Mellanox Tavor device gives false positive parity errors. Mark this * device with a broken_parity_status to allow PCI scanning code to "skip" -@@ -3213,6 +3214,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I +@@ -3226,6 +3227,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata); @@ -42,7 +42,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org> /* * Ivytown NTB BAR sizes are misreported by the hardware due to an erratum. * To work around this, query the size it should be configured to by the -@@ -3238,6 +3241,8 @@ static void quirk_intel_ntb(struct pci_d +@@ -3251,6 +3254,8 @@ static void quirk_intel_ntb(struct pci_d DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e08, quirk_intel_ntb); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e0d, quirk_intel_ntb); @@ -51,7 +51,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org> /* * Some BIOS implementations leave the Intel GPU interrupts enabled, even * though no one is handling them (e.g., if the i915 driver is never -@@ -3276,6 +3281,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN +@@ -3289,6 +3294,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq); DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq); diff --git a/target/linux/mvebu/patches-4.19/561-mvebu-armada-38x-enable-libata-leds.patch b/target/linux/mvebu/patches-4.19/561-mvebu-armada-38x-enable-libata-leds.patch index 3f9ad364de..208703b0ba 100644 --- a/target/linux/mvebu/patches-4.19/561-mvebu-armada-38x-enable-libata-leds.patch +++ b/target/linux/mvebu/patches-4.19/561-mvebu-armada-38x-enable-libata-leds.patch @@ -1,6 +1,6 @@ --- a/arch/arm/mach-mvebu/Kconfig +++ b/arch/arm/mach-mvebu/Kconfig -@@ -68,6 +68,7 @@ +@@ -68,6 +68,7 @@ config MACH_ARMADA_38X select HAVE_SMP select MACH_MVEBU_V7 select PINCTRL_ARMADA_38X |