[OpenWrt-Devel] [RFC 05/27] kernel: Make the patches apply on top of 4.19

Hauke Mehrtens hauke at hauke-m.de
Tue Nov 27 18:14:27 EST 2018


This makes the patches which were just copied in the previous commit
apply on top of kernel 4.19.

The patches in the backports-4.19 folder were checked if they are really
in kernel 4.19 based on the title and only removed if they were found in
the upstream kernel.

The following additional patches form the pending folder went into
upstream Linux 4.19:
pending-4.19/171-usb-dwc2-Fix-inefficient-copy-of-unaligned-buffers.patch
pending-4.19/190-2-5-e1000e-Fix-wrong-comment-related-to-link-detection.patch
pending-4.19/478-mtd-spi-nor-Add-support-for-XM25QH64A-and-XM25QH128A.patch
pending-4.19/479-mtd-spi-nor-add-eon-en25qh32.patch
pending-4.19/950-tty-serial-exar-generalize-rs485-setup.patch

Bigger changes were introduced to the m25p80 spi nor driver, as far as I
saw it in the new code, it now has the functionality provided in this
patch:
pending-4.19/450-mtd-m25p80-allow-fallback-from-spi_flash_read-to-reg.patch

Something similar to this patch is in upstream 4.19, but this needs
investigation:
hack-4.19/220-gc_sections.patch

These patches also need investigation:
hack-4.19/321-powerpc_crtsavres_prereq.patch
hack-4.19/647-netfilter-flow-acct.patch

The MIPS DMA API changed a lot this needs probably a rewrite:
pending-4.19/340-MIPS-mm-remove-mips_dma_mapping_error.patch
pending-4.19/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch

This is based on patchset from Marko Ratkaj <marko.ratkaj at sartura.hr>

Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 include/kernel-version.mk                          |    2 +
 .../backport-4.19/011-kbuild-export-SUBARCH.patch  |   16 +-
 ...macro-for-controlling-warnings-to-linux-c.patch |  140 --
 ...tribute-alias-warning-for-SYSCALL_DEFINEx.patch |   88 --
 .../020-backport_netfilter_rtcache.patch           |    4 +-
 .../025-tcp-allow-drivers-to-tweak-TSQ-logic.patch |   85 --
 ...ial-option-fix-dwm-158-3g-modem-interface.patch |   42 -
 ...d-support-for-host-mode-external-vbus-sup.patch |  109 --
 ...wc2-dwc2_vbus_supply_init-fix-error-check.patch |   55 -
 ...de-adding-master-MTD-out-of-mtd_add_devic.patch |   74 -
 ...-get-rid-of-the-mtd_add_device_partitions.patch |   93 --
 ...ons-add-of_match_table-parser-matching-fo.patch |  200 ---
 ...ofpart-parser-to-fixed-partitions-as-it-f.patch |   74 -
 ...-add-of_match_table-with-fixed-partitions.patch |   44 -
 ...de-adding-registering-partitions-to-the-p.patch |  168 ---
 ...xpart-improve-handling-TRX-partition-size.patch |   70 -
 ...part-add-of_match_table-with-a-new-DT-bin.patch |   39 -
 ...-trx-add-of_match_table-with-the-new-DT-b.patch |   37 -
 ...ons-use-DT-info-for-parsing-partitions-wi.patch |  102 --
 ...nable-master-mode-for-BCM54210E-and-B5021.patch |   50 -
 ...adcom-support-new-device-flag-for-setting.patch |   54 -
 ...-Enable-working-over-slow-can_sleep-GPIOs.patch |   84 --
 ...net-bridge-add-support-for-port-isolation.patch |  145 --
 ...er.h-prevent-redefinition-of-struct-ethhd.patch |   55 -
 ...lter-add-defines-for-arp-decnet-max-hooks.patch |   67 -
 ...ore-make-nf_unregister_net_hooks-simple-w.patch |   91 --
 ...ore-remove-synchronize_net-call-if-nfqueu.patch |  116 --
 ...6-netfilter-core-free-hooks-with-call_rcu.patch |  132 --
 ...reduce-size-of-hook-entry-point-locations.patch |  200 ---
 ...reduce-hook-array-sizes-to-what-is-needed.patch |   95 --
 ...on-t-allocate-space-for-decnet-hooks-unle.patch |   67 -
 ...on-t-allocate-space-for-arp-bridge-hooks-.patch |  165 ---
 ...ore-pass-hook-number-family-and-device-to.patch |   98 --
 ....16-netfilter-core-add-nf_remove_net_hook.patch |   44 -
 ...ore-pass-family-as-parameter-to-nf_remove.patch |   51 -
 ...ore-support-for-NFPROTO_INET-hook-registr.patch |  129 --
 ...f_tables-explicit-nft_set_pktinfo-call-fr.patch |  291 ----
 ...ore-only-allow-one-nat-hook-per-hook-poin.patch |  146 --
 ...f_tables_inet-don-t-use-multihook-infrast.patch |  161 ---
 ...f_tables-remove-multihook-chains-and-fami.patch |  390 ------
 ...ove-checksum-indirection-to-struct-nf_ipv.patch |  171 ---
 ...ove-checksum_partial-indirection-to-struc.patch |  204 ---
 ...emove-saveroute-indirection-in-struct-nf_.patch |  232 ----
 ...ove-route-indirection-to-struct-nf_ipv6_o.patch |  349 -----
 ...ove-reroute-indirection-to-struct-nf_ipv6.patch |  223 ---
 ...emove-route_key_size-field-in-struct-nf_a.patch |   94 --
 ...emove-struct-nf_afinfo-and-its-helper-fun.patch |  173 ---
 ...ter-nf_tables_arp-don-t-set-forward-chain.patch |   20 -
 ...f_tables-remove-hooks-from-family-definit.patch |  233 ----
 ...emove-defensive-check-on-malformed-packet.patch |  302 ----
 .../314-v4.16-netfilter-meta-secpath-support.patch |  101 --
 ...onntrack-move-nf_ct_netns_-get-put-to-cor.patch |  142 --
 ...r-nf_conntrack-add-IPS_OFFLOAD-status-bit.patch |  169 ---
 ...nf_tables-add-flow-table-netlink-frontend.patch | 1079 ---------------
 ...ter-add-generic-flow-table-infrastructure.patch |  586 --------
 ....16-netfilter-flow-table-support-for-IPv4.patch |  334 -----
 ....16-netfilter-flow-table-support-for-IPv6.patch |  354 -----
 ...low-table-support-for-the-mixed-IPv4-IPv6.patch |  141 --
 ...tfilter-nf_tables-flow-offload-expression.patch |  332 -----
 ...f_tables-remove-nhooks-field-from-struct-.patch |  113 --
 ...f_tables-fix-a-typo-in-nf_tables_getflowt.patch |   22 -
 ...r-improve-flow-table-Kconfig-dependencies.patch |  106 --
 ...f_tables-remove-flag-field-from-struct-nf.patch |   59 -
 ...f_tables-no-need-for-struct-nft_af_info-t.patch |   80 --
 ...f_tables-remove-struct-nft_af_info-parame.patch |   60 -
 ...f_tables-fix-potential-NULL-ptr-deref-in-.patch |   30 -
 ...f_tables-add-single-table-list-for-all-fa.patch | 1450 --------------------
 ...15-netfilter-exit_net-cleanup-check-added.patch |  100 --
 ...lter-nf_tables-get-rid-of-pernet-families.patch |  598 --------
 ...f_tables-get-rid-of-struct-nft_af_info-ab.patch | 1204 ----------------
 ...ft_flow_offload-wait-for-garbage-collecto.patch |   47 -
 ...ft_flow_offload-no-need-to-flush-entries-.patch |   29 -
 ...ft_flow_offload-move-flowtable-cleanup-ro.patch |   97 --
 ...16-netfilter-nf_tables-fix-flowtable-free.patch |  140 --
 ...ft_flow_offload-handle-netdevice-events-f.patch |    8 +-
 ...f_tables-allocate-handle-and-delete-objec.patch |  468 -------
 ...f_flow_offload-fix-use-after-free-and-a-r.patch |   95 --
 ...lowtable-infrastructure-depends-on-NETFIL.patch |   73 -
 ...v4.16-netfilter-remove-duplicated-include.patch |   29 -
 ...f_flow_table-use-IP_CT_DIR_-values-for-FL.patch |   35 -
 ...nf_flow_table-clean-up-flow_offload_alloc.patch |  118 --
 ...4.18-ipv6-make-ip6_dst_mtu_forward-inline.patch |   80 --
 ...f_flow_table-cache-mtu-in-struct-flow_off.patch |  145 --
 ...f_flow_table-rename-nf_flow_table.c-to-nf.patch |  952 -------------
 ...f_flow_table-move-ipv4-offload-hook-code-.patch |  522 -------
 ...f_flow_table-move-ip-header-check-out-of-.patch |   32 -
 ...f_flow_table-move-ipv6-offload-hook-code-.patch |  483 -------
 ...f_flow_table-relax-mixed-ipv4-ipv6-flowta.patch |   23 -
 ...f_flow_table-move-init-code-to-nf_flow_ta.patch |  298 ----
 ...f_flow_table-fix-priv-pointer-for-netdev-.patch |   22 -
 ...f_flow_table-track-flow-tables-in-nf_flow.patch |  114 --
 ...f_flow_table-make-flow_offload_dead-inlin.patch |   38 -
 ...f_flow_table-add-a-new-flow-state-for-tea.patch |   83 --
 ...f_flow_table-in-flow_offload_lookup-skip-.patch |   36 -
 ...f_flow_table-add-support-for-sending-flow.patch |   99 --
 ...f_flow_table-tear-down-TCP-flows-if-RST-o.patch |   81 --
 ...f_flow_table-fix-checksum-when-handling-D.patch |   19 -
 ...f_flow_table-clean-up-and-fix-dst-handlin.patch |    8 +-
 ...f_flow_table-add-missing-condition-for-TC.patch |   48 -
 ...f_flow_table-fix-offloading-connections-w.patch |   23 -
 ...etfilter-nf_flow_table-attach-dst-to-skbs.patch |   49 -
 ...f_flow_table-fix-offloaded-connection-tim.patch |   10 +-
 ...f_flow_table-fix-up-ct-state-of-flows-aft.patch |    2 +-
 ...6-leds-trigger-Introduce-a-NETDEV-trigger.patch |  588 --------
 ...e-re-linking-of-inodes-correctly-while-re.patch |   10 +-
 target/linux/generic/config-4.19                   |  258 ++++
 .../generic/files/drivers/net/phy/swconfig_leds.c  |   23 +-
 .../generic/hack-4.19/202-reduce_module_size.patch |    4 +-
 .../linux/generic/hack-4.19/204-module_strip.patch |   45 +-
 .../generic/hack-4.19/207-disable-modorder.patch   |    6 +-
 .../hack-4.19/210-darwin_scripts_include.patch     |   12 -
 .../hack-4.19/211-host_tools_portability.patch     |    2 +-
 .../linux/generic/hack-4.19/220-gc_sections.patch  |  258 ----
 .../generic/hack-4.19/221-module_exports.patch     |   34 +-
 .../hack-4.19/230-openwrt_lzma_options.patch       |    8 +-
 .../generic/hack-4.19/250-netfilter_depends.patch  |    4 +-
 .../generic/hack-4.19/251-sound_kconfig.patch      |   18 +-
 .../generic/hack-4.19/259-regmap_dynamic.patch     |   14 +-
 .../hack-4.19/260-crypto_test_dependencies.patch   |    6 +-
 .../linux/generic/hack-4.19/280-rfkill-stubs.patch |    2 +-
 .../hack-4.19/301-mips_image_cmdline_hack.patch    |    2 +-
 .../hack-4.19/321-powerpc_crtsavres_prereq.patch   |   38 -
 .../640-bridge-only-accept-EAP-locally.patch       |    4 +-
 .../hack-4.19/647-netfilter-flow-acct.patch        |   70 -
 .../650-netfilter-add-xt_OFFLOAD-target.patch      |   16 +-
 .../hack-4.19/651-wireless_mesh_header.patch       |    2 +-
 .../generic/hack-4.19/660-fq_codel_defaults.patch  |    2 +-
 .../hack-4.19/661-use_fq_codel_by_default.patch    |   16 +-
 .../generic/hack-4.19/662-remove_pfifo_fast.patch  |  172 ++-
 .../hack-4.19/700-swconfig_switch_drivers.patch    |    6 +-
 .../hack-4.19/702-phy_add_aneg_done_function.patch |    4 +-
 .../linux/generic/hack-4.19/721-phy_packets.patch  |   30 +-
 .../hack-4.19/773-bgmac-add-srab-switch.patch      |    6 +-
 .../generic/hack-4.19/835-misc-owl_loader.patch    |    6 +-
 .../generic/hack-4.19/901-debloat_sock_diag.patch  |   20 +-
 .../linux/generic/hack-4.19/902-debloat_proc.patch |  126 +-
 .../generic/hack-4.19/904-debloat_dma_buf.patch    |    6 +-
 .../generic/hack-4.19/910-kobject_uevent.patch     |    2 +-
 .../911-kobject_add_broadcast_uevent.patch         |    8 +-
 ...1-always-create-console-node-in-initramfs.patch |    6 +-
 target/linux/generic/hack-4.19/930-crashlog.patch  |   22 +-
 ...t-add-generic-parsing-of-linux-part-probe.patch |    3 +-
 ...-fix-problem-with-platfom-data-in-w1-gpio.patch |   24 +-
 ...rocess-negative-stack-offsets-on-stack-tr.patch |    2 +-
 .../pending-4.19/110-ehci_hcd_ignore_oc.patch      |   12 +-
 ...c_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch |    2 +-
 ...o_set_value_cansleep-for-setting-chipsele.patch |    2 +-
 ...-bridge_allow_receiption_on_disabled_port.patch |    4 +-
 ...t-add-generic-parsing-of-linux-part-probe.patch |   19 +-
 ...Fix-inefficient-copy-of-unaligned-buffers.patch |   50 -
 ...180-net-phy-at803x-add-support-for-AT8032.patch |   16 +-
 ...x-wrong-comment-related-to-link-detection.patch |   43 -
 .../pending-4.19/201-extra_optimization.patch      |    2 +-
 .../pending-4.19/203-kallsyms_uncompressed.patch   |   22 +-
 .../pending-4.19/205-backtrace_module_info.patch   |    6 +-
 .../pending-4.19/220-optimize_inlining.patch       |   18 +-
 .../pending-4.19/300-mips_expose_boot_raw.patch    |    4 +-
 .../pending-4.19/304-mips_disable_fpu.patch        |    4 +-
 .../pending-4.19/307-mips_highmem_offset.patch     |    2 +-
 .../generic/pending-4.19/308-mips32r2_tune.patch   |    2 +-
 .../pending-4.19/332-arc-add-OWRTDTB-section.patch |    4 +-
 ...340-MIPS-mm-remove-mips_dma_mapping_error.patch |   32 -
 ...m-remove-no-op-dma_map_ops-where-possible.patch |  140 --
 .../400-mtd-add-rootfs-split-support.patch         |    8 +-
 ...port-for-different-partition-parser-types.patch |    4 +-
 ...mtd-parsers-for-rootfs-and-firmware-split.patch |    4 +-
 .../403-mtd-hook-mtdsplit-to-Kbuild.patch          |    2 +-
 .../404-mtd-add-more-helper-functions.patch        |    6 +-
 .../411-mtd-partial_eraseblock_write.patch         |  106 +-
 .../412-mtd-partial_eraseblock_unlock.patch        |    2 +-
 .../430-mtd-add-myloader-partition-parser.patch    |    2 +-
 .../generic/pending-4.19/440-block2mtd_init.patch  |   20 +-
 .../generic/pending-4.19/441-block2mtd_probe.patch |    8 +-
 ...allow-fallback-from-spi_flash_read-to-reg.patch |   36 -
 ...-allow-NOR-driver-to-write-fewer-bytes-th.patch |    4 +-
 .../460-mtd-cfi_cmdset_0002-no-erase_suspend.patch |    2 +-
 ..._cmdset_0002-add-buffer-write-cmd-timeout.patch |    2 +-
 ...465-m25p80-mx-disable-software-protection.patch |   14 +-
 ...spi-nor-fix-Spansion-regressions-aliased-.patch |   14 +-
 ...-support-limiting-4K-sectors-support-base.patch |    2 +-
 ...mtd-spi-nor-Add-Winbond-w25q128jv-support.patch |    2 +-
 .../476-mtd-spi-nor-add-eon-en25q128.patch         |    4 +-
 .../477-mtd-add-spi-nor-add-mx25u3235f.patch       |    2 +-
 ...-Add-support-for-XM25QH64A-and-XM25QH128A.patch |   30 -
 .../479-mtd-spi-nor-add-eon-en25qh32.patch         |   10 -
 .../480-mtd-set-rootfs-to-be-root-dev.patch        |    2 +-
 ...tach-mtd-device-named-ubi-or-data-on-boot.patch |    4 +-
 ...-mounting-ubi0-rootfs-in-init-do_mounts.c.patch |    4 +-
 .../494-mtd-ubi-add-EOF-marker-support.patch       |    2 +-
 .../495-mtd-core-add-get_mtd_device_by_node.patch  |    4 +-
 ...tdconcat-add-dt-driver-for-concat-devices.patch |    2 +-
 .../530-jffs2_make_lzma_available.patch            |    6 +-
 ...1-ubifs-fix-default-compression-selection.patch |    8 +-
 ...ption-to-create-UBI-FS-version-4-on-empty.patch |    2 +-
 .../600-netfilter_conntrack_flush.patch            |   43 +-
 ...610-netfilter_match_bypass_default_checks.patch |   12 +-
 .../611-netfilter_match_bypass_default_table.patch |   63 +-
 .../612-netfilter_match_reduce_memory_access.patch |    2 +-
 .../613-netfilter_optional_tcp_window_check.patch  |    6 +-
 .../pending-4.19/616-net_optimize_xfrm_calls.patch |    4 +-
 ...ed-codel-do-not-defer-queue-length-update.patch |    4 +-
 .../pending-4.19/630-packet_socket_type.patch      |   16 +-
 ...f_flow_table-add-hardware-offload-support.patch |   47 +-
 ...f_flow_table-support-hw-offload-through-v.patch |    8 +-
 ...8021q-support-hardware-flow-table-offload.patch |    4 +-
 ...ridge-support-hardware-flow-table-offload.patch |    4 +-
 ...pppoe-support-hardware-flow-table-offload.patch |    6 +-
 ...f_flow_table-rework-hardware-offload-time.patch |    2 +-
 .../pending-4.19/655-increase_skb_pad.patch        |    2 +-
 .../666-Add-support-for-MAP-E-FMRs-mesh-mode.patch |   28 +-
 ...jecting-with-source-address-failed-policy.patch |   86 +-
 ...-defines-for-_POLICY_FAILED-until-all-cod.patch |    4 +-
 ...80-NET-skip-GRO-for-foreign-MAC-addresses.patch |   26 +-
 .../681-NET-add-of_get_mac_address_mtd.patch       |    8 +-
 .../generic/pending-4.19/701-phy_extension.patch   |    2 +-
 ...-add-detach-callback-to-struct-phy_driver.patch |    4 +-
 ...t-phy-at803x-allow-to-configure-via-pdata.patch |   12 +-
 .../735-net-phy-at803x-fix-at8033-sgmii-mode.patch |    2 +-
 ...-net-phy-at803x-allow-to-configure-via-dt.patch |    6 +-
 .../810-pci_disable_common_quirks.patch            |   36 +-
 .../811-pci_disable_usb_common_quirks.patch        |   18 +-
 .../generic/pending-4.19/834-ledtrig-libata.patch  |   12 +-
 .../generic/pending-4.19/920-mangle_bootargs.patch |    6 +-
 ...50-tty-serial-exar-generalize-rs485-setup.patch |   76 -
 224 files changed, 1032 insertions(+), 19544 deletions(-)
 delete mode 100644 target/linux/generic/backport-4.19/012-kbuild-add-macro-for-controlling-warnings-to-linux-c.patch
 delete mode 100644 target/linux/generic/backport-4.19/013-disable-Wattribute-alias-warning-for-SYSCALL_DEFINEx.patch
 delete mode 100644 target/linux/generic/backport-4.19/025-tcp-allow-drivers-to-tweak-TSQ-logic.patch
 delete mode 100644 target/linux/generic/backport-4.19/030-USB-serial-option-fix-dwm-158-3g-modem-interface.patch
 delete mode 100644 target/linux/generic/backport-4.19/030-v4.17-0001-usb-dwc2-add-support-for-host-mode-external-vbus-sup.patch
 delete mode 100644 target/linux/generic/backport-4.19/030-v4.17-0002-usb-dwc2-dwc2_vbus_supply_init-fix-error-check.patch
 delete mode 100644 target/linux/generic/backport-4.19/040-v4.17-0001-mtd-move-code-adding-master-MTD-out-of-mtd_add_devic.patch
 delete mode 100644 target/linux/generic/backport-4.19/040-v4.17-0002-mtd-get-rid-of-the-mtd_add_device_partitions.patch
 delete mode 100644 target/linux/generic/backport-4.19/041-v4.17-0001-mtd-partitions-add-of_match_table-parser-matching-fo.patch
 delete mode 100644 target/linux/generic/backport-4.19/041-v4.17-0002-mtd-rename-ofpart-parser-to-fixed-partitions-as-it-f.patch
 delete mode 100644 target/linux/generic/backport-4.19/041-v4.17-0003-mtd-ofpart-add-of_match_table-with-fixed-partitions.patch
 delete mode 100644 target/linux/generic/backport-4.19/042-v4.18-0001-mtd-move-code-adding-registering-partitions-to-the-p.patch
 delete mode 100644 target/linux/generic/backport-4.19/043-v4.18-mtd-bcm47xxpart-improve-handling-TRX-partition-size.patch
 delete mode 100644 target/linux/generic/backport-4.19/044-v4.18-mtd-bcm47xxpart-add-of_match_table-with-a-new-DT-bin.patch
 delete mode 100644 target/linux/generic/backport-4.19/045-v4.19-mtd-parsers-trx-add-of_match_table-with-the-new-DT-b.patch
 delete mode 100644 target/linux/generic/backport-4.19/046-v4.19-mtd-partitions-use-DT-info-for-parsing-partitions-wi.patch
 delete mode 100644 target/linux/generic/backport-4.19/071-v4.15-0001-net-bgmac-enable-master-mode-for-BCM54210E-and-B5021.patch
 delete mode 100644 target/linux/generic/backport-4.19/076-v4.15-0001-net-phy-broadcom-support-new-device-flag-for-setting.patch
 delete mode 100644 target/linux/generic/backport-4.19/085-v4.16-0001-i2c-gpio-Enable-working-over-slow-can_sleep-GPIOs.patch
 delete mode 100644 target/linux/generic/backport-4.19/090-net-bridge-add-support-for-port-isolation.patch
 delete mode 100644 target/linux/generic/backport-4.19/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch
 delete mode 100644 target/linux/generic/backport-4.19/289-v4.16-netfilter-add-defines-for-arp-decnet-max-hooks.patch
 delete mode 100644 target/linux/generic/backport-4.19/290-v4.16-netfilter-core-make-nf_unregister_net_hooks-simple-w.patch
 delete mode 100644 target/linux/generic/backport-4.19/291-v4.16-netfilter-core-remove-synchronize_net-call-if-nfqueu.patch
 delete mode 100644 target/linux/generic/backport-4.19/292-v4.16-netfilter-core-free-hooks-with-call_rcu.patch
 delete mode 100644 target/linux/generic/backport-4.19/293-v4.16-netfilter-reduce-size-of-hook-entry-point-locations.patch
 delete mode 100644 target/linux/generic/backport-4.19/294-v4.16-netfilter-reduce-hook-array-sizes-to-what-is-needed.patch
 delete mode 100644 target/linux/generic/backport-4.19/295-v4.16-netfilter-don-t-allocate-space-for-decnet-hooks-unle.patch
 delete mode 100644 target/linux/generic/backport-4.19/296-v4.16-netfilter-don-t-allocate-space-for-arp-bridge-hooks-.patch
 delete mode 100644 target/linux/generic/backport-4.19/297-v4.16-netfilter-core-pass-hook-number-family-and-device-to.patch
 delete mode 100644 target/linux/generic/backport-4.19/298-v4.16-netfilter-core-add-nf_remove_net_hook.patch
 delete mode 100644 target/linux/generic/backport-4.19/298-v4.16-netfilter-core-pass-family-as-parameter-to-nf_remove.patch
 delete mode 100644 target/linux/generic/backport-4.19/299-v4.16-netfilter-core-support-for-NFPROTO_INET-hook-registr.patch
 delete mode 100644 target/linux/generic/backport-4.19/300-v4.16-netfilter-nf_tables-explicit-nft_set_pktinfo-call-fr.patch
 delete mode 100644 target/linux/generic/backport-4.19/301-v4.16-netfilter-core-only-allow-one-nat-hook-per-hook-poin.patch
 delete mode 100644 target/linux/generic/backport-4.19/302-v4.16-netfilter-nf_tables_inet-don-t-use-multihook-infrast.patch
 delete mode 100644 target/linux/generic/backport-4.19/303-v4.16-netfilter-nf_tables-remove-multihook-chains-and-fami.patch
 delete mode 100644 target/linux/generic/backport-4.19/304-v4.16-netfilter-move-checksum-indirection-to-struct-nf_ipv.patch
 delete mode 100644 target/linux/generic/backport-4.19/305-v4.16-netfilter-move-checksum_partial-indirection-to-struc.patch
 delete mode 100644 target/linux/generic/backport-4.19/306-v4.16-netfilter-remove-saveroute-indirection-in-struct-nf_.patch
 delete mode 100644 target/linux/generic/backport-4.19/307-v4.16-netfilter-move-route-indirection-to-struct-nf_ipv6_o.patch
 delete mode 100644 target/linux/generic/backport-4.19/308-v4.16-netfilter-move-reroute-indirection-to-struct-nf_ipv6.patch
 delete mode 100644 target/linux/generic/backport-4.19/309-v4.16-netfilter-remove-route_key_size-field-in-struct-nf_a.patch
 delete mode 100644 target/linux/generic/backport-4.19/310-v4.16-netfilter-remove-struct-nf_afinfo-and-its-helper-fun.patch
 delete mode 100644 target/linux/generic/backport-4.19/311-v4.16-netfilter-nf_tables_arp-don-t-set-forward-chain.patch
 delete mode 100644 target/linux/generic/backport-4.19/312-v4.16-netfilter-nf_tables-remove-hooks-from-family-definit.patch
 delete mode 100644 target/linux/generic/backport-4.19/313-v4.16-netfilter-remove-defensive-check-on-malformed-packet.patch
 delete mode 100644 target/linux/generic/backport-4.19/314-v4.16-netfilter-meta-secpath-support.patch
 delete mode 100644 target/linux/generic/backport-4.19/315-v4.15-netfilter-conntrack-move-nf_ct_netns_-get-put-to-cor.patch
 delete mode 100644 target/linux/generic/backport-4.19/320-v4.16-netfilter-nf_conntrack-add-IPS_OFFLOAD-status-bit.patch
 delete mode 100644 target/linux/generic/backport-4.19/321-v4.16-netfilter-nf_tables-add-flow-table-netlink-frontend.patch
 delete mode 100644 target/linux/generic/backport-4.19/322-v4.16-netfilter-add-generic-flow-table-infrastructure.patch
 delete mode 100644 target/linux/generic/backport-4.19/323-v4.16-netfilter-flow-table-support-for-IPv4.patch
 delete mode 100644 target/linux/generic/backport-4.19/324-v4.16-netfilter-flow-table-support-for-IPv6.patch
 delete mode 100644 target/linux/generic/backport-4.19/325-v4.16-netfilter-flow-table-support-for-the-mixed-IPv4-IPv6.patch
 delete mode 100644 target/linux/generic/backport-4.19/326-v4.16-netfilter-nf_tables-flow-offload-expression.patch
 delete mode 100644 target/linux/generic/backport-4.19/327-v4.16-netfilter-nf_tables-remove-nhooks-field-from-struct-.patch
 delete mode 100644 target/linux/generic/backport-4.19/328-v4.16-netfilter-nf_tables-fix-a-typo-in-nf_tables_getflowt.patch
 delete mode 100644 target/linux/generic/backport-4.19/329-v4.16-netfilter-improve-flow-table-Kconfig-dependencies.patch
 delete mode 100644 target/linux/generic/backport-4.19/330-v4.16-netfilter-nf_tables-remove-flag-field-from-struct-nf.patch
 delete mode 100644 target/linux/generic/backport-4.19/331-v4.16-netfilter-nf_tables-no-need-for-struct-nft_af_info-t.patch
 delete mode 100644 target/linux/generic/backport-4.19/332-v4.16-netfilter-nf_tables-remove-struct-nft_af_info-parame.patch
 delete mode 100644 target/linux/generic/backport-4.19/334-v4.15-netfilter-nf_tables-fix-potential-NULL-ptr-deref-in-.patch
 delete mode 100644 target/linux/generic/backport-4.19/335-v4.16-netfilter-nf_tables-add-single-table-list-for-all-fa.patch
 delete mode 100644 target/linux/generic/backport-4.19/336-v4.15-netfilter-exit_net-cleanup-check-added.patch
 delete mode 100644 target/linux/generic/backport-4.19/337-v4.16-netfilter-nf_tables-get-rid-of-pernet-families.patch
 delete mode 100644 target/linux/generic/backport-4.19/338-v4.16-netfilter-nf_tables-get-rid-of-struct-nft_af_info-ab.patch
 delete mode 100644 target/linux/generic/backport-4.19/339-v4.16-netfilter-nft_flow_offload-wait-for-garbage-collecto.patch
 delete mode 100644 target/linux/generic/backport-4.19/340-v4.16-netfilter-nft_flow_offload-no-need-to-flush-entries-.patch
 delete mode 100644 target/linux/generic/backport-4.19/341-v4.16-netfilter-nft_flow_offload-move-flowtable-cleanup-ro.patch
 delete mode 100644 target/linux/generic/backport-4.19/342-v4.16-netfilter-nf_tables-fix-flowtable-free.patch
 delete mode 100644 target/linux/generic/backport-4.19/344-v4.16-netfilter-nf_tables-allocate-handle-and-delete-objec.patch
 delete mode 100644 target/linux/generic/backport-4.19/345-v4.16-netfilter-nf_flow_offload-fix-use-after-free-and-a-r.patch
 delete mode 100644 target/linux/generic/backport-4.19/346-v4.16-netfilter-flowtable-infrastructure-depends-on-NETFIL.patch
 delete mode 100644 target/linux/generic/backport-4.19/347-v4.16-netfilter-remove-duplicated-include.patch
 delete mode 100644 target/linux/generic/backport-4.19/348-v4.18-netfilter-nf_flow_table-use-IP_CT_DIR_-values-for-FL.patch
 delete mode 100644 target/linux/generic/backport-4.19/349-v4.18-netfilter-nf_flow_table-clean-up-flow_offload_alloc.patch
 delete mode 100644 target/linux/generic/backport-4.19/350-v4.18-ipv6-make-ip6_dst_mtu_forward-inline.patch
 delete mode 100644 target/linux/generic/backport-4.19/351-v4.18-netfilter-nf_flow_table-cache-mtu-in-struct-flow_off.patch
 delete mode 100644 target/linux/generic/backport-4.19/352-v4.18-netfilter-nf_flow_table-rename-nf_flow_table.c-to-nf.patch
 delete mode 100644 target/linux/generic/backport-4.19/353-v4.18-netfilter-nf_flow_table-move-ipv4-offload-hook-code-.patch
 delete mode 100644 target/linux/generic/backport-4.19/354-v4.18-netfilter-nf_flow_table-move-ip-header-check-out-of-.patch
 delete mode 100644 target/linux/generic/backport-4.19/355-v4.18-netfilter-nf_flow_table-move-ipv6-offload-hook-code-.patch
 delete mode 100644 target/linux/generic/backport-4.19/356-v4.18-netfilter-nf_flow_table-relax-mixed-ipv4-ipv6-flowta.patch
 delete mode 100644 target/linux/generic/backport-4.19/357-v4.18-netfilter-nf_flow_table-move-init-code-to-nf_flow_ta.patch
 delete mode 100644 target/linux/generic/backport-4.19/358-v4.18-netfilter-nf_flow_table-fix-priv-pointer-for-netdev-.patch
 delete mode 100644 target/linux/generic/backport-4.19/359-v4.18-netfilter-nf_flow_table-track-flow-tables-in-nf_flow.patch
 delete mode 100644 target/linux/generic/backport-4.19/360-v4.18-netfilter-nf_flow_table-make-flow_offload_dead-inlin.patch
 delete mode 100644 target/linux/generic/backport-4.19/361-v4.18-netfilter-nf_flow_table-add-a-new-flow-state-for-tea.patch
 delete mode 100644 target/linux/generic/backport-4.19/362-v4.18-netfilter-nf_flow_table-in-flow_offload_lookup-skip-.patch
 delete mode 100644 target/linux/generic/backport-4.19/363-v4.18-netfilter-nf_flow_table-add-support-for-sending-flow.patch
 delete mode 100644 target/linux/generic/backport-4.19/364-v4.18-netfilter-nf_flow_table-tear-down-TCP-flows-if-RST-o.patch
 delete mode 100644 target/linux/generic/backport-4.19/365-v4.16-netfilter-nf_flow_table-fix-checksum-when-handling-D.patch
 delete mode 100644 target/linux/generic/backport-4.19/367-v4.18-netfilter-nf_flow_table-add-missing-condition-for-TC.patch
 delete mode 100644 target/linux/generic/backport-4.19/368-v4.18-netfilter-nf_flow_table-fix-offloading-connections-w.patch
 delete mode 100644 target/linux/generic/backport-4.19/369-v4.18-netfilter-nf_flow_table-attach-dst-to-skbs.patch
 delete mode 100644 target/linux/generic/backport-4.19/400-v4.16-leds-trigger-Introduce-a-NETDEV-trigger.patch
 delete mode 100644 target/linux/generic/hack-4.19/220-gc_sections.patch
 delete mode 100644 target/linux/generic/hack-4.19/321-powerpc_crtsavres_prereq.patch
 delete mode 100644 target/linux/generic/hack-4.19/647-netfilter-flow-acct.patch
 delete mode 100644 target/linux/generic/pending-4.19/171-usb-dwc2-Fix-inefficient-copy-of-unaligned-buffers.patch
 delete mode 100644 target/linux/generic/pending-4.19/190-2-5-e1000e-Fix-wrong-comment-related-to-link-detection.patch
 delete mode 100644 target/linux/generic/pending-4.19/340-MIPS-mm-remove-mips_dma_mapping_error.patch
 delete mode 100644 target/linux/generic/pending-4.19/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch
 delete mode 100644 target/linux/generic/pending-4.19/450-mtd-m25p80-allow-fallback-from-spi_flash_read-to-reg.patch
 delete mode 100644 target/linux/generic/pending-4.19/478-mtd-spi-nor-Add-support-for-XM25QH64A-and-XM25QH128A.patch
 delete mode 100644 target/linux/generic/pending-4.19/479-mtd-spi-nor-add-eon-en25qh32.patch
 delete mode 100644 target/linux/generic/pending-4.19/950-tty-serial-exar-generalize-rs485-setup.patch

diff --git a/include/kernel-version.mk b/include/kernel-version.mk
index 3e99587a11..b61cfcbc8b 100644
--- a/include/kernel-version.mk
+++ b/include/kernel-version.mk
@@ -5,10 +5,12 @@ LINUX_RELEASE?=1
 LINUX_VERSION-3.18 = .126
 LINUX_VERSION-4.9 = .138
 LINUX_VERSION-4.14 = .82
+LINUX_VERSION-4.19 = .5
 
 LINUX_KERNEL_HASH-3.18.126 = 11a53ccd72f1ee67fe5ea014fdfb0283528f452bb50dc0a2f1b9675b7e8554f9
 LINUX_KERNEL_HASH-4.9.138 = 92301242601d50854b173a3fdec318480e24fc86f32102003a9ed7108fab21b7
 LINUX_KERNEL_HASH-4.14.82 = a790a2e6f6a76d70decec91d1b7bcfba90f821b076273da070f6e0e1e6391dad
+LINUX_KERNEL_HASH-4.19.5 = 8c839ec29cce7eb0e8ef7eaa10d1eb9d84d2be2521e352fb4f9414e76856ef75
 
 remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
 sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
diff --git a/target/linux/generic/backport-4.19/011-kbuild-export-SUBARCH.patch b/target/linux/generic/backport-4.19/011-kbuild-export-SUBARCH.patch
index 3df01c34b1..b5f654906a 100644
--- a/target/linux/generic/backport-4.19/011-kbuild-export-SUBARCH.patch
+++ b/target/linux/generic/backport-4.19/011-kbuild-export-SUBARCH.patch
@@ -10,14 +10,14 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/Makefile
 +++ b/Makefile
-@@ -428,8 +428,8 @@ KBUILD_CFLAGS_MODULE  := -DMODULE
- KBUILD_LDFLAGS_MODULE := -T $(srctree)/scripts/module-common.lds
+@@ -431,8 +431,8 @@ KBUILD_LDFLAGS_MODULE := -T $(srctree)/s
+ KBUILD_LDFLAGS :=
  GCC_PLUGINS_CFLAGS :=
  
--export ARCH SRCARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC
--export CPP AR NM STRIP OBJCOPY OBJDUMP HOSTLDFLAGS HOST_LOADLIBES
-+export ARCH SRCARCH SUBARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD
-+export CC CPP AR NM STRIP OBJCOPY OBJDUMP HOSTLDFLAGS HOST_LOADLIBES
- export MAKE AWK GENKSYMS INSTALLKERNEL PERL PYTHON UTS_MACHINE
- export HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS
+-export ARCH SRCARCH CONFIG_SHELL HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE AS LD CC
+-export CPP AR NM STRIP OBJCOPY OBJDUMP KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS
++export ARCH SRCARCH SUBARCH CONFIG_SHELL HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE AS LD
++export CC CPP AR NM STRIP OBJCOPY OBJDUMP KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS
+ export MAKE LEX YACC AWK GENKSYMS INSTALLKERNEL PERL PYTHON PYTHON2 PYTHON3 UTS_MACHINE
+ export HOSTCXX KBUILD_HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS
  
diff --git a/target/linux/generic/backport-4.19/012-kbuild-add-macro-for-controlling-warnings-to-linux-c.patch b/target/linux/generic/backport-4.19/012-kbuild-add-macro-for-controlling-warnings-to-linux-c.patch
deleted file mode 100644
index 7617c2e5f5..0000000000
diff --git a/target/linux/generic/backport-4.19/013-disable-Wattribute-alias-warning-for-SYSCALL_DEFINEx.patch b/target/linux/generic/backport-4.19/013-disable-Wattribute-alias-warning-for-SYSCALL_DEFINEx.patch
deleted file mode 100644
index 2440ed8c0d..0000000000
diff --git a/target/linux/generic/backport-4.19/020-backport_netfilter_rtcache.patch b/target/linux/generic/backport-4.19/020-backport_netfilter_rtcache.patch
index 8a6fba4307..32b43082be 100644
--- a/target/linux/generic/backport-4.19/020-backport_netfilter_rtcache.patch
+++ b/target/linux/generic/backport-4.19/020-backport_netfilter_rtcache.patch
@@ -94,7 +94,7 @@ Signed-off-by: Florian Westphal <fw at strlen.de>
 +}
 --- a/net/netfilter/Kconfig
 +++ b/net/netfilter/Kconfig
-@@ -118,6 +118,18 @@ config NF_CONNTRACK_EVENTS
+@@ -135,6 +135,18 @@ config NF_CONNTRACK_EVENTS
  
  	  If unsure, say `N'.
  
@@ -115,7 +115,7 @@ Signed-off-by: Florian Westphal <fw at strlen.de>
  	depends on NETFILTER_ADVANCED
 --- a/net/netfilter/Makefile
 +++ b/net/netfilter/Makefile
-@@ -19,6 +19,9 @@ obj-$(CONFIG_NETFILTER_NETLINK_LOG) += n
+@@ -25,6 +25,9 @@ obj-$(CONFIG_NETFILTER_NETLINK_OSF) += n
  # connection tracking
  obj-$(CONFIG_NF_CONNTRACK) += nf_conntrack.o
  
diff --git a/target/linux/generic/backport-4.19/025-tcp-allow-drivers-to-tweak-TSQ-logic.patch b/target/linux/generic/backport-4.19/025-tcp-allow-drivers-to-tweak-TSQ-logic.patch
deleted file mode 100644
index d9215505ee..0000000000
diff --git a/target/linux/generic/backport-4.19/030-USB-serial-option-fix-dwm-158-3g-modem-interface.patch b/target/linux/generic/backport-4.19/030-USB-serial-option-fix-dwm-158-3g-modem-interface.patch
deleted file mode 100644
index 4201ab1744..0000000000
diff --git a/target/linux/generic/backport-4.19/030-v4.17-0001-usb-dwc2-add-support-for-host-mode-external-vbus-sup.patch b/target/linux/generic/backport-4.19/030-v4.17-0001-usb-dwc2-add-support-for-host-mode-external-vbus-sup.patch
deleted file mode 100644
index a17844f5e6..0000000000
diff --git a/target/linux/generic/backport-4.19/030-v4.17-0002-usb-dwc2-dwc2_vbus_supply_init-fix-error-check.patch b/target/linux/generic/backport-4.19/030-v4.17-0002-usb-dwc2-dwc2_vbus_supply_init-fix-error-check.patch
deleted file mode 100644
index 59ab805cf6..0000000000
diff --git a/target/linux/generic/backport-4.19/040-v4.17-0001-mtd-move-code-adding-master-MTD-out-of-mtd_add_devic.patch b/target/linux/generic/backport-4.19/040-v4.17-0001-mtd-move-code-adding-master-MTD-out-of-mtd_add_devic.patch
deleted file mode 100644
index df6429776f..0000000000
diff --git a/target/linux/generic/backport-4.19/040-v4.17-0002-mtd-get-rid-of-the-mtd_add_device_partitions.patch b/target/linux/generic/backport-4.19/040-v4.17-0002-mtd-get-rid-of-the-mtd_add_device_partitions.patch
deleted file mode 100644
index 1042e674c3..0000000000
diff --git a/target/linux/generic/backport-4.19/041-v4.17-0001-mtd-partitions-add-of_match_table-parser-matching-fo.patch b/target/linux/generic/backport-4.19/041-v4.17-0001-mtd-partitions-add-of_match_table-parser-matching-fo.patch
deleted file mode 100644
index bd39a2625e..0000000000
diff --git a/target/linux/generic/backport-4.19/041-v4.17-0002-mtd-rename-ofpart-parser-to-fixed-partitions-as-it-f.patch b/target/linux/generic/backport-4.19/041-v4.17-0002-mtd-rename-ofpart-parser-to-fixed-partitions-as-it-f.patch
deleted file mode 100644
index 66b67d7676..0000000000
diff --git a/target/linux/generic/backport-4.19/041-v4.17-0003-mtd-ofpart-add-of_match_table-with-fixed-partitions.patch b/target/linux/generic/backport-4.19/041-v4.17-0003-mtd-ofpart-add-of_match_table-with-fixed-partitions.patch
deleted file mode 100644
index d6958c3eac..0000000000
diff --git a/target/linux/generic/backport-4.19/042-v4.18-0001-mtd-move-code-adding-registering-partitions-to-the-p.patch b/target/linux/generic/backport-4.19/042-v4.18-0001-mtd-move-code-adding-registering-partitions-to-the-p.patch
deleted file mode 100644
index 83077431b8..0000000000
diff --git a/target/linux/generic/backport-4.19/043-v4.18-mtd-bcm47xxpart-improve-handling-TRX-partition-size.patch b/target/linux/generic/backport-4.19/043-v4.18-mtd-bcm47xxpart-improve-handling-TRX-partition-size.patch
deleted file mode 100644
index e08f8dad32..0000000000
diff --git a/target/linux/generic/backport-4.19/044-v4.18-mtd-bcm47xxpart-add-of_match_table-with-a-new-DT-bin.patch b/target/linux/generic/backport-4.19/044-v4.18-mtd-bcm47xxpart-add-of_match_table-with-a-new-DT-bin.patch
deleted file mode 100644
index de0ff1f818..0000000000
diff --git a/target/linux/generic/backport-4.19/045-v4.19-mtd-parsers-trx-add-of_match_table-with-the-new-DT-b.patch b/target/linux/generic/backport-4.19/045-v4.19-mtd-parsers-trx-add-of_match_table-with-the-new-DT-b.patch
deleted file mode 100644
index 5841dd55f3..0000000000
diff --git a/target/linux/generic/backport-4.19/046-v4.19-mtd-partitions-use-DT-info-for-parsing-partitions-wi.patch b/target/linux/generic/backport-4.19/046-v4.19-mtd-partitions-use-DT-info-for-parsing-partitions-wi.patch
deleted file mode 100644
index 1bb3563f15..0000000000
diff --git a/target/linux/generic/backport-4.19/071-v4.15-0001-net-bgmac-enable-master-mode-for-BCM54210E-and-B5021.patch b/target/linux/generic/backport-4.19/071-v4.15-0001-net-bgmac-enable-master-mode-for-BCM54210E-and-B5021.patch
deleted file mode 100644
index db239e0a00..0000000000
diff --git a/target/linux/generic/backport-4.19/076-v4.15-0001-net-phy-broadcom-support-new-device-flag-for-setting.patch b/target/linux/generic/backport-4.19/076-v4.15-0001-net-phy-broadcom-support-new-device-flag-for-setting.patch
deleted file mode 100644
index a22d272656..0000000000
diff --git a/target/linux/generic/backport-4.19/085-v4.16-0001-i2c-gpio-Enable-working-over-slow-can_sleep-GPIOs.patch b/target/linux/generic/backport-4.19/085-v4.16-0001-i2c-gpio-Enable-working-over-slow-can_sleep-GPIOs.patch
deleted file mode 100644
index ead6675e0b..0000000000
diff --git a/target/linux/generic/backport-4.19/090-net-bridge-add-support-for-port-isolation.patch b/target/linux/generic/backport-4.19/090-net-bridge-add-support-for-port-isolation.patch
deleted file mode 100644
index 6237177a45..0000000000
diff --git a/target/linux/generic/backport-4.19/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch b/target/linux/generic/backport-4.19/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch
deleted file mode 100644
index 45039ce133..0000000000
diff --git a/target/linux/generic/backport-4.19/289-v4.16-netfilter-add-defines-for-arp-decnet-max-hooks.patch b/target/linux/generic/backport-4.19/289-v4.16-netfilter-add-defines-for-arp-decnet-max-hooks.patch
deleted file mode 100644
index f7898d4f30..0000000000
diff --git a/target/linux/generic/backport-4.19/290-v4.16-netfilter-core-make-nf_unregister_net_hooks-simple-w.patch b/target/linux/generic/backport-4.19/290-v4.16-netfilter-core-make-nf_unregister_net_hooks-simple-w.patch
deleted file mode 100644
index 35800c4acf..0000000000
diff --git a/target/linux/generic/backport-4.19/291-v4.16-netfilter-core-remove-synchronize_net-call-if-nfqueu.patch b/target/linux/generic/backport-4.19/291-v4.16-netfilter-core-remove-synchronize_net-call-if-nfqueu.patch
deleted file mode 100644
index 0ac5783624..0000000000
diff --git a/target/linux/generic/backport-4.19/292-v4.16-netfilter-core-free-hooks-with-call_rcu.patch b/target/linux/generic/backport-4.19/292-v4.16-netfilter-core-free-hooks-with-call_rcu.patch
deleted file mode 100644
index 5eca73552b..0000000000
diff --git a/target/linux/generic/backport-4.19/293-v4.16-netfilter-reduce-size-of-hook-entry-point-locations.patch b/target/linux/generic/backport-4.19/293-v4.16-netfilter-reduce-size-of-hook-entry-point-locations.patch
deleted file mode 100644
index fcf54e9858..0000000000
diff --git a/target/linux/generic/backport-4.19/294-v4.16-netfilter-reduce-hook-array-sizes-to-what-is-needed.patch b/target/linux/generic/backport-4.19/294-v4.16-netfilter-reduce-hook-array-sizes-to-what-is-needed.patch
deleted file mode 100644
index d9009b8e1f..0000000000
diff --git a/target/linux/generic/backport-4.19/295-v4.16-netfilter-don-t-allocate-space-for-decnet-hooks-unle.patch b/target/linux/generic/backport-4.19/295-v4.16-netfilter-don-t-allocate-space-for-decnet-hooks-unle.patch
deleted file mode 100644
index 26a93c40ae..0000000000
diff --git a/target/linux/generic/backport-4.19/296-v4.16-netfilter-don-t-allocate-space-for-arp-bridge-hooks-.patch b/target/linux/generic/backport-4.19/296-v4.16-netfilter-don-t-allocate-space-for-arp-bridge-hooks-.patch
deleted file mode 100644
index 9444f6bb48..0000000000
diff --git a/target/linux/generic/backport-4.19/297-v4.16-netfilter-core-pass-hook-number-family-and-device-to.patch b/target/linux/generic/backport-4.19/297-v4.16-netfilter-core-pass-hook-number-family-and-device-to.patch
deleted file mode 100644
index 7d450f95f0..0000000000
diff --git a/target/linux/generic/backport-4.19/298-v4.16-netfilter-core-add-nf_remove_net_hook.patch b/target/linux/generic/backport-4.19/298-v4.16-netfilter-core-add-nf_remove_net_hook.patch
deleted file mode 100644
index 8fea44b359..0000000000
diff --git a/target/linux/generic/backport-4.19/298-v4.16-netfilter-core-pass-family-as-parameter-to-nf_remove.patch b/target/linux/generic/backport-4.19/298-v4.16-netfilter-core-pass-family-as-parameter-to-nf_remove.patch
deleted file mode 100644
index 4c52635c13..0000000000
diff --git a/target/linux/generic/backport-4.19/299-v4.16-netfilter-core-support-for-NFPROTO_INET-hook-registr.patch b/target/linux/generic/backport-4.19/299-v4.16-netfilter-core-support-for-NFPROTO_INET-hook-registr.patch
deleted file mode 100644
index b112855132..0000000000
diff --git a/target/linux/generic/backport-4.19/300-v4.16-netfilter-nf_tables-explicit-nft_set_pktinfo-call-fr.patch b/target/linux/generic/backport-4.19/300-v4.16-netfilter-nf_tables-explicit-nft_set_pktinfo-call-fr.patch
deleted file mode 100644
index c0cb5bbeba..0000000000
diff --git a/target/linux/generic/backport-4.19/301-v4.16-netfilter-core-only-allow-one-nat-hook-per-hook-poin.patch b/target/linux/generic/backport-4.19/301-v4.16-netfilter-core-only-allow-one-nat-hook-per-hook-poin.patch
deleted file mode 100644
index 05888a070e..0000000000
diff --git a/target/linux/generic/backport-4.19/302-v4.16-netfilter-nf_tables_inet-don-t-use-multihook-infrast.patch b/target/linux/generic/backport-4.19/302-v4.16-netfilter-nf_tables_inet-don-t-use-multihook-infrast.patch
deleted file mode 100644
index 17d8b21a0f..0000000000
diff --git a/target/linux/generic/backport-4.19/303-v4.16-netfilter-nf_tables-remove-multihook-chains-and-fami.patch b/target/linux/generic/backport-4.19/303-v4.16-netfilter-nf_tables-remove-multihook-chains-and-fami.patch
deleted file mode 100644
index 0db6262fd9..0000000000
diff --git a/target/linux/generic/backport-4.19/304-v4.16-netfilter-move-checksum-indirection-to-struct-nf_ipv.patch b/target/linux/generic/backport-4.19/304-v4.16-netfilter-move-checksum-indirection-to-struct-nf_ipv.patch
deleted file mode 100644
index 458ddd4172..0000000000
diff --git a/target/linux/generic/backport-4.19/305-v4.16-netfilter-move-checksum_partial-indirection-to-struc.patch b/target/linux/generic/backport-4.19/305-v4.16-netfilter-move-checksum_partial-indirection-to-struc.patch
deleted file mode 100644
index 19a0aacb45..0000000000
diff --git a/target/linux/generic/backport-4.19/306-v4.16-netfilter-remove-saveroute-indirection-in-struct-nf_.patch b/target/linux/generic/backport-4.19/306-v4.16-netfilter-remove-saveroute-indirection-in-struct-nf_.patch
deleted file mode 100644
index 75de3c84fe..0000000000
diff --git a/target/linux/generic/backport-4.19/307-v4.16-netfilter-move-route-indirection-to-struct-nf_ipv6_o.patch b/target/linux/generic/backport-4.19/307-v4.16-netfilter-move-route-indirection-to-struct-nf_ipv6_o.patch
deleted file mode 100644
index b98aac0fff..0000000000
diff --git a/target/linux/generic/backport-4.19/308-v4.16-netfilter-move-reroute-indirection-to-struct-nf_ipv6.patch b/target/linux/generic/backport-4.19/308-v4.16-netfilter-move-reroute-indirection-to-struct-nf_ipv6.patch
deleted file mode 100644
index 5dbd1a4cea..0000000000
diff --git a/target/linux/generic/backport-4.19/309-v4.16-netfilter-remove-route_key_size-field-in-struct-nf_a.patch b/target/linux/generic/backport-4.19/309-v4.16-netfilter-remove-route_key_size-field-in-struct-nf_a.patch
deleted file mode 100644
index 21381b7e6b..0000000000
diff --git a/target/linux/generic/backport-4.19/310-v4.16-netfilter-remove-struct-nf_afinfo-and-its-helper-fun.patch b/target/linux/generic/backport-4.19/310-v4.16-netfilter-remove-struct-nf_afinfo-and-its-helper-fun.patch
deleted file mode 100644
index 0ca58f9988..0000000000
diff --git a/target/linux/generic/backport-4.19/311-v4.16-netfilter-nf_tables_arp-don-t-set-forward-chain.patch b/target/linux/generic/backport-4.19/311-v4.16-netfilter-nf_tables_arp-don-t-set-forward-chain.patch
deleted file mode 100644
index 10ce26dc8e..0000000000
diff --git a/target/linux/generic/backport-4.19/312-v4.16-netfilter-nf_tables-remove-hooks-from-family-definit.patch b/target/linux/generic/backport-4.19/312-v4.16-netfilter-nf_tables-remove-hooks-from-family-definit.patch
deleted file mode 100644
index 3ee8ad9d33..0000000000
diff --git a/target/linux/generic/backport-4.19/313-v4.16-netfilter-remove-defensive-check-on-malformed-packet.patch b/target/linux/generic/backport-4.19/313-v4.16-netfilter-remove-defensive-check-on-malformed-packet.patch
deleted file mode 100644
index 5e56d0dc49..0000000000
diff --git a/target/linux/generic/backport-4.19/314-v4.16-netfilter-meta-secpath-support.patch b/target/linux/generic/backport-4.19/314-v4.16-netfilter-meta-secpath-support.patch
deleted file mode 100644
index 7aab67fc2c..0000000000
diff --git a/target/linux/generic/backport-4.19/315-v4.15-netfilter-conntrack-move-nf_ct_netns_-get-put-to-cor.patch b/target/linux/generic/backport-4.19/315-v4.15-netfilter-conntrack-move-nf_ct_netns_-get-put-to-cor.patch
deleted file mode 100644
index 7f6e90470a..0000000000
diff --git a/target/linux/generic/backport-4.19/320-v4.16-netfilter-nf_conntrack-add-IPS_OFFLOAD-status-bit.patch b/target/linux/generic/backport-4.19/320-v4.16-netfilter-nf_conntrack-add-IPS_OFFLOAD-status-bit.patch
deleted file mode 100644
index 7788dd1434..0000000000
diff --git a/target/linux/generic/backport-4.19/321-v4.16-netfilter-nf_tables-add-flow-table-netlink-frontend.patch b/target/linux/generic/backport-4.19/321-v4.16-netfilter-nf_tables-add-flow-table-netlink-frontend.patch
deleted file mode 100644
index 1c16bbae4e..0000000000
diff --git a/target/linux/generic/backport-4.19/322-v4.16-netfilter-add-generic-flow-table-infrastructure.patch b/target/linux/generic/backport-4.19/322-v4.16-netfilter-add-generic-flow-table-infrastructure.patch
deleted file mode 100644
index 16de9571a8..0000000000
diff --git a/target/linux/generic/backport-4.19/323-v4.16-netfilter-flow-table-support-for-IPv4.patch b/target/linux/generic/backport-4.19/323-v4.16-netfilter-flow-table-support-for-IPv4.patch
deleted file mode 100644
index 50d9039c12..0000000000
diff --git a/target/linux/generic/backport-4.19/324-v4.16-netfilter-flow-table-support-for-IPv6.patch b/target/linux/generic/backport-4.19/324-v4.16-netfilter-flow-table-support-for-IPv6.patch
deleted file mode 100644
index 3e7db09068..0000000000
diff --git a/target/linux/generic/backport-4.19/325-v4.16-netfilter-flow-table-support-for-the-mixed-IPv4-IPv6.patch b/target/linux/generic/backport-4.19/325-v4.16-netfilter-flow-table-support-for-the-mixed-IPv4-IPv6.patch
deleted file mode 100644
index 04948d88ab..0000000000
diff --git a/target/linux/generic/backport-4.19/326-v4.16-netfilter-nf_tables-flow-offload-expression.patch b/target/linux/generic/backport-4.19/326-v4.16-netfilter-nf_tables-flow-offload-expression.patch
deleted file mode 100644
index 0decc34105..0000000000
diff --git a/target/linux/generic/backport-4.19/327-v4.16-netfilter-nf_tables-remove-nhooks-field-from-struct-.patch b/target/linux/generic/backport-4.19/327-v4.16-netfilter-nf_tables-remove-nhooks-field-from-struct-.patch
deleted file mode 100644
index 7d13a59424..0000000000
diff --git a/target/linux/generic/backport-4.19/328-v4.16-netfilter-nf_tables-fix-a-typo-in-nf_tables_getflowt.patch b/target/linux/generic/backport-4.19/328-v4.16-netfilter-nf_tables-fix-a-typo-in-nf_tables_getflowt.patch
deleted file mode 100644
index 62bca05110..0000000000
diff --git a/target/linux/generic/backport-4.19/329-v4.16-netfilter-improve-flow-table-Kconfig-dependencies.patch b/target/linux/generic/backport-4.19/329-v4.16-netfilter-improve-flow-table-Kconfig-dependencies.patch
deleted file mode 100644
index 0d5cd3bb4f..0000000000
diff --git a/target/linux/generic/backport-4.19/330-v4.16-netfilter-nf_tables-remove-flag-field-from-struct-nf.patch b/target/linux/generic/backport-4.19/330-v4.16-netfilter-nf_tables-remove-flag-field-from-struct-nf.patch
deleted file mode 100644
index c599ad79c2..0000000000
diff --git a/target/linux/generic/backport-4.19/331-v4.16-netfilter-nf_tables-no-need-for-struct-nft_af_info-t.patch b/target/linux/generic/backport-4.19/331-v4.16-netfilter-nf_tables-no-need-for-struct-nft_af_info-t.patch
deleted file mode 100644
index 35c75a201e..0000000000
diff --git a/target/linux/generic/backport-4.19/332-v4.16-netfilter-nf_tables-remove-struct-nft_af_info-parame.patch b/target/linux/generic/backport-4.19/332-v4.16-netfilter-nf_tables-remove-struct-nft_af_info-parame.patch
deleted file mode 100644
index 086178ae20..0000000000
diff --git a/target/linux/generic/backport-4.19/334-v4.15-netfilter-nf_tables-fix-potential-NULL-ptr-deref-in-.patch b/target/linux/generic/backport-4.19/334-v4.15-netfilter-nf_tables-fix-potential-NULL-ptr-deref-in-.patch
deleted file mode 100644
index d140a33518..0000000000
diff --git a/target/linux/generic/backport-4.19/335-v4.16-netfilter-nf_tables-add-single-table-list-for-all-fa.patch b/target/linux/generic/backport-4.19/335-v4.16-netfilter-nf_tables-add-single-table-list-for-all-fa.patch
deleted file mode 100644
index 59ec44a482..0000000000
diff --git a/target/linux/generic/backport-4.19/336-v4.15-netfilter-exit_net-cleanup-check-added.patch b/target/linux/generic/backport-4.19/336-v4.15-netfilter-exit_net-cleanup-check-added.patch
deleted file mode 100644
index 5938a9ba5a..0000000000
diff --git a/target/linux/generic/backport-4.19/337-v4.16-netfilter-nf_tables-get-rid-of-pernet-families.patch b/target/linux/generic/backport-4.19/337-v4.16-netfilter-nf_tables-get-rid-of-pernet-families.patch
deleted file mode 100644
index de5c2409b3..0000000000
diff --git a/target/linux/generic/backport-4.19/338-v4.16-netfilter-nf_tables-get-rid-of-struct-nft_af_info-ab.patch b/target/linux/generic/backport-4.19/338-v4.16-netfilter-nf_tables-get-rid-of-struct-nft_af_info-ab.patch
deleted file mode 100644
index e5ed45c1c6..0000000000
diff --git a/target/linux/generic/backport-4.19/339-v4.16-netfilter-nft_flow_offload-wait-for-garbage-collecto.patch b/target/linux/generic/backport-4.19/339-v4.16-netfilter-nft_flow_offload-wait-for-garbage-collecto.patch
deleted file mode 100644
index 4b4206502c..0000000000
diff --git a/target/linux/generic/backport-4.19/340-v4.16-netfilter-nft_flow_offload-no-need-to-flush-entries-.patch b/target/linux/generic/backport-4.19/340-v4.16-netfilter-nft_flow_offload-no-need-to-flush-entries-.patch
deleted file mode 100644
index 539550d542..0000000000
diff --git a/target/linux/generic/backport-4.19/341-v4.16-netfilter-nft_flow_offload-move-flowtable-cleanup-ro.patch b/target/linux/generic/backport-4.19/341-v4.16-netfilter-nft_flow_offload-move-flowtable-cleanup-ro.patch
deleted file mode 100644
index 9ee0ad5936..0000000000
diff --git a/target/linux/generic/backport-4.19/342-v4.16-netfilter-nf_tables-fix-flowtable-free.patch b/target/linux/generic/backport-4.19/342-v4.16-netfilter-nf_tables-fix-flowtable-free.patch
deleted file mode 100644
index 670d2ca6d4..0000000000
diff --git a/target/linux/generic/backport-4.19/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch b/target/linux/generic/backport-4.19/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
index 7f35cd7c60..0badce1b73 100644
--- a/target/linux/generic/backport-4.19/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
+++ b/target/linux/generic/backport-4.19/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
@@ -8,9 +8,9 @@ Move the code that deals with device events to the core.
 Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
 ---
 
---- a/net/netfilter/nf_flow_table.c
-+++ b/net/netfilter/nf_flow_table.c
-@@ -462,5 +462,35 @@ void nf_flow_table_free(struct nf_flowta
+--- a/net/netfilter/nf_flow_table_core.c
++++ b/net/netfilter/nf_flow_table_core.c
+@@ -519,5 +519,35 @@ void nf_flow_table_free(struct nf_flowta
  }
  EXPORT_SYMBOL_GPL(nf_flow_table_free);
  
@@ -48,7 +48,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  MODULE_AUTHOR("Pablo Neira Ayuso <pablo at netfilter.org>");
 --- a/net/netfilter/nft_flow_offload.c
 +++ b/net/netfilter/nft_flow_offload.c
-@@ -194,44 +194,14 @@ static struct nft_expr_type nft_flow_off
+@@ -193,44 +193,14 @@ static struct nft_expr_type nft_flow_off
  	.owner		= THIS_MODULE,
  };
  
diff --git a/target/linux/generic/backport-4.19/344-v4.16-netfilter-nf_tables-allocate-handle-and-delete-objec.patch b/target/linux/generic/backport-4.19/344-v4.16-netfilter-nf_tables-allocate-handle-and-delete-objec.patch
deleted file mode 100644
index 98ec5d1b7c..0000000000
diff --git a/target/linux/generic/backport-4.19/345-v4.16-netfilter-nf_flow_offload-fix-use-after-free-and-a-r.patch b/target/linux/generic/backport-4.19/345-v4.16-netfilter-nf_flow_offload-fix-use-after-free-and-a-r.patch
deleted file mode 100644
index 331f22d19a..0000000000
diff --git a/target/linux/generic/backport-4.19/346-v4.16-netfilter-flowtable-infrastructure-depends-on-NETFIL.patch b/target/linux/generic/backport-4.19/346-v4.16-netfilter-flowtable-infrastructure-depends-on-NETFIL.patch
deleted file mode 100644
index bb8c2d3e5a..0000000000
diff --git a/target/linux/generic/backport-4.19/347-v4.16-netfilter-remove-duplicated-include.patch b/target/linux/generic/backport-4.19/347-v4.16-netfilter-remove-duplicated-include.patch
deleted file mode 100644
index c8a0972725..0000000000
diff --git a/target/linux/generic/backport-4.19/348-v4.18-netfilter-nf_flow_table-use-IP_CT_DIR_-values-for-FL.patch b/target/linux/generic/backport-4.19/348-v4.18-netfilter-nf_flow_table-use-IP_CT_DIR_-values-for-FL.patch
deleted file mode 100644
index 382b33c078..0000000000
diff --git a/target/linux/generic/backport-4.19/349-v4.18-netfilter-nf_flow_table-clean-up-flow_offload_alloc.patch b/target/linux/generic/backport-4.19/349-v4.18-netfilter-nf_flow_table-clean-up-flow_offload_alloc.patch
deleted file mode 100644
index 39ea757f04..0000000000
diff --git a/target/linux/generic/backport-4.19/350-v4.18-ipv6-make-ip6_dst_mtu_forward-inline.patch b/target/linux/generic/backport-4.19/350-v4.18-ipv6-make-ip6_dst_mtu_forward-inline.patch
deleted file mode 100644
index daa4d3b3d8..0000000000
diff --git a/target/linux/generic/backport-4.19/351-v4.18-netfilter-nf_flow_table-cache-mtu-in-struct-flow_off.patch b/target/linux/generic/backport-4.19/351-v4.18-netfilter-nf_flow_table-cache-mtu-in-struct-flow_off.patch
deleted file mode 100644
index e2015e72ac..0000000000
diff --git a/target/linux/generic/backport-4.19/352-v4.18-netfilter-nf_flow_table-rename-nf_flow_table.c-to-nf.patch b/target/linux/generic/backport-4.19/352-v4.18-netfilter-nf_flow_table-rename-nf_flow_table.c-to-nf.patch
deleted file mode 100644
index 5df56dd643..0000000000
diff --git a/target/linux/generic/backport-4.19/353-v4.18-netfilter-nf_flow_table-move-ipv4-offload-hook-code-.patch b/target/linux/generic/backport-4.19/353-v4.18-netfilter-nf_flow_table-move-ipv4-offload-hook-code-.patch
deleted file mode 100644
index e25a66f934..0000000000
diff --git a/target/linux/generic/backport-4.19/354-v4.18-netfilter-nf_flow_table-move-ip-header-check-out-of-.patch b/target/linux/generic/backport-4.19/354-v4.18-netfilter-nf_flow_table-move-ip-header-check-out-of-.patch
deleted file mode 100644
index 4ee5532438..0000000000
diff --git a/target/linux/generic/backport-4.19/355-v4.18-netfilter-nf_flow_table-move-ipv6-offload-hook-code-.patch b/target/linux/generic/backport-4.19/355-v4.18-netfilter-nf_flow_table-move-ipv6-offload-hook-code-.patch
deleted file mode 100644
index 20ab0ed504..0000000000
diff --git a/target/linux/generic/backport-4.19/356-v4.18-netfilter-nf_flow_table-relax-mixed-ipv4-ipv6-flowta.patch b/target/linux/generic/backport-4.19/356-v4.18-netfilter-nf_flow_table-relax-mixed-ipv4-ipv6-flowta.patch
deleted file mode 100644
index b5fe25a1d6..0000000000
diff --git a/target/linux/generic/backport-4.19/357-v4.18-netfilter-nf_flow_table-move-init-code-to-nf_flow_ta.patch b/target/linux/generic/backport-4.19/357-v4.18-netfilter-nf_flow_table-move-init-code-to-nf_flow_ta.patch
deleted file mode 100644
index 2cf8cea23c..0000000000
diff --git a/target/linux/generic/backport-4.19/358-v4.18-netfilter-nf_flow_table-fix-priv-pointer-for-netdev-.patch b/target/linux/generic/backport-4.19/358-v4.18-netfilter-nf_flow_table-fix-priv-pointer-for-netdev-.patch
deleted file mode 100644
index d978a076fd..0000000000
diff --git a/target/linux/generic/backport-4.19/359-v4.18-netfilter-nf_flow_table-track-flow-tables-in-nf_flow.patch b/target/linux/generic/backport-4.19/359-v4.18-netfilter-nf_flow_table-track-flow-tables-in-nf_flow.patch
deleted file mode 100644
index 84048a0be8..0000000000
diff --git a/target/linux/generic/backport-4.19/360-v4.18-netfilter-nf_flow_table-make-flow_offload_dead-inlin.patch b/target/linux/generic/backport-4.19/360-v4.18-netfilter-nf_flow_table-make-flow_offload_dead-inlin.patch
deleted file mode 100644
index d33400c729..0000000000
diff --git a/target/linux/generic/backport-4.19/361-v4.18-netfilter-nf_flow_table-add-a-new-flow-state-for-tea.patch b/target/linux/generic/backport-4.19/361-v4.18-netfilter-nf_flow_table-add-a-new-flow-state-for-tea.patch
deleted file mode 100644
index 30cebfac60..0000000000
diff --git a/target/linux/generic/backport-4.19/362-v4.18-netfilter-nf_flow_table-in-flow_offload_lookup-skip-.patch b/target/linux/generic/backport-4.19/362-v4.18-netfilter-nf_flow_table-in-flow_offload_lookup-skip-.patch
deleted file mode 100644
index d14ac97a59..0000000000
diff --git a/target/linux/generic/backport-4.19/363-v4.18-netfilter-nf_flow_table-add-support-for-sending-flow.patch b/target/linux/generic/backport-4.19/363-v4.18-netfilter-nf_flow_table-add-support-for-sending-flow.patch
deleted file mode 100644
index 905880fead..0000000000
diff --git a/target/linux/generic/backport-4.19/364-v4.18-netfilter-nf_flow_table-tear-down-TCP-flows-if-RST-o.patch b/target/linux/generic/backport-4.19/364-v4.18-netfilter-nf_flow_table-tear-down-TCP-flows-if-RST-o.patch
deleted file mode 100644
index 8b0024cd8d..0000000000
diff --git a/target/linux/generic/backport-4.19/365-v4.16-netfilter-nf_flow_table-fix-checksum-when-handling-D.patch b/target/linux/generic/backport-4.19/365-v4.16-netfilter-nf_flow_table-fix-checksum-when-handling-D.patch
deleted file mode 100644
index 372c8d59ef..0000000000
diff --git a/target/linux/generic/backport-4.19/366-netfilter-nf_flow_table-clean-up-and-fix-dst-handlin.patch b/target/linux/generic/backport-4.19/366-netfilter-nf_flow_table-clean-up-and-fix-dst-handlin.patch
index 491f057858..624602dabe 100644
--- a/target/linux/generic/backport-4.19/366-netfilter-nf_flow_table-clean-up-and-fix-dst-handlin.patch
+++ b/target/linux/generic/backport-4.19/366-netfilter-nf_flow_table-clean-up-and-fix-dst-handlin.patch
@@ -18,16 +18,16 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/netfilter/nf_flow_table_ip.c
 +++ b/net/netfilter/nf_flow_table_ip.c
-@@ -238,7 +238,7 @@ nf_flow_offload_ip_hook(void *priv, stru
+@@ -241,7 +241,7 @@ nf_flow_offload_ip_hook(void *priv, stru
  
  	dir = tuplehash->tuple.dir;
  	flow = container_of(tuplehash, struct flow_offload, tuplehash[dir]);
--	rt = (const struct rtable *)flow->tuplehash[dir].tuple.dst_cache;
-+	rt = (const struct rtable *)flow->tuplehash[!dir].tuple.dst_cache;
+-	rt = (struct rtable *)flow->tuplehash[dir].tuple.dst_cache;
++	rt = (struct rtable *)flow->tuplehash[!dir].tuple.dst_cache;
  
  	if (unlikely(nf_flow_exceeds_mtu(skb, flow->tuplehash[dir].tuple.mtu)) &&
  	    (ip_hdr(skb)->frag_off & htons(IP_DF)) != 0)
-@@ -455,7 +455,7 @@ nf_flow_offload_ipv6_hook(void *priv, st
+@@ -459,7 +459,7 @@ nf_flow_offload_ipv6_hook(void *priv, st
  
  	dir = tuplehash->tuple.dir;
  	flow = container_of(tuplehash, struct flow_offload, tuplehash[dir]);
diff --git a/target/linux/generic/backport-4.19/367-v4.18-netfilter-nf_flow_table-add-missing-condition-for-TC.patch b/target/linux/generic/backport-4.19/367-v4.18-netfilter-nf_flow_table-add-missing-condition-for-TC.patch
deleted file mode 100644
index 2a470f77e3..0000000000
diff --git a/target/linux/generic/backport-4.19/368-v4.18-netfilter-nf_flow_table-fix-offloading-connections-w.patch b/target/linux/generic/backport-4.19/368-v4.18-netfilter-nf_flow_table-fix-offloading-connections-w.patch
deleted file mode 100644
index f3d83a1536..0000000000
diff --git a/target/linux/generic/backport-4.19/369-v4.18-netfilter-nf_flow_table-attach-dst-to-skbs.patch b/target/linux/generic/backport-4.19/369-v4.18-netfilter-nf_flow_table-attach-dst-to-skbs.patch
deleted file mode 100644
index 35d099097a..0000000000
diff --git a/target/linux/generic/backport-4.19/370-netfilter-nf_flow_table-fix-offloaded-connection-tim.patch b/target/linux/generic/backport-4.19/370-netfilter-nf_flow_table-fix-offloaded-connection-tim.patch
index e17b4b6204..9c4b7e392e 100644
--- a/target/linux/generic/backport-4.19/370-netfilter-nf_flow_table-fix-offloaded-connection-tim.patch
+++ b/target/linux/generic/backport-4.19/370-netfilter-nf_flow_table-fix-offloaded-connection-tim.patch
@@ -21,7 +21,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/netfilter/nf_conntrack_core.c
 +++ b/net/netfilter/nf_conntrack_core.c
-@@ -981,18 +981,6 @@ static bool gc_worker_can_early_drop(con
+@@ -1119,18 +1119,6 @@ static bool gc_worker_can_early_drop(con
  	return false;
  }
  
@@ -40,7 +40,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  static void gc_worker(struct work_struct *work)
  {
  	unsigned int min_interval = max(HZ / GC_MAX_BUCKETS_DIV, 1u);
-@@ -1029,10 +1017,8 @@ static void gc_worker(struct work_struct
+@@ -1167,10 +1155,8 @@ static void gc_worker(struct work_struct
  			tmp = nf_ct_tuplehash_to_ctrack(h);
  
  			scanned++;
@@ -54,7 +54,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  				nf_ct_gc_expired(tmp);
 --- a/net/netfilter/nf_flow_table_core.c
 +++ b/net/netfilter/nf_flow_table_core.c
-@@ -185,8 +185,27 @@ static const struct rhashtable_params nf
+@@ -182,8 +182,27 @@ static const struct rhashtable_params nf
  	.automatic_shrinking	= true,
  };
  
@@ -82,7 +82,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	flow->timeout = (u32)jiffies;
  
  	rhashtable_insert_fast(&flow_table->rhashtable,
-@@ -307,6 +326,8 @@ static int nf_flow_offload_gc_step(struc
+@@ -304,6 +323,8 @@ static int nf_flow_offload_gc_step(struc
  	rhashtable_walk_start(&hti);
  
  	while ((tuplehash = rhashtable_walk_next(&hti))) {
@@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		if (IS_ERR(tuplehash)) {
  			err = PTR_ERR(tuplehash);
  			if (err != -EAGAIN)
-@@ -319,9 +340,13 @@ static int nf_flow_offload_gc_step(struc
+@@ -316,9 +337,13 @@ static int nf_flow_offload_gc_step(struc
  
  		flow = container_of(tuplehash, struct flow_offload, tuplehash[0]);
  
diff --git a/target/linux/generic/backport-4.19/371-netfilter-nf_flow_table-fix-up-ct-state-of-flows-aft.patch b/target/linux/generic/backport-4.19/371-netfilter-nf_flow_table-fix-up-ct-state-of-flows-aft.patch
index fb14a284ae..59751ff037 100644
--- a/target/linux/generic/backport-4.19/371-netfilter-nf_flow_table-fix-up-ct-state-of-flows-aft.patch
+++ b/target/linux/generic/backport-4.19/371-netfilter-nf_flow_table-fix-up-ct-state-of-flows-aft.patch
@@ -12,7 +12,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/netfilter/nf_flow_table_core.c
 +++ b/net/netfilter/nf_flow_table_core.c
-@@ -233,6 +233,9 @@ static void flow_offload_del(struct nf_f
+@@ -230,6 +230,9 @@ static void flow_offload_del(struct nf_f
  	e = container_of(flow, struct flow_offload_entry, flow);
  	clear_bit(IPS_OFFLOAD_BIT, &e->ct->status);
  
diff --git a/target/linux/generic/backport-4.19/400-v4.16-leds-trigger-Introduce-a-NETDEV-trigger.patch b/target/linux/generic/backport-4.19/400-v4.16-leds-trigger-Introduce-a-NETDEV-trigger.patch
deleted file mode 100644
index b7d680a11b..0000000000
diff --git a/target/linux/generic/backport-4.19/500-ubifs-Handle-re-linking-of-inodes-correctly-while-re.patch b/target/linux/generic/backport-4.19/500-ubifs-Handle-re-linking-of-inodes-correctly-while-re.patch
index 71e036c920..345a73cf46 100644
--- a/target/linux/generic/backport-4.19/500-ubifs-Handle-re-linking-of-inodes-correctly-while-re.patch
+++ b/target/linux/generic/backport-4.19/500-ubifs-Handle-re-linking-of-inodes-correctly-while-re.patch
@@ -53,21 +53,21 @@ Signed-off-by: Richard Weinberger <richard at nod.at>
 +{
 +	struct replay_entry *r;
 +
-+	ubifs_assert(rino->deletion);
-+	ubifs_assert(key_type(c, &rino->key) == UBIFS_INO_KEY);
++	ubifs_assert(c, rino->deletion);
++	ubifs_assert(c, key_type(c, &rino->key) == UBIFS_INO_KEY);
 +
 +	/*
 +	 * Find the most recent entry for the inode behind @rino and check
 +	 * whether it is a deletion.
 +	 */
 +	list_for_each_entry_reverse(r, &c->replay_list, list) {
-+		ubifs_assert(r->sqnum >= rino->sqnum);
++		ubifs_assert(c, r->sqnum >= rino->sqnum);
 +		if (key_inum(c, &r->key) == key_inum(c, &rino->key))
 +			return r->deletion == 0;
 +
 +	}
 +
-+	ubifs_assert(0);
++	ubifs_assert(c, 0);
 +	return false;
 +}
 +
@@ -75,7 +75,7 @@ Signed-off-by: Richard Weinberger <richard at nod.at>
   * apply_replay_entry - apply a replay entry to the TNC.
   * @c: UBIFS file-system description object
   * @r: replay entry to apply
-@@ -239,6 +271,11 @@ static int apply_replay_entry(struct ubi
+@@ -236,6 +268,11 @@ static int apply_replay_entry(struct ubi
  			{
  				ino_t inum = key_inum(c, &r->key);
  
diff --git a/target/linux/generic/config-4.19 b/target/linux/generic/config-4.19
index c43b389cbb..e75c75d027 100644
--- a/target/linux/generic/config-4.19
+++ b/target/linux/generic/config-4.19
@@ -1,3 +1,4 @@
+# CONFIG_104_QUAD_8 is not set
 CONFIG_32BIT=y
 # CONFIG_6LOWPAN is not set
 # CONFIG_6LOWPAN_DEBUGFS is not set
@@ -12,6 +13,7 @@ CONFIG_32BIT=y
 # CONFIG_ACCESSIBILITY is not set
 # CONFIG_ACENIC is not set
 # CONFIG_ACERHDF is not set
+# CONFIG_ACER_WIRELESS is not set
 # CONFIG_ACORN_PARTITION is not set
 # CONFIG_ACPI_ALS is not set
 # CONFIG_ACPI_APEI is not set
@@ -29,6 +31,7 @@ CONFIG_32BIT=y
 # CONFIG_AD2S90 is not set
 # CONFIG_AD5064 is not set
 # CONFIG_AD525X_DPOT is not set
+# CONFIG_AD5272 is not set
 # CONFIG_AD5360 is not set
 # CONFIG_AD5380 is not set
 # CONFIG_AD5421 is not set
@@ -39,7 +42,10 @@ CONFIG_32BIT=y
 # CONFIG_AD5593R is not set
 # CONFIG_AD5624R_SPI is not set
 # CONFIG_AD5686 is not set
+# CONFIG_AD5686_SPI is not set
+# CONFIG_AD5696_I2C is not set
 # CONFIG_AD5755 is not set
+# CONFIG_AD5758 is not set
 # CONFIG_AD5761 is not set
 # CONFIG_AD5764 is not set
 # CONFIG_AD5791 is not set
@@ -194,6 +200,7 @@ CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y
 # CONFIG_ARCH_IOP32X is not set
 # CONFIG_ARCH_IOP33X is not set
 # CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_K3 is not set
 # CONFIG_ARCH_KEYSTONE is not set
 # CONFIG_ARCH_KS8695 is not set
 # CONFIG_ARCH_LAYERSCAPE is not set
@@ -249,6 +256,7 @@ CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
 # CONFIG_ARCH_STI is not set
 # CONFIG_ARCH_STRATIX10 is not set
 # CONFIG_ARCH_SUNXI is not set
+# CONFIG_ARCH_SYNQUACER is not set
 # CONFIG_ARCH_TANGO is not set
 # CONFIG_ARCH_TEGRA is not set
 # CONFIG_ARCH_THUNDER is not set
@@ -283,6 +291,7 @@ CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
 # CONFIG_ARM64_ERRATUM_843419 is not set
 # CONFIG_ARM64_ERRATUM_845719 is not set
 # CONFIG_ARM64_ERRATUM_858921 is not set
+# CONFIG_ARM64_RAS_EXTN is not set
 # CONFIG_ARM64_RELOC_TEST is not set
 # CONFIG_ARM_APPENDED_DTB is not set
 # CONFIG_ARM_ARCH_TIMER is not set
@@ -290,11 +299,13 @@ CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
 # CONFIG_ARM_CCI is not set
 # CONFIG_ARM_CCI400_PMU is not set
 # CONFIG_ARM_CCI5xx_PMU is not set
+# CONFIG_ARM_CCI_PMU is not set
 # CONFIG_ARM_CCN is not set
 # CONFIG_ARM_CPUIDLE is not set
 CONFIG_ARM_CPU_TOPOLOGY=y
 # CONFIG_ARM_CRYPTO is not set
 CONFIG_ARM_DMA_MEM_BUFFERABLE=y
+# CONFIG_ARM_DSU_PMU is not set
 # CONFIG_ARM_ERRATA_326103 is not set
 # CONFIG_ARM_ERRATA_364296 is not set
 # CONFIG_ARM_ERRATA_411920 is not set
@@ -330,10 +341,13 @@ CONFIG_ARM_GIC_MAX_NR=1
 # CONFIG_ARM_PTDUMP is not set
 # CONFIG_ARM_SBSA_WATCHDOG is not set
 # CONFIG_ARM_SCPI_PROTOCOL is not set
+# CONFIG_ARM_SDE_INTERFACE is not set
+# CONFIG_ARM_SPE_PMU is not set
 # CONFIG_ARM_TIMER_SP804 is not set
 # CONFIG_ARM_UNWIND is not set
 # CONFIG_ARM_VIRT_EXT is not set
 # CONFIG_AS3935 is not set
+# CONFIG_ASIX_PHY is not set
 # CONFIG_ASM9260_TIMER is not set
 # CONFIG_ASUS_LAPTOP is not set
 # CONFIG_ASUS_WIRELESS is not set
@@ -401,6 +415,7 @@ CONFIG_ATM_CLIP_NO_ICMP=y
 # CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set
 # CONFIG_AURORA_NB8800 is not set
 # CONFIG_AUTOFS4_FS is not set
+# CONFIG_AUTOFS_FS is not set
 # CONFIG_AUTO_ZRELADDR is not set
 # CONFIG_AUXDISPLAY is not set
 # CONFIG_AX25 is not set
@@ -575,6 +590,7 @@ CONFIG_BLOCK=y
 # CONFIG_BMC150_MAGN is not set
 # CONFIG_BMC150_MAGN_I2C is not set
 # CONFIG_BMC150_MAGN_SPI is not set
+# CONFIG_BME680 is not set
 # CONFIG_BMG160 is not set
 # CONFIG_BMI160_I2C is not set
 # CONFIG_BMI160_SPI is not set
@@ -593,6 +609,7 @@ CONFIG_BOOKE_WDT_DEFAULT_TIMEOUT=3
 # CONFIG_BOOT_PRINTK_DELAY is not set
 CONFIG_BOOT_RAW=y
 CONFIG_BPF=y
+# CONFIG_BPFILTER is not set
 # CONFIG_BPF_JIT is not set
 # CONFIG_BPF_JIT_ALWAYS_ON is not set
 # CONFIG_BPF_STREAM_PARSER is not set
@@ -638,6 +655,7 @@ CONFIG_BROKEN_ON_SMP=y
 # CONFIG_BTRFS_DEBUG is not set
 # CONFIG_BTRFS_FS is not set
 # CONFIG_BTRFS_FS_POSIX_ACL is not set
+# CONFIG_BTRFS_FS_REF_VERIFY is not set
 # CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
 # CONFIG_BT_ATH3K is not set
 # CONFIG_BT_BNEP is not set
@@ -653,6 +671,7 @@ CONFIG_BT_BNEP_PROTO_FILTER=y
 # CONFIG_BT_HCIBTSDIO is not set
 # CONFIG_BT_HCIBTUART is not set
 # CONFIG_BT_HCIBTUSB is not set
+# CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set
 # CONFIG_BT_HCIBTUSB_RTL is not set
 # CONFIG_BT_HCIDTL1 is not set
 # CONFIG_BT_HCIUART is not set
@@ -677,6 +696,7 @@ CONFIG_BUG=y
 # CONFIG_BUG_ON_DATA_CORRUPTION is not set
 CONFIG_BUILDTIME_EXTABLE_SORT=y
 # CONFIG_BUILD_BIN2C is not set
+CONFIG_BUILD_SALT=""
 # CONFIG_C2PORT is not set
 CONFIG_CACHE_L2X0_PMU=y
 # CONFIG_CADENCE_WATCHDOG is not set
@@ -697,6 +717,7 @@ CONFIG_CACHE_L2X0_PMU=y
 # CONFIG_CAN_RCAR_CANFD is not set
 # CONFIG_CAN_SLCAN is not set
 # CONFIG_CAN_SUN4I is not set
+# CONFIG_CAN_UCAN is not set
 # CONFIG_CAN_VCAN is not set
 # CONFIG_CAN_VXCAN is not set
 # CONFIG_CAPI_AVM is not set
@@ -714,6 +735,7 @@ CONFIG_CARDBUS=y
 # CONFIG_CAVIUM_ERRATUM_27456 is not set
 # CONFIG_CAVIUM_ERRATUM_30115 is not set
 # CONFIG_CAVIUM_OCTEON_SOC is not set
+# CONFIG_CAVIUM_PTP is not set
 # CONFIG_CB710_CORE is not set
 # CONFIG_CC10001_ADC is not set
 # CONFIG_CCS811 is not set
@@ -734,6 +756,7 @@ CONFIG_CC_STACKPROTECTOR_NONE=y
 # CONFIG_CGROUP_NET_CLASSID is not set
 # CONFIG_CGROUP_NET_PRIO is not set
 # CONFIG_CGROUP_RDMA is not set
+# CONFIG_CHARGER_ADP5061 is not set
 # CONFIG_CHARGER_BQ2415X is not set
 # CONFIG_CHARGER_BQ24190 is not set
 # CONFIG_CHARGER_BQ24257 is not set
@@ -763,6 +786,7 @@ CONFIG_CC_STACKPROTECTOR_NONE=y
 # CONFIG_CICADA_PHY is not set
 # CONFIG_CIFS is not set
 # CONFIG_CIFS_ACL is not set
+CONFIG_CIFS_ALLOW_INSECURE_LEGACY=y
 # CONFIG_CIFS_DEBUG is not set
 # CONFIG_CIFS_DEBUG2 is not set
 # CONFIG_CIFS_FSCACHE is not set
@@ -801,6 +825,7 @@ CONFIG_CMDLINE=""
 # CONFIG_COMMON_CLK_CDCE925 is not set
 # CONFIG_COMMON_CLK_CS2000_CP is not set
 # CONFIG_COMMON_CLK_IPROC is not set
+# CONFIG_COMMON_CLK_MAX9485 is not set
 # CONFIG_COMMON_CLK_NXP is not set
 # CONFIG_COMMON_CLK_PIC32 is not set
 # CONFIG_COMMON_CLK_PWM is not set
@@ -808,6 +833,7 @@ CONFIG_CMDLINE=""
 # CONFIG_COMMON_CLK_QCOM is not set
 # CONFIG_COMMON_CLK_SI514 is not set
 # CONFIG_COMMON_CLK_SI5351 is not set
+# CONFIG_COMMON_CLK_SI544 is not set
 # CONFIG_COMMON_CLK_SI570 is not set
 # CONFIG_COMMON_CLK_VC5 is not set
 # CONFIG_COMMON_CLK_VERSATILE is not set
@@ -818,8 +844,10 @@ CONFIG_COMPACTION=y
 # CONFIG_COMPAT_BRK is not set
 # CONFIG_COMPILE_TEST is not set
 # CONFIG_CONFIGFS_FS is not set
+# CONFIG_CONFIG_KVM_AMD_SEV is not set
 # CONFIG_CONNECTOR is not set
 CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
+CONFIG_CONSOLE_LOGLEVEL_QUIET=4
 CONFIG_CONSTRUCTORS=y
 # CONFIG_CONTEXT_SWITCH_TRACER is not set
 # CONFIG_COPS is not set
@@ -841,9 +869,12 @@ CONFIG_CONSTRUCTORS=y
 # CONFIG_CPU_IDLE is not set
 # CONFIG_CPU_IDLE_GOV_MENU is not set
 # CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
+# CONFIG_CPU_ISOLATION is not set
 # CONFIG_CPU_NO_EFFICIENT_FFS is not set
 CONFIG_CPU_SW_DOMAIN_PAN=y
 # CONFIG_CRAMFS is not set
+CONFIG_CRAMFS_BLOCKDEV=y
+# CONFIG_CRAMFS_MTD is not set
 CONFIG_CRASHLOG=y
 # CONFIG_CRASH_DUMP is not set
 # CONFIG_CRC16 is not set
@@ -854,6 +885,7 @@ CONFIG_CRC32_SARWATE=y
 # CONFIG_CRC32_SLICEBY4 is not set
 # CONFIG_CRC32_SLICEBY8 is not set
 # CONFIG_CRC4 is not set
+# CONFIG_CRC64 is not set
 # CONFIG_CRC7 is not set
 # CONFIG_CRC8 is not set
 # CONFIG_CRC_CCITT is not set
@@ -864,6 +896,12 @@ CONFIG_CROSS_COMPILE=""
 CONFIG_CRYPTO=y
 # CONFIG_CRYPTO_842 is not set
 # CONFIG_CRYPTO_AEAD is not set
+# CONFIG_CRYPTO_AEGIS128 is not set
+# CONFIG_CRYPTO_AEGIS128L is not set
+# CONFIG_CRYPTO_AEGIS128L_AESNI_SSE2 is not set
+# CONFIG_CRYPTO_AEGIS128_AESNI_SSE2 is not set
+# CONFIG_CRYPTO_AEGIS256 is not set
+# CONFIG_CRYPTO_AEGIS256_AESNI_SSE2 is not set
 CONFIG_CRYPTO_AES=y
 # CONFIG_CRYPTO_AES_586 is not set
 # CONFIG_CRYPTO_AES_ARM is not set
@@ -884,6 +922,7 @@ CONFIG_CRYPTO_BLKCIPHER2=y
 # CONFIG_CRYPTO_CAST6 is not set
 # CONFIG_CRYPTO_CBC is not set
 # CONFIG_CRYPTO_CCM is not set
+# CONFIG_CRYPTO_CFB is not set
 # CONFIG_CRYPTO_CHACHA20 is not set
 # CONFIG_CRYPTO_CHACHA20POLY1305 is not set
 # CONFIG_CRYPTO_CMAC is not set
@@ -905,6 +944,7 @@ CONFIG_CRYPTO_BLKCIPHER2=y
 # CONFIG_CRYPTO_DEV_FSL_CAAM is not set
 # CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC is not set
 # CONFIG_CRYPTO_DEV_HIFN_795X is not set
+# CONFIG_CRYPTO_DEV_HISI_SEC is not set
 # CONFIG_CRYPTO_DEV_IMGTEC_HASH is not set
 # CONFIG_CRYPTO_DEV_MARVELL_CESA is not set
 # CONFIG_CRYPTO_DEV_MV_CESA is not set
@@ -921,6 +961,7 @@ CONFIG_CRYPTO_BLKCIPHER2=y
 # CONFIG_CRYPTO_DEV_S5P is not set
 # CONFIG_CRYPTO_DEV_SAFEXCEL is not set
 # CONFIG_CRYPTO_DEV_SAHARA is not set
+# CONFIG_CRYPTO_DEV_SP_PSP is not set
 # CONFIG_CRYPTO_DEV_TALITOS is not set
 # CONFIG_CRYPTO_DEV_VIRTIO is not set
 # CONFIG_CRYPTO_DH is not set
@@ -953,6 +994,11 @@ CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
 # CONFIG_CRYPTO_MD4 is not set
 # CONFIG_CRYPTO_MD5 is not set
 # CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_MORUS1280 is not set
+# CONFIG_CRYPTO_MORUS1280_AVX2 is not set
+# CONFIG_CRYPTO_MORUS1280_SSE2 is not set
+# CONFIG_CRYPTO_MORUS640 is not set
+# CONFIG_CRYPTO_MORUS640_SSE2 is not set
 # CONFIG_CRYPTO_NULL is not set
 # CONFIG_CRYPTO_PCBC is not set
 # CONFIG_CRYPTO_PCOMP is not set
@@ -975,6 +1021,9 @@ CONFIG_CRYPTO_PCRYPT=y
 # CONFIG_CRYPTO_SHA256 is not set
 # CONFIG_CRYPTO_SHA3 is not set
 # CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_SM3 is not set
+# CONFIG_CRYPTO_SM4 is not set
+# CONFIG_CRYPTO_SPECK is not set
 # CONFIG_CRYPTO_TEA is not set
 # CONFIG_CRYPTO_TEST is not set
 # CONFIG_CRYPTO_TGR192 is not set
@@ -991,6 +1040,7 @@ CONFIG_CRYPTO_PCRYPT=y
 # CONFIG_CRYPTO_XCBC is not set
 # CONFIG_CRYPTO_XTS is not set
 # CONFIG_CRYPTO_ZLIB is not set
+# CONFIG_CRYPTO_ZSTD is not set
 # CONFIG_CS5535_MFGPT is not set
 # CONFIG_CS89x0 is not set
 # CONFIG_CUSE is not set
@@ -1049,6 +1099,7 @@ CONFIG_DEBUG_KERNEL=y
 # CONFIG_DEBUG_RODATA is not set
 # CONFIG_DEBUG_RODATA_TEST is not set
 # CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_DEBUG_RWSEMS is not set
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
 # CONFIG_DEBUG_SEMIHOSTING is not set
 # CONFIG_DEBUG_SET_MODULE_RONX is not set
@@ -1081,8 +1132,10 @@ CONFIG_DEFAULT_SECURITY=""
 CONFIG_DEFAULT_SECURITY_DAC=y
 CONFIG_DEFAULT_TCP_CONG="cubic"
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
 # CONFIG_DELL_LAPTOP is not set
 # CONFIG_DELL_RBTN is not set
+# CONFIG_DELL_SMBIOS is not set
 # CONFIG_DELL_SMO8800 is not set
 # CONFIG_DEPRECATED_PARAM_STRUCT is not set
 # CONFIG_DETECT_HUNG_TASK is not set
@@ -1136,14 +1189,18 @@ CONFIG_DEVPORT=y
 # CONFIG_DM_SWITCH is not set
 # CONFIG_DM_THIN_PROVISIONING is not set
 # CONFIG_DM_UEVENT is not set
+# CONFIG_DM_UNSTRIPED is not set
 # CONFIG_DM_VERITY is not set
+# CONFIG_DM_WRITECACHE is not set
 # CONFIG_DM_ZERO is not set
 # CONFIG_DNET is not set
 # CONFIG_DNOTIFY is not set
 # CONFIG_DNS_RESOLVER is not set
 CONFIG_DOUBLEFAULT=y
+# CONFIG_DP83822_PHY is not set
 # CONFIG_DP83848_PHY is not set
 # CONFIG_DP83867_PHY is not set
+# CONFIG_DP83TC811_PHY is not set
 # CONFIG_DPOT_DAC is not set
 CONFIG_DQL=y
 # CONFIG_DRAGONRISE_FF is not set
@@ -1158,6 +1215,7 @@ CONFIG_DQL=y
 # CONFIG_DRM_DEBUG_MM is not set
 # CONFIG_DRM_DEBUG_MM_SELFTEST is not set
 # CONFIG_DRM_DP_AUX_CHARDEV is not set
+# CONFIG_DRM_DP_CEC is not set
 # CONFIG_DRM_DUMB_VGA_DAC is not set
 # CONFIG_DRM_DW_HDMI_CEC is not set
 # CONFIG_DRM_ETNAVIV is not set
@@ -1208,8 +1266,10 @@ CONFIG_DQL=y
 # CONFIG_DRM_UDL is not set
 # CONFIG_DRM_VBOXVIDEO is not set
 # CONFIG_DRM_VGEM is not set
+# CONFIG_DRM_XEN is not set
 # CONFIG_DS1682 is not set
 # CONFIG_DS1803 is not set
+# CONFIG_DS4424 is not set
 # CONFIG_DST_CACHE is not set
 # CONFIG_DTLK is not set
 # CONFIG_DUMMY is not set
@@ -1228,6 +1288,7 @@ CONFIG_DUMMY_CONSOLE_ROWS=25
 # CONFIG_DWMAC_ROCKCHIP is not set
 # CONFIG_DWMAC_SOCFPGA is not set
 # CONFIG_DWMAC_STI is not set
+# CONFIG_DW_AXI_DMAC is not set
 # CONFIG_DW_DMAC is not set
 # CONFIG_DW_DMAC_PCI is not set
 # CONFIG_DW_WATCHDOG is not set
@@ -1238,6 +1299,7 @@ CONFIG_DUMMY_CONSOLE_ROWS=25
 # CONFIG_E1000E_HWTS is not set
 # CONFIG_EARLY_PRINTK_8250 is not set
 # CONFIG_EARLY_PRINTK_USB_XDBC is not set
+# CONFIG_EBC_C384_WDT is not set
 # CONFIG_ECHO is not set
 # CONFIG_ECRYPT_FS is not set
 # CONFIG_EDAC is not set
@@ -1271,6 +1333,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
 # CONFIG_EPIC100 is not set
 CONFIG_EPOLL=y
 # CONFIG_EQUALIZER is not set
+# CONFIG_EROFS_FS is not set
 # CONFIG_ET131X is not set
 CONFIG_ETHERNET=y
 # CONFIG_ETHOC is not set
@@ -1308,6 +1371,7 @@ CONFIG_EXTRA_TARGETS=""
 # CONFIG_F2FS_FS_ENCRYPTION is not set
 # CONFIG_F2FS_FS_POSIX_ACL is not set
 # CONFIG_F2FS_IO_TRACE is not set
+# CONFIG_FAILOVER is not set
 # CONFIG_FAIR_GROUP_SCHED is not set
 # CONFIG_FANOTIFY is not set
 CONFIG_FAT_DEFAULT_CODEPAGE=437
@@ -1402,6 +1466,7 @@ CONFIG_FB_NOTIFY=y
 # CONFIG_FHANDLE is not set
 CONFIG_FIB_RULES=y
 CONFIG_FILE_LOCKING=y
+# CONFIG_FIND_BIT_BENCHMARK is not set
 # CONFIG_FIREWIRE is not set
 # CONFIG_FIREWIRE_NOSY is not set
 # CONFIG_FIREWIRE_SERIAL is not set
@@ -1419,6 +1484,7 @@ CONFIG_FORCE_MAX_ZONEORDER=11
 CONFIG_FORTIFY_SOURCE=y
 # CONFIG_FPGA is not set
 # CONFIG_FRAMEBUFFER_CONSOLE is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set
 # CONFIG_FRAME_POINTER is not set
 CONFIG_FRAME_WARN=1024
 # CONFIG_FREEZER is not set
@@ -1463,6 +1529,7 @@ CONFIG_GACT_PROB=y
 # CONFIG_GCOV is not set
 # CONFIG_GCOV_KERNEL is not set
 # CONFIG_GDB_SCRIPTS is not set
+# CONFIG_GEMINI_ETHERNET is not set
 # CONFIG_GENERIC_ADC_BATTERY is not set
 # CONFIG_GENERIC_ADC_THERMAL is not set
 CONFIG_GENERIC_CALIBRATE_DELAY=y
@@ -1479,10 +1546,16 @@ CONFIG_GENERIC_NET_UTILS=y
 # CONFIG_GIGASET_DEBUG is not set
 # CONFIG_GIGASET_DUMMYLL is not set
 # CONFIG_GLOB_SELFTEST is not set
+# CONFIG_GNSS is not set
 # CONFIG_GOLDFISH is not set
 # CONFIG_GOOGLE_FIRMWARE is not set
 # CONFIG_GP2AP020A00F is not set
+# CONFIG_GPD_POCKET_FAN is not set
 # CONFIG_GPIOLIB is not set
+CONFIG_GPIOLIB_FASTPATH_LIMIT=512
+# CONFIG_GPIO_104_DIO_48E is not set
+# CONFIG_GPIO_104_IDIO_16 is not set
+# CONFIG_GPIO_104_IDI_48 is not set
 # CONFIG_GPIO_74X164 is not set
 # CONFIG_GPIO_74XX_MMIO is not set
 # CONFIG_GPIO_ADNP is not set
@@ -1501,12 +1574,15 @@ CONFIG_GENERIC_NET_UTILS=y
 # CONFIG_GPIO_GENERIC_PLATFORM is not set
 # CONFIG_GPIO_GPIO_MM is not set
 # CONFIG_GPIO_GRGPIO is not set
+# CONFIG_GPIO_HLWD is not set
 # CONFIG_GPIO_ICH is not set
 # CONFIG_GPIO_IT87 is not set
 # CONFIG_GPIO_LYNXPOINT is not set
+# CONFIG_GPIO_MAX3191X is not set
 # CONFIG_GPIO_MAX7300 is not set
 # CONFIG_GPIO_MAX7301 is not set
 # CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_MB86S7X is not set
 # CONFIG_GPIO_MC33880 is not set
 # CONFIG_GPIO_MCP23S08 is not set
 # CONFIG_GPIO_ML_IOH is not set
@@ -1515,6 +1591,7 @@ CONFIG_GENERIC_NET_UTILS=y
 # CONFIG_GPIO_PCA953X is not set
 # CONFIG_GPIO_PCF857X is not set
 # CONFIG_GPIO_PCH is not set
+# CONFIG_GPIO_PCIE_IDIO_24 is not set
 # CONFIG_GPIO_PCI_IDIO_16 is not set
 # CONFIG_GPIO_PISOSR is not set
 # CONFIG_GPIO_PL061 is not set
@@ -1530,6 +1607,7 @@ CONFIG_GENERIC_NET_UTILS=y
 # CONFIG_GPIO_TS5500 is not set
 # CONFIG_GPIO_VX855 is not set
 # CONFIG_GPIO_WATCHDOG is not set
+# CONFIG_GPIO_WINBOND is not set
 # CONFIG_GPIO_WS16C48 is not set
 # CONFIG_GPIO_XGENE is not set
 # CONFIG_GPIO_XILINX is not set
@@ -1540,10 +1618,12 @@ CONFIG_GENERIC_NET_UTILS=y
 # CONFIG_GREYBUS is not set
 # CONFIG_GS_FPGABOOT is not set
 # CONFIG_GTP is not set
+# CONFIG_GUP_BENCHMARK is not set
 # CONFIG_HAMACHI is not set
 # CONFIG_HAMRADIO is not set
 # CONFIG_HAPPYMEAL is not set
 # CONFIG_HARDENED_USERCOPY is not set
+CONFIG_HARDEN_EL2_VECTORS=y
 # CONFIG_HARDLOCKUP_DETECTOR is not set
 # CONFIG_HAVE_AOUT is not set
 CONFIG_HAVE_ARCH_HARDENED_USERCOPY=y
@@ -1601,9 +1681,11 @@ CONFIG_HAVE_NMI=y
 # CONFIG_HID_CHICONY is not set
 # CONFIG_HID_CMEDIA is not set
 # CONFIG_HID_CORSAIR is not set
+# CONFIG_HID_COUGAR is not set
 # CONFIG_HID_CP2112 is not set
 # CONFIG_HID_CYPRESS is not set
 # CONFIG_HID_DRAGONRISE is not set
+# CONFIG_HID_ELAN is not set
 # CONFIG_HID_ELECOM is not set
 # CONFIG_HID_ELO is not set
 # CONFIG_HID_EMS_FF is not set
@@ -1611,12 +1693,14 @@ CONFIG_HAVE_NMI=y
 # CONFIG_HID_GEMBIRD is not set
 # CONFIG_HID_GENERIC is not set
 # CONFIG_HID_GFRM is not set
+# CONFIG_HID_GOOGLE_HAMMER is not set
 # CONFIG_HID_GREENASIA is not set
 # CONFIG_HID_GT683R is not set
 # CONFIG_HID_GYRATION is not set
 # CONFIG_HID_HOLTEK is not set
 # CONFIG_HID_ICADE is not set
 # CONFIG_HID_ITE is not set
+# CONFIG_HID_JABRA is not set
 # CONFIG_HID_KENSINGTON is not set
 # CONFIG_HID_KEYTOUCH is not set
 # CONFIG_HID_KYE is not set
@@ -1642,6 +1726,7 @@ CONFIG_HAVE_NMI=y
 # CONFIG_HID_PLANTRONICS is not set
 # CONFIG_HID_PRIMAX is not set
 # CONFIG_HID_PRODIKEYS is not set
+# CONFIG_HID_REDRAGON is not set
 # CONFIG_HID_RETRODE is not set
 # CONFIG_HID_RMI is not set
 # CONFIG_HID_ROCCAT is not set
@@ -1651,6 +1736,7 @@ CONFIG_HAVE_NMI=y
 # CONFIG_HID_SMARTJOYPLUS is not set
 # CONFIG_HID_SONY is not set
 # CONFIG_HID_SPEEDLINK is not set
+# CONFIG_HID_STEAM is not set
 # CONFIG_HID_STEELSERIES is not set
 # CONFIG_HID_SUNPLUS is not set
 # CONFIG_HID_THINGM is not set
@@ -1672,6 +1758,7 @@ CONFIG_HIGH_RES_TIMERS=y
 # CONFIG_HIP04_ETH is not set
 # CONFIG_HIPPI is not set
 # CONFIG_HISILICON_ERRATUM_161010101 is not set
+# CONFIG_HISILICON_ERRATUM_161600802 is not set
 # CONFIG_HISI_FEMAC is not set
 # CONFIG_HIX5HD2_GMAC is not set
 # CONFIG_HMC6352 is not set
@@ -1768,6 +1855,7 @@ CONFIG_HZ_100=y
 # CONFIG_I2C_ELEKTOR is not set
 # CONFIG_I2C_EMEV2 is not set
 # CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_GPIO_FAULT_INJECTOR is not set
 # CONFIG_I2C_HELPER_AUTO is not set
 # CONFIG_I2C_HID is not set
 # CONFIG_I2C_I801 is not set
@@ -1832,6 +1920,7 @@ CONFIG_HZ_100=y
 # CONFIG_IBM_EMAC_RGMII is not set
 # CONFIG_IBM_EMAC_TAH is not set
 # CONFIG_IBM_EMAC_ZMII is not set
+# CONFIG_ICE is not set
 # CONFIG_ICPLUS_PHY is not set
 # CONFIG_ICS932S401 is not set
 # CONFIG_IDE is not set
@@ -1844,16 +1933,21 @@ CONFIG_HZ_100=y
 # CONFIG_IEEE802154_ADF7242 is not set
 # CONFIG_IEEE802154_ATUSB is not set
 # CONFIG_IEEE802154_CA8210 is not set
+# CONFIG_IEEE802154_HWSIM is not set
+# CONFIG_IEEE802154_MCR20A is not set
 # CONFIG_IFB is not set
 # CONFIG_IGB is not set
 # CONFIG_IGBVF is not set
 # CONFIG_IIO is not set
 # CONFIG_IIO_BUFFER_CB is not set
+# CONFIG_IIO_BUFFER_HW_CONSUMER is not set
 # CONFIG_IIO_CONFIGFS is not set
 CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
+# CONFIG_IIO_CROS_EC_ACCEL_LEGACY is not set
 # CONFIG_IIO_INTERRUPT_TRIGGER is not set
 # CONFIG_IIO_MUX is not set
 # CONFIG_IIO_PERIODIC_RTC_TRIGGER is not set
+# CONFIG_IIO_RESCALE is not set
 # CONFIG_IIO_SIMPLE_DUMMY is not set
 # CONFIG_IIO_SSP_SENSORHUB is not set
 # CONFIG_IIO_ST_ACCEL_3AXIS is not set
@@ -1873,6 +1967,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
 # CONFIG_IMX_IPUV3_CORE is not set
 # CONFIG_IMX_THERMAL is not set
 # CONFIG_INA2XX_ADC is not set
+# CONFIG_INDIRECT_PIO is not set
 CONFIG_INET=y
 # CONFIG_INET6_AH is not set
 # CONFIG_INET6_ESP is not set
@@ -2002,6 +2097,7 @@ CONFIG_INPUT_MISC=y
 # CONFIG_INTEL_RST is not set
 # CONFIG_INTEL_SMARTCONNECT is not set
 # CONFIG_INTEL_SOC_PMIC is not set
+# CONFIG_INTEL_SOC_PMIC_CHTDC_TI is not set
 # CONFIG_INTEL_SOC_PMIC_CHTWC is not set
 # CONFIG_INTEL_TH is not set
 # CONFIG_INTEL_VBTN is not set
@@ -2029,6 +2125,7 @@ CONFIG_IO_STRICT_DEVMEM=y
 # CONFIG_IP6_NF_MATCH_OPTS is not set
 # CONFIG_IP6_NF_MATCH_RPFILTER is not set
 # CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_SRH is not set
 # CONFIG_IP6_NF_NAT is not set
 # CONFIG_IP6_NF_RAW is not set
 # CONFIG_IP6_NF_SECURITY is not set
@@ -2104,6 +2201,8 @@ CONFIG_IP_ROUTE_VERBOSE=y
 # CONFIG_IP_SET is not set
 # CONFIG_IP_SET_HASH_IPMAC is not set
 # CONFIG_IP_VS is not set
+# CONFIG_IP_VS_MH is not set
+CONFIG_IP_VS_MH_TAB_INDEX=10
 # CONFIG_IRDA is not set
 # CONFIG_IRQSOFF_TRACER is not set
 # CONFIG_IRQ_ALL_CPUS is not set
@@ -2146,6 +2245,7 @@ CONFIG_ISDN=y
 # CONFIG_ISL29003 is not set
 # CONFIG_ISL29020 is not set
 # CONFIG_ISL29125 is not set
+# CONFIG_ISL29501 is not set
 # CONFIG_ISO9660_FS is not set
 # CONFIG_ISS4xx is not set
 # CONFIG_ITG3200 is not set
@@ -2154,6 +2254,7 @@ CONFIG_ISDN=y
 # CONFIG_IXGB is not set
 # CONFIG_IXGBE is not set
 # CONFIG_IXGBEVF is not set
+# CONFIG_JAILHOUSE_GUEST is not set
 # CONFIG_JBD2_DEBUG is not set
 # CONFIG_JFFS2_CMODE_FAVOURLZO is not set
 # CONFIG_JFFS2_CMODE_NONE is not set
@@ -2257,6 +2358,7 @@ CONFIG_KUSER_HELPERS=y
 # CONFIG_L2TP_ETH is not set
 # CONFIG_L2TP_IP is not set
 # CONFIG_L2TP_V3 is not set
+# CONFIG_LAN743X is not set
 # CONFIG_LANMEDIA is not set
 # CONFIG_LANTIQ is not set
 # CONFIG_LAPB is not set
@@ -2273,11 +2375,13 @@ CONFIG_LBDAF=y
 # CONFIG_LCD_LMS283GF05 is not set
 # CONFIG_LCD_LMS501KF03 is not set
 # CONFIG_LCD_LTV350QV is not set
+# CONFIG_LCD_OTM3225A is not set
 # CONFIG_LCD_S6E63M0 is not set
 # CONFIG_LCD_TDO24M is not set
 # CONFIG_LCD_VGG2432A4 is not set
 # CONFIG_LDM_PARTITION is not set
 CONFIG_LD_DEAD_CODE_DATA_ELIMINATION=y
+# CONFIG_LEDS_APU is not set
 # CONFIG_LEDS_BCM6328 is not set
 # CONFIG_LEDS_BCM6358 is not set
 # CONFIG_LEDS_BD2802 is not set
@@ -2285,6 +2389,7 @@ CONFIG_LD_DEAD_CODE_DATA_ELIMINATION=y
 CONFIG_LEDS_BRIGHTNESS_HW_CHANGED=y
 CONFIG_LEDS_CLASS=y
 # CONFIG_LEDS_CLASS_FLASH is not set
+# CONFIG_LEDS_CR0014114 is not set
 # CONFIG_LEDS_DAC124S085 is not set
 # CONFIG_LEDS_GPIO is not set
 # CONFIG_LEDS_INTEL_SS4200 is not set
@@ -2293,6 +2398,7 @@ CONFIG_LEDS_CLASS=y
 # CONFIG_LEDS_LM3530 is not set
 # CONFIG_LEDS_LM355x is not set
 # CONFIG_LEDS_LM3642 is not set
+# CONFIG_LEDS_LM3692X is not set
 # CONFIG_LEDS_LP3944 is not set
 # CONFIG_LEDS_LP3952 is not set
 # CONFIG_LEDS_LP5521 is not set
@@ -2302,6 +2408,7 @@ CONFIG_LEDS_CLASS=y
 # CONFIG_LEDS_LP8860 is not set
 # CONFIG_LEDS_LT3593 is not set
 # CONFIG_LEDS_MLXCPLD is not set
+# CONFIG_LEDS_MLXREG is not set
 # CONFIG_LEDS_NIC78BX is not set
 # CONFIG_LEDS_NS2 is not set
 # CONFIG_LEDS_OT200 is not set
@@ -2314,6 +2421,7 @@ CONFIG_LEDS_CLASS=y
 # CONFIG_LEDS_TCA6507 is not set
 # CONFIG_LEDS_TLC591XX is not set
 CONFIG_LEDS_TRIGGERS=y
+# CONFIG_LEDS_TRIGGER_ACTIVITY is not set
 # CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
 # CONFIG_LEDS_TRIGGER_CAMERA is not set
 # CONFIG_LEDS_TRIGGER_CPU is not set
@@ -2384,6 +2492,7 @@ CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
 # CONFIG_LTPC is not set
 # CONFIG_LTR501 is not set
 # CONFIG_LUSTRE_FS is not set
+# CONFIG_LV0104CS is not set
 # CONFIG_LWTUNNEL is not set
 # CONFIG_LXT_PHY is not set
 # CONFIG_LZ4HC_COMPRESS is not set
@@ -2422,6 +2531,7 @@ CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
 CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1
 # CONFIG_MAGIC_SYSRQ_SERIAL is not set
 # CONFIG_MAILBOX is not set
+# CONFIG_MANAGER_SBS is not set
 # CONFIG_MANDATORY_FILE_LOCKING is not set
 # CONFIG_MANGLE_BOOTARGS is not set
 # CONFIG_MARVELL_10G_PHY is not set
@@ -2445,6 +2555,7 @@ CONFIG_MAY_USE_DEVLINK=y
 # CONFIG_MCB is not set
 # CONFIG_MCP320X is not set
 # CONFIG_MCP3422 is not set
+# CONFIG_MCP4018 is not set
 # CONFIG_MCP4131 is not set
 # CONFIG_MCP4531 is not set
 # CONFIG_MCP4725 is not set
@@ -2457,6 +2568,7 @@ CONFIG_MAY_USE_DEVLINK=y
 # CONFIG_MDIO_BUS_MUX_MMIOREG is not set
 # CONFIG_MDIO_DEVICE is not set
 # CONFIG_MDIO_HISI_FEMAC is not set
+# CONFIG_MDIO_MSCC_MIIM is not set
 # CONFIG_MDIO_OCTEON is not set
 # CONFIG_MDIO_THUNDER is not set
 # CONFIG_MD_FAULTY is not set
@@ -2476,6 +2588,7 @@ CONFIG_MAY_USE_DEVLINK=y
 # CONFIG_MEGARAID_LEGACY is not set
 # CONFIG_MEGARAID_NEWGEN is not set
 # CONFIG_MEGARAID_SAS is not set
+# CONFIG_MELLANOX_PLATFORM is not set
 CONFIG_MEMBARRIER=y
 # CONFIG_MEMORY is not set
 # CONFIG_MEMORY_FAILURE is not set
@@ -2519,6 +2632,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 # CONFIG_MFD_LM3533 is not set
 # CONFIG_MFD_LP3943 is not set
 # CONFIG_MFD_LP8788 is not set
+# CONFIG_MFD_MADERA is not set
 # CONFIG_MFD_MAX14577 is not set
 # CONFIG_MFD_MAX77620 is not set
 # CONFIG_MFD_MAX77686 is not set
@@ -2543,6 +2657,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 # CONFIG_MFD_RETU is not set
 # CONFIG_MFD_RK808 is not set
 # CONFIG_MFD_RN5T618 is not set
+# CONFIG_MFD_ROHM_BD718XX is not set
 # CONFIG_MFD_RT5033 is not set
 # CONFIG_MFD_RTSX_PCI is not set
 # CONFIG_MFD_RTSX_USB is not set
@@ -2588,6 +2703,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 # CONFIG_MICREL_PHY is not set
 # CONFIG_MICROCHIP_KSZ is not set
 # CONFIG_MICROCHIP_PHY is not set
+# CONFIG_MICROCHIP_T1_PHY is not set
 # CONFIG_MICROSEMI_PHY is not set
 # CONFIG_MIGRATION is not set
 CONFIG_MII=y
@@ -2606,6 +2722,8 @@ CONFIG_MII=y
 # CONFIG_MIPS_PLATFORM_DEVICES is not set
 # CONFIG_MIPS_SEAD3 is not set
 CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_MISC_RTSX_PCI is not set
+# CONFIG_MISC_RTSX_USB is not set
 # CONFIG_MISDN is not set
 # CONFIG_MISDN_AVMFRITZ is not set
 # CONFIG_MISDN_HFCPCI is not set
@@ -2619,6 +2737,7 @@ CONFIG_MISC_FILESYSTEMS=y
 # CONFIG_MLX4_EN is not set
 # CONFIG_MLX5_CORE is not set
 # CONFIG_MLX90614 is not set
+# CONFIG_MLX90632 is not set
 # CONFIG_MLXFW is not set
 # CONFIG_MLXSW_CORE is not set
 # CONFIG_MLX_CPLD_PLATFORM is not set
@@ -2638,6 +2757,7 @@ CONFIG_MMC_BLOCK_BOUNCE=y
 CONFIG_MMC_BLOCK_MINORS=8
 # CONFIG_MMC_CAVIUM_THUNDERX is not set
 # CONFIG_MMC_CB710 is not set
+# CONFIG_MMC_CQHCI is not set
 # CONFIG_MMC_DEBUG is not set
 # CONFIG_MMC_DW is not set
 # CONFIG_MMC_MTK is not set
@@ -2652,8 +2772,10 @@ CONFIG_MMC_BLOCK_MINORS=8
 # CONFIG_MMC_SDHCI_MSM is not set
 # CONFIG_MMC_SDHCI_OF_ARASAN is not set
 # CONFIG_MMC_SDHCI_OF_AT91 is not set
+# CONFIG_MMC_SDHCI_OF_DWCMSHC is not set
 # CONFIG_MMC_SDHCI_OF_ESDHC is not set
 # CONFIG_MMC_SDHCI_OF_HLWD is not set
+# CONFIG_MMC_SDHCI_OMAP is not set
 # CONFIG_MMC_SDHCI_PXAV2 is not set
 # CONFIG_MMC_SDHCI_PXAV3 is not set
 # CONFIG_MMC_SDHCI_S3C is not set
@@ -2821,6 +2943,7 @@ CONFIG_MTD_ROOTFS_ROOT_DEV=y
 # CONFIG_MTD_SLRAM is not set
 # CONFIG_MTD_SM_COMMON is not set
 # CONFIG_MTD_SPINAND_MT29F is not set
+# CONFIG_MTD_SPI_NAND is not set
 # CONFIG_MTD_SPI_NOR is not set
 # CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
 CONFIG_MTD_SPI_NOR_USE_4K_SECTORS_LIMIT=4096
@@ -2846,6 +2969,7 @@ CONFIG_MTD_SPLIT_SUPPORT=y
 # CONFIG_MTD_UBI is not set
 # CONFIG_MTD_UIMAGE_SPLIT is not set
 # CONFIG_MTD_VIRT_CONCAT is not set
+# CONFIG_MTK_MMC is not set
 CONFIG_MULTIUSER=y
 # CONFIG_MUTEX_SPIN_ON_OWNER is not set
 # CONFIG_MV643XX_ETH is not set
@@ -2871,6 +2995,7 @@ CONFIG_MULTIUSER=y
 CONFIG_NET=y
 # CONFIG_NETCONSOLE is not set
 CONFIG_NETDEVICES=y
+# CONFIG_NETDEVSIM is not set
 # CONFIG_NETFILTER is not set
 # CONFIG_NETFILTER_ADVANCED is not set
 # CONFIG_NETFILTER_DEBUG is not set
@@ -2879,6 +3004,7 @@ CONFIG_NETDEVICES=y
 # CONFIG_NETFILTER_NETLINK_ACCT is not set
 # CONFIG_NETFILTER_NETLINK_GLUE_CT is not set
 # CONFIG_NETFILTER_NETLINK_LOG is not set
+# CONFIG_NETFILTER_NETLINK_OSF is not set
 # CONFIG_NETFILTER_NETLINK_QUEUE is not set
 # CONFIG_NETFILTER_XTABLES is not set
 # CONFIG_NETFILTER_XT_CONNMARK is not set
@@ -3013,11 +3139,13 @@ CONFIG_NET_CORE=y
 # CONFIG_NET_EMATCH is not set
 # CONFIG_NET_EMATCH_CANID is not set
 # CONFIG_NET_EMATCH_CMP is not set
+# CONFIG_NET_EMATCH_IPT is not set
 # CONFIG_NET_EMATCH_META is not set
 # CONFIG_NET_EMATCH_NBYTE is not set
 CONFIG_NET_EMATCH_STACK=32
 # CONFIG_NET_EMATCH_TEXT is not set
 # CONFIG_NET_EMATCH_U32 is not set
+# CONFIG_NET_FAILOVER is not set
 # CONFIG_NET_FC is not set
 # CONFIG_NET_FOU is not set
 # CONFIG_NET_FOU_IP_TUNNELS is not set
@@ -3042,12 +3170,15 @@ CONFIG_NET_RX_BUSY_POLL=y
 # CONFIG_NET_SB1000 is not set
 CONFIG_NET_SCHED=y
 # CONFIG_NET_SCH_ATM is not set
+# CONFIG_NET_SCH_CAKE is not set
 # CONFIG_NET_SCH_CBQ is not set
+# CONFIG_NET_SCH_CBS is not set
 # CONFIG_NET_SCH_CHOKE is not set
 # CONFIG_NET_SCH_CODEL is not set
 # CONFIG_NET_SCH_DEFAULT is not set
 # CONFIG_NET_SCH_DRR is not set
 # CONFIG_NET_SCH_DSMARK is not set
+# CONFIG_NET_SCH_ETF is not set
 CONFIG_NET_SCH_FIFO=y
 # CONFIG_NET_SCH_FQ is not set
 CONFIG_NET_SCH_FQ_CODEL=y
@@ -3066,6 +3197,7 @@ CONFIG_NET_SCH_FQ_CODEL=y
 # CONFIG_NET_SCH_RED is not set
 # CONFIG_NET_SCH_SFB is not set
 # CONFIG_NET_SCH_SFQ is not set
+# CONFIG_NET_SCH_SKBPRIO is not set
 # CONFIG_NET_SCH_TBF is not set
 # CONFIG_NET_SCH_TEQL is not set
 # CONFIG_NET_SCTPPROBE is not set
@@ -3088,10 +3220,12 @@ CONFIG_NET_VENDOR_ATHEROS=y
 CONFIG_NET_VENDOR_AURORA=y
 CONFIG_NET_VENDOR_BROADCOM=y
 CONFIG_NET_VENDOR_BROCADE=y
+CONFIG_NET_VENDOR_CADENCE=y
 CONFIG_NET_VENDOR_CAVIUM=y
 CONFIG_NET_VENDOR_CHELSIO=y
 CONFIG_NET_VENDOR_CIRRUS=y
 CONFIG_NET_VENDOR_CISCO=y
+CONFIG_NET_VENDOR_CORTINA=y
 CONFIG_NET_VENDOR_DEC=y
 CONFIG_NET_VENDOR_DLINK=y
 CONFIG_NET_VENDOR_EMULEX=y
@@ -3110,11 +3244,15 @@ CONFIG_NET_VENDOR_MARVELL=y
 CONFIG_NET_VENDOR_MELLANOX=y
 CONFIG_NET_VENDOR_MICREL=y
 CONFIG_NET_VENDOR_MICROCHIP=y
+CONFIG_NET_VENDOR_MICROSEMI=y
 CONFIG_NET_VENDOR_MYRI=y
 CONFIG_NET_VENDOR_NATSEMI=y
+CONFIG_NET_VENDOR_NETERION=y
 CONFIG_NET_VENDOR_NETRONOME=y
+CONFIG_NET_VENDOR_NI=y
 CONFIG_NET_VENDOR_NVIDIA=y
 CONFIG_NET_VENDOR_OKI=y
+CONFIG_NET_VENDOR_PACKET_ENGINES=y
 CONFIG_NET_VENDOR_QLOGIC=y
 CONFIG_NET_VENDOR_QUALCOMM=y
 CONFIG_NET_VENDOR_RDC=y
@@ -3126,6 +3264,7 @@ CONFIG_NET_VENDOR_SEEQ=y
 CONFIG_NET_VENDOR_SILAN=y
 CONFIG_NET_VENDOR_SIS=y
 CONFIG_NET_VENDOR_SMSC=y
+CONFIG_NET_VENDOR_SOCIONEXT=y
 CONFIG_NET_VENDOR_SOLARFLARE=y
 CONFIG_NET_VENDOR_STMICRO=y
 CONFIG_NET_VENDOR_SUN=y
@@ -3160,14 +3299,19 @@ CONFIG_NFS_V3=y
 # CONFIG_NFTL is not set
 # CONFIG_NFT_BRIDGE_META is not set
 # CONFIG_NFT_BRIDGE_REJECT is not set
+# CONFIG_NFT_CONNLIMIT is not set
 # CONFIG_NFT_DUP_IPV4 is not set
 # CONFIG_NFT_DUP_IPV6 is not set
 # CONFIG_NFT_FIB_IPV4 is not set
 # CONFIG_NFT_FIB_IPV6 is not set
 # CONFIG_NFT_FLOW_OFFLOAD is not set
 # CONFIG_NFT_OBJREF is not set
+# CONFIG_NFT_OSF is not set
 # CONFIG_NFT_RT is not set
 # CONFIG_NFT_SET_BITMAP is not set
+# CONFIG_NFT_SOCKET is not set
+# CONFIG_NFT_TPROXY is not set
+# CONFIG_NFT_TUNNEL is not set
 # CONFIG_NF_CONNTRACK is not set
 # CONFIG_NF_CONNTRACK_AMANDA is not set
 # CONFIG_NF_CONNTRACK_EVENTS is not set
@@ -3176,6 +3320,7 @@ CONFIG_NFS_V3=y
 # CONFIG_NF_CONNTRACK_IPV4 is not set
 # CONFIG_NF_CONNTRACK_IPV6 is not set
 # CONFIG_NF_CONNTRACK_IRC is not set
+# CONFIG_NF_CONNTRACK_LABELS is not set
 # CONFIG_NF_CONNTRACK_MARK is not set
 # CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
 # CONFIG_NF_CONNTRACK_PPTP is not set
@@ -3220,7 +3365,15 @@ CONFIG_NF_CONNTRACK_PROCFS=y
 # CONFIG_NF_SOCKET_IPV4 is not set
 # CONFIG_NF_SOCKET_IPV6 is not set
 # CONFIG_NF_TABLES is not set
+# CONFIG_NF_TABLES_ARP is not set
+# CONFIG_NF_TABLES_BRIDGE is not set
+# CONFIG_NF_TABLES_INET is not set
+# CONFIG_NF_TABLES_IPV4 is not set
+# CONFIG_NF_TABLES_IPV6 is not set
 # CONFIG_NF_TABLES_NETDEV is not set
+# CONFIG_NF_TABLES_SET is not set
+# CONFIG_NF_TPROXY_IPV4 is not set
+# CONFIG_NF_TPROXY_IPV6 is not set
 # CONFIG_NI65 is not set
 # CONFIG_NI903X_WDT is not set
 # CONFIG_NIC7018_WDT is not set
@@ -3328,7 +3481,10 @@ CONFIG_NMI_LOG_BUF_SHIFT=13
 # CONFIG_OSF_PARTITION is not set
 CONFIG_OVERLAY_FS=y
 # CONFIG_OVERLAY_FS_INDEX is not set
+# CONFIG_OVERLAY_FS_METACOPY is not set
+CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y
 # CONFIG_OVERLAY_FS_REDIRECT_DIR is not set
+CONFIG_OVERLAY_FS_XINO_AUTO=y
 # CONFIG_OWL_LOADER is not set
 # CONFIG_P54_COMMON is not set
 # CONFIG_PA12203001 is not set
@@ -3423,12 +3579,15 @@ CONFIG_PARTITION_ADVANCED=y
 # CONFIG_PCIEPORTBUS is not set
 # CONFIG_PCIE_ALTERA is not set
 # CONFIG_PCIE_ARMADA_8K is not set
+# CONFIG_PCIE_CADENCE_HOST is not set
 # CONFIG_PCIE_DPC is not set
 # CONFIG_PCIE_DW_PLAT is not set
+# CONFIG_PCIE_DW_PLAT_HOST is not set
 # CONFIG_PCIE_ECRC is not set
 # CONFIG_PCIE_IPROC is not set
 # CONFIG_PCIE_KIRIN is not set
 # CONFIG_PCIE_PTM is not set
+# CONFIG_PCIE_XILINX is not set
 # CONFIG_PCIPCWATCHDOG is not set
 # CONFIG_PCI_ATMEL is not set
 # CONFIG_PCI_CNB20LE_QUIRK is not set
@@ -3492,6 +3651,7 @@ CONFIG_PCI_SYSCALL=y
 # CONFIG_PHY_CPCAP_USB is not set
 # CONFIG_PHY_EXYNOS_DP_VIDEO is not set
 # CONFIG_PHY_EXYNOS_MIPI_VIDEO is not set
+# CONFIG_PHY_MAPPHONE_MDM6600 is not set
 # CONFIG_PHY_PXA_28NM_HSIC is not set
 # CONFIG_PHY_PXA_28NM_USB2 is not set
 # CONFIG_PHY_QCOM_DWC3 is not set
@@ -3503,8 +3663,11 @@ CONFIG_PCI_SYSCALL=y
 CONFIG_PINCONF=y
 # CONFIG_PINCTRL is not set
 # CONFIG_PINCTRL_AMD is not set
+# CONFIG_PINCTRL_AXP209 is not set
+# CONFIG_PINCTRL_CEDARFORK is not set
 # CONFIG_PINCTRL_EXYNOS is not set
 # CONFIG_PINCTRL_EXYNOS5440 is not set
+# CONFIG_PINCTRL_ICELAKE is not set
 # CONFIG_PINCTRL_MCP23S08 is not set
 # CONFIG_PINCTRL_MSM8X74 is not set
 CONFIG_PINCTRL_SINGLE=y
@@ -3587,6 +3750,7 @@ CONFIG_PROC_FS=y
 # CONFIG_PROC_PAGE_MONITOR is not set
 CONFIG_PROC_STRIPPED=y
 CONFIG_PROC_SYSCTL=y
+# CONFIG_PROC_VMCORE_DEVICE_DUMP is not set
 # CONFIG_PROFILE_ALL_BRANCHES is not set
 # CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
 # CONFIG_PROFILING is not set
@@ -3655,6 +3819,7 @@ CONFIG_PWRSEQ_SIMPLE=y
 # CONFIG_RAID_ATTRS is not set
 # CONFIG_RALINK is not set
 # CONFIG_RANDOM32_SELFTEST is not set
+# CONFIG_RANDOM_TRUST_CPU is not set
 # CONFIG_RAPIDIO is not set
 # CONFIG_RAS is not set
 # CONFIG_RAW_DRIVER is not set
@@ -3693,6 +3858,7 @@ CONFIG_RCU_TORTURE_TEST_SLOW_INIT_DELAY=3
 # CONFIG_REGMAP_MMIO is not set
 # CONFIG_REGMAP_SPI is not set
 # CONFIG_REGULATOR is not set
+# CONFIG_REGULATOR_88PG86X is not set
 # CONFIG_REGULATOR_ACT8865 is not set
 # CONFIG_REGULATOR_AD5398 is not set
 # CONFIG_REGULATOR_ANATOP is not set
@@ -3721,6 +3887,7 @@ CONFIG_RCU_TORTURE_TEST_SLOW_INIT_DELAY=3
 # CONFIG_REGULATOR_PV88080 is not set
 # CONFIG_REGULATOR_PV88090 is not set
 # CONFIG_REGULATOR_PWM is not set
+# CONFIG_REGULATOR_SY8106A is not set
 # CONFIG_REGULATOR_TI_ABB is not set
 # CONFIG_REGULATOR_TPS51632 is not set
 # CONFIG_REGULATOR_TPS62360 is not set
@@ -3740,6 +3907,7 @@ CONFIG_RCU_TORTURE_TEST_SLOW_INIT_DELAY=3
 # CONFIG_RELAY is not set
 # CONFIG_RELOCATABLE is not set
 # CONFIG_REMOTEPROC is not set
+# CONFIG_RENESAS_PHY is not set
 # CONFIG_RESET_ATH79 is not set
 # CONFIG_RESET_BERLIN is not set
 # CONFIG_RESET_CONTROLLER is not set
@@ -3754,6 +3922,7 @@ CONFIG_RCU_TORTURE_TEST_SLOW_INIT_DELAY=3
 # CONFIG_RESET_TEGRA_BPMP is not set
 # CONFIG_RESET_TI_SYSCON is not set
 # CONFIG_RESET_ZYNQ is not set
+# CONFIG_RFD77402 is not set
 # CONFIG_RFD_FTL is not set
 CONFIG_RFKILL=y
 # CONFIG_RFKILL_FULL is not set
@@ -3771,7 +3940,9 @@ CONFIG_RFKILL=y
 # CONFIG_ROSE is not set
 # CONFIG_RPCSEC_GSS_KRB5 is not set
 # CONFIG_RPMSG_QCOM_GLINK_RPM is not set
+# CONFIG_RPMSG_VIRTIO is not set
 # CONFIG_RPR0521 is not set
+# CONFIG_RSEQ is not set
 # CONFIG_RT2X00 is not set
 # CONFIG_RTC_CLASS is not set
 # CONFIG_RTC_DEBUG is not set
@@ -3808,6 +3979,7 @@ CONFIG_RTC_DRV_CMOS=y
 # CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
 # CONFIG_RTC_DRV_HYM8563 is not set
 # CONFIG_RTC_DRV_ISL12022 is not set
+# CONFIG_RTC_DRV_ISL12026 is not set
 # CONFIG_RTC_DRV_ISL12057 is not set
 # CONFIG_RTC_DRV_ISL1208 is not set
 # CONFIG_RTC_DRV_M41T80 is not set
@@ -3828,6 +4000,7 @@ CONFIG_RTC_DRV_CMOS=y
 # CONFIG_RTC_DRV_PCF2127 is not set
 # CONFIG_RTC_DRV_PCF85063 is not set
 # CONFIG_RTC_DRV_PCF8523 is not set
+# CONFIG_RTC_DRV_PCF85363 is not set
 # CONFIG_RTC_DRV_PCF8563 is not set
 # CONFIG_RTC_DRV_PCF8583 is not set
 # CONFIG_RTC_DRV_PL030 is not set
@@ -3882,6 +4055,7 @@ CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
 # CONFIG_RTS5208 is not set
 CONFIG_RT_MUTEXES=y
 # CONFIG_RUNTIME_DEBUG is not set
+CONFIG_RUNTIME_TESTING_MENU=y
 CONFIG_RWSEM_GENERIC_SPINLOCK=y
 CONFIG_RXKAD=y
 # CONFIG_S2IO is not set
@@ -3894,6 +4068,7 @@ CONFIG_RXKAD=y
 # CONFIG_SATA_FSL is not set
 # CONFIG_SATA_HIGHBANK is not set
 # CONFIG_SATA_INIC162X is not set
+CONFIG_SATA_MOBILE_LPM_POLICY=0
 # CONFIG_SATA_MV is not set
 # CONFIG_SATA_NV is not set
 # CONFIG_SATA_PMP is not set
@@ -4011,6 +4186,7 @@ CONFIG_SCSI_PROC_FS=y
 # CONFIG_SCSI_WD719X is not set
 # CONFIG_SCx200_ACB is not set
 # CONFIG_SDIO_UART is not set
+# CONFIG_SD_ADC_MODULATOR is not set
 # CONFIG_SECCOMP is not set
 CONFIG_SECTION_MISMATCH_WARN_ONLY=y
 # CONFIG_SECURITY is not set
@@ -4123,6 +4299,7 @@ CONFIG_SELECT_MEMORY_MODEL=y
 # CONFIG_SENSORS_MAX197 is not set
 # CONFIG_SENSORS_MAX31722 is not set
 # CONFIG_SENSORS_MAX31790 is not set
+# CONFIG_SENSORS_MAX6621 is not set
 # CONFIG_SENSORS_MAX6639 is not set
 # CONFIG_SENSORS_MAX6642 is not set
 # CONFIG_SENSORS_MAX6650 is not set
@@ -4132,6 +4309,7 @@ CONFIG_SELECT_MEMORY_MODEL=y
 # CONFIG_SENSORS_NCT6775 is not set
 # CONFIG_SENSORS_NCT7802 is not set
 # CONFIG_SENSORS_NCT7904 is not set
+# CONFIG_SENSORS_NPCM7XX is not set
 # CONFIG_SENSORS_NSA320 is not set
 # CONFIG_SENSORS_NTC_THERMISTOR is not set
 # CONFIG_SENSORS_PC87360 is not set
@@ -4169,6 +4347,7 @@ CONFIG_SELECT_MEMORY_MODEL=y
 # CONFIG_SENSORS_VT8231 is not set
 # CONFIG_SENSORS_W83627EHF is not set
 # CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83773G is not set
 # CONFIG_SENSORS_W83781D is not set
 # CONFIG_SENSORS_W83791D is not set
 # CONFIG_SENSORS_W83792D is not set
@@ -4266,6 +4445,7 @@ CONFIG_SHMEM=y
 # CONFIG_SH_TIMER_CMT is not set
 # CONFIG_SH_TIMER_MTU2 is not set
 # CONFIG_SH_TIMER_TMU is not set
+# CONFIG_SI1133 is not set
 # CONFIG_SI1145 is not set
 # CONFIG_SI7005 is not set
 # CONFIG_SI7020 is not set
@@ -4281,6 +4461,7 @@ CONFIG_SIGNALFD=y
 # CONFIG_SIGNED_PE_FILE_VERIFICATION is not set
 # CONFIG_SIMPLE_GPIO is not set
 # CONFIG_SIMPLE_PM_BUS is not set
+# CONFIG_SIOX is not set
 # CONFIG_SIS190 is not set
 # CONFIG_SIS900 is not set
 # CONFIG_SKGE is not set
@@ -4293,6 +4474,7 @@ CONFIG_SLABINFO=y
 CONFIG_SLAB_MERGE_DEFAULT=y
 # CONFIG_SLHC is not set
 # CONFIG_SLICOSS is not set
+# CONFIG_SLIMBUS is not set
 # CONFIG_SLIP is not set
 # CONFIG_SLOB is not set
 CONFIG_SLUB=y
@@ -4399,6 +4581,7 @@ CONFIG_SND_HDA_PREALLOC_SIZE=64
 # CONFIG_SND_LOLA is not set
 # CONFIG_SND_LX6464ES is not set
 # CONFIG_SND_MAESTRO3 is not set
+CONFIG_SND_MAX_CARDS=16
 # CONFIG_SND_MIA is not set
 # CONFIG_SND_MIPS is not set
 # CONFIG_SND_MIRO is not set
@@ -4456,14 +4639,17 @@ CONFIG_SND_PROC_FS=y
 # CONFIG_SND_SOC_ADAU1761_SPI is not set
 # CONFIG_SND_SOC_ADAU7002 is not set
 # CONFIG_SND_SOC_AK4104 is not set
+# CONFIG_SND_SOC_AK4458 is not set
 # CONFIG_SND_SOC_AK4554 is not set
 # CONFIG_SND_SOC_AK4613 is not set
 # CONFIG_SND_SOC_AK4642 is not set
 # CONFIG_SND_SOC_AK5386 is not set
+# CONFIG_SND_SOC_AK5558 is not set
 # CONFIG_SND_SOC_ALC5623 is not set
 # CONFIG_SND_SOC_AMD_ACP is not set
 # CONFIG_SND_SOC_AU1XAUDIO is not set
 # CONFIG_SND_SOC_AU1XPSC is not set
+# CONFIG_SND_SOC_BD28623 is not set
 # CONFIG_SND_SOC_BT_SCO is not set
 # CONFIG_SND_SOC_CS35L32 is not set
 # CONFIG_SND_SOC_CS35L33 is not set
@@ -4485,6 +4671,7 @@ CONFIG_SND_PROC_FS=y
 # CONFIG_SND_SOC_CS53L30 is not set
 # CONFIG_SND_SOC_DIO2125 is not set
 # CONFIG_SND_SOC_ES7134 is not set
+# CONFIG_SND_SOC_ES7241 is not set
 # CONFIG_SND_SOC_ES8316 is not set
 # CONFIG_SND_SOC_ES8328 is not set
 # CONFIG_SND_SOC_ES8328_I2C is not set
@@ -4503,6 +4690,7 @@ CONFIG_SND_PROC_FS=y
 # CONFIG_SND_SOC_IMX_SPDIF is not set
 # CONFIG_SND_SOC_IMX_WM8962 is not set
 # CONFIG_SND_SOC_INNO_RK3036 is not set
+# CONFIG_SND_SOC_INTEL_BAYTRAIL is not set
 # CONFIG_SND_SOC_INTEL_BDW_RT5677_MACH is not set
 # CONFIG_SND_SOC_INTEL_BXT_DA7219_MAX98357A_MACH is not set
 # CONFIG_SND_SOC_INTEL_BXT_RT298_MACH is not set
@@ -4514,16 +4702,23 @@ CONFIG_SND_PROC_FS=y
 # CONFIG_SND_SOC_INTEL_BYT_MAX98090_MACH is not set
 # CONFIG_SND_SOC_INTEL_BYT_RT5640_MACH is not set
 # CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH is not set
+# CONFIG_SND_SOC_INTEL_CHT_BSW_NAU8824_MACH is not set
 # CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH is not set
 # CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH is not set
+# CONFIG_SND_SOC_INTEL_HASWELL is not set
 # CONFIG_SND_SOC_INTEL_KBL_RT5663_MAX98927_MACH is not set
 # CONFIG_SND_SOC_INTEL_KBL_RT5663_RT5514_MAX98927_MACH is not set
 # CONFIG_SND_SOC_INTEL_SKL_NAU88L25_MAX98357A_MACH is not set
 # CONFIG_SND_SOC_INTEL_SKL_NAU88L25_SSM4567_MACH is not set
 # CONFIG_SND_SOC_INTEL_SKL_RT286_MACH is not set
+# CONFIG_SND_SOC_INTEL_SKYLAKE is not set
 # CONFIG_SND_SOC_INTEL_SST is not set
+CONFIG_SND_SOC_INTEL_SST_TOPLEVEL=y
+# CONFIG_SND_SOC_MAX9759 is not set
+# CONFIG_SND_SOC_MAX98373 is not set
 # CONFIG_SND_SOC_MAX98504 is not set
 # CONFIG_SND_SOC_MAX9860 is not set
+# CONFIG_SND_SOC_MAX9867 is not set
 # CONFIG_SND_SOC_MAX98927 is not set
 # CONFIG_SND_SOC_MEDIATEK is not set
 # CONFIG_SND_SOC_MPC5200_AC97 is not set
@@ -4531,14 +4726,18 @@ CONFIG_SND_PROC_FS=y
 # CONFIG_SND_SOC_MSM8916_WCD_ANALOG is not set
 # CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set
 # CONFIG_SND_SOC_MT2701 is not set
+# CONFIG_SND_SOC_MT6351 is not set
 # CONFIG_SND_SOC_MT8173 is not set
 # CONFIG_SND_SOC_NAU8540 is not set
 # CONFIG_SND_SOC_NAU8810 is not set
 # CONFIG_SND_SOC_NAU8824 is not set
 # CONFIG_SND_SOC_PCM1681 is not set
+# CONFIG_SND_SOC_PCM1789_I2C is not set
 # CONFIG_SND_SOC_PCM1792A is not set
 # CONFIG_SND_SOC_PCM179X_I2C is not set
 # CONFIG_SND_SOC_PCM179X_SPI is not set
+# CONFIG_SND_SOC_PCM186X_I2C is not set
+# CONFIG_SND_SOC_PCM186X_SPI is not set
 # CONFIG_SND_SOC_PCM3168A_I2C is not set
 # CONFIG_SND_SOC_PCM3168A_SPI is not set
 # CONFIG_SND_SOC_PCM512x_I2C is not set
@@ -4548,8 +4747,10 @@ CONFIG_SND_PROC_FS=y
 # CONFIG_SND_SOC_RT5631 is not set
 # CONFIG_SND_SOC_RT5677_SPI is not set
 # CONFIG_SND_SOC_SGTL5000 is not set
+# CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set
 # CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set
 # CONFIG_SND_SOC_SPDIF is not set
+# CONFIG_SND_SOC_SSM2305 is not set
 # CONFIG_SND_SOC_SSM2602_I2C is not set
 # CONFIG_SND_SOC_SSM2602_SPI is not set
 # CONFIG_SND_SOC_SSM4567 is not set
@@ -4560,13 +4761,19 @@ CONFIG_SND_PROC_FS=y
 # CONFIG_SND_SOC_TAS5086 is not set
 # CONFIG_SND_SOC_TAS571X is not set
 # CONFIG_SND_SOC_TAS5720 is not set
+# CONFIG_SND_SOC_TAS6424 is not set
+# CONFIG_SND_SOC_TDA7419 is not set
 # CONFIG_SND_SOC_TFA9879 is not set
 # CONFIG_SND_SOC_TLV320AIC23_I2C is not set
 # CONFIG_SND_SOC_TLV320AIC23_SPI is not set
 # CONFIG_SND_SOC_TLV320AIC31XX is not set
+# CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set
+# CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set
 # CONFIG_SND_SOC_TLV320AIC3X is not set
 # CONFIG_SND_SOC_TPA6130A2 is not set
 # CONFIG_SND_SOC_TS3A227E is not set
+# CONFIG_SND_SOC_TSCS42XX is not set
+# CONFIG_SND_SOC_TSCS454 is not set
 # CONFIG_SND_SOC_WM8510 is not set
 # CONFIG_SND_SOC_WM8523 is not set
 # CONFIG_SND_SOC_WM8524 is not set
@@ -4580,6 +4787,7 @@ CONFIG_SND_PROC_FS=y
 # CONFIG_SND_SOC_WM8753 is not set
 # CONFIG_SND_SOC_WM8770 is not set
 # CONFIG_SND_SOC_WM8776 is not set
+# CONFIG_SND_SOC_WM8782 is not set
 # CONFIG_SND_SOC_WM8804_I2C is not set
 # CONFIG_SND_SOC_WM8804_SPI is not set
 # CONFIG_SND_SOC_WM8903 is not set
@@ -4593,6 +4801,8 @@ CONFIG_SND_PROC_FS=y
 # CONFIG_SND_SONICVIBES is not set
 # CONFIG_SND_SPI is not set
 # CONFIG_SND_SSCAPE is not set
+# CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_ACPI is not set
+# CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_PCI is not set
 # CONFIG_SND_SUN4I_CODEC is not set
 # CONFIG_SND_SUPPORT_OLD_API is not set
 # CONFIG_SND_TIMER is not set
@@ -4618,8 +4828,10 @@ CONFIG_SND_VERBOSE_PROCFS=y
 # CONFIG_SND_VXPOCKET is not set
 # CONFIG_SND_WAVEFRONT is not set
 CONFIG_SND_X86=y
+# CONFIG_SND_XEN_FRONTEND is not set
 # CONFIG_SND_YMFPCI is not set
 # CONFIG_SNI_RM is not set
+# CONFIG_SOCIONEXT_SYNQUACER_PREITS is not set
 # CONFIG_SOCK_CGROUP_DATA is not set
 # CONFIG_SOC_AM33XX is not set
 # CONFIG_SOC_AM43XX is not set
@@ -4635,6 +4847,7 @@ CONFIG_SND_X86=y
 # CONFIG_SONYPI is not set
 # CONFIG_SONY_LAPTOP is not set
 # CONFIG_SOUND is not set
+# CONFIG_SOUNDWIRE is not set
 # CONFIG_SOUND_OSS_CORE is not set
 # CONFIG_SOUND_PRIME is not set
 # CONFIG_SP5100_TCO is not set
@@ -4666,6 +4879,7 @@ CONFIG_SND_X86=y
 # CONFIG_SPI_LM70_LLP is not set
 # CONFIG_SPI_LOOPBACK_TEST is not set
 # CONFIG_SPI_MASTER is not set
+# CONFIG_SPI_MEM is not set
 # CONFIG_SPI_MPC52xx is not set
 # CONFIG_SPI_MPC52xx_PSC is not set
 # CONFIG_SPI_OCTEON is not set
@@ -4717,12 +4931,14 @@ CONFIG_SSB_POSSIBLE=y
 # CONFIG_SSB_SDIOHOST is not set
 # CONFIG_SSB_SILENT is not set
 # CONFIG_SSFDC is not set
+# CONFIG_STACKPROTECTOR is not set
 # CONFIG_STACKTRACE is not set
 CONFIG_STACKTRACE_SUPPORT=y
 # CONFIG_STACK_TRACER is not set
 # CONFIG_STACK_VALIDATION is not set
 CONFIG_STAGING=y
 # CONFIG_STAGING_BOARD is not set
+# CONFIG_STAGING_GASKET_FRAMEWORK is not set
 # CONFIG_STAGING_MEDIA is not set
 CONFIG_STANDALONE=y
 # CONFIG_STATIC_KEYS_SELFTEST is not set
@@ -4747,6 +4963,7 @@ CONFIG_STRICT_MODULE_RWX=y
 # CONFIG_STRING_SELFTEST is not set
 CONFIG_STRIP_ASM_SYMS=y
 # CONFIG_STX104 is not set
+# CONFIG_ST_UVIS25 is not set
 # CONFIG_SUN4I_GPADC is not set
 # CONFIG_SUNDANCE is not set
 # CONFIG_SUNGEM is not set
@@ -4835,15 +5052,18 @@ CONFIG_TCP_CONG_CUBIC=y
 # CONFIG_TEHUTI is not set
 # CONFIG_TERANETICS_PHY is not set
 # CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
+# CONFIG_TEST_BITFIELD is not set
 # CONFIG_TEST_BITMAP is not set
 # CONFIG_TEST_BPF is not set
 # CONFIG_TEST_FIRMWARE is not set
 # CONFIG_TEST_HASH is not set
 # CONFIG_TEST_HEXDUMP is not set
+# CONFIG_TEST_IDA is not set
 # CONFIG_TEST_KMOD is not set
 # CONFIG_TEST_KSTRTOX is not set
 # CONFIG_TEST_LIST_SORT is not set
 # CONFIG_TEST_LKM is not set
+# CONFIG_TEST_OVERFLOW is not set
 # CONFIG_TEST_POWER is not set
 # CONFIG_TEST_PRINTF is not set
 # CONFIG_TEST_RHASHTABLE is not set
@@ -4868,6 +5088,7 @@ CONFIG_TEXTSEARCH=y
 # CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set
 # CONFIG_THERMAL_GOV_USER_SPACE is not set
 # CONFIG_THERMAL_HWMON is not set
+# CONFIG_THERMAL_STATISTICS is not set
 # CONFIG_THERMAL_WRITABLE_TRIPS is not set
 # CONFIG_THINKPAD_ACPI is not set
 CONFIG_THIN_ARCHIVES=y
@@ -4900,6 +5121,8 @@ CONFIG_TINY_RCU=y
 # CONFIG_TI_CPSW is not set
 # CONFIG_TI_CPSW_ALE is not set
 # CONFIG_TI_CPTS is not set
+# CONFIG_TI_DAC082S085 is not set
+# CONFIG_TI_DAC5571 is not set
 # CONFIG_TI_DAC7512 is not set
 # CONFIG_TI_DAVINCI_CPDMA is not set
 # CONFIG_TI_DAVINCI_MDIO is not set
@@ -4921,11 +5144,13 @@ CONFIG_TMPFS_XATTR=y
 # CONFIG_TOUCHSCREEN_AD7879 is not set
 # CONFIG_TOUCHSCREEN_AD7879_I2C is not set
 # CONFIG_TOUCHSCREEN_AD7879_SPI is not set
+# CONFIG_TOUCHSCREEN_ADC is not set
 # CONFIG_TOUCHSCREEN_ADS7846 is not set
 # CONFIG_TOUCHSCREEN_AR1021_I2C is not set
 # CONFIG_TOUCHSCREEN_ATMEL_MXT is not set
 # CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
 # CONFIG_TOUCHSCREEN_BU21013 is not set
+# CONFIG_TOUCHSCREEN_BU21029 is not set
 # CONFIG_TOUCHSCREEN_CHIPONE_ICN8318 is not set
 # CONFIG_TOUCHSCREEN_CY8CTMG110 is not set
 # CONFIG_TOUCHSCREEN_CYTTSP4_CORE is not set
@@ -4938,11 +5163,13 @@ CONFIG_TMPFS_XATTR=y
 # CONFIG_TOUCHSCREEN_EKTF2127 is not set
 # CONFIG_TOUCHSCREEN_ELAN is not set
 # CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_EXC3000 is not set
 # CONFIG_TOUCHSCREEN_FT6236 is not set
 # CONFIG_TOUCHSCREEN_FUJITSU is not set
 # CONFIG_TOUCHSCREEN_GOODIX is not set
 # CONFIG_TOUCHSCREEN_GUNZE is not set
 # CONFIG_TOUCHSCREEN_HAMPSHIRE is not set
+# CONFIG_TOUCHSCREEN_HIDEEP is not set
 # CONFIG_TOUCHSCREEN_ILI210X is not set
 # CONFIG_TOUCHSCREEN_IMX6UL_TSC is not set
 # CONFIG_TOUCHSCREEN_INEXIO is not set
@@ -4957,6 +5184,7 @@ CONFIG_TMPFS_XATTR=y
 # CONFIG_TOUCHSCREEN_RM_TS is not set
 # CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set
 # CONFIG_TOUCHSCREEN_S3C2410 is not set
+# CONFIG_TOUCHSCREEN_S6SY761 is not set
 # CONFIG_TOUCHSCREEN_SILEAD is not set
 # CONFIG_TOUCHSCREEN_SIS_I2C is not set
 # CONFIG_TOUCHSCREEN_ST1232 is not set
@@ -5001,6 +5229,7 @@ CONFIG_TRAD_SIGNALS=y
 # CONFIG_TRIM_UNUSED_KSYMS is not set
 # CONFIG_TRUSTED_KEYS is not set
 # CONFIG_TSL2583 is not set
+# CONFIG_TSL2772 is not set
 # CONFIG_TSL2x7x is not set
 # CONFIG_TSL4531 is not set
 # CONFIG_TSYS01 is not set
@@ -5014,6 +5243,7 @@ CONFIG_TTY=y
 # CONFIG_TWL4030_MADC is not set
 # CONFIG_TWL6030_GPADC is not set
 # CONFIG_TWL6040_CORE is not set
+# CONFIG_TYPEC is not set
 # CONFIG_TYPEC_TCPM is not set
 # CONFIG_TYPEC_UCSI is not set
 # CONFIG_TYPHOON is not set
@@ -5022,6 +5252,7 @@ CONFIG_TTY=y
 # CONFIG_UBIFS_FS_ENCRYPTION is not set
 CONFIG_UBIFS_FS_FORMAT4=y
 # CONFIG_UBIFS_FS_SECURITY is not set
+# CONFIG_UBIFS_FS_XATTR is not set
 # CONFIG_UBSAN is not set
 # CONFIG_UCB1400_CORE is not set
 # CONFIG_UCSI is not set
@@ -5035,6 +5266,8 @@ CONFIG_UID16=y
 # CONFIG_UIO is not set
 # CONFIG_ULTRA is not set
 # CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_UNISYSSPAR is not set
+# CONFIG_UNISYS_VISORBUS is not set
 CONFIG_UNIX=y
 CONFIG_UNIX98_PTYS=y
 # CONFIG_UNIXWARE_DISKLABEL is not set
@@ -5080,6 +5313,7 @@ CONFIG_USB_DEFAULT_PERSIST=y
 # CONFIG_USB_DWC2_PERIPHERAL is not set
 # CONFIG_USB_DWC3 is not set
 # CONFIG_USB_DWC3_EXYNOS is not set
+# CONFIG_USB_DWC3_HAPS is not set
 # CONFIG_USB_DWC3_KEYSTONE is not set
 # CONFIG_USB_DWC3_OF_SIMPLE is not set
 # CONFIG_USB_DWC3_PCI is not set
@@ -5378,6 +5612,7 @@ CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
 # CONFIG_USB_WHCI_HCD is not set
 # CONFIG_USB_WUSB is not set
 # CONFIG_USB_WUSB_CBAF is not set
+# CONFIG_USB_XHCI_DBGCAP is not set
 # CONFIG_USB_XHCI_HCD is not set
 # CONFIG_USB_XUSBATM is not set
 # CONFIG_USB_YUREX is not set
@@ -5392,6 +5627,7 @@ CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
 # CONFIG_U_SERIAL_CONSOLE is not set
 # CONFIG_V4L_MEM2MEM_DRIVERS is not set
 # CONFIG_V4L_TEST_DRIVERS is not set
+# CONFIG_VBOXGUEST is not set
 # CONFIG_VCNL4000 is not set
 # CONFIG_VDSO is not set
 # CONFIG_VEML6070 is not set
@@ -5420,6 +5656,7 @@ CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
 # CONFIG_VIDEO_BT848 is not set
 # CONFIG_VIDEO_BT856 is not set
 # CONFIG_VIDEO_BT866 is not set
+# CONFIG_VIDEO_CADENCE is not set
 # CONFIG_VIDEO_CAFE_CCIC is not set
 # CONFIG_VIDEO_CS3308 is not set
 # CONFIG_VIDEO_CS5345 is not set
@@ -5437,6 +5674,7 @@ CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
 # CONFIG_VIDEO_HDPVR is not set
 # CONFIG_VIDEO_HEXIUM_GEMINI is not set
 # CONFIG_VIDEO_HEXIUM_ORION is not set
+# CONFIG_VIDEO_I2C is not set
 # CONFIG_VIDEO_IR_I2C is not set
 # CONFIG_VIDEO_IVTV is not set
 # CONFIG_VIDEO_KS0127 is not set
@@ -5444,16 +5682,22 @@ CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
 # CONFIG_VIDEO_ML86V7667 is not set
 # CONFIG_VIDEO_MSP3400 is not set
 # CONFIG_VIDEO_MT9M111 is not set
+# CONFIG_VIDEO_MT9T112 is not set
 # CONFIG_VIDEO_MT9V011 is not set
+# CONFIG_VIDEO_MT9V111 is not set
 # CONFIG_VIDEO_MXB is not set
 # CONFIG_VIDEO_NOON010PC30 is not set
 # CONFIG_VIDEO_OMAP2_VOUT is not set
 # CONFIG_VIDEO_OV2640 is not set
 # CONFIG_VIDEO_OV2659 is not set
+# CONFIG_VIDEO_OV5695 is not set
 # CONFIG_VIDEO_OV6650 is not set
 # CONFIG_VIDEO_OV7640 is not set
 # CONFIG_VIDEO_OV7670 is not set
+# CONFIG_VIDEO_OV772X is not set
+# CONFIG_VIDEO_OV7740 is not set
 # CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_RJ54N1 is not set
 # CONFIG_VIDEO_SAA6588 is not set
 # CONFIG_VIDEO_SAA6752HS is not set
 # CONFIG_VIDEO_SAA7110 is not set
@@ -5481,6 +5725,7 @@ CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
 # CONFIG_VIDEO_TW2804 is not set
 # CONFIG_VIDEO_TW9903 is not set
 # CONFIG_VIDEO_TW9906 is not set
+# CONFIG_VIDEO_TW9910 is not set
 # CONFIG_VIDEO_UDA1342 is not set
 # CONFIG_VIDEO_UPD64031A is not set
 # CONFIG_VIDEO_UPD64083 is not set
@@ -5496,6 +5741,7 @@ CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
 # CONFIG_VIRTIO_BALLOON is not set
 # CONFIG_VIRTIO_BLK_SCSI is not set
 # CONFIG_VIRTIO_INPUT is not set
+CONFIG_VIRTIO_MENU=y
 # CONFIG_VIRTIO_MMIO is not set
 # CONFIG_VIRTIO_PCI is not set
 # CONFIG_VIRTUALIZATION is not set
@@ -5519,6 +5765,7 @@ CONFIG_VMSPLIT_3G=y
 # CONFIG_VOP_BUS is not set
 # CONFIG_VORTEX is not set
 # CONFIG_VSOCKETS is not set
+# CONFIG_VSOCKETS_DIAG is not set
 # CONFIG_VT is not set
 # CONFIG_VT6655 is not set
 # CONFIG_VT6656 is not set
@@ -5547,6 +5794,7 @@ CONFIG_VMSPLIT_3G=y
 # CONFIG_W1_SLAVE_DS2781 is not set
 # CONFIG_W1_SLAVE_DS2805 is not set
 # CONFIG_W1_SLAVE_DS28E04 is not set
+# CONFIG_W1_SLAVE_DS28E17 is not set
 # CONFIG_W1_SLAVE_SMEM is not set
 # CONFIG_W1_SLAVE_THERM is not set
 # CONFIG_W83627HF_WDT is not set
@@ -5607,8 +5855,13 @@ CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y
 # CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set
 # CONFIG_X86_PKG_TEMP_THERMAL is not set
 CONFIG_X86_SYSFB=y
+# CONFIG_XDP_SOCKETS is not set
 # CONFIG_XEN is not set
+# CONFIG_XEN_GRANT_DMA_ALLOC is not set
+# CONFIG_XEN_PVCALLS_FRONTEND is not set
+CONFIG_XEN_SCRUB_PAGES_DEFAULT=y
 CONFIG_XFRM=y
+# CONFIG_XFRM_INTERFACE is not set
 # CONFIG_XFRM_IPCOMP is not set
 # CONFIG_XFRM_MIGRATE is not set
 # CONFIG_XFRM_STATISTICS is not set
@@ -5616,6 +5869,7 @@ CONFIG_XFRM=y
 # CONFIG_XFRM_USER is not set
 # CONFIG_XFS_DEBUG is not set
 # CONFIG_XFS_FS is not set
+# CONFIG_XFS_ONLINE_SCRUB is not set
 # CONFIG_XFS_POSIX_ACL is not set
 # CONFIG_XFS_QUOTA is not set
 # CONFIG_XFS_RT is not set
@@ -5625,9 +5879,11 @@ CONFIG_XFRM=y
 # CONFIG_XILINX_EMACLITE is not set
 # CONFIG_XILINX_GMII2RGMII is not set
 # CONFIG_XILINX_LL_TEMAC is not set
+# CONFIG_XILINX_VCU is not set
 # CONFIG_XILINX_WATCHDOG is not set
 # CONFIG_XILINX_ZYNQMP_DMA is not set
 # CONFIG_XILLYBUS is not set
+# CONFIG_XIL_AXIS_FIFO is not set
 # CONFIG_XIP_KERNEL is not set
 # CONFIG_XMON is not set
 CONFIG_XZ_DEC=y
@@ -5655,8 +5911,10 @@ CONFIG_XZ_DEC=y
 # CONFIG_ZLIB_DEFLATE is not set
 # CONFIG_ZLIB_INFLATE is not set
 CONFIG_ZONE_DMA=y
+# CONFIG_ZOPT2201 is not set
 # CONFIG_ZPA2326 is not set
 # CONFIG_ZPOOL is not set
 # CONFIG_ZRAM is not set
+# CONFIG_ZRAM_MEMORY_TRACKING is not set
 # CONFIG_ZSMALLOC is not set
 # CONFIG_ZX_TDM is not set
diff --git a/target/linux/generic/files/drivers/net/phy/swconfig_leds.c b/target/linux/generic/files/drivers/net/phy/swconfig_leds.c
index 91824b7cf6..e982cb7b58 100644
--- a/target/linux/generic/files/drivers/net/phy/swconfig_leds.c
+++ b/target/linux/generic/files/drivers/net/phy/swconfig_leds.c
@@ -274,19 +274,16 @@ static ssize_t swconfig_trig_mode_store(struct device *dev,
 static DEVICE_ATTR(mode, 0644, swconfig_trig_mode_show,
 		   swconfig_trig_mode_store);
 
-static void
+static int
 swconfig_trig_activate(struct led_classdev *led_cdev)
 {
 	struct switch_led_trigger *sw_trig;
 	struct swconfig_trig_data *trig_data;
 	int err;
 
-	if (led_cdev->trigger->activate != swconfig_trig_activate)
-		return;
-
 	trig_data = kzalloc(sizeof(struct swconfig_trig_data), GFP_KERNEL);
 	if (!trig_data)
-		return;
+		return -ENOMEM;
 
 	sw_trig = (void *) led_cdev->trigger;
 
@@ -309,7 +306,7 @@ swconfig_trig_activate(struct led_classdev *led_cdev)
 	if (err)
 		goto err_mode_free;
 
-	return;
+	return 0;
 
 err_mode_free:
 	device_remove_file(led_cdev->dev, &dev_attr_speed_mask);
@@ -320,7 +317,17 @@ err_dev_free:
 err_free:
 	led_cdev->trigger_data = NULL;
 	kfree(trig_data);
+
+	return err;
+}
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,19,0)
+static void
+swconfig_trig_activate_void(struct led_classdev *led_cdev)
+{
+	swconfig_trig_activate(led_cdev);
 }
+#endif
 
 static void
 swconfig_trig_deactivate(struct led_classdev *led_cdev)
@@ -516,7 +523,11 @@ swconfig_create_led_trigger(struct switch_dev *swdev)
 
 	sw_trig->swdev = swdev;
 	sw_trig->trig.name = swdev->devname;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,19,0)
+	sw_trig->trig.activate = swconfig_trig_activate_void;
+#else
 	sw_trig->trig.activate = swconfig_trig_activate;
+#endif
 	sw_trig->trig.deactivate = swconfig_trig_deactivate;
 
 	INIT_DELAYED_WORK(&sw_trig->sw_led_work, swconfig_led_work_func);
diff --git a/target/linux/generic/hack-4.19/202-reduce_module_size.patch b/target/linux/generic/hack-4.19/202-reduce_module_size.patch
index 2cbb6add9a..644a18c99c 100644
--- a/target/linux/generic/hack-4.19/202-reduce_module_size.patch
+++ b/target/linux/generic/hack-4.19/202-reduce_module_size.patch
@@ -13,12 +13,12 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/Makefile
 +++ b/Makefile
-@@ -425,7 +425,7 @@ KBUILD_AFLAGS_KERNEL :=
+@@ -427,7 +427,7 @@ KBUILD_AFLAGS_KERNEL :=
  KBUILD_CFLAGS_KERNEL :=
  KBUILD_AFLAGS_MODULE  := -DMODULE
  KBUILD_CFLAGS_MODULE  := -DMODULE
 -KBUILD_LDFLAGS_MODULE := -T $(srctree)/scripts/module-common.lds
 +KBUILD_LDFLAGS_MODULE = -T $(srctree)/scripts/module-common.lds $(if $(CONFIG_PROFILING),,-s)
+ KBUILD_LDFLAGS :=
  GCC_PLUGINS_CFLAGS :=
  
- export ARCH SRCARCH SUBARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD
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 db65062fcf..96056bb4a8 100644
--- a/target/linux/generic/hack-4.19/204-module_strip.patch
+++ b/target/linux/generic/hack-4.19/204-module_strip.patch
@@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/include/linux/module.h
 +++ b/include/linux/module.h
-@@ -158,6 +158,7 @@ extern void cleanup_module(void);
+@@ -160,6 +160,7 @@ extern void cleanup_module(void);
  
  /* Generic info of form tag = "info" */
  #define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info)
@@ -22,7 +22,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  /* For userspace: you can also call me... */
  #define MODULE_ALIAS(_alias) MODULE_INFO(alias, _alias)
-@@ -201,12 +202,12 @@ extern void cleanup_module(void);
+@@ -203,12 +204,12 @@ extern void cleanup_module(void);
   * Author(s), use "Name <email>" or just "Name", for multiple
   * authors use multiple MODULE_AUTHOR() statements/lines.
   */
@@ -38,7 +38,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  /* Creates an alias so file2alias.c can find device table. */
  #define MODULE_DEVICE_TABLE(type, name)					\
  extern typeof(name) __mod_##type##__##name##_device_table		\
-@@ -233,7 +234,9 @@ extern typeof(name) __mod_##type##__##na
+@@ -235,7 +236,9 @@ extern typeof(name) __mod_##type##__##na
   */
  
  #if defined(MODULE) || !defined(CONFIG_SYSFS)
@@ -49,7 +49,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #else
  #define MODULE_VERSION(_version)					\
  	static struct module_version_attribute ___modver_attr = {	\
-@@ -255,7 +258,7 @@ extern typeof(name) __mod_##type##__##na
+@@ -257,7 +260,7 @@ extern typeof(name) __mod_##type##__##na
  /* Optional firmware file (or files) needed by the module
   * format is simply firmware file name.  Multiple firmware
   * files require multiple MODULE_FIRMWARE() specifiers */
@@ -98,7 +98,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
 --- a/init/Kconfig
 +++ b/init/Kconfig
-@@ -1903,6 +1903,13 @@ config TRIM_UNUSED_KSYMS
+@@ -1988,6 +1988,13 @@ config TRIM_UNUSED_KSYMS
  
  	  If unsure, or if you need to build out-of-tree modules, say N.
  
@@ -114,7 +114,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  config MODULES_TREE_LOOKUP
 --- a/kernel/module.c
 +++ b/kernel/module.c
-@@ -3006,9 +3006,11 @@ static struct module *setup_load_info(st
+@@ -3002,9 +3002,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 at nbd.name>
  	if (flags & MODULE_INIT_IGNORE_VERMAGIC)
  		modmagic = NULL;
  
-@@ -3029,6 +3031,7 @@ static int check_modinfo(struct module *
+@@ -3025,6 +3027,7 @@ static int check_modinfo(struct module *
  				mod->name);
  		add_taint_module(mod, TAINT_OOT_MODULE, LOCKDEP_STILL_OK);
  	}
@@ -137,7 +137,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
 --- a/scripts/mod/modpost.c
 +++ b/scripts/mod/modpost.c
-@@ -1982,7 +1982,9 @@ static void read_symbols(char *modname)
+@@ -1969,7 +1969,9 @@ static void read_symbols(const char *mod
  		symname = remove_dot(info.strtab + sym->st_name);
  
  		handle_modversions(mod, &info, sym, symname);
@@ -145,11 +145,11 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		handle_moddevtable(mod, &info, sym, symname);
 +#endif
  	}
- 	if (!is_vmlinux(modname) ||
- 	     (is_vmlinux(modname) && vmlinux_section_warnings))
-@@ -2143,8 +2145,10 @@ static void add_header(struct buffer *b,
- 	buf_printf(b, "#include <linux/vermagic.h>\n");
- 	buf_printf(b, "#include <linux/compiler.h>\n");
+ 	if (!is_vmlinux(modname) || vmlinux_section_warnings)
+ 		check_sec_ref(mod, modname, &info);
+@@ -2132,8 +2134,10 @@ static void add_header(struct buffer *b,
+ 	buf_printf(b, "\n");
+ 	buf_printf(b, "BUILD_SALT;\n");
  	buf_printf(b, "\n");
 +#ifndef CONFIG_MODULE_STRIPPED
  	buf_printf(b, "MODULE_INFO(vermagic, VERMAGIC_STRING);\n");
@@ -158,7 +158,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	buf_printf(b, "\n");
  	buf_printf(b, "__visible struct module __this_module\n");
  	buf_printf(b, "__attribute__((section(\".gnu.linkonce.this_module\"))) = {\n");
-@@ -2161,8 +2165,10 @@ static void add_header(struct buffer *b,
+@@ -2150,8 +2154,10 @@ static void add_header(struct buffer *b,
  
  static void add_intree_flag(struct buffer *b, int is_intree)
  {
@@ -169,20 +169,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  }
  
  /* Cannot check for assembler */
-@@ -2175,10 +2181,12 @@ static void add_retpoline(struct buffer
- 
- static void add_staging_flag(struct buffer *b, const char *name)
- {
-+#ifndef CONFIG_MODULE_STRIPPED
- 	static const char *staging_dir = "drivers/staging";
- 
- 	if (strncmp(staging_dir, name, strlen(staging_dir)) == 0)
- 		buf_printf(b, "\nMODULE_INFO(staging, \"Y\");\n");
-+#endif
- }
- 
- /**
-@@ -2277,11 +2285,13 @@ static void add_depends(struct buffer *b
+@@ -2264,11 +2270,13 @@ static void add_depends(struct buffer *b
  
  static void add_srcversion(struct buffer *b, struct module *mod)
  {
@@ -196,7 +183,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  }
  
  static void write_if_changed(struct buffer *b, const char *fname)
-@@ -2518,7 +2528,9 @@ int main(int argc, char **argv)
+@@ -2505,7 +2513,9 @@ int main(int argc, char **argv)
  		add_staging_flag(&buf, mod->name);
  		err |= add_versions(&buf, mod);
  		add_depends(&buf, mod, modules);
diff --git a/target/linux/generic/hack-4.19/207-disable-modorder.patch b/target/linux/generic/hack-4.19/207-disable-modorder.patch
index fcc1580def..7d7b6a8dfb 100644
--- a/target/linux/generic/hack-4.19/207-disable-modorder.patch
+++ b/target/linux/generic/hack-4.19/207-disable-modorder.patch
@@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/Makefile
 +++ b/Makefile
-@@ -1232,7 +1232,6 @@ all: modules
+@@ -1224,7 +1224,6 @@ all: modules
  
  PHONY += modules
  modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
@@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	@$(kecho) '  Building modules, stage 2.';
  	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
  
-@@ -1261,7 +1260,6 @@ _modinst_:
+@@ -1253,7 +1252,6 @@ _modinst_:
  		rm -f $(MODLIB)/build ; \
  		ln -s $(CURDIR) $(MODLIB)/build ; \
  	fi
@@ -33,7 +33,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
 --- a/scripts/Makefile.build
 +++ b/scripts/Makefile.build
-@@ -94,7 +94,7 @@ modorder-target := $(obj)/modules.order
+@@ -78,7 +78,7 @@ modorder-target := $(obj)/modules.order
  # We keep a list of all modules in $(MODVERDIR)
  
  __build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target) $(extra-y)) \
diff --git a/target/linux/generic/hack-4.19/210-darwin_scripts_include.patch b/target/linux/generic/hack-4.19/210-darwin_scripts_include.patch
index 95c7ea4232..be6adc0d11 100644
--- a/target/linux/generic/hack-4.19/210-darwin_scripts_include.patch
+++ b/target/linux/generic/hack-4.19/210-darwin_scripts_include.patch
@@ -13,18 +13,6 @@ Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
  4 files changed, 3018 insertions(+)
  create mode 100644 scripts/mod/elf.h
 
---- a/scripts/kconfig/Makefile
-+++ b/scripts/kconfig/Makefile
-@@ -164,6 +164,9 @@ check-lxdialog  := $(srctree)/$(src)/lxd
- # we really need to do so. (Do not call gcc as part of make mrproper)
- HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags) \
-                     -DLOCALE
-+ifeq ($(shell uname -s),Darwin)
-+HOST_LOADLIBES  += -lncurses
-+endif
- 
- # ===========================================================================
- # Shared Makefile for the various kconfig executables:
 --- /dev/null
 +++ b/scripts/mod/elf.h
 @@ -0,0 +1,3007 @@
diff --git a/target/linux/generic/hack-4.19/211-host_tools_portability.patch b/target/linux/generic/hack-4.19/211-host_tools_portability.patch
index d806df8a5f..f3c285879c 100644
--- a/target/linux/generic/hack-4.19/211-host_tools_portability.patch
+++ b/target/linux/generic/hack-4.19/211-host_tools_portability.patch
@@ -16,7 +16,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  ###
  ## HOSTCC C flags
  
--host_c_flags = -Wp,-MD,$(depfile) -Wp,-MT,$@ $(CHOSTFLAGS) -D"BUILD_STR(s)=\#s" $(CHOSTFLAGS_$(basetarget).o) $(CHOSTFLAGS_$(obj))
+-host_c_flags = -Wp,-MD,$(depfile) -Wp,-MT,$@ $(KBUILD_HOSTCFLAGS) -D"BUILD_STR(s)=\#s" $(HOSTCFLAGS_$(basetarget).o) $(HOSTCFLAGS_$(obj))
 +host_c_flags = -MD -MF $(depfile) -MT $@ $(CHOSTFLAGS) -D"BUILD_STR(s)=\#s" $(CHOSTFLAGS_$(basetarget).o) $(CHOSTFLAGS_$(obj))
 --- a/tools/perf/pmu-events/jevents.c
 +++ b/tools/perf/pmu-events/jevents.c
diff --git a/target/linux/generic/hack-4.19/220-gc_sections.patch b/target/linux/generic/hack-4.19/220-gc_sections.patch
deleted file mode 100644
index fd53dbd40d..0000000000
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 2f59d6e93e..53be29d42f 100644
--- a/target/linux/generic/hack-4.19/221-module_exports.patch
+++ b/target/linux/generic/hack-4.19/221-module_exports.patch
@@ -27,27 +27,27 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +#define SYMTAB_DISCARD_GPL
 +#endif
 +
- #include <linux/export.h>
- 
  /* Align . to a 8 byte boundary equals to maximum function alignment. */
-@@ -341,14 +351,14 @@
+ #define ALIGN_FUNCTION()  . = ALIGN(8)
+ 
+@@ -372,14 +382,14 @@
  	/* Kernel symbol table: Normal symbols */			\
  	__ksymtab         : AT(ADDR(__ksymtab) - LOAD_OFFSET) {		\
- 		VMLINUX_SYMBOL(__start___ksymtab) = .;			\
+ 		__start___ksymtab = .;					\
 -		KEEP(*(SORT(___ksymtab+*)))				\
 +		SYMTAB_KEEP						\
- 		VMLINUX_SYMBOL(__stop___ksymtab) = .;			\
+ 		__stop___ksymtab = .;					\
  	}								\
  									\
  	/* Kernel symbol table: GPL-only symbols */			\
  	__ksymtab_gpl     : AT(ADDR(__ksymtab_gpl) - LOAD_OFFSET) {	\
- 		VMLINUX_SYMBOL(__start___ksymtab_gpl) = .;		\
+ 		__start___ksymtab_gpl = .;				\
 -		KEEP(*(SORT(___ksymtab_gpl+*)))				\
 +		SYMTAB_KEEP_GPL						\
- 		VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .;		\
+ 		__stop___ksymtab_gpl = .;				\
  	}								\
  									\
-@@ -410,7 +420,7 @@
+@@ -441,7 +451,7 @@
  									\
  	/* Kernel symbol table: strings */				\
          __ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) {	\
@@ -56,7 +56,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	}								\
  									\
  	/* __*init sections */						\
-@@ -793,6 +803,8 @@
+@@ -841,6 +851,8 @@
  	EXIT_TEXT							\
  	EXIT_DATA							\
  	EXIT_CALL							\
@@ -67,8 +67,8 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	}
 --- a/include/linux/export.h
 +++ b/include/linux/export.h
-@@ -60,12 +60,19 @@ extern struct module __this_module;
- #define __CRC_SYMBOL(sym, sec)
+@@ -74,12 +74,19 @@ struct kernel_symbol {
+ };
  #endif
  
 +#ifdef MODULE
@@ -82,15 +82,15 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	extern typeof(sym) sym;						\
  	__CRC_SYMBOL(sym, sec)						\
  	static const char __kstrtab_##sym[]				\
--	__attribute__((section("__ksymtab_strings"), aligned(1)))	\
+-	__attribute__((section("__ksymtab_strings"), used, aligned(1)))	\
 +	__attribute__((section("__ksymtab_strings"			\
-+	  __EXPORT_SUFFIX(sym)), aligned(1)))				\
- 	= VMLINUX_SYMBOL_STR(sym);					\
- 	static const struct kernel_symbol __ksymtab_##sym		\
- 	__used								\
++	  __EXPORT_SUFFIX(sym)), used, aligned(1)))			\
+ 	= #sym;								\
+ 	__KSYMTAB_ENTRY(sym, sec)
+ 
 --- a/scripts/Makefile.build
 +++ b/scripts/Makefile.build
-@@ -434,7 +434,7 @@ targets += $(extra-y) $(MAKECMDGOALS) $(
+@@ -410,7 +410,7 @@ targets += $(extra-y) $(MAKECMDGOALS) $(
  # Linker scripts preprocessor (.lds.S -> .lds)
  # ---------------------------------------------------------------------------
  quiet_cmd_cpp_lds_S = LDS     $@
diff --git a/target/linux/generic/hack-4.19/230-openwrt_lzma_options.patch b/target/linux/generic/hack-4.19/230-openwrt_lzma_options.patch
index 3ae578c271..b45ed1184f 100644
--- a/target/linux/generic/hack-4.19/230-openwrt_lzma_options.patch
+++ b/target/linux/generic/hack-4.19/230-openwrt_lzma_options.patch
@@ -8,7 +8,7 @@ Signed-off-by: Imre Kaloz <kaloz at openwrt.org>
 ---
  lib/decompress.c              |  1 +
  scripts/Makefile.lib          |  2 +-
- scripts/gen_initramfs_list.sh | 10 +++++-----
+ usr/gen_initramfs_list.sh | 10 +++++-----
  3 files changed, 7 insertions(+), 6 deletions(-)
 
 --- a/lib/decompress.c
@@ -23,7 +23,7 @@ Signed-off-by: Imre Kaloz <kaloz at openwrt.org>
  	{ {0x02, 0x21}, "lz4", unlz4 },
 --- a/scripts/Makefile.lib
 +++ b/scripts/Makefile.lib
-@@ -348,7 +348,7 @@ cmd_bzip2 = (cat $(filter-out FORCE,$^)
+@@ -324,7 +324,7 @@ cmd_bzip2 = (cat $(filter-out FORCE,$^)
  
  quiet_cmd_lzma = LZMA    $@
  cmd_lzma = (cat $(filter-out FORCE,$^) | \
@@ -32,8 +32,8 @@ Signed-off-by: Imre Kaloz <kaloz at openwrt.org>
  	(rm -f $@ ; false)
  
  quiet_cmd_lzo = LZO     $@
---- a/scripts/gen_initramfs_list.sh
-+++ b/scripts/gen_initramfs_list.sh
+--- a/usr/gen_initramfs_list.sh
++++ b/usr/gen_initramfs_list.sh
 @@ -229,7 +229,7 @@ cpio_list=
  output="/dev/stdout"
  output_file=""
diff --git a/target/linux/generic/hack-4.19/250-netfilter_depends.patch b/target/linux/generic/hack-4.19/250-netfilter_depends.patch
index a8fe5d4175..b29ca5190e 100644
--- a/target/linux/generic/hack-4.19/250-netfilter_depends.patch
+++ b/target/linux/generic/hack-4.19/250-netfilter_depends.patch
@@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/netfilter/Kconfig
 +++ b/net/netfilter/Kconfig
-@@ -229,7 +229,6 @@ config NF_CONNTRACK_FTP
+@@ -241,7 +241,6 @@ config NF_CONNTRACK_FTP
  
  config NF_CONNTRACK_H323
  	tristate "H.323 protocol support"
@@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	depends on NETFILTER_ADVANCED
  	help
  	  H.323 is a VoIP signalling protocol from ITU-T. As one of the most
-@@ -1052,7 +1051,6 @@ config NETFILTER_XT_TARGET_SECMARK
+@@ -1076,7 +1075,6 @@ config NETFILTER_XT_TARGET_SECMARK
  
  config NETFILTER_XT_TARGET_TCPMSS
  	tristate '"TCPMSS" target support'
diff --git a/target/linux/generic/hack-4.19/251-sound_kconfig.patch b/target/linux/generic/hack-4.19/251-sound_kconfig.patch
index 5bf5c01ad3..2cfc2fab3a 100644
--- a/target/linux/generic/hack-4.19/251-sound_kconfig.patch
+++ b/target/linux/generic/hack-4.19/251-sound_kconfig.patch
@@ -63,17 +63,17 @@ Signed-off-by: John Crispin <john at phrozen.org>
  
 --- a/drivers/bcma/Kconfig
 +++ b/drivers/bcma/Kconfig
-@@ -15,6 +15,7 @@ menuconfig BCMA
+@@ -16,6 +16,7 @@ if BCMA
+ # Support for Block-I/O. SELECT this from the driver that needs it.
  config BCMA_BLOCKIO
  	bool
- 	depends on BCMA
 +	default y
  
  config BCMA_HOST_PCI_POSSIBLE
  	bool
 --- a/drivers/ssb/Kconfig
 +++ b/drivers/ssb/Kconfig
-@@ -29,6 +29,7 @@ config SSB_SPROM
+@@ -28,6 +28,7 @@ config SSB_SPROM
  config SSB_BLOCKIO
  	bool
  	depends on SSB
@@ -81,7 +81,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
  
  config SSB_PCIHOST_POSSIBLE
  	bool
-@@ -49,7 +50,7 @@ config SSB_PCIHOST
+@@ -48,7 +49,7 @@ config SSB_PCIHOST
  config SSB_B43_PCI_BRIDGE
  	bool
  	depends on SSB_PCIHOST
@@ -92,12 +92,12 @@ Signed-off-by: John Crispin <john at phrozen.org>
  	bool
 --- a/lib/Kconfig
 +++ b/lib/Kconfig
-@@ -358,16 +358,16 @@ config BCH_CONST_T
+@@ -377,16 +377,16 @@ config BCH_CONST_T
  # Textsearch support is select'ed if needed
  #
  config TEXTSEARCH
 -	bool
-+	boolean	"Textsearch support"
++	bool "Textsearch support"
  
  config TEXTSEARCH_KMP
 -	tristate
@@ -146,8 +146,8 @@ Signed-off-by: John Crispin <john at phrozen.org>
  
  config CFG80211
  	tristate "cfg80211 - wireless configuration API"
-@@ -188,7 +188,7 @@ config CFG80211_WEXT_EXPORT
- 	  wext compatibility symbols to be exported.
+@@ -202,7 +202,7 @@ config CFG80211_WEXT_EXPORT
+ endif # CFG80211
  
  config LIB80211
 -	tristate
@@ -155,7 +155,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
  	default n
  	help
  	  This options enables a library of common routines used
-@@ -197,13 +197,16 @@ config LIB80211
+@@ -211,13 +211,16 @@ config LIB80211
  	  Drivers should select this themselves if needed.
  
  config LIB80211_CRYPT_WEP
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 458b7c35a1..1c5e1164e2 100644
--- a/target/linux/generic/hack-4.19/259-regmap_dynamic.patch
+++ b/target/linux/generic/hack-4.19/259-regmap_dynamic.patch
@@ -25,7 +25,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  config REGCACHE_COMPRESSED
  	select LZO_COMPRESS
-@@ -17,23 +16,30 @@ config REGMAP_AC97
+@@ -17,7 +16,8 @@ config REGMAP_AC97
  	tristate
  
  config REGMAP_I2C
@@ -34,6 +34,10 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	select REGMAP
  	depends on I2C
  
+ config REGMAP_SLIMBUS
+@@ -25,21 +25,27 @@ config REGMAP_SLIMBUS
+ 	depends on SLIMBUS
+ 
  config REGMAP_SPI
 -	tristate
 +	tristate "Regmap SPI"
@@ -59,6 +63,8 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  config REGMAP_IRQ
 +	select REGMAP
  	bool
+ 
+ config REGMAP_SOUNDWIRE
 --- a/drivers/base/regmap/Makefile
 +++ b/drivers/base/regmap/Makefile
 @@ -2,10 +2,14 @@
@@ -79,7 +85,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +obj-$(CONFIG_REGMAP) += regmap-core.o
  obj-$(CONFIG_REGMAP_AC97) += regmap-ac97.o
  obj-$(CONFIG_REGMAP_I2C) += regmap-i2c.o
- obj-$(CONFIG_REGMAP_SPI) += regmap-spi.o
+ obj-$(CONFIG_REGMAP_SLIMBUS) += regmap-slimbus.o
 --- a/drivers/base/regmap/regmap.c
 +++ b/drivers/base/regmap/regmap.c
 @@ -13,6 +13,7 @@
@@ -90,7 +96,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #include <linux/mutex.h>
  #include <linux/err.h>
  #include <linux/of.h>
-@@ -2926,3 +2927,5 @@ static int __init regmap_initcall(void)
+@@ -3037,3 +3038,5 @@ static int __init regmap_initcall(void)
  	return 0;
  }
  postcore_initcall(regmap_initcall);
@@ -98,7 +104,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +MODULE_LICENSE("GPL");
 --- a/include/linux/regmap.h
 +++ b/include/linux/regmap.h
-@@ -139,7 +139,7 @@ struct reg_sequence {
+@@ -187,7 +187,7 @@ struct reg_sequence {
  	pollret ?: ((cond) ? 0 : -ETIMEDOUT); \
  })
  
diff --git a/target/linux/generic/hack-4.19/260-crypto_test_dependencies.patch b/target/linux/generic/hack-4.19/260-crypto_test_dependencies.patch
index 8523fc5374..f11f45437f 100644
--- a/target/linux/generic/hack-4.19/260-crypto_test_dependencies.patch
+++ b/target/linux/generic/hack-4.19/260-crypto_test_dependencies.patch
@@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/crypto/Kconfig
 +++ b/crypto/Kconfig
-@@ -143,13 +143,13 @@ config CRYPTO_MANAGER
+@@ -144,13 +144,13 @@ config CRYPTO_MANAGER
  	  cbc(aes).
  
  config CRYPTO_MANAGER2
@@ -35,7 +35,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  config CRYPTO_USER
  	tristate "Userspace cryptographic algorithm configuration"
-@@ -162,7 +162,6 @@ config CRYPTO_USER
+@@ -163,7 +163,6 @@ config CRYPTO_USER
  config CRYPTO_MANAGER_DISABLE_TESTS
  	bool "Disable run-time self tests"
  	default y
@@ -45,7 +45,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	  algorithm registration.
 --- a/crypto/algboss.c
 +++ b/crypto/algboss.c
-@@ -248,8 +248,12 @@ static int cryptomgr_schedule_test(struc
+@@ -247,8 +247,12 @@ static int cryptomgr_schedule_test(struc
  	type = alg->cra_flags;
  
  	/* Do not test internal algorithms. */
diff --git a/target/linux/generic/hack-4.19/280-rfkill-stubs.patch b/target/linux/generic/hack-4.19/280-rfkill-stubs.patch
index 85d01a6d10..7bb7d26b90 100644
--- a/target/linux/generic/hack-4.19/280-rfkill-stubs.patch
+++ b/target/linux/generic/hack-4.19/280-rfkill-stubs.patch
@@ -22,7 +22,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
 -#if defined(CONFIG_RFKILL) || defined(CONFIG_RFKILL_MODULE)
 +#if defined(CONFIG_RFKILL_FULL) || defined(CONFIG_RFKILL_FULL_MODULE)
  /**
-  * rfkill_alloc - allocate rfkill structure
+  * rfkill_alloc - Allocate rfkill structure
   * @name: name of the struct -- the string is not copied internally
 --- a/net/Makefile
 +++ b/net/Makefile
diff --git a/target/linux/generic/hack-4.19/301-mips_image_cmdline_hack.patch b/target/linux/generic/hack-4.19/301-mips_image_cmdline_hack.patch
index eb6011e813..e7593f78e9 100644
--- a/target/linux/generic/hack-4.19/301-mips_image_cmdline_hack.patch
+++ b/target/linux/generic/hack-4.19/301-mips_image_cmdline_hack.patch
@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
 
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -1158,6 +1158,10 @@ config SYNC_R4K
+@@ -1140,6 +1140,10 @@ config SYNC_R4K
  config MIPS_MACHINE
  	def_bool n
  
diff --git a/target/linux/generic/hack-4.19/321-powerpc_crtsavres_prereq.patch b/target/linux/generic/hack-4.19/321-powerpc_crtsavres_prereq.patch
deleted file mode 100644
index 3f81b2e05f..0000000000
diff --git a/target/linux/generic/hack-4.19/640-bridge-only-accept-EAP-locally.patch b/target/linux/generic/hack-4.19/640-bridge-only-accept-EAP-locally.patch
index 0dbb8ee3c0..981d49b9c0 100644
--- a/target/linux/generic/hack-4.19/640-bridge-only-accept-EAP-locally.patch
+++ b/target/linux/generic/hack-4.19/640-bridge-only-accept-EAP-locally.patch
@@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/bridge/br_input.c
 +++ b/net/bridge/br_input.c
-@@ -166,10 +166,14 @@ int br_handle_frame_finish(struct net *n
+@@ -110,10 +110,14 @@ int br_handle_frame_finish(struct net *n
  		}
  	}
  
@@ -28,4 +28,4 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 -	BR_INPUT_SKB_CB(skb)->brdev = br->dev;
  	BR_INPUT_SKB_CB(skb)->src_port_isolated = !!(p->flags & BR_ISOLATED);
  
- 	if (IS_ENABLED(CONFIG_INET) && skb->protocol == htons(ETH_P_ARP))
+ 	if (IS_ENABLED(CONFIG_INET) &&
diff --git a/target/linux/generic/hack-4.19/647-netfilter-flow-acct.patch b/target/linux/generic/hack-4.19/647-netfilter-flow-acct.patch
deleted file mode 100644
index 290570fe9f..0000000000
diff --git a/target/linux/generic/hack-4.19/650-netfilter-add-xt_OFFLOAD-target.patch b/target/linux/generic/hack-4.19/650-netfilter-add-xt_OFFLOAD-target.patch
index 2044bfaeb8..ab1bb6aa81 100644
--- a/target/linux/generic/hack-4.19/650-netfilter-add-xt_OFFLOAD-target.patch
+++ b/target/linux/generic/hack-4.19/650-netfilter-add-xt_OFFLOAD-target.patch
@@ -8,7 +8,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/ipv4/netfilter/Kconfig
 +++ b/net/ipv4/netfilter/Kconfig
-@@ -76,8 +76,6 @@ config NF_TABLES_ARP
+@@ -63,8 +63,6 @@ config NF_TABLES_ARP
  	help
  	  This option enables the ARP support for nf_tables.
  
@@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  config NF_FLOW_TABLE_IPV4
  	tristate "Netfilter flow table IPv4 module"
  	depends on NF_FLOW_TABLE
-@@ -86,6 +84,8 @@ config NF_FLOW_TABLE_IPV4
+@@ -73,6 +71,8 @@ config NF_FLOW_TABLE_IPV4
  
  	  To compile it as a module, choose M here.
  
@@ -28,7 +28,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	depends on !NF_CONNTRACK || NF_CONNTRACK
 --- a/net/ipv6/netfilter/Kconfig
 +++ b/net/ipv6/netfilter/Kconfig
-@@ -97,7 +97,6 @@ config NFT_FIB_IPV6
+@@ -80,7 +80,6 @@ config NFT_FIB_IPV6
  	  multicast or blackhole.
  
  endif # NF_TABLES_IPV6
@@ -36,7 +36,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  config NF_FLOW_TABLE_IPV6
  	tristate "Netfilter flow table IPv6 module"
-@@ -107,6 +106,8 @@ config NF_FLOW_TABLE_IPV6
+@@ -90,6 +89,8 @@ config NF_FLOW_TABLE_IPV6
  
  	  To compile it as a module, choose M here.
  
@@ -47,7 +47,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	depends on !NF_CONNTRACK || NF_CONNTRACK
 --- a/net/netfilter/Kconfig
 +++ b/net/netfilter/Kconfig
-@@ -671,8 +671,6 @@ config NFT_FIB_NETDEV
+@@ -693,8 +693,6 @@ config NFT_FIB_NETDEV
  
  endif # NF_TABLES_NETDEV
  
@@ -56,7 +56,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  config NF_FLOW_TABLE_INET
  	tristate "Netfilter flow table mixed IPv4/IPv6 module"
  	depends on NF_FLOW_TABLE
-@@ -681,11 +679,12 @@ config NF_FLOW_TABLE_INET
+@@ -703,11 +701,12 @@ config NF_FLOW_TABLE_INET
  
  	  To compile it as a module, choose M here.
  
@@ -70,7 +70,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	help
  	  This option adds the flow table core infrastructure.
  
-@@ -974,6 +973,15 @@ config NETFILTER_XT_TARGET_NOTRACK
+@@ -996,6 +995,15 @@ config NETFILTER_XT_TARGET_NOTRACK
  	depends on NETFILTER_ADVANCED
  	select NETFILTER_XT_TARGET_CT
  
@@ -88,7 +88,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	depends on NETFILTER_ADVANCED
 --- a/net/netfilter/Makefile
 +++ b/net/netfilter/Makefile
-@@ -134,6 +134,7 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_CLASSIF
+@@ -144,6 +144,7 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_CLASSIF
  obj-$(CONFIG_NETFILTER_XT_TARGET_CONNSECMARK) += xt_CONNSECMARK.o
  obj-$(CONFIG_NETFILTER_XT_TARGET_CT) += xt_CT.o
  obj-$(CONFIG_NETFILTER_XT_TARGET_DSCP) += xt_DSCP.o
diff --git a/target/linux/generic/hack-4.19/651-wireless_mesh_header.patch b/target/linux/generic/hack-4.19/651-wireless_mesh_header.patch
index f545d8ebbc..965b431d01 100644
--- a/target/linux/generic/hack-4.19/651-wireless_mesh_header.patch
+++ b/target/linux/generic/hack-4.19/651-wireless_mesh_header.patch
@@ -11,7 +11,7 @@ Signed-off-by: Imre Kaloz <kaloz at openwrt.org>
 
 --- a/include/linux/netdevice.h
 +++ b/include/linux/netdevice.h
-@@ -138,8 +138,8 @@ static inline bool dev_xmit_complete(int
+@@ -140,8 +140,8 @@ static inline bool dev_xmit_complete(int
  
  #if defined(CONFIG_HYPERV_NET)
  # define LL_MAX_HEADER 128
diff --git a/target/linux/generic/hack-4.19/660-fq_codel_defaults.patch b/target/linux/generic/hack-4.19/660-fq_codel_defaults.patch
index b923a2d206..42698c6451 100644
--- a/target/linux/generic/hack-4.19/660-fq_codel_defaults.patch
+++ b/target/linux/generic/hack-4.19/660-fq_codel_defaults.patch
@@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/sched/sch_fq_codel.c
 +++ b/net/sched/sch_fq_codel.c
-@@ -471,7 +471,11 @@ static int fq_codel_init(struct Qdisc *s
+@@ -474,7 +474,11 @@ static int fq_codel_init(struct Qdisc *s
  
  	sch->limit = 10*1024;
  	q->flows_cnt = 1024;
diff --git a/target/linux/generic/hack-4.19/661-use_fq_codel_by_default.patch b/target/linux/generic/hack-4.19/661-use_fq_codel_by_default.patch
index d1e92ae40a..ce9d4b14f0 100644
--- a/target/linux/generic/hack-4.19/661-use_fq_codel_by_default.patch
+++ b/target/linux/generic/hack-4.19/661-use_fq_codel_by_default.patch
@@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/include/net/sch_generic.h
 +++ b/include/net/sch_generic.h
-@@ -368,12 +368,13 @@ extern struct Qdisc_ops noop_qdisc_ops;
+@@ -486,12 +486,13 @@ extern struct Qdisc_ops noop_qdisc_ops;
  extern struct Qdisc_ops pfifo_fast_ops;
  extern struct Qdisc_ops mq_qdisc_ops;
  extern struct Qdisc_ops noqueue_qdisc_ops;
@@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 --- a/net/sched/Kconfig
 +++ b/net/sched/Kconfig
 @@ -3,8 +3,9 @@
- # 
+ #
  
  menuconfig NET_SCHED
 -	bool "QoS and/or fair queueing"
@@ -44,7 +44,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	  device, it has to decide which ones to send first, which ones to
 --- a/net/sched/sch_api.c
 +++ b/net/sched/sch_api.c
-@@ -2028,7 +2028,7 @@ static int __init pktsched_init(void)
+@@ -2157,7 +2157,7 @@ static int __init pktsched_init(void)
  		return err;
  	}
  
@@ -55,7 +55,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	register_qdisc(&pfifo_head_drop_qdisc_ops);
 --- a/net/sched/sch_fq_codel.c
 +++ b/net/sched/sch_fq_codel.c
-@@ -700,7 +700,7 @@ static const struct Qdisc_class_ops fq_c
+@@ -716,7 +716,7 @@ static const struct Qdisc_class_ops fq_c
  	.walk		=	fq_codel_walk,
  };
  
@@ -64,7 +64,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	.cl_ops		=	&fq_codel_class_ops,
  	.id		=	"fq_codel",
  	.priv_size	=	sizeof(struct fq_codel_sched_data),
-@@ -715,6 +715,7 @@ static struct Qdisc_ops fq_codel_qdisc_o
+@@ -731,6 +731,7 @@ static struct Qdisc_ops fq_codel_qdisc_o
  	.dump_stats =	fq_codel_dump_stats,
  	.owner		=	THIS_MODULE,
  };
@@ -74,8 +74,8 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  {
 --- a/net/sched/sch_generic.c
 +++ b/net/sched/sch_generic.c
-@@ -32,7 +32,7 @@
- #include <trace/events/qdisc.h>
+@@ -35,7 +35,7 @@
+ #include <net/xfrm.h>
  
  /* Qdisc to use by default */
 -const struct Qdisc_ops *default_qdisc_ops = &pfifo_fast_ops;
@@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  EXPORT_SYMBOL(default_qdisc_ops);
  
  /* Main transmission queue. */
-@@ -760,7 +760,7 @@ static void attach_one_default_qdisc(str
+@@ -1005,7 +1005,7 @@ static void attach_one_default_qdisc(str
  				     void *_unused)
  {
  	struct Qdisc *qdisc;
diff --git a/target/linux/generic/hack-4.19/662-remove_pfifo_fast.patch b/target/linux/generic/hack-4.19/662-remove_pfifo_fast.patch
index 7b6e38da29..8f54c516f9 100644
--- a/target/linux/generic/hack-4.19/662-remove_pfifo_fast.patch
+++ b/target/linux/generic/hack-4.19/662-remove_pfifo_fast.patch
@@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/sched/sch_generic.c
 +++ b/net/sched/sch_generic.c
-@@ -453,146 +453,6 @@ struct Qdisc_ops noqueue_qdisc_ops __rea
+@@ -595,208 +595,6 @@ struct Qdisc_ops noqueue_qdisc_ops __rea
  	.owner		=	THIS_MODULE,
  };
  
@@ -26,93 +26,103 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 -
 -/*
 - * Private data for a pfifo_fast scheduler containing:
-- * 	- queues for the three band
-- * 	- bitmap indicating which of the bands contain skbs
+- *	- rings for priority bands
 - */
 -struct pfifo_fast_priv {
--	u32 bitmap;
--	struct qdisc_skb_head q[PFIFO_FAST_BANDS];
+-	struct skb_array q[PFIFO_FAST_BANDS];
 -};
 -
--/*
-- * Convert a bitmap to the first band number where an skb is queued, where:
-- * 	bitmap=0 means there are no skbs on any band.
-- * 	bitmap=1 means there is an skb on band 0.
-- *	bitmap=7 means there are skbs on all 3 bands, etc.
-- */
--static const int bitmap2band[] = {-1, 0, 1, 0, 2, 0, 1, 0};
--
--static inline struct qdisc_skb_head *band2list(struct pfifo_fast_priv *priv,
--					     int band)
+-static inline struct skb_array *band2list(struct pfifo_fast_priv *priv,
+-					  int band)
 -{
--	return priv->q + band;
+-	return &priv->q[band];
 -}
 -
 -static int pfifo_fast_enqueue(struct sk_buff *skb, struct Qdisc *qdisc,
 -			      struct sk_buff **to_free)
 -{
--	if (qdisc->q.qlen < qdisc_dev(qdisc)->tx_queue_len) {
--		int band = prio2band[skb->priority & TC_PRIO_MAX];
--		struct pfifo_fast_priv *priv = qdisc_priv(qdisc);
--		struct qdisc_skb_head *list = band2list(priv, band);
--
--		priv->bitmap |= (1 << band);
--		qdisc->q.qlen++;
--		return __qdisc_enqueue_tail(skb, qdisc, list);
--	}
+-	int band = prio2band[skb->priority & TC_PRIO_MAX];
+-	struct pfifo_fast_priv *priv = qdisc_priv(qdisc);
+-	struct skb_array *q = band2list(priv, band);
+-	unsigned int pkt_len = qdisc_pkt_len(skb);
+-	int err;
 -
--	return qdisc_drop(skb, qdisc, to_free);
+-	err = skb_array_produce(q, skb);
+-
+-	if (unlikely(err))
+-		return qdisc_drop_cpu(skb, qdisc, to_free);
+-
+-	qdisc_qstats_cpu_qlen_inc(qdisc);
+-	/* Note: skb can not be used after skb_array_produce(),
+-	 * so we better not use qdisc_qstats_cpu_backlog_inc()
+-	 */
+-	this_cpu_add(qdisc->cpu_qstats->backlog, pkt_len);
+-	return NET_XMIT_SUCCESS;
 -}
 -
 -static struct sk_buff *pfifo_fast_dequeue(struct Qdisc *qdisc)
 -{
 -	struct pfifo_fast_priv *priv = qdisc_priv(qdisc);
--	int band = bitmap2band[priv->bitmap];
+-	struct sk_buff *skb = NULL;
+-	int band;
 -
--	if (likely(band >= 0)) {
--		struct qdisc_skb_head *qh = band2list(priv, band);
--		struct sk_buff *skb = __qdisc_dequeue_head(qh);
+-	for (band = 0; band < PFIFO_FAST_BANDS && !skb; band++) {
+-		struct skb_array *q = band2list(priv, band);
 -
--		if (likely(skb != NULL)) {
--			qdisc_qstats_backlog_dec(qdisc, skb);
--			qdisc_bstats_update(qdisc, skb);
--		}
+-		if (__skb_array_empty(q))
+-			continue;
 -
--		qdisc->q.qlen--;
--		if (qh->qlen == 0)
--			priv->bitmap &= ~(1 << band);
--
--		return skb;
+-		skb = __skb_array_consume(q);
+-	}
+-	if (likely(skb)) {
+-		qdisc_qstats_cpu_backlog_dec(qdisc, skb);
+-		qdisc_bstats_cpu_update(qdisc, skb);
+-		qdisc_qstats_cpu_qlen_dec(qdisc);
 -	}
 -
--	return NULL;
+-	return skb;
 -}
 -
 -static struct sk_buff *pfifo_fast_peek(struct Qdisc *qdisc)
 -{
 -	struct pfifo_fast_priv *priv = qdisc_priv(qdisc);
--	int band = bitmap2band[priv->bitmap];
+-	struct sk_buff *skb = NULL;
+-	int band;
 -
--	if (band >= 0) {
--		struct qdisc_skb_head *qh = band2list(priv, band);
+-	for (band = 0; band < PFIFO_FAST_BANDS && !skb; band++) {
+-		struct skb_array *q = band2list(priv, band);
 -
--		return qh->head;
+-		skb = __skb_array_peek(q);
 -	}
 -
--	return NULL;
+-	return skb;
 -}
 -
 -static void pfifo_fast_reset(struct Qdisc *qdisc)
 -{
--	int prio;
+-	int i, band;
 -	struct pfifo_fast_priv *priv = qdisc_priv(qdisc);
 -
--	for (prio = 0; prio < PFIFO_FAST_BANDS; prio++)
--		__qdisc_reset_queue(band2list(priv, prio));
+-	for (band = 0; band < PFIFO_FAST_BANDS; band++) {
+-		struct skb_array *q = band2list(priv, band);
+-		struct sk_buff *skb;
+-
+-		/* NULL ring is possible if destroy path is due to a failed
+-		 * skb_array_init() in pfifo_fast_init() case.
+-		 */
+-		if (!q->ring.queue)
+-			continue;
+-
+-		while ((skb = __skb_array_consume(q)) != NULL)
+-			kfree_skb(skb);
+-	}
+-
+-	for_each_possible_cpu(i) {
+-		struct gnet_stats_queue *q = per_cpu_ptr(qdisc->cpu_qstats, i);
 -
--	priv->bitmap = 0;
--	qdisc->qstats.backlog = 0;
--	qdisc->q.qlen = 0;
+-		q->backlog = 0;
+-		q->qlen = 0;
+-	}
 -}
 -
 -static int pfifo_fast_dump(struct Qdisc *qdisc, struct sk_buff *skb)
@@ -128,19 +138,68 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 -	return -1;
 -}
 -
--static int pfifo_fast_init(struct Qdisc *qdisc, struct nlattr *opt)
+-static int pfifo_fast_init(struct Qdisc *qdisc, struct nlattr *opt,
+-			   struct netlink_ext_ack *extack)
 -{
--	int prio;
+-	unsigned int qlen = qdisc_dev(qdisc)->tx_queue_len;
 -	struct pfifo_fast_priv *priv = qdisc_priv(qdisc);
+-	int prio;
 -
--	for (prio = 0; prio < PFIFO_FAST_BANDS; prio++)
--		qdisc_skb_head_init(band2list(priv, prio));
+-	/* guard against zero length rings */
+-	if (!qlen)
+-		return -EINVAL;
+-
+-	for (prio = 0; prio < PFIFO_FAST_BANDS; prio++) {
+-		struct skb_array *q = band2list(priv, prio);
+-		int err;
+-
+-		err = skb_array_init(q, qlen, GFP_KERNEL);
+-		if (err)
+-			return -ENOMEM;
+-	}
 -
 -	/* Can by-pass the queue discipline */
 -	qdisc->flags |= TCQ_F_CAN_BYPASS;
 -	return 0;
 -}
 -
+-static void pfifo_fast_destroy(struct Qdisc *sch)
+-{
+-	struct pfifo_fast_priv *priv = qdisc_priv(sch);
+-	int prio;
+-
+-	for (prio = 0; prio < PFIFO_FAST_BANDS; prio++) {
+-		struct skb_array *q = band2list(priv, prio);
+-
+-		/* NULL ring is possible if destroy path is due to a failed
+-		 * skb_array_init() in pfifo_fast_init() case.
+-		 */
+-		if (!q->ring.queue)
+-			continue;
+-		/* Destroy ring but no need to kfree_skb because a call to
+-		 * pfifo_fast_reset() has already done that work.
+-		 */
+-		ptr_ring_cleanup(&q->ring, NULL);
+-	}
+-}
+-
+-static int pfifo_fast_change_tx_queue_len(struct Qdisc *sch,
+-					  unsigned int new_len)
+-{
+-	struct pfifo_fast_priv *priv = qdisc_priv(sch);
+-	struct skb_array *bands[PFIFO_FAST_BANDS];
+-	int prio;
+-
+-	for (prio = 0; prio < PFIFO_FAST_BANDS; prio++) {
+-		struct skb_array *q = band2list(priv, prio);
+-
+-		bands[prio] = q;
+-	}
+-
+-	return skb_array_resize_multiple(bands, PFIFO_FAST_BANDS, new_len,
+-					 GFP_KERNEL);
+-}
+-
 -struct Qdisc_ops pfifo_fast_ops __read_mostly = {
 -	.id		=	"pfifo_fast",
 -	.priv_size	=	sizeof(struct pfifo_fast_priv),
@@ -148,9 +207,12 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 -	.dequeue	=	pfifo_fast_dequeue,
 -	.peek		=	pfifo_fast_peek,
 -	.init		=	pfifo_fast_init,
+-	.destroy	=	pfifo_fast_destroy,
 -	.reset		=	pfifo_fast_reset,
 -	.dump		=	pfifo_fast_dump,
+-	.change_tx_queue_len =  pfifo_fast_change_tx_queue_len,
 -	.owner		=	THIS_MODULE,
+-	.static_flags	=	TCQ_F_NOLOCK | TCQ_F_CPUSTATS,
 -};
 -EXPORT_SYMBOL(pfifo_fast_ops);
 -
diff --git a/target/linux/generic/hack-4.19/700-swconfig_switch_drivers.patch b/target/linux/generic/hack-4.19/700-swconfig_switch_drivers.patch
index f9df475500..ebfcfe81c7 100644
--- a/target/linux/generic/hack-4.19/700-swconfig_switch_drivers.patch
+++ b/target/linux/generic/hack-4.19/700-swconfig_switch_drivers.patch
@@ -12,8 +12,8 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/drivers/net/phy/Kconfig
 +++ b/drivers/net/phy/Kconfig
-@@ -198,6 +198,89 @@ config LED_TRIGGER_PHY
- 		<Speed in megabits>Mbps or <Speed in gigabits>Gbps
+@@ -209,6 +209,89 @@ config LED_TRIGGER_PHY
+ 		for any speed known to the PHY.
  
  
 +comment "Switch configuration API + drivers"
@@ -128,7 +128,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  obj-$(CONFIG_MDIO_BITBANG)	+= mdio-bitbang.o
 --- a/include/linux/platform_data/b53.h
 +++ b/include/linux/platform_data/b53.h
-@@ -25,6 +25,9 @@ struct b53_platform_data {
+@@ -29,6 +29,9 @@ struct b53_platform_data {
  	u32 chip_id;
  	u16 enabled_ports;
  
diff --git a/target/linux/generic/hack-4.19/702-phy_add_aneg_done_function.patch b/target/linux/generic/hack-4.19/702-phy_add_aneg_done_function.patch
index 0453112a1f..31efb35a97 100644
--- a/target/linux/generic/hack-4.19/702-phy_add_aneg_done_function.patch
+++ b/target/linux/generic/hack-4.19/702-phy_add_aneg_done_function.patch
@@ -1,6 +1,6 @@
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -547,6 +547,12 @@ struct phy_driver {
+@@ -548,6 +548,12 @@ struct phy_driver {
  	/* Determines the negotiated speed and duplex */
  	int (*read_status)(struct phy_device *phydev);
  
@@ -15,7 +15,7 @@
  
 --- a/drivers/net/phy/phy_device.c
 +++ b/drivers/net/phy/phy_device.c
-@@ -1458,6 +1458,9 @@ int genphy_update_link(struct phy_device
+@@ -1509,6 +1509,9 @@ int genphy_update_link(struct phy_device
  {
  	int status;
  
diff --git a/target/linux/generic/hack-4.19/721-phy_packets.patch b/target/linux/generic/hack-4.19/721-phy_packets.patch
index ebe4787b68..b8700cf03b 100644
--- a/target/linux/generic/hack-4.19/721-phy_packets.patch
+++ b/target/linux/generic/hack-4.19/721-phy_packets.patch
@@ -15,24 +15,24 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/include/linux/netdevice.h
 +++ b/include/linux/netdevice.h
-@@ -1410,6 +1410,7 @@ enum netdev_priv_flags {
- 	IFF_RXFH_CONFIGURED		= 1<<25,
- 	IFF_PHONY_HEADROOM		= 1<<26,
- 	IFF_MACSEC			= 1<<27,
-+	IFF_NO_IP_ALIGN			= 1<<28,
+@@ -1510,6 +1510,7 @@ enum netdev_priv_flags {
+ 	IFF_NO_RX_HANDLER		= 1<<26,
+ 	IFF_FAILOVER			= 1<<27,
+ 	IFF_FAILOVER_SLAVE		= 1<<28,
++	IFF_NO_IP_ALIGN			= 1<<29,
  };
  
  #define IFF_802_1Q_VLAN			IFF_802_1Q_VLAN
-@@ -1439,6 +1440,7 @@ enum netdev_priv_flags {
- #define IFF_TEAM			IFF_TEAM
- #define IFF_RXFH_CONFIGURED		IFF_RXFH_CONFIGURED
- #define IFF_MACSEC			IFF_MACSEC
+@@ -1540,6 +1541,7 @@ enum netdev_priv_flags {
+ #define IFF_NO_RX_HANDLER		IFF_NO_RX_HANDLER
+ #define IFF_FAILOVER			IFF_FAILOVER
+ #define IFF_FAILOVER_SLAVE		IFF_FAILOVER_SLAVE
 +#define IFF_NO_IP_ALIGN			IFF_NO_IP_ALIGN
  
  /**
   *	struct net_device - The DEVICE structure.
-@@ -1725,6 +1727,11 @@ struct net_device {
- 	const struct xfrmdev_ops *xfrmdev_ops;
+@@ -1838,6 +1840,11 @@ struct net_device {
+ 	const struct tlsdev_ops *tlsdev_ops;
  #endif
  
 +#ifdef CONFIG_ETHERNET_PACKET_MANGLE
@@ -43,7 +43,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	const struct header_ops *header_ops;
  
  	unsigned int		flags;
-@@ -1794,6 +1801,10 @@ struct net_device {
+@@ -1913,6 +1920,10 @@ struct net_device {
  	struct mpls_dev __rcu	*mpls_ptr;
  #endif
  
@@ -56,7 +56,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
   */
 --- a/include/linux/skbuff.h
 +++ b/include/linux/skbuff.h
-@@ -2496,6 +2496,10 @@ static inline int pskb_trim(struct sk_bu
+@@ -2500,6 +2500,10 @@ static inline int pskb_trim(struct sk_bu
  	return (len < skb->len) ? __pskb_trim(skb, len) : 0;
  }
  
@@ -67,7 +67,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  /**
   *	pskb_trim_unique - remove end from a paged unique (not cloned) buffer
   *	@skb: buffer to alter
-@@ -2626,16 +2630,6 @@ static inline struct sk_buff *dev_alloc_
+@@ -2630,16 +2634,6 @@ static inline struct sk_buff *dev_alloc_
  }
  
  
@@ -101,7 +101,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	help
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -3004,10 +3004,20 @@ static int xmit_one(struct sk_buff *skb,
+@@ -3233,10 +3233,20 @@ static int xmit_one(struct sk_buff *skb,
  	if (!list_empty(&ptype_all) || !list_empty(&dev->ptype_all))
  		dev_queue_xmit_nit(skb, dev);
  
diff --git a/target/linux/generic/hack-4.19/773-bgmac-add-srab-switch.patch b/target/linux/generic/hack-4.19/773-bgmac-add-srab-switch.patch
index 33a18a8352..3b4781657e 100644
--- a/target/linux/generic/hack-4.19/773-bgmac-add-srab-switch.patch
+++ b/target/linux/generic/hack-4.19/773-bgmac-add-srab-switch.patch
@@ -32,7 +32,7 @@ Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
  #include <linux/bcm47xx_nvram.h>
  #include <linux/phy.h>
  #include <linux/phy_fixed.h>
-@@ -1410,6 +1411,17 @@ static const struct ethtool_ops bgmac_et
+@@ -1409,6 +1410,17 @@ static const struct ethtool_ops bgmac_et
  	.set_link_ksettings     = phy_ethtool_set_link_ksettings,
  };
  
@@ -50,7 +50,7 @@ Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
  /**************************************************
   * MII
   **************************************************/
-@@ -1539,6 +1551,14 @@ int bgmac_enet_probe(struct bgmac *bgmac
+@@ -1540,6 +1552,14 @@ int bgmac_enet_probe(struct bgmac *bgmac
  	net_dev->hw_features = net_dev->features;
  	net_dev->vlan_features = net_dev->features;
  
@@ -65,7 +65,7 @@ Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
  	err = register_netdev(bgmac->net_dev);
  	if (err) {
  		dev_err(bgmac->dev, "Cannot register net device\n");
-@@ -1561,6 +1581,10 @@ EXPORT_SYMBOL_GPL(bgmac_enet_probe);
+@@ -1562,6 +1582,10 @@ EXPORT_SYMBOL_GPL(bgmac_enet_probe);
  
  void bgmac_enet_remove(struct bgmac *bgmac)
  {
diff --git a/target/linux/generic/hack-4.19/835-misc-owl_loader.patch b/target/linux/generic/hack-4.19/835-misc-owl_loader.patch
index bf7f7d5cba..bf0fa596ac 100644
--- a/target/linux/generic/hack-4.19/835-misc-owl_loader.patch
+++ b/target/linux/generic/hack-4.19/835-misc-owl_loader.patch
@@ -21,7 +21,7 @@ Signed-off-by: Christian Lamparter <chunkeey at googlemail.com>
 
 --- a/drivers/misc/Kconfig
 +++ b/drivers/misc/Kconfig
-@@ -151,6 +151,18 @@ config SGI_IOC4
+@@ -164,6 +164,18 @@ config SGI_IOC4
  	  If you have an SGI Altix with an IOC4-based card say Y.
  	  Otherwise say N.
  
@@ -42,10 +42,10 @@ Signed-off-by: Christian Lamparter <chunkeey at googlemail.com>
  	depends on PCI
 --- a/drivers/misc/Makefile
 +++ b/drivers/misc/Makefile
-@@ -13,6 +13,7 @@ obj-$(CONFIG_ATMEL_TCLIB)	+= atmel_tclib
+@@ -14,6 +14,7 @@ obj-$(CONFIG_ATMEL_TCLIB)	+= atmel_tclib
  obj-$(CONFIG_DUMMY_IRQ)		+= dummy-irq.o
  obj-$(CONFIG_ICS932S401)	+= ics932s401.o
- obj-$(CONFIG_LKDTM)		+= lkdtm.o
+ obj-$(CONFIG_LKDTM)		+= lkdtm/
 +obj-$(CONFIG_OWL_LOADER)	+= owl-loader.o
  obj-$(CONFIG_TIFM_CORE)       	+= tifm_core.o
  obj-$(CONFIG_TIFM_7XX1)       	+= tifm_7xx1.o
diff --git a/target/linux/generic/hack-4.19/901-debloat_sock_diag.patch b/target/linux/generic/hack-4.19/901-debloat_sock_diag.patch
index d250843a6a..e949964cbf 100644
--- a/target/linux/generic/hack-4.19/901-debloat_sock_diag.patch
+++ b/target/linux/generic/hack-4.19/901-debloat_sock_diag.patch
@@ -16,7 +16,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/Kconfig
 +++ b/net/Kconfig
-@@ -97,6 +97,9 @@ source "net/netlabel/Kconfig"
+@@ -98,6 +98,9 @@ source "net/netlabel/Kconfig"
  
  endif # if INET
  
@@ -34,15 +34,15 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  			neighbour.o rtnetlink.o utils.o link_watch.o filter.o \
 -			sock_diag.o dev_ioctl.o tso.o sock_reuseport.o \
 + 			dev_ioctl.o tso.o sock_reuseport.o \
- 			fib_notifier.o
+ 			fib_notifier.o xdp.o
  
-+obj-$(CONFIG_SOCK_DIAG) += sock_diag.o 
++obj-$(CONFIG_SOCK_DIAG) += sock_diag.o
  obj-y += net-sysfs.o
+ obj-$(CONFIG_PAGE_POOL) += page_pool.o
  obj-$(CONFIG_PROC_FS) += net-procfs.o
- obj-$(CONFIG_NET_PKTGEN) += pktgen.o
 --- a/net/core/sock.c
 +++ b/net/core/sock.c
-@@ -528,6 +528,18 @@ discard_and_relse:
+@@ -490,6 +490,18 @@ discard_and_relse:
  }
  EXPORT_SYMBOL(__sk_receive_skb);
  
@@ -61,10 +61,10 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie)
  {
  	struct dst_entry *dst = __sk_dst_get(sk);
-@@ -1595,9 +1607,11 @@ void sk_destruct(struct sock *sk)
+@@ -1600,9 +1612,11 @@ static void __sk_free(struct sock *sk)
+ 	if (likely(sk->sk_net_refcnt))
+ 		sock_inuse_add(sock_net(sk), -1);
  
- static void __sk_free(struct sock *sk)
- {
 +#ifdef CONFIG_SOCK_DIAG
  	if (unlikely(sk->sk_net_refcnt && sock_diag_has_destroy_listeners(sk)))
  		sock_diag_broadcast_destroy(sk);
@@ -75,7 +75,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
 --- a/net/core/sock_diag.c
 +++ b/net/core/sock_diag.c
-@@ -19,18 +19,6 @@ static int (*inet_rcv_compat)(struct sk_
+@@ -20,18 +20,6 @@ static int (*inet_rcv_compat)(struct sk_
  static DEFINE_MUTEX(sock_diag_table_mutex);
  static struct workqueue_struct *broadcast_wq;
  
@@ -96,7 +96,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	u64 res;
 --- a/net/ipv4/Kconfig
 +++ b/net/ipv4/Kconfig
-@@ -420,6 +420,7 @@ config INET_XFRM_MODE_BEET
+@@ -425,6 +425,7 @@ config INET_XFRM_MODE_BEET
  
  config INET_DIAG
  	tristate "INET: socket monitoring interface"
diff --git a/target/linux/generic/hack-4.19/902-debloat_proc.patch b/target/linux/generic/hack-4.19/902-debloat_proc.patch
index 4e700ca0b7..6f4d264f35 100644
--- a/target/linux/generic/hack-4.19/902-debloat_proc.patch
+++ b/target/linux/generic/hack-4.19/902-debloat_proc.patch
@@ -29,18 +29,18 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/fs/locks.c
 +++ b/fs/locks.c
-@@ -2812,6 +2812,8 @@ static const struct file_operations proc
+@@ -2786,6 +2786,8 @@ static const struct seq_operations locks
  
  static int __init proc_locks_init(void)
  {
 +	if (IS_ENABLED(CONFIG_PROC_STRIPPED))
 +		return 0;
- 	proc_create("locks", 0, NULL, &proc_locks_operations);
+ 	proc_create_seq_private("locks", 0, NULL, &locks_seq_operations,
+ 			sizeof(struct locks_iterator), NULL);
  	return 0;
- }
 --- a/fs/proc/Kconfig
 +++ b/fs/proc/Kconfig
-@@ -81,3 +81,8 @@ config PROC_CHILDREN
+@@ -97,3 +97,8 @@ config PROC_CHILDREN
  
  	  Say Y if you are running any user-space software which takes benefit from
  	  this interface. For example, rkt is such a piece of software.
@@ -51,19 +51,19 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	bool "Strip non-essential /proc functionality to reduce code size"
 --- a/fs/proc/consoles.c
 +++ b/fs/proc/consoles.c
-@@ -106,6 +106,9 @@ static const struct file_operations proc
+@@ -93,6 +93,9 @@ static const struct seq_operations conso
  
  static int __init proc_consoles_init(void)
  {
 +	if (IS_ENABLED(CONFIG_PROC_STRIPPED))
 +		return 0;
 +
- 	proc_create("consoles", 0, NULL, &proc_consoles_operations);
+ 	proc_create_seq("consoles", 0, NULL, &consoles_op);
  	return 0;
  }
 --- a/fs/proc/proc_tty.c
 +++ b/fs/proc/proc_tty.c
-@@ -145,7 +145,10 @@ static const struct file_operations proc
+@@ -133,7 +133,10 @@ static const struct seq_operations tty_d
  void proc_tty_register_driver(struct tty_driver *driver)
  {
  	struct proc_dir_entry *ent;
@@ -73,9 +73,9 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +		return;
 +
  	if (!driver->driver_name || driver->proc_entry ||
- 	    !driver->ops->proc_fops)
+ 	    !driver->ops->proc_show)
  		return;
-@@ -162,6 +165,9 @@ void proc_tty_unregister_driver(struct t
+@@ -150,6 +153,9 @@ void proc_tty_unregister_driver(struct t
  {
  	struct proc_dir_entry *ent;
  
@@ -85,7 +85,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	ent = driver->proc_entry;
  	if (!ent)
  		return;
-@@ -176,6 +182,9 @@ void proc_tty_unregister_driver(struct t
+@@ -164,6 +170,9 @@ void proc_tty_unregister_driver(struct t
   */
  void __init proc_tty_init(void)
  {
@@ -132,30 +132,30 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	do {								\
 --- a/ipc/msg.c
 +++ b/ipc/msg.c
-@@ -1208,6 +1208,9 @@ int __init msg_init(void)
+@@ -1291,6 +1291,9 @@ void __init msg_init(void)
  {
- 	const int err = msg_init_ns(&init_ipc_ns);
+ 	msg_init_ns(&init_ipc_ns);
  
 +	if (IS_ENABLED(CONFIG_PROC_STRIPPED))
-+		return err;
++		return;
 +
  	ipc_init_proc_interface("sysvipc/msg",
  				"       key      msqid perms      cbytes       qnum lspid lrpid   uid   gid  cuid  cgid      stime      rtime      ctime\n",
  				IPC_MSG_IDS, sysvipc_msg_proc_show);
 --- a/ipc/sem.c
 +++ b/ipc/sem.c
-@@ -207,6 +207,8 @@ int __init sem_init(void)
+@@ -243,6 +243,8 @@ void sem_exit_ns(struct ipc_namespace *n
+ void __init sem_init(void)
  {
- 	const int err = sem_init_ns(&init_ipc_ns);
- 
+ 	sem_init_ns(&init_ipc_ns);
 +	if (IS_ENABLED(CONFIG_PROC_STRIPPED))
-+		return err;
++		return;
  	ipc_init_proc_interface("sysvipc/sem",
  				"       key      semid perms      nsems   uid   gid  cuid  cgid      otime      ctime\n",
  				IPC_SEM_IDS, sysvipc_sem_proc_show);
 --- a/ipc/shm.c
 +++ b/ipc/shm.c
-@@ -122,6 +122,8 @@ pure_initcall(ipc_ns_init);
+@@ -144,6 +144,8 @@ pure_initcall(ipc_ns_init);
  
  void __init shm_init(void)
  {
@@ -166,7 +166,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  				"       key      shmid perms       size  cpid  lpid nattch   uid   gid  cuid  cgid      atime      dtime      ctime        rss       swap\n",
 --- a/ipc/util.c
 +++ b/ipc/util.c
-@@ -141,6 +141,9 @@ void __init ipc_init_proc_interface(cons
+@@ -140,6 +140,9 @@ void __init ipc_init_proc_interface(cons
  	struct proc_dir_entry *pde;
  	struct ipc_proc_iface *iface;
  
@@ -178,18 +178,18 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		return;
 --- a/kernel/exec_domain.c
 +++ b/kernel/exec_domain.c
-@@ -42,6 +42,8 @@ static const struct file_operations exec
+@@ -29,6 +29,8 @@ static int execdomains_proc_show(struct
  
  static int __init proc_execdomains_init(void)
  {
 +	if (IS_ENABLED(CONFIG_PROC_STRIPPED))
 +		return 0;
- 	proc_create("execdomains", 0, NULL, &execdomains_proc_fops);
+ 	proc_create_single("execdomains", 0, NULL, execdomains_proc_show);
  	return 0;
  }
 --- a/kernel/irq/proc.c
 +++ b/kernel/irq/proc.c
-@@ -396,6 +396,9 @@ void register_irq_proc(unsigned int irq,
+@@ -333,6 +333,9 @@ void register_irq_proc(unsigned int irq,
  	void __maybe_unused *irqp = (void *)(unsigned long) irq;
  	char name [MAX_NAMELEN];
  
@@ -199,7 +199,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	if (!root_irq_dir || (desc->irq_data.chip == &no_irq_chip))
  		return;
  
-@@ -449,6 +452,9 @@ void unregister_irq_proc(unsigned int ir
+@@ -386,6 +389,9 @@ void unregister_irq_proc(unsigned int ir
  {
  	char name [MAX_NAMELEN];
  
@@ -209,7 +209,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	if (!root_irq_dir || !desc->dir)
  		return;
  #ifdef CONFIG_SMP
-@@ -487,6 +493,9 @@ void init_irq_proc(void)
+@@ -424,6 +430,9 @@ void init_irq_proc(void)
  	unsigned int irq;
  	struct irq_desc *desc;
  
@@ -221,47 +221,47 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	if (!root_irq_dir)
 --- a/kernel/time/timer_list.c
 +++ b/kernel/time/timer_list.c
-@@ -389,6 +389,8 @@ static int __init init_timer_list_procfs
+@@ -374,6 +374,8 @@ static int __init init_timer_list_procfs
  {
  	struct proc_dir_entry *pe;
  
 +	if (IS_ENABLED(CONFIG_PROC_STRIPPED))
 +		return 0;
- 	pe = proc_create("timer_list", 0444, NULL, &timer_list_fops);
+ 	pe = proc_create_seq_private("timer_list", 0400, NULL, &timer_list_sops,
+ 			sizeof(struct timer_list_iter), NULL);
  	if (!pe)
- 		return -ENOMEM;
 --- a/mm/vmalloc.c
 +++ b/mm/vmalloc.c
-@@ -2770,6 +2770,8 @@ static const struct file_operations proc
+@@ -2736,6 +2736,8 @@ static const struct seq_operations vmall
  
  static int __init proc_vmalloc_init(void)
  {
 +	if (IS_ENABLED(CONFIG_PROC_STRIPPED))
 +		return 0;
- 	proc_create("vmallocinfo", S_IRUSR, NULL, &proc_vmalloc_operations);
- 	return 0;
- }
+ 	if (IS_ENABLED(CONFIG_NUMA))
+ 		proc_create_seq_private("vmallocinfo", 0400, NULL,
+ 				&vmalloc_op,
 --- a/mm/vmstat.c
 +++ b/mm/vmstat.c
-@@ -1951,10 +1951,12 @@ void __init init_mm_internals(void)
+@@ -1972,10 +1972,12 @@ void __init init_mm_internals(void)
  	start_shepherd_timer();
  #endif
  #ifdef CONFIG_PROC_FS
--	proc_create("buddyinfo", 0444, NULL, &buddyinfo_file_operations);
--	proc_create("pagetypeinfo", 0444, NULL, &pagetypeinfo_file_operations);
+-	proc_create_seq("buddyinfo", 0444, NULL, &fragmentation_op);
+-	proc_create_seq("pagetypeinfo", 0444, NULL, &pagetypeinfo_op);
 +	if (!IS_ENABLED(CONFIG_PROC_STRIPPED)) {
-+		proc_create("buddyinfo", 0444, NULL, &buddyinfo_file_operations);
-+		proc_create("pagetypeinfo", 0444, NULL, &pagetypeinfo_file_operations);
-+		proc_create("zoneinfo", 0444, NULL, &zoneinfo_file_operations);
++		proc_create_seq("buddyinfo", 0444, NULL, &fragmentation_op);
++		proc_create_seq("pagetypeinfo", 0444, NULL, &pagetypeinfo_op);
++		proc_create_seq("zoneinfo", 0444, NULL, &zoneinfo_op);
 +	}
- 	proc_create("vmstat", 0444, NULL, &vmstat_file_operations);
--	proc_create("zoneinfo", 0444, NULL, &zoneinfo_file_operations);
+ 	proc_create_seq("vmstat", 0444, NULL, &vmstat_op);
+-	proc_create_seq("zoneinfo", 0444, NULL, &zoneinfo_op);
  #endif
  }
  
 --- a/net/8021q/vlanproc.c
 +++ b/net/8021q/vlanproc.c
-@@ -127,6 +127,9 @@ void vlan_proc_cleanup(struct net *net)
+@@ -96,6 +96,9 @@ void vlan_proc_cleanup(struct net *net)
  {
  	struct vlan_net *vn = net_generic(net, vlan_net_id);
  
@@ -271,7 +271,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	if (vn->proc_vlan_conf)
  		remove_proc_entry(name_conf, vn->proc_vlan_dir);
  
-@@ -146,6 +149,9 @@ int __net_init vlan_proc_init(struct net
+@@ -115,6 +118,9 @@ int __net_init vlan_proc_init(struct net
  {
  	struct vlan_net *vn = net_generic(net, vlan_net_id);
  
@@ -283,22 +283,22 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		goto err;
 --- a/net/core/net-procfs.c
 +++ b/net/core/net-procfs.c
-@@ -320,10 +320,12 @@ static int __net_init dev_proc_net_init(
- 
- 	if (!proc_create("dev", S_IRUGO, net->proc_net, &dev_seq_fops))
+@@ -279,10 +279,12 @@ static int __net_init dev_proc_net_init(
+ 	if (!proc_create_net("dev", 0444, net->proc_net, &dev_seq_ops,
+ 			sizeof(struct seq_net_private)))
  		goto out;
--	if (!proc_create("softnet_stat", S_IRUGO, net->proc_net,
+-	if (!proc_create_seq("softnet_stat", 0444, net->proc_net,
 +	if (!IS_ENABLED(CONFIG_PROC_STRIPPED) &&
-+		!proc_create("softnet_stat", S_IRUGO, net->proc_net,
- 			 &softnet_seq_fops))
++			!proc_create_seq("softnet_stat", 0444, net->proc_net,
+ 			 &softnet_seq_ops))
  		goto out_dev;
--	if (!proc_create("ptype", S_IRUGO, net->proc_net, &ptype_seq_fops))
+-	if (!proc_create_net("ptype", 0444, net->proc_net, &ptype_seq_ops,
 +	if (!IS_ENABLED(CONFIG_PROC_STRIPPED) &&
-+		!proc_create("ptype", S_IRUGO, net->proc_net, &ptype_seq_fops))
++			!proc_create_net("ptype", 0444, net->proc_net, &ptype_seq_ops,
+ 			sizeof(struct seq_net_private)))
  		goto out_softnet;
  
- 	if (wext_proc_init(net))
-@@ -332,9 +334,11 @@ static int __net_init dev_proc_net_init(
+@@ -292,9 +294,11 @@ static int __net_init dev_proc_net_init(
  out:
  	return rc;
  out_ptype:
@@ -312,7 +312,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  out_dev:
  	remove_proc_entry("dev", net->proc_net);
  	goto out;
-@@ -344,8 +348,10 @@ static void __net_exit dev_proc_net_exit
+@@ -304,8 +308,10 @@ static void __net_exit dev_proc_net_exit
  {
  	wext_proc_exit(net);
  
@@ -327,7 +327,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
 --- a/net/core/sock.c
 +++ b/net/core/sock.c
-@@ -3378,6 +3378,8 @@ static __net_initdata struct pernet_oper
+@@ -3477,6 +3477,8 @@ static __net_initdata struct pernet_oper
  
  static int __init proto_init(void)
  {
@@ -338,22 +338,23 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
 --- a/net/ipv4/fib_trie.c
 +++ b/net/ipv4/fib_trie.c
-@@ -2731,10 +2731,12 @@ static const struct file_operations fib_
+@@ -2708,11 +2708,13 @@ static const struct seq_operations fib_r
  
  int __net_init fib_proc_init(struct net *net)
  {
--	if (!proc_create("fib_trie", S_IRUGO, net->proc_net, &fib_trie_fops))
+-	if (!proc_create_net("fib_trie", 0444, net->proc_net, &fib_trie_seq_ops,
 +	if (!IS_ENABLED(CONFIG_PROC_STRIPPED) &&
-+		!proc_create("fib_trie", S_IRUGO, net->proc_net, &fib_trie_fops))
++			!proc_create_net("fib_trie", 0444, net->proc_net, &fib_trie_seq_ops,
+ 			sizeof(struct fib_trie_iter)))
  		goto out1;
  
--	if (!proc_create("fib_triestat", S_IRUGO, net->proc_net,
+-	if (!proc_create_net_single("fib_triestat", 0444, net->proc_net,
 +	if (!IS_ENABLED(CONFIG_PROC_STRIPPED) &&
-+		!proc_create("fib_triestat", S_IRUGO, net->proc_net,
- 			 &fib_triestat_fops))
++			!proc_create_net_single("fib_triestat", 0444, net->proc_net,
+ 			fib_triestat_seq_show, NULL))
  		goto out2;
  
-@@ -2744,17 +2746,21 @@ int __net_init fib_proc_init(struct net
+@@ -2723,17 +2725,21 @@ int __net_init fib_proc_init(struct net
  	return 0;
  
  out3:
@@ -381,7 +382,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
 --- a/net/ipv4/proc.c
 +++ b/net/ipv4/proc.c
-@@ -558,6 +558,9 @@ static __net_initdata struct pernet_oper
+@@ -523,5 +523,8 @@ static __net_initdata struct pernet_oper
  
  int __init ip_misc_proc_init(void)
  {
@@ -390,10 +391,9 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +
  	return register_pernet_subsys(&ip_proc_ops);
  }
- 
 --- a/net/ipv4/route.c
 +++ b/net/ipv4/route.c
-@@ -427,6 +427,9 @@ static struct pernet_operations ip_rt_pr
+@@ -410,6 +410,9 @@ static struct pernet_operations ip_rt_pr
  
  static int __init ip_rt_proc_init(void)
  {
diff --git a/target/linux/generic/hack-4.19/904-debloat_dma_buf.patch b/target/linux/generic/hack-4.19/904-debloat_dma_buf.patch
index 4d9f947edc..20e1c9f7b5 100644
--- a/target/linux/generic/hack-4.19/904-debloat_dma_buf.patch
+++ b/target/linux/generic/hack-4.19/904-debloat_dma_buf.patch
@@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/drivers/base/Kconfig
 +++ b/drivers/base/Kconfig
-@@ -246,7 +246,7 @@ config SOC_BUS
+@@ -172,7 +172,7 @@ config SOC_BUS
  source "drivers/base/regmap/Kconfig"
  
  config DMA_SHARED_BUFFER
@@ -45,7 +45,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  #include <uapi/linux/dma-buf.h>
  
-@@ -1205,4 +1206,5 @@ static void __exit dma_buf_deinit(void)
+@@ -1158,4 +1159,5 @@ static void __exit dma_buf_deinit(void)
  {
  	dma_buf_uninit_debugfs();
  }
@@ -54,7 +54,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +MODULE_LICENSE("GPL");
 --- a/kernel/sched/core.c
 +++ b/kernel/sched/core.c
-@@ -2164,6 +2164,7 @@ int wake_up_state(struct task_struct *p,
+@@ -2128,6 +2128,7 @@ int wake_up_state(struct task_struct *p,
  {
  	return try_to_wake_up(p, state, 0);
  }
diff --git a/target/linux/generic/hack-4.19/910-kobject_uevent.patch b/target/linux/generic/hack-4.19/910-kobject_uevent.patch
index 113fbb54b3..c4c41ca400 100644
--- a/target/linux/generic/hack-4.19/910-kobject_uevent.patch
+++ b/target/linux/generic/hack-4.19/910-kobject_uevent.patch
@@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/lib/kobject_uevent.c
 +++ b/lib/kobject_uevent.c
-@@ -176,6 +176,18 @@ out:
+@@ -179,6 +179,18 @@ out:
  	return r;
  }
  
diff --git a/target/linux/generic/hack-4.19/911-kobject_add_broadcast_uevent.patch b/target/linux/generic/hack-4.19/911-kobject_add_broadcast_uevent.patch
index abacfc390a..888f3fc1e7 100644
--- a/target/linux/generic/hack-4.19/911-kobject_add_broadcast_uevent.patch
+++ b/target/linux/generic/hack-4.19/911-kobject_add_broadcast_uevent.patch
@@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #ifdef CONFIG_UEVENT_HELPER
  /* path to the userspace helper executed on an event */
  extern char uevent_helper[];
-@@ -224,4 +226,7 @@ int kobject_synth_uevent(struct kobject
+@@ -244,4 +246,7 @@ int kobject_synth_uevent(struct kobject
  __printf(2, 3)
  int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...);
  
@@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #endif /* _KOBJECT_H_ */
 --- a/lib/kobject_uevent.c
 +++ b/lib/kobject_uevent.c
-@@ -599,6 +599,43 @@ int add_uevent_var(struct kobj_uevent_en
+@@ -685,6 +685,43 @@ int add_uevent_var(struct kobj_uevent_en
  EXPORT_SYMBOL_GPL(add_uevent_var);
  
  #if defined(CONFIG_NET)
@@ -71,6 +71,6 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +EXPORT_SYMBOL_GPL(broadcast_uevent);
 +
 +#if defined(CONFIG_NET)
- static int uevent_net_init(struct net *net)
+ static int uevent_net_broadcast(struct sock *usk, struct sk_buff *skb,
+ 				struct netlink_ext_ack *extack)
  {
- 	struct uevent_sock *ue_sk;
diff --git a/target/linux/generic/hack-4.19/921-always-create-console-node-in-initramfs.patch b/target/linux/generic/hack-4.19/921-always-create-console-node-in-initramfs.patch
index 6eeddcc3c6..e437579050 100644
--- a/target/linux/generic/hack-4.19/921-always-create-console-node-in-initramfs.patch
+++ b/target/linux/generic/hack-4.19/921-always-create-console-node-in-initramfs.patch
@@ -5,11 +5,11 @@ Subject: initramfs: always create console node
 
 Signed-off-by: Felix Fietkau <nbd at nbd.name>
 ---
- scripts/gen_initramfs_list.sh | 14 ++++++++++++++
+ usr/gen_initramfs_list.sh | 14 ++++++++++++++
  1 file changed, 14 insertions(+)
 
---- a/scripts/gen_initramfs_list.sh
-+++ b/scripts/gen_initramfs_list.sh
+--- a/usr/gen_initramfs_list.sh
++++ b/usr/gen_initramfs_list.sh
 @@ -59,6 +59,18 @@ default_initramfs() {
  	EOF
  }
diff --git a/target/linux/generic/hack-4.19/930-crashlog.patch b/target/linux/generic/hack-4.19/930-crashlog.patch
index 17ba187925..3bb3e77778 100644
--- a/target/linux/generic/hack-4.19/930-crashlog.patch
+++ b/target/linux/generic/hack-4.19/930-crashlog.patch
@@ -41,7 +41,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +#endif
 --- a/init/Kconfig
 +++ b/init/Kconfig
-@@ -1009,6 +1009,10 @@ config RELAY
+@@ -1041,6 +1041,10 @@ config RELAY
  
  	  If unsure, say N.
  
@@ -51,13 +51,13 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +
  config BLK_DEV_INITRD
  	bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
- 	depends on BROKEN || !FRV
+ 	help
 --- a/kernel/Makefile
 +++ b/kernel/Makefile
-@@ -112,6 +112,7 @@ obj-$(CONFIG_CONTEXT_TRACKING) += contex
- obj-$(CONFIG_TORTURE_TEST) += torture.o
- 
- obj-$(CONFIG_HAS_IOMEM) += memremap.o
+@@ -116,6 +116,7 @@ obj-$(CONFIG_TORTURE_TEST) += torture.o
+ obj-$(CONFIG_HAS_IOMEM) += iomem.o
+ obj-$(CONFIG_ZONE_DEVICE) += memremap.o
+ obj-$(CONFIG_RSEQ) += rseq.o
 +obj-$(CONFIG_CRASHLOG) += crashlog.o
  
  $(obj)/configs.o: $(obj)/config_data.h
@@ -300,7 +300,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #include <linux/bug.h>
  #include <linux/io.h>
  #include <linux/bootmem.h>
-@@ -175,6 +176,7 @@ static unsigned long __init free_all_boo
+@@ -215,6 +216,7 @@ static unsigned long __init free_all_boo
  	if (!bdata->node_bootmem_map)
  		return 0;
  
@@ -310,15 +310,15 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	end = bdata->node_low_pfn;
 --- a/mm/memblock.c
 +++ b/mm/memblock.c
-@@ -19,6 +19,7 @@
- #include <linux/debugfs.h>
+@@ -21,6 +21,7 @@
  #include <linux/seq_file.h>
  #include <linux/memblock.h>
+ #include <linux/bootmem.h>
 +#include <linux/crashlog.h>
  
  #include <asm/sections.h>
  #include <linux/io.h>
-@@ -483,6 +484,8 @@ static void __init_memblock memblock_ins
+@@ -547,6 +548,8 @@ static void __init_memblock memblock_ins
  	memblock_set_region_node(rgn, nid);
  	type->cnt++;
  	type->total_size += size;
@@ -327,7 +327,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  }
  
  /**
-@@ -522,6 +525,8 @@ int __init_memblock memblock_add_range(s
+@@ -586,6 +589,8 @@ int __init_memblock memblock_add_range(s
  		type->regions[0].flags = flags;
  		memblock_set_region_node(&type->regions[0], nid);
  		type->total_size = size;
diff --git a/target/linux/generic/pending-4.14/161-mtd-part-add-generic-parsing-of-linux-part-probe.patch b/target/linux/generic/pending-4.14/161-mtd-part-add-generic-parsing-of-linux-part-probe.patch
index 8e5ecec63a..83874a441e 100644
--- a/target/linux/generic/pending-4.14/161-mtd-part-add-generic-parsing-of-linux-part-probe.patch
+++ b/target/linux/generic/pending-4.14/161-mtd-part-add-generic-parsing-of-linux-part-probe.patch
@@ -110,7 +110,7 @@ Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
  #include <linux/err.h>
  #include <linux/of.h>
  
-@@ -834,6 +835,37 @@ void deregister_mtd_parser(struct mtd_pa
+@@ -834,6 +835,36 @@ void deregister_mtd_parser(struct mtd_pa
  }
  EXPORT_SYMBOL_GPL(deregister_mtd_parser);
  
@@ -140,7 +140,6 @@ Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
 +		return NULL;
 +
 +	pr_warn("Support for the generic \"linux,part-probe\" has been deprecated and will be removed soon");
-+	BUILD_BUG_ON(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0));
 +
 +	return res;
 +}
diff --git a/target/linux/generic/pending-4.19/0931-w1-gpio-fix-problem-with-platfom-data-in-w1-gpio.patch b/target/linux/generic/pending-4.19/0931-w1-gpio-fix-problem-with-platfom-data-in-w1-gpio.patch
index 0c4a13f9df..be9ceebc3a 100644
--- a/target/linux/generic/pending-4.19/0931-w1-gpio-fix-problem-with-platfom-data-in-w1-gpio.patch
+++ b/target/linux/generic/pending-4.19/0931-w1-gpio-fix-problem-with-platfom-data-in-w1-gpio.patch
@@ -15,24 +15,12 @@ Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
 
 --- a/drivers/w1/masters/w1-gpio.c
 +++ b/drivers/w1/masters/w1-gpio.c
-@@ -112,17 +112,16 @@ static int w1_gpio_probe_dt(struct platf
- static int w1_gpio_probe(struct platform_device *pdev)
- {
- 	struct w1_bus_master *master;
--	struct w1_gpio_platform_data *pdata;
-+	struct w1_gpio_platform_data *pdata = dev_get_platdata(&pdev->dev);
+@@ -79,7 +79,7 @@ static int w1_gpio_probe(struct platform
+ 	enum gpiod_flags gflags = GPIOD_OUT_LOW_OPEN_DRAIN;
  	int err;
  
 -	if (of_have_populated_dt()) {
-+	if (of_have_populated_dt() && !pdata) {
- 		err = w1_gpio_probe_dt(pdev);
- 		if (err < 0)
- 			return err;
-+		pdata = dev_get_platdata(&pdev->dev);
- 	}
- 
--	pdata = dev_get_platdata(&pdev->dev);
--
- 	if (!pdata) {
- 		dev_err(&pdev->dev, "No configuration data\n");
- 		return -ENXIO;
++	if (of_have_populated_dt() && !dev_get_platdata(&pdev->dev)) {
+ 		pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL);
+ 		if (!pdata)
+ 			return -ENOMEM;
diff --git a/target/linux/generic/pending-4.19/102-MIPS-only-process-negative-stack-offsets-on-stack-tr.patch b/target/linux/generic/pending-4.19/102-MIPS-only-process-negative-stack-offsets-on-stack-tr.patch
index 92e86b24e7..0b87f493ec 100644
--- a/target/linux/generic/pending-4.19/102-MIPS-only-process-negative-stack-offsets-on-stack-tr.patch
+++ b/target/linux/generic/pending-4.19/102-MIPS-only-process-negative-stack-offsets-on-stack-tr.patch
@@ -46,7 +46,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/arch/mips/kernel/process.c
 +++ b/arch/mips/kernel/process.c
-@@ -360,6 +360,8 @@ static inline int is_sp_move_ins(union m
+@@ -361,6 +361,8 @@ static inline int is_sp_move_ins(union m
  
  	if (ip->i_format.opcode == addiu_op ||
  	    ip->i_format.opcode == daddiu_op) {
diff --git a/target/linux/generic/pending-4.19/110-ehci_hcd_ignore_oc.patch b/target/linux/generic/pending-4.19/110-ehci_hcd_ignore_oc.patch
index b45b1c079c..cad00b5527 100644
--- a/target/linux/generic/pending-4.19/110-ehci_hcd_ignore_oc.patch
+++ b/target/linux/generic/pending-4.19/110-ehci_hcd_ignore_oc.patch
@@ -17,7 +17,7 @@ Signed-off-by: Florian Fainelli <florian at openwrt.org>
 
 --- a/drivers/usb/host/ehci-hcd.c
 +++ b/drivers/usb/host/ehci-hcd.c
-@@ -651,7 +651,7 @@ static int ehci_run (struct usb_hcd *hcd
+@@ -638,7 +638,7 @@ static int ehci_run (struct usb_hcd *hcd
  		"USB %x.%x started, EHCI %x.%02x%s\n",
  		((ehci->sbrn & 0xf0)>>4), (ehci->sbrn & 0x0f),
  		temp >> 8, temp & 0xff,
@@ -28,7 +28,7 @@ Signed-off-by: Florian Fainelli <florian at openwrt.org>
  		    &ehci->regs->intr_enable); /* Turn On Interrupts */
 --- a/drivers/usb/host/ehci-hub.c
 +++ b/drivers/usb/host/ehci-hub.c
-@@ -646,7 +646,7 @@ ehci_hub_status_data (struct usb_hcd *hc
+@@ -641,7 +641,7 @@ ehci_hub_status_data (struct usb_hcd *hc
  	 * always set, seem to clear PORT_OCC and PORT_CSC when writing to
  	 * PORT_POWER; that's surprising, but maybe within-spec.
  	 */
@@ -37,7 +37,7 @@ Signed-off-by: Florian Fainelli <florian at openwrt.org>
  		mask = PORT_CSC | PORT_PEC | PORT_OCC;
  	else
  		mask = PORT_CSC | PORT_PEC;
-@@ -1016,7 +1016,7 @@ int ehci_hub_control(
+@@ -1011,7 +1011,7 @@ int ehci_hub_control(
  		if (temp & PORT_PEC)
  			status |= USB_PORT_STAT_C_ENABLE << 16;
  
@@ -48,7 +48,7 @@ Signed-off-by: Florian Fainelli <florian at openwrt.org>
  			/*
 --- a/drivers/usb/host/ehci-platform.c
 +++ b/drivers/usb/host/ehci-platform.c
-@@ -263,6 +263,8 @@ static int ehci_platform_probe(struct pl
+@@ -208,6 +208,8 @@ static int ehci_platform_probe(struct pl
  		hcd->has_tt = 1;
  	if (pdata->reset_on_resume)
  		priv->reset_on_resume = true;
@@ -59,7 +59,7 @@ Signed-off-by: Florian Fainelli <florian at openwrt.org>
  	if (ehci->big_endian_mmio) {
 --- a/drivers/usb/host/ehci.h
 +++ b/drivers/usb/host/ehci.h
-@@ -231,6 +231,7 @@ struct ehci_hcd {			/* one per controlle
+@@ -218,6 +218,7 @@ struct ehci_hcd {			/* one per controlle
  	unsigned		frame_index_bug:1; /* MosChip (AKA NetMos) */
  	unsigned		need_oc_pp_cycle:1; /* MPC834X port power */
  	unsigned		imx28_write_fix:1; /* For Freescale i.MX28 */
@@ -69,7 +69,7 @@ Signed-off-by: Florian Fainelli <florian at openwrt.org>
  	#define OHCI_CTRL_HCFS          (3 << 6)
 --- a/include/linux/usb/ehci_pdriver.h
 +++ b/include/linux/usb/ehci_pdriver.h
-@@ -49,6 +49,7 @@ struct usb_ehci_pdata {
+@@ -50,6 +50,7 @@ struct usb_ehci_pdata {
  	unsigned	no_io_watchdog:1;
  	unsigned	reset_on_resume:1;
  	unsigned	dma_mask_64:1;
diff --git a/target/linux/generic/pending-4.19/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch b/target/linux/generic/pending-4.19/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch
index bbcb7c23fa..869af0e649 100644
--- a/target/linux/generic/pending-4.19/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch
+++ b/target/linux/generic/pending-4.19/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch
@@ -71,7 +71,7 @@ Signed-off-by: Tobias Wolf <dev-NTEO at vplace.de>
 
 --- a/mm/page_alloc.c
 +++ b/mm/page_alloc.c
-@@ -6153,7 +6153,7 @@ static void __ref alloc_node_mem_map(str
+@@ -6372,7 +6372,7 @@ static void __ref alloc_node_mem_map(str
  		mem_map = NODE_DATA(0)->node_mem_map;
  #if defined(CONFIG_HAVE_MEMBLOCK_NODE_MAP) || defined(CONFIG_FLATMEM)
  		if (page_to_pfn(mem_map) != pgdat->node_start_pfn)
diff --git a/target/linux/generic/pending-4.19/131-spi-use-gpio_set_value_cansleep-for-setting-chipsele.patch b/target/linux/generic/pending-4.19/131-spi-use-gpio_set_value_cansleep-for-setting-chipsele.patch
index 9603385aed..bd5ed6f888 100644
--- a/target/linux/generic/pending-4.19/131-spi-use-gpio_set_value_cansleep-for-setting-chipsele.patch
+++ b/target/linux/generic/pending-4.19/131-spi-use-gpio_set_value_cansleep-for-setting-chipsele.patch
@@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/drivers/spi/spi.c
 +++ b/drivers/spi/spi.c
-@@ -729,7 +729,7 @@ static void spi_set_cs(struct spi_device
+@@ -733,7 +733,7 @@ static void spi_set_cs(struct spi_device
  		enable = !enable;
  
  	if (gpio_is_valid(spi->cs_gpio)) {
diff --git a/target/linux/generic/pending-4.19/150-bridge_allow_receiption_on_disabled_port.patch b/target/linux/generic/pending-4.19/150-bridge_allow_receiption_on_disabled_port.patch
index 9fcffdee06..c8e68c2c96 100644
--- a/target/linux/generic/pending-4.19/150-bridge_allow_receiption_on_disabled_port.patch
+++ b/target/linux/generic/pending-4.19/150-bridge_allow_receiption_on_disabled_port.patch
@@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/bridge/br_input.c
 +++ b/net/bridge/br_input.c
-@@ -239,7 +239,8 @@ static int br_handle_local_finish(struct
+@@ -197,7 +197,8 @@ static int br_handle_local_finish(struct
  {
  	struct net_bridge_port *p = br_port_get_rcu(skb->dev);
  
@@ -25,7 +25,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	BR_INPUT_SKB_CB(skb)->brdev = p->br->dev;
  	br_pass_frame_up(skb);
-@@ -327,6 +328,15 @@ rx_handler_result_t br_handle_frame(stru
+@@ -286,6 +287,15 @@ rx_handler_result_t br_handle_frame(stru
  
  forward:
  	switch (p->state) {
diff --git a/target/linux/generic/pending-4.19/161-mtd-part-add-generic-parsing-of-linux-part-probe.patch b/target/linux/generic/pending-4.19/161-mtd-part-add-generic-parsing-of-linux-part-probe.patch
index 8e5ecec63a..d65c4d6670 100644
--- a/target/linux/generic/pending-4.19/161-mtd-part-add-generic-parsing-of-linux-part-probe.patch
+++ b/target/linux/generic/pending-4.19/161-mtd-part-add-generic-parsing-of-linux-part-probe.patch
@@ -21,9 +21,9 @@ Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
 
 --- a/Documentation/devicetree/bindings/mtd/nand.txt
 +++ b/Documentation/devicetree/bindings/mtd/nand.txt
-@@ -44,6 +44,22 @@ Optional NAND chip properties:
- 		     used by the upper layers, and you want to make your NAND
- 		     as reliable as possible.
+@@ -49,6 +49,22 @@ Optional NAND chip properties:
+ 
+ - nand-rb: shall contain the native Ready/Busy ids.
  
 +- linux,part-probe: list of name as strings of the partition parser
 +		    which should be used to parse the partition table.
@@ -46,7 +46,7 @@ Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
  errors per {size} bytes".
 --- a/drivers/mtd/maps/physmap_of_core.c
 +++ b/drivers/mtd/maps/physmap_of_core.c
-@@ -114,37 +114,9 @@ static struct mtd_info *obsolete_probe(s
+@@ -115,37 +115,9 @@ static struct mtd_info *obsolete_probe(s
  static const char * const part_probe_types_def[] = {
  	"cmdlinepart", "RedBoot", "ofpart", "ofoldpart", NULL };
  
@@ -59,7 +59,7 @@ Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
 -	if (count < 0)
 -		return part_probe_types_def;
 -
--	res = kzalloc((count + 1) * sizeof(*res), GFP_KERNEL);
+-	res = kcalloc(count + 1, sizeof(*res), GFP_KERNEL);
 -	if (!res)
 -		return NULL;
 -
@@ -84,7 +84,7 @@ Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
  	const struct of_device_id *match;
  	struct device_node *dp = dev->dev.of_node;
  	struct resource res;
-@@ -310,14 +282,8 @@ static int of_flash_probe(struct platfor
+@@ -316,14 +288,8 @@ static int of_flash_probe(struct platfor
  
  	info->cmtd->dev.parent = &dev->dev;
  	mtd_set_of_node(info->cmtd, dp);
@@ -110,7 +110,7 @@ Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
  #include <linux/err.h>
  #include <linux/of.h>
  
-@@ -834,6 +835,37 @@ void deregister_mtd_parser(struct mtd_pa
+@@ -786,6 +787,36 @@ void deregister_mtd_parser(struct mtd_pa
  }
  EXPORT_SYMBOL_GPL(deregister_mtd_parser);
  
@@ -140,7 +140,6 @@ Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
 +		return NULL;
 +
 +	pr_warn("Support for the generic \"linux,part-probe\" has been deprecated and will be removed soon");
-+	BUILD_BUG_ON(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0));
 +
 +	return res;
 +}
@@ -148,7 +147,7 @@ Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
  /*
   * Do not forget to update 'parse_mtd_partitions()' kerneldoc comment if you
   * are changing this array!
-@@ -983,6 +1015,13 @@ int parse_mtd_partitions(struct mtd_info
+@@ -938,6 +969,13 @@ int parse_mtd_partitions(struct mtd_info
  	struct mtd_partitions pparts = { };
  	struct mtd_part_parser *parser;
  	int ret, err = 0;
@@ -162,7 +161,7 @@ Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
  
  	if (!types)
  		types = mtd_is_partition(master) ? default_subpartition_types :
-@@ -1024,6 +1063,7 @@ int parse_mtd_partitions(struct mtd_info
+@@ -979,6 +1017,7 @@ int parse_mtd_partitions(struct mtd_info
  		if (ret < 0 && !err)
  			err = ret;
  	}
diff --git a/target/linux/generic/pending-4.19/171-usb-dwc2-Fix-inefficient-copy-of-unaligned-buffers.patch b/target/linux/generic/pending-4.19/171-usb-dwc2-Fix-inefficient-copy-of-unaligned-buffers.patch
deleted file mode 100644
index 588b571e01..0000000000
diff --git a/target/linux/generic/pending-4.19/180-net-phy-at803x-add-support-for-AT8032.patch b/target/linux/generic/pending-4.19/180-net-phy-at803x-add-support-for-AT8032.patch
index 828b160be9..e496301e4e 100644
--- a/target/linux/generic/pending-4.19/180-net-phy-at803x-add-support-for-AT8032.patch
+++ b/target/linux/generic/pending-4.19/180-net-phy-at803x-add-support-for-AT8032.patch
@@ -19,17 +19,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  MODULE_DESCRIPTION("Atheros 803x PHY driver");
  MODULE_AUTHOR("Matus Ujhelyi");
-@@ -256,7 +258,8 @@ static int at803x_probe(struct phy_devic
- 	if (!priv)
- 		return -ENOMEM;
- 
--	if (phydev->drv->phy_id != ATH8030_PHY_ID)
-+	if (phydev->drv->phy_id != ATH8030_PHY_ID &&
-+	    phydev->drv->phy_id != ATH8032_PHY_ID)
- 		goto does_not_require_reset_workaround;
- 
- 	gpiod_reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
-@@ -332,7 +335,7 @@ static void at803x_link_change_notify(st
+@@ -308,7 +310,7 @@ static void at803x_link_change_notify(st
  	struct at803x_priv *priv = phydev->priv;
  
  	/*
@@ -38,7 +28,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	 * signalled. This is necessary to circumvent a hardware bug that
  	 * occurs when the cable is unplugged while TX packets are pending
  	 * in the FIFO. In such cases, the FIFO enters an error mode it
-@@ -444,6 +447,24 @@ static struct phy_driver at803x_driver[]
+@@ -414,6 +416,24 @@ static struct phy_driver at803x_driver[]
  	.aneg_done		= at803x_aneg_done,
  	.ack_interrupt		= &at803x_ack_interrupt,
  	.config_intr		= &at803x_config_intr,
@@ -63,7 +53,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  } };
  
  module_phy_driver(at803x_driver);
-@@ -451,6 +472,7 @@ module_phy_driver(at803x_driver);
+@@ -421,6 +441,7 @@ module_phy_driver(at803x_driver);
  static struct mdio_device_id __maybe_unused atheros_tbl[] = {
  	{ ATH8030_PHY_ID, AT803X_PHY_ID_MASK },
  	{ ATH8031_PHY_ID, AT803X_PHY_ID_MASK },
diff --git a/target/linux/generic/pending-4.19/190-2-5-e1000e-Fix-wrong-comment-related-to-link-detection.patch b/target/linux/generic/pending-4.19/190-2-5-e1000e-Fix-wrong-comment-related-to-link-detection.patch
deleted file mode 100644
index 54858657cb..0000000000
diff --git a/target/linux/generic/pending-4.19/201-extra_optimization.patch b/target/linux/generic/pending-4.19/201-extra_optimization.patch
index 42cd7f1585..d86e29fc75 100644
--- a/target/linux/generic/pending-4.19/201-extra_optimization.patch
+++ b/target/linux/generic/pending-4.19/201-extra_optimization.patch
@@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/Makefile
 +++ b/Makefile
-@@ -652,12 +652,12 @@ KBUILD_CFLAGS	+= $(call cc-disable-warni
+@@ -659,12 +659,12 @@ KBUILD_CFLAGS	+= $(call cc-disable-warni
  
  ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
  KBUILD_CFLAGS	+= $(call cc-option,-Oz,-Os)
diff --git a/target/linux/generic/pending-4.19/203-kallsyms_uncompressed.patch b/target/linux/generic/pending-4.19/203-kallsyms_uncompressed.patch
index fa68f307d4..074f0c45ed 100644
--- a/target/linux/generic/pending-4.19/203-kallsyms_uncompressed.patch
+++ b/target/linux/generic/pending-4.19/203-kallsyms_uncompressed.patch
@@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/init/Kconfig
 +++ b/init/Kconfig
-@@ -1081,6 +1081,17 @@ config SYSCTL_ARCH_UNALIGN_ALLOW
+@@ -1140,6 +1140,17 @@ config SYSCTL_ARCH_UNALIGN_ALLOW
  	  the unaligned access emulation.
  	  see arch/parisc/kernel/unaligned.c for reference
  
@@ -33,7 +33,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
 --- a/kernel/kallsyms.c
 +++ b/kernel/kallsyms.c
-@@ -108,6 +108,11 @@ static unsigned int kallsyms_expand_symb
+@@ -74,6 +74,11 @@ static unsigned int kallsyms_expand_symb
  	 * For every byte on the compressed symbol data, copy the table
  	 * entry for that byte.
  	 */
@@ -45,7 +45,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	while (len) {
  		tptr = &kallsyms_token_table[kallsyms_token_index[*data]];
  		data++;
-@@ -140,6 +145,9 @@ tail:
+@@ -106,6 +111,9 @@ tail:
   */
  static char kallsyms_get_symbol_type(unsigned int off)
  {
@@ -63,9 +63,9 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  static int all_symbols = 0;
 +static int uncompressed = 0;
  static int absolute_percpu = 0;
- static char symbol_prefix_char = '\0';
  static int base_relative = 0;
-@@ -457,6 +458,9 @@ static void write_src(void)
+ 
+@@ -439,6 +440,9 @@ static void write_src(void)
  
  	free(markers);
  
@@ -75,7 +75,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	output_label("kallsyms_token_table");
  	off = 0;
  	for (i = 0; i < 256; i++) {
-@@ -515,6 +519,9 @@ static void *find_token(unsigned char *s
+@@ -497,6 +501,9 @@ static void *find_token(unsigned char *s
  {
  	int i;
  
@@ -85,7 +85,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	for (i = 0; i < len - 1; i++) {
  		if (str[i] == token[0] && str[i+1] == token[1])
  			return &str[i];
-@@ -587,6 +594,9 @@ static void optimize_result(void)
+@@ -569,6 +576,9 @@ static void optimize_result(void)
  {
  	int i, best;
  
@@ -95,9 +95,9 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	/* using the '\0' symbol last allows compress_symbols to use standard
  	 * fast string functions */
  	for (i = 255; i >= 0; i--) {
-@@ -775,6 +785,8 @@ int main(int argc, char **argv)
- 				symbol_prefix_char = *p;
- 			} else if (strcmp(argv[i], "--base-relative") == 0)
+@@ -751,6 +761,8 @@ int main(int argc, char **argv)
+ 				absolute_percpu = 1;
+ 			else if (strcmp(argv[i], "--base-relative") == 0)
  				base_relative = 1;
 +			else if (strcmp(argv[i], "--uncompressed") == 0)
 +				uncompressed = 1;
@@ -106,7 +106,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		}
 --- a/scripts/link-vmlinux.sh
 +++ b/scripts/link-vmlinux.sh
-@@ -164,6 +164,10 @@ kallsyms()
+@@ -133,6 +133,10 @@ kallsyms()
  		kallsymopt="${kallsymopt} --base-relative"
  	fi
  
diff --git a/target/linux/generic/pending-4.19/205-backtrace_module_info.patch b/target/linux/generic/pending-4.19/205-backtrace_module_info.patch
index 4040f91021..5671173d45 100644
--- a/target/linux/generic/pending-4.19/205-backtrace_module_info.patch
+++ b/target/linux/generic/pending-4.19/205-backtrace_module_info.patch
@@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/lib/vsprintf.c
 +++ b/lib/vsprintf.c
-@@ -670,8 +670,10 @@ char *symbol_string(char *buf, char *end
+@@ -681,8 +681,10 @@ char *symbol_string(char *buf, char *end
  		    struct printf_spec spec, const char *fmt)
  {
  	unsigned long value;
@@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #endif
  
  	if (fmt[1] == 'R')
-@@ -685,11 +687,16 @@ char *symbol_string(char *buf, char *end
+@@ -696,11 +698,16 @@ char *symbol_string(char *buf, char *end
  		sprint_symbol(sym, value);
  	else
  		sprint_symbol_no_offset(sym, value);
@@ -42,4 +42,4 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	return string(buf, end, sym, spec);
  }
  
- static noinline_for_stack
+ static const struct printf_spec default_str_spec = {
diff --git a/target/linux/generic/pending-4.19/220-optimize_inlining.patch b/target/linux/generic/pending-4.19/220-optimize_inlining.patch
index dca1dcb204..1411586086 100644
--- a/target/linux/generic/pending-4.19/220-optimize_inlining.patch
+++ b/target/linux/generic/pending-4.19/220-optimize_inlining.patch
@@ -1,6 +1,6 @@
 --- a/arch/x86/Kconfig.debug
 +++ b/arch/x86/Kconfig.debug
-@@ -284,20 +284,6 @@ config CPA_DEBUG
+@@ -276,20 +276,6 @@ config CPA_DEBUG
  	---help---
  	  Do change_page_attr() self-tests every 30 seconds.
  
@@ -23,7 +23,7 @@
  	depends on DEBUG_KERNEL
 --- a/lib/Kconfig.debug
 +++ b/lib/Kconfig.debug
-@@ -137,6 +137,20 @@ endmenu # "printk and dmesg options"
+@@ -150,6 +150,20 @@ endmenu # "printk and dmesg options"
  
  menu "Compile-time checks and compiler options"
  
@@ -46,7 +46,7 @@
  	depends on DEBUG_KERNEL && !COMPILE_TEST
 --- a/arch/x86/Kconfig
 +++ b/arch/x86/Kconfig
-@@ -296,9 +296,6 @@ config ZONE_DMA32
+@@ -306,9 +306,6 @@ config ZONE_DMA32
  config AUDIT_ARCH
  	def_bool y if X86_64
  
@@ -56,15 +56,15 @@
  config ARCH_SUPPORTS_DEBUG_PAGEALLOC
  	def_bool y
  
---- a/include/linux/compiler-gcc.h
-+++ b/include/linux/compiler-gcc.h
-@@ -90,8 +90,7 @@
+--- a/include/linux/compiler_types.h
++++ b/include/linux/compiler_types.h
+@@ -260,8 +260,7 @@ struct ftrace_likely_data {
   * of extern inline functions at link time.
   * A lot of inline functions can cause havoc with function tracing.
   */
--#if !defined(CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING) ||		\
--    !defined(CONFIG_OPTIMIZE_INLINING) || (__GNUC__ < 4)
-+#if !defined(CONFIG_OPTIMIZE_INLINING) || (__GNUC__ < 4)
+-#if !defined(CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING) || \
+-	!defined(CONFIG_OPTIMIZE_INLINING)
++#if !defined(CONFIG_OPTIMIZE_INLINING)
  #define inline \
  	inline __attribute__((always_inline, unused)) notrace __gnu_inline
  #else
diff --git a/target/linux/generic/pending-4.19/300-mips_expose_boot_raw.patch b/target/linux/generic/pending-4.19/300-mips_expose_boot_raw.patch
index 5384be15ca..5be7ea7c12 100644
--- a/target/linux/generic/pending-4.19/300-mips_expose_boot_raw.patch
+++ b/target/linux/generic/pending-4.19/300-mips_expose_boot_raw.patch
@@ -9,7 +9,7 @@ Acked-by: Rob Landley <rob at landley.net>
 ---
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -1067,9 +1067,6 @@ config FW_ARC
+@@ -1059,9 +1059,6 @@ config FW_ARC
  config ARCH_MAY_HAVE_PC_FDC
  	bool
  
@@ -19,7 +19,7 @@ Acked-by: Rob Landley <rob at landley.net>
  config CEVT_BCM1480
  	bool
  
-@@ -2967,6 +2964,18 @@ choice
+@@ -2965,6 +2962,18 @@ choice
  		bool "Extend builtin kernel arguments with bootloader arguments"
  endchoice
  
diff --git a/target/linux/generic/pending-4.19/304-mips_disable_fpu.patch b/target/linux/generic/pending-4.19/304-mips_disable_fpu.patch
index 22e2e86206..61f0378a47 100644
--- a/target/linux/generic/pending-4.19/304-mips_disable_fpu.patch
+++ b/target/linux/generic/pending-4.19/304-mips_disable_fpu.patch
@@ -24,7 +24,7 @@ v2: incorporated changes suggested by Jonas Gorski
 
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -2891,6 +2891,20 @@ config MIPS_O32_FP64_SUPPORT
+@@ -2889,6 +2889,20 @@ config MIPS_O32_FP64_SUPPORT
  
  	  If unsure, say N.
  
@@ -47,7 +47,7 @@ v2: incorporated changes suggested by Jonas Gorski
  	select OF
 --- a/arch/mips/Makefile
 +++ b/arch/mips/Makefile
-@@ -315,7 +315,7 @@ OBJCOPYFLAGS		+= --remove-section=.regin
+@@ -322,7 +322,7 @@ OBJCOPYFLAGS		+= --remove-section=.regin
  head-y := arch/mips/kernel/head.o
  
  libs-y			+= arch/mips/lib/
diff --git a/target/linux/generic/pending-4.19/307-mips_highmem_offset.patch b/target/linux/generic/pending-4.19/307-mips_highmem_offset.patch
index 0529b0c5c8..9dd2fa9863 100644
--- a/target/linux/generic/pending-4.19/307-mips_highmem_offset.patch
+++ b/target/linux/generic/pending-4.19/307-mips_highmem_offset.patch
@@ -8,7 +8,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/arch/mips/include/asm/mach-generic/spaces.h
 +++ b/arch/mips/include/asm/mach-generic/spaces.h
-@@ -46,7 +46,7 @@
+@@ -50,7 +50,7 @@
   * Memory above this physical address will be considered highmem.
   */
  #ifndef HIGHMEM_START
diff --git a/target/linux/generic/pending-4.19/308-mips32r2_tune.patch b/target/linux/generic/pending-4.19/308-mips32r2_tune.patch
index 39167bf4ae..17c867acc5 100644
--- a/target/linux/generic/pending-4.19/308-mips32r2_tune.patch
+++ b/target/linux/generic/pending-4.19/308-mips32r2_tune.patch
@@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/arch/mips/Makefile
 +++ b/arch/mips/Makefile
-@@ -161,7 +161,7 @@ cflags-$(CONFIG_CPU_VR41XX)	+= -march=r4
+@@ -171,7 +171,7 @@ cflags-$(CONFIG_CPU_VR41XX)	+= -march=r4
  cflags-$(CONFIG_CPU_R4X00)	+= -march=r4600 -Wa,--trap
  cflags-$(CONFIG_CPU_TX49XX)	+= -march=r4600 -Wa,--trap
  cflags-$(CONFIG_CPU_MIPS32_R1)	+= -march=mips32 -Wa,--trap
diff --git a/target/linux/generic/pending-4.19/332-arc-add-OWRTDTB-section.patch b/target/linux/generic/pending-4.19/332-arc-add-OWRTDTB-section.patch
index 58f14b6ca5..963547eedd 100644
--- a/target/linux/generic/pending-4.19/332-arc-add-OWRTDTB-section.patch
+++ b/target/linux/generic/pending-4.19/332-arc-add-OWRTDTB-section.patch
@@ -38,7 +38,7 @@ Signed-off-by: Alexey Brodkin <abrodkin at synopsys.com>
  ;----------------------------------------------------------------
 --- a/arch/arc/kernel/setup.c
 +++ b/arch/arc/kernel/setup.c
-@@ -421,6 +421,8 @@ static inline int is_kernel(unsigned lon
+@@ -456,6 +456,8 @@ static inline int is_kernel(unsigned lon
  	return 0;
  }
  
@@ -47,7 +47,7 @@ Signed-off-by: Alexey Brodkin <abrodkin at synopsys.com>
  void __init setup_arch(char **cmdline_p)
  {
  #ifdef CONFIG_ARC_UBOOT_SUPPORT
-@@ -434,7 +436,7 @@ void __init setup_arch(char **cmdline_p)
+@@ -469,7 +471,7 @@ void __init setup_arch(char **cmdline_p)
  #endif
  	{
  		/* No, so try the embedded one */
diff --git a/target/linux/generic/pending-4.19/340-MIPS-mm-remove-mips_dma_mapping_error.patch b/target/linux/generic/pending-4.19/340-MIPS-mm-remove-mips_dma_mapping_error.patch
deleted file mode 100644
index 8d6cada842..0000000000
diff --git a/target/linux/generic/pending-4.19/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch b/target/linux/generic/pending-4.19/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch
deleted file mode 100644
index de2dd65b17..0000000000
diff --git a/target/linux/generic/pending-4.19/400-mtd-add-rootfs-split-support.patch b/target/linux/generic/pending-4.19/400-mtd-add-rootfs-split-support.patch
index d4d4b58161..6f07ed7faf 100644
--- a/target/linux/generic/pending-4.19/400-mtd-add-rootfs-split-support.patch
+++ b/target/linux/generic/pending-4.19/400-mtd-add-rootfs-split-support.patch
@@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/drivers/mtd/Kconfig
 +++ b/drivers/mtd/Kconfig
-@@ -12,6 +12,23 @@ menuconfig MTD
+@@ -11,6 +11,23 @@ menuconfig MTD
  
  if MTD
  
@@ -60,7 +60,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  /*
   * Given a pointer to the MTD object in the mtd_part structure, we can retrieve
   * the pointer to that structure.
-@@ -658,6 +662,7 @@ int mtd_add_partition(struct mtd_info *p
+@@ -610,6 +614,7 @@ int mtd_add_partition(struct mtd_info *p
  	mutex_unlock(&mtd_partitions_mutex);
  
  	add_mtd_device(&new->mtd);
@@ -68,7 +68,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	mtd_add_partition_attrs(new);
  
-@@ -736,6 +741,29 @@ int mtd_del_partition(struct mtd_info *m
+@@ -688,6 +693,29 @@ int mtd_del_partition(struct mtd_info *m
  }
  EXPORT_SYMBOL_GPL(mtd_del_partition);
  
@@ -98,7 +98,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  /*
   * This function, given a master MTD object and a partition table, creates
   * and registers slave MTD objects which are bound to the master according to
-@@ -767,6 +795,7 @@ int add_mtd_partitions(struct mtd_info *
+@@ -719,6 +747,7 @@ int add_mtd_partitions(struct mtd_info *
  		mutex_unlock(&mtd_partitions_mutex);
  
  		add_mtd_device(&slave->mtd);
diff --git a/target/linux/generic/pending-4.19/401-mtd-add-support-for-different-partition-parser-types.patch b/target/linux/generic/pending-4.19/401-mtd-add-support-for-different-partition-parser-types.patch
index ab2993cfc6..f79d4e28fd 100644
--- a/target/linux/generic/pending-4.19/401-mtd-add-support-for-different-partition-parser-types.patch
+++ b/target/linux/generic/pending-4.19/401-mtd-add-support-for-different-partition-parser-types.patch
@@ -20,7 +20,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  
  /*
   * Given a pointer to the MTD object in the mtd_part structure, we can retrieve
-@@ -741,6 +745,36 @@ int mtd_del_partition(struct mtd_info *m
+@@ -693,6 +697,36 @@ int mtd_del_partition(struct mtd_info *m
  }
  EXPORT_SYMBOL_GPL(mtd_del_partition);
  
@@ -57,7 +57,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  #ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME
  #define SPLIT_FIRMWARE_NAME	CONFIG_MTD_SPLIT_FIRMWARE_NAME
  #else
-@@ -1112,6 +1146,61 @@ void mtd_part_parser_cleanup(struct mtd_
+@@ -1066,6 +1100,61 @@ void mtd_part_parser_cleanup(struct mtd_
  	}
  }
  
diff --git a/target/linux/generic/pending-4.19/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch b/target/linux/generic/pending-4.19/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch
index cca3728a0a..4c1a0695d3 100644
--- a/target/linux/generic/pending-4.19/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch
+++ b/target/linux/generic/pending-4.19/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch
@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
 
 --- a/drivers/mtd/mtdpart.c
 +++ b/drivers/mtd/mtdpart.c
-@@ -783,6 +783,7 @@ run_parsers_by_type(struct mtd_part *sla
+@@ -735,6 +735,7 @@ run_parsers_by_type(struct mtd_part *sla
  
  static void split_firmware(struct mtd_info *master, struct mtd_part *part)
  {
@@ -18,7 +18,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  }
  
  static void mtd_partition_split(struct mtd_info *master, struct mtd_part *part)
-@@ -792,6 +793,12 @@ static void mtd_partition_split(struct m
+@@ -744,6 +745,12 @@ static void mtd_partition_split(struct m
  	if (rootfs_found)
  		return;
  
diff --git a/target/linux/generic/pending-4.19/403-mtd-hook-mtdsplit-to-Kbuild.patch b/target/linux/generic/pending-4.19/403-mtd-hook-mtdsplit-to-Kbuild.patch
index 89c202bc0d..60cf043e9b 100644
--- a/target/linux/generic/pending-4.19/403-mtd-hook-mtdsplit-to-Kbuild.patch
+++ b/target/linux/generic/pending-4.19/403-mtd-hook-mtdsplit-to-Kbuild.patch
@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
 
 --- a/drivers/mtd/Kconfig
 +++ b/drivers/mtd/Kconfig
-@@ -27,6 +27,8 @@ config MTD_SPLIT_FIRMWARE_NAME
+@@ -26,6 +26,8 @@ config MTD_SPLIT_FIRMWARE_NAME
  	depends on MTD_SPLIT_FIRMWARE
  	default "firmware"
  
diff --git a/target/linux/generic/pending-4.19/404-mtd-add-more-helper-functions.patch b/target/linux/generic/pending-4.19/404-mtd-add-more-helper-functions.patch
index 8715304fa5..53dc396694 100644
--- a/target/linux/generic/pending-4.19/404-mtd-add-more-helper-functions.patch
+++ b/target/linux/generic/pending-4.19/404-mtd-add-more-helper-functions.patch
@@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
 
 --- a/drivers/mtd/mtdpart.c
 +++ b/drivers/mtd/mtdpart.c
-@@ -1225,6 +1225,24 @@ int mtd_is_partition(const struct mtd_in
+@@ -1179,6 +1179,24 @@ int mtd_is_partition(const struct mtd_in
  }
  EXPORT_SYMBOL_GPL(mtd_is_partition);
  
@@ -38,8 +38,8 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  {
 --- a/include/linux/mtd/mtd.h
 +++ b/include/linux/mtd/mtd.h
-@@ -493,6 +493,24 @@ static inline uint32_t mtd_mod_by_eb(uin
- 	return do_div(sz, mtd->erasesize);
+@@ -506,6 +506,24 @@ static inline void mtd_align_erase_req(s
+ 		req->len += mtd->erasesize - mod;
  }
  
 +static inline uint64_t mtd_roundup_to_eb(uint64_t sz, struct mtd_info *mtd)
diff --git a/target/linux/generic/pending-4.19/411-mtd-partial_eraseblock_write.patch b/target/linux/generic/pending-4.19/411-mtd-partial_eraseblock_write.patch
index a995083105..276a301d48 100644
--- a/target/linux/generic/pending-4.19/411-mtd-partial_eraseblock_write.patch
+++ b/target/linux/generic/pending-4.19/411-mtd-partial_eraseblock_write.patch
@@ -19,95 +19,86 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  /* Our partition linked list */
  static LIST_HEAD(mtd_partitions);
  static DEFINE_MUTEX(mtd_partitions_mutex);
-@@ -246,13 +248,61 @@ static int part_erase(struct mtd_info *m
+@@ -212,6 +214,53 @@ static int part_erase(struct mtd_info *m
+ {
  	struct mtd_part *part = mtd_to_part(mtd);
  	int ret;
- 
++	size_t wrlen = 0;
++	u8 *erase_buf = NULL;
++	u32 erase_buf_ofs = 0;
++	bool partial_start = false;
 +
-+	instr->partial_start = false;
 +	if (mtd->flags & MTD_ERASE_PARTIAL) {
 +		size_t readlen = 0;
 +		u64 mtd_ofs;
 +
-+		instr->erase_buf = kmalloc(part->parent->erasesize, GFP_ATOMIC);
-+		if (!instr->erase_buf)
++		erase_buf = kmalloc(part->parent->erasesize, GFP_ATOMIC);
++		if (!erase_buf)
 +			return -ENOMEM;
 +
 +		mtd_ofs = part->offset + instr->addr;
-+		instr->erase_buf_ofs = do_div(mtd_ofs, part->parent->erasesize);
++		erase_buf_ofs = do_div(mtd_ofs, part->parent->erasesize);
 +
-+		if (instr->erase_buf_ofs > 0) {
-+			instr->addr -= instr->erase_buf_ofs;
++		if (erase_buf_ofs > 0) {
++			instr->addr -= erase_buf_ofs;
 +			ret = mtd_read(part->parent,
 +				instr->addr + part->offset,
 +				part->parent->erasesize,
-+				&readlen, instr->erase_buf);
++				&readlen, erase_buf);
 +
-+			instr->len += instr->erase_buf_ofs;
-+			instr->partial_start = true;
++			instr->len += erase_buf_ofs;
++			partial_start = true;
 +		} else {
 +			mtd_ofs = part->offset + part->mtd.size;
-+			instr->erase_buf_ofs = part->parent->erasesize -
++			erase_buf_ofs = part->parent->erasesize -
 +				do_div(mtd_ofs, part->parent->erasesize);
 +
-+			if (instr->erase_buf_ofs > 0) {
-+				instr->len += instr->erase_buf_ofs;
++			if (erase_buf_ofs > 0) {
++				instr->len += erase_buf_ofs;
 +				ret = mtd_read(part->parent,
 +					part->offset + instr->addr +
 +					instr->len - part->parent->erasesize,
 +					part->parent->erasesize, &readlen,
-+					instr->erase_buf);
++					erase_buf);
 +			} else {
 +				ret = 0;
 +			}
 +		}
 +		if (ret < 0) {
-+			kfree(instr->erase_buf);
++			kfree(erase_buf);
 +			return ret;
 +		}
 +
 +	}
-+
+ 
  	instr->addr += part->offset;
  	ret = part->parent->_erase(part->parent, instr);
- 	if (ret) {
- 		if (instr->fail_addr != MTD_FAIL_ADDR_UNKNOWN)
- 			instr->fail_addr -= part->offset;
- 		instr->addr -= part->offset;
-+		if (mtd->flags & MTD_ERASE_PARTIAL)
-+			kfree(instr->erase_buf);
- 	}
+@@ -219,6 +268,24 @@ static int part_erase(struct mtd_info *m
+ 		instr->fail_addr -= part->offset;
+ 	instr->addr -= part->offset;
+ 
++	if (mtd->flags & MTD_ERASE_PARTIAL) {
++		if (partial_start) {
++			part->parent->_write(part->parent,
++				instr->addr, erase_buf_ofs,
++				&wrlen, erase_buf);
++			instr->addr += erase_buf_ofs;
++		} else {
++			instr->len -= erase_buf_ofs;
++			part->parent->_write(part->parent,
++				instr->addr + instr->len,
++				erase_buf_ofs, &wrlen,
++				erase_buf +
++				part->parent->erasesize -
++				erase_buf_ofs);
++		}
++		kfree(erase_buf);
++	}
 +
  	return ret;
  }
  
-@@ -260,6 +310,25 @@ void mtd_erase_callback(struct erase_inf
- {
- 	if (instr->mtd->_erase == part_erase) {
- 		struct mtd_part *part = mtd_to_part(instr->mtd);
-+		size_t wrlen = 0;
-+
-+		if (instr->mtd->flags & MTD_ERASE_PARTIAL) {
-+			if (instr->partial_start) {
-+				part->parent->_write(part->parent,
-+					instr->addr, instr->erase_buf_ofs,
-+					&wrlen, instr->erase_buf);
-+				instr->addr += instr->erase_buf_ofs;
-+			} else {
-+				instr->len -= instr->erase_buf_ofs;
-+				part->parent->_write(part->parent,
-+					instr->addr + instr->len,
-+					instr->erase_buf_ofs, &wrlen,
-+					instr->erase_buf +
-+					part->parent->erasesize -
-+					instr->erase_buf_ofs);
-+			}
-+			kfree(instr->erase_buf);
-+		}
- 
- 		if (instr->fail_addr != MTD_FAIL_ADDR_UNKNOWN)
- 			instr->fail_addr -= part->offset;
-@@ -574,19 +643,22 @@ static struct mtd_part *allocate_partiti
+@@ -526,19 +593,22 @@ static struct mtd_part *allocate_partiti
  	remainder = do_div(tmp, wr_alignment);
  	if ((slave->mtd.flags & MTD_WRITEABLE) && remainder) {
  		/* Doesn't start on a boundary of major erase size */
@@ -139,16 +130,3 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	}
  
  	mtd_set_ooblayout(&slave->mtd, &part_ooblayout_ops);
---- a/include/linux/mtd/mtd.h
-+++ b/include/linux/mtd/mtd.h
-@@ -56,6 +56,10 @@ struct erase_info {
- 	u_long priv;
- 	u_char state;
- 	struct erase_info *next;
-+
-+	u8 *erase_buf;
-+	u32 erase_buf_ofs;
-+	bool partial_start;
- };
- 
- struct mtd_erase_region_info {
diff --git a/target/linux/generic/pending-4.19/412-mtd-partial_eraseblock_unlock.patch b/target/linux/generic/pending-4.19/412-mtd-partial_eraseblock_unlock.patch
index 1e8c90931c..e97ce4ec69 100644
--- a/target/linux/generic/pending-4.19/412-mtd-partial_eraseblock_unlock.patch
+++ b/target/linux/generic/pending-4.19/412-mtd-partial_eraseblock_unlock.patch
@@ -20,7 +20,7 @@ Signed-off-by: Tim Harvey <tharvey at gateworks.com>
 
 --- a/drivers/mtd/mtdpart.c
 +++ b/drivers/mtd/mtdpart.c
-@@ -348,7 +348,16 @@ static int part_lock(struct mtd_info *mt
+@@ -298,7 +298,16 @@ static int part_lock(struct mtd_info *mt
  static int part_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
  {
  	struct mtd_part *part = mtd_to_part(mtd);
diff --git a/target/linux/generic/pending-4.19/430-mtd-add-myloader-partition-parser.patch b/target/linux/generic/pending-4.19/430-mtd-add-myloader-partition-parser.patch
index 889c452057..bd49893dd8 100644
--- a/target/linux/generic/pending-4.19/430-mtd-add-myloader-partition-parser.patch
+++ b/target/linux/generic/pending-4.19/430-mtd-add-myloader-partition-parser.patch
@@ -12,7 +12,7 @@ Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
 
 --- a/drivers/mtd/Kconfig
 +++ b/drivers/mtd/Kconfig
-@@ -178,6 +178,22 @@ menu "Partition parsers"
+@@ -177,6 +177,22 @@ menu "Partition parsers"
  source "drivers/mtd/parsers/Kconfig"
  endmenu
  
diff --git a/target/linux/generic/pending-4.19/440-block2mtd_init.patch b/target/linux/generic/pending-4.19/440-block2mtd_init.patch
index 8834788732..b8ec11f3dd 100644
--- a/target/linux/generic/pending-4.19/440-block2mtd_init.patch
+++ b/target/linux/generic/pending-4.19/440-block2mtd_init.patch
@@ -16,7 +16,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #include <linux/mutex.h>
  #include <linux/mount.h>
  #include <linux/slab.h>
-@@ -219,7 +220,7 @@ static void block2mtd_free_device(struct
+@@ -214,7 +215,7 @@ static void block2mtd_free_device(struct
  
  
  static struct block2mtd_dev *add_device(char *devname, int erase_size,
@@ -25,15 +25,15 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  {
  #ifndef MODULE
  	int i;
-@@ -227,6 +228,7 @@ static struct block2mtd_dev *add_device(
+@@ -222,6 +223,7 @@ static struct block2mtd_dev *add_device(
  	const fmode_t mode = FMODE_READ | FMODE_WRITE | FMODE_EXCL;
- 	struct block_device *bdev = ERR_PTR(-ENODEV);
+ 	struct block_device *bdev;
  	struct block2mtd_dev *dev;
 +	struct mtd_partition *part;
  	char *name;
  
  	if (!devname)
-@@ -283,13 +285,16 @@ static struct block2mtd_dev *add_device(
+@@ -278,13 +280,16 @@ static struct block2mtd_dev *add_device(
  
  	/* Setup the MTD structure */
  	/* make the name contain the block device in */
@@ -52,7 +52,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	dev->mtd.erasesize = erase_size;
  	dev->mtd.writesize = 1;
  	dev->mtd.writebufsize = PAGE_SIZE;
-@@ -302,7 +307,11 @@ static struct block2mtd_dev *add_device(
+@@ -297,7 +302,11 @@ static struct block2mtd_dev *add_device(
  	dev->mtd.priv = dev;
  	dev->mtd.owner = THIS_MODULE;
  
@@ -65,7 +65,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		/* Device didn't get added, so free the entry */
  		goto err_destroy_mutex;
  	}
-@@ -310,8 +319,7 @@ static struct block2mtd_dev *add_device(
+@@ -305,8 +314,7 @@ static struct block2mtd_dev *add_device(
  	list_add(&dev->list, &blkmtd_device_list);
  	pr_info("mtd%d: [%s] erase_size = %dKiB [%d]\n",
  		dev->mtd.index,
@@ -75,7 +75,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	return dev;
  
  err_destroy_mutex:
-@@ -384,7 +392,7 @@ static int block2mtd_setup2(const char *
+@@ -379,7 +387,7 @@ static int block2mtd_setup2(const char *
  	/* 80 for device, 12 for erase size, 80 for name, 8 for timeout */
  	char buf[80 + 12 + 80 + 8];
  	char *str = buf;
@@ -84,7 +84,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	char *name;
  	size_t erase_size = PAGE_SIZE;
  	unsigned long timeout = MTD_DEFAULT_TIMEOUT;
-@@ -398,7 +406,7 @@ static int block2mtd_setup2(const char *
+@@ -393,7 +401,7 @@ static int block2mtd_setup2(const char *
  	strcpy(str, val);
  	kill_final_newline(str);
  
@@ -93,7 +93,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		token[i] = strsep(&str, ",");
  
  	if (str) {
-@@ -424,8 +432,10 @@ static int block2mtd_setup2(const char *
+@@ -419,8 +427,10 @@ static int block2mtd_setup2(const char *
  			return 0;
  		}
  	}
@@ -105,7 +105,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	return 0;
  }
-@@ -459,7 +469,7 @@ static int block2mtd_setup(const char *v
+@@ -454,7 +464,7 @@ static int block2mtd_setup(const char *v
  
  
  module_param_call(block2mtd, block2mtd_setup, NULL, NULL, 0200);
diff --git a/target/linux/generic/pending-4.19/441-block2mtd_probe.patch b/target/linux/generic/pending-4.19/441-block2mtd_probe.patch
index fee970ab61..7e974e01ed 100644
--- a/target/linux/generic/pending-4.19/441-block2mtd_probe.patch
+++ b/target/linux/generic/pending-4.19/441-block2mtd_probe.patch
@@ -8,7 +8,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/drivers/mtd/devices/block2mtd.c
 +++ b/drivers/mtd/devices/block2mtd.c
-@@ -392,7 +392,7 @@ static int block2mtd_setup2(const char *
+@@ -387,7 +387,7 @@ static int block2mtd_setup2(const char *
  	/* 80 for device, 12 for erase size, 80 for name, 8 for timeout */
  	char buf[80 + 12 + 80 + 8];
  	char *str = buf;
@@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	char *name;
  	size_t erase_size = PAGE_SIZE;
  	unsigned long timeout = MTD_DEFAULT_TIMEOUT;
-@@ -406,7 +406,7 @@ static int block2mtd_setup2(const char *
+@@ -401,7 +401,7 @@ static int block2mtd_setup2(const char *
  	strcpy(str, val);
  	kill_final_newline(str);
  
@@ -26,7 +26,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		token[i] = strsep(&str, ",");
  
  	if (str) {
-@@ -435,6 +435,9 @@ static int block2mtd_setup2(const char *
+@@ -430,6 +430,9 @@ static int block2mtd_setup2(const char *
  	if (token[2] && (strlen(token[2]) + 1 > 80))
  		pr_err("mtd device name too long\n");
  
@@ -36,7 +36,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	add_device(name, erase_size, token[2], timeout);
  
  	return 0;
-@@ -469,7 +472,7 @@ static int block2mtd_setup(const char *v
+@@ -464,7 +467,7 @@ static int block2mtd_setup(const char *v
  
  
  module_param_call(block2mtd, block2mtd_setup, NULL, NULL, 0200);
diff --git a/target/linux/generic/pending-4.19/450-mtd-m25p80-allow-fallback-from-spi_flash_read-to-reg.patch b/target/linux/generic/pending-4.19/450-mtd-m25p80-allow-fallback-from-spi_flash_read-to-reg.patch
deleted file mode 100644
index accd63df58..0000000000
diff --git a/target/linux/generic/pending-4.19/450-mtd-spi-nor-allow-NOR-driver-to-write-fewer-bytes-th.patch b/target/linux/generic/pending-4.19/450-mtd-spi-nor-allow-NOR-driver-to-write-fewer-bytes-th.patch
index 571c9b885f..ecc3ea1de6 100644
--- a/target/linux/generic/pending-4.19/450-mtd-spi-nor-allow-NOR-driver-to-write-fewer-bytes-th.patch
+++ b/target/linux/generic/pending-4.19/450-mtd-spi-nor-allow-NOR-driver-to-write-fewer-bytes-th.patch
@@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/drivers/mtd/spi-nor/spi-nor.c
 +++ b/drivers/mtd/spi-nor/spi-nor.c
-@@ -1377,7 +1377,7 @@ static int spi_nor_write(struct mtd_info
+@@ -1455,7 +1455,7 @@ static int spi_nor_write(struct mtd_info
  
  		write_enable(nor);
  		ret = nor->write(nor, addr, page_remain, buf + i);
@@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  			goto write_err;
  		written = ret;
  
-@@ -1386,13 +1386,6 @@ static int spi_nor_write(struct mtd_info
+@@ -1464,13 +1464,6 @@ static int spi_nor_write(struct mtd_info
  			goto write_err;
  		*retlen += written;
  		i += written;
diff --git a/target/linux/generic/pending-4.19/460-mtd-cfi_cmdset_0002-no-erase_suspend.patch b/target/linux/generic/pending-4.19/460-mtd-cfi_cmdset_0002-no-erase_suspend.patch
index 41f9d31cb0..88d386302a 100644
--- a/target/linux/generic/pending-4.19/460-mtd-cfi_cmdset_0002-no-erase_suspend.patch
+++ b/target/linux/generic/pending-4.19/460-mtd-cfi_cmdset_0002-no-erase_suspend.patch
@@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/drivers/mtd/chips/cfi_cmdset_0002.c
 +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
-@@ -811,7 +811,7 @@ static int get_chip(struct map_info *map
+@@ -812,7 +812,7 @@ static int get_chip(struct map_info *map
  		return 0;
  
  	case FL_ERASING:
diff --git a/target/linux/generic/pending-4.19/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch b/target/linux/generic/pending-4.19/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch
index ed84c69744..f4ba5b72f7 100644
--- a/target/linux/generic/pending-4.19/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch
+++ b/target/linux/generic/pending-4.19/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch
@@ -7,7 +7,7 @@ Signed-off-by: George Kashperko <george at znau.edu.ua>
  1 file changed, 1 insertion(+)
 --- a/drivers/mtd/chips/cfi_cmdset_0002.c
 +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
-@@ -1833,6 +1833,7 @@ static int __xipram do_write_buffer(stru
+@@ -1832,6 +1832,7 @@ static int __xipram do_write_buffer(stru
  
  	/* Write Buffer Load */
  	map_write(map, CMD(0x25), cmd_adr);
diff --git a/target/linux/generic/pending-4.19/465-m25p80-mx-disable-software-protection.patch b/target/linux/generic/pending-4.19/465-m25p80-mx-disable-software-protection.patch
index b41710276f..fa25c65564 100644
--- a/target/linux/generic/pending-4.19/465-m25p80-mx-disable-software-protection.patch
+++ b/target/linux/generic/pending-4.19/465-m25p80-mx-disable-software-protection.patch
@@ -8,11 +8,11 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/drivers/mtd/spi-nor/spi-nor.c
 +++ b/drivers/mtd/spi-nor/spi-nor.c
-@@ -2714,6 +2714,7 @@ int spi_nor_scan(struct spi_nor *nor, co
- 
- 	if (JEDEC_MFR(info) == SNOR_MFR_ATMEL ||
- 	    JEDEC_MFR(info) == SNOR_MFR_INTEL ||
-+	    JEDEC_MFR(info) == SNOR_MFR_MACRONIX ||
- 	    JEDEC_MFR(info) == SNOR_MFR_SST ||
- 	    info->flags & SPI_NOR_HAS_LOCK) {
+@@ -2733,6 +2733,7 @@ static int spi_nor_init(struct spi_nor *
+ 	 */
+ 	if (JEDEC_MFR(nor->info) == SNOR_MFR_ATMEL ||
+ 	    JEDEC_MFR(nor->info) == SNOR_MFR_INTEL ||
++	    JEDEC_MFR(nor->info) == SNOR_MFR_MACRONIX ||
+ 	    JEDEC_MFR(nor->info) == SNOR_MFR_SST ||
+ 	    nor->info->flags & SPI_NOR_HAS_LOCK) {
  		write_enable(nor);
diff --git a/target/linux/generic/pending-4.19/466-Revert-mtd-spi-nor-fix-Spansion-regressions-aliased-.patch b/target/linux/generic/pending-4.19/466-Revert-mtd-spi-nor-fix-Spansion-regressions-aliased-.patch
index 55d9709761..dcb86f69bf 100644
--- a/target/linux/generic/pending-4.19/466-Revert-mtd-spi-nor-fix-Spansion-regressions-aliased-.patch
+++ b/target/linux/generic/pending-4.19/466-Revert-mtd-spi-nor-fix-Spansion-regressions-aliased-.patch
@@ -17,15 +17,15 @@ Signed-off-by: Matthias Schiffer <mschiffer at universe-factory.net>
 
 --- a/drivers/mtd/spi-nor/spi-nor.c
 +++ b/drivers/mtd/spi-nor/spi-nor.c
-@@ -2716,6 +2716,7 @@ int spi_nor_scan(struct spi_nor *nor, co
- 	    JEDEC_MFR(info) == SNOR_MFR_INTEL ||
- 	    JEDEC_MFR(info) == SNOR_MFR_MACRONIX ||
- 	    JEDEC_MFR(info) == SNOR_MFR_SST ||
-+	    JEDEC_MFR(info) == SNOR_MFR_WINBOND ||
- 	    info->flags & SPI_NOR_HAS_LOCK) {
+@@ -2735,6 +2735,7 @@ static int spi_nor_init(struct spi_nor *
+ 	    JEDEC_MFR(nor->info) == SNOR_MFR_INTEL ||
+ 	    JEDEC_MFR(nor->info) == SNOR_MFR_MACRONIX ||
+ 	    JEDEC_MFR(nor->info) == SNOR_MFR_SST ||
++	    JEDEC_MFR(nor->info) == SNOR_MFR_WINBOND ||
+ 	    nor->info->flags & SPI_NOR_HAS_LOCK) {
  		write_enable(nor);
  		write_sr(nor, 0);
-@@ -2734,7 +2735,8 @@ int spi_nor_scan(struct spi_nor *nor, co
+@@ -2871,7 +2872,8 @@ int spi_nor_scan(struct spi_nor *nor, co
  
  	/* NOR protection support for STmicro/Micron chips and similar */
  	if (JEDEC_MFR(info) == SNOR_MFR_MICRON ||
diff --git a/target/linux/generic/pending-4.19/470-mtd-spi-nor-support-limiting-4K-sectors-support-base.patch b/target/linux/generic/pending-4.19/470-mtd-spi-nor-support-limiting-4K-sectors-support-base.patch
index 231f9c21a4..2f6ef14b04 100644
--- a/target/linux/generic/pending-4.19/470-mtd-spi-nor-support-limiting-4K-sectors-support-base.patch
+++ b/target/linux/generic/pending-4.19/470-mtd-spi-nor-support-limiting-4K-sectors-support-base.patch
@@ -39,7 +39,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	depends on ARCH_AT91 || (ARM && COMPILE_TEST)
 --- a/drivers/mtd/spi-nor/spi-nor.c
 +++ b/drivers/mtd/spi-nor/spi-nor.c
-@@ -2561,10 +2561,12 @@ static int spi_nor_select_erase(struct s
+@@ -2647,10 +2647,12 @@ static int spi_nor_select_erase(struct s
  
  #ifdef CONFIG_MTD_SPI_NOR_USE_4K_SECTORS
  	/* prefer "small sector" erase if possible */
diff --git a/target/linux/generic/pending-4.19/475-mtd-spi-nor-Add-Winbond-w25q128jv-support.patch b/target/linux/generic/pending-4.19/475-mtd-spi-nor-Add-Winbond-w25q128jv-support.patch
index f751bfd3b2..8b5dc4eb01 100644
--- a/target/linux/generic/pending-4.19/475-mtd-spi-nor-Add-Winbond-w25q128jv-support.patch
+++ b/target/linux/generic/pending-4.19/475-mtd-spi-nor-Add-Winbond-w25q128jv-support.patch
@@ -20,7 +20,7 @@ Changes in v2:
 
 --- a/drivers/mtd/spi-nor/spi-nor.c
 +++ b/drivers/mtd/spi-nor/spi-nor.c
-@@ -1165,6 +1165,11 @@ static const struct flash_info spi_nor_i
+@@ -1239,6 +1239,11 @@ static const struct flash_info spi_nor_i
  			SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |
  			SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
  	},
diff --git a/target/linux/generic/pending-4.19/476-mtd-spi-nor-add-eon-en25q128.patch b/target/linux/generic/pending-4.19/476-mtd-spi-nor-add-eon-en25q128.patch
index ac1fda5159..69ac17ce4c 100644
--- a/target/linux/generic/pending-4.19/476-mtd-spi-nor-add-eon-en25q128.patch
+++ b/target/linux/generic/pending-4.19/476-mtd-spi-nor-add-eon-en25q128.patch
@@ -8,11 +8,11 @@ Signed-off-by: Piotr Dymacz <pepe2k at gmail.com>
 
 --- a/drivers/mtd/spi-nor/spi-nor.c
 +++ b/drivers/mtd/spi-nor/spi-nor.c
-@@ -954,6 +954,7 @@ static const struct flash_info spi_nor_i
+@@ -994,6 +994,7 @@ static const struct flash_info spi_nor_i
  	{ "en25q32b",   INFO(0x1c3016, 0, 64 * 1024,   64, 0) },
  	{ "en25p64",    INFO(0x1c2017, 0, 64 * 1024,  128, 0) },
  	{ "en25q64",    INFO(0x1c3017, 0, 64 * 1024,  128, SECT_4K) },
 +	{ "en25q128",   INFO(0x1c3018, 0, 64 * 1024,  256, SECT_4K) },
+ 	{ "en25qh32",   INFO(0x1c7016, 0, 64 * 1024,   64, 0) },
  	{ "en25qh128",  INFO(0x1c7018, 0, 64 * 1024,  256, 0) },
  	{ "en25qh256",  INFO(0x1c7019, 0, 64 * 1024,  512, 0) },
- 	{ "en25s64",	INFO(0x1c3817, 0, 64 * 1024,  128, SECT_4K) },
diff --git a/target/linux/generic/pending-4.19/477-mtd-add-spi-nor-add-mx25u3235f.patch b/target/linux/generic/pending-4.19/477-mtd-add-spi-nor-add-mx25u3235f.patch
index 2d94959c5c..0648b12e12 100644
--- a/target/linux/generic/pending-4.19/477-mtd-add-spi-nor-add-mx25u3235f.patch
+++ b/target/linux/generic/pending-4.19/477-mtd-add-spi-nor-add-mx25u3235f.patch
@@ -8,7 +8,7 @@ Signed-off-by: André Valentin <avalentin at marcant.net>
 
 --- a/drivers/mtd/spi-nor/spi-nor.c
 +++ b/drivers/mtd/spi-nor/spi-nor.c
-@@ -1022,6 +1022,7 @@ static const struct flash_info spi_nor_i
+@@ -1083,6 +1083,7 @@ static const struct flash_info spi_nor_i
  	{ "mx25l3205d",  INFO(0xc22016, 0, 64 * 1024,  64, SECT_4K) },
  	{ "mx25l3255e",  INFO(0xc29e16, 0, 64 * 1024,  64, SECT_4K) },
  	{ "mx25l6405d",  INFO(0xc22017, 0, 64 * 1024, 128, SECT_4K) },
diff --git a/target/linux/generic/pending-4.19/478-mtd-spi-nor-Add-support-for-XM25QH64A-and-XM25QH128A.patch b/target/linux/generic/pending-4.19/478-mtd-spi-nor-Add-support-for-XM25QH64A-and-XM25QH128A.patch
deleted file mode 100644
index 4ecf53621d..0000000000
diff --git a/target/linux/generic/pending-4.19/479-mtd-spi-nor-add-eon-en25qh32.patch b/target/linux/generic/pending-4.19/479-mtd-spi-nor-add-eon-en25qh32.patch
deleted file mode 100644
index b8d5101514..0000000000
diff --git a/target/linux/generic/pending-4.19/480-mtd-set-rootfs-to-be-root-dev.patch b/target/linux/generic/pending-4.19/480-mtd-set-rootfs-to-be-root-dev.patch
index 6cddaf01b7..dce0432fac 100644
--- a/target/linux/generic/pending-4.19/480-mtd-set-rootfs-to-be-root-dev.patch
+++ b/target/linux/generic/pending-4.19/480-mtd-set-rootfs-to-be-root-dev.patch
@@ -20,7 +20,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  
  #include <linux/mtd/mtd.h>
  #include <linux/mtd/partitions.h>
-@@ -578,6 +579,15 @@ int add_mtd_device(struct mtd_info *mtd)
+@@ -593,6 +594,15 @@ int add_mtd_device(struct mtd_info *mtd)
  	   of this try_ nonsense, and no bitching about it
  	   either. :) */
  	__module_get(THIS_MODULE);
diff --git a/target/linux/generic/pending-4.19/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch b/target/linux/generic/pending-4.19/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch
index 6e4dd3b360..79d18d036f 100644
--- a/target/linux/generic/pending-4.19/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch
+++ b/target/linux/generic/pending-4.19/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch
@@ -8,7 +8,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/mtd/ubi/build.c
 +++ b/drivers/mtd/ubi/build.c
-@@ -1171,6 +1171,73 @@ static struct mtd_info * __init open_mtd
+@@ -1181,6 +1181,73 @@ static struct mtd_info * __init open_mtd
  	return mtd;
  }
  
@@ -82,7 +82,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  static int __init ubi_init(void)
  {
  	int err, i, k;
-@@ -1254,6 +1321,12 @@ static int __init ubi_init(void)
+@@ -1264,6 +1331,12 @@ static int __init ubi_init(void)
  		}
  	}
  
diff --git a/target/linux/generic/pending-4.19/492-try-auto-mounting-ubi0-rootfs-in-init-do_mounts.c.patch b/target/linux/generic/pending-4.19/492-try-auto-mounting-ubi0-rootfs-in-init-do_mounts.c.patch
index 3c82a064eb..b76e83e4a3 100644
--- a/target/linux/generic/pending-4.19/492-try-auto-mounting-ubi0-rootfs-in-init-do_mounts.c.patch
+++ b/target/linux/generic/pending-4.19/492-try-auto-mounting-ubi0-rootfs-in-init-do_mounts.c.patch
@@ -8,7 +8,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/init/do_mounts.c
 +++ b/init/do_mounts.c
-@@ -437,7 +437,28 @@ retry:
+@@ -427,7 +427,28 @@ retry:
  out:
  	put_page(page);
  }
@@ -38,7 +38,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  #ifdef CONFIG_ROOT_NFS
  
  #define NFSROOT_TIMEOUT_MIN	5
-@@ -531,6 +552,10 @@ void __init mount_root(void)
+@@ -521,6 +542,10 @@ void __init mount_root(void)
  			change_floppy("root floppy");
  	}
  #endif
diff --git a/target/linux/generic/pending-4.19/494-mtd-ubi-add-EOF-marker-support.patch b/target/linux/generic/pending-4.19/494-mtd-ubi-add-EOF-marker-support.patch
index c8e25710b2..e38f11e592 100644
--- a/target/linux/generic/pending-4.19/494-mtd-ubi-add-EOF-marker-support.patch
+++ b/target/linux/generic/pending-4.19/494-mtd-ubi-add-EOF-marker-support.patch
@@ -50,7 +50,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  		break;
 --- a/drivers/mtd/ubi/ubi.h
 +++ b/drivers/mtd/ubi/ubi.h
-@@ -778,6 +778,7 @@ struct ubi_attach_info {
+@@ -789,6 +789,7 @@ struct ubi_attach_info {
  	int mean_ec;
  	uint64_t ec_sum;
  	int ec_count;
diff --git a/target/linux/generic/pending-4.19/495-mtd-core-add-get_mtd_device_by_node.patch b/target/linux/generic/pending-4.19/495-mtd-core-add-get_mtd_device_by_node.patch
index b9c6bd0125..b6fc11b21b 100644
--- a/target/linux/generic/pending-4.19/495-mtd-core-add-get_mtd_device_by_node.patch
+++ b/target/linux/generic/pending-4.19/495-mtd-core-add-get_mtd_device_by_node.patch
@@ -17,7 +17,7 @@ Reviewed-by: Miquel Raynal <miquel.raynal at bootlin.com>
 
 --- a/drivers/mtd/mtdcore.c
 +++ b/drivers/mtd/mtdcore.c
-@@ -922,6 +922,44 @@ out_unlock:
+@@ -936,6 +936,44 @@ out_unlock:
  }
  EXPORT_SYMBOL_GPL(get_mtd_device_nm);
  
@@ -64,7 +64,7 @@ Reviewed-by: Miquel Raynal <miquel.raynal at bootlin.com>
  	mutex_lock(&mtd_table_mutex);
 --- a/include/linux/mtd/mtd.h
 +++ b/include/linux/mtd/mtd.h
-@@ -579,6 +579,8 @@ extern struct mtd_info *get_mtd_device(s
+@@ -588,6 +588,8 @@ extern struct mtd_info *get_mtd_device(s
  extern int __get_mtd_device(struct mtd_info *mtd);
  extern void __put_mtd_device(struct mtd_info *mtd);
  extern struct mtd_info *get_mtd_device_nm(const char *name);
diff --git a/target/linux/generic/pending-4.19/497-mtd-mtdconcat-add-dt-driver-for-concat-devices.patch b/target/linux/generic/pending-4.19/497-mtd-mtdconcat-add-dt-driver-for-concat-devices.patch
index 94acc883f3..6584e22882 100644
--- a/target/linux/generic/pending-4.19/497-mtd-mtdconcat-add-dt-driver-for-concat-devices.patch
+++ b/target/linux/generic/pending-4.19/497-mtd-mtdconcat-add-dt-driver-for-concat-devices.patch
@@ -43,7 +43,7 @@ Signed-off-by: Bernhard Frauendienst <kernel at nospam.obeliks.de>
 
 --- a/drivers/mtd/Kconfig
 +++ b/drivers/mtd/Kconfig
-@@ -377,4 +377,6 @@ source "drivers/mtd/spi-nor/Kconfig"
+@@ -374,4 +374,6 @@ source "drivers/mtd/spi-nor/Kconfig"
  
  source "drivers/mtd/ubi/Kconfig"
  
diff --git a/target/linux/generic/pending-4.19/530-jffs2_make_lzma_available.patch b/target/linux/generic/pending-4.19/530-jffs2_make_lzma_available.patch
index 4e1dfbe776..645b938f3a 100644
--- a/target/linux/generic/pending-4.19/530-jffs2_make_lzma_available.patch
+++ b/target/linux/generic/pending-4.19/530-jffs2_make_lzma_available.patch
@@ -38,7 +38,7 @@ Signed-off-by: Alexandros C. Couloumbis <alex at ozo.com>
 
 --- a/fs/jffs2/Kconfig
 +++ b/fs/jffs2/Kconfig
-@@ -139,6 +139,15 @@ config JFFS2_LZO
+@@ -135,6 +135,15 @@ config JFFS2_LZO
  	  This feature was added in July, 2007. Say 'N' if you need
  	  compatibility with older bootloaders or kernels.
  
@@ -1087,7 +1087,7 @@ Signed-off-by: Alexandros C. Couloumbis <alex at ozo.com>
  #define JFFS2_NODE_ACCURATE 0x2000
 --- a/lib/Kconfig
 +++ b/lib/Kconfig
-@@ -259,6 +259,12 @@ config ZSTD_DECOMPRESS
+@@ -278,6 +278,12 @@ config ZSTD_DECOMPRESS
  
  source "lib/xz/Kconfig"
  
@@ -1119,7 +1119,7 @@ Signed-off-by: Alexandros C. Couloumbis <alex at ozo.com>
  ifdef CONFIG_FUNCTION_TRACER
  ORIG_CFLAGS := $(KBUILD_CFLAGS)
  KBUILD_CFLAGS = $(subst $(CC_FLAGS_FTRACE),,$(ORIG_CFLAGS))
-@@ -122,6 +132,8 @@ obj-$(CONFIG_ZSTD_COMPRESS) += zstd/
+@@ -128,6 +138,8 @@ obj-$(CONFIG_ZSTD_COMPRESS) += zstd/
  obj-$(CONFIG_ZSTD_DECOMPRESS) += zstd/
  obj-$(CONFIG_XZ_DEC) += xz/
  obj-$(CONFIG_RAID6_PQ) += raid6/
diff --git a/target/linux/generic/pending-4.19/551-ubifs-fix-default-compression-selection.patch b/target/linux/generic/pending-4.19/551-ubifs-fix-default-compression-selection.patch
index 4782fc9ed8..60d5619989 100644
--- a/target/linux/generic/pending-4.19/551-ubifs-fix-default-compression-selection.patch
+++ b/target/linux/generic/pending-4.19/551-ubifs-fix-default-compression-selection.patch
@@ -12,12 +12,12 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  /* Default time granularity in nanoseconds */
  #define DEFAULT_TIME_GRAN 1000000000
  
-+static int get_default_compressor(void)
++static int get_default_compressor(struct ubifs_info *c)
 +{
-+	if (ubifs_compr_present(UBIFS_COMPR_LZO))
++	if (ubifs_compr_present(c, UBIFS_COMPR_LZO))
 +		return UBIFS_COMPR_LZO;
 +
-+	if (ubifs_compr_present(UBIFS_COMPR_ZLIB))
++	if (ubifs_compr_present(c, UBIFS_COMPR_ZLIB))
 +		return UBIFS_COMPR_ZLIB;
 +
 +	return UBIFS_COMPR_NONE;
@@ -31,7 +31,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  		sup->default_compr = cpu_to_le16(c->mount_opts.compr_type);
  	else
 -		sup->default_compr = cpu_to_le16(UBIFS_COMPR_LZO);
-+		sup->default_compr = cpu_to_le16(get_default_compressor());
++		sup->default_compr = cpu_to_le16(get_default_compressor(c));
  
  	generate_random_uuid(sup->uuid);
  
diff --git a/target/linux/generic/pending-4.19/553-ubifs-Add-option-to-create-UBI-FS-version-4-on-empty.patch b/target/linux/generic/pending-4.19/553-ubifs-Add-option-to-create-UBI-FS-version-4-on-empty.patch
index 4b413996f2..02c9b4c0fa 100644
--- a/target/linux/generic/pending-4.19/553-ubifs-Add-option-to-create-UBI-FS-version-4-on-empty.patch
+++ b/target/linux/generic/pending-4.19/553-ubifs-Add-option-to-create-UBI-FS-version-4-on-empty.patch
@@ -20,7 +20,7 @@ Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
 
 --- a/fs/ubifs/Kconfig
 +++ b/fs/ubifs/Kconfig
-@@ -74,3 +74,16 @@ config UBIFS_FS_SECURITY
+@@ -85,3 +85,16 @@ config UBIFS_FS_SECURITY
  	  the extended attribute support in advance.
  
  	  If you are not using a security module, say N.
diff --git a/target/linux/generic/pending-4.19/600-netfilter_conntrack_flush.patch b/target/linux/generic/pending-4.19/600-netfilter_conntrack_flush.patch
index 10da96b7ed..fa32f88e17 100644
--- a/target/linux/generic/pending-4.19/600-netfilter_conntrack_flush.patch
+++ b/target/linux/generic/pending-4.19/600-netfilter_conntrack_flush.patch
@@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/netfilter/nf_conntrack_standalone.c
 +++ b/net/netfilter/nf_conntrack_standalone.c
-@@ -17,6 +17,7 @@
+@@ -9,6 +9,7 @@
  #include <linux/percpu.h>
  #include <linux/netdevice.h>
  #include <linux/security.h>
@@ -17,8 +17,8 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #include <net/net_namespace.h>
  #ifdef CONFIG_SYSCTL
  #include <linux/sysctl.h>
-@@ -381,10 +382,66 @@ static int ct_open(struct inode *inode,
- 			sizeof(struct ct_iter_state));
+@@ -433,6 +434,56 @@ static int ct_cpu_seq_show(struct seq_fi
+ 	return 0;
  }
  
 +struct kill_request {
@@ -44,13 +44,11 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	        nf_inet_addr_cmp(&kr->addr, &t2->dst.u3));
 +}
 +
-+static ssize_t ct_file_write(struct file *file, const char __user *buf,
-+			     size_t count, loff_t *ppos)
++static int ct_file_write(struct file *file, char *buf, size_t count)
 +{
 +	struct seq_file *seq = file->private_data;
 +	struct net *net = seq_file_net(seq);
 +	struct kill_request kr = { };
-+	char req[INET6_ADDRSTRLEN] = { };
 +
 +	if (count == 0)
 +		return 0;
@@ -58,38 +56,33 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	if (count >= INET6_ADDRSTRLEN)
 +		count = INET6_ADDRSTRLEN - 1;
 +
-+	if (copy_from_user(req, buf, count))
-+		return -EFAULT;
-+
-+	if (strnchr(req, count, ':')) {
++	if (strnchr(buf, count, ':')) {
 +		kr.family = AF_INET6;
-+		if (!in6_pton(req, count, (void *)&kr.addr, '\n', NULL))
++		if (!in6_pton(buf, count, (void *)&kr.addr, '\n', NULL))
 +			return -EINVAL;
-+	} else if (strnchr(req, count, '.')) {
++	} else if (strnchr(buf, count, '.')) {
 +		kr.family = AF_INET;
-+		if (!in4_pton(req, count, (void *)&kr.addr, '\n', NULL))
++		if (!in4_pton(buf, count, (void *)&kr.addr, '\n', NULL))
 +			return -EINVAL;
 +	}
 +
 +	nf_ct_iterate_cleanup_net(net, kill_matching, &kr, 0, 0);
 +
-+	return count;
++	return 0;
 +}
 +
- static const struct file_operations ct_file_ops = {
- 	.owner   = THIS_MODULE,
- 	.open    = ct_open,
- 	.read    = seq_read,
-+	.write	 = ct_file_write,
- 	.llseek  = seq_lseek,
- 	.release = seq_release_net,
- };
-@@ -488,7 +545,7 @@ static int nf_conntrack_standalone_init_
+ static const struct seq_operations ct_cpu_seq_ops = {
+ 	.start	= ct_cpu_seq_start,
+ 	.next	= ct_cpu_seq_next,
+@@ -446,8 +497,9 @@ static int nf_conntrack_standalone_init_
  	kuid_t root_uid;
  	kgid_t root_gid;
  
--	pde = proc_create("nf_conntrack", 0440, net->proc_net, &ct_file_ops);
-+	pde = proc_create("nf_conntrack", 0660, net->proc_net, &ct_file_ops);
+-	pde = proc_create_net("nf_conntrack", 0440, net->proc_net, &ct_seq_ops,
+-			sizeof(struct ct_iter_state));
++	pde = proc_create_net_data_write("nf_conntrack", 0440, net->proc_net,
++					 &ct_seq_ops, &ct_file_write,
++					 sizeof(struct ct_iter_state), NULL);
  	if (!pde)
  		goto out_nf_conntrack;
  
diff --git a/target/linux/generic/pending-4.19/610-netfilter_match_bypass_default_checks.patch b/target/linux/generic/pending-4.19/610-netfilter_match_bypass_default_checks.patch
index 2541230ff5..1691146825 100644
--- a/target/linux/generic/pending-4.19/610-netfilter_match_bypass_default_checks.patch
+++ b/target/linux/generic/pending-4.19/610-netfilter_match_bypass_default_checks.patch
@@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #define IPT_INV_VIA_IN		0x01	/* Invert the sense of IN IFACE. */
 --- a/net/ipv4/netfilter/ip_tables.c
 +++ b/net/ipv4/netfilter/ip_tables.c
-@@ -52,6 +52,9 @@ ip_packet_match(const struct iphdr *ip,
+@@ -53,6 +53,9 @@ ip_packet_match(const struct iphdr *ip,
  {
  	unsigned long ret;
  
@@ -29,7 +29,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	if (NF_INVF(ipinfo, IPT_INV_SRCIP,
  		    (ip->saddr & ipinfo->smsk.s_addr) != ipinfo->src.s_addr) ||
  	    NF_INVF(ipinfo, IPT_INV_DSTIP,
-@@ -82,6 +85,29 @@ ip_packet_match(const struct iphdr *ip,
+@@ -83,6 +86,29 @@ ip_packet_match(const struct iphdr *ip,
  	return true;
  }
  
@@ -59,7 +59,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  static bool
  ip_checkentry(const struct ipt_ip *ip)
  {
-@@ -537,6 +563,8 @@ find_check_entry(struct ipt_entry *e, st
+@@ -527,6 +553,8 @@ find_check_entry(struct ipt_entry *e, st
  	struct xt_mtchk_param mtpar;
  	struct xt_entry_match *ematch;
  
@@ -68,7 +68,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	if (!xt_percpu_counter_alloc(alloc_state, &e->counters))
  		return -ENOMEM;
  
-@@ -818,6 +846,7 @@ copy_entries_to_user(unsigned int total_
+@@ -821,6 +849,7 @@ copy_entries_to_user(unsigned int total_
  	const struct xt_table_info *private = table->private;
  	int ret = 0;
  	const void *loc_cpu_entry;
@@ -76,7 +76,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	counters = alloc_counters(table);
  	if (IS_ERR(counters))
-@@ -845,6 +874,14 @@ copy_entries_to_user(unsigned int total_
+@@ -848,6 +877,14 @@ copy_entries_to_user(unsigned int total_
  			goto free_counters;
  		}
  
@@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		for (i = sizeof(struct ipt_entry);
  		     i < e->target_offset;
  		     i += m->u.match_size) {
-@@ -1227,12 +1264,15 @@ compat_copy_entry_to_user(struct ipt_ent
+@@ -1228,12 +1265,15 @@ compat_copy_entry_to_user(struct ipt_ent
  	compat_uint_t origsize;
  	const struct xt_entry_match *ematch;
  	int ret = 0;
diff --git a/target/linux/generic/pending-4.19/611-netfilter_match_bypass_default_table.patch b/target/linux/generic/pending-4.19/611-netfilter_match_bypass_default_table.patch
index 11f07e12b3..ba976b0751 100644
--- a/target/linux/generic/pending-4.19/611-netfilter_match_bypass_default_table.patch
+++ b/target/linux/generic/pending-4.19/611-netfilter_match_bypass_default_table.patch
@@ -8,7 +8,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/ipv4/netfilter/ip_tables.c
 +++ b/net/ipv4/netfilter/ip_tables.c
-@@ -248,6 +248,33 @@ struct ipt_entry *ipt_next_entry(const s
+@@ -249,6 +249,33 @@ struct ipt_entry *ipt_next_entry(const s
  	return (void *)entry + entry->next_offset;
  }
  
@@ -42,35 +42,15 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  /* Returns one of the generic firewall policies, like NF_ACCEPT. */
  unsigned int
  ipt_do_table(struct sk_buff *skb,
-@@ -268,24 +295,8 @@ ipt_do_table(struct sk_buff *skb,
+@@ -269,27 +296,28 @@ ipt_do_table(struct sk_buff *skb,
  	unsigned int addend;
  
  	/* Initialization */
--	stackidx = 0;
--	ip = ip_hdr(skb);
--	indev = state->in ? state->in->name : nulldevname;
--	outdev = state->out ? state->out->name : nulldevname;
--	/* We handle fragments by dealing with the first fragment as
--	 * if it was a normal packet.  All other fragments are treated
--	 * normally, except that they will NEVER match rules that ask
--	 * things we don't know, ie. tcp syn flag or ports).  If the
--	 * rule is also a fragment-specific rule, non-fragments won't
--	 * match it. */
--	acpar.fragoff = ntohs(ip->frag_off) & IP_OFFSET;
--	acpar.thoff   = ip_hdrlen(skb);
--	acpar.hotdrop = false;
--	acpar.state   = state;
--
- 	WARN_ON(!(table->valid_hooks & (1 << hook)));
- 	local_bh_disable();
--	addend = xt_write_recseq_begin();
- 	private = table->private;
- 	cpu        = smp_processor_id();
- 	/*
-@@ -294,6 +305,23 @@ ipt_do_table(struct sk_buff *skb,
- 	 */
- 	smp_read_barrier_depends();
- 	table_base = private->entries;
++	WARN_ON(!(table->valid_hooks & (1 << hook)));
++	local_bh_disable();
++	private = READ_ONCE(table->private); /* Address dependency. */
++	cpu        = smp_processor_id();
++	table_base = private->entries;
 +
 +	e = get_entry(table_base, private->hook_entry[hook]);
 +	if (ipt_handle_default_rule(e, &verdict)) {
@@ -82,16 +62,31 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +		return verdict;
 +	}
 +
-+	stackidx = 0;
-+	ip = ip_hdr(skb);
-+	indev = state->in ? state->in->name : nulldevname;
-+	outdev = state->out ? state->out->name : nulldevname;
-+
-+	addend = xt_write_recseq_begin();
+ 	stackidx = 0;
+ 	ip = ip_hdr(skb);
+ 	indev = state->in ? state->in->name : nulldevname;
+ 	outdev = state->out ? state->out->name : nulldevname;
+-	/* We handle fragments by dealing with the first fragment as
+-	 * if it was a normal packet.  All other fragments are treated
+-	 * normally, except that they will NEVER match rules that ask
+-	 * things we don't know, ie. tcp syn flag or ports).  If the
+-	 * rule is also a fragment-specific rule, non-fragments won't
+-	 * match it. */
+-	acpar.fragoff = ntohs(ip->frag_off) & IP_OFFSET;
+-	acpar.thoff   = ip_hdrlen(skb);
+-	acpar.hotdrop = false;
+-	acpar.state   = state;
+ 
+-	WARN_ON(!(table->valid_hooks & (1 << hook)));
+-	local_bh_disable();
+ 	addend = xt_write_recseq_begin();
+-	private = READ_ONCE(table->private); /* Address dependency. */
+-	cpu        = smp_processor_id();
+-	table_base = private->entries;
  	jumpstack  = (struct ipt_entry **)private->jumpstack[cpu];
  
  	/* Switch to alternate jumpstack if we're being invoked via TEE.
-@@ -306,7 +334,16 @@ ipt_do_table(struct sk_buff *skb,
+@@ -302,7 +330,16 @@ ipt_do_table(struct sk_buff *skb,
  	if (static_key_false(&xt_tee_enabled))
  		jumpstack += private->stacksize * __this_cpu_read(nf_skb_duplicated);
  
diff --git a/target/linux/generic/pending-4.19/612-netfilter_match_reduce_memory_access.patch b/target/linux/generic/pending-4.19/612-netfilter_match_reduce_memory_access.patch
index 183c74c1c7..cd6fcf8e74 100644
--- a/target/linux/generic/pending-4.19/612-netfilter_match_reduce_memory_access.patch
+++ b/target/linux/generic/pending-4.19/612-netfilter_match_reduce_memory_access.patch
@@ -8,7 +8,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/ipv4/netfilter/ip_tables.c
 +++ b/net/ipv4/netfilter/ip_tables.c
-@@ -55,9 +55,9 @@ ip_packet_match(const struct iphdr *ip,
+@@ -56,9 +56,9 @@ ip_packet_match(const struct iphdr *ip,
  	if (ipinfo->flags & IPT_F_NO_DEF_MATCH)
  		return true;
  
diff --git a/target/linux/generic/pending-4.19/613-netfilter_optional_tcp_window_check.patch b/target/linux/generic/pending-4.19/613-netfilter_optional_tcp_window_check.patch
index 69c165bb41..f9613a1ff6 100644
--- a/target/linux/generic/pending-4.19/613-netfilter_optional_tcp_window_check.patch
+++ b/target/linux/generic/pending-4.19/613-netfilter_optional_tcp_window_check.patch
@@ -8,7 +8,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/netfilter/nf_conntrack_proto_tcp.c
 +++ b/net/netfilter/nf_conntrack_proto_tcp.c
-@@ -33,6 +33,9 @@
+@@ -34,6 +34,9 @@
  #include <net/netfilter/ipv4/nf_conntrack_ipv4.h>
  #include <net/netfilter/ipv6/nf_conntrack_ipv6.h>
  
@@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  /* "Be conservative in what you do,
      be liberal in what you accept from others."
      If it's non-zero, we mark only out of window RST segments as INVALID. */
-@@ -508,6 +511,9 @@ static bool tcp_in_window(const struct n
+@@ -483,6 +486,9 @@ static bool tcp_in_window(const struct n
  	s32 receiver_offset;
  	bool res, in_recv_win;
  
@@ -28,7 +28,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	/*
  	 * Get the required data from the packet.
  	 */
-@@ -1489,6 +1495,13 @@ static struct ctl_table tcp_sysctl_table
+@@ -1476,6 +1482,13 @@ static struct ctl_table tcp_sysctl_table
  		.mode		= 0644,
  		.proc_handler	= proc_dointvec,
  	},
diff --git a/target/linux/generic/pending-4.19/616-net_optimize_xfrm_calls.patch b/target/linux/generic/pending-4.19/616-net_optimize_xfrm_calls.patch
index c64694ea3c..6a5801027c 100644
--- a/target/linux/generic/pending-4.19/616-net_optimize_xfrm_calls.patch
+++ b/target/linux/generic/pending-4.19/616-net_optimize_xfrm_calls.patch
@@ -8,8 +8,8 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/netfilter/nf_nat_core.c
 +++ b/net/netfilter/nf_nat_core.c
-@@ -90,6 +90,9 @@ int nf_xfrm_me_harder(struct net *net, s
- 	struct dst_entry *dst;
+@@ -110,6 +110,9 @@ int nf_xfrm_me_harder(struct net *net, s
+ 	struct sock *sk = skb->sk;
  	int err;
  
 +	if (skb->dev && !dev_net(skb->dev)->xfrm.policy_count[XFRM_POLICY_OUT])
diff --git a/target/linux/generic/pending-4.19/620-net_sched-codel-do-not-defer-queue-length-update.patch b/target/linux/generic/pending-4.19/620-net_sched-codel-do-not-defer-queue-length-update.patch
index b3c35ee350..457c812841 100644
--- a/target/linux/generic/pending-4.19/620-net_sched-codel-do-not-defer-queue-length-update.patch
+++ b/target/linux/generic/pending-4.19/620-net_sched-codel-do-not-defer-queue-length-update.patch
@@ -46,7 +46,7 @@ Link: https://bugzilla.kernel.org/show_bug.cgi?id=109581
  	}
 --- a/net/sched/sch_fq_codel.c
 +++ b/net/sched/sch_fq_codel.c
-@@ -316,6 +316,21 @@ begin:
+@@ -317,6 +317,21 @@ begin:
  	flow->dropped += q->cstats.drop_count - prev_drop_count;
  	flow->dropped += q->cstats.ecn_mark - prev_ecn_mark;
  
@@ -68,7 +68,7 @@ Link: https://bugzilla.kernel.org/show_bug.cgi?id=109581
  	if (!skb) {
  		/* force a pass through old_flows to prevent starvation */
  		if ((head == &q->new_flows) && !list_empty(&q->old_flows))
-@@ -326,15 +341,6 @@ begin:
+@@ -327,15 +342,6 @@ begin:
  	}
  	qdisc_bstats_update(sch, skb);
  	flow->deficit -= qdisc_pkt_len(skb);
diff --git a/target/linux/generic/pending-4.19/630-packet_socket_type.patch b/target/linux/generic/pending-4.19/630-packet_socket_type.patch
index d55d678549..5834ab14c1 100644
--- a/target/linux/generic/pending-4.19/630-packet_socket_type.patch
+++ b/target/linux/generic/pending-4.19/630-packet_socket_type.patch
@@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #define PACKET_FANOUT_LB		1
 --- a/net/packet/af_packet.c
 +++ b/net/packet/af_packet.c
-@@ -1829,6 +1829,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1789,6 +1789,7 @@ static int packet_rcv_spkt(struct sk_buf
  {
  	struct sock *sk;
  	struct sockaddr_pkt *spkt;
@@ -38,7 +38,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	/*
  	 *	When we registered the protocol we saved the socket in the data
-@@ -1836,6 +1837,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1796,6 +1797,7 @@ static int packet_rcv_spkt(struct sk_buf
  	 */
  
  	sk = pt->af_packet_priv;
@@ -46,7 +46,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	/*
  	 *	Yank back the headers [hope the device set this
-@@ -1848,7 +1850,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1808,7 +1810,7 @@ static int packet_rcv_spkt(struct sk_buf
  	 *	so that this procedure is noop.
  	 */
  
@@ -55,7 +55,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		goto out;
  
  	if (!net_eq(dev_net(dev), sock_net(sk)))
-@@ -2075,12 +2077,12 @@ static int packet_rcv(struct sk_buff *sk
+@@ -2036,12 +2038,12 @@ static int packet_rcv(struct sk_buff *sk
  	unsigned int snaplen, res;
  	bool is_drop_n_account = false;
  
@@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	if (!net_eq(dev_net(dev), sock_net(sk)))
  		goto drop;
  
-@@ -2206,12 +2208,12 @@ static int tpacket_rcv(struct sk_buff *s
+@@ -2167,12 +2169,12 @@ static int tpacket_rcv(struct sk_buff *s
  	BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
  	BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
  
@@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	if (!net_eq(dev_net(dev), sock_net(sk)))
  		goto drop;
  
-@@ -3265,6 +3267,7 @@ static int packet_create(struct net *net
+@@ -3228,6 +3230,7 @@ static int packet_create(struct net *net
  	mutex_init(&po->pg_vec_lock);
  	po->rollover = NULL;
  	po->prot_hook.func = packet_rcv;
@@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	if (sock->type == SOCK_PACKET)
  		po->prot_hook.func = packet_rcv_spkt;
-@@ -3878,6 +3881,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3839,6 +3842,16 @@ packet_setsockopt(struct socket *sock, i
  		po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
  		return 0;
  	}
@@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	default:
  		return -ENOPROTOOPT;
  	}
-@@ -3930,6 +3943,13 @@ static int packet_getsockopt(struct sock
+@@ -3891,6 +3904,13 @@ static int packet_getsockopt(struct sock
  	case PACKET_VNET_HDR:
  		val = po->has_vnet_hdr;
  		break;
diff --git a/target/linux/generic/pending-4.19/640-netfilter-nf_flow_table-add-hardware-offload-support.patch b/target/linux/generic/pending-4.19/640-netfilter-nf_flow_table-add-hardware-offload-support.patch
index ad78b684a0..6126436b99 100644
--- a/target/linux/generic/pending-4.19/640-netfilter-nf_flow_table-add-hardware-offload-support.patch
+++ b/target/linux/generic/pending-4.19/640-netfilter-nf_flow_table-add-hardware-offload-support.patch
@@ -23,9 +23,9 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
 
 --- a/include/linux/netdevice.h
 +++ b/include/linux/netdevice.h
-@@ -826,6 +826,13 @@ struct xfrmdev_ops {
+@@ -918,6 +918,13 @@ struct dev_ifalias {
+ 	char ifalias[];
  };
- #endif
  
 +struct flow_offload;
 +
@@ -37,7 +37,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  /*
   * This structure defines the management hooks for network devices.
   * The following hooks can be defined; unless noted otherwise, they are
-@@ -1057,6 +1064,10 @@ struct xfrmdev_ops {
+@@ -1150,6 +1157,10 @@ struct dev_ifalias {
   * int (*ndo_bridge_dellink)(struct net_device *dev, struct nlmsghdr *nlh,
   *			     u16 flags);
   *
@@ -48,7 +48,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
   * int (*ndo_change_carrier)(struct net_device *dev, bool new_carrier);
   *	Called to change device carrier. Soft-devices (like dummy, team, etc)
   *	which do not represent real hardware may define this to allow their
-@@ -1281,6 +1292,8 @@ struct net_device_ops {
+@@ -1377,6 +1388,8 @@ struct net_device_ops {
  	int			(*ndo_bridge_dellink)(struct net_device *dev,
  						      struct nlmsghdr *nlh,
  						      u16 flags);
@@ -110,7 +110,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  
 --- a/include/uapi/linux/netfilter/nf_tables.h
 +++ b/include/uapi/linux/netfilter/nf_tables.h
-@@ -1341,6 +1341,7 @@ enum nft_object_attributes {
+@@ -1464,6 +1464,7 @@ enum nft_object_attributes {
   * @NFTA_FLOWTABLE_HOOK: netfilter hook configuration(NLA_U32)
   * @NFTA_FLOWTABLE_USE: number of references to this flow table (NLA_U32)
   * @NFTA_FLOWTABLE_HANDLE: object handle (NLA_U64)
@@ -118,7 +118,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
   */
  enum nft_flowtable_attributes {
  	NFTA_FLOWTABLE_UNSPEC,
-@@ -1350,6 +1351,7 @@ enum nft_flowtable_attributes {
+@@ -1473,6 +1474,7 @@ enum nft_flowtable_attributes {
  	NFTA_FLOWTABLE_USE,
  	NFTA_FLOWTABLE_HANDLE,
  	NFTA_FLOWTABLE_PAD,
@@ -128,7 +128,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  #define NFTA_FLOWTABLE_MAX	(__NFTA_FLOWTABLE_MAX - 1)
 --- a/net/netfilter/Kconfig
 +++ b/net/netfilter/Kconfig
-@@ -692,6 +692,15 @@ config NF_FLOW_TABLE
+@@ -714,6 +714,15 @@ config NF_FLOW_TABLE
  
  	  To compile it as a module, choose M here.
  
@@ -146,7 +146,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  	default m if NETFILTER_ADVANCED=n
 --- a/net/netfilter/Makefile
 +++ b/net/netfilter/Makefile
-@@ -116,6 +116,7 @@ obj-$(CONFIG_NF_FLOW_TABLE)	+= nf_flow_t
+@@ -126,6 +126,7 @@ obj-$(CONFIG_NF_FLOW_TABLE)	+= nf_flow_t
  nf_flow_table-objs := nf_flow_table_core.o nf_flow_table_ip.o
  
  obj-$(CONFIG_NF_FLOW_TABLE_INET) += nf_flow_table_inet.o
@@ -156,7 +156,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  obj-$(CONFIG_NETFILTER_XTABLES) += x_tables.o xt_tcpudp.o
 --- a/net/netfilter/nf_flow_table_core.c
 +++ b/net/netfilter/nf_flow_table_core.c
-@@ -218,10 +218,16 @@ int flow_offload_add(struct nf_flowtable
+@@ -215,10 +215,16 @@ int flow_offload_add(struct nf_flowtable
  }
  EXPORT_SYMBOL_GPL(flow_offload_add);
  
@@ -173,7 +173,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  
  	rhashtable_remove_fast(&flow_table->rhashtable,
  			       &flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].node,
-@@ -236,6 +242,9 @@ static void flow_offload_del(struct nf_f
+@@ -233,6 +239,9 @@ static void flow_offload_del(struct nf_f
  	if (!(flow->flags & FLOW_OFFLOAD_TEARDOWN))
  		flow_offload_fixup_ct_state(e->ct);
  
@@ -183,7 +183,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  	flow_offload_free(flow);
  }
  
-@@ -349,6 +358,9 @@ static int nf_flow_offload_gc_step(struc
+@@ -346,6 +355,9 @@ static int nf_flow_offload_gc_step(struc
  		if (!teardown)
  			nf_ct_offload_timeout(flow);
  
@@ -193,7 +193,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  		if (nf_flow_has_expired(flow) || teardown)
  			flow_offload_del(flow_table, flow);
  	}
-@@ -484,10 +496,43 @@ int nf_flow_dnat_port(const struct flow_
+@@ -481,10 +493,43 @@ int nf_flow_dnat_port(const struct flow_
  }
  EXPORT_SYMBOL_GPL(nf_flow_dnat_port);
  
@@ -237,7 +237,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  	INIT_DEFERRABLE_WORK(&flowtable->gc_work, nf_flow_offload_work_gc);
  
  	err = rhashtable_init(&flowtable->rhashtable,
-@@ -525,6 +570,8 @@ static void nf_flow_table_iterate_cleanu
+@@ -522,6 +567,8 @@ static void nf_flow_table_iterate_cleanu
  {
  	nf_flow_table_iterate(flowtable, nf_flow_table_do_cleanup, dev);
  	flush_delayed_work(&flowtable->gc_work);
@@ -246,7 +246,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  }
  
  void nf_flow_table_cleanup(struct net *net, struct net_device *dev)
-@@ -538,6 +585,26 @@ void nf_flow_table_cleanup(struct net *n
+@@ -535,6 +582,26 @@ void nf_flow_table_cleanup(struct net *n
  }
  EXPORT_SYMBOL_GPL(nf_flow_table_cleanup);
  
@@ -273,7 +273,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  void nf_flow_table_free(struct nf_flowtable *flow_table)
  {
  	mutex_lock(&flowtable_lock);
-@@ -547,9 +614,58 @@ void nf_flow_table_free(struct nf_flowta
+@@ -544,9 +611,58 @@ void nf_flow_table_free(struct nf_flowta
  	nf_flow_table_iterate(flow_table, nf_flow_table_do_cleanup, NULL);
  	WARN_ON(!nf_flow_offload_gc_step(flow_table));
  	rhashtable_destroy(&flow_table->rhashtable);
@@ -506,22 +506,21 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
 +MODULE_ALIAS("nf-flow-table-hw");
 --- a/net/netfilter/nf_tables_api.c
 +++ b/net/netfilter/nf_tables_api.c
-@@ -4934,6 +4934,14 @@ static int nf_tables_flowtable_parse_hoo
+@@ -5396,6 +5396,13 @@ static int nf_tables_flowtable_parse_hoo
  	if (err < 0)
- 		goto err1;
+ 		return err;
  
 +	for (i = 0; i < n; i++) {
 +		if (flowtable->data.flags & NF_FLOWTABLE_F_HW &&
 +		    !dev_array[i]->netdev_ops->ndo_flow_offload) {
-+			err = -EOPNOTSUPP;
-+			goto err1;
++			return -EOPNOTSUPP;
 +		}
 +	}
 +
- 	ops = kzalloc(sizeof(struct nf_hook_ops) * n, GFP_KERNEL);
- 	if (!ops) {
- 		err = -ENOMEM;
-@@ -5064,10 +5072,19 @@ static int nf_tables_newflowtable(struct
+ 	ops = kcalloc(n, sizeof(struct nf_hook_ops), GFP_KERNEL);
+ 	if (!ops)
+ 		return -ENOMEM;
+@@ -5527,10 +5534,19 @@ static int nf_tables_newflowtable(struct
  	}
  
  	flowtable->data.type = type;
@@ -541,7 +540,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  	err = nf_tables_flowtable_parse_hook(&ctx, nla[NFTA_FLOWTABLE_HOOK],
  					     flowtable);
  	if (err < 0)
-@@ -5165,7 +5182,8 @@ static int nf_tables_fill_flowtable_info
+@@ -5656,7 +5672,8 @@ static int nf_tables_fill_flowtable_info
  	    nla_put_string(skb, NFTA_FLOWTABLE_NAME, flowtable->name) ||
  	    nla_put_be32(skb, NFTA_FLOWTABLE_USE, htonl(flowtable->use)) ||
  	    nla_put_be64(skb, NFTA_FLOWTABLE_HANDLE, cpu_to_be64(flowtable->handle),
diff --git a/target/linux/generic/pending-4.19/641-netfilter-nf_flow_table-support-hw-offload-through-v.patch b/target/linux/generic/pending-4.19/641-netfilter-nf_flow_table-support-hw-offload-through-v.patch
index 9311725346..87ff634793 100644
--- a/target/linux/generic/pending-4.19/641-netfilter-nf_flow_table-support-hw-offload-through-v.patch
+++ b/target/linux/generic/pending-4.19/641-netfilter-nf_flow_table-support-hw-offload-through-v.patch
@@ -15,15 +15,15 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/include/linux/netdevice.h
 +++ b/include/linux/netdevice.h
-@@ -827,6 +827,7 @@ struct xfrmdev_ops {
- #endif
+@@ -919,6 +919,7 @@ struct dev_ifalias {
+ };
  
  struct flow_offload;
 +struct flow_offload_hw_path;
  
  enum flow_offload_type {
  	FLOW_OFFLOAD_ADD	= 0,
-@@ -1064,8 +1065,15 @@ enum flow_offload_type {
+@@ -1157,8 +1158,15 @@ enum flow_offload_type {
   * int (*ndo_bridge_dellink)(struct net_device *dev, struct nlmsghdr *nlh,
   *			     u16 flags);
   *
@@ -40,7 +40,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
   *	Adds/deletes flow entry to/from net device flowtable.
   *
   * int (*ndo_change_carrier)(struct net_device *dev, bool new_carrier);
-@@ -1292,8 +1300,11 @@ struct net_device_ops {
+@@ -1388,8 +1396,11 @@ struct net_device_ops {
  	int			(*ndo_bridge_dellink)(struct net_device *dev,
  						      struct nlmsghdr *nlh,
  						      u16 flags);
diff --git a/target/linux/generic/pending-4.19/642-net-8021q-support-hardware-flow-table-offload.patch b/target/linux/generic/pending-4.19/642-net-8021q-support-hardware-flow-table-offload.patch
index 0d6eab16fd..4fabfdcb6c 100644
--- a/target/linux/generic/pending-4.19/642-net-8021q-support-hardware-flow-table-offload.patch
+++ b/target/linux/generic/pending-4.19/642-net-8021q-support-hardware-flow-table-offload.patch
@@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  #include "vlan.h"
  #include "vlanproc.h"
-@@ -766,6 +770,27 @@ static int vlan_dev_get_iflink(const str
+@@ -768,6 +772,27 @@ static int vlan_dev_get_iflink(const str
  	return real_dev->ifindex;
  }
  
@@ -48,7 +48,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  static const struct ethtool_ops vlan_ethtool_ops = {
  	.get_link_ksettings	= vlan_ethtool_get_link_ksettings,
  	.get_drvinfo	        = vlan_ethtool_get_drvinfo,
-@@ -803,6 +828,9 @@ static const struct net_device_ops vlan_
+@@ -805,6 +830,9 @@ static const struct net_device_ops vlan_
  	.ndo_fix_features	= vlan_dev_fix_features,
  	.ndo_get_lock_subclass  = vlan_dev_get_lock_subclass,
  	.ndo_get_iflink		= vlan_dev_get_iflink,
diff --git a/target/linux/generic/pending-4.19/643-net-bridge-support-hardware-flow-table-offload.patch b/target/linux/generic/pending-4.19/643-net-bridge-support-hardware-flow-table-offload.patch
index a070fe1636..7d9c8abe9c 100644
--- a/target/linux/generic/pending-4.19/643-net-bridge-support-hardware-flow-table-offload.patch
+++ b/target/linux/generic/pending-4.19/643-net-bridge-support-hardware-flow-table-offload.patch
@@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  #include <linux/uaccess.h>
  #include "br_private.h"
-@@ -340,6 +344,28 @@ static const struct ethtool_ops br_ethto
+@@ -370,6 +374,28 @@ static const struct ethtool_ops br_ethto
  	.get_link	= ethtool_op_get_link,
  };
  
@@ -49,7 +49,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  static const struct net_device_ops br_netdev_ops = {
  	.ndo_open		 = br_dev_open,
  	.ndo_stop		 = br_dev_stop,
-@@ -367,6 +393,9 @@ static const struct net_device_ops br_ne
+@@ -397,6 +423,9 @@ static const struct net_device_ops br_ne
  	.ndo_bridge_setlink	 = br_setlink,
  	.ndo_bridge_dellink	 = br_dellink,
  	.ndo_features_check	 = passthru_features_check,
diff --git a/target/linux/generic/pending-4.19/644-net-pppoe-support-hardware-flow-table-offload.patch b/target/linux/generic/pending-4.19/644-net-pppoe-support-hardware-flow-table-offload.patch
index edba04ccf6..456c08b90c 100644
--- a/target/linux/generic/pending-4.19/644-net-pppoe-support-hardware-flow-table-offload.patch
+++ b/target/linux/generic/pending-4.19/644-net-pppoe-support-hardware-flow-table-offload.patch
@@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/drivers/net/ppp/ppp_generic.c
 +++ b/drivers/net/ppp/ppp_generic.c
-@@ -56,6 +56,11 @@
+@@ -57,6 +57,11 @@
  #include <net/net_namespace.h>
  #include <net/netns/generic.h>
  
@@ -21,7 +21,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #define PPP_VERSION	"2.4.2"
  
  /*
-@@ -1382,12 +1387,37 @@ static void ppp_dev_priv_destructor(stru
+@@ -1368,12 +1373,37 @@ static void ppp_dev_priv_destructor(stru
  		ppp_destroy_interface(ppp);
  }
  
@@ -73,7 +73,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #include <linux/nsproxy.h>
  #include <net/net_namespace.h>
  #include <net/netns/generic.h>
-@@ -977,8 +982,36 @@ static int pppoe_xmit(struct ppp_channel
+@@ -975,8 +980,36 @@ static int pppoe_xmit(struct ppp_channel
  	return __pppoe_xmit(sk, skb);
  }
  
diff --git a/target/linux/generic/pending-4.19/645-netfilter-nf_flow_table-rework-hardware-offload-time.patch b/target/linux/generic/pending-4.19/645-netfilter-nf_flow_table-rework-hardware-offload-time.patch
index 8f0793491b..2b3725f81e 100644
--- a/target/linux/generic/pending-4.19/645-netfilter-nf_flow_table-rework-hardware-offload-time.patch
+++ b/target/linux/generic/pending-4.19/645-netfilter-nf_flow_table-rework-hardware-offload-time.patch
@@ -26,7 +26,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	struct flow_offload_tuple_rhash		tuplehash[FLOW_OFFLOAD_DIR_MAX];
 --- a/net/netfilter/nf_flow_table_core.c
 +++ b/net/netfilter/nf_flow_table_core.c
-@@ -358,7 +358,7 @@ static int nf_flow_offload_gc_step(struc
+@@ -355,7 +355,7 @@ static int nf_flow_offload_gc_step(struc
  		if (!teardown)
  			nf_ct_offload_timeout(flow);
  
diff --git a/target/linux/generic/pending-4.19/655-increase_skb_pad.patch b/target/linux/generic/pending-4.19/655-increase_skb_pad.patch
index 71c3fc790b..31f106febe 100644
--- a/target/linux/generic/pending-4.19/655-increase_skb_pad.patch
+++ b/target/linux/generic/pending-4.19/655-increase_skb_pad.patch
@@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/include/linux/skbuff.h
 +++ b/include/linux/skbuff.h
-@@ -2460,7 +2460,7 @@ static inline int pskb_network_may_pull(
+@@ -2464,7 +2464,7 @@ static inline int pskb_network_may_pull(
   * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
   */
  #ifndef NET_SKB_PAD
diff --git a/target/linux/generic/pending-4.19/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch b/target/linux/generic/pending-4.19/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
index 7c60d7e799..40f7962b67 100644
--- a/target/linux/generic/pending-4.19/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
+++ b/target/linux/generic/pending-4.19/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
@@ -156,7 +156,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	if (dev == ip6n->fb_tnl_dev)
  		RCU_INIT_POINTER(ip6n->tnls_wc[0], NULL);
  	else
-@@ -779,6 +796,107 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t,
+@@ -772,6 +789,107 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t,
  }
  EXPORT_SYMBOL_GPL(ip6_tnl_rcv_ctl);
  
@@ -264,7 +264,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  static int __ip6_tnl_rcv(struct ip6_tnl *tunnel, struct sk_buff *skb,
  			 const struct tnl_ptk_info *tpi,
  			 struct metadata_dst *tun_dst,
-@@ -831,6 +949,27 @@ static int __ip6_tnl_rcv(struct ip6_tnl
+@@ -824,6 +942,27 @@ static int __ip6_tnl_rcv(struct ip6_tnl
  	skb_reset_network_header(skb);
  	memset(skb->cb, 0, sizeof(struct inet6_skb_parm));
  
@@ -292,7 +292,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	__skb_tunnel_rx(skb, tunnel->dev, tunnel->net);
  
  	err = dscp_ecn_decapsulate(tunnel, ipv6h, skb);
-@@ -962,6 +1101,7 @@ static void init_tel_txopt(struct ipv6_t
+@@ -955,6 +1094,7 @@ static void init_tel_txopt(struct ipv6_t
  	opt->ops.opt_nflen = 8;
  }
  
@@ -300,7 +300,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  /**
   * ip6_tnl_addr_conflict - compare packet addresses to tunnel's own
   *   @t: the outgoing tunnel device
-@@ -1305,6 +1445,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1312,6 +1452,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
  {
  	struct ip6_tnl *t = netdev_priv(dev);
  	struct ipv6hdr *ipv6h;
@@ -308,7 +308,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	int encap_limit = -1;
  	__u16 offset;
  	struct flowi6 fl6;
-@@ -1371,6 +1512,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1379,6 +1520,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
  
  	fl6.flowi6_uid = sock_net_uid(dev_net(dev), NULL);
  
@@ -327,7 +327,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
  		return -1;
  
-@@ -1499,6 +1652,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
+@@ -1507,6 +1660,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
  	t->parms.link = p->link;
  	t->parms.proto = p->proto;
  	t->parms.fwmark = p->fwmark;
@@ -342,7 +342,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	dst_cache_reset(&t->dst_cache);
  	ip6_tnl_link_config(t);
  	return 0;
-@@ -1537,6 +1698,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
+@@ -1545,6 +1706,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
  	p->flowinfo = u->flowinfo;
  	p->link = u->link;
  	p->proto = u->proto;
@@ -350,7 +350,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	memcpy(p->name, u->name, sizeof(u->name));
  }
  
-@@ -1923,6 +2085,15 @@ static int ip6_tnl_validate(struct nlatt
+@@ -1931,6 +2093,15 @@ static int ip6_tnl_validate(struct nlatt
  	return 0;
  }
  
@@ -366,7 +366,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  static void ip6_tnl_netlink_parms(struct nlattr *data[],
  				  struct __ip6_tnl_parm *parms)
  {
-@@ -1960,6 +2131,46 @@ static void ip6_tnl_netlink_parms(struct
+@@ -1968,6 +2139,46 @@ static void ip6_tnl_netlink_parms(struct
  
  	if (data[IFLA_IPTUN_FWMARK])
  		parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]);
@@ -413,7 +413,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  }
  
  static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
-@@ -2075,6 +2286,12 @@ static void ip6_tnl_dellink(struct net_d
+@@ -2083,6 +2294,12 @@ static void ip6_tnl_dellink(struct net_d
  
  static size_t ip6_tnl_get_size(const struct net_device *dev)
  {
@@ -426,7 +426,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	return
  		/* IFLA_IPTUN_LINK */
  		nla_total_size(4) +
-@@ -2104,6 +2321,24 @@ static size_t ip6_tnl_get_size(const str
+@@ -2112,6 +2329,24 @@ static size_t ip6_tnl_get_size(const str
  		nla_total_size(0) +
  		/* IFLA_IPTUN_FWMARK */
  		nla_total_size(4) +
@@ -451,7 +451,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  		0;
  }
  
-@@ -2111,6 +2346,9 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2119,6 +2354,9 @@ static int ip6_tnl_fill_info(struct sk_b
  {
  	struct ip6_tnl *tunnel = netdev_priv(dev);
  	struct __ip6_tnl_parm *parm = &tunnel->parms;
@@ -461,7 +461,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  
  	if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
  	    nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
-@@ -2120,9 +2358,27 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2128,9 +2366,27 @@ static int ip6_tnl_fill_info(struct sk_b
  	    nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
  	    nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
  	    nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
@@ -490,7 +490,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
  	    nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
  	    nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
-@@ -2162,6 +2418,7 @@ static const struct nla_policy ip6_tnl_p
+@@ -2170,6 +2426,7 @@ static const struct nla_policy ip6_tnl_p
  	[IFLA_IPTUN_ENCAP_DPORT]	= { .type = NLA_U16 },
  	[IFLA_IPTUN_COLLECT_METADATA]	= { .type = NLA_FLAG },
  	[IFLA_IPTUN_FWMARK]		= { .type = NLA_U32 },
diff --git a/target/linux/generic/pending-4.19/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-4.19/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
index a5cb9579f7..a022c2c556 100644
--- a/target/linux/generic/pending-4.19/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
+++ b/target/linux/generic/pending-4.19/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
@@ -20,9 +20,9 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
 
 --- a/include/net/netns/ipv6.h
 +++ b/include/net/netns/ipv6.h
-@@ -69,6 +69,7 @@ struct netns_ipv6 {
- #ifdef CONFIG_IPV6_MULTIPLE_TABLES
- 	bool			 fib6_has_custom_rules;
+@@ -78,6 +78,7 @@ struct netns_ipv6 {
+ 	unsigned int		fib6_rules_require_fldissect;
+ 	bool			fib6_has_custom_rules;
  	struct rt6_info         *ip6_prohibit_entry;
 +	struct rt6_info		*ip6_policy_failed_entry;
  	struct rt6_info         *ip6_blk_hole_entry;
@@ -30,7 +30,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  	struct fib_rules_ops    *fib6_rules_ops;
 --- a/include/uapi/linux/fib_rules.h
 +++ b/include/uapi/linux/fib_rules.h
-@@ -73,6 +73,10 @@ enum {
+@@ -82,6 +82,10 @@ enum {
  	FR_ACT_BLACKHOLE,	/* Drop without notification */
  	FR_ACT_UNREACHABLE,	/* Drop with ENETUNREACH */
  	FR_ACT_PROHIBIT,	/* Drop with EACCES */
@@ -43,7 +43,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  
 --- a/include/uapi/linux/rtnetlink.h
 +++ b/include/uapi/linux/rtnetlink.h
-@@ -221,6 +221,7 @@ enum {
+@@ -228,6 +228,7 @@ enum {
  	RTN_THROW,		/* Not in this table		*/
  	RTN_NAT,		/* Translate this address	*/
  	RTN_XRESOLVE,		/* Use external resolver	*/
@@ -66,7 +66,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  static void rt_fibinfo_free(struct rtable __rcu **rtp)
 --- a/net/ipv4/fib_trie.c
 +++ b/net/ipv4/fib_trie.c
-@@ -2460,6 +2460,7 @@ static const char *const rtn_type_names[
+@@ -2465,6 +2465,7 @@ static const char *const rtn_type_names[
  	[RTN_THROW] = "THROW",
  	[RTN_NAT] = "NAT",
  	[RTN_XRESOLVE] = "XRESOLVE",
@@ -76,7 +76,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  static inline const char *rtn_type(char *buf, size_t len, unsigned int t)
 --- a/net/ipv4/ipmr.c
 +++ b/net/ipv4/ipmr.c
-@@ -161,6 +161,7 @@ static int ipmr_rule_action(struct fib_r
+@@ -177,6 +177,7 @@ static int ipmr_rule_action(struct fib_r
  	case FR_ACT_UNREACHABLE:
  		return -ENETUNREACH;
  	case FR_ACT_PROHIBIT:
@@ -86,7 +86,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  	default:
 --- a/net/ipv6/fib6_rules.c
 +++ b/net/ipv6/fib6_rules.c
-@@ -121,6 +121,10 @@ static int fib6_rule_action(struct fib_r
+@@ -221,6 +221,10 @@ static int __fib6_rule_action(struct fib
  		err = -EACCES;
  		rt = net->ipv6.ip6_prohibit_entry;
  		goto discard_pkt;
@@ -99,7 +99,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  	tb_id = fib_rule_get_table(rule, arg);
 --- a/net/ipv6/ip6mr.c
 +++ b/net/ipv6/ip6mr.c
-@@ -168,6 +168,8 @@ static int ip6mr_rule_action(struct fib_
+@@ -159,6 +159,8 @@ static int ip6mr_rule_action(struct fib_
  		return -ENETUNREACH;
  	case FR_ACT_PROHIBIT:
  		return -EACCES;
@@ -110,7 +110,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  		return -EINVAL;
 --- a/net/ipv6/route.c
 +++ b/net/ipv6/route.c
-@@ -91,6 +91,8 @@ static int		ip6_pkt_discard(struct sk_bu
+@@ -97,6 +97,8 @@ static int		ip6_pkt_discard(struct sk_bu
  static int		ip6_pkt_discard_out(struct net *net, struct sock *sk, struct sk_buff *skb);
  static int		ip6_pkt_prohibit(struct sk_buff *skb);
  static int		ip6_pkt_prohibit_out(struct net *net, struct sock *sk, struct sk_buff *skb);
@@ -119,8 +119,8 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  static void		ip6_link_failure(struct sk_buff *skb);
  static void		ip6_rt_update_pmtu(struct dst_entry *dst, struct sock *sk,
  					   struct sk_buff *skb, u32 mtu);
-@@ -321,6 +323,21 @@ static const struct rt6_info ip6_prohibi
- 	.rt6i_ref	= ATOMIC_INIT(1),
+@@ -324,6 +326,18 @@ static const struct rt6_info ip6_prohibi
+ 	.rt6i_flags	= (RTF_REJECT | RTF_NONEXTHOP),
  };
  
 +static const struct rt6_info ip6_policy_failed_entry_template = {
@@ -133,27 +133,31 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
 +		.output		= ip6_pkt_policy_failed_out,
 +	},
 +	.rt6i_flags	= (RTF_REJECT | RTF_NONEXTHOP),
-+	.rt6i_protocol	= RTPROT_KERNEL,
-+	.rt6i_metric	= ~(u32) 0,
-+	.rt6i_ref	= ATOMIC_INIT(1),
 +};
 +
  static const struct rt6_info ip6_blk_hole_entry_template = {
  	.dst = {
  		.__refcnt	= ATOMIC_INIT(1),
-@@ -2043,6 +2060,11 @@ static struct rt6_info *ip6_route_info_c
- 			rt->dst.output = ip6_pkt_prohibit_out;
- 			rt->dst.input = ip6_pkt_prohibit;
- 			break;
-+		case RTN_POLICY_FAILED:
-+			rt->dst.error = -EACCES;
-+			rt->dst.output = ip6_pkt_policy_failed_out;
-+			rt->dst.input = ip6_pkt_policy_failed;
-+			break;
- 		case RTN_THROW:
- 		case RTN_UNREACHABLE:
- 		default:
-@@ -2768,6 +2790,17 @@ static int ip6_pkt_prohibit_out(struct n
+@@ -901,6 +915,7 @@ static const int fib6_prop[RTN_MAX + 1]
+ 	[RTN_BLACKHOLE]	= -EINVAL,
+ 	[RTN_UNREACHABLE] = -EHOSTUNREACH,
+ 	[RTN_PROHIBIT]	= -EACCES,
++	[RTN_POLICY_FAILED] = -EACCES,
+ 	[RTN_THROW]	= -EAGAIN,
+ 	[RTN_NAT]	= -EINVAL,
+ 	[RTN_XRESOLVE]	= -EINVAL,
+@@ -938,6 +953,10 @@ static void ip6_rt_init_dst_reject(struc
+ 		rt->dst.output = ip6_pkt_prohibit_out;
+ 		rt->dst.input = ip6_pkt_prohibit;
+ 		break;
++	case RTN_POLICY_FAILED:
++		rt->dst.output = ip6_pkt_policy_failed_out;
++		rt->dst.input = ip6_pkt_policy_failed;
++		break;
+ 	case RTN_THROW:
+ 	case RTN_UNREACHABLE:
+ 	default:
+@@ -3745,6 +3764,17 @@ static int ip6_pkt_prohibit_out(struct n
  	return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
  }
  
@@ -171,7 +175,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  /*
   *	Allocate a dst for local (unicast / anycast) address.
   */
-@@ -3004,7 +3037,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -4192,7 +4222,8 @@ static int rtm_to_fib6_config(struct sk_
  	if (rtm->rtm_type == RTN_UNREACHABLE ||
  	    rtm->rtm_type == RTN_BLACKHOLE ||
  	    rtm->rtm_type == RTN_PROHIBIT ||
@@ -181,17 +185,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  		cfg->fc_flags |= RTF_REJECT;
  
  	if (rtm->rtm_type == RTN_LOCAL)
-@@ -3499,6 +3533,9 @@ static int rt6_fill_node(struct net *net
- 		case -EACCES:
- 			rtm->rtm_type = RTN_PROHIBIT;
- 			break;
-+		case -EPERM:
-+			rtm->rtm_type = RTN_POLICY_FAILED;
-+			break;
- 		case -EAGAIN:
- 			rtm->rtm_type = RTN_THROW;
- 			break;
-@@ -3817,6 +3854,8 @@ static int ip6_route_dev_notify(struct n
+@@ -5031,6 +5062,8 @@ static int ip6_route_dev_notify(struct n
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  		net->ipv6.ip6_prohibit_entry->dst.dev = dev;
  		net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
@@ -200,7 +194,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  		net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
  		net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
  #endif
-@@ -3828,6 +3867,7 @@ static int ip6_route_dev_notify(struct n
+@@ -5042,6 +5075,7 @@ static int ip6_route_dev_notify(struct n
  		in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  		in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
@@ -208,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  		in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
  #endif
  	}
-@@ -4044,6 +4084,17 @@ static int __net_init ip6_route_net_init
+@@ -5236,6 +5270,15 @@ static int __net_init ip6_route_net_init
  	net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
  	dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
  			 ip6_template_metrics, true);
@@ -218,15 +212,13 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
 +			sizeof(*net->ipv6.ip6_policy_failed_entry), GFP_KERNEL);
 +	if (!net->ipv6.ip6_policy_failed_entry)
 +		goto out_ip6_blk_hole_entry;
-+	net->ipv6.ip6_policy_failed_entry->dst.path =
-+		(struct dst_entry *)net->ipv6.ip6_policy_failed_entry;
 +	net->ipv6.ip6_policy_failed_entry->dst.ops = &net->ipv6.ip6_dst_ops;
 +	dst_init_metrics(&net->ipv6.ip6_policy_failed_entry->dst,
 +			 ip6_template_metrics, true);
  #endif
  
  	net->ipv6.sysctl.flush_delay = 0;
-@@ -4062,6 +4113,8 @@ out:
+@@ -5254,6 +5297,8 @@ out:
  	return ret;
  
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
@@ -235,7 +227,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  out_ip6_prohibit_entry:
  	kfree(net->ipv6.ip6_prohibit_entry);
  out_ip6_null_entry:
-@@ -4079,6 +4132,7 @@ static void __net_exit ip6_route_net_exi
+@@ -5274,6 +5319,7 @@ static void __net_exit ip6_route_net_exi
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  	kfree(net->ipv6.ip6_prohibit_entry);
  	kfree(net->ipv6.ip6_blk_hole_entry);
@@ -243,7 +235,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  #endif
  	dst_entries_destroy(&net->ipv6.ip6_dst_ops);
  }
-@@ -4152,6 +4206,9 @@ void __init ip6_route_init_special_entri
+@@ -5350,6 +5396,9 @@ void __init ip6_route_init_special_entri
  	init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
  	init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
  	init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
diff --git a/target/linux/generic/pending-4.19/671-net-provide-defines-for-_POLICY_FAILED-until-all-cod.patch b/target/linux/generic/pending-4.19/671-net-provide-defines-for-_POLICY_FAILED-until-all-cod.patch
index cfea527e3d..85adfedc94 100644
--- a/target/linux/generic/pending-4.19/671-net-provide-defines-for-_POLICY_FAILED-until-all-cod.patch
+++ b/target/linux/generic/pending-4.19/671-net-provide-defines-for-_POLICY_FAILED-until-all-cod.patch
@@ -17,7 +17,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
 
 --- a/include/uapi/linux/fib_rules.h
 +++ b/include/uapi/linux/fib_rules.h
-@@ -80,6 +80,8 @@ enum {
+@@ -89,6 +89,8 @@ enum {
  	__FR_ACT_MAX,
  };
  
@@ -39,7 +39,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
   */
 --- a/include/uapi/linux/rtnetlink.h
 +++ b/include/uapi/linux/rtnetlink.h
-@@ -225,6 +225,8 @@ enum {
+@@ -232,6 +232,8 @@ enum {
  	__RTN_MAX
  };
  
diff --git a/target/linux/generic/pending-4.19/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/pending-4.19/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
index feeb7e70f8..18ff8df78d 100644
--- a/target/linux/generic/pending-4.19/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
+++ b/target/linux/generic/pending-4.19/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
@@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/include/linux/netdevice.h
 +++ b/include/linux/netdevice.h
-@@ -1763,6 +1763,8 @@ struct net_device {
+@@ -1876,6 +1876,8 @@ struct net_device {
  	struct netdev_hw_addr_list	mc;
  	struct netdev_hw_addr_list	dev_addrs;
  
@@ -22,9 +22,9 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #endif
 --- a/include/linux/skbuff.h
 +++ b/include/linux/skbuff.h
-@@ -782,6 +782,7 @@ struct sk_buff {
- 	__u8			tc_redirected:1;
- 	__u8			tc_from_ingress:1;
+@@ -799,6 +799,7 @@ struct sk_buff {
+ #ifdef CONFIG_TLS_DEVICE
+ 	__u8			decrypted:1;
  #endif
 +	__u8			gro_skip:1;
  
@@ -32,8 +32,8 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	__u16			tc_index;	/* traffic control index */
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -4805,6 +4805,9 @@ static enum gro_result dev_gro_receive(s
- 	enum gro_result ret;
+@@ -5447,6 +5447,9 @@ static enum gro_result dev_gro_receive(s
+ 	int same_flow;
  	int grow;
  
 +	if (skb->gro_skip)
@@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	if (netif_elide_gro(skb->dev))
  		goto normal;
  
-@@ -6275,6 +6278,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -6938,6 +6941,48 @@ static void __netdev_adjacent_dev_unlink
  					   &upper_dev->adj_list.lower);
  }
  
@@ -90,24 +90,24 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +
  static int __netdev_upper_dev_link(struct net_device *dev,
  				   struct net_device *upper_dev, bool master,
- 				   void *upper_priv, void *upper_info)
-@@ -6313,6 +6358,7 @@ static int __netdev_upper_dev_link(struc
+ 				   void *upper_priv, void *upper_info,
+@@ -6985,6 +7030,7 @@ static int __netdev_upper_dev_link(struc
  	if (ret)
  		return ret;
  
 +	netdev_update_addr_mask(dev);
- 	ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
+ 	ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
  					    &changeupper_info.info);
  	ret = notifier_to_errno(ret);
-@@ -6390,6 +6436,7 @@ void netdev_upper_dev_unlink(struct net_
+@@ -7071,6 +7117,7 @@ void netdev_upper_dev_unlink(struct net_
  
  	__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
  
 +	netdev_update_addr_mask(dev);
- 	call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
+ 	call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
  				      &changeupper_info.info);
  }
-@@ -6962,6 +7009,7 @@ int dev_set_mac_address(struct net_devic
+@@ -7694,6 +7741,7 @@ int dev_set_mac_address(struct net_devic
  	if (err)
  		return err;
  	dev->addr_assign_type = NET_ADDR_SET;
diff --git a/target/linux/generic/pending-4.19/681-NET-add-of_get_mac_address_mtd.patch b/target/linux/generic/pending-4.19/681-NET-add-of_get_mac_address_mtd.patch
index 2b89a05238..13f5640590 100644
--- a/target/linux/generic/pending-4.19/681-NET-add-of_get_mac_address_mtd.patch
+++ b/target/linux/generic/pending-4.19/681-NET-add-of_get_mac_address_mtd.patch
@@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/drivers/of/of_net.c
 +++ b/drivers/of/of_net.c
-@@ -10,6 +10,7 @@
+@@ -11,6 +11,7 @@
  #include <linux/of_net.h>
  #include <linux/phy.h>
  #include <linux/export.h>
@@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  /**
   * of_get_phy_mode - Get phy mode for given device_node
-@@ -38,7 +39,7 @@ int of_get_phy_mode(struct device_node *
+@@ -39,7 +40,7 @@ int of_get_phy_mode(struct device_node *
  }
  EXPORT_SYMBOL_GPL(of_get_phy_mode);
  
@@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  {
  	struct property *pp = of_find_property(np, name, NULL);
  
-@@ -47,6 +48,79 @@ static const void *of_get_mac_addr(struc
+@@ -48,6 +49,79 @@ static const void *of_get_mac_addr(struc
  	return NULL;
  }
  
@@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  /**
   * Search the device tree for the best MAC address to use.  'mac-address' is
   * checked first, because that is supposed to contain to "most recent" MAC
-@@ -64,11 +138,18 @@ static const void *of_get_mac_addr(struc
+@@ -65,11 +139,18 @@ static const void *of_get_mac_addr(struc
   * addresses.  Some older U-Boots only initialized 'local-mac-address'.  In
   * this case, the real MAC is in 'local-mac-address', and 'mac-address' exists
   * but is all zeros.
diff --git a/target/linux/generic/pending-4.19/701-phy_extension.patch b/target/linux/generic/pending-4.19/701-phy_extension.patch
index 0f0b0e0467..a340872e56 100644
--- a/target/linux/generic/pending-4.19/701-phy_extension.patch
+++ b/target/linux/generic/pending-4.19/701-phy_extension.patch
@@ -85,7 +85,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
   * @phydev: the phy_device struct
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -909,6 +909,7 @@ void phy_ethtool_ksettings_get(struct ph
+@@ -1045,6 +1045,7 @@ void phy_ethtool_ksettings_get(struct ph
  			       struct ethtool_link_ksettings *cmd);
  int phy_ethtool_ksettings_set(struct phy_device *phydev,
  			      const struct ethtool_link_ksettings *cmd);
diff --git a/target/linux/generic/pending-4.19/703-phy-add-detach-callback-to-struct-phy_driver.patch b/target/linux/generic/pending-4.19/703-phy-add-detach-callback-to-struct-phy_driver.patch
index 11436a2166..bc45d4ed68 100644
--- a/target/linux/generic/pending-4.19/703-phy-add-detach-callback-to-struct-phy_driver.patch
+++ b/target/linux/generic/pending-4.19/703-phy-add-detach-callback-to-struct-phy_driver.patch
@@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
 
 --- a/drivers/net/phy/phy_device.c
 +++ b/drivers/net/phy/phy_device.c
-@@ -1102,6 +1102,9 @@ void phy_detach(struct phy_device *phyde
+@@ -1133,6 +1133,9 @@ void phy_detach(struct phy_device *phyde
  	struct module *ndev_owner = dev->dev.parent->driver->owner;
  	struct mii_bus *bus;
  
@@ -23,7 +23,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  		sysfs_remove_link(&phydev->mdio.dev.kobj, "attached_dev");
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -559,6 +559,12 @@ struct phy_driver {
+@@ -560,6 +560,12 @@ struct phy_driver {
  	 */
  	int (*did_interrupt)(struct phy_device *phydev);
  
diff --git a/target/linux/generic/pending-4.19/734-net-phy-at803x-allow-to-configure-via-pdata.patch b/target/linux/generic/pending-4.19/734-net-phy-at803x-allow-to-configure-via-pdata.patch
index 27bbf572e9..e56e77addf 100644
--- a/target/linux/generic/pending-4.19/734-net-phy-at803x-allow-to-configure-via-pdata.patch
+++ b/target/linux/generic/pending-4.19/734-net-phy-at803x-allow-to-configure-via-pdata.patch
@@ -40,15 +40,15 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  #define AT803X_DEBUG_ADDR			0x1D
  #define AT803X_DEBUG_DATA			0x1E
  
-@@ -74,6 +81,7 @@ MODULE_LICENSE("GPL");
+@@ -73,6 +80,7 @@ MODULE_LICENSE("GPL");
+ 
  struct at803x_priv {
  	bool phy_reset:1;
- 	struct gpio_desc *gpiod_reset;
 +	int prev_speed;
  };
  
  struct at803x_context {
-@@ -274,8 +282,16 @@ does_not_require_reset_workaround:
+@@ -249,8 +257,16 @@ static int at803x_probe(struct phy_devic
  	return 0;
  }
  
@@ -65,7 +65,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  	int ret;
  
  	ret = genphy_config_init(phydev);
-@@ -296,6 +312,26 @@ static int at803x_config_init(struct phy
+@@ -271,6 +287,26 @@ static int at803x_config_init(struct phy
  			return ret;
  	}
  
@@ -92,7 +92,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  	return 0;
  }
  
-@@ -333,6 +369,8 @@ static int at803x_config_intr(struct phy
+@@ -308,6 +344,8 @@ static int at803x_config_intr(struct phy
  static void at803x_link_change_notify(struct phy_device *phydev)
  {
  	struct at803x_priv *priv = phydev->priv;
@@ -101,7 +101,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  
  	/*
  	 * Conduct a hardware reset for AT8030/2 every time a link loss is
-@@ -361,6 +399,24 @@ static void at803x_link_change_notify(st
+@@ -336,6 +374,24 @@ static void at803x_link_change_notify(st
  	} else {
  		priv->phy_reset = false;
  	}
diff --git a/target/linux/generic/pending-4.19/735-net-phy-at803x-fix-at8033-sgmii-mode.patch b/target/linux/generic/pending-4.19/735-net-phy-at803x-fix-at8033-sgmii-mode.patch
index 8c5c21b1bc..1f81b37f71 100644
--- a/target/linux/generic/pending-4.19/735-net-phy-at803x-fix-at8033-sgmii-mode.patch
+++ b/target/linux/generic/pending-4.19/735-net-phy-at803x-fix-at8033-sgmii-mode.patch
@@ -21,7 +21,7 @@ Signed-off-by: Roman Yeryomin <roman at advem.lv>
  
  #define AT803X_PCS_SMART_EEE_CTRL3			0x805D
  #define AT803X_SMART_EEE_CTRL3_LPI_TX_DELAY_SEL_MASK	0x3
-@@ -293,6 +294,27 @@ static int at803x_config_init(struct phy
+@@ -268,6 +269,27 @@ static int at803x_config_init(struct phy
  {
  	struct at803x_platform_data *pdata;
  	int ret;
diff --git a/target/linux/generic/pending-4.19/736-net-phy-at803x-allow-to-configure-via-dt.patch b/target/linux/generic/pending-4.19/736-net-phy-at803x-allow-to-configure-via-dt.patch
index 6bc626dd6a..496700f377 100644
--- a/target/linux/generic/pending-4.19/736-net-phy-at803x-allow-to-configure-via-dt.patch
+++ b/target/linux/generic/pending-4.19/736-net-phy-at803x-allow-to-configure-via-dt.patch
@@ -1,6 +1,6 @@
 --- a/drivers/net/phy/at803x.c
 +++ b/drivers/net/phy/at803x.c
-@@ -354,6 +354,14 @@ static int at803x_config_init(struct phy
+@@ -329,6 +329,14 @@ static int at803x_config_init(struct phy
  				AT803X_DEBUG_TX_CLK_DLY_EN, 0);
  	}
  
@@ -15,7 +15,7 @@
  	return 0;
  }
  
-@@ -392,6 +400,7 @@ static void at803x_link_change_notify(st
+@@ -367,6 +375,7 @@ static void at803x_link_change_notify(st
  {
  	struct at803x_priv *priv = phydev->priv;
  	struct at803x_platform_data *pdata;
@@ -23,7 +23,7 @@
  	pdata = dev_get_platdata(&phydev->mdio.dev);
  
  	/*
-@@ -421,8 +430,19 @@ static void at803x_link_change_notify(st
+@@ -396,8 +405,19 @@ static void at803x_link_change_notify(st
  	} else {
  		priv->phy_reset = false;
  	}
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 c80e58105d..3f452ebf48 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
@@ -9,7 +9,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
 
 --- a/drivers/pci/Kconfig
 +++ b/drivers/pci/Kconfig
-@@ -71,6 +71,12 @@ config XEN_PCIDEV_FRONTEND
+@@ -89,6 +89,13 @@ config XEN_PCIDEV_FRONTEND
            The PCI device frontend driver allows the kernel to import arbitrary
            PCI devices from a PCI backend to support PCI driver domains.
  
@@ -19,37 +19,39 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
 +	help
 +	  If you don't know what to do here, say N.
 +
- config HT_IRQ
- 	bool "Interrupts on hypertransport devices"
- 	default y
++
+ config PCI_ATS
+ 	bool
+ 
 --- a/drivers/pci/quirks.c
 +++ b/drivers/pci/quirks.c
-@@ -43,6 +43,7 @@ static void quirk_mmio_always_on(struct
+@@ -207,6 +207,7 @@ static void quirk_mmio_always_on(struct
  DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_ANY_ID, PCI_ANY_ID,
  				PCI_CLASS_BRIDGE_HOST, 8, quirk_mmio_always_on);
  
 +#ifndef CONFIG_PCI_DISABLE_COMMON_QUIRKS
- /* The Mellanox Tavor device gives false positive parity errors
-  * Mark this device with a broken_parity_status, to allow
-  * PCI scanning code to "skip" this now blacklisted device.
-@@ -3077,6 +3078,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
+ /*
+  * The Mellanox Tavor device gives false positive parity errors.  Mark this
+  * device with a broken_parity_status to allow PCI scanning code to "skip"
+@@ -3135,6 +3136,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);
  
 +#endif /* !CONFIG_PCI_DISABLE_COMMON_QUIRKS */
- 
++
  /*
-  * Ivytown NTB BAR sizes are misreported by the hardware due to an erratum.  To
-@@ -3133,6 +3135,8 @@ static void fixup_debug_report(struct pc
- 	}
- }
+  * 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
+@@ -3160,6 +3163,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);
  
 +#ifndef CONFIG_PCI_DISABLE_COMMON_QUIRKS
 +
  /*
-  * Some BIOS implementations leave the Intel GPU interrupts enabled,
-  * even though no one is handling them (f.e. i915 driver is never loaded).
-@@ -3171,6 +3175,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
+  * Some BIOS implementations leave the Intel GPU interrupts enabled, even
+  * though no one is handling them (e.g., if the i915 driver is never
+@@ -3198,6 +3203,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/generic/pending-4.19/811-pci_disable_usb_common_quirks.patch b/target/linux/generic/pending-4.19/811-pci_disable_usb_common_quirks.patch
index f40214c29b..7d36af7d26 100644
--- a/target/linux/generic/pending-4.19/811-pci_disable_usb_common_quirks.patch
+++ b/target/linux/generic/pending-4.19/811-pci_disable_usb_common_quirks.patch
@@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/drivers/usb/host/pci-quirks.c
 +++ b/drivers/usb/host/pci-quirks.c
-@@ -124,6 +124,8 @@ struct amd_chipset_type {
+@@ -125,6 +125,8 @@ struct amd_chipset_type {
  	u8 rev;
  };
  
@@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  static struct amd_chipset_info {
  	struct pci_dev	*nb_dev;
  	struct pci_dev	*smbus_dev;
-@@ -620,6 +622,10 @@ bool usb_amd_pt_check_port(struct device
+@@ -621,6 +623,10 @@ bool usb_amd_pt_check_port(struct device
  }
  EXPORT_SYMBOL_GPL(usb_amd_pt_check_port);
  
@@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  /*
   * Make sure the controller is completely inactive, unable to
   * generate interrupts or do DMA.
-@@ -699,8 +705,17 @@ reset_needed:
+@@ -700,8 +706,17 @@ reset_needed:
  	uhci_reset_hc(pdev, base);
  	return 1;
  }
@@ -48,10 +48,10 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  static inline int io_type_enabled(struct pci_dev *pdev, unsigned int mask)
  {
  	u16 cmd;
-@@ -1287,3 +1302,4 @@ bool usb_xhci_needs_pci_reset(struct pci
- 	return false;
+@@ -1268,3 +1283,4 @@ static void quirk_usb_early_handoff(stru
  }
- EXPORT_SYMBOL_GPL(usb_xhci_needs_pci_reset);
+ DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
+ 			PCI_CLASS_SERIAL_USB, 8, quirk_usb_early_handoff);
 +#endif
 --- a/drivers/usb/host/pci-quirks.h
 +++ b/drivers/usb/host/pci-quirks.h
@@ -65,7 +65,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  int usb_amd_find_chipset_info(void);
  int usb_hcd_amd_remote_wakeup_quirk(struct pci_dev *pdev);
  bool usb_amd_hang_symptom_quirk(void);
-@@ -20,6 +23,18 @@ bool usb_xhci_needs_pci_reset(struct pci
+@@ -19,6 +22,18 @@ void sb800_prefetch(struct device *dev,
  bool usb_amd_pt_check_port(struct device *device, int port);
  #else
  struct pci_dev;
@@ -84,7 +84,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  static inline void usb_amd_quirk_pll_disable(void) {}
  static inline void usb_amd_quirk_pll_enable(void) {}
  static inline void usb_asmedia_modifyflowcontrol(struct pci_dev *pdev) {}
-@@ -30,6 +45,11 @@ static inline bool usb_amd_pt_check_port
+@@ -29,6 +44,11 @@ static inline bool usb_amd_pt_check_port
  {
  	return false;
  }
@@ -98,7 +98,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #endif  /*  __LINUX_USB_PCI_QUIRKS_H  */
 --- a/include/linux/usb/hcd.h
 +++ b/include/linux/usb/hcd.h
-@@ -465,7 +465,14 @@ extern int usb_hcd_pci_probe(struct pci_
+@@ -473,7 +473,14 @@ extern int usb_hcd_pci_probe(struct pci_
  extern void usb_hcd_pci_remove(struct pci_dev *dev);
  extern void usb_hcd_pci_shutdown(struct pci_dev *dev);
  
diff --git a/target/linux/generic/pending-4.19/834-ledtrig-libata.patch b/target/linux/generic/pending-4.19/834-ledtrig-libata.patch
index 2eec024b72..d89bfec897 100644
--- a/target/linux/generic/pending-4.19/834-ledtrig-libata.patch
+++ b/target/linux/generic/pending-4.19/834-ledtrig-libata.patch
@@ -65,7 +65,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  /**
   *	ata_build_rw_tf - Build ATA taskfile for given read/write request
   *	@tf: Target ATA taskfile
-@@ -5120,6 +5133,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
+@@ -5129,6 +5142,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
  		if (tag < 0)
  			return NULL;
  	}
@@ -74,8 +74,8 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +#endif
  
  	qc = __ata_qc_from_tag(ap, tag);
- 	qc->tag = tag;
-@@ -6021,6 +6037,9 @@ struct ata_port *ata_port_alloc(struct a
+ 	qc->tag = qc->hw_tag = tag;
+@@ -6039,6 +6055,9 @@ struct ata_port *ata_port_alloc(struct a
  	ap->stats.unhandled_irq = 1;
  	ap->stats.idle_irq = 1;
  #endif
@@ -85,7 +85,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	ata_sff_port_init(ap);
  
  	return ap;
-@@ -6042,6 +6061,12 @@ static void ata_host_release(struct devi
+@@ -6074,6 +6093,12 @@ static void ata_host_release(struct kref
  
  		kfree(ap->pmp_link);
  		kfree(ap->slave_link);
@@ -98,7 +98,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		kfree(ap);
  		host->ports[i] = NULL;
  	}
-@@ -6488,7 +6513,23 @@ int ata_host_register(struct ata_host *h
+@@ -6537,7 +6562,23 @@ int ata_host_register(struct ata_host *h
  		host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
  		host->ports[i]->local_port_no = i + 1;
  	}
@@ -134,7 +134,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  
  /*
   * Define if arch has non-standard setup.  This is a _PCI_ standard
-@@ -890,6 +893,12 @@ struct ata_port {
+@@ -893,6 +896,12 @@ struct ata_port {
  #ifdef CONFIG_ATA_ACPI
  	struct ata_acpi_gtm	__acpi_init_gtm; /* use ata_acpi_init_gtm() */
  #endif
diff --git a/target/linux/generic/pending-4.19/920-mangle_bootargs.patch b/target/linux/generic/pending-4.19/920-mangle_bootargs.patch
index adeb9f12f9..85e6b97bb1 100644
--- a/target/linux/generic/pending-4.19/920-mangle_bootargs.patch
+++ b/target/linux/generic/pending-4.19/920-mangle_bootargs.patch
@@ -13,7 +13,7 @@ Signed-off-by: Imre Kaloz <kaloz at openwrt.org>
 
 --- a/init/Kconfig
 +++ b/init/Kconfig
-@@ -1427,6 +1427,15 @@ config EMBEDDED
+@@ -1522,6 +1522,15 @@ config EMBEDDED
  	  an embedded system so certain expert options are available
  	  for configuration.
  
@@ -31,7 +31,7 @@ Signed-off-by: Imre Kaloz <kaloz at openwrt.org>
  	help
 --- a/init/main.c
 +++ b/init/main.c
-@@ -359,6 +359,29 @@ static inline void setup_nr_cpu_ids(void
+@@ -366,6 +366,29 @@ static inline void setup_nr_cpu_ids(void
  static inline void smp_prepare_cpus(unsigned int maxcpus) { }
  #endif
  
@@ -61,7 +61,7 @@ Signed-off-by: Imre Kaloz <kaloz at openwrt.org>
  /*
   * We need to store the untouched command line for future reference.
   * We also need to store the touched command line since the parameter
-@@ -540,6 +563,7 @@ asmlinkage __visible void __init start_k
+@@ -558,6 +581,7 @@ asmlinkage __visible void __init start_k
  	add_device_randomness(command_line, strlen(command_line));
  	boot_init_stack_canary();
  	mm_init_cpumask(&init_mm);
diff --git a/target/linux/generic/pending-4.19/950-tty-serial-exar-generalize-rs485-setup.patch b/target/linux/generic/pending-4.19/950-tty-serial-exar-generalize-rs485-setup.patch
deleted file mode 100644
index 869bf7b9b2..0000000000
-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list