diff mbox series

[LEDE-DEV,05/25] kernel: generic: make patches apply on top of kernel 4.14

Message ID 20171210221231.17193-6-hauke@hauke-m.de
State Accepted
Delegated to: Hauke Mehrtens
Headers show
Series Add support for kernel 4.14 | expand

Commit Message

Hauke Mehrtens Dec. 10, 2017, 10:12 p.m. UTC
This modifies the patches in a way that they will apply on top of kernel
4.14 and also make them build with the x86 target. The configuration
which was copied from kernel 4.9 before is also modified in this patch.

In the configuration I deactivated some of the new possible security
features like:
CONFIG_REFCOUNT_FULL
CONFIG_SLAB_FREELIST_HARDENED
CONFIG_SOFTLOCKUP_DETECTOR
CONFIG_WARN_ALL_UNSEEDED_RANDOM

And these overlay FS options are also deactivated:
CONFIG_OVERLAY_FS_INDEX
CONFIG_OVERLAY_FS_REDIRECT_DIR

I activated this:
CONFIG_FORTIFY_SOURCE
CONFIG_POSIX_TIMERS
CONFIG_SLAB_MERGE_DEFAULT
CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED

I also deactivated CONFIG_USB_PCI, but I am not sure if this is correct.

I am not sure if I did the porting correct for the following patches:
target/linux/generic/backport-4.14/020-backport_netfilter_rtcache.patch
target/linux/generic/hack-4.14/220-gc_sections.patch
target/linux/generic/hack-4.14/321-powerpc_crtsavres_prereq.patch
target/linux/generic/pending-4.14/305-mips_module_reloc.patch
target/linux/generic/pending-4.14/611-netfilter_match_bypass_default_table.patch
target/linux/generic/pending-4.14/680-NET-skip-GRO-for-foreign-MAC-addresses.patch

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
---
 include/kernel-version.mk                          |    2 +
 ...t-hardcode-path-to-awk-in-scripts-ld-vers.patch |    5 +-
 .../backport-4.14/011-kbuild-export-SUBARCH.patch  |    6 +-
 .../020-backport_netfilter_rtcache.patch           |   53 +-
 .../021-bridge-multicast-to-unicast.patch          |  499 -------
 ...vm-version-of-alloc_etherdev_mqs-function.patch |   69 -
 ...Use-skb_cow_head-to-deal-with-cloned-skbs.patch |   40 -
 ...use-skb_cow_head-to-deal-with-cloned-skbs.patch |   36 -
 ...-use-skb_cow_head-to-deal-with-cloned-skb.patch |   35 -
 ...use-skb_cow_head-to-deal-with-cloned-skbs.patch |   37 -
 ...use-skb_cow_head-to-deal-with-cloned-skbs.patch |   38 -
 ...use-skb_cow_head-to-deal-with-cloned-skbs.patch |   38 -
 ...use-skb_cow_head-to-deal-with-cloned-skbs.patch |   43 -
 .../024-1-tcp-tsq-add-tsq_flags-tsq_enum.patch     |   90 --
 ...-remove-one-locked-operation-in-tcp_wfree.patch |   48 -
 ...-tcp-tsq-add-shortcut-in-tcp_tasklet_func.patch |   71 -
 ...4-4-tcp-tsq-avoid-one-atomic-in-tcp_wfree.patch |   38 -
 ...q-add-a-shortcut-in-tcp_small_queue_check.patch |   37 -
 ...tcp-tcp_mtu_probe-is-likely-to-exit-early.patch |   55 -
 ...nize-struct-sock-for-better-data-locality.patch |  157 ---
 ...tsq-move-tsq_flags-close-to-sk_wmem_alloc.patch |  176 ---
 ...add-a-missing-barrier-in-tcp_tasklet_func.patch |   40 -
 .../025-tcp-allow-drivers-to-tweak-TSQ-logic.patch |   10 +-
 ...softlimit-and-delta-fields-from-struct-ub.patch |   82 --
 ...irty_writeback_interval-value-for-wbuf-ti.patch |   66 -
 .../050-usb-dwc2-Remove-unnecessary-kfree.patch    |   24 -
 ...47xxsflash-use-platform_-set-get-_drvdata.patch |   63 -
 ...sflash-support-reading-flash-out-of-mappi.patch |   81 --
 ...part-move-TRX-parsing-code-to-separated-f.patch |  180 ---
 ...part-support-layouts-with-multiple-TRX-pa.patch |  112 --
 ...-add-Macronix-mx25u25635f-to-list-of-know.patch |   22 -
 ...0002-mtd-spi-nor-fix-spansion-quad-enable.patch |   42 -
 ...-0003-mtd-spi-nor-fix-flags-for-s25fl128s.patch |   28 -
 ...004-mtd-spi-nor-add-support-for-s25fl208k.patch |   23 -
 ...i-nor-Add-at25df321-spi-nor-flash-support.patch |   26 -
 ...0006-mtd-spi-nor-Add-support-for-N25Q016A.patch |   29 -
 ...-0007-mtd-spi-nor-Add-support-for-mr25h40.patch |   25 -
 ...-nor-Add-support-for-S3AN-spi-nor-devices.patch |  312 -----
 ...-mtd-spi-nor-improve-macronix_quad_enable.patch |   28 -
 ...-remove-WARN_ONCE-message-in-spi_nor_writ.patch |   33 -
 ...-rename-SPINOR_OP_-macros-of-the-4-byte-a.patch |  187 ---
 ...-add-a-stateless-method-to-support-memory.patch |  150 ---
 ...-nor-Add-lock-unlock-support-for-f25l32pa.patch |   26 -
 ...d-spi-nor-Fix-S3AN-addressing-calculation.patch |   35 -
 ...-0008-mtd-spi-nor-Add-support-for-gd25q16.patch |   28 -
 ...-enable-stateless-4b-op-codes-for-mx25u25.patch |   29 -
 ...001-mtd-introduce-function-max_bad_blocks.patch |   73 -
 ...tition-device-node-to-mtd-partition-devic.patch |   50 -
 ...-partitioning-on-devices-with-0-erasesize.patch |   77 --
 ...partitions-factor-out-code-calling-parser.patch |   68 -
 ...titions-add-helper-for-deleting-partition.patch |  119 --
 ...ons-remove-sysfs-files-when-deleting-all-.patch |   45 -
 ...ons-rename-master-to-the-parent-where-app.patch |  606 ---------
 ...-partitions-add-support-for-subpartitions.patch |   96 --
 ...titions-add-support-for-partition-parsers.patch |  110 --
 ...-TRX-parser-out-of-bcm47xxpart-into-a-sep.patch |  320 -----
 .../generic/backport-4.14/070-bcma-from-4.11.patch |   85 --
 ...llocate-struct-bgmac-just-once-don-t-copy.patch |  139 --
 ...rop-struct-bcma_mdio-we-don-t-need-anymor.patch |  261 ----
 ...ac-use-PHY-subsystem-for-initializing-PHY.patch |   53 -
 ...nable-master-mode-for-BCM54210E-and-B5021.patch |    2 +-
 .../generic/backport-4.14/072-bcma-from-4.12.patch |   47 -
 ...adcom-Update-Auxiliary-Control-Register-m.patch |   34 -
 ...et-phy-broadcom-Add-support-for-BCM54612E.patch |   94 --
 ...-net-phy-broadcom-add-bcm54xx_auxctl_read.patch |   41 -
 ...4-net-phy-broadcom-Add-BCM54810-PHY-entry.patch |  176 ---
 ...adcom-Move-bcm54xx_auxctl_-read-write-to-.patch |   74 -
 ...oadcom-Allow-enabling-or-disabling-of-EEE.patch |   87 --
 ...adcom-Add-support-code-for-reading-PHY-co.patch |  125 --
 ...003-net-phy-bcm7xxx-Add-entry-for-BCM7278.patch |   38 -
 ...m7xxx-Implement-EGPHY-workaround-for-7278.patch |   68 -
 ...adcom-use-auxctl-reading-helper-in-BCM546.patch |   45 -
 ...et-phy-broadcom-add-support-for-BCM54210E.patch |   89 --
 ...y-broadcom-rehook-BCM54612E-specific-init.patch |  121 --
 ...adcom-support-new-device-flag-for-setting.patch |    2 +-
 ...dd-OF-variants-of-LED-registering-functio.patch |  120 --
 ...se-OF-variant-of-LED-registering-function.patch |   60 -
 ...cm2835-add-thermal-driver-for-bcm2835-SoC.patch |  365 -----
 ...mal-broadcom-add-Northstar-thermal-driver.patch |  173 ---
 ...ad-USB-ports-from-DT-in-the-usbport-LED-t.patch |  106 --
 .../087-regmap-make-LZO-cache-optional.patch       |   69 -
 .../090-net-generalize-napi_complete_done.patch    | 1412 --------------------
 target/linux/generic/config-4.14                   |  277 +++-
 .../generic/files/drivers/net/phy/b53/b53_common.c |    1 +
 .../linux/generic/files/drivers/net/phy/rtl8306.c  |    3 +
 .../linux/generic/files/drivers/net/phy/swconfig.c |   36 +-
 .../generic/hack-4.14/202-reduce_module_size.patch |    2 +-
 .../linux/generic/hack-4.14/204-module_strip.patch |   35 +-
 .../generic/hack-4.14/207-disable-modorder.patch   |    8 +-
 .../hack-4.14/210-darwin_scripts_include.patch     |    6 +-
 .../hack-4.14/211-host_tools_portability.patch     |    6 +-
 .../hack-4.14/212-byteshift_portability.patch      |    4 +-
 .../hack-4.14/214-spidev_h_portability.patch       |    2 +-
 .../linux/generic/hack-4.14/220-gc_sections.patch  |  246 +---
 .../generic/hack-4.14/221-module_exports.patch     |   14 +-
 .../hack-4.14/230-openwrt_lzma_options.patch       |    6 +-
 .../generic/hack-4.14/250-netfilter_depends.patch  |    4 +-
 .../generic/hack-4.14/251-sound_kconfig.patch      |   20 +-
 .../generic/hack-4.14/259-regmap_dynamic.patch     |   17 +-
 .../hack-4.14/260-crypto_test_dependencies.patch   |   16 +-
 .../linux/generic/hack-4.14/280-rfkill-stubs.patch |   16 +-
 .../hack-4.14/301-mips_image_cmdline_hack.patch    |    2 +-
 .../hack-4.14/321-powerpc_crtsavres_prereq.patch   |   24 +-
 .../640-bridge-only-accept-EAP-locally.patch       |    2 +-
 .../hack-4.14/641-bridge_port_isolate.patch        |   26 +-
 .../hack-4.14/651-wireless_mesh_header.patch       |    2 +-
 .../generic/hack-4.14/660-fq_codel_defaults.patch  |    4 +-
 .../hack-4.14/661-use_fq_codel_by_default.patch    |   14 +-
 .../generic/hack-4.14/662-remove_pfifo_fast.patch  |    2 +-
 .../hack-4.14/700-swconfig_switch_drivers.patch    |   22 +-
 .../hack-4.14/702-phy_add_aneg_done_function.patch |    4 +-
 .../710-phy-add-mdio_register_board_info.patch     |  197 ---
 .../linux/generic/hack-4.14/721-phy_packets.patch  |   20 +-
 .../hack-4.14/773-bgmac-add-srab-switch.patch      |   28 +-
 .../generic/hack-4.14/835-misc-owl_loader.patch    |    2 +-
 .../generic/hack-4.14/901-debloat_sock_diag.patch  |   57 +-
 .../linux/generic/hack-4.14/902-debloat_proc.patch |   76 +-
 .../generic/hack-4.14/904-debloat_dma_buf.patch    |   12 +-
 .../generic/hack-4.14/910-kobject_uevent.patch     |    8 +-
 .../911-kobject_add_broadcast_uevent.patch         |    8 +-
 target/linux/generic/hack-4.14/930-crashlog.patch  |   16 +-
 ...MIPS-fix-cache-flushing-for-highmem-pages.patch |    2 +-
 .../pending-4.14/110-ehci_hcd_ignore_oc.patch      |    8 +-
 ...c_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch |    2 +-
 .../130-add-linux-spidev-compatible-si3210.patch   |    6 +-
 ...o_set_value_cansleep-for-setting-chipsele.patch |   10 +-
 ...-bridge_allow_receiption_on_disabled_port.patch |    4 +-
 ...t-add-generic-parsing-of-linux-part-probe.patch |   72 +-
 ...add-controllers-before-the-specified-head.patch |   30 -
 ...180-net-phy-at803x-add-support-for-AT8032.patch |   18 +-
 ...x-wrong-comment-related-to-link-detection.patch |    4 +-
 .../pending-4.14/201-extra_optimization.patch      |    8 +-
 .../pending-4.14/203-kallsyms_uncompressed.patch   |   16 +-
 .../pending-4.14/205-backtrace_module_info.patch   |    4 +-
 .../pending-4.14/206-mips-disable-vdso.patch       |    2 +-
 ...unsane-filenames-from-deps_initramfs-list.patch |   15 +-
 ...l.h-glibc-specific-inclusion-of-sysinfo.h.patch |    2 +-
 ...pi-libc-compat.h-do-not-rely-on-__GLIBC__.patch |   16 +-
 ...er.h-prevent-redefinition-of-struct-ethhd.patch |    8 +-
 .../pending-4.14/300-mips_expose_boot_raw.patch    |    4 +-
 .../pending-4.14/304-mips_disable_fpu.patch        |   12 +-
 .../pending-4.14/305-mips_module_reloc.patch       |   21 +-
 .../306-mips_mem_functions_performance.patch       |   12 +-
 .../generic/pending-4.14/308-mips32r2_tune.patch   |    4 +-
 .../310-arm_module_unresolved_weak_sym.patch       |    2 +-
 ...Accept-command-line-parameters-from-users.patch |   17 +-
 .../pending-4.14/332-arc-add-OWRTDTB-section.patch |    4 +-
 ...340-MIPS-mm-remove-mips_dma_mapping_error.patch |    8 +-
 ...m-remove-no-op-dma_map_ops-where-possible.patch |   24 +-
 .../400-mtd-add-rootfs-split-support.patch         |    6 +-
 ...port-for-different-partition-parser-types.patch |    2 +-
 ...mtd-parsers-for-rootfs-and-firmware-split.patch |    6 +-
 .../403-mtd-hook-mtdsplit-to-Kbuild.patch          |    2 +-
 .../404-mtd-add-more-helper-functions.patch        |    6 +-
 .../411-mtd-partial_eraseblock_write.patch         |    4 +-
 .../430-mtd-add-myloader-partition-parser.patch    |    2 +-
 .../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 |    2 +-
 ...-support-limiting-4K-sectors-support-base.patch |    8 +-
 .../477-mtd-add-spi-nor-add-mx25u3235f.patch       |    8 +-
 .../480-mtd-set-rootfs-to-be-root-dev.patch        |    6 +-
 ...tach-mtd-device-named-ubi-or-data-on-boot.patch |    6 +-
 ...bi-auto-create-ubiblock-device-for-rootfs.patch |    4 +-
 ...-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch |    2 +-
 .../494-mtd-ubi-add-EOF-marker-support.patch       |    2 +-
 .../530-jffs2_make_lzma_available.patch            |   10 +-
 ...1-ubifs-fix-default-compression-selection.patch |    2 +-
 .../600-netfilter_conntrack_flush.patch            |    6 +-
 ...610-netfilter_match_bypass_default_checks.patch |   22 +-
 .../611-netfilter_match_bypass_default_table.patch |   22 +-
 .../612-netfilter_match_reduce_memory_access.patch |    2 +-
 .../613-netfilter_optional_tcp_window_check.patch  |    4 +-
 .../pending-4.14/616-net_optimize_xfrm_calls.patch |    2 +-
 .../pending-4.14/630-packet_socket_type.patch      |   16 +-
 .../pending-4.14/655-increase_skb_pad.patch        |    2 +-
 .../666-Add-support-for-MAP-E-FMRs-mesh-mode.patch |   62 +-
 ...jecting-with-source-address-failed-policy.patch |   38 +-
 ...-defines-for-_POLICY_FAILED-until-all-cod.patch |    6 +-
 ...80-NET-skip-GRO-for-foreign-MAC-addresses.patch |   28 +-
 .../generic/pending-4.14/701-phy_extension.patch   |   29 +-
 ...-add-detach-callback-to-struct-phy_driver.patch |   12 +-
 ...t-phy-at803x-allow-to-configure-via-pdata.patch |   10 +-
 .../735-net-phy-at803x-fix-at8033-sgmii-mode.patch |    2 +-
 .../810-pci_disable_common_quirks.patch            |    8 +-
 .../811-pci_disable_usb_common_quirks.patch        |   21 +-
 ...b-Remove-annoying-warning-about-bogus-URB.patch |    4 +-
 .../generic/pending-4.14/831-ledtrig_netdev.patch  |    2 +-
 .../generic/pending-4.14/834-ledtrig-libata.patch  |   10 +-
 .../pending-4.14/890-uart_optional_sysrq.patch     |   40 -
 .../generic/pending-4.14/920-mangle_bootargs.patch |   10 +-
 191 files changed, 999 insertions(+), 9725 deletions(-)
 delete mode 100644 target/linux/generic/backport-4.14/021-bridge-multicast-to-unicast.patch
 delete mode 100644 target/linux/generic/backport-4.14/022-net-add-devm-version-of-alloc_etherdev_mqs-function.patch
 delete mode 100644 target/linux/generic/backport-4.14/023-1-smsc95xx-Use-skb_cow_head-to-deal-with-cloned-skbs.patch
 delete mode 100644 target/linux/generic/backport-4.14/023-2-smsc75xx-use-skb_cow_head-to-deal-with-cloned-skbs.patch
 delete mode 100644 target/linux/generic/backport-4.14/023-3-cx82310_eth-use-skb_cow_head-to-deal-with-cloned-skb.patch
 delete mode 100644 target/linux/generic/backport-4.14/023-4-sr9700-use-skb_cow_head-to-deal-with-cloned-skbs.patch
 delete mode 100644 target/linux/generic/backport-4.14/023-5-lan78xx-use-skb_cow_head-to-deal-with-cloned-skbs.patch
 delete mode 100644 target/linux/generic/backport-4.14/023-6-ch9200-use-skb_cow_head-to-deal-with-cloned-skbs.patch
 delete mode 100644 target/linux/generic/backport-4.14/023-7-kaweth-use-skb_cow_head-to-deal-with-cloned-skbs.patch
 delete mode 100644 target/linux/generic/backport-4.14/024-1-tcp-tsq-add-tsq_flags-tsq_enum.patch
 delete mode 100644 target/linux/generic/backport-4.14/024-2-tcp-tsq-remove-one-locked-operation-in-tcp_wfree.patch
 delete mode 100644 target/linux/generic/backport-4.14/024-3-tcp-tsq-add-shortcut-in-tcp_tasklet_func.patch
 delete mode 100644 target/linux/generic/backport-4.14/024-4-tcp-tsq-avoid-one-atomic-in-tcp_wfree.patch
 delete mode 100644 target/linux/generic/backport-4.14/024-5-tcp-tsq-add-a-shortcut-in-tcp_small_queue_check.patch
 delete mode 100644 target/linux/generic/backport-4.14/024-6-tcp-tcp_mtu_probe-is-likely-to-exit-early.patch
 delete mode 100644 target/linux/generic/backport-4.14/024-7-net-reorganize-struct-sock-for-better-data-locality.patch
 delete mode 100644 target/linux/generic/backport-4.14/024-8-tcp-tsq-move-tsq_flags-close-to-sk_wmem_alloc.patch
 delete mode 100644 target/linux/generic/backport-4.14/024-9-tcp-add-a-missing-barrier-in-tcp_tasklet_func.patch
 delete mode 100644 target/linux/generic/backport-4.14/030-01-ubifs-Drop-softlimit-and-delta-fields-from-struct-ub.patch
 delete mode 100644 target/linux/generic/backport-4.14/030-02-ubifs-Use-dirty_writeback_interval-value-for-wbuf-ti.patch
 delete mode 100644 target/linux/generic/backport-4.14/050-usb-dwc2-Remove-unnecessary-kfree.patch
 delete mode 100644 target/linux/generic/backport-4.14/060-0002-mtd-bcm47xxsflash-use-platform_-set-get-_drvdata.patch
 delete mode 100644 target/linux/generic/backport-4.14/060-0003-mtd-bcm47xxsflash-support-reading-flash-out-of-mappi.patch
 delete mode 100644 target/linux/generic/backport-4.14/060-0004-mtd-bcm47xxpart-move-TRX-parsing-code-to-separated-f.patch
 delete mode 100644 target/linux/generic/backport-4.14/060-0005-mtd-bcm47xxpart-support-layouts-with-multiple-TRX-pa.patch
 delete mode 100644 target/linux/generic/backport-4.14/061-v4.10-0001-mtd-spi-nor-add-Macronix-mx25u25635f-to-list-of-know.patch
 delete mode 100644 target/linux/generic/backport-4.14/061-v4.10-0002-mtd-spi-nor-fix-spansion-quad-enable.patch
 delete mode 100644 target/linux/generic/backport-4.14/061-v4.10-0003-mtd-spi-nor-fix-flags-for-s25fl128s.patch
 delete mode 100644 target/linux/generic/backport-4.14/061-v4.10-0004-mtd-spi-nor-add-support-for-s25fl208k.patch
 delete mode 100644 target/linux/generic/backport-4.14/061-v4.10-0005-mtd-spi-nor-Add-at25df321-spi-nor-flash-support.patch
 delete mode 100644 target/linux/generic/backport-4.14/061-v4.10-0006-mtd-spi-nor-Add-support-for-N25Q016A.patch
 delete mode 100644 target/linux/generic/backport-4.14/061-v4.10-0007-mtd-spi-nor-Add-support-for-mr25h40.patch
 delete mode 100644 target/linux/generic/backport-4.14/062-v4.11-0001-mtd-spi-nor-Add-support-for-S3AN-spi-nor-devices.patch
 delete mode 100644 target/linux/generic/backport-4.14/062-v4.11-0002-mtd-spi-nor-improve-macronix_quad_enable.patch
 delete mode 100644 target/linux/generic/backport-4.14/062-v4.11-0003-mtd-spi-nor-remove-WARN_ONCE-message-in-spi_nor_writ.patch
 delete mode 100644 target/linux/generic/backport-4.14/062-v4.11-0004-mtd-spi-nor-rename-SPINOR_OP_-macros-of-the-4-byte-a.patch
 delete mode 100644 target/linux/generic/backport-4.14/062-v4.11-0005-mtd-spi-nor-add-a-stateless-method-to-support-memory.patch
 delete mode 100644 target/linux/generic/backport-4.14/062-v4.11-0006-mtd-spi-nor-Add-lock-unlock-support-for-f25l32pa.patch
 delete mode 100644 target/linux/generic/backport-4.14/062-v4.11-0007-mtd-spi-nor-Fix-S3AN-addressing-calculation.patch
 delete mode 100644 target/linux/generic/backport-4.14/062-v4.11-0008-mtd-spi-nor-Add-support-for-gd25q16.patch
 delete mode 100644 target/linux/generic/backport-4.14/063-mtd-spi-nor-enable-stateless-4b-op-codes-for-mx25u25.patch
 delete mode 100644 target/linux/generic/backport-4.14/064-v4.11-0001-mtd-introduce-function-max_bad_blocks.patch
 delete mode 100644 target/linux/generic/backport-4.14/064-v4.11-0002-mtd-Add-partition-device-node-to-mtd-partition-devic.patch
 delete mode 100644 target/linux/generic/backport-4.14/065-v4.13-0001-mtd-handle-partitioning-on-devices-with-0-erasesize.patch
 delete mode 100644 target/linux/generic/backport-4.14/065-v4.13-0002-mtd-partitions-factor-out-code-calling-parser.patch
 delete mode 100644 target/linux/generic/backport-4.14/065-v4.13-0003-mtd-partitions-add-helper-for-deleting-partition.patch
 delete mode 100644 target/linux/generic/backport-4.14/065-v4.13-0004-mtd-partitions-remove-sysfs-files-when-deleting-all-.patch
 delete mode 100644 target/linux/generic/backport-4.14/065-v4.13-0005-mtd-partitions-rename-master-to-the-parent-where-app.patch
 delete mode 100644 target/linux/generic/backport-4.14/065-v4.13-0006-mtd-partitions-add-support-for-subpartitions.patch
 delete mode 100644 target/linux/generic/backport-4.14/065-v4.13-0007-mtd-partitions-add-support-for-partition-parsers.patch
 delete mode 100644 target/linux/generic/backport-4.14/065-v4.13-0008-mtd-extract-TRX-parser-out-of-bcm47xxpart-into-a-sep.patch
 delete mode 100644 target/linux/generic/backport-4.14/070-bcma-from-4.11.patch
 delete mode 100644 target/linux/generic/backport-4.14/071-v4.10-0001-net-bgmac-allocate-struct-bgmac-just-once-don-t-copy.patch
 delete mode 100644 target/linux/generic/backport-4.14/071-v4.10-0002-net-bgmac-drop-struct-bcma_mdio-we-don-t-need-anymor.patch
 delete mode 100644 target/linux/generic/backport-4.14/071-v4.10-0003-net-bgmac-use-PHY-subsystem-for-initializing-PHY.patch
 delete mode 100644 target/linux/generic/backport-4.14/072-bcma-from-4.12.patch
 delete mode 100644 target/linux/generic/backport-4.14/075-v4.10-0001-net-phy-broadcom-Update-Auxiliary-Control-Register-m.patch
 delete mode 100644 target/linux/generic/backport-4.14/075-v4.10-0002-net-phy-broadcom-Add-support-for-BCM54612E.patch
 delete mode 100644 target/linux/generic/backport-4.14/075-v4.10-0003-net-phy-broadcom-add-bcm54xx_auxctl_read.patch
 delete mode 100644 target/linux/generic/backport-4.14/075-v4.10-0004-net-phy-broadcom-Add-BCM54810-PHY-entry.patch
 delete mode 100644 target/linux/generic/backport-4.14/075-v4.10-0005-net-phy-broadcom-Move-bcm54xx_auxctl_-read-write-to-.patch
 delete mode 100644 target/linux/generic/backport-4.14/076-v4.11-0001-net-phy-broadcom-Allow-enabling-or-disabling-of-EEE.patch
 delete mode 100644 target/linux/generic/backport-4.14/076-v4.11-0002-net-phy-broadcom-Add-support-code-for-reading-PHY-co.patch
 delete mode 100644 target/linux/generic/backport-4.14/076-v4.11-0003-net-phy-bcm7xxx-Add-entry-for-BCM7278.patch
 delete mode 100644 target/linux/generic/backport-4.14/076-v4.11-0004-net-phy-bcm7xxx-Implement-EGPHY-workaround-for-7278.patch
 delete mode 100644 target/linux/generic/backport-4.14/076-v4.11-0005-net-phy-broadcom-use-auxctl-reading-helper-in-BCM546.patch
 delete mode 100644 target/linux/generic/backport-4.14/076-v4.11-0006-net-phy-broadcom-add-support-for-BCM54210E.patch
 delete mode 100644 target/linux/generic/backport-4.14/076-v4.11-0007-net-phy-broadcom-rehook-BCM54612E-specific-init.patch
 delete mode 100644 target/linux/generic/backport-4.14/080-0001-leds-core-add-OF-variants-of-LED-registering-functio.patch
 delete mode 100644 target/linux/generic/backport-4.14/080-0002-leds-gpio-use-OF-variant-of-LED-registering-function.patch
 delete mode 100644 target/linux/generic/backport-4.14/081-0001-thermal-bcm2835-add-thermal-driver-for-bcm2835-SoC.patch
 delete mode 100644 target/linux/generic/backport-4.14/081-0002-thermal-broadcom-add-Northstar-thermal-driver.patch
 delete mode 100644 target/linux/generic/backport-4.14/082-0001-usb-core-read-USB-ports-from-DT-in-the-usbport-LED-t.patch
 delete mode 100644 target/linux/generic/backport-4.14/087-regmap-make-LZO-cache-optional.patch
 delete mode 100644 target/linux/generic/backport-4.14/090-net-generalize-napi_complete_done.patch
 delete mode 100644 target/linux/generic/hack-4.14/710-phy-add-mdio_register_board_info.patch
 delete mode 100644 target/linux/generic/pending-4.14/170-MIPS-PCI-add-controllers-before-the-specified-head.patch
 delete mode 100644 target/linux/generic/pending-4.14/890-uart_optional_sysrq.patch

Comments

Andrey Jr. Melnikov Jan. 29, 2018, 7:47 p.m. UTC | #1
Hauke Mehrtens <hauke@hauke-m.de> wrote:
> This modifies the patches in a way that they will apply on top of kernel
> 4.14 and also make them build with the x86 target. The configuration
> which was copied from kernel 4.9 before is also modified in this patch.

[....]

> diff --git a/target/linux/generic/pending-4.14/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/pending-4.14/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
> index ad0fb5bdc5..4467975b92 100644
> --- a/target/linux/generic/pending-4.14/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
> +++ b/target/linux/generic/pending-4.14/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
> @@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
[...]

> -@@ -6009,6 +6054,8 @@ void netdev_upper_dev_unlink(struct net_
> -       list_for_each_entry(i, &upper_dev->all_adj_list.upper, list)
> -               __netdev_adjacent_dev_unlink(dev, i->dev, i->ref_nr);
> +@@ -6341,6 +6386,8 @@ void netdev_upper_dev_unlink(struct net_
> + 
> +       __netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
>   
>  +      netdev_update_addr_mask(dev);
>  +      netdev_update_addr_mask(dev);
>         call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
>                                       &changeupper_info.info);
>   }

Patch broken on rebase. In 4.4 - netdev_update_addr_mask(dev); present three
times and called before call_netdevice_notifiers_info(...). Now it called
twice in one place.

[...]
diff mbox series

Patch

diff --git a/include/kernel-version.mk b/include/kernel-version.mk
index f1fb66a36c..bcf92987a2 100644
--- a/include/kernel-version.mk
+++ b/include/kernel-version.mk
@@ -5,10 +5,12 @@  LINUX_RELEASE?=1
 LINUX_VERSION-3.18 = .71
 LINUX_VERSION-4.4 = .100
 LINUX_VERSION-4.9 = .67
+LINUX_VERSION-4.14 = .5
 
 LINUX_KERNEL_HASH-3.18.71 = 5abc9778ad44ce02ed6c8ab52ece8a21c6d20d21f6ed8a19287b4a38a50c1240
 LINUX_KERNEL_HASH-4.4.100 = 9936cd99c4bd35f6bc6962c9acdd1fa2ac8999e07a9be6a94a03b5492f1bd14f
 LINUX_KERNEL_HASH-4.9.67 = 7fbaa7dcc17877dfa0c96fb9a7d2f4ffed20ceeb13cbbeb18d77213c6cf75f7d
+LINUX_KERNEL_HASH-4.14.5 = d589a3bc033499d53d4ff2caae83ee6fd2b9c794c8c7632ae42b656d202975da
 
 ifdef KERNEL_PATCHVER
   LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
diff --git a/target/linux/generic/backport-4.14/010-Kbuild-don-t-hardcode-path-to-awk-in-scripts-ld-vers.patch b/target/linux/generic/backport-4.14/010-Kbuild-don-t-hardcode-path-to-awk-in-scripts-ld-vers.patch
index 1115ee1ba2..7ac4f9d240 100644
--- a/target/linux/generic/backport-4.14/010-Kbuild-don-t-hardcode-path-to-awk-in-scripts-ld-vers.patch
+++ b/target/linux/generic/backport-4.14/010-Kbuild-don-t-hardcode-path-to-awk-in-scripts-ld-vers.patch
@@ -14,15 +14,16 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/scripts/ld-version.sh
 +++ b/scripts/ld-version.sh
-@@ -1,5 +1,6 @@
+@@ -1,6 +1,7 @@
 -#!/usr/bin/awk -f
 +#!/bin/sh
+ # SPDX-License-Identifier: GPL-2.0
  # extract linker version number from stdin and turn into single number
 +exec awk '
  	{
  	gsub(".*\\)", "");
  	gsub(".*version ", "");
-@@ -8,3 +9,4 @@
+@@ -9,3 +10,4 @@
  	print a[1]*100000000 + a[2]*1000000 + a[3]*10000;
  	exit
  	}
diff --git a/target/linux/generic/backport-4.14/011-kbuild-export-SUBARCH.patch b/target/linux/generic/backport-4.14/011-kbuild-export-SUBARCH.patch
index d3d11e1044..8966586729 100644
--- a/target/linux/generic/backport-4.14/011-kbuild-export-SUBARCH.patch
+++ b/target/linux/generic/backport-4.14/011-kbuild-export-SUBARCH.patch
@@ -10,14 +10,14 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/Makefile
 +++ b/Makefile
-@@ -414,8 +414,8 @@ KERNELRELEASE = $(shell cat include/conf
+@@ -415,8 +415,8 @@ KERNELRELEASE = $(shell cat include/conf
  KERNELVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)
  
  export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION
 -export ARCH SRCARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC
--export CPP AR NM STRIP OBJCOPY OBJDUMP
+-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
++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
  
diff --git a/target/linux/generic/backport-4.14/020-backport_netfilter_rtcache.patch b/target/linux/generic/backport-4.14/020-backport_netfilter_rtcache.patch
index e7c9b4c702..8a6fba4307 100644
--- a/target/linux/generic/backport-4.14/020-backport_netfilter_rtcache.patch
+++ b/target/linux/generic/backport-4.14/020-backport_netfilter_rtcache.patch
@@ -1,4 +1,4 @@ 
-From c4d66e57455f5384128753674cc0f9e02db5e1f6 Mon Sep 17 00:00:00 2001
+From 1bb0c3ec899827cfa4668bb63a08713a40744d21 Mon Sep 17 00:00:00 2001
 From: Florian Westphal <fw@strlen.de>
 Date: Sun, 9 Jul 2017 08:58:30 +0200
 Subject: [PATCH] netfilter: conntrack: cache route for forwarded connections
@@ -30,14 +30,14 @@  Signed-off-by: Florian Westphal <fw@strlen.de>
  include/net/netfilter/nf_conntrack_rtcache.h |  34 +++
  net/netfilter/Kconfig                        |  12 +
  net/netfilter/Makefile                       |   3 +
- net/netfilter/nf_conntrack_rtcache.c         | 413 +++++++++++++++++++++++++++
- 5 files changed, 466 insertions(+)
+ net/netfilter/nf_conntrack_rtcache.c         | 428 +++++++++++++++++++++++++++
+ 5 files changed, 481 insertions(+)
  create mode 100644 include/net/netfilter/nf_conntrack_rtcache.h
  create mode 100644 net/netfilter/nf_conntrack_rtcache.c
 
 --- a/include/net/netfilter/nf_conntrack_extend.h
 +++ b/include/net/netfilter/nf_conntrack_extend.h
-@@ -27,6 +27,9 @@ enum nf_ct_ext_id {
+@@ -28,6 +28,9 @@ enum nf_ct_ext_id {
  #if IS_ENABLED(CONFIG_NETFILTER_SYNPROXY)
  	NF_CT_EXT_SYNPROXY,
  #endif
@@ -47,7 +47,7 @@  Signed-off-by: Florian Westphal <fw@strlen.de>
  	NF_CT_EXT_NUM,
  };
  
-@@ -39,6 +42,7 @@ enum nf_ct_ext_id {
+@@ -40,6 +43,7 @@ enum nf_ct_ext_id {
  #define NF_CT_EXT_TIMEOUT_TYPE struct nf_conn_timeout
  #define NF_CT_EXT_LABELS_TYPE struct nf_conn_labels
  #define NF_CT_EXT_SYNPROXY_TYPE struct nf_conn_synproxy
@@ -94,7 +94,7 @@  Signed-off-by: Florian Westphal <fw@strlen.de>
 +}
 --- a/net/netfilter/Kconfig
 +++ b/net/netfilter/Kconfig
-@@ -114,6 +114,18 @@ config NF_CONNTRACK_EVENTS
+@@ -118,6 +118,18 @@ config NF_CONNTRACK_EVENTS
  
  	  If unsure, say `N'.
  
@@ -115,19 +115,19 @@  Signed-off-by: Florian Westphal <fw@strlen.de>
  	depends on NETFILTER_ADVANCED
 --- a/net/netfilter/Makefile
 +++ b/net/netfilter/Makefile
-@@ -16,6 +16,9 @@ obj-$(CONFIG_NETFILTER_NETLINK_LOG) += n
+@@ -19,6 +19,9 @@ obj-$(CONFIG_NETFILTER_NETLINK_LOG) += n
  # connection tracking
  obj-$(CONFIG_NF_CONNTRACK) += nf_conntrack.o
  
 +# optional conntrack route cache extension
 +obj-$(CONFIG_NF_CONNTRACK_RTCACHE) += nf_conntrack_rtcache.o
 +
- # SCTP protocol connection tracking
- obj-$(CONFIG_NF_CT_PROTO_DCCP) += nf_conntrack_proto_dccp.o
  obj-$(CONFIG_NF_CT_PROTO_GRE) += nf_conntrack_proto_gre.o
+ 
+ # netlink interface for nf_conntrack
 --- /dev/null
 +++ b/net/netfilter/nf_conntrack_rtcache.c
-@@ -0,0 +1,413 @@
+@@ -0,0 +1,428 @@
 +/* route cache for netfilter.
 + *
 + * (C) 2014 Red Hat GmbH
@@ -193,8 +193,6 @@  Signed-off-by: Florian Westphal <fw@strlen.de>
 +
 +static struct nf_conn_rtcache *nf_ct_rtcache_find_usable(struct nf_conn *ct)
 +{
-+	if (nf_ct_is_untracked(ct))
-+		return NULL;
 +	return nf_ct_rtcache_find(ct);
 +}
 +
@@ -401,7 +399,7 @@  Signed-off-by: Florian Westphal <fw@strlen.de>
 +	struct net *net = dev_net(dev);
 +
 +	if (event == NETDEV_DOWN)
-+		nf_ct_iterate_cleanup(net, nf_rtcache_dst_remove, dev, 0, 0);
++		nf_ct_iterate_cleanup_net(net, nf_rtcache_dst_remove, dev, 0, 0);
 +
 +	return NOTIFY_DONE;
 +}
@@ -446,6 +444,16 @@  Signed-off-by: Florian Westphal <fw@strlen.de>
 +	.destroy = nf_conn_rtcache_destroy,
 +};
 +
++static void __net_exit rtcache_net_exit(struct net *net)
++{
++	/* remove hooks so no new connections get rtcache extension */
++	nf_unregister_net_hooks(net, rtcache_ops, ARRAY_SIZE(rtcache_ops));
++}
++
++static struct pernet_operations rtcache_ops_net_ops = {
++	.exit	= rtcache_net_exit,
++};
++
 +static int __init nf_conntrack_rtcache_init(void)
 +{
 +	int ret = nf_ct_extend_register(&rtcache_extend);
@@ -455,16 +463,26 @@  Signed-off-by: Florian Westphal <fw@strlen.de>
 +		return ret;
 +	}
 +
-+	ret = nf_register_hooks(rtcache_ops, ARRAY_SIZE(rtcache_ops));
++	ret = register_pernet_subsys(&rtcache_ops_net_ops);
++	if (ret) {
++		nf_ct_extend_unregister(&rtcache_extend);
++		return ret;
++	}
++
++	ret = nf_register_net_hooks(&init_net, rtcache_ops,
++				    ARRAY_SIZE(rtcache_ops));
 +	if (ret < 0) {
 +		nf_ct_extend_unregister(&rtcache_extend);
++		unregister_pernet_subsys(&rtcache_ops_net_ops);
 +		return ret;
 +	}
 +
 +	ret = register_netdevice_notifier(&nf_rtcache_notifier);
 +	if (ret) {
-+		nf_unregister_hooks(rtcache_ops, ARRAY_SIZE(rtcache_ops));
++		nf_unregister_net_hooks(&init_net, rtcache_ops,
++					ARRAY_SIZE(rtcache_ops));
 +		nf_ct_extend_unregister(&rtcache_extend);
++		unregister_pernet_subsys(&rtcache_ops_net_ops);
 +	}
 +
 +	return ret;
@@ -510,9 +528,6 @@  Signed-off-by: Florian Westphal <fw@strlen.de>
 +	struct net *net;
 +	int count = 0;
 +
-+	/* remove hooks so no new connections get rtcache extension */
-+	nf_unregister_hooks(rtcache_ops, ARRAY_SIZE(rtcache_ops));
-+
 +	synchronize_net();
 +
 +	unregister_netdevice_notifier(&nf_rtcache_notifier);
@@ -521,7 +536,7 @@  Signed-off-by: Florian Westphal <fw@strlen.de>
 +
 +	/* zap all conntracks with rtcache extension */
 +	for_each_net(net)
-+		nf_ct_iterate_cleanup(net, nf_rtcache_ext_remove, NULL, 0, 0);
++		nf_ct_iterate_cleanup_net(net, nf_rtcache_ext_remove, NULL, 0, 0);
 +
 +	for_each_net(net) {
 +		/* .. and make sure they're gone from dying list, too */
diff --git a/target/linux/generic/backport-4.14/021-bridge-multicast-to-unicast.patch b/target/linux/generic/backport-4.14/021-bridge-multicast-to-unicast.patch
deleted file mode 100644
index 1886b01cf1..0000000000
diff --git a/target/linux/generic/backport-4.14/022-net-add-devm-version-of-alloc_etherdev_mqs-function.patch b/target/linux/generic/backport-4.14/022-net-add-devm-version-of-alloc_etherdev_mqs-function.patch
deleted file mode 100644
index c5d65b7105..0000000000
diff --git a/target/linux/generic/backport-4.14/023-1-smsc95xx-Use-skb_cow_head-to-deal-with-cloned-skbs.patch b/target/linux/generic/backport-4.14/023-1-smsc95xx-Use-skb_cow_head-to-deal-with-cloned-skbs.patch
deleted file mode 100644
index cfc9abb3b7..0000000000
diff --git a/target/linux/generic/backport-4.14/023-2-smsc75xx-use-skb_cow_head-to-deal-with-cloned-skbs.patch b/target/linux/generic/backport-4.14/023-2-smsc75xx-use-skb_cow_head-to-deal-with-cloned-skbs.patch
deleted file mode 100644
index 99d98e101c..0000000000
diff --git a/target/linux/generic/backport-4.14/023-3-cx82310_eth-use-skb_cow_head-to-deal-with-cloned-skb.patch b/target/linux/generic/backport-4.14/023-3-cx82310_eth-use-skb_cow_head-to-deal-with-cloned-skb.patch
deleted file mode 100644
index aee8aa9805..0000000000
diff --git a/target/linux/generic/backport-4.14/023-4-sr9700-use-skb_cow_head-to-deal-with-cloned-skbs.patch b/target/linux/generic/backport-4.14/023-4-sr9700-use-skb_cow_head-to-deal-with-cloned-skbs.patch
deleted file mode 100644
index 4d0fcf6fc2..0000000000
diff --git a/target/linux/generic/backport-4.14/023-5-lan78xx-use-skb_cow_head-to-deal-with-cloned-skbs.patch b/target/linux/generic/backport-4.14/023-5-lan78xx-use-skb_cow_head-to-deal-with-cloned-skbs.patch
deleted file mode 100644
index ea8279940b..0000000000
diff --git a/target/linux/generic/backport-4.14/023-6-ch9200-use-skb_cow_head-to-deal-with-cloned-skbs.patch b/target/linux/generic/backport-4.14/023-6-ch9200-use-skb_cow_head-to-deal-with-cloned-skbs.patch
deleted file mode 100644
index 83de38bf8a..0000000000
diff --git a/target/linux/generic/backport-4.14/023-7-kaweth-use-skb_cow_head-to-deal-with-cloned-skbs.patch b/target/linux/generic/backport-4.14/023-7-kaweth-use-skb_cow_head-to-deal-with-cloned-skbs.patch
deleted file mode 100644
index 597f25b21d..0000000000
diff --git a/target/linux/generic/backport-4.14/024-1-tcp-tsq-add-tsq_flags-tsq_enum.patch b/target/linux/generic/backport-4.14/024-1-tcp-tsq-add-tsq_flags-tsq_enum.patch
deleted file mode 100644
index 20311498aa..0000000000
diff --git a/target/linux/generic/backport-4.14/024-2-tcp-tsq-remove-one-locked-operation-in-tcp_wfree.patch b/target/linux/generic/backport-4.14/024-2-tcp-tsq-remove-one-locked-operation-in-tcp_wfree.patch
deleted file mode 100644
index 914be607e7..0000000000
diff --git a/target/linux/generic/backport-4.14/024-3-tcp-tsq-add-shortcut-in-tcp_tasklet_func.patch b/target/linux/generic/backport-4.14/024-3-tcp-tsq-add-shortcut-in-tcp_tasklet_func.patch
deleted file mode 100644
index 249a2ce27e..0000000000
diff --git a/target/linux/generic/backport-4.14/024-4-tcp-tsq-avoid-one-atomic-in-tcp_wfree.patch b/target/linux/generic/backport-4.14/024-4-tcp-tsq-avoid-one-atomic-in-tcp_wfree.patch
deleted file mode 100644
index a25cdb5717..0000000000
diff --git a/target/linux/generic/backport-4.14/024-5-tcp-tsq-add-a-shortcut-in-tcp_small_queue_check.patch b/target/linux/generic/backport-4.14/024-5-tcp-tsq-add-a-shortcut-in-tcp_small_queue_check.patch
deleted file mode 100644
index 463b955341..0000000000
diff --git a/target/linux/generic/backport-4.14/024-6-tcp-tcp_mtu_probe-is-likely-to-exit-early.patch b/target/linux/generic/backport-4.14/024-6-tcp-tcp_mtu_probe-is-likely-to-exit-early.patch
deleted file mode 100644
index c5bb42d448..0000000000
diff --git a/target/linux/generic/backport-4.14/024-7-net-reorganize-struct-sock-for-better-data-locality.patch b/target/linux/generic/backport-4.14/024-7-net-reorganize-struct-sock-for-better-data-locality.patch
deleted file mode 100644
index e8c1915e18..0000000000
diff --git a/target/linux/generic/backport-4.14/024-8-tcp-tsq-move-tsq_flags-close-to-sk_wmem_alloc.patch b/target/linux/generic/backport-4.14/024-8-tcp-tsq-move-tsq_flags-close-to-sk_wmem_alloc.patch
deleted file mode 100644
index 0acd00817e..0000000000
diff --git a/target/linux/generic/backport-4.14/024-9-tcp-add-a-missing-barrier-in-tcp_tasklet_func.patch b/target/linux/generic/backport-4.14/024-9-tcp-add-a-missing-barrier-in-tcp_tasklet_func.patch
deleted file mode 100644
index d2b8de6a04..0000000000
diff --git a/target/linux/generic/backport-4.14/025-tcp-allow-drivers-to-tweak-TSQ-logic.patch b/target/linux/generic/backport-4.14/025-tcp-allow-drivers-to-tweak-TSQ-logic.patch
index d92ce07478..0c57f2e337 100644
--- a/target/linux/generic/backport-4.14/025-tcp-allow-drivers-to-tweak-TSQ-logic.patch
+++ b/target/linux/generic/backport-4.14/025-tcp-allow-drivers-to-tweak-TSQ-logic.patch
@@ -36,7 +36,7 @@  Cc: Kir Kolyshkin <kir@openvz.org>
 ---
 --- a/include/net/sock.h
 +++ b/include/net/sock.h
-@@ -260,6 +260,7 @@ struct sock_common {
+@@ -267,6 +267,7 @@ struct sock_common {
    *	@sk_gso_type: GSO type (e.g. %SKB_GSO_TCPV4)
    *	@sk_gso_max_size: Maximum GSO segment size to build
    *	@sk_gso_max_segs: Maximum number of GSO segments
@@ -44,7 +44,7 @@  Cc: Kir Kolyshkin <kir@openvz.org>
    *	@sk_lingertime: %SO_LINGER l_linger setting
    *	@sk_backlog: always used with the per-socket spinlock held
    *	@sk_callback_lock: used with the callbacks in the end of this struct
-@@ -421,6 +422,8 @@ struct sock {
+@@ -448,6 +449,8 @@ struct sock {
  	kmemcheck_bitfield_end(flags);
  
  	u16			sk_gso_max_segs;
@@ -55,7 +55,7 @@  Cc: Kir Kolyshkin <kir@openvz.org>
  	rwlock_t		sk_callback_lock;
 --- a/net/core/sock.c
 +++ b/net/core/sock.c
-@@ -2475,6 +2475,7 @@ void sock_init_data(struct socket *sock,
+@@ -2744,6 +2744,7 @@ void sock_init_data(struct socket *sock,
  
  	sk->sk_max_pacing_rate = ~0U;
  	sk->sk_pacing_rate = ~0U;
@@ -65,7 +65,7 @@  Cc: Kir Kolyshkin <kir@openvz.org>
  	 * Before updating sk_refcnt, we must commit prior changes to memory
 --- a/net/ipv4/tcp_output.c
 +++ b/net/ipv4/tcp_output.c
-@@ -1581,7 +1581,7 @@ u32 tcp_tso_autosize(const struct sock *
+@@ -1671,7 +1671,7 @@ u32 tcp_tso_autosize(const struct sock *
  {
  	u32 bytes, segs;
  
@@ -74,7 +74,7 @@  Cc: Kir Kolyshkin <kir@openvz.org>
  		    sk->sk_gso_max_size - 1 - MAX_TCP_HEADER);
  
  	/* Goal is to send at least one packet per ms,
-@@ -2084,7 +2084,7 @@ static bool tcp_small_queue_check(struct
+@@ -2145,7 +2145,7 @@ static bool tcp_small_queue_check(struct
  {
  	unsigned int limit;
  
diff --git a/target/linux/generic/backport-4.14/030-01-ubifs-Drop-softlimit-and-delta-fields-from-struct-ub.patch b/target/linux/generic/backport-4.14/030-01-ubifs-Drop-softlimit-and-delta-fields-from-struct-ub.patch
deleted file mode 100644
index 8e1f312a0b..0000000000
diff --git a/target/linux/generic/backport-4.14/030-02-ubifs-Use-dirty_writeback_interval-value-for-wbuf-ti.patch b/target/linux/generic/backport-4.14/030-02-ubifs-Use-dirty_writeback_interval-value-for-wbuf-ti.patch
deleted file mode 100644
index 96fa441132..0000000000
diff --git a/target/linux/generic/backport-4.14/050-usb-dwc2-Remove-unnecessary-kfree.patch b/target/linux/generic/backport-4.14/050-usb-dwc2-Remove-unnecessary-kfree.patch
deleted file mode 100644
index df3656dd55..0000000000
diff --git a/target/linux/generic/backport-4.14/060-0002-mtd-bcm47xxsflash-use-platform_-set-get-_drvdata.patch b/target/linux/generic/backport-4.14/060-0002-mtd-bcm47xxsflash-use-platform_-set-get-_drvdata.patch
deleted file mode 100644
index d975a26202..0000000000
diff --git a/target/linux/generic/backport-4.14/060-0003-mtd-bcm47xxsflash-support-reading-flash-out-of-mappi.patch b/target/linux/generic/backport-4.14/060-0003-mtd-bcm47xxsflash-support-reading-flash-out-of-mappi.patch
deleted file mode 100644
index ecdae2a871..0000000000
diff --git a/target/linux/generic/backport-4.14/060-0004-mtd-bcm47xxpart-move-TRX-parsing-code-to-separated-f.patch b/target/linux/generic/backport-4.14/060-0004-mtd-bcm47xxpart-move-TRX-parsing-code-to-separated-f.patch
deleted file mode 100644
index 999f544d3b..0000000000
diff --git a/target/linux/generic/backport-4.14/060-0005-mtd-bcm47xxpart-support-layouts-with-multiple-TRX-pa.patch b/target/linux/generic/backport-4.14/060-0005-mtd-bcm47xxpart-support-layouts-with-multiple-TRX-pa.patch
deleted file mode 100644
index bcefee8e87..0000000000
diff --git a/target/linux/generic/backport-4.14/061-v4.10-0001-mtd-spi-nor-add-Macronix-mx25u25635f-to-list-of-know.patch b/target/linux/generic/backport-4.14/061-v4.10-0001-mtd-spi-nor-add-Macronix-mx25u25635f-to-list-of-know.patch
deleted file mode 100644
index 54f950036b..0000000000
diff --git a/target/linux/generic/backport-4.14/061-v4.10-0002-mtd-spi-nor-fix-spansion-quad-enable.patch b/target/linux/generic/backport-4.14/061-v4.10-0002-mtd-spi-nor-fix-spansion-quad-enable.patch
deleted file mode 100644
index c5e29c7c1f..0000000000
diff --git a/target/linux/generic/backport-4.14/061-v4.10-0003-mtd-spi-nor-fix-flags-for-s25fl128s.patch b/target/linux/generic/backport-4.14/061-v4.10-0003-mtd-spi-nor-fix-flags-for-s25fl128s.patch
deleted file mode 100644
index 9c4e10d022..0000000000
diff --git a/target/linux/generic/backport-4.14/061-v4.10-0004-mtd-spi-nor-add-support-for-s25fl208k.patch b/target/linux/generic/backport-4.14/061-v4.10-0004-mtd-spi-nor-add-support-for-s25fl208k.patch
deleted file mode 100644
index 955e5bb2d4..0000000000
diff --git a/target/linux/generic/backport-4.14/061-v4.10-0005-mtd-spi-nor-Add-at25df321-spi-nor-flash-support.patch b/target/linux/generic/backport-4.14/061-v4.10-0005-mtd-spi-nor-Add-at25df321-spi-nor-flash-support.patch
deleted file mode 100644
index b97d8c7857..0000000000
diff --git a/target/linux/generic/backport-4.14/061-v4.10-0006-mtd-spi-nor-Add-support-for-N25Q016A.patch b/target/linux/generic/backport-4.14/061-v4.10-0006-mtd-spi-nor-Add-support-for-N25Q016A.patch
deleted file mode 100644
index b4e94543e5..0000000000
diff --git a/target/linux/generic/backport-4.14/061-v4.10-0007-mtd-spi-nor-Add-support-for-mr25h40.patch b/target/linux/generic/backport-4.14/061-v4.10-0007-mtd-spi-nor-Add-support-for-mr25h40.patch
deleted file mode 100644
index 3bae77db7c..0000000000
diff --git a/target/linux/generic/backport-4.14/062-v4.11-0001-mtd-spi-nor-Add-support-for-S3AN-spi-nor-devices.patch b/target/linux/generic/backport-4.14/062-v4.11-0001-mtd-spi-nor-Add-support-for-S3AN-spi-nor-devices.patch
deleted file mode 100644
index 87b83cc5dd..0000000000
diff --git a/target/linux/generic/backport-4.14/062-v4.11-0002-mtd-spi-nor-improve-macronix_quad_enable.patch b/target/linux/generic/backport-4.14/062-v4.11-0002-mtd-spi-nor-improve-macronix_quad_enable.patch
deleted file mode 100644
index bdd5e344d7..0000000000
diff --git a/target/linux/generic/backport-4.14/062-v4.11-0003-mtd-spi-nor-remove-WARN_ONCE-message-in-spi_nor_writ.patch b/target/linux/generic/backport-4.14/062-v4.11-0003-mtd-spi-nor-remove-WARN_ONCE-message-in-spi_nor_writ.patch
deleted file mode 100644
index 731ef21bb8..0000000000
diff --git a/target/linux/generic/backport-4.14/062-v4.11-0004-mtd-spi-nor-rename-SPINOR_OP_-macros-of-the-4-byte-a.patch b/target/linux/generic/backport-4.14/062-v4.11-0004-mtd-spi-nor-rename-SPINOR_OP_-macros-of-the-4-byte-a.patch
deleted file mode 100644
index d436789eb0..0000000000
diff --git a/target/linux/generic/backport-4.14/062-v4.11-0005-mtd-spi-nor-add-a-stateless-method-to-support-memory.patch b/target/linux/generic/backport-4.14/062-v4.11-0005-mtd-spi-nor-add-a-stateless-method-to-support-memory.patch
deleted file mode 100644
index dc05fe31bb..0000000000
diff --git a/target/linux/generic/backport-4.14/062-v4.11-0006-mtd-spi-nor-Add-lock-unlock-support-for-f25l32pa.patch b/target/linux/generic/backport-4.14/062-v4.11-0006-mtd-spi-nor-Add-lock-unlock-support-for-f25l32pa.patch
deleted file mode 100644
index be78682193..0000000000
diff --git a/target/linux/generic/backport-4.14/062-v4.11-0007-mtd-spi-nor-Fix-S3AN-addressing-calculation.patch b/target/linux/generic/backport-4.14/062-v4.11-0007-mtd-spi-nor-Fix-S3AN-addressing-calculation.patch
deleted file mode 100644
index f8d0541428..0000000000
diff --git a/target/linux/generic/backport-4.14/062-v4.11-0008-mtd-spi-nor-Add-support-for-gd25q16.patch b/target/linux/generic/backport-4.14/062-v4.11-0008-mtd-spi-nor-Add-support-for-gd25q16.patch
deleted file mode 100644
index 5253957286..0000000000
diff --git a/target/linux/generic/backport-4.14/063-mtd-spi-nor-enable-stateless-4b-op-codes-for-mx25u25.patch b/target/linux/generic/backport-4.14/063-mtd-spi-nor-enable-stateless-4b-op-codes-for-mx25u25.patch
deleted file mode 100644
index 339591500f..0000000000
diff --git a/target/linux/generic/backport-4.14/064-v4.11-0001-mtd-introduce-function-max_bad_blocks.patch b/target/linux/generic/backport-4.14/064-v4.11-0001-mtd-introduce-function-max_bad_blocks.patch
deleted file mode 100644
index d2e582ef5b..0000000000
diff --git a/target/linux/generic/backport-4.14/064-v4.11-0002-mtd-Add-partition-device-node-to-mtd-partition-devic.patch b/target/linux/generic/backport-4.14/064-v4.11-0002-mtd-Add-partition-device-node-to-mtd-partition-devic.patch
deleted file mode 100644
index ea68fc474f..0000000000
diff --git a/target/linux/generic/backport-4.14/065-v4.13-0001-mtd-handle-partitioning-on-devices-with-0-erasesize.patch b/target/linux/generic/backport-4.14/065-v4.13-0001-mtd-handle-partitioning-on-devices-with-0-erasesize.patch
deleted file mode 100644
index d912811850..0000000000
diff --git a/target/linux/generic/backport-4.14/065-v4.13-0002-mtd-partitions-factor-out-code-calling-parser.patch b/target/linux/generic/backport-4.14/065-v4.13-0002-mtd-partitions-factor-out-code-calling-parser.patch
deleted file mode 100644
index d312e081a9..0000000000
diff --git a/target/linux/generic/backport-4.14/065-v4.13-0003-mtd-partitions-add-helper-for-deleting-partition.patch b/target/linux/generic/backport-4.14/065-v4.13-0003-mtd-partitions-add-helper-for-deleting-partition.patch
deleted file mode 100644
index d93f4ba4b5..0000000000
diff --git a/target/linux/generic/backport-4.14/065-v4.13-0004-mtd-partitions-remove-sysfs-files-when-deleting-all-.patch b/target/linux/generic/backport-4.14/065-v4.13-0004-mtd-partitions-remove-sysfs-files-when-deleting-all-.patch
deleted file mode 100644
index 0f1b502b70..0000000000
diff --git a/target/linux/generic/backport-4.14/065-v4.13-0005-mtd-partitions-rename-master-to-the-parent-where-app.patch b/target/linux/generic/backport-4.14/065-v4.13-0005-mtd-partitions-rename-master-to-the-parent-where-app.patch
deleted file mode 100644
index 7951227654..0000000000
diff --git a/target/linux/generic/backport-4.14/065-v4.13-0006-mtd-partitions-add-support-for-subpartitions.patch b/target/linux/generic/backport-4.14/065-v4.13-0006-mtd-partitions-add-support-for-subpartitions.patch
deleted file mode 100644
index 0d3e10ac20..0000000000
diff --git a/target/linux/generic/backport-4.14/065-v4.13-0007-mtd-partitions-add-support-for-partition-parsers.patch b/target/linux/generic/backport-4.14/065-v4.13-0007-mtd-partitions-add-support-for-partition-parsers.patch
deleted file mode 100644
index a28ee316fa..0000000000
diff --git a/target/linux/generic/backport-4.14/065-v4.13-0008-mtd-extract-TRX-parser-out-of-bcm47xxpart-into-a-sep.patch b/target/linux/generic/backport-4.14/065-v4.13-0008-mtd-extract-TRX-parser-out-of-bcm47xxpart-into-a-sep.patch
deleted file mode 100644
index 3761a46610..0000000000
diff --git a/target/linux/generic/backport-4.14/070-bcma-from-4.11.patch b/target/linux/generic/backport-4.14/070-bcma-from-4.11.patch
deleted file mode 100644
index a3b0321986..0000000000
diff --git a/target/linux/generic/backport-4.14/071-v4.10-0001-net-bgmac-allocate-struct-bgmac-just-once-don-t-copy.patch b/target/linux/generic/backport-4.14/071-v4.10-0001-net-bgmac-allocate-struct-bgmac-just-once-don-t-copy.patch
deleted file mode 100644
index 37639faf17..0000000000
diff --git a/target/linux/generic/backport-4.14/071-v4.10-0002-net-bgmac-drop-struct-bcma_mdio-we-don-t-need-anymor.patch b/target/linux/generic/backport-4.14/071-v4.10-0002-net-bgmac-drop-struct-bcma_mdio-we-don-t-need-anymor.patch
deleted file mode 100644
index 7a6f3454d1..0000000000
diff --git a/target/linux/generic/backport-4.14/071-v4.10-0003-net-bgmac-use-PHY-subsystem-for-initializing-PHY.patch b/target/linux/generic/backport-4.14/071-v4.10-0003-net-bgmac-use-PHY-subsystem-for-initializing-PHY.patch
deleted file mode 100644
index d1be3e3f4c..0000000000
diff --git a/target/linux/generic/backport-4.14/071-v4.15-0001-net-bgmac-enable-master-mode-for-BCM54210E-and-B5021.patch b/target/linux/generic/backport-4.14/071-v4.15-0001-net-bgmac-enable-master-mode-for-BCM54210E-and-B5021.patch
index c371e6355a..db239e0a00 100644
--- a/target/linux/generic/backport-4.14/071-v4.15-0001-net-bgmac-enable-master-mode-for-BCM54210E-and-B5021.patch
+++ b/target/linux/generic/backport-4.14/071-v4.15-0001-net-bgmac-enable-master-mode-for-BCM54210E-and-B5021.patch
@@ -27,7 +27,7 @@  Signed-off-by: David S. Miller <davem@davemloft.net>
 
 --- a/drivers/net/ethernet/broadcom/bgmac-bcma.c
 +++ b/drivers/net/ethernet/broadcom/bgmac-bcma.c
-@@ -159,13 +159,19 @@ static int bgmac_probe(struct bcma_devic
+@@ -184,13 +184,19 @@ static int bgmac_probe(struct bcma_devic
  
  	if (!bgmac_is_bcm4707_family(core) &&
  	    !(ci->id == BCMA_CHIP_ID_BCM53573 && core->core_unit == 1)) {
diff --git a/target/linux/generic/backport-4.14/072-bcma-from-4.12.patch b/target/linux/generic/backport-4.14/072-bcma-from-4.12.patch
deleted file mode 100644
index 23f2656ab5..0000000000
diff --git a/target/linux/generic/backport-4.14/075-v4.10-0001-net-phy-broadcom-Update-Auxiliary-Control-Register-m.patch b/target/linux/generic/backport-4.14/075-v4.10-0001-net-phy-broadcom-Update-Auxiliary-Control-Register-m.patch
deleted file mode 100644
index 9279a7c84c..0000000000
diff --git a/target/linux/generic/backport-4.14/075-v4.10-0002-net-phy-broadcom-Add-support-for-BCM54612E.patch b/target/linux/generic/backport-4.14/075-v4.10-0002-net-phy-broadcom-Add-support-for-BCM54612E.patch
deleted file mode 100644
index 4caa7b193d..0000000000
diff --git a/target/linux/generic/backport-4.14/075-v4.10-0003-net-phy-broadcom-add-bcm54xx_auxctl_read.patch b/target/linux/generic/backport-4.14/075-v4.10-0003-net-phy-broadcom-add-bcm54xx_auxctl_read.patch
deleted file mode 100644
index c9b3b5911e..0000000000
diff --git a/target/linux/generic/backport-4.14/075-v4.10-0004-net-phy-broadcom-Add-BCM54810-PHY-entry.patch b/target/linux/generic/backport-4.14/075-v4.10-0004-net-phy-broadcom-Add-BCM54810-PHY-entry.patch
deleted file mode 100644
index 3d61ec6369..0000000000
diff --git a/target/linux/generic/backport-4.14/075-v4.10-0005-net-phy-broadcom-Move-bcm54xx_auxctl_-read-write-to-.patch b/target/linux/generic/backport-4.14/075-v4.10-0005-net-phy-broadcom-Move-bcm54xx_auxctl_-read-write-to-.patch
deleted file mode 100644
index 03013a0197..0000000000
diff --git a/target/linux/generic/backport-4.14/076-v4.11-0001-net-phy-broadcom-Allow-enabling-or-disabling-of-EEE.patch b/target/linux/generic/backport-4.14/076-v4.11-0001-net-phy-broadcom-Allow-enabling-or-disabling-of-EEE.patch
deleted file mode 100644
index 96fb3da5b0..0000000000
diff --git a/target/linux/generic/backport-4.14/076-v4.11-0002-net-phy-broadcom-Add-support-code-for-reading-PHY-co.patch b/target/linux/generic/backport-4.14/076-v4.11-0002-net-phy-broadcom-Add-support-code-for-reading-PHY-co.patch
deleted file mode 100644
index 1bdecf5729..0000000000
diff --git a/target/linux/generic/backport-4.14/076-v4.11-0003-net-phy-bcm7xxx-Add-entry-for-BCM7278.patch b/target/linux/generic/backport-4.14/076-v4.11-0003-net-phy-bcm7xxx-Add-entry-for-BCM7278.patch
deleted file mode 100644
index 8034f4b217..0000000000
diff --git a/target/linux/generic/backport-4.14/076-v4.11-0004-net-phy-bcm7xxx-Implement-EGPHY-workaround-for-7278.patch b/target/linux/generic/backport-4.14/076-v4.11-0004-net-phy-bcm7xxx-Implement-EGPHY-workaround-for-7278.patch
deleted file mode 100644
index 7aa4ee2c79..0000000000
diff --git a/target/linux/generic/backport-4.14/076-v4.11-0005-net-phy-broadcom-use-auxctl-reading-helper-in-BCM546.patch b/target/linux/generic/backport-4.14/076-v4.11-0005-net-phy-broadcom-use-auxctl-reading-helper-in-BCM546.patch
deleted file mode 100644
index 554e3117d8..0000000000
diff --git a/target/linux/generic/backport-4.14/076-v4.11-0006-net-phy-broadcom-add-support-for-BCM54210E.patch b/target/linux/generic/backport-4.14/076-v4.11-0006-net-phy-broadcom-add-support-for-BCM54210E.patch
deleted file mode 100644
index 5fa7e88c53..0000000000
diff --git a/target/linux/generic/backport-4.14/076-v4.11-0007-net-phy-broadcom-rehook-BCM54612E-specific-init.patch b/target/linux/generic/backport-4.14/076-v4.11-0007-net-phy-broadcom-rehook-BCM54612E-specific-init.patch
deleted file mode 100644
index b7326c3df4..0000000000
diff --git a/target/linux/generic/backport-4.14/076-v4.15-0001-net-phy-broadcom-support-new-device-flag-for-setting.patch b/target/linux/generic/backport-4.14/076-v4.15-0001-net-phy-broadcom-support-new-device-flag-for-setting.patch
index 334c444692..a22d272656 100644
--- a/target/linux/generic/backport-4.14/076-v4.15-0001-net-phy-broadcom-support-new-device-flag-for-setting.patch
+++ b/target/linux/generic/backport-4.14/076-v4.15-0001-net-phy-broadcom-support-new-device-flag-for-setting.patch
@@ -44,7 +44,7 @@  Signed-off-by: David S. Miller <davem@davemloft.net>
  
 --- a/include/linux/brcmphy.h
 +++ b/include/linux/brcmphy.h
-@@ -59,6 +59,7 @@
+@@ -64,6 +64,7 @@
  #define PHY_BRCM_EXT_IBND_TX_ENABLE	0x00002000
  #define PHY_BRCM_CLEAR_RGMII_MODE	0x00004000
  #define PHY_BRCM_DIS_TXCRXC_NOENRGY	0x00008000
diff --git a/target/linux/generic/backport-4.14/080-0001-leds-core-add-OF-variants-of-LED-registering-functio.patch b/target/linux/generic/backport-4.14/080-0001-leds-core-add-OF-variants-of-LED-registering-functio.patch
deleted file mode 100644
index 5b1b307aec..0000000000
diff --git a/target/linux/generic/backport-4.14/080-0002-leds-gpio-use-OF-variant-of-LED-registering-function.patch b/target/linux/generic/backport-4.14/080-0002-leds-gpio-use-OF-variant-of-LED-registering-function.patch
deleted file mode 100644
index 0247fffb2a..0000000000
diff --git a/target/linux/generic/backport-4.14/081-0001-thermal-bcm2835-add-thermal-driver-for-bcm2835-SoC.patch b/target/linux/generic/backport-4.14/081-0001-thermal-bcm2835-add-thermal-driver-for-bcm2835-SoC.patch
deleted file mode 100644
index d1ef21ed0a..0000000000
diff --git a/target/linux/generic/backport-4.14/081-0002-thermal-broadcom-add-Northstar-thermal-driver.patch b/target/linux/generic/backport-4.14/081-0002-thermal-broadcom-add-Northstar-thermal-driver.patch
deleted file mode 100644
index 8ba8cb57eb..0000000000
diff --git a/target/linux/generic/backport-4.14/082-0001-usb-core-read-USB-ports-from-DT-in-the-usbport-LED-t.patch b/target/linux/generic/backport-4.14/082-0001-usb-core-read-USB-ports-from-DT-in-the-usbport-LED-t.patch
deleted file mode 100644
index 65d17c8a9e..0000000000
diff --git a/target/linux/generic/backport-4.14/087-regmap-make-LZO-cache-optional.patch b/target/linux/generic/backport-4.14/087-regmap-make-LZO-cache-optional.patch
deleted file mode 100644
index c26994ee35..0000000000
diff --git a/target/linux/generic/backport-4.14/090-net-generalize-napi_complete_done.patch b/target/linux/generic/backport-4.14/090-net-generalize-napi_complete_done.patch
deleted file mode 100644
index d234651fdb..0000000000
diff --git a/target/linux/generic/config-4.14 b/target/linux/generic/config-4.14
index 998d60297d..060f643418 100644
--- a/target/linux/generic/config-4.14
+++ b/target/linux/generic/config-4.14
@@ -7,6 +7,7 @@  CONFIG_32BIT=y
 # CONFIG_9P_FS is not set
 # CONFIG_AB3100_CORE is not set
 # CONFIG_AB8500_CORE is not set
+# CONFIG_ABP060MG is not set
 # CONFIG_ABX500_CORE is not set
 # CONFIG_ACCESSIBILITY is not set
 # CONFIG_ACENIC is not set
@@ -54,6 +55,7 @@  CONFIG_32BIT=y
 # CONFIG_AD7476 is not set
 # CONFIG_AD7606 is not set
 # CONFIG_AD7746 is not set
+# CONFIG_AD7766 is not set
 # CONFIG_AD7780 is not set
 # CONFIG_AD7791 is not set
 # CONFIG_AD7793 is not set
@@ -92,6 +94,8 @@  CONFIG_32BIT=y
 # CONFIG_ADM8211 is not set
 # CONFIG_ADT7316 is not set
 CONFIG_ADVISE_SYSCALLS=y
+# CONFIG_ADXL345_I2C is not set
+# CONFIG_ADXL345_SPI is not set
 # CONFIG_ADXRS450 is not set
 CONFIG_AEABI=y
 # CONFIG_AFE4403 is not set
@@ -118,6 +122,7 @@  CONFIG_AIO=y
 # CONFIG_ALIM7101_WDT is not set
 CONFIG_ALLOW_DEV_COREDUMP=y
 # CONFIG_ALTERA_MBOX is not set
+# CONFIG_ALTERA_MSGDMA is not set
 # CONFIG_ALTERA_STAPL is not set
 # CONFIG_ALTERA_TSE is not set
 # CONFIG_ALX is not set
@@ -125,8 +130,10 @@  CONFIG_ALLOW_DEV_COREDUMP=y
 # CONFIG_AM335X_PHY_USB is not set
 # CONFIG_AMBA_PL08X is not set
 # CONFIG_AMD8111_ETH is not set
+# CONFIG_AMD_MEM_ENCRYPT is not set
 # CONFIG_AMD_PHY is not set
 # CONFIG_AMD_XGBE is not set
+# CONFIG_AMD_XGBE_HAVE_ECC is not set
 # CONFIG_AMIGA_PARTITION is not set
 # CONFIG_AMILO_RFKILL is not set
 # CONFIG_ANDROID is not set
@@ -137,12 +144,15 @@  CONFIG_ANON_INODES=y
 # CONFIG_APM8018X is not set
 # CONFIG_APM_EMULATION is not set
 # CONFIG_APPLE_GMUX is not set
+# CONFIG_APPLE_PROPERTIES is not set
 # CONFIG_APPLICOM is not set
 # CONFIG_AQUANTIA_PHY is not set
+# CONFIG_AQTION is not set
 # CONFIG_AR5523 is not set
 # CONFIG_AR7 is not set
 # CONFIG_AR8216_PHY is not set
 # CONFIG_AR8216_PHY_LEDS is not set
+# CONFIG_ARCH_ACTIONS is not set
 # CONFIG_ARCH_ALPINE is not set
 # CONFIG_ARCH_ARTPEC is not set
 # CONFIG_ARCH_ASPEED is not set
@@ -222,6 +232,7 @@  CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
 # CONFIG_ARCH_PXA is not set
 # CONFIG_ARCH_QCOM is not set
 # CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_REALTEK is not set
 # CONFIG_ARCH_RENESAS is not set
 # CONFIG_ARCH_ROCKCHIP is not set
 # CONFIG_ARCH_RPC is not set
@@ -241,6 +252,7 @@  CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
 # CONFIG_ARCH_TANGO is not set
 # CONFIG_ARCH_TEGRA is not set
 # CONFIG_ARCH_THUNDER is not set
+# CONFIG_ARCH_THUNDER2 is not set
 # CONFIG_ARCH_U300 is not set
 # CONFIG_ARCH_U8500 is not set
 # CONFIG_ARCH_UNIPHIER is not set
@@ -268,6 +280,8 @@  CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
 # CONFIG_ARM64_ERRATUM_834220 is not set
 # CONFIG_ARM64_ERRATUM_845719 is not set
 # CONFIG_ARM64_ERRATUM_843419 is not set
+# CONFIG_ARM64_ERRATUM_858921 is not set
+# CONFIG_ARM64_RELOC_TEST is not set
 # CONFIG_ARM_APPENDED_DTB is not set
 # CONFIG_ARM_ARCH_TIMER is not set
 # CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set
@@ -389,6 +403,8 @@  CONFIG_ATM_CLIP_NO_ICMP=y
 # CONFIG_AX25 is not set
 # CONFIG_AX25_DAMA_SLAVE is not set
 # CONFIG_AX88796 is not set
+# CONFIG_AXP20X_ADC is not set
+# CONFIG_AXP20X_POWER is not set
 # CONFIG_AXP288_ADC is not set
 # CONFIG_AXP288_FUEL_GAUGE is not set
 # CONFIG_B43 is not set
@@ -398,6 +414,7 @@  CONFIG_ATM_CLIP_NO_ICMP=y
 # CONFIG_BACKLIGHT_ADP8860 is not set
 # CONFIG_BACKLIGHT_ADP8870 is not set
 # CONFIG_BACKLIGHT_APPLE is not set
+# CONFIG_BACKLIGHT_ARCXCNN is not set
 # CONFIG_BACKLIGHT_BD6107 is not set
 # CONFIG_BACKLIGHT_GENERIC is not set
 # CONFIG_BACKLIGHT_GPIO is not set
@@ -421,8 +438,10 @@  CONFIG_BASE_SMALL=0
 # CONFIG_BATTERY_DS2782 is not set
 # CONFIG_BATTERY_GAUGE_LTC2941 is not set
 # CONFIG_BATTERY_GOLDFISH is not set
+# CONFIG_BATTERY_LEGO_EV3 is not set
 # CONFIG_BATTERY_MAX17040 is not set
 # CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1721X is not set
 # CONFIG_BATTERY_SBS is not set
 # CONFIG_BAYCOM_EPP is not set
 # CONFIG_BAYCOM_PAR is not set
@@ -461,6 +480,7 @@  CONFIG_BITREVERSE=y
 # CONFIG_BLK_CMDLINE_PARSER is not set
 # CONFIG_BLK_CPQ_CISS_DA is not set
 # CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_DEBUG_FS is not set
 CONFIG_BLK_DEV=y
 # CONFIG_BLK_DEV_3W_XXXX_RAID is not set
 # CONFIG_BLK_DEV_4DRIVES is not set
@@ -540,6 +560,9 @@  CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
 # CONFIG_BLK_DEV_UMC8672 is not set
 # CONFIG_BLK_DEV_UMEM is not set
 # CONFIG_BLK_DEV_VIA82CXXX is not set
+# CONFIG_BLK_DEV_ZONED is not set
+# CONFIG_BLK_SED_OPAL is not set
+# CONFIG_BLK_WBT is not set
 CONFIG_BLOCK=y
 # CONFIG_BMA180 is not set
 # CONFIG_BMA220 is not set
@@ -566,6 +589,7 @@  CONFIG_BOOKE_WDT_DEFAULT_TIMEOUT=3
 CONFIG_BOOT_RAW=y
 CONFIG_BPF=y
 # CONFIG_BPF_JIT is not set
+# CONFIG_BPF_STREAM_PARSER is not set
 CONFIG_BPF_SYSCALL=y
 # CONFIG_BPQETHER is not set
 CONFIG_BQL=y
@@ -644,6 +668,7 @@  CONFIG_BT_HCIUART_H4=y
 CONFIG_BT_RFCOMM_TTY=y
 # CONFIG_BT_SELFTEST is not set
 CONFIG_BUG=y
+# CONFIG_BUG_ON_DATA_CORRUPTION is not set
 CONFIG_BUILDTIME_EXTABLE_SORT=y
 # CONFIG_BUILD_BIN2C is not set
 # CONFIG_C2PORT is not set
@@ -656,14 +681,18 @@  CONFIG_CACHE_L2X0_PMU=y
 # CONFIG_CAN_DEV is not set
 # CONFIG_CAN_GS_USB is not set
 # CONFIG_CAN_GW is not set
+# CONFIG_CAN_HI311X is not set
 # CONFIG_CAN_IFI_CANFD is not set
+# CONFIG_CAN_MCBA_USB is not set
 # CONFIG_CAN_M_CAN is not set
+# CONFIG_CAN_PEAK_PCIEFD is not set
 # CONFIG_CAN_RAW is not set
 # CONFIG_CAN_RCAR is not set
 # CONFIG_CAN_RCAR_CANFD is not set
 # CONFIG_CAN_SLCAN is not set
 # CONFIG_CAN_SUN4I is not set
 # CONFIG_CAN_VCAN is not set
+# CONFIG_CAN_VXCAN is not set
 # CONFIG_CAPI_AVM is not set
 # CONFIG_CAPI_EICON is not set
 # CONFIG_CAPI_TRACE is not set
@@ -676,9 +705,11 @@  CONFIG_CARDBUS=y
 # CONFIG_CAVIUM_ERRATUM_23144 is not set
 # CONFIG_CAVIUM_ERRATUM_23154 is not set
 # CONFIG_CAVIUM_ERRATUM_27456 is not set
+# CONFIG_CAVIUM_ERRATUM_30115 is not set
 # CONFIG_CAVIUM_OCTEON_SOC is not set
 # CONFIG_CB710_CORE is not set
 # CONFIG_CC10001_ADC is not set
+# CONFIG_CCS811 is not set
 # CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 # CONFIG_CC_STACKPROTECTOR is not set
@@ -698,12 +729,15 @@  CONFIG_CC_STACKPROTECTOR_NONE=y
 # CONFIG_CHARGER_BQ24257 is not set
 # CONFIG_CHARGER_BQ24735 is not set
 # CONFIG_CHARGER_BQ25890 is not set
+# CONFIG_CHARGER_DETECTOR_MAX14656 is not set
 # CONFIG_CHARGER_GPIO is not set
 # CONFIG_CHARGER_ISP1704 is not set
 # CONFIG_CHARGER_LP8727 is not set
+# CONFIG_CHARGER_LTC3651 is not set
 # CONFIG_CHARGER_MANAGER is not set
 # CONFIG_CHARGER_MAX8903 is not set
 # CONFIG_CHARGER_RT9455 is not set
+# CONFIG_CHARGER_SBS is not set
 # CONFIG_CHARGER_SMB347 is not set
 # CONFIG_CHARGER_TWL4030 is not set
 # CONFIG_CHECKPOINT_RESTORE is not set
@@ -732,6 +766,7 @@  CONFIG_CIFS_STATS=y
 # CONFIG_CIO_DAC is not set
 # CONFIG_CLEANCACHE is not set
 # CONFIG_CLKSRC_VERSATILE is not set
+# CONFIG_CLK_HSDK is not set
 # CONFIG_CLK_QORIQ is not set
 # CONFIG_CLOCK_THERMAL is not set
 CONFIG_CLS_U32_MARK=y
@@ -739,6 +774,7 @@  CONFIG_CLS_U32_MARK=y
 # CONFIG_CM32181 is not set
 # CONFIG_CM3232 is not set
 # CONFIG_CM3323 is not set
+# CONFIG_CM3605 is not set
 # CONFIG_CM36651 is not set
 # CONFIG_CMA is not set
 CONFIG_CMDLINE=""
@@ -763,6 +799,7 @@  CONFIG_CMDLINE=""
 # CONFIG_COMMON_CLK_SI514 is not set
 # CONFIG_COMMON_CLK_SI5351 is not set
 # CONFIG_COMMON_CLK_SI570 is not set
+# CONFIG_COMMON_CLK_VC5 is not set
 # CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set
 # CONFIG_COMPACTION is not set
 # CONFIG_COMPAL_LAPTOP is not set
@@ -777,6 +814,7 @@  CONFIG_CONSTRUCTORS=y
 # CONFIG_COREDUMP is not set
 # CONFIG_CORESIGHT is not set
 # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+# CONFIG_CORTINA_PHY is not set
 # CONFIG_CPA_DEBUG is not set
 # CONFIG_CPU_DCACHE_DISABLE is not set
 # CONFIG_CPU_FREQ is not set
@@ -802,6 +840,7 @@  CONFIG_CRC32_SARWATE=y
 # CONFIG_CRC32_SELFTEST is not set
 # CONFIG_CRC32_SLICEBY4 is not set
 # CONFIG_CRC32_SLICEBY8 is not set
+# CONFIG_CRC4 is not set
 # CONFIG_CRC7 is not set
 # CONFIG_CRC8 is not set
 # CONFIG_CRC_CCITT is not set
@@ -817,6 +856,7 @@  CONFIG_CRYPTO_AES=y
 # CONFIG_CRYPTO_AES_ARM is not set
 # CONFIG_CRYPTO_AES_ARM_BS is not set
 # CONFIG_CRYPTO_AES_NI_INTEL is not set
+# CONFIG_CRYPTO_AES_TI is not set
 CONFIG_CRYPTO_ALGAPI=y
 CONFIG_CRYPTO_ALGAPI2=y
 # CONFIG_CRYPTO_ANSI_CPRNG is not set
@@ -847,12 +887,15 @@  CONFIG_CRYPTO_BLKCIPHER2=y
 # CONFIG_CRYPTO_DEV_ATMEL_SHA is not set
 # CONFIG_CRYPTO_DEV_ATMEL_TDES is not set
 # CONFIG_CRYPTO_DEV_CCP is not set
+# CONFIG_CRYPTO_DEV_CCREE is not set
 # 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_IMGTEC_HASH is not set
 # CONFIG_CRYPTO_DEV_MARVELL_CESA is not set
 # CONFIG_CRYPTO_DEV_MV_CESA is not set
 # CONFIG_CRYPTO_DEV_MXS_DCP is not set
+# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set
 # CONFIG_CRYPTO_DEV_QAT_C3XXX is not set
 # CONFIG_CRYPTO_DEV_QAT_C3XXXVF is not set
 # CONFIG_CRYPTO_DEV_QAT_C62X is not set
@@ -862,6 +905,7 @@  CONFIG_CRYPTO_BLKCIPHER2=y
 # CONFIG_CRYPTO_DEV_QCE is not set
 # CONFIG_CRYPTO_DEV_SAHARA is not set
 # CONFIG_CRYPTO_DEV_TALITOS is not set
+# CONFIG_CRYPTO_DEV_VIRTIO is not set
 # CONFIG_CRYPTO_DH is not set
 # CONFIG_CRYPTO_DRBG_CTR is not set
 # CONFIG_CRYPTO_DRBG_HASH is not set
@@ -938,8 +982,12 @@  CONFIG_CRYPTO_PCRYPT=y
 # CONFIG_CXL_BASE is not set
 # CONFIG_CXL_EEH is not set
 # CONFIG_CXL_KERNEL_API is not set
+# CONFIG_CXL_LIB is not set
 # CONFIG_CYPRESS_FIRMWARE is not set
+# CONFIG_DA280 is not set
+# CONFIG_DA311 is not set
 # CONFIG_DAVICOM_PHY is not set
+# CONFIG_DAX is not set
 # CONFIG_DCB is not set
 # CONFIG_DDR is not set
 # CONFIG_DEBUG_ATOMIC_SLEEP is not set
@@ -997,6 +1045,7 @@  CONFIG_DEBUG_KERNEL=y
 # CONFIG_DEBUG_TIMEKEEPING is not set
 # CONFIG_DEBUG_UART_8250_PALMCHIP is not set
 # CONFIG_DEBUG_UART_BCM63XX is not set
+# CONFIG_DEBUG_VIRTUAL is not set
 # CONFIG_DEBUG_VM is not set
 # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
 # CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
@@ -1014,6 +1063,7 @@  CONFIG_DEFAULT_SECURITY=""
 CONFIG_DEFAULT_SECURITY_DAC=y
 CONFIG_DEFAULT_TCP_CONG="cubic"
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+# CONFIG_DELL_LAPTOP is not set
 # CONFIG_DELL_RBTN is not set
 # CONFIG_DELL_SMO8800 is not set
 # CONFIG_DEPRECATED_PARAM_STRUCT is not set
@@ -1044,16 +1094,19 @@  CONFIG_DEVPORT=y
 # CONFIG_DMADEVICES_DEBUG is not set
 # CONFIG_DMARD06 is not set
 # CONFIG_DMARD09 is not set
+# CONFIG_DMARD10 is not set
 # CONFIG_DMASCC is not set
 # CONFIG_DMATEST is not set
 # CONFIG_DMA_API_DEBUG is not set
 # CONFIG_DMA_ENGINE is not set
+# CONFIG_DMA_FENCE_TRACE is not set
 # CONFIG_DMA_SHARED_BUFFER is not set
 # CONFIG_DM_CACHE is not set
 # CONFIG_DM_DEBUG is not set
 # CONFIG_DM_DELAY is not set
 # CONFIG_DM_ERA is not set
 # CONFIG_DM_FLAKEY is not set
+# CONFIG_DM_INTEGRITY is not set
 # CONFIG_DM_LOG_USERSPACE is not set
 # CONFIG_DM_LOG_WRITES is not set
 # CONFIG_DM_MQ_DEFAULT is not set
@@ -1070,6 +1123,7 @@  CONFIG_DEVPORT=y
 CONFIG_DOUBLEFAULT=y
 # CONFIG_DP83848_PHY is not set
 # CONFIG_DP83867_PHY is not set
+# CONFIG_DPOT_DAC is not set
 CONFIG_DQL=y
 # CONFIG_DRAGONRISE_FF is not set
 # CONFIG_DRM is not set
@@ -1088,6 +1142,7 @@  CONFIG_DQL=y
 # CONFIG_DRM_FSL_DCU is not set
 # CONFIG_DRM_HDLCD is not set
 # CONFIG_DRM_HISI_KIRIN is not set
+# CONFIG_DRM_HISI_HIBMC is not set
 # CONFIG_DRM_I2C_ADV7511 is not set
 # CONFIG_DRM_I2C_CH7006 is not set
 # CONFIG_DRM_I2C_NXP_TDA998X is not set
@@ -1113,8 +1168,10 @@  CONFIG_DQL=y
 # CONFIG_DRM_SII902X is not set
 # CONFIG_DRM_STI is not set
 # CONFIG_DRM_TILCDC is not set
+# CONFIG_DRM_TINYDRM is not set
 # CONFIG_DRM_TOSHIBA_TC358767 is not set
 # CONFIG_DRM_UDL is not set
+# CONFIG_DRM_VBOXVIDEO is not set
 # CONFIG_DRM_VGEM is not set
 # CONFIG_DS1682 is not set
 # CONFIG_DS1803 is not set
@@ -1129,6 +1186,7 @@  CONFIG_DUMMY_CONSOLE_ROWS=25
 # CONFIG_DVB_DUMMY_FE is not set
 # CONFIG_DVB_TUNER_DIB0070 is not set
 # CONFIG_DVB_TUNER_DIB0090 is not set
+# CONFIG_DWC_XLGMAC is not set
 # CONFIG_DWMAC_IPQ806X is not set
 # CONFIG_DWMAC_LPC18XX is not set
 # CONFIG_DWMAC_MESON is not set
@@ -1144,6 +1202,7 @@  CONFIG_DUMMY_CONSOLE_ROWS=25
 # CONFIG_E1000E is not set
 # CONFIG_E1000E_HWTS is not set
 # CONFIG_EARLY_PRINTK_8250 is not set
+# CONFIG_EARLY_PRINTK_USB_XDBC is not set
 # CONFIG_ECHO is not set
 # CONFIG_ECRYPT_FS is not set
 # CONFIG_EDAC is not set
@@ -1153,6 +1212,7 @@  CONFIG_DUMMY_CONSOLE_ROWS=25
 # CONFIG_EEPROM_AT24 is not set
 # CONFIG_EEPROM_AT25 is not set
 # CONFIG_EEPROM_DIGSY_MTC_CFG is not set
+# CONFIG_EEPROM_IDT_89HPESX is not set
 # CONFIG_EEPROM_LEGACY is not set
 # CONFIG_EEPROM_MAX6875 is not set
 # CONFIG_EFI is not set
@@ -1171,6 +1231,7 @@  CONFIG_ENABLE_WARN_DEPRECATED=y
 # CONFIG_ENCRYPTED_KEYS is not set
 # CONFIG_ENCX24J600 is not set
 # CONFIG_ENIC is not set
+# CONFIG_ENVELOPE_DETECTOR is not set
 # CONFIG_EPAPR_PARAVIRT is not set
 # CONFIG_EPIC100 is not set
 CONFIG_EPOLL=y
@@ -1194,6 +1255,7 @@  CONFIG_EXT4_USE_FOR_EXT2=y
 # CONFIG_EXTCON is not set
 # CONFIG_EXTCON_ADC_JACK is not set
 # CONFIG_EXTCON_GPIO is not set
+# CONFIG_EXTCON_INTEL_INT3496 is not set
 # CONFIG_EXTCON_QCOM_SPMI_MISC is not set
 # CONFIG_EXTCON_RT8973A is not set
 # CONFIG_EXTCON_SM5502 is not set
@@ -1318,6 +1380,7 @@  CONFIG_FLAT_NODE_MEM_MAP=y
 # CONFIG_FMC is not set
 # CONFIG_FORCEDETH is not set
 CONFIG_FORCE_MAX_ZONEORDER=11
+CONFIG_FORTIFY_SOURCE=y
 # CONFIG_FPGA is not set
 # CONFIG_FRAMEBUFFER_CONSOLE is not set
 # CONFIG_FRAME_POINTER is not set
@@ -1325,7 +1388,9 @@  CONFIG_FRAME_WARN=1024
 # CONFIG_FREEZER is not set
 # CONFIG_FRONTSWAP is not set
 # CONFIG_FSCACHE is not set
+# CONFIG_FSI is not set
 # CONFIG_FSL_EDMA is not set
+# CONFIG_FSL_ERRATUM_A008585 is not set
 # CONFIG_FSL_MC_BUS is not set
 # CONFIG_FSL_PQ_MDIO is not set
 # CONFIG_FSL_XGMAC_MDIO is not set
@@ -1366,6 +1431,7 @@  CONFIG_GACT_PROB=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
 # CONFIG_GENERIC_CPU_DEVICES is not set
 CONFIG_GENERIC_HWEIGHT=y
+# CONFIG_GENERIC_IRQ_DEBUGFS is not set
 CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_GENERIC_NET_UTILS=y
 # CONFIG_GENERIC_PHY is not set
@@ -1377,6 +1443,7 @@  CONFIG_GENERIC_NET_UTILS=y
 # CONFIG_GIGASET_DUMMYLL is not set
 # CONFIG_GLOB_SELFTEST is not set
 # CONFIG_GOLDFISH is not set
+# CONFIG_GOOGLE_FIRMWARE is not set
 # CONFIG_GP2AP020A00F is not set
 # CONFIG_GPIOLIB is not set
 # CONFIG_GPIO_74X164 is not set
@@ -1391,7 +1458,9 @@  CONFIG_GENERIC_NET_UTILS=y
 # CONFIG_GPIO_CS5535 is not set
 # CONFIG_GPIO_DWAPB is not set
 # CONFIG_GPIO_EM is not set
+# CONFIG_GPIO_EXAR is not set
 # CONFIG_GPIO_F7188X is not set
+# CONFIG_GPIO_FTGPIO010 is not set
 # CONFIG_GPIO_GENERIC_PLATFORM is not set
 # CONFIG_GPIO_GPIO_MM is not set
 # CONFIG_GPIO_GRGPIO is not set
@@ -1409,6 +1478,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_PCI_IDIO_16 is not set
 # CONFIG_GPIO_PISOSR is not set
 # CONFIG_GPIO_PL061 is not set
 # CONFIG_GPIO_RCAR is not set
@@ -1426,6 +1496,7 @@  CONFIG_GENERIC_NET_UTILS=y
 # CONFIG_GPIO_WS16C48 is not set
 # CONFIG_GPIO_XGENE is not set
 # CONFIG_GPIO_XILINX is not set
+# CONFIG_GPIO_XRA1403 is not set
 # CONFIG_GPIO_ZEVIO is not set
 # CONFIG_GPIO_ZX is not set
 # CONFIG_GREENASIA_FF is not set
@@ -1465,6 +1536,7 @@  CONFIG_HAVE_NMI=y
 # CONFIG_HDLC_PPP is not set
 # CONFIG_HDLC_RAW is not set
 # CONFIG_HDLC_RAW_ETH is not set
+# CONFIG_HDMI_LPE_AUDIO is not set
 # CONFIG_HDQ_MASTER_OMAP is not set
 # CONFIG_HEADERS_CHECK is not set
 # CONFIG_HERMES is not set
@@ -1477,11 +1549,13 @@  CONFIG_HAVE_NMI=y
 # CONFIG_HID is not set
 # CONFIG_HIDRAW is not set
 # CONFIG_HID_A4TECH is not set
+# CONFIG_HID_ACCUTOUCH is not set
 # CONFIG_HID_ACRUX is not set
 # CONFIG_HID_ACRUX_FF is not set
 # CONFIG_HID_ALPS is not set
 # CONFIG_HID_APPLE is not set
 # CONFIG_HID_APPLEIR is not set
+# CONFIG_HID_ASUS is not set
 # CONFIG_HID_AUREAL is not set
 # CONFIG_HID_BATTERY_STRENGTH is not set
 # CONFIG_HID_BELKIN is not set
@@ -1505,6 +1579,7 @@  CONFIG_HAVE_NMI=y
 # 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_KENSINGTON is not set
 # CONFIG_HID_KEYTOUCH is not set
 # CONFIG_HID_KYE is not set
@@ -1515,9 +1590,11 @@  CONFIG_HAVE_NMI=y
 # CONFIG_HID_LOGITECH_DJ is not set
 # CONFIG_HID_LOGITECH_HIDPP is not set
 # CONFIG_HID_MAGICMOUSE is not set
+# CONFIG_HID_MAYFLASH is not set
 # CONFIG_HID_MICROSOFT is not set
 # CONFIG_HID_MONTEREY is not set
 # CONFIG_HID_MULTITOUCH is not set
+# CONFIG_HID_NTI is not set
 # CONFIG_HID_NTRIG is not set
 # CONFIG_HID_ORTEK is not set
 # CONFIG_HID_PANTHERLORD is not set
@@ -1528,6 +1605,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_RETRODE is not set
 # CONFIG_HID_RMI is not set
 # CONFIG_HID_ROCCAT is not set
 # CONFIG_HID_SAITEK is not set
@@ -1544,6 +1622,7 @@  CONFIG_HAVE_NMI=y
 # CONFIG_HID_TOPSEED is not set
 # CONFIG_HID_TWINHAN is not set
 # CONFIG_HID_UCLOGIC is not set
+# CONFIG_HID_UDRAW_PS3 is not set
 # CONFIG_HID_WACOM is not set
 # CONFIG_HID_WALTOP is not set
 # CONFIG_HID_WIIMOTE is not set
@@ -1552,9 +1631,11 @@  CONFIG_HAVE_NMI=y
 # CONFIG_HID_ZYDACRON is not set
 # CONFIG_HIGHMEM is not set
 CONFIG_HIGH_RES_TIMERS=y
+# CONFIG_HINIC is not set
 # CONFIG_HIP04_ETH is not set
 # CONFIG_HIPPI is not set
 # CONFIG_HISI_FEMAC is not set
+# CONFIG_HISILICON_ERRATUM_161010101 is not set
 # CONFIG_HIX5HD2_GMAC is not set
 # CONFIG_HMC6352 is not set
 # CONFIG_HNS is not set
@@ -1579,6 +1660,7 @@  CONFIG_HPET_MMAP_DEFAULT=y
 # CONFIG_HTC_I2CPLD is not set
 # CONFIG_HTC_PASIC3 is not set
 # CONFIG_HTU21 is not set
+# CONFIG_HTS221 is not set
 # CONFIG_HUGETLB_PAGE is not set
 # CONFIG_HVC_DCC is not set
 # CONFIG_HVC_UDBG is not set
@@ -1586,6 +1668,7 @@  CONFIG_HPET_MMAP_DEFAULT=y
 # CONFIG_HWMON is not set
 # CONFIG_HWMON_DEBUG_CHIP is not set
 # CONFIG_HWMON_VID is not set
+# CONFIG_HWSPINLOCK is not set
 # CONFIG_HWSPINLOCK_OMAP is not set
 CONFIG_HW_PERF_EVENTS=y
 # CONFIG_HW_RANDOM is not set
@@ -1601,7 +1684,9 @@  CONFIG_HW_PERF_EVENTS=y
 # CONFIG_HW_RANDOM_TPM is not set
 # CONFIG_HW_RANDOM_VIA is not set
 # CONFIG_HW_RANDOM_VIRTIO is not set
+# CONFIG_HX711 is not set
 # CONFIG_HYPERV is not set
+# CONFIG_HYPERV_TSCPAGE is not set
 # CONFIG_HYSDN is not set
 CONFIG_HZ=100
 CONFIG_HZ_100=y
@@ -1651,9 +1736,13 @@  CONFIG_HZ_100=y
 # CONFIG_I2C_IMG is not set
 # CONFIG_I2C_ISCH is not set
 # CONFIG_I2C_ISMT is not set
+# CONFIG_I2C_MLXCPLD is not set
 # CONFIG_I2C_MPC is not set
 # CONFIG_I2C_MUX is not set
 # CONFIG_I2C_MUX_GPIO is not set
+# CONFIG_I2C_MUX_GPMUX is not set
+# CONFIG_I2C_MUX_LTC4306 is not set
+# CONFIG_I2C_MUX_MLXCPLD is not set
 # CONFIG_I2C_MUX_PCA9541 is not set
 # CONFIG_I2C_MUX_PCA954x is not set
 # CONFIG_I2C_MUX_PINCTRL is not set
@@ -1714,6 +1803,7 @@  CONFIG_HZ_100=y
 # CONFIG_IEEE802154 is not set
 # CONFIG_IEEE802154_ADF7242 is not set
 # CONFIG_IEEE802154_ATUSB is not set
+# CONFIG_IEEE802154_CA8210 is not set
 # CONFIG_IFB is not set
 # CONFIG_IGB is not set
 # CONFIG_IGBVF is not set
@@ -1722,11 +1812,13 @@  CONFIG_HZ_100=y
 # CONFIG_IIO_CONFIGFS is not set
 CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
 # CONFIG_IIO_INTERRUPT_TRIGGER is not set
+# CONFIG_IIO_MUX is not set
 # CONFIG_IIO_PERIODIC_RTC_TRIGGER 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
 # CONFIG_IIO_ST_GYRO_3AXIS is not set
+# CONFIG_IIO_ST_LSM6DSX is not set
 # CONFIG_IIO_ST_MAGN_3AXIS is not set
 # CONFIG_IIO_ST_PRESS is not set
 # CONFIG_IIO_SW_DEVICE is not set
@@ -1836,6 +1928,7 @@  CONFIG_INPUT_MISC=y
 # CONFIG_INPUT_POLLDEV is not set
 # CONFIG_INPUT_POWERMATE is not set
 # CONFIG_INPUT_PWM_BEEPER is not set
+# CONFIG_INPUT_PWM_VIBRA is not set
 # CONFIG_INPUT_REGULATOR_HAPTIC is not set
 # CONFIG_INPUT_SOC_BUTTON_ARRAY is not set
 # CONFIG_INPUT_SPARSEKMAP is not set
@@ -1849,6 +1942,7 @@  CONFIG_INPUT_MISC=y
 # CONFIG_INPUT_WISTRON_BTNS is not set
 # CONFIG_INPUT_YEALINK is not set
 # CONFIG_INT340X_THERMAL is not set
+# CONFIG_INTEL_CHT_INT33FE is not set
 # CONFIG_INTEL_HID_EVENT is not set
 # CONFIG_INTEL_IDLE is not set
 # CONFIG_INTEL_IDMA64 is not set
@@ -1874,6 +1968,7 @@  CONFIG_INPUT_MISC=y
 # CONFIG_INV_MPU6050_IIO is not set
 # CONFIG_INV_MPU6050_SPI is not set
 # CONFIG_IOMMU_SUPPORT is not set
+# CONFIG_IOSCHED_BFQ is not set
 # CONFIG_IOSCHED_CFQ is not set
 CONFIG_IOSCHED_DEADLINE=y
 CONFIG_IOSCHED_NOOP=y
@@ -1912,6 +2007,8 @@  CONFIG_IPV6_NDISC_NODETYPE=y
 # CONFIG_IPV6_OPTIMISTIC_DAD is not set
 # CONFIG_IPV6_ROUTER_PREF is not set
 # CONFIG_IPV6_ROUTE_INFO is not set
+# CONFIG_IPV6_SEG6_HMAC is not set
+# CONFIG_IPV6_SEG6_LWTUNNEL is not set
 # CONFIG_IPV6_SIT is not set
 # CONFIG_IPV6_SIT_6RD is not set
 # CONFIG_IPV6_TUNNEL is not set
@@ -1962,6 +2059,7 @@  CONFIG_IP_ROUTE_MULTIPATH=y
 CONFIG_IP_ROUTE_VERBOSE=y
 # CONFIG_IP_SCTP is not set
 # CONFIG_IP_SET is not set
+# CONFIG_IP_SET_HASH_IPMAC is not set
 # CONFIG_IP_VS is not set
 # CONFIG_IRDA is not set
 # CONFIG_IRQSOFF_TRACER is not set
@@ -2064,6 +2162,7 @@  CONFIG_KERNFS=y
 # CONFIG_KEYBOARD_ATKBD is not set
 # CONFIG_KEYBOARD_BCM is not set
 # CONFIG_KEYBOARD_CAP11XX is not set
+# CONFIG_KEYBOARD_DLINK_DIR685 is not set
 # CONFIG_KEYBOARD_GPIO is not set
 # CONFIG_KEYBOARD_GPIO_POLLED is not set
 # CONFIG_KEYBOARD_LKKBD is not set
@@ -2086,6 +2185,7 @@  CONFIG_KERNFS=y
 # CONFIG_KEYBOARD_SUNKBD is not set
 # CONFIG_KEYBOARD_TCA6416 is not set
 # CONFIG_KEYBOARD_TCA8418 is not set
+# CONFIG_KEYBOARD_TM2_TOUCHKEY is not set
 # CONFIG_KEYBOARD_TWL4030 is not set
 # CONFIG_KEYBOARD_XTKBD is not set
 # CONFIG_KEYS is not set
@@ -2132,10 +2232,12 @@  CONFIG_LBDAF=y
 # CONFIG_LCD_VGG2432A4 is not set
 # CONFIG_LDM_PARTITION is not set
 CONFIG_LD_DEAD_CODE_DATA_ELIMINATION=y
+# CONFIG_LED_TRIGGER_PHY is not set
 # CONFIG_LEDS_BCM6328 is not set
 # CONFIG_LEDS_BCM6358 is not set
 # CONFIG_LEDS_BD2802 is not set
 # CONFIG_LEDS_BLINKM is not set
+CONFIG_LEDS_BRIGHTNESS_HW_CHANGED=y
 CONFIG_LEDS_CLASS=y
 # CONFIG_LEDS_CLASS_FLASH is not set
 # CONFIG_LEDS_DAC124S085 is not set
@@ -2155,6 +2257,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_NIC78BX is not set
 # CONFIG_LEDS_NS2 is not set
 # CONFIG_LEDS_OT200 is not set
 # CONFIG_LEDS_PCA9532 is not set
@@ -2180,6 +2283,7 @@  CONFIG_LEDS_TRIGGER_NETDEV=y
 # CONFIG_LEDS_TRIGGER_PANIC is not set
 CONFIG_LEDS_TRIGGER_TIMER=y
 # CONFIG_LEDS_TRIGGER_TRANSIENT is not set
+# CONFIG_LEDS_USER is not set
 # CONFIG_LEGACY_PTYS is not set
 # CONFIG_LGUEST is not set
 # CONFIG_LIB80211 is not set
@@ -2197,11 +2301,13 @@  CONFIG_LEDS_TRIGGER_TIMER=y
 # CONFIG_LIBNVDIMM is not set
 # CONFIG_LIDAR_LITE_V2 is not set
 # CONFIG_LIQUIDIO is not set
+# CONFIG_LIQUIDIO_VF is not set
 # CONFIG_LIRC_STAGING is not set
 # CONFIG_LIS3L02DQ is not set
 # CONFIG_LKDTM is not set
 CONFIG_LLC=y
 # CONFIG_LLC2 is not set
+# CONFIG_LMP91000 is not set
 # CONFIG_LNET is not set
 CONFIG_LOCALVERSION=""
 # CONFIG_LOCALVERSION_AUTO is not set
@@ -2224,7 +2330,10 @@  CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
 # CONFIG_LPC_SCH is not set
 # CONFIG_LP_CONSOLE is not set
 # CONFIG_LSI_ET1011C_PHY is not set
+# CONFIG_LTC2471 is not set
 # CONFIG_LTC2485 is not set
+# CONFIG_LTC2497 is not set
+# CONFIG_LTC2632 is not set
 # CONFIG_LTE_GDM724X is not set
 # CONFIG_LTPC is not set
 # CONFIG_LTR501 is not set
@@ -2269,15 +2378,21 @@  CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1
 # CONFIG_MAILBOX is not set
 # CONFIG_MANDATORY_FILE_LOCKING is not set
 # CONFIG_MANGLE_BOOTARGS is not set
+# CONFIG_MARVELL_10G_PHY is not set
 # CONFIG_MARVELL_PHY is not set
 # CONFIG_MAX1027 is not set
+# CONFIG_MAX11100 is not set
+# CONFIG_MAX1118 is not set
 # CONFIG_MAX1363 is not set
 # CONFIG_MAX30100 is not set
+# CONFIG_MAX30102 is not set
 # CONFIG_MAX44000 is not set
 # CONFIG_MAX517 is not set
+# CONFIG_MAX5481 is not set
 # CONFIG_MAX5487 is not set
 # CONFIG_MAX5821 is not set
 # CONFIG_MAX63XX_WATCHDOG is not set
+# CONFIG_MAX9611 is not set
 # CONFIG_MAXIM_THERMOCOUPLE is not set
 CONFIG_MAY_USE_DEVLINK=y
 # CONFIG_MC3230 is not set
@@ -2290,6 +2405,7 @@  CONFIG_MAY_USE_DEVLINK=y
 # CONFIG_MCP4922 is not set
 # CONFIG_MCPM is not set
 # CONFIG_MD is not set
+# CONFIG_MDIO_DEVICE is not set
 # CONFIG_MDIO_BCM_UNIMAC is not set
 # CONFIG_MDIO_BITBANG is not set
 # CONFIG_MDIO_BUS_MUX_GPIO is not set
@@ -2301,6 +2417,7 @@  CONFIG_MAY_USE_DEVLINK=y
 # CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set
 # CONFIG_MEDIA_ATTACH is not set
 # CONFIG_MEDIA_CAMERA_SUPPORT is not set
+# CONFIG_MEDIA_CEC_SUPPORT is not set
 # CONFIG_MEDIA_CONTROLLER is not set
 # CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set
 # CONFIG_MEDIA_PCI_SUPPORT is not set
@@ -2336,7 +2453,9 @@  CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 # CONFIG_MFD_AXP20X is not set
 # CONFIG_MFD_AXP20X_I2C is not set
 # CONFIG_MFD_BCM590XX is not set
+# CONFIG_MFD_BD9571MWV is not set
 # CONFIG_MFD_CORE is not set
+# CONFIG_MFD_CPCAP is not set
 # CONFIG_MFD_CROS_EC is not set
 # CONFIG_MFD_CS5535 is not set
 # CONFIG_MFD_DA9052_I2C is not set
@@ -2348,6 +2467,7 @@  CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 # CONFIG_MFD_DLN2 is not set
 # CONFIG_MFD_EXYNOS_LPASS is not set
 # CONFIG_MFD_HI6421_PMIC is not set
+# CONFIG_MFD_INTEL_QUARK_I2C_GPIO is not set
 # CONFIG_MFD_JANZ_CMODIO is not set
 # CONFIG_MFD_KEMPLD is not set
 # CONFIG_MFD_LM3533 is not set
@@ -2371,6 +2491,7 @@  CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 # CONFIG_MFD_PALMAS is not set
 # CONFIG_MFD_PCF50633 is not set
 # CONFIG_MFD_PM8921_CORE is not set
+# CONFIG_MFD_PM8XXX is not set
 # CONFIG_MFD_RC5T583 is not set
 # CONFIG_MFD_RDC321X is not set
 # CONFIG_MFD_RETU is not set
@@ -2392,7 +2513,9 @@  CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 # CONFIG_MFD_TC6393XB is not set
 # CONFIG_MFD_TIMBERDALE is not set
 # CONFIG_MFD_TI_AM335X_TSCADC is not set
+# CONFIG_MFD_TI_LMU is not set
 # CONFIG_MFD_TI_LP873X is not set
+# CONFIG_MFD_TI_LP87565 is not set
 # CONFIG_MFD_TMIO is not set
 # CONFIG_MFD_TPS65086 is not set
 # CONFIG_MFD_TPS65090 is not set
@@ -2403,6 +2526,7 @@  CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 # CONFIG_MFD_TPS65912 is not set
 # CONFIG_MFD_TPS65912_I2C is not set
 # CONFIG_MFD_TPS65912_SPI is not set
+# CONFIG_MFD_TPS68470 is not set
 # CONFIG_MFD_TPS80031 is not set
 # CONFIG_MFD_VIPERBOARD is not set
 # CONFIG_MFD_VX855 is not set
@@ -2416,6 +2540,7 @@  CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 # CONFIG_MG_DISK is not set
 # CONFIG_MICREL_KS8995MA is not set
 # CONFIG_MICREL_PHY is not set
+# CONFIG_MICROCHIP_KSZ is not set
 # CONFIG_MICROCHIP_PHY is not set
 # CONFIG_MICROSEMI_PHY is not set
 # CONFIG_MIGRATION is not set
@@ -2448,7 +2573,10 @@  CONFIG_MISC_FILESYSTEMS=y
 # CONFIG_MLX4_EN is not set
 # CONFIG_MLX5_CORE is not set
 # CONFIG_MLX90614 is not set
+# CONFIG_MLXFW is not set
 # CONFIG_MLXSW_CORE is not set
+# CONFIG_MLX_CPLD_PLATFORM is not set
+# CONFIG_MLX_PLATFORM is not set
 # CONFIG_MMA7455_I2C is not set
 # CONFIG_MMA7455_SPI is not set
 # CONFIG_MMA7660 is not set
@@ -2471,6 +2599,7 @@  CONFIG_MMC_BLOCK_MINORS=8
 # CONFIG_MMC_SDHCI is not set
 # CONFIG_MMC_SDHCI_ACPI is not set
 # CONFIG_MMC_SDHCI_BCM_KONA is not set
+# CONFIG_MMC_SDHCI_CADENCE is not set
 # CONFIG_MMC_SDHCI_F_SDH30 is not set
 # CONFIG_MMC_SDHCI_IPROC is not set
 # CONFIG_MMC_SDHCI_MSM is not set
@@ -2480,6 +2609,7 @@  CONFIG_MMC_BLOCK_MINORS=8
 # CONFIG_MMC_SDHCI_OF_HLWD is not set
 # CONFIG_MMC_SDHCI_PXAV2 is not set
 # CONFIG_MMC_SDHCI_PXAV3 is not set
+# CONFIG_MMC_SDHCI_XENON is not set
 # CONFIG_MMC_SDRICOH_CS is not set
 # CONFIG_MMC_SPI is not set
 # CONFIG_MMC_TEST is not set
@@ -2515,6 +2645,9 @@  CONFIG_MODULE_UNLOAD=y
 # CONFIG_MPL115_SPI is not set
 # CONFIG_MPL3115 is not set
 # CONFIG_MPLS is not set
+# CONFIG_MPU3050_I2C is not set
+# CONFIG_MQ_IOSCHED_DEADLINE is not set
+# CONFIG_MQ_IOSCHED_KYBER is not set
 # CONFIG_MS5611 is not set
 # CONFIG_MS5637 is not set
 # CONFIG_MSDOS_FS is not set
@@ -2559,6 +2692,7 @@  CONFIG_MTD_MAP_BANK_WIDTH_2=y
 # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
 CONFIG_MTD_MAP_BANK_WIDTH_4=y
 # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MCHP23K256 is not set
 # CONFIG_MTD_MT81xx_NOR is not set
 # CONFIG_MTD_MTDRAM is not set
 # CONFIG_MTD_MYLOADER_PARTS is not set
@@ -2625,6 +2759,7 @@  CONFIG_MTD_OF_PARTS=y
 # CONFIG_MTD_PHYSMAP is not set
 # CONFIG_MTD_PHYSMAP_COMPAT is not set
 CONFIG_MTD_PHYSMAP_OF=y
+# CONFIG_MTD_PHYSMAP_OF_GEMINI is not set
 # CONFIG_MTD_PHYSMAP_OF_VERSATILE is not set
 # CONFIG_MTD_PLATRAM is not set
 # CONFIG_MTD_PMC551 is not set
@@ -2784,6 +2919,7 @@  CONFIG_NETWORK_FILESYSTEMS=y
 # CONFIG_NET_ACT_NAT is not set
 # CONFIG_NET_ACT_PEDIT is not set
 # CONFIG_NET_ACT_POLICE is not set
+# CONFIG_NET_ACT_SAMPLE is not set
 # CONFIG_NET_ACT_SIMP is not set
 # CONFIG_NET_ACT_SKBEDIT is not set
 # CONFIG_NET_ACT_SKBMOD is not set
@@ -2810,6 +2946,8 @@  CONFIG_NET_CORE=y
 # CONFIG_NET_DROP_MONITOR is not set
 # CONFIG_NET_DSA is not set
 # CONFIG_NET_DSA_BCM_SF2 is not set
+# CONFIG_NET_DSA_LOOP is not set
+# CONFIG_NET_DSA_MT7530 is not set
 # CONFIG_NET_DSA_MV88E6060 is not set
 # CONFIG_NET_DSA_MV88E6123_61_65 is not set
 # CONFIG_NET_DSA_MV88E6131 is not set
@@ -2818,6 +2956,7 @@  CONFIG_NET_CORE=y
 # CONFIG_NET_DSA_MV88E6XXX is not set
 # CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set
 # CONFIG_NET_DSA_QCA8K is not set
+# CONFIG_NET_DSA_SMSC_LAN9303_MDIO is not set
 # CONFIG_NET_DSA_TAG_DSA is not set
 # CONFIG_NET_DSA_TAG_EDSA is not set
 # CONFIG_NET_EMATCH is not set
@@ -2831,6 +2970,7 @@  CONFIG_NET_EMATCH_STACK=32
 # CONFIG_NET_FC is not set
 # CONFIG_NET_FOU is not set
 # CONFIG_NET_FOU_IP_TUNNELS is not set
+# CONFIG_NET_IFE is not set
 # CONFIG_NET_IPGRE is not set
 CONFIG_NET_IPGRE_BROADCAST=y
 # CONFIG_NET_IPGRE_DEMUX is not set
@@ -2842,6 +2982,7 @@  CONFIG_NET_IPGRE_BROADCAST=y
 # CONFIG_NET_L3_MASTER_DEV is not set
 # CONFIG_NET_MPLS_GSO is not set
 # CONFIG_NET_NCSI is not set
+# CONFIG_NET_NSH is not set
 # CONFIG_NET_PACKET_ENGINE is not set
 # CONFIG_NET_PKTGEN is not set
 # CONFIG_NET_POLL_CONTROLLER is not set
@@ -2853,6 +2994,7 @@  CONFIG_NET_SCHED=y
 # CONFIG_NET_SCH_CBQ 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_FIFO=y
@@ -2885,9 +3027,11 @@  CONFIG_NET_VENDOR_3COM=y
 CONFIG_NET_VENDOR_8390=y
 CONFIG_NET_VENDOR_ADAPTEC=y
 CONFIG_NET_VENDOR_AGERE=y
+CONFIG_NET_VENDOR_ALACRITECH=y
 CONFIG_NET_VENDOR_ALTEON=y
 CONFIG_NET_VENDOR_AMAZON=y
 CONFIG_NET_VENDOR_AMD=y
+CONFIG_NET_VENDOR_AQUANTIA=y
 CONFIG_NET_VENDOR_ARC=y
 CONFIG_NET_VENDOR_ATHEROS=y
 CONFIG_NET_VENDOR_AURORA=y
@@ -2907,6 +3051,7 @@  CONFIG_NET_VENDOR_FREESCALE=y
 CONFIG_NET_VENDOR_FUJITSU=y
 CONFIG_NET_VENDOR_HISILICON=y
 CONFIG_NET_VENDOR_HP=y
+CONFIG_NET_VENDOR_HUAWEI=y
 CONFIG_NET_VENDOR_I825XX=y
 CONFIG_NET_VENDOR_IBM=y
 CONFIG_NET_VENDOR_INTEL=y
@@ -2930,6 +3075,7 @@  CONFIG_NET_VENDOR_SEEQ=y
 CONFIG_NET_VENDOR_SILAN=y
 CONFIG_NET_VENDOR_SIS=y
 CONFIG_NET_VENDOR_SMSC=y
+CONFIG_NET_VENDOR_SOLARFLARE=y
 CONFIG_NET_VENDOR_STMICRO=y
 CONFIG_NET_VENDOR_SUN=y
 CONFIG_NET_VENDOR_SYNOPSYS=y
@@ -2944,7 +3090,7 @@  CONFIG_NET_VENDOR_XIRCOM=y
 # CONFIG_NET_XGENE is not set
 CONFIG_NEW_LEDS=y
 # CONFIG_NFC is not set
-# CONFIG_NFP_NETVF is not set
+# CONFIG_NFP is not set
 # CONFIG_NFSD is not set
 # CONFIG_NFSD_V2_ACL is not set
 CONFIG_NFSD_V3=y
@@ -2965,6 +3111,11 @@  CONFIG_NFS_V3=y
 # CONFIG_NFT_BRIDGE_REJECT 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_OBJREF is not set
+# CONFIG_NFT_RT is not set
+# CONFIG_NFT_SET_BITMAP is not set
 # CONFIG_NF_CONNTRACK is not set
 # CONFIG_NF_CONNTRACK_AMANDA is not set
 # CONFIG_NF_CONNTRACK_EVENTS is not set
@@ -2996,6 +3147,7 @@  CONFIG_NF_CONNTRACK_PROCFS=y
 # CONFIG_NF_DUP_IPV6 is not set
 # CONFIG_NF_LOG_ARP is not set
 # CONFIG_NF_LOG_IPV4 is not set
+# CONFIG_NF_LOG_NETDEV is not set
 # CONFIG_NF_NAT is not set
 # CONFIG_NF_NAT_AMANDA is not set
 # CONFIG_NF_NAT_FTP is not set
@@ -3012,10 +3164,13 @@  CONFIG_NF_CONNTRACK_PROCFS=y
 # CONFIG_NF_NAT_TFTP is not set
 # CONFIG_NF_REJECT_IPV4 is not set
 # CONFIG_NF_REJECT_IPV6 is not set
+# CONFIG_NF_SOCKET_IPV4 is not set
+# CONFIG_NF_SOCKET_IPV6 is not set
 # CONFIG_NF_TABLES is not set
 # CONFIG_NF_TABLES_NETDEV is not set
 # CONFIG_NI65 is not set
 # CONFIG_NI903X_WDT is not set
+# CONFIG_NIC7018_WDT is not set
 # CONFIG_NILFS2_FS is not set
 # CONFIG_NIU is not set
 CONFIG_NLATTR=y
@@ -3091,6 +3246,7 @@  CONFIG_NMI_LOG_BUF_SHIFT=13
 # CONFIG_NVM is not set
 # CONFIG_NVMEM is not set
 # CONFIG_NVMEM_IMX_OCOTP is not set
+# CONFIG_NVME_FC is not set
 # CONFIG_NVME_TARGET is not set
 # CONFIG_NVRAM is not set
 # CONFIG_NV_TCO is not set
@@ -3116,6 +3272,8 @@  CONFIG_NMI_LOG_BUF_SHIFT=13
 # CONFIG_ORION_WATCHDOG is not set
 # CONFIG_OSF_PARTITION is not set
 CONFIG_OVERLAY_FS=y
+# CONFIG_OVERLAY_FS_INDEX is not set
+# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set
 # CONFIG_OWL_LOADER is not set
 # CONFIG_P54_COMMON is not set
 # CONFIG_PA12203001 is not set
@@ -3197,6 +3355,7 @@  CONFIG_PARTITION_ADVANCED=y
 # CONFIG_PATA_VIA is not set
 # CONFIG_PATA_WINBOND is not set
 # CONFIG_PATA_WINBOND_VLB is not set
+# CONFIG_PC104 is not set
 # CONFIG_PC300TOO is not set
 # CONFIG_PCCARD is not set
 # CONFIG_PCH_DMA is not set
@@ -3219,6 +3378,8 @@  CONFIG_PARTITION_ADVANCED=y
 # CONFIG_PCI_CNB20LE_QUIRK is not set
 # CONFIG_PCI_DEBUG is not set
 # CONFIG_PCI_DISABLE_COMMON_QUIRKS is not set
+# CONFIG_PCI_ENDPOINT is not set
+# CONFIG_PCI_ENDPOINT_TEST is not set
 # CONFIG_PCI_HERMES is not set
 # CONFIG_PCI_HOST_GENERIC is not set
 # CONFIG_PCI_HOST_THUNDER_ECAM is not set
@@ -3231,6 +3392,7 @@  CONFIG_PARTITION_ADVANCED=y
 CONFIG_PCI_QUIRKS=y
 # CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
 # CONFIG_PCI_STUB is not set
+# CONFIG_PCI_SW_SWITCHTEC is not set
 CONFIG_PCI_SYSCALL=y
 # CONFIG_PCMCIA is not set
 # CONFIG_PCMCIA_3C574 is not set
@@ -3259,6 +3421,7 @@  CONFIG_PCI_SYSCALL=y
 # CONFIG_PD6729 is not set
 # CONFIG_PDA_POWER is not set
 # CONFIG_PDC_ADMA is not set
+# CONFIG_PERCPU_STATS is not set
 # CONFIG_PERCPU_TEST is not set
 # CONFIG_PERF_EVENTS is not set
 # CONFIG_PERF_EVENTS_AMD_POWER is not set
@@ -3267,12 +3430,14 @@  CONFIG_PCI_SYSCALL=y
 # CONFIG_PHONET is not set
 # CONFIG_PHYLIB is not set
 # CONFIG_PHYS_ADDR_T_64BIT is not set
+# 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_PXA_28NM_HSIC is not set
 # CONFIG_PHY_PXA_28NM_USB2 is not set
 # CONFIG_PHY_QCOM_DWC3 is not set
 # CONFIG_PHY_SAMSUNG_USB2 is not set
+# CONFIG_PI433 is not set
 # CONFIG_PID_IN_CONTEXTIDR is not set
 # CONFIG_PID_NS is not set
 CONFIG_PINCONF=y
@@ -3280,8 +3445,10 @@  CONFIG_PINCONF=y
 # CONFIG_PINCTRL_AMD is not set
 # CONFIG_PINCTRL_EXYNOS is not set
 # CONFIG_PINCTRL_EXYNOS5440 is not set
+# CONFIG_PINCTRL_MCP23S08 is not set
 # CONFIG_PINCTRL_MSM8X74 is not set
 CONFIG_PINCTRL_SINGLE=y
+# CONFIG_PINCTRL_SX150X is not set
 CONFIG_PINMUX=y
 # CONFIG_PKCS7_MESSAGE_PARSER is not set
 # CONFIG_PL320_MBOX is not set
@@ -3299,6 +3466,7 @@  CONFIG_PINMUX=y
 # CONFIG_PM_DEVFREQ is not set
 # CONFIG_PM_WAKELOCKS is not set
 # CONFIG_POSIX_MQUEUE is not set
+CONFIG_POSIX_TIMERS=y
 # CONFIG_POWERCAP is not set
 # CONFIG_POWER_AVS is not set
 # CONFIG_POWER_RESET is not set
@@ -3307,6 +3475,7 @@  CONFIG_PINMUX=y
 # CONFIG_POWER_RESET_GPIO is not set
 # CONFIG_POWER_RESET_GPIO_RESTART is not set
 # CONFIG_POWER_RESET_LTC2952 is not set
+# CONFIG_POWER_RESET_PIIX4_POWEROFF is not set
 # CONFIG_POWER_RESET_RESTART is not set
 # CONFIG_POWER_RESET_SYSCON is not set
 # CONFIG_POWER_RESET_SYSCON_POWEROFF is not set
@@ -3363,19 +3532,25 @@  CONFIG_PROC_SYSCTL=y
 # CONFIG_PROVE_LOCKING is not set
 # CONFIG_PROVE_RCU is not set
 # CONFIG_PROVE_RCU_REPEATEDLY is not set
+# CONFIG_PSAMPLE is not set
 # CONFIG_PSB6970_PHY is not set
 # CONFIG_PSTORE is not set
 # CONFIG_PTP_1588_CLOCK is not set
 # CONFIG_PTP_1588_CLOCK_IXP46X is not set
+# CONFIG_PTP_1588_CLOCK_KVM is not set
 # CONFIG_PTP_1588_CLOCK_PCH is not set
 # CONFIG_PUBLIC_KEY_ALGO_RSA is not set
 # CONFIG_PWM is not set
 # CONFIG_PWM_FSL_FTM is not set
 # CONFIG_PWM_PCA9685 is not set
 CONFIG_PWRSEQ_EMMC=y
+# CONFIG_PWRSEQ_SD8787 is not set
 CONFIG_PWRSEQ_SIMPLE=y
 # CONFIG_QCA7000 is not set
+# CONFIG_QCA7000_SPI is not set
 # CONFIG_QCOM_EMAC is not set
+# CONFIG_QCOM_FALKOR_ERRATUM_1003 is not set
+# CONFIG_QCOM_FALKOR_ERRATUM_1009 is not set
 # CONFIG_QCOM_HIDMA is not set
 # CONFIG_QCOM_HIDMA_MGMT is not set
 # CONFIG_QCOM_QDF2400_ERRATUM_0065 is not set
@@ -3449,6 +3624,7 @@  CONFIG_RCU_TORTURE_TEST_SLOW_INIT_DELAY=3
 # CONFIG_READABLE_ASM is not set
 # CONFIG_REALTEK_PHY is not set
 # CONFIG_REDWOOD is not set
+# CONFIG_REFCOUNT_FULL is not set
 # CONFIG_REGMAP is not set
 # CONFIG_REGMAP_I2C is not set
 # CONFIG_REGMAP_MMIO is not set
@@ -3487,8 +3663,10 @@  CONFIG_RCU_TORTURE_TEST_SLOW_INIT_DELAY=3
 # CONFIG_REGULATOR_TPS62360 is not set
 # CONFIG_REGULATOR_TPS65023 is not set
 # CONFIG_REGULATOR_TPS6507X is not set
+# CONFIG_REGULATOR_TPS65132 is not set
 # CONFIG_REGULATOR_TPS6524X is not set
 # CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
+# CONFIG_REGULATOR_VCTRL is not set
 # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
 # CONFIG_REISERFS_CHECK is not set
 # CONFIG_REISERFS_FS is not set
@@ -3498,15 +3676,20 @@  CONFIG_RCU_TORTURE_TEST_SLOW_INIT_DELAY=3
 # CONFIG_REISERFS_PROC_INFO is not set
 # CONFIG_RELAY is not set
 # CONFIG_RELOCATABLE is not set
+# CONFIG_REMOTEPROC is not set
 # CONFIG_RESET_ATH79 is not set
 # CONFIG_RESET_BERLIN is not set
 # CONFIG_RESET_CONTROLLER is not set
+# CONFIG_RESET_IMX7 is not set
+# CONFIG_RESET_LANTIQ is not set
 # CONFIG_RESET_LPC18XX is not set
 # CONFIG_RESET_MESON is not set
 # CONFIG_RESET_PISTACHIO is not set
 # CONFIG_RESET_SOCFPGA is not set
 # CONFIG_RESET_STM32 is not set
 # CONFIG_RESET_SUNXI is not set
+# CONFIG_RESET_TEGRA_BPMP is not set
+# CONFIG_RESET_TI_SYSCON is not set
 # CONFIG_RESET_ZYNQ is not set
 # CONFIG_RFD_FTL is not set
 CONFIG_RFKILL=y
@@ -3518,10 +3701,13 @@  CONFIG_RFKILL=y
 # CONFIG_RING_BUFFER_BENCHMARK is not set
 # CONFIG_RING_BUFFER_STARTUP_TEST is not set
 # CONFIG_RMI4_CORE is not set
+# CONFIG_RMNET is not set
+# CONFIG_ROCKCHIP_PHY is not set
 # CONFIG_ROCKER is not set
 # CONFIG_ROMFS_FS is not set
 # CONFIG_ROSE is not set
 # CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
 # CONFIG_RPR0521 is not set
 # CONFIG_RT2X00 is not set
 # CONFIG_RTC_CLASS is not set
@@ -3554,6 +3740,7 @@  CONFIG_RTC_DRV_CMOS=y
 # CONFIG_RTC_DRV_EM3027 is not set
 # CONFIG_RTC_DRV_EP93XX is not set
 # CONFIG_RTC_DRV_FM3130 is not set
+# CONFIG_RTC_DRV_FTRTC010 is not set
 # CONFIG_RTC_DRV_GENERIC is not set
 # CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
 # CONFIG_RTC_DRV_HYM8563 is not set
@@ -3584,6 +3771,7 @@  CONFIG_RTC_DRV_CMOS=y
 # CONFIG_RTC_DRV_PL031 is not set
 # CONFIG_RTC_DRV_PS3 is not set
 # CONFIG_RTC_DRV_PT7C4338 is not set
+# CONFIG_RTC_DRV_R7301 is not set
 # CONFIG_RTC_DRV_R9701 is not set
 # CONFIG_RTC_DRV_RP5C01 is not set
 # CONFIG_RTC_DRV_RS5C348 is not set
@@ -3612,6 +3800,7 @@  CONFIG_RTC_INTF_DEV=y
 CONFIG_RTC_INTF_PROC=y
 CONFIG_RTC_INTF_SYSFS=y
 CONFIG_RTC_LIB=y
+# CONFIG_RTC_NVMEM is not set
 CONFIG_RTC_SYSTOHC=y
 CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
 # CONFIG_RTL8180 is not set
@@ -3671,6 +3860,7 @@  CONFIG_SCHED_OMIT_FRAME_POINTER=y
 # CONFIG_SCHED_SMT is not set
 # CONFIG_SCHED_STACK_END_CHECK is not set
 # CONFIG_SCHED_TRACER is not set
+# CONFIG_SCR24X is not set
 # CONFIG_SCSI is not set
 # CONFIG_SCSI_3W_9XXX is not set
 # CONFIG_SCSI_3W_SAS is not set
@@ -3791,6 +3981,7 @@  CONFIG_SELECT_MEMORY_MODEL=y
 # CONFIG_SENSORS_APDS990X is not set
 # CONFIG_SENSORS_APPLESMC is not set
 # CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ASPEED is not set
 # CONFIG_SENSORS_ASC7621 is not set
 # CONFIG_SENSORS_ATK0110 is not set
 # CONFIG_SENSORS_ATXP1 is not set
@@ -3897,10 +4088,13 @@  CONFIG_SELECT_MEMORY_MODEL=y
 # CONFIG_SENSORS_SMSC47B397 is not set
 # CONFIG_SENSORS_SMSC47M1 is not set
 # CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_STTS751 is not set
+# CONFIG_SENSORS_TC654 is not set
 # CONFIG_SENSORS_TC74 is not set
 # CONFIG_SENSORS_THMC50 is not set
 # CONFIG_SENSORS_TMP102 is not set
 # CONFIG_SENSORS_TMP103 is not set
+# CONFIG_SENSORS_TMP108 is not set
 # CONFIG_SENSORS_TMP401 is not set
 # CONFIG_SENSORS_TMP421 is not set
 # CONFIG_SENSORS_TSL2550 is not set
@@ -3922,6 +4116,7 @@  CONFIG_SELECT_MEMORY_MODEL=y
 # CONFIG_SENSORS_XGENE is not set
 CONFIG_SERIAL_8250=y
 # CONFIG_SERIAL_8250_ACCENT is not set
+# CONFIG_SERIAL_8250_ASPEED_VUART is not set
 # CONFIG_SERIAL_8250_BOCA is not set
 CONFIG_SERIAL_8250_CONSOLE=y
 # CONFIG_SERIAL_8250_CS is not set
@@ -3930,6 +4125,7 @@  CONFIG_SERIAL_8250_CONSOLE=y
 CONFIG_SERIAL_8250_DMA=y
 # CONFIG_SERIAL_8250_DW is not set
 # CONFIG_SERIAL_8250_EM is not set
+# CONFIG_SERIAL_8250_EXAR is not set
 # CONFIG_SERIAL_8250_EXAR_ST16C554 is not set
 # CONFIG_SERIAL_8250_EXTENDED is not set
 # CONFIG_SERIAL_8250_FINTEK is not set
@@ -3953,6 +4149,7 @@  CONFIG_SERIAL_8250_RUNTIME_UARTS=2
 # CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_DEV_BUS is not set
 CONFIG_SERIAL_EARLYCON=y
 # CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST is not set
 # CONFIG_SERIAL_FSL_LPUART is not set
@@ -3979,6 +4176,8 @@  CONFIG_SERIAL_EARLYCON=y
 # CONFIG_SERIO_AMBAKMI is not set
 # CONFIG_SERIO_APBPS2 is not set
 # CONFIG_SERIO_ARC_PS2 is not set
+# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
 # CONFIG_SERIO_I8042 is not set
 # CONFIG_SERIO_LIBPS2 is not set
 # CONFIG_SERIO_PARKBD is not set
@@ -3988,6 +4187,7 @@  CONFIG_SERIAL_EARLYCON=y
 # CONFIG_SERIO_SERPORT is not set
 # CONFIG_SERIO_SUN4I_PS2 is not set
 # CONFIG_SFC is not set
+# CONFIG_SFC_FALCON is not set
 # CONFIG_SFI is not set
 # CONFIG_SGETMASK_SYSCALL is not set
 # CONFIG_SGI_IOC4 is not set
@@ -4017,6 +4217,7 @@  CONFIG_SHMEM=y
 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_SIS190 is not set
 # CONFIG_SIS900 is not set
 # CONFIG_SKGE is not set
@@ -4024,7 +4225,9 @@  CONFIG_SIGNALFD=y
 # CONFIG_SKY2_DEBUG is not set
 # CONFIG_SLAB is not set
 CONFIG_SLABINFO=y
+# CONFIG_SLAB_FREELIST_HARDENED is not set
 # CONFIG_SLAB_FREELIST_RANDOM is not set
+CONFIG_SLAB_MERGE_DEFAULT=y
 # CONFIG_SLHC is not set
 # CONFIG_SLICOSS is not set
 # CONFIG_SLIP is not set
@@ -4063,6 +4266,8 @@  CONFIG_SLUB_CPU_PARTIAL=y
 # CONFIG_SND_AU8810 is not set
 # CONFIG_SND_AU8820 is not set
 # CONFIG_SND_AU8830 is not set
+# CONFIG_SND_AUDIO_GRAPH_CARD is not set
+# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set
 # CONFIG_SND_AW2 is not set
 # CONFIG_SND_AZT2320 is not set
 # CONFIG_SND_AZT3328 is not set
@@ -4110,6 +4315,7 @@  CONFIG_SND_HDA_PREALLOC_SIZE=64
 # CONFIG_SND_HDSPM is not set
 # CONFIG_SND_HRTIMER is not set
 # CONFIG_SND_HWDEP is not set
+# CONFIG_SND_I2S_HI6210_I2S is not set
 # CONFIG_SND_ICE1712 is not set
 # CONFIG_SND_ICE1724 is not set
 # CONFIG_SND_INDIGO is not set
@@ -4182,6 +4388,8 @@  CONFIG_SND_PROC_FS=y
 # CONFIG_SND_SOC is not set
 # CONFIG_SND_SOC_AC97_CODEC is not set
 # CONFIG_SND_SOC_ADAU1701 is not set
+# CONFIG_SND_SOC_ADAU1761_I2C is not set
+# 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_AK4554 is not set
@@ -4195,19 +4403,28 @@  CONFIG_SND_PROC_FS=y
 # CONFIG_SND_SOC_BT_SCO is not set
 # CONFIG_SND_SOC_CS35L32 is not set
 # CONFIG_SND_SOC_CS35L33 is not set
+# CONFIG_SND_SOC_CS35L34 is not set
+# CONFIG_SND_SOC_CS35L35 is not set
 # CONFIG_SND_SOC_CS4265 is not set
 # CONFIG_SND_SOC_CS4270 is not set
 # CONFIG_SND_SOC_CS4271 is not set
 # CONFIG_SND_SOC_CS4271_I2C is not set
 # CONFIG_SND_SOC_CS4271_SPI is not set
+# CONFIG_SND_SOC_CS42L42 is not set
 # CONFIG_SND_SOC_CS42L51_I2C is not set
 # CONFIG_SND_SOC_CS42L52 is not set
 # CONFIG_SND_SOC_CS42L56 is not set
 # CONFIG_SND_SOC_CS42L73 is not set
 # CONFIG_SND_SOC_CS42XX8_I2C is not set
 # CONFIG_SND_SOC_CS4349 is not set
+# CONFIG_SND_SOC_CS43130 is not set
 # CONFIG_SND_SOC_CS53L30 is not set
+# CONFIG_SND_SOC_DIO2125 is not set
+# CONFIG_SND_SOC_ES7134 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
+# CONFIG_SND_SOC_ES8328_SPI is not set
 # CONFIG_SND_SOC_EUKREA_TLV320 is not set
 # CONFIG_SND_SOC_FSL_ASOC_CARD is not set
 # CONFIG_SND_SOC_FSL_ASRC is not set
@@ -4225,6 +4442,9 @@  CONFIG_SND_PROC_FS=y
 # 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
+# CONFIG_SND_SOC_INTEL_BYT_CHT_DA7213_MACH is not set
+# CONFIG_SND_SOC_INTEL_BYT_CHT_ES8316_MACH is not set
+# CONFIG_SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH is not set
 # CONFIG_SND_SOC_INTEL_BYT_MAX98090_MACH is not set
 # CONFIG_SND_SOC_INTEL_BYT_RT5640_MACH is not set
 # CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH is not set
@@ -4232,18 +4452,24 @@  CONFIG_SND_PROC_FS=y
 # CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_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_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_SST is not set
 # CONFIG_SND_SOC_MAX98504 is not set
 # CONFIG_SND_SOC_MAX9860 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
 # CONFIG_SND_SOC_MPC5200_I2S is not set
+# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set
 # CONFIG_SND_SOC_MT2701 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_PCM1792A is not set
 # CONFIG_SND_SOC_PCM179X_I2C is not set
@@ -4278,6 +4504,7 @@  CONFIG_SND_PROC_FS=y
 # CONFIG_SND_SOC_TS3A227E is not set
 # CONFIG_SND_SOC_WM8510 is not set
 # CONFIG_SND_SOC_WM8523 is not set
+# CONFIG_SND_SOC_WM8524 is not set
 # CONFIG_SND_SOC_WM8580 is not set
 # CONFIG_SND_SOC_WM8711 is not set
 # CONFIG_SND_SOC_WM8728 is not set
@@ -4297,6 +4524,7 @@  CONFIG_SND_PROC_FS=y
 # CONFIG_SND_SOC_WM8978 is not set
 # CONFIG_SND_SOC_WM8985 is not set
 # CONFIG_SND_SOC_XTFPGA_I2S is not set
+# CONFIG_SND_SOC_ZX_AUD96P22 is not set
 # CONFIG_SND_SONICVIBES is not set
 # CONFIG_SND_SPI is not set
 # CONFIG_SND_SSCAPE is not set
@@ -4324,6 +4552,7 @@  CONFIG_SND_VERBOSE_PROCFS=y
 # CONFIG_SND_VX222 is not set
 # CONFIG_SND_VXPOCKET is not set
 # CONFIG_SND_WAVEFRONT is not set
+CONFIG_SND_X86=y
 # CONFIG_SND_YMFPCI is not set
 # CONFIG_SNI_RM is not set
 # CONFIG_SOCK_CGROUP_DATA is not set
@@ -4336,6 +4565,7 @@  CONFIG_SND_VERBOSE_PROCFS=y
 # CONFIG_SOC_OMAP5 is not set
 # CONFIG_SOC_TI is not set
 # CONFIG_SOFT_WATCHDOG is not set
+# CONFIG_SOFTLOCKUP_DETECTOR is not set
 # CONFIG_SOLARIS_X86_PARTITION is not set
 # CONFIG_SONYPI is not set
 # CONFIG_SONY_LAPTOP is not set
@@ -4382,6 +4612,7 @@  CONFIG_SND_VERBOSE_PROCFS=y
 # CONFIG_SPI_PXA2XX_PCI is not set
 # CONFIG_SPI_ROCKCHIP is not set
 # CONFIG_SPI_SC18IS602 is not set
+# CONFIG_SPI_SLAVE is not set
 # CONFIG_SPI_SPIDEV is not set
 # CONFIG_SPI_THUNDERX is not set
 # CONFIG_SPI_TI_QSPI is not set
@@ -4407,7 +4638,10 @@  CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
 # CONFIG_SQUASHFS_XATTR is not set
 CONFIG_SQUASHFS_XZ=y
 # CONFIG_SQUASHFS_ZLIB is not set
+# CONFIG_SQUASHFS_ZSTD is not set
 # CONFIG_SRAM is not set
+# CONFIG_SRF04 is not set
+# CONFIG_SRF08 is not set
 # CONFIG_SSB is not set
 # CONFIG_SSB_DEBUG is not set
 # CONFIG_SSB_DRIVER_GPIO is not set
@@ -4426,6 +4660,7 @@  CONFIG_STAGING=y
 # CONFIG_STAGING_MEDIA is not set
 CONFIG_STANDALONE=y
 # CONFIG_STATIC_KEYS_SELFTEST is not set
+# CONFIG_STATIC_USERMODEHELPER is not set
 CONFIG_STDBINUTILS=y
 # CONFIG_STE10XP is not set
 # CONFIG_STE_MODEM_RPROC is not set
@@ -4441,8 +4676,12 @@  CONFIG_STDBINUTILS=y
 CONFIG_STP=y
 # CONFIG_STREAM_PARSER is not set
 # CONFIG_STRICT_DEVMEM is not set
+CONFIG_STRICT_KERNEL_RWX=y
+CONFIG_STRICT_MODULE_RWX=y
+# CONFIG_STRING_SELFTEST is not set
 CONFIG_STRIP_ASM_SYMS=y
 # CONFIG_STX104 is not set
+# CONFIG_SUN4I_GPADC is not set
 # CONFIG_SUNDANCE is not set
 # CONFIG_SUNGEM is not set
 # CONFIG_SUNRPC is not set
@@ -4450,6 +4689,7 @@  CONFIG_STRIP_ASM_SYMS=y
 # CONFIG_SUNRPC_GSS is not set
 # CONFIG_SUNXI_SRAM is not set
 # CONFIG_SUN_PARTITION is not set
+# CONFIG_SURFACE_3_BUTTON is not set
 # CONFIG_SUSPEND is not set
 # CONFIG_SUSPEND_SKIP_SYNC is not set
 CONFIG_SWAP=y
@@ -4471,6 +4711,7 @@  CONFIG_SYSFS=y
 # CONFIG_SYSFS_DEPRECATED_V2 is not set
 # CONFIG_SYSFS_SYSCALL is not set
 # CONFIG_SYSTEMPORT is not set
+# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set
 # CONFIG_SYSTEM_DATA_VERIFICATION is not set
 # CONFIG_SYSTEM_TRUSTED_KEYRING is not set
 CONFIG_SYSTEM_TRUSTED_KEYS=""
@@ -4525,19 +4766,23 @@  CONFIG_TCP_CONG_CUBIC=y
 # CONFIG_TEGRA_HOST1X is not set
 # CONFIG_TEHUTI is not set
 # CONFIG_TERANETICS_PHY is not set
+# CONFIG_TEST_ASYNC_DRIVER_PROBE 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_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_POWER is not set
 # CONFIG_TEST_PRINTF is not set
 # CONFIG_TEST_RHASHTABLE is not set
+# CONFIG_TEST_SORT is not set
 # CONFIG_TEST_STATIC_KEYS is not set
 # CONFIG_TEST_STRING_HELPERS is not set
+# CONFIG_TEST_SYSCTL is not set
 # CONFIG_TEST_UDELAY is not set
 # CONFIG_TEST_USER_COPY is not set
 # CONFIG_TEST_UUID is not set
@@ -4574,10 +4819,13 @@  CONFIG_TINY_RCU=y
 # CONFIG_TIPC is not set
 # CONFIG_TI_ADC081C is not set
 # CONFIG_TI_ADC0832 is not set
+# CONFIG_TI_ADC084S021 is not set
+# CONFIG_TI_ADC108S102 is not set
 # CONFIG_TI_ADC12138 is not set
 # CONFIG_TI_ADC128S052 is not set
 # CONFIG_TI_ADC161S626 is not set
 # CONFIG_TI_ADS1015 is not set
+# CONFIG_TI_ADS7950 is not set
 # CONFIG_TI_ADS8688 is not set
 # CONFIG_TI_AM335X_ADC is not set
 # CONFIG_TI_CPSW is not set
@@ -4588,9 +4836,12 @@  CONFIG_TINY_RCU=y
 # CONFIG_TI_DAVINCI_MDIO is not set
 # CONFIG_TI_ST is not set
 # CONFIG_TI_SYSCON_RESET is not set
+# CONFIG_TI_TLC4541 is not set
 # CONFIG_TLAN is not set
+# CONFIG_TLS is not set
 # CONFIG_TMD_HERMES is not set
 # CONFIG_TMP006 is not set
+# CONFIG_TMP007 is not set
 CONFIG_TMPFS=y
 # CONFIG_TMPFS_POSIX_ACL is not set
 CONFIG_TMPFS_XATTR=y
@@ -4640,6 +4891,7 @@  CONFIG_TMPFS_XATTR=y
 # CONFIG_TOUCHSCREEN_SILEAD is not set
 # CONFIG_TOUCHSCREEN_SIS_I2C is not set
 # CONFIG_TOUCHSCREEN_ST1232 is not set
+# CONFIG_TOUCHSCREEN_STMFTS is not set
 # CONFIG_TOUCHSCREEN_SUR40 is not set
 # CONFIG_TOUCHSCREEN_SURFACE3_SPI is not set
 # CONFIG_TOUCHSCREEN_SX8654 is not set
@@ -4658,6 +4910,7 @@  CONFIG_TMPFS_XATTR=y
 # CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
 # CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set
 # CONFIG_TOUCHSCREEN_WM97XX is not set
+# CONFIG_TOUCHSCREEN_ZET6223 is not set
 # CONFIG_TOUCHSCREEN_ZFORCE is not set
 # CONFIG_TPL0102 is not set
 # CONFIG_TPS6105X is not set
@@ -4692,9 +4945,13 @@  CONFIG_TTY=y
 # CONFIG_TWL4030_MADC is not set
 # CONFIG_TWL6030_GPADC is not set
 # CONFIG_TWL6040_CORE is not set
+# CONFIG_TYPEC_TCPM is not set
+# CONFIG_TYPEC_UCSI is not set
 # CONFIG_TYPHOON is not set
 # CONFIG_UACCESS_WITH_MEMCPY is not set
 # CONFIG_UBIFS_ATIME_SUPPORT is not set
+# CONFIG_UBIFS_FS_ENCRYPTION is not set
+# CONFIG_UBIFS_FS_SECURITY is not set
 # CONFIG_UBSAN is not set
 # CONFIG_UCB1400_CORE is not set
 # CONFIG_UCSI is not set
@@ -4852,6 +5109,7 @@  CONFIG_USB_GADGET_VBUS_DRAW=2
 # CONFIG_USB_HSIC_USB3503 is not set
 # CONFIG_USB_HSIC_USB4604 is not set
 # CONFIG_USB_HSO is not set
+# CONFIG_USB_HUB_USB251XB is not set
 # CONFIG_USB_HWA_HCD is not set
 # CONFIG_USB_IDMOUSE is not set
 # CONFIG_USB_IOWARRIOR is not set
@@ -4927,6 +5185,7 @@  CONFIG_USB_OHCI_LITTLE_ENDIAN=y
 # CONFIG_USB_OTG_FSM is not set
 # CONFIG_USB_OTG_WHITELIST is not set
 # CONFIG_USB_OXU210HP_HCD is not set
+# CONFIG_USB_PCI is not set
 # CONFIG_USB_PEGASUS is not set
 # CONFIG_USB_PHY is not set
 # CONFIG_USB_PRINTER is not set
@@ -4954,6 +5213,7 @@  CONFIG_USB_OHCI_LITTLE_ENDIAN=y
 # CONFIG_USB_SERIAL_EDGEPORT_TI is not set
 # CONFIG_USB_SERIAL_EMPEG is not set
 # CONFIG_USB_SERIAL_F81232 is not set
+# CONFIG_USB_SERIAL_F8153X is not set
 # CONFIG_USB_SERIAL_FTDI_SIO is not set
 # CONFIG_USB_SERIAL_GARMIN is not set
 CONFIG_USB_SERIAL_GENERIC=y
@@ -5000,6 +5260,7 @@  CONFIG_USB_SERIAL_SAFE_PADDED=y
 # CONFIG_USB_SERIAL_SSU100 is not set
 # CONFIG_USB_SERIAL_SYMBOL is not set
 # CONFIG_USB_SERIAL_TI is not set
+# CONFIG_USB_SERIAL_UPD78F0730 is not set
 # CONFIG_USB_SERIAL_VISOR is not set
 # CONFIG_USB_SERIAL_WHITEHEAT is not set
 # CONFIG_USB_SERIAL_WISHBONE is not set
@@ -5009,6 +5270,7 @@  CONFIG_USB_SERIAL_SAFE_PADDED=y
 # CONFIG_USB_SIERRA_NET is not set
 # CONFIG_USB_SISUSBVGA is not set
 # CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_SNP_UDC_PLAT is not set
 # CONFIG_USB_SPEEDTOUCH is not set
 # CONFIG_USB_STKWEBCAM is not set
 # CONFIG_USB_STORAGE is not set
@@ -5115,7 +5377,9 @@  CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
 # 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_OV6650 is not set
 # CONFIG_VIDEO_OV7640 is not set
 # CONFIG_VIDEO_OV7670 is not set
 # CONFIG_VIDEO_PVRUSB2 is not set
@@ -5159,6 +5423,7 @@  CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
 # CONFIG_VIDEO_WM8775 is not set
 # CONFIG_VIDEO_ZORAN is not set
 # CONFIG_VIRTIO_BALLOON is not set
+# CONFIG_VIRTIO_BLK_SCSI is not set
 # CONFIG_VIRTIO_INPUT is not set
 # CONFIG_VIRTIO_MMIO is not set
 # CONFIG_VIRTIO_PCI is not set
@@ -5167,6 +5432,7 @@  CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
 # CONFIG_VIRT_DRIVERS is not set
 CONFIG_VIRT_TO_BUS=y
 # CONFIG_VITESSE_PHY is not set
+# CONFIG_VL6180 is not set
 CONFIG_VLAN_8021Q=y
 # CONFIG_VLAN_8021Q_GVRP is not set
 # CONFIG_VLAN_8021Q_MVRP is not set
@@ -5197,15 +5463,18 @@  CONFIG_VMSPLIT_3G=y
 # CONFIG_W1_MASTER_GPIO is not set
 # CONFIG_W1_MASTER_MATROX is not set
 # CONFIG_W1_SLAVE_BQ27000 is not set
+# CONFIG_W1_SLAVE_DS2405 is not set
 # CONFIG_W1_SLAVE_DS2406 is not set
 # CONFIG_W1_SLAVE_DS2408 is not set
 # CONFIG_W1_SLAVE_DS2413 is not set
 # CONFIG_W1_SLAVE_DS2423 is not set
 # CONFIG_W1_SLAVE_DS2431 is not set
 # CONFIG_W1_SLAVE_DS2433 is not set
+# CONFIG_W1_SLAVE_DS2438 is not set
 # CONFIG_W1_SLAVE_DS2760 is not set
 # CONFIG_W1_SLAVE_DS2780 is not set
 # CONFIG_W1_SLAVE_DS2781 is not set
+# CONFIG_W1_SLAVE_DS2805 is not set
 # CONFIG_W1_SLAVE_DS28E04 is not set
 # CONFIG_W1_SLAVE_SMEM is not set
 # CONFIG_W1_SLAVE_THERM is not set
@@ -5214,8 +5483,10 @@  CONFIG_VMSPLIT_3G=y
 # CONFIG_W83977F_WDT is not set
 # CONFIG_WAN is not set
 # CONFIG_WANXL is not set
+# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set
 CONFIG_WATCHDOG=y
 # CONFIG_WATCHDOG_CORE is not set
+CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y
 # CONFIG_WATCHDOG_NOWAYOUT is not set
 # CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set
 # CONFIG_WATCHDOG_SYSFS is not set
@@ -5231,6 +5502,7 @@  CONFIG_WILINK_PLATFORM_DATA=y
 # CONFIG_WIMAX_GDM72XX is not set
 CONFIG_WIRELESS=y
 CONFIG_WIRELESS_EXT=y
+# CONFIG_WIRELESS_WDS is not set
 # CONFIG_WIZNET_W5100 is not set
 # CONFIG_WIZNET_W5300 is not set
 # CONFIG_WL1251 is not set
@@ -5246,6 +5518,7 @@  CONFIG_WLAN=y
 # CONFIG_WLAN_VENDOR_INTERSIL is not set
 # CONFIG_WLAN_VENDOR_MARVELL is not set
 # CONFIG_WLAN_VENDOR_MEDIATEK is not set
+# CONFIG_WLAN_VENDOR_QUANTENNA is not set
 # CONFIG_WLAN_VENDOR_RALINK is not set
 # CONFIG_WLAN_VENDOR_REALTEK is not set
 # CONFIG_WLAN_VENDOR_RSI is not set
@@ -5257,6 +5530,7 @@  CONFIG_WLAN=y
 CONFIG_WL_TI=y
 CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y
 # CONFIG_WQ_WATCHDOG is not set
+# CONFIG_WW_MUTEX_SELFTEST is not set
 # CONFIG_X25 is not set
 # CONFIG_X509_CERTIFICATE_PARSER is not set
 # CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set
@@ -5314,3 +5588,4 @@  CONFIG_ZONE_DMA=y
 # CONFIG_ZPOOL is not set
 # CONFIG_ZRAM is not set
 # CONFIG_ZSMALLOC is not set
+# CONFIG_ZX_TDM is not set
diff --git a/target/linux/generic/files/drivers/net/phy/b53/b53_common.c b/target/linux/generic/files/drivers/net/phy/b53/b53_common.c
index 4b88d1f8fe..670588c84e 100644
--- a/target/linux/generic/files/drivers/net/phy/b53/b53_common.c
+++ b/target/linux/generic/files/drivers/net/phy/b53/b53_common.c
@@ -24,6 +24,7 @@ 
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/switch.h>
+#include <linux/phy.h>
 #include <linux/of.h>
 #include <linux/of_net.h>
 #include <linux/platform_data/b53.h>
diff --git a/target/linux/generic/files/drivers/net/phy/rtl8306.c b/target/linux/generic/files/drivers/net/phy/rtl8306.c
index 7bbac40617..6d09c1063c 100644
--- a/target/linux/generic/files/drivers/net/phy/rtl8306.c
+++ b/target/linux/generic/files/drivers/net/phy/rtl8306.c
@@ -25,6 +25,7 @@ 
 #include <linux/switch.h>
 #include <linux/delay.h>
 #include <linux/phy.h>
+#include <linux/version.h>
 
 //#define DEBUG 1
 
@@ -1032,7 +1033,9 @@  rtl8306_read_status(struct phy_device *pdev)
 
 static struct phy_driver rtl8306_driver = {
 	.name		= "Realtek RTL8306S",
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,13,0))
 	.flags		= PHY_HAS_MAGICANEG,
+#endif
 	.phy_id		= RTL8306_MAGIC,
 	.phy_id_mask	= 0xffffffff,
 	.features	= PHY_BASIC_FEATURES,
diff --git a/target/linux/generic/files/drivers/net/phy/swconfig.c b/target/linux/generic/files/drivers/net/phy/swconfig.c
index f6f26e43ab..78569a9302 100644
--- a/target/linux/generic/files/drivers/net/phy/swconfig.c
+++ b/target/linux/generic/files/drivers/net/phy/swconfig.c
@@ -269,13 +269,7 @@  static void swconfig_defaults_init(struct switch_dev *dev)
 }
 
 
-static struct genl_family switch_fam = {
-	.id = GENL_ID_GENERATE,
-	.name = "switch",
-	.hdrsize = 0,
-	.version = 1,
-	.maxattr = SWITCH_ATTR_MAX,
-};
+static struct genl_family switch_fam;
 
 static const struct nla_policy switch_policy[SWITCH_ATTR_MAX+1] = {
 	[SWITCH_ATTR_ID] = { .type = NLA_U32 },
@@ -597,8 +591,13 @@  swconfig_parse_ports(struct sk_buff *msg, struct nlattr *head,
 
 		port = &val->value.ports[val->len];
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,12,0)
 		if (nla_parse_nested(tb, SWITCH_PORT_ATTR_MAX, nla,
 				port_policy))
+#else
+		if (nla_parse_nested(tb, SWITCH_PORT_ATTR_MAX, nla,
+				port_policy, NULL))
+#endif
 			return -EINVAL;
 
 		if (!tb[SWITCH_PORT_ID])
@@ -619,7 +618,11 @@  swconfig_parse_link(struct sk_buff *msg, struct nlattr *nla,
 {
 	struct nlattr *tb[SWITCH_LINK_ATTR_MAX + 1];
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,12,0)
 	if (nla_parse_nested(tb, SWITCH_LINK_ATTR_MAX, nla, link_policy))
+#else
+	if (nla_parse_nested(tb, SWITCH_LINK_ATTR_MAX, nla, link_policy, NULL))
+#endif
 		return -EINVAL;
 
 	link->duplex = !!tb[SWITCH_LINK_FLAG_DUPLEX];
@@ -1051,6 +1054,19 @@  static struct genl_ops swconfig_ops[] = {
 	}
 };
 
+static struct genl_family switch_fam = {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0)
+	.id = GENL_ID_GENERATE,
+#endif
+	.name = "switch",
+	.hdrsize = 0,
+	.version = 1,
+	.maxattr = SWITCH_ATTR_MAX,
+	.module = THIS_MODULE,
+	.ops = swconfig_ops,
+	.n_ops = ARRAY_SIZE(swconfig_ops),
+};
+
 #ifdef CONFIG_OF
 void
 of_switch_load_portmap(struct switch_dev *dev)
@@ -1222,8 +1238,12 @@  static int __init
 swconfig_init(void)
 {
 	INIT_LIST_HEAD(&swdevs);
-	
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0)
 	return genl_register_family_with_ops(&switch_fam, swconfig_ops);
+#else
+	return genl_register_family(&switch_fam);
+#endif
 }
 
 static void __exit
diff --git a/target/linux/generic/hack-4.14/202-reduce_module_size.patch b/target/linux/generic/hack-4.14/202-reduce_module_size.patch
index 1b4e19a4a6..f85424d0c4 100644
--- a/target/linux/generic/hack-4.14/202-reduce_module_size.patch
+++ b/target/linux/generic/hack-4.14/202-reduce_module_size.patch
@@ -13,7 +13,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/Makefile
 +++ b/Makefile
-@@ -407,7 +407,7 @@ KBUILD_CFLAGS_KERNEL :=
+@@ -408,7 +408,7 @@ KBUILD_CFLAGS_KERNEL :=
  KBUILD_AFLAGS   := -D__ASSEMBLY__ $(call cc-option,-fno-PIE)
  KBUILD_AFLAGS_MODULE  := -DMODULE
  KBUILD_CFLAGS_MODULE  := -DMODULE
diff --git a/target/linux/generic/hack-4.14/204-module_strip.patch b/target/linux/generic/hack-4.14/204-module_strip.patch
index fd07cca066..2141cfef92 100644
--- a/target/linux/generic/hack-4.14/204-module_strip.patch
+++ b/target/linux/generic/hack-4.14/204-module_strip.patch
@@ -14,7 +14,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/include/linux/module.h
 +++ b/include/linux/module.h
-@@ -159,6 +159,7 @@ extern void cleanup_module(void);
+@@ -158,6 +158,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@nbd.name>
  
  /* For userspace: you can also call me... */
  #define MODULE_ALIAS(_alias) MODULE_INFO(alias, _alias)
-@@ -202,12 +203,12 @@ extern void cleanup_module(void);
+@@ -201,12 +202,12 @@ extern void cleanup_module(void);
   * Author(s), use "Name <email>" or just "Name", for multiple
   * authors use multiple MODULE_AUTHOR() statements/lines.
   */
@@ -37,8 +37,8 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +#if defined(MODULE) && !defined(CONFIG_MODULE_STRIPPED)
  /* Creates an alias so file2alias.c can find device table. */
  #define MODULE_DEVICE_TABLE(type, name)					\
- extern const typeof(name) __mod_##type##__##name##_device_table		\
-@@ -234,7 +235,9 @@ extern const typeof(name) __mod_##type##
+ extern typeof(name) __mod_##type##__##name##_device_table		\
+@@ -233,7 +234,9 @@ extern typeof(name) __mod_##type##__##na
   */
  
  #if defined(MODULE) || !defined(CONFIG_SYSFS)
@@ -49,7 +49,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  #else
  #define MODULE_VERSION(_version)					\
  	static struct module_version_attribute ___modver_attr = {	\
-@@ -256,7 +259,7 @@ extern const typeof(name) __mod_##type##
+@@ -255,7 +258,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 */
@@ -60,7 +60,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
 --- a/include/linux/moduleparam.h
 +++ b/include/linux/moduleparam.h
-@@ -16,6 +16,16 @@
+@@ -17,6 +17,16 @@
  /* Chosen so that structs with an unsigned long line up. */
  #define MAX_PARAM_PREFIX_LEN (64 - sizeof(unsigned long))
  
@@ -77,7 +77,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  #ifdef MODULE
  #define __MODULE_INFO(tag, name, info)					  \
  static const char __UNIQUE_ID(name)[]					  \
-@@ -23,8 +33,7 @@ static const char __UNIQUE_ID(name)[]
+@@ -24,8 +34,7 @@ static const char __UNIQUE_ID(name)[]
    = __stringify(tag) "=" info
  #else  /* !MODULE */
  /* This struct is here for syntactic coherency, it is not used */
@@ -87,7 +87,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  #endif
  #define __MODULE_PARM_TYPE(name, _type)					  \
    __MODULE_INFO(parmtype, name##type, #name ":" _type)
-@@ -32,7 +41,7 @@ static const char __UNIQUE_ID(name)[]
+@@ -33,7 +42,7 @@ static const char __UNIQUE_ID(name)[]
  /* One for each parameter, describing how to use it.  Some files do
     multiple of these per line, so can't just use MODULE_INFO. */
  #define MODULE_PARM_DESC(_parm, desc) \
@@ -98,7 +98,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
 --- a/init/Kconfig
 +++ b/init/Kconfig
-@@ -2115,6 +2115,13 @@ config TRIM_UNUSED_KSYMS
+@@ -1896,6 +1896,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@nbd.name>
  config MODULES_TREE_LOOKUP
 --- a/kernel/module.c
 +++ b/kernel/module.c
-@@ -2945,9 +2945,11 @@ static struct module *setup_load_info(st
+@@ -2997,9 +2997,11 @@ static struct module *setup_load_info(st
  
  static int check_modinfo(struct module *mod, struct load_info *info, int flags)
  {
@@ -127,7 +127,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	if (flags & MODULE_INIT_IGNORE_VERMAGIC)
  		modmagic = NULL;
  
-@@ -2968,6 +2970,7 @@ static int check_modinfo(struct module *
+@@ -3020,6 +3022,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@nbd.name>
  		add_taint_module(mod, TAINT_CRAP, LOCKDEP_STILL_OK);
 --- a/scripts/mod/modpost.c
 +++ b/scripts/mod/modpost.c
-@@ -1964,7 +1964,9 @@ static void read_symbols(char *modname)
+@@ -1982,7 +1982,9 @@ static void read_symbols(char *modname)
  		symname = remove_dot(info.strtab + sym->st_name);
  
  		handle_modversions(mod, &info, sym, symname);
@@ -147,17 +147,18 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	}
  	if (!is_vmlinux(modname) ||
  	     (is_vmlinux(modname) && vmlinux_section_warnings))
-@@ -2108,7 +2110,9 @@ static void add_header(struct buffer *b,
+@@ -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");
  	buf_printf(b, "\n");
 +#ifndef CONFIG_MODULE_STRIPPED
  	buf_printf(b, "MODULE_INFO(vermagic, VERMAGIC_STRING);\n");
+ 	buf_printf(b, "MODULE_INFO(name, KBUILD_MODNAME);\n");
 +#endif
  	buf_printf(b, "\n");
  	buf_printf(b, "__visible struct module __this_module\n");
  	buf_printf(b, "__attribute__((section(\".gnu.linkonce.this_module\"))) = {\n");
-@@ -2125,16 +2129,20 @@ static void add_header(struct buffer *b,
+@@ -2161,16 +2165,20 @@ static void add_header(struct buffer *b,
  
  static void add_intree_flag(struct buffer *b, int is_intree)
  {
@@ -177,8 +178,8 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +#endif
  }
  
- /* In kernel, this size is defined in linux/module.h;
-@@ -2238,11 +2246,13 @@ static void add_depends(struct buffer *b
+ /**
+@@ -2269,11 +2277,13 @@ static void add_depends(struct buffer *b
  
  static void add_srcversion(struct buffer *b, struct module *mod)
  {
@@ -192,7 +193,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  }
  
  static void write_if_changed(struct buffer *b, const char *fname)
-@@ -2476,7 +2486,9 @@ int main(int argc, char **argv)
+@@ -2509,7 +2519,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.14/207-disable-modorder.patch b/target/linux/generic/hack-4.14/207-disable-modorder.patch
index 354052d8b4..a9e90dae80 100644
--- a/target/linux/generic/hack-4.14/207-disable-modorder.patch
+++ b/target/linux/generic/hack-4.14/207-disable-modorder.patch
@@ -15,15 +15,15 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/Makefile
 +++ b/Makefile
-@@ -1196,7 +1196,6 @@ all: modules
+@@ -1208,7 +1208,6 @@ all: modules
  
  PHONY += modules
  modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
 -	$(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order
  	@$(kecho) '  Building modules, stage 2.';
  	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
- 	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_modbuild
-@@ -1226,7 +1225,6 @@ _modinst_:
+ 
+@@ -1237,7 +1236,6 @@ _modinst_:
  		rm -f $(MODLIB)/build ; \
  		ln -s $(CURDIR) $(MODLIB)/build ; \
  	fi
@@ -33,7 +33,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
 --- a/scripts/Makefile.build
 +++ b/scripts/Makefile.build
-@@ -93,7 +93,7 @@ modorder-target := $(obj)/modules.order
+@@ -94,7 +94,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.14/210-darwin_scripts_include.patch b/target/linux/generic/hack-4.14/210-darwin_scripts_include.patch
index bdf4114aaa..95c7ea4232 100644
--- a/target/linux/generic/hack-4.14/210-darwin_scripts_include.patch
+++ b/target/linux/generic/hack-4.14/210-darwin_scripts_include.patch
@@ -15,7 +15,7 @@  Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
 
 --- a/scripts/kconfig/Makefile
 +++ b/scripts/kconfig/Makefile
-@@ -163,6 +163,9 @@ check-lxdialog  := $(srctree)/$(src)/lxd
+@@ -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
@@ -3037,7 +3037,7 @@  Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
 +#endif	/* elf.h */
 --- a/scripts/mod/mk_elfconfig.c
 +++ b/scripts/mod/mk_elfconfig.c
-@@ -1,7 +1,11 @@
+@@ -2,7 +2,11 @@
  #include <stdio.h>
  #include <stdlib.h>
  #include <string.h>
@@ -3051,7 +3051,7 @@  Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
  main(int argc, char **argv)
 --- a/scripts/mod/modpost.h
 +++ b/scripts/mod/modpost.h
-@@ -7,7 +7,11 @@
+@@ -8,7 +8,11 @@
  #include <sys/mman.h>
  #include <fcntl.h>
  #include <unistd.h>
diff --git a/target/linux/generic/hack-4.14/211-host_tools_portability.patch b/target/linux/generic/hack-4.14/211-host_tools_portability.patch
index e6fd328431..1434f1c4de 100644
--- a/target/linux/generic/hack-4.14/211-host_tools_portability.patch
+++ b/target/linux/generic/hack-4.14/211-host_tools_portability.patch
@@ -12,12 +12,12 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/tools/build/Build.include
 +++ b/tools/build/Build.include
-@@ -95,4 +95,4 @@ cxx_flags = -Wp,-MD,$(depfile),-MT,$@ $(
+@@ -97,4 +97,4 @@ cxx_flags = -Wp,-MD,$(depfile) -Wp,-MT,$
  ###
  ## HOSTCC C flags
  
--host_c_flags = -Wp,-MD,$(depfile),-MT,$@ $(CHOSTFLAGS) -D"BUILD_STR(s)=\#s" $(CHOSTFLAGS_$(basetarget).o) $(CHOSTFLAGS_$(obj))
-+host_c_flags = -MD -MF $(depfile) -MT $@ $(CHOSTFLAGS) -D"BUILD_STR(s)=\#s" $(CHOSTFLAGS_$(basetarget).o) $(CHOSTFLAGS_$(obj))
+-host_c_flags = -Wp,-MD,$(depfile) -Wp,-MT,$@ $(CHOSTFLAGS) -D"BUILD_STR(s)=\#s" $(CHOSTFLAGS_$(basetarget).o) $(CHOSTFLAGS_$(obj))
++host_c_flags = -MD -MF $(depfile) -Wp -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
 @@ -35,6 +35,7 @@
diff --git a/target/linux/generic/hack-4.14/212-byteshift_portability.patch b/target/linux/generic/hack-4.14/212-byteshift_portability.patch
index 6def12d0cf..1a5ac87988 100644
--- a/target/linux/generic/hack-4.14/212-byteshift_portability.patch
+++ b/target/linux/generic/hack-4.14/212-byteshift_portability.patch
@@ -14,7 +14,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/tools/include/tools/be_byteshift.h
 +++ b/tools/include/tools/be_byteshift.h
-@@ -1,6 +1,10 @@
+@@ -2,6 +2,10 @@
  #ifndef _TOOLS_BE_BYTESHIFT_H
  #define _TOOLS_BE_BYTESHIFT_H
  
@@ -27,7 +27,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  static inline uint16_t __get_unaligned_be16(const uint8_t *p)
 --- a/tools/include/tools/le_byteshift.h
 +++ b/tools/include/tools/le_byteshift.h
-@@ -1,6 +1,10 @@
+@@ -2,6 +2,10 @@
  #ifndef _TOOLS_LE_BYTESHIFT_H
  #define _TOOLS_LE_BYTESHIFT_H
  
diff --git a/target/linux/generic/hack-4.14/214-spidev_h_portability.patch b/target/linux/generic/hack-4.14/214-spidev_h_portability.patch
index ad4706c821..093f600c85 100644
--- a/target/linux/generic/hack-4.14/214-spidev_h_portability.patch
+++ b/target/linux/generic/hack-4.14/214-spidev_h_portability.patch
@@ -13,7 +13,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/include/uapi/linux/spi/spidev.h
 +++ b/include/uapi/linux/spi/spidev.h
-@@ -112,7 +112,7 @@ struct spi_ioc_transfer {
+@@ -113,7 +113,7 @@ struct spi_ioc_transfer {
  
  /* not all platforms use <asm-generic/ioctl.h> or _IOC_TYPECHECK() ... */
  #define SPI_MSGSIZE(N) \
diff --git a/target/linux/generic/hack-4.14/220-gc_sections.patch b/target/linux/generic/hack-4.14/220-gc_sections.patch
index eda8bb8b2b..4463e2313e 100644
--- a/target/linux/generic/hack-4.14/220-gc_sections.patch
+++ b/target/linux/generic/hack-4.14/220-gc_sections.patch
@@ -21,7 +21,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 
 --- a/Makefile
 +++ b/Makefile
-@@ -409,6 +409,11 @@ KBUILD_AFLAGS_MODULE  := -DMODULE
+@@ -410,6 +410,11 @@ KBUILD_AFLAGS_MODULE  := -DMODULE
  KBUILD_CFLAGS_MODULE  := -DMODULE
  KBUILD_LDFLAGS_MODULE = -T $(srctree)/scripts/module-common.lds $(if $(CONFIG_PROFILING),,-s)
  
@@ -33,21 +33,21 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  # Read KERNELRELEASE from include/config/kernel.release (if it exists)
  KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)
  KERNELVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)
-@@ -633,11 +638,6 @@ KBUILD_CFLAGS	+= $(call cc-disable-warni
- KBUILD_CFLAGS	+= $(call cc-disable-warning, format-overflow)
- KBUILD_CFLAGS	+= $(call cc-disable-warning, int-in-bool-context)
+@@ -783,11 +788,6 @@ ifdef CONFIG_DEBUG_SECTION_MISMATCH
+ KBUILD_CFLAGS += $(call cc-option, -fno-inline-functions-called-once)
+ endif
  
 -ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION
 -KBUILD_CFLAGS	+= $(call cc-option,-ffunction-sections,)
 -KBUILD_CFLAGS	+= $(call cc-option,-fdata-sections,)
 -endif
 -
- ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
- KBUILD_CFLAGS	+= -Os $(call cc-disable-warning,maybe-uninitialized,) $(EXTRA_OPTIMIZATION)
- else
+ # arch Makefile may override CC so keep this after arch Makefile is included
+ NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
+ CHECKFLAGS     += $(NOSTDINC_FLAGS)
 --- a/arch/arm/Kconfig
 +++ b/arch/arm/Kconfig
-@@ -81,6 +81,7 @@ config ARM
+@@ -91,6 +91,7 @@ config ARM
  	select HAVE_UID16
  	select HAVE_VIRT_CPU_ACCOUNTING_GEN
  	select IRQ_FORCED_THREADING
@@ -57,7 +57,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  	select OF_EARLY_FLATTREE if OF
 --- a/arch/arm/boot/compressed/Makefile
 +++ b/arch/arm/boot/compressed/Makefile
-@@ -102,6 +102,7 @@ ifeq ($(CONFIG_FUNCTION_TRACER),y)
+@@ -103,6 +103,7 @@ ifeq ($(CONFIG_FUNCTION_TRACER),y)
  ORIG_CFLAGS := $(KBUILD_CFLAGS)
  KBUILD_CFLAGS = $(subst -pg, , $(ORIG_CFLAGS))
  endif
@@ -67,7 +67,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  # but it is being used too early to link to meaningful stack_chk logic.
 --- a/arch/arm/kernel/vmlinux.lds.S
 +++ b/arch/arm/kernel/vmlinux.lds.S
-@@ -17,7 +17,7 @@
+@@ -18,7 +18,7 @@
  #define PROC_INFO							\
  	. = ALIGN(4);							\
  	VMLINUX_SYMBOL(__proc_info_begin) = .;				\
@@ -76,7 +76,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  	VMLINUX_SYMBOL(__proc_info_end) = .;
  
  #define HYPERVISOR_TEXT							\
-@@ -28,11 +28,11 @@
+@@ -29,11 +29,11 @@
  #define IDMAP_TEXT							\
  	ALIGN_FUNCTION();						\
  	VMLINUX_SYMBOL(__idmap_text_start) = .;				\
@@ -90,7 +90,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  	VMLINUX_SYMBOL(__hyp_idmap_text_end) = .;
  
  #ifdef CONFIG_HOTPLUG_CPU
-@@ -105,7 +105,7 @@ SECTIONS
+@@ -106,7 +106,7 @@ SECTIONS
  		_stext = .;		/* Text and read-only data	*/
  			IDMAP_TEXT
  			__exception_text_start = .;
@@ -99,7 +99,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  			__exception_text_end = .;
  			IRQENTRY_TEXT
  			SOFTIRQENTRY_TEXT
-@@ -134,7 +134,7 @@ SECTIONS
+@@ -135,7 +135,7 @@ SECTIONS
  	__ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) {
  		__start___ex_table = .;
  #ifdef CONFIG_MMU
@@ -108,7 +108,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  #endif
  		__stop___ex_table = .;
  	}
-@@ -146,12 +146,12 @@ SECTIONS
+@@ -147,12 +147,12 @@ SECTIONS
  	. = ALIGN(8);
  	.ARM.unwind_idx : {
  		__start_unwind_idx = .;
@@ -123,7 +123,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  		__stop_unwind_tab = .;
  	}
  #endif
-@@ -171,14 +171,14 @@ SECTIONS
+@@ -172,14 +172,14 @@ SECTIONS
  	 */
  	__vectors_start = .;
  	.vectors 0xffff0000 : AT(__vectors_start) {
@@ -140,7 +140,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  	}
  	. = __stubs_start + SIZEOF(.stubs);
  	__stubs_end = .;
-@@ -194,24 +194,24 @@ SECTIONS
+@@ -195,24 +195,24 @@ SECTIONS
  	}
  	.init.arch.info : {
  		__arch_info_begin = .;
@@ -171,17 +171,17 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  	.init.data : {
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -55,6 +55,7 @@ config MIPS
- 	select CLONE_BACKWARDS
- 	select HAVE_DEBUG_STACKOVERFLOW
+@@ -39,6 +39,7 @@ config MIPS
+ 	select HAVE_CBPF_JIT if (!64BIT && !CPU_MICROMIPS)
+ 	select HAVE_EBPF_JIT if (64BIT && !CPU_MICROMIPS)
  	select HAVE_CC_STACKPROTECTOR
 +	select LD_DEAD_CODE_DATA_ELIMINATION
- 	select CPU_PM if CPU_IDLE
- 	select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
- 	select ARCH_BINFMT_ELF_STATE
+ 	select HAVE_CONTEXT_TRACKING
+ 	select HAVE_COPY_THREAD_TLS
+ 	select HAVE_C_RECORDMCOUNT
 --- a/arch/mips/kernel/vmlinux.lds.S
 +++ b/arch/mips/kernel/vmlinux.lds.S
-@@ -71,7 +71,7 @@ SECTIONS
+@@ -72,7 +72,7 @@ SECTIONS
  	/* Exception table for data bus errors */
  	__dbe_table : {
  		__start___dbe_table = .;
@@ -190,7 +190,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  		__stop___dbe_table = .;
  	}
  
-@@ -121,7 +121,7 @@ SECTIONS
+@@ -123,7 +123,7 @@ SECTIONS
  	. = ALIGN(4);
  	.mips.machines.init : AT(ADDR(.mips.machines.init) - LOAD_OFFSET) {
  		__mips_machines_start = .;
@@ -228,78 +228,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  				VMLINUX_SYMBOL(__stop_branch_profile) = .;
  #else
  #define BRANCH_PROFILE()
-@@ -130,7 +130,7 @@
- #ifdef CONFIG_KPROBES
- #define KPROBE_BLACKLIST()	. = ALIGN(8);				      \
- 				VMLINUX_SYMBOL(__start_kprobe_blacklist) = .; \
--				*(_kprobe_blacklist)			      \
-+				KEEP(*(_kprobe_blacklist))		      \
- 				VMLINUX_SYMBOL(__stop_kprobe_blacklist) = .;
- #else
- #define KPROBE_BLACKLIST()
-@@ -139,10 +139,10 @@
- #ifdef CONFIG_EVENT_TRACING
- #define FTRACE_EVENTS()	. = ALIGN(8);					\
- 			VMLINUX_SYMBOL(__start_ftrace_events) = .;	\
--			*(_ftrace_events)				\
-+			KEEP(*(_ftrace_events))				\
- 			VMLINUX_SYMBOL(__stop_ftrace_events) = .;	\
- 			VMLINUX_SYMBOL(__start_ftrace_enum_maps) = .;	\
--			*(_ftrace_enum_map)				\
-+			KEEP(*(_ftrace_enum_map))			\
- 			VMLINUX_SYMBOL(__stop_ftrace_enum_maps) = .;
- #else
- #define FTRACE_EVENTS()
-@@ -163,7 +163,7 @@
- #ifdef CONFIG_FTRACE_SYSCALLS
- #define TRACE_SYSCALLS() . = ALIGN(8);					\
- 			 VMLINUX_SYMBOL(__start_syscalls_metadata) = .;	\
--			 *(__syscalls_metadata)				\
-+			 KEEP(*(__syscalls_metadata))			\
- 			 VMLINUX_SYMBOL(__stop_syscalls_metadata) = .;
- #else
- #define TRACE_SYSCALLS()
-@@ -172,7 +172,7 @@
- #ifdef CONFIG_SERIAL_EARLYCON
- #define EARLYCON_TABLE() STRUCT_ALIGN();			\
- 			 VMLINUX_SYMBOL(__earlycon_table) = .;	\
--			 *(__earlycon_table)			\
-+			 KEEP(*(__earlycon_table))		\
- 			 VMLINUX_SYMBOL(__earlycon_table_end) = .;
- #else
- #define EARLYCON_TABLE()
-@@ -185,8 +185,8 @@
- #define _OF_TABLE_1(name)						\
- 	. = ALIGN(8);							\
- 	VMLINUX_SYMBOL(__##name##_of_table) = .;			\
--	*(__##name##_of_table)						\
--	*(__##name##_of_table_end)
-+	KEEP(*(__##name##_of_table))					\
-+	KEEP(*(__##name##_of_table_end))
- 
- #define CLKSRC_OF_TABLES()	OF_TABLE(CONFIG_CLKSRC_OF, clksrc)
- #define IRQCHIP_OF_MATCH_TABLE() OF_TABLE(CONFIG_IRQCHIP, irqchip)
-@@ -209,7 +209,7 @@
- #define KERNEL_DTB()							\
- 	STRUCT_ALIGN();							\
- 	VMLINUX_SYMBOL(__dtb_start) = .;				\
--	*(.dtb.init.rodata)						\
-+	KEEP(*(.dtb.init.rodata))					\
- 	VMLINUX_SYMBOL(__dtb_end) = .;
- 
- /*
-@@ -227,16 +227,17 @@
- 	/* implement dynamic printk debug */				\
- 	. = ALIGN(8);                                                   \
- 	VMLINUX_SYMBOL(__start___jump_table) = .;                       \
--	*(__jump_table)                                                 \
-+	KEEP(*(__jump_table))                                           \
- 	VMLINUX_SYMBOL(__stop___jump_table) = .;                        \
- 	. = ALIGN(8);							\
- 	VMLINUX_SYMBOL(__start___verbose) = .;                          \
--	*(__verbose)                                                    \
-+	KEEP(*(__verbose))                                              \
- 	VMLINUX_SYMBOL(__stop___verbose) = .;				\
+@@ -237,7 +237,8 @@
  	LIKELY_PROFILE()		       				\
  	BRANCH_PROFILE()						\
  	TRACE_PRINTKS()							\
@@ -309,77 +238,6 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  
  /*
   * Data section helpers
-@@ -304,35 +305,35 @@
- 	/* PCI quirks */						\
- 	.pci_fixup        : AT(ADDR(.pci_fixup) - LOAD_OFFSET) {	\
- 		VMLINUX_SYMBOL(__start_pci_fixups_early) = .;		\
--		*(.pci_fixup_early)					\
-+		KEEP(*(.pci_fixup_early))				\
- 		VMLINUX_SYMBOL(__end_pci_fixups_early) = .;		\
- 		VMLINUX_SYMBOL(__start_pci_fixups_header) = .;		\
--		*(.pci_fixup_header)					\
-+		KEEP(*(.pci_fixup_header))				\
- 		VMLINUX_SYMBOL(__end_pci_fixups_header) = .;		\
- 		VMLINUX_SYMBOL(__start_pci_fixups_final) = .;		\
--		*(.pci_fixup_final)					\
-+		KEEP(*(.pci_fixup_final))				\
- 		VMLINUX_SYMBOL(__end_pci_fixups_final) = .;		\
- 		VMLINUX_SYMBOL(__start_pci_fixups_enable) = .;		\
--		*(.pci_fixup_enable)					\
-+		KEEP(*(.pci_fixup_enable))				\
- 		VMLINUX_SYMBOL(__end_pci_fixups_enable) = .;		\
- 		VMLINUX_SYMBOL(__start_pci_fixups_resume) = .;		\
--		*(.pci_fixup_resume)					\
-+		KEEP(*(.pci_fixup_resume))				\
- 		VMLINUX_SYMBOL(__end_pci_fixups_resume) = .;		\
- 		VMLINUX_SYMBOL(__start_pci_fixups_resume_early) = .;	\
--		*(.pci_fixup_resume_early)				\
-+		KEEP(*(.pci_fixup_resume_early))			\
- 		VMLINUX_SYMBOL(__end_pci_fixups_resume_early) = .;	\
- 		VMLINUX_SYMBOL(__start_pci_fixups_suspend) = .;		\
--		*(.pci_fixup_suspend)					\
-+		KEEP(*(.pci_fixup_suspend))				\
- 		VMLINUX_SYMBOL(__end_pci_fixups_suspend) = .;		\
- 		VMLINUX_SYMBOL(__start_pci_fixups_suspend_late) = .;	\
--		*(.pci_fixup_suspend_late)				\
-+		KEEP(*(.pci_fixup_suspend_late))			\
- 		VMLINUX_SYMBOL(__end_pci_fixups_suspend_late) = .;	\
- 	}								\
- 									\
- 	/* Built-in firmware blobs */					\
- 	.builtin_fw        : AT(ADDR(.builtin_fw) - LOAD_OFFSET) {	\
- 		VMLINUX_SYMBOL(__start_builtin_fw) = .;			\
--		*(.builtin_fw)						\
-+		KEEP(*(.builtin_fw))					\
- 		VMLINUX_SYMBOL(__end_builtin_fw) = .;			\
- 	}								\
- 									\
-@@ -410,7 +411,7 @@
- 									\
- 	/* Kernel symbol table: strings */				\
-         __ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) {	\
--		KEEP(*(__ksymtab_strings))				\
-+		*(__ksymtab_strings)					\
- 	}								\
- 									\
- 	/* __*init sections */						\
-@@ -423,14 +424,14 @@
- 	/* Built-in module parameters. */				\
- 	__param : AT(ADDR(__param) - LOAD_OFFSET) {			\
- 		VMLINUX_SYMBOL(__start___param) = .;			\
--		*(__param)						\
-+		KEEP(*(__param))					\
- 		VMLINUX_SYMBOL(__stop___param) = .;			\
- 	}								\
- 									\
- 	/* Built-in module versions. */					\
- 	__modver : AT(ADDR(__modver) - LOAD_OFFSET) {			\
- 		VMLINUX_SYMBOL(__start___modver) = .;			\
--		*(__modver)						\
-+		KEEP(*(__modver))					\
- 		VMLINUX_SYMBOL(__stop___modver) = .;			\
- 		. = ALIGN((align));					\
- 		VMLINUX_SYMBOL(__end_rodata) = .;			\
 @@ -496,7 +497,7 @@
  #define ENTRY_TEXT							\
  		ALIGN_FUNCTION();					\
@@ -388,61 +246,13 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 +		KEEP(*(.entry.text))					\
  		VMLINUX_SYMBOL(__entry_text_end) = .;
  
- #if defined(CONFIG_FUNCTION_GRAPH_TRACER) || defined(CONFIG_KASAN)
-@@ -534,7 +535,7 @@
- 	. = ALIGN(align);						\
- 	__ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) {		\
- 		VMLINUX_SYMBOL(__start___ex_table) = .;			\
--		*(__ex_table)						\
-+		KEEP(*(__ex_table))						\
- 		VMLINUX_SYMBOL(__stop___ex_table) = .;			\
- 	}
- 
-@@ -550,9 +551,9 @@
- #ifdef CONFIG_CONSTRUCTORS
- #define KERNEL_CTORS()	. = ALIGN(8);			   \
- 			VMLINUX_SYMBOL(__ctors_start) = .; \
--			*(.ctors)			   \
-+			KEEP(*(.ctors))			   \
- 			*(SORT(.init_array.*))		   \
--			*(.init_array)			   \
-+			KEEP(*(.init_array))		   \
- 			VMLINUX_SYMBOL(__ctors_end) = .;
- #else
- #define KERNEL_CTORS()
-@@ -609,7 +610,7 @@
- #define SBSS(sbss_align)						\
+ #define IRQENTRY_TEXT							\
+@@ -603,7 +604,7 @@
  	. = ALIGN(sbss_align);						\
  	.sbss : AT(ADDR(.sbss) - LOAD_OFFSET) {				\
+ 		*(.dynsbss)						\
 -		*(.sbss)						\
 +		*(.sbss .sbss.*)					\
  		*(.scommon)						\
  	}
  
-@@ -676,7 +677,7 @@
- 	. = ALIGN(8);							\
- 	__bug_table : AT(ADDR(__bug_table) - LOAD_OFFSET) {		\
- 		VMLINUX_SYMBOL(__start___bug_table) = .;		\
--		*(__bug_table)						\
-+		KEEP(*(__bug_table))					\
- 		VMLINUX_SYMBOL(__stop___bug_table) = .;			\
- 	}
- #else
-@@ -688,7 +689,7 @@
- 	. = ALIGN(4);							\
- 	.tracedata : AT(ADDR(.tracedata) - LOAD_OFFSET) {		\
- 		VMLINUX_SYMBOL(__tracedata_start) = .;			\
--		*(.tracedata)						\
-+		KEEP(*(.tracedata))					\
- 		VMLINUX_SYMBOL(__tracedata_end) = .;			\
- 	}
- #else
-@@ -705,7 +706,7 @@
- #define INIT_SETUP(initsetup_align)					\
- 		. = ALIGN(initsetup_align);				\
- 		VMLINUX_SYMBOL(__setup_start) = .;			\
--		*(.init.setup)						\
-+		KEEP(*(.init.setup))					\
- 		VMLINUX_SYMBOL(__setup_end) = .;
- 
- #define INIT_CALLS_LEVEL(level)						\
diff --git a/target/linux/generic/hack-4.14/221-module_exports.patch b/target/linux/generic/hack-4.14/221-module_exports.patch
index fddf57b47c..9fafc9fae2 100644
--- a/target/linux/generic/hack-4.14/221-module_exports.patch
+++ b/target/linux/generic/hack-4.14/221-module_exports.patch
@@ -30,7 +30,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  #include <linux/export.h>
  
  /* Align . to a 8 byte boundary equals to maximum function alignment. */
-@@ -342,14 +352,14 @@
+@@ -341,14 +351,14 @@
  	/* Kernel symbol table: Normal symbols */			\
  	__ksymtab         : AT(ADDR(__ksymtab) - LOAD_OFFSET) {		\
  		VMLINUX_SYMBOL(__start___ksymtab) = .;			\
@@ -47,7 +47,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  		VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .;		\
  	}								\
  									\
-@@ -411,7 +421,7 @@
+@@ -410,7 +420,7 @@
  									\
  	/* Kernel symbol table: strings */				\
          __ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) {	\
@@ -56,7 +56,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	}								\
  									\
  	/* __*init sections */						\
-@@ -763,6 +773,8 @@
+@@ -793,6 +803,8 @@
  	EXIT_TEXT							\
  	EXIT_DATA							\
  	EXIT_CALL							\
@@ -67,7 +67,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	}
 --- a/include/linux/export.h
 +++ b/include/linux/export.h
-@@ -53,12 +53,19 @@ extern struct module __this_module;
+@@ -60,12 +60,19 @@ extern struct module __this_module;
  #define __CRC_SYMBOL(sym, sec)
  #endif
  
@@ -90,12 +90,12 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	__used								\
 --- a/scripts/Makefile.build
 +++ b/scripts/Makefile.build
-@@ -398,7 +398,7 @@ targets += $(extra-y) $(MAKECMDGOALS) $(
+@@ -420,7 +420,7 @@ targets += $(extra-y) $(MAKECMDGOALS) $(
  # Linker scripts preprocessor (.lds.S -> .lds)
  # ---------------------------------------------------------------------------
  quiet_cmd_cpp_lds_S = LDS     $@
--      cmd_cpp_lds_S = $(CPP) $(cpp_flags) -P -C -U$(ARCH) \
-+      cmd_cpp_lds_S = $(CPP) $(EXTRA_LDSFLAGS) $(cpp_flags) -P -C -U$(ARCH) \
+-      cmd_cpp_lds_S = $(CPP) $(cpp_flags) -P -U$(ARCH) \
++      cmd_cpp_lds_S = $(CPP) $(EXTRA_LDSFLAGS) $(cpp_flags) -P -U$(ARCH) \
  	                     -D__ASSEMBLY__ -DLINKER_SCRIPT -o $@ $<
  
  $(obj)/%.lds: $(src)/%.lds.S FORCE
diff --git a/target/linux/generic/hack-4.14/230-openwrt_lzma_options.patch b/target/linux/generic/hack-4.14/230-openwrt_lzma_options.patch
index b3c444265d..3ae578c271 100644
--- a/target/linux/generic/hack-4.14/230-openwrt_lzma_options.patch
+++ b/target/linux/generic/hack-4.14/230-openwrt_lzma_options.patch
@@ -13,7 +13,7 @@  Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
 
 --- a/lib/decompress.c
 +++ b/lib/decompress.c
-@@ -48,6 +48,7 @@ static const struct compress_format comp
+@@ -49,6 +49,7 @@ static const struct compress_format comp
  	{ {0x1f, 0x9e}, "gzip", gunzip },
  	{ {0x42, 0x5a}, "bzip2", bunzip2 },
  	{ {0x5d, 0x00}, "lzma", unlzma },
@@ -23,7 +23,7 @@  Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
  	{ {0x02, 0x21}, "lz4", unlz4 },
 --- a/scripts/Makefile.lib
 +++ b/scripts/Makefile.lib
-@@ -344,7 +344,7 @@ cmd_bzip2 = (cat $(filter-out FORCE,$^)
+@@ -348,7 +348,7 @@ cmd_bzip2 = (cat $(filter-out FORCE,$^)
  
  quiet_cmd_lzma = LZMA    $@
  cmd_lzma = (cat $(filter-out FORCE,$^) | \
@@ -60,7 +60,7 @@  Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
  		echo "$output_file" | grep -q "\.xz$" \
                  && [ -x "`which xz 2> /dev/null`" ] \
                  && compr="xz --check=crc32 --lzma2=dict=1MiB"
-@@ -318,7 +318,7 @@ if [ ! -z ${output_file} ]; then
+@@ -320,7 +320,7 @@ if [ ! -z ${output_file} ]; then
  	if [ "${is_cpio_compressed}" = "compressed" ]; then
  		cat ${cpio_tfile} > ${output_file}
  	else
diff --git a/target/linux/generic/hack-4.14/250-netfilter_depends.patch b/target/linux/generic/hack-4.14/250-netfilter_depends.patch
index f6e1c1d303..17068f7dab 100644
--- a/target/linux/generic/hack-4.14/250-netfilter_depends.patch
+++ b/target/linux/generic/hack-4.14/250-netfilter_depends.patch
@@ -9,7 +9,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/net/netfilter/Kconfig
 +++ b/net/netfilter/Kconfig
-@@ -218,7 +218,6 @@ config NF_CONNTRACK_FTP
+@@ -223,7 +223,6 @@ config NF_CONNTRACK_FTP
  
  config NF_CONNTRACK_H323
  	tristate "H.323 protocol support"
@@ -17,7 +17,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	depends on NETFILTER_ADVANCED
  	help
  	  H.323 is a VoIP signalling protocol from ITU-T. As one of the most
-@@ -968,7 +967,6 @@ config NETFILTER_XT_TARGET_SECMARK
+@@ -1012,7 +1011,6 @@ config NETFILTER_XT_TARGET_SECMARK
  
  config NETFILTER_XT_TARGET_TCPMSS
  	tristate '"TCPMSS" target support'
diff --git a/target/linux/generic/hack-4.14/251-sound_kconfig.patch b/target/linux/generic/hack-4.14/251-sound_kconfig.patch
index d01bdfb9b3..e1e48ce5f3 100644
--- a/target/linux/generic/hack-4.14/251-sound_kconfig.patch
+++ b/target/linux/generic/hack-4.14/251-sound_kconfig.patch
@@ -16,7 +16,7 @@  Signed-off-by: John Crispin <john@phrozen.org>
 
 --- a/crypto/Kconfig
 +++ b/crypto/Kconfig
-@@ -32,7 +32,7 @@ config CRYPTO_FIPS
+@@ -33,7 +33,7 @@ config CRYPTO_FIPS
  	  this is.
  
  config CRYPTO_ALGAPI
@@ -25,7 +25,7 @@  Signed-off-by: John Crispin <john@phrozen.org>
  	select CRYPTO_ALGAPI2
  	help
  	  This option provides the API for cryptographic algorithms.
-@@ -41,7 +41,7 @@ config CRYPTO_ALGAPI2
+@@ -42,7 +42,7 @@ config CRYPTO_ALGAPI2
  	tristate
  
  config CRYPTO_AEAD
@@ -34,7 +34,7 @@  Signed-off-by: John Crispin <john@phrozen.org>
  	select CRYPTO_AEAD2
  	select CRYPTO_ALGAPI
  
-@@ -52,7 +52,7 @@ config CRYPTO_AEAD2
+@@ -53,7 +53,7 @@ config CRYPTO_AEAD2
  	select CRYPTO_RNG2
  
  config CRYPTO_BLKCIPHER
@@ -43,7 +43,7 @@  Signed-off-by: John Crispin <john@phrozen.org>
  	select CRYPTO_BLKCIPHER2
  	select CRYPTO_ALGAPI
  
-@@ -63,7 +63,7 @@ config CRYPTO_BLKCIPHER2
+@@ -64,7 +64,7 @@ config CRYPTO_BLKCIPHER2
  	select CRYPTO_WORKQUEUE
  
  config CRYPTO_HASH
@@ -52,7 +52,7 @@  Signed-off-by: John Crispin <john@phrozen.org>
  	select CRYPTO_HASH2
  	select CRYPTO_ALGAPI
  
-@@ -72,7 +72,7 @@ config CRYPTO_HASH2
+@@ -73,7 +73,7 @@ config CRYPTO_HASH2
  	select CRYPTO_ALGAPI2
  
  config CRYPTO_RNG
@@ -63,7 +63,7 @@  Signed-off-by: John Crispin <john@phrozen.org>
  
 --- a/drivers/bcma/Kconfig
 +++ b/drivers/bcma/Kconfig
-@@ -17,6 +17,7 @@ config BCMA
+@@ -15,6 +15,7 @@ menuconfig BCMA
  config BCMA_BLOCKIO
  	bool
  	depends on BCMA
@@ -92,7 +92,7 @@  Signed-off-by: John Crispin <john@phrozen.org>
  	bool
 --- a/lib/Kconfig
 +++ b/lib/Kconfig
-@@ -340,16 +340,16 @@ config BCH_CONST_T
+@@ -358,16 +358,16 @@ config BCH_CONST_T
  # Textsearch support is select'ed if needed
  #
  config TEXTSEARCH
@@ -177,15 +177,17 @@  Signed-off-by: John Crispin <john@phrozen.org>
  	bool "lib80211 debugging messages"
 --- a/sound/core/Kconfig
 +++ b/sound/core/Kconfig
-@@ -16,13 +16,13 @@ config SND_DMAENGINE_PCM
+@@ -16,7 +16,7 @@ config SND_DMAENGINE_PCM
  	tristate
  
  config SND_HWDEP
 -	tristate
 +	tristate "Sound hardware support"
  
- config SND_RAWMIDI
+ config SND_SEQ_DEVICE
  	tristate
+@@ -26,7 +26,7 @@ config SND_RAWMIDI
+ 	select SND_SEQ_DEVICE if SND_SEQUENCER != n
  
  config SND_COMPRESS_OFFLOAD
 -	tristate
diff --git a/target/linux/generic/hack-4.14/259-regmap_dynamic.patch b/target/linux/generic/hack-4.14/259-regmap_dynamic.patch
index 85c9d79159..1c6e78df30 100644
--- a/target/linux/generic/hack-4.14/259-regmap_dynamic.patch
+++ b/target/linux/generic/hack-4.14/259-regmap_dynamic.patch
@@ -14,18 +14,18 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/drivers/base/regmap/Kconfig
 +++ b/drivers/base/regmap/Kconfig
-@@ -3,9 +3,8 @@
+@@ -4,9 +4,8 @@
  # subsystems should select the appropriate symbols.
  
  config REGMAP
--	default y if (REGMAP_I2C || REGMAP_SPI || REGMAP_SPMI || REGMAP_AC97 || REGMAP_MMIO || REGMAP_IRQ)
+-	default y if (REGMAP_I2C || REGMAP_SPI || REGMAP_SPMI || REGMAP_W1 || REGMAP_AC97 || REGMAP_MMIO || REGMAP_IRQ)
  	select IRQ_DOMAIN if REGMAP_IRQ
 -	bool
 +	tristate "Regmap"
  
  config REGCACHE_COMPRESSED
  	select LZO_COMPRESS
-@@ -16,19 +15,25 @@ config REGMAP_AC97
+@@ -17,23 +16,30 @@ config REGMAP_AC97
  	tristate
  
  config REGMAP_I2C
@@ -46,6 +46,11 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	tristate
  	depends on SPMI
  
+ config REGMAP_W1
++	select REGMAP
+ 	tristate
+ 	depends on W1
+ 
  config REGMAP_MMIO
 -	tristate
 +	tristate "Regmap MMIO"
@@ -56,7 +61,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	bool
 --- a/drivers/base/regmap/Makefile
 +++ b/drivers/base/regmap/Makefile
-@@ -1,10 +1,14 @@
+@@ -2,10 +2,14 @@
  # For include/trace/define_trace.h to include trace.h
  CFLAGS_regmap.o := -I$(src)
  
@@ -85,7 +90,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  #include <linux/mutex.h>
  #include <linux/err.h>
  #include <linux/of.h>
-@@ -2913,3 +2914,5 @@ static int __init regmap_initcall(void)
+@@ -2926,3 +2927,5 @@ static int __init regmap_initcall(void)
  	return 0;
  }
  postcore_initcall(regmap_initcall);
@@ -93,7 +98,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +MODULE_LICENSE("GPL");
 --- a/include/linux/regmap.h
 +++ b/include/linux/regmap.h
-@@ -135,7 +135,7 @@ struct reg_sequence {
+@@ -139,7 +139,7 @@ struct reg_sequence {
  	pollret ?: ((cond) ? 0 : -ETIMEDOUT); \
  })
  
diff --git a/target/linux/generic/hack-4.14/260-crypto_test_dependencies.patch b/target/linux/generic/hack-4.14/260-crypto_test_dependencies.patch
index f2570f5988..8523fc5374 100644
--- a/target/linux/generic/hack-4.14/260-crypto_test_dependencies.patch
+++ b/target/linux/generic/hack-4.14/260-crypto_test_dependencies.patch
@@ -14,7 +14,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/crypto/Kconfig
 +++ b/crypto/Kconfig
-@@ -132,12 +132,12 @@ config CRYPTO_MANAGER
+@@ -143,13 +143,13 @@ config CRYPTO_MANAGER
  	  cbc(aes).
  
  config CRYPTO_MANAGER2
@@ -24,16 +24,18 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 -	select CRYPTO_BLKCIPHER2
 -	select CRYPTO_AKCIPHER2
 -	select CRYPTO_KPP2
+-	select CRYPTO_ACOMP2
 +	def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y && !CRYPTO_MANAGER_DISABLE_TESTS)
 +	select CRYPTO_AEAD2 if !CRYPTO_MANAGER_DISABLE_TESTS
 +	select CRYPTO_HASH2 if !CRYPTO_MANAGER_DISABLE_TESTS
 +	select CRYPTO_BLKCIPHER2 if !CRYPTO_MANAGER_DISABLE_TESTS
 +	select CRYPTO_AKCIPHER2 if !CRYPTO_MANAGER_DISABLE_TESTS
 +	select CRYPTO_KPP2 if !CRYPTO_MANAGER_DISABLE_TESTS
++	select CRYPTO_ACOMP2 if !CRYPTO_MANAGER_DISABLE_TESTS
  
  config CRYPTO_USER
  	tristate "Userspace cryptographic algorithm configuration"
-@@ -150,7 +150,6 @@ config CRYPTO_USER
+@@ -162,7 +162,6 @@ config CRYPTO_USER
  config CRYPTO_MANAGER_DISABLE_TESTS
  	bool "Disable run-time self tests"
  	default y
@@ -43,18 +45,14 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	  algorithm registration.
 --- a/crypto/algboss.c
 +++ b/crypto/algboss.c
-@@ -248,12 +248,16 @@ static int cryptomgr_schedule_test(struc
+@@ -248,8 +248,12 @@ static int cryptomgr_schedule_test(struc
  	type = alg->cra_flags;
  
- 	/* This piece of crap needs to disappear into per-type test hooks. */
+ 	/* Do not test internal algorithms. */
 +#ifdef CONFIG_CRYPTO_MANAGER_DISABLE_TESTS
 +	type |= CRYPTO_ALG_TESTED;
 +#else
- 	if (!((type ^ CRYPTO_ALG_TYPE_BLKCIPHER) &
- 	      CRYPTO_ALG_TYPE_BLKCIPHER_MASK) && !(type & CRYPTO_ALG_GENIV) &&
- 	    ((alg->cra_flags & CRYPTO_ALG_TYPE_MASK) ==
- 	     CRYPTO_ALG_TYPE_BLKCIPHER ? alg->cra_blkcipher.ivsize :
- 					 alg->cra_ablkcipher.ivsize))
+ 	if (type & CRYPTO_ALG_INTERNAL)
  		type |= CRYPTO_ALG_TESTED;
 +#endif
  
diff --git a/target/linux/generic/hack-4.14/280-rfkill-stubs.patch b/target/linux/generic/hack-4.14/280-rfkill-stubs.patch
index b4dcb45cf0..85d01a6d10 100644
--- a/target/linux/generic/hack-4.14/280-rfkill-stubs.patch
+++ b/target/linux/generic/hack-4.14/280-rfkill-stubs.patch
@@ -26,10 +26,10 @@  Signed-off-by: John Crispin <john@phrozen.org>
   * @name: name of the struct -- the string is not copied internally
 --- a/net/Makefile
 +++ b/net/Makefile
-@@ -51,7 +51,7 @@ obj-$(CONFIG_MAC80211)		+= mac80211/
- obj-$(CONFIG_TIPC)		+= tipc/
+@@ -53,7 +53,7 @@ obj-$(CONFIG_TIPC)		+= tipc/
  obj-$(CONFIG_NETLABEL)		+= netlabel/
  obj-$(CONFIG_IUCV)		+= iucv/
+ obj-$(CONFIG_SMC)		+= smc/
 -obj-$(CONFIG_RFKILL)		+= rfkill/
 +obj-$(CONFIG_RFKILL_FULL)	+= rfkill/
  obj-$(CONFIG_NET_9P)		+= 9p/
@@ -66,15 +66,6 @@  Signed-off-by: John Crispin <john@phrozen.org>
  	depends on INPUT = y || RFKILL = INPUT
  	default y if !EXPERT
  
- config RFKILL_REGULATOR
- 	tristate "Generic rfkill regulator driver"
--	depends on RFKILL || !RFKILL
-+	depends on RFKILL_FULL || !RFKILL_FULL
- 	depends on REGULATOR
- 	help
-           This options enable controlling radio transmitters connected to
-@@ -36,7 +40,7 @@ config RFKILL_REGULATOR
- 
  config RFKILL_GPIO
  	tristate "GPIO RFKILL driver"
 -	depends on RFKILL
@@ -84,11 +75,10 @@  Signed-off-by: John Crispin <john@phrozen.org>
  	help
 --- a/net/rfkill/Makefile
 +++ b/net/rfkill/Makefile
-@@ -4,6 +4,6 @@
+@@ -4,5 +4,5 @@
  
  rfkill-y			+= core.o
  rfkill-$(CONFIG_RFKILL_INPUT)	+= input.o
 -obj-$(CONFIG_RFKILL)		+= rfkill.o
 +obj-$(CONFIG_RFKILL_FULL)	+= rfkill.o
- obj-$(CONFIG_RFKILL_REGULATOR)	+= rfkill-regulator.o
  obj-$(CONFIG_RFKILL_GPIO)	+= rfkill-gpio.o
diff --git a/target/linux/generic/hack-4.14/301-mips_image_cmdline_hack.patch b/target/linux/generic/hack-4.14/301-mips_image_cmdline_hack.patch
index a3df4fbe3a..01caff5b89 100644
--- a/target/linux/generic/hack-4.14/301-mips_image_cmdline_hack.patch
+++ b/target/linux/generic/hack-4.14/301-mips_image_cmdline_hack.patch
@@ -10,7 +10,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -1150,6 +1150,10 @@ config SYNC_R4K
+@@ -1157,6 +1157,10 @@ config SYNC_R4K
  config MIPS_MACHINE
  	def_bool n
  
diff --git a/target/linux/generic/hack-4.14/321-powerpc_crtsavres_prereq.patch b/target/linux/generic/hack-4.14/321-powerpc_crtsavres_prereq.patch
index c22a4823fe..3f81b2e05f 100644
--- a/target/linux/generic/hack-4.14/321-powerpc_crtsavres_prereq.patch
+++ b/target/linux/generic/hack-4.14/321-powerpc_crtsavres_prereq.patch
@@ -16,11 +16,23 @@  Signed-off-by: Alexandros C. Couloumbis <alex@ozo.com>
 
 --- a/arch/powerpc/Makefile
 +++ b/arch/powerpc/Makefile
-@@ -179,7 +179,6 @@ else
- CHECKFLAGS	+= -D__LITTLE_ENDIAN__
- endif
+@@ -59,19 +59,6 @@ machine-$(CONFIG_PPC64) += 64
+ machine-$(CONFIG_CPU_LITTLE_ENDIAN) += le
+ UTS_MACHINE := $(subst $(space),,$(machine-y))
  
+-# XXX This needs to be before we override LD below
+-ifdef CONFIG_PPC32
 -KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
- 
- ifeq ($(CONFIG_476FPE_ERR46),y)
- 	KBUILD_LDFLAGS_MODULE += --ppc476-workaround \
+-else
+-ifeq ($(call ld-ifversion, -ge, 225000000, y),y)
+-# Have the linker provide sfpr if possible.
+-# There is a corresponding test in arch/powerpc/lib/Makefile
+-KBUILD_LDFLAGS_MODULE += --save-restore-funcs
+-else
+-KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
+-endif
+-endif
+-
+ ifeq ($(CONFIG_CPU_LITTLE_ENDIAN),y)
+ override LD	+= -EL
+ LDEMULATION	:= lppc
diff --git a/target/linux/generic/hack-4.14/640-bridge-only-accept-EAP-locally.patch b/target/linux/generic/hack-4.14/640-bridge-only-accept-EAP-locally.patch
index ba87420b32..83c9cf739f 100644
--- a/target/linux/generic/hack-4.14/640-bridge-only-accept-EAP-locally.patch
+++ b/target/linux/generic/hack-4.14/640-bridge-only-accept-EAP-locally.patch
@@ -13,7 +13,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/net/bridge/br_input.c
 +++ b/net/bridge/br_input.c
-@@ -164,11 +164,14 @@ int br_handle_frame_finish(struct net *n
+@@ -166,11 +166,14 @@ int br_handle_frame_finish(struct net *n
  		}
  	}
  
diff --git a/target/linux/generic/hack-4.14/641-bridge_port_isolate.patch b/target/linux/generic/hack-4.14/641-bridge_port_isolate.patch
index 56259329d2..ab9f476577 100644
--- a/target/linux/generic/hack-4.14/641-bridge_port_isolate.patch
+++ b/target/linux/generic/hack-4.14/641-bridge_port_isolate.patch
@@ -15,11 +15,11 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/include/linux/if_bridge.h
 +++ b/include/linux/if_bridge.h
-@@ -47,6 +47,7 @@ struct br_ip_list {
- #define BR_PROXYARP_WIFI	BIT(10)
- #define BR_MCAST_FLOOD		BIT(11)
+@@ -49,6 +49,7 @@ struct br_ip_list {
  #define BR_MULTICAST_TO_UNICAST	BIT(12)
-+#define BR_ISOLATE_MODE		BIT(13)
+ #define BR_VLAN_TUNNEL		BIT(13)
+ #define BR_BCAST_FLOOD		BIT(14)
++#define BR_ISOLATE_MODE		BIT(15)
  
  #define BR_DEFAULT_AGEING_TIME	(300 * HZ)
  
@@ -35,18 +35,18 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	if (to && should_deliver(to, skb)) {
  		if (local_rcv)
  			deliver_clone(to, skb, local_orig);
-@@ -206,6 +209,8 @@ void br_flood(struct net_bridge *br, str
+@@ -183,6 +186,8 @@ void br_flood(struct net_bridge *br, str
  	struct net_bridge_port *p;
  
  	list_for_each_entry_rcu(p, &br->port_list, list) {
 +		if (!local_orig && (p->flags & BR_ISOLATE_MODE))
 +			continue;
- 		/* Do not flood unicast traffic to ports that turn it off */
- 		if (pkt_type == BR_PKT_UNICAST && !(p->flags & BR_FLOOD))
- 			continue;
+ 		/* Do not flood unicast traffic to ports that turn it off, nor
+ 		 * other traffic if flood off, except for traffic we originate
+ 		 */
 --- a/net/bridge/br_input.c
 +++ b/net/bridge/br_input.c
-@@ -175,6 +175,9 @@ int br_handle_frame_finish(struct net *n
+@@ -177,6 +177,9 @@ int br_handle_frame_finish(struct net *n
  	if (IS_ENABLED(CONFIG_INET) && skb->protocol == htons(ETH_P_ARP))
  		br_do_proxy_arp(skb, br, vid, p);
  
@@ -58,18 +58,18 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  		mdst = br_mdb_get(br, skb, vid);
 --- a/net/bridge/br_sysfs_if.c
 +++ b/net/bridge/br_sysfs_if.c
-@@ -172,6 +172,7 @@ BRPORT_ATTR_FLAG(unicast_flood, BR_FLOOD
- BRPORT_ATTR_FLAG(proxyarp, BR_PROXYARP);
+@@ -174,6 +174,7 @@ BRPORT_ATTR_FLAG(proxyarp, BR_PROXYARP);
  BRPORT_ATTR_FLAG(proxyarp_wifi, BR_PROXYARP_WIFI);
  BRPORT_ATTR_FLAG(multicast_flood, BR_MCAST_FLOOD);
+ BRPORT_ATTR_FLAG(broadcast_flood, BR_BCAST_FLOOD);
 +BRPORT_ATTR_FLAG(isolate_mode, BR_ISOLATE_MODE);
  
  #ifdef CONFIG_BRIDGE_IGMP_SNOOPING
  static ssize_t show_multicast_router(struct net_bridge_port *p, char *buf)
-@@ -220,6 +221,7 @@ static const struct brport_attribute *br
- 	&brport_attr_proxyarp,
+@@ -223,6 +224,7 @@ static const struct brport_attribute *br
  	&brport_attr_proxyarp_wifi,
  	&brport_attr_multicast_flood,
+ 	&brport_attr_broadcast_flood,
 +	&brport_attr_isolate_mode,
  	NULL
  };
diff --git a/target/linux/generic/hack-4.14/651-wireless_mesh_header.patch b/target/linux/generic/hack-4.14/651-wireless_mesh_header.patch
index a4699ae8ed..f545d8ebbc 100644
--- a/target/linux/generic/hack-4.14/651-wireless_mesh_header.patch
+++ b/target/linux/generic/hack-4.14/651-wireless_mesh_header.patch
@@ -11,7 +11,7 @@  Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
 
 --- a/include/linux/netdevice.h
 +++ b/include/linux/netdevice.h
-@@ -137,8 +137,8 @@ static inline bool dev_xmit_complete(int
+@@ -138,8 +138,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.14/660-fq_codel_defaults.patch b/target/linux/generic/hack-4.14/660-fq_codel_defaults.patch
index 3e6473056c..3e27351fa6 100644
--- a/target/linux/generic/hack-4.14/660-fq_codel_defaults.patch
+++ b/target/linux/generic/hack-4.14/660-fq_codel_defaults.patch
@@ -13,7 +13,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/net/sched/sch_fq_codel.c
 +++ b/net/sched/sch_fq_codel.c
-@@ -479,7 +479,11 @@ static int fq_codel_init(struct Qdisc *s
+@@ -465,7 +465,11 @@ static int fq_codel_init(struct Qdisc *s
  
  	sch->limit = 10*1024;
  	q->flows_cnt = 1024;
@@ -24,4 +24,4 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +#endif
  	q->drop_batch_size = 64;
  	q->quantum = psched_mtu(qdisc_dev(sch));
- 	q->perturbation = prandom_u32();
+ 	INIT_LIST_HEAD(&q->new_flows);
diff --git a/target/linux/generic/hack-4.14/661-use_fq_codel_by_default.patch b/target/linux/generic/hack-4.14/661-use_fq_codel_by_default.patch
index 7a249e37f3..ae911db870 100644
--- a/target/linux/generic/hack-4.14/661-use_fq_codel_by_default.patch
+++ b/target/linux/generic/hack-4.14/661-use_fq_codel_by_default.patch
@@ -14,7 +14,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/include/net/sch_generic.h
 +++ b/include/net/sch_generic.h
-@@ -339,12 +339,13 @@ extern struct Qdisc_ops noop_qdisc_ops;
+@@ -369,12 +369,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;
@@ -44,7 +44,7 @@  Signed-off-by: Felix Fietkau <nbd@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
-@@ -1978,7 +1978,7 @@ static int __init pktsched_init(void)
+@@ -2014,7 +2014,7 @@ static int __init pktsched_init(void)
  		return err;
  	}
  
@@ -55,7 +55,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	register_qdisc(&pfifo_head_drop_qdisc_ops);
 --- a/net/sched/sch_fq_codel.c
 +++ b/net/sched/sch_fq_codel.c
-@@ -709,7 +709,7 @@ static const struct Qdisc_class_ops fq_c
+@@ -694,7 +694,7 @@ static const struct Qdisc_class_ops fq_c
  	.walk		=	fq_codel_walk,
  };
  
@@ -64,7 +64,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	.cl_ops		=	&fq_codel_class_ops,
  	.id		=	"fq_codel",
  	.priv_size	=	sizeof(struct fq_codel_sched_data),
-@@ -724,6 +724,7 @@ static struct Qdisc_ops fq_codel_qdisc_o
+@@ -709,6 +709,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@nbd.name>
  {
 --- a/net/sched/sch_generic.c
 +++ b/net/sched/sch_generic.c
-@@ -31,7 +31,7 @@
- #include <net/dst.h>
+@@ -32,7 +32,7 @@
+ #include <trace/events/qdisc.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@nbd.name>
  EXPORT_SYMBOL(default_qdisc_ops);
  
  /* Main transmission queue. */
-@@ -760,7 +760,7 @@ static void attach_one_default_qdisc(str
+@@ -764,7 +764,7 @@ static void attach_one_default_qdisc(str
  				     void *_unused)
  {
  	struct Qdisc *qdisc;
diff --git a/target/linux/generic/hack-4.14/662-remove_pfifo_fast.patch b/target/linux/generic/hack-4.14/662-remove_pfifo_fast.patch
index d9fba6288d..7b6e38da29 100644
--- a/target/linux/generic/hack-4.14/662-remove_pfifo_fast.patch
+++ b/target/linux/generic/hack-4.14/662-remove_pfifo_fast.patch
@@ -10,7 +10,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/net/sched/sch_generic.c
 +++ b/net/sched/sch_generic.c
-@@ -449,146 +449,6 @@ struct Qdisc_ops noqueue_qdisc_ops __rea
+@@ -453,146 +453,6 @@ struct Qdisc_ops noqueue_qdisc_ops __rea
  	.owner		=	THIS_MODULE,
  };
  
diff --git a/target/linux/generic/hack-4.14/700-swconfig_switch_drivers.patch b/target/linux/generic/hack-4.14/700-swconfig_switch_drivers.patch
index 760ba4fc80..0ec197fbb0 100644
--- a/target/linux/generic/hack-4.14/700-swconfig_switch_drivers.patch
+++ b/target/linux/generic/hack-4.14/700-swconfig_switch_drivers.patch
@@ -12,9 +12,9 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/drivers/net/phy/Kconfig
 +++ b/drivers/net/phy/Kconfig
-@@ -147,6 +147,89 @@ config MDIO_XGENE
- 	  This module provides a driver for the MDIO busses found in the
- 	  APM X-Gene SoC's.
+@@ -198,6 +198,89 @@ config LED_TRIGGER_PHY
+ 		<Speed in megabits>Mbps or <Speed in gigabits>Gbps
+ 
  
 +comment "Switch configuration API + drivers"
 +
@@ -101,11 +101,11 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +
  comment "MII PHY device drivers"
  
- config AMD_PHY
+ config SFP
 --- a/drivers/net/phy/Makefile
 +++ b/drivers/net/phy/Makefile
-@@ -5,6 +5,21 @@ libphy-$(CONFIG_SWPHY)		+= swphy.o
- 
+@@ -22,6 +22,21 @@ libphy-$(CONFIG_LED_TRIGGER_PHY)	+= phy_
+ obj-$(CONFIG_PHYLINK)		+= phylink.o
  obj-$(CONFIG_PHYLIB)		+= libphy.o
  
 +obj-$(CONFIG_SWCONFIG)		+= swconfig.o
@@ -126,13 +126,3 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  obj-$(CONFIG_MDIO_BCM_IPROC)	+= mdio-bcm-iproc.o
  obj-$(CONFIG_MDIO_BCM_UNIMAC)	+= mdio-bcm-unimac.o
  obj-$(CONFIG_MDIO_BITBANG)	+= mdio-bitbang.o
---- a/include/uapi/linux/Kbuild
-+++ b/include/uapi/linux/Kbuild
-@@ -399,6 +399,7 @@ header-y += stddef.h
- header-y += string.h
- header-y += suspend_ioctls.h
- header-y += swab.h
-+header-y += switch.h
- header-y += synclink.h
- header-y += sync_file.h
- header-y += sysctl.h
diff --git a/target/linux/generic/hack-4.14/702-phy_add_aneg_done_function.patch b/target/linux/generic/hack-4.14/702-phy_add_aneg_done_function.patch
index 8a2b51a4f7..9c249ca4ce 100644
--- a/target/linux/generic/hack-4.14/702-phy_add_aneg_done_function.patch
+++ b/target/linux/generic/hack-4.14/702-phy_add_aneg_done_function.patch
@@ -1,6 +1,6 @@ 
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -495,6 +495,12 @@ struct phy_driver {
+@@ -547,6 +547,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
-@@ -1312,6 +1312,9 @@ int genphy_update_link(struct phy_device
+@@ -1437,6 +1437,9 @@ int genphy_update_link(struct phy_device
  {
  	int status;
  
diff --git a/target/linux/generic/hack-4.14/710-phy-add-mdio_register_board_info.patch b/target/linux/generic/hack-4.14/710-phy-add-mdio_register_board_info.patch
deleted file mode 100644
index 55607bc6ea..0000000000
diff --git a/target/linux/generic/hack-4.14/721-phy_packets.patch b/target/linux/generic/hack-4.14/721-phy_packets.patch
index 0d47c7621b..f6ac7147f0 100644
--- a/target/linux/generic/hack-4.14/721-phy_packets.patch
+++ b/target/linux/generic/hack-4.14/721-phy_packets.patch
@@ -15,7 +15,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/include/linux/netdevice.h
 +++ b/include/linux/netdevice.h
-@@ -1398,6 +1398,7 @@ enum netdev_priv_flags {
+@@ -1386,6 +1386,7 @@ enum netdev_priv_flags {
  	IFF_RXFH_CONFIGURED		= 1<<25,
  	IFF_PHONY_HEADROOM		= 1<<26,
  	IFF_MACSEC			= 1<<27,
@@ -23,7 +23,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  };
  
  #define IFF_802_1Q_VLAN			IFF_802_1Q_VLAN
-@@ -1427,6 +1428,7 @@ enum netdev_priv_flags {
+@@ -1415,6 +1416,7 @@ enum netdev_priv_flags {
  #define IFF_TEAM			IFF_TEAM
  #define IFF_RXFH_CONFIGURED		IFF_RXFH_CONFIGURED
  #define IFF_MACSEC			IFF_MACSEC
@@ -31,8 +31,8 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
  /**
   *	struct net_device - The DEVICE structure.
-@@ -1713,6 +1715,11 @@ struct net_device {
- 	const struct ndisc_ops *ndisc_ops;
+@@ -1701,6 +1703,11 @@ struct net_device {
+ 	const struct xfrmdev_ops *xfrmdev_ops;
  #endif
  
 +#ifdef CONFIG_ETHERNET_PACKET_MANGLE
@@ -43,7 +43,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	const struct header_ops *header_ops;
  
  	unsigned int		flags;
-@@ -1780,6 +1787,10 @@ struct net_device {
+@@ -1770,6 +1777,10 @@ struct net_device {
  	struct mpls_dev __rcu	*mpls_ptr;
  #endif
  
@@ -56,7 +56,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
   */
 --- a/include/linux/skbuff.h
 +++ b/include/linux/skbuff.h
-@@ -2334,6 +2334,10 @@ static inline int pskb_trim(struct sk_bu
+@@ -2492,6 +2492,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@nbd.name>
  /**
   *	pskb_trim_unique - remove end from a paged unique (not cloned) buffer
   *	@skb: buffer to alter
-@@ -2454,16 +2458,6 @@ static inline struct sk_buff *dev_alloc_
+@@ -2622,16 +2626,6 @@ static inline struct sk_buff *dev_alloc_
  }
  
  
@@ -101,7 +101,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	help
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -2942,10 +2942,20 @@ static int xmit_one(struct sk_buff *skb,
+@@ -2974,10 +2974,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);
  
@@ -136,7 +136,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
  #include <net/protocol.h>
  #include <net/dst.h>
-@@ -529,6 +530,22 @@ skb_fail:
+@@ -503,6 +504,22 @@ skb_fail:
  }
  EXPORT_SYMBOL(__napi_alloc_skb);
  
@@ -161,7 +161,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  {
 --- a/net/ethernet/eth.c
 +++ b/net/ethernet/eth.c
-@@ -171,6 +171,12 @@ __be16 eth_type_trans(struct sk_buff *sk
+@@ -172,6 +172,12 @@ __be16 eth_type_trans(struct sk_buff *sk
  	const struct ethhdr *eth;
  
  	skb->dev = dev;
diff --git a/target/linux/generic/hack-4.14/773-bgmac-add-srab-switch.patch b/target/linux/generic/hack-4.14/773-bgmac-add-srab-switch.patch
index e6ad0a51dc..a6ba81fb09 100644
--- a/target/linux/generic/hack-4.14/773-bgmac-add-srab-switch.patch
+++ b/target/linux/generic/hack-4.14/773-bgmac-add-srab-switch.patch
@@ -14,25 +14,25 @@  Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
 
 --- a/drivers/net/ethernet/broadcom/bgmac-bcma.c
 +++ b/drivers/net/ethernet/broadcom/bgmac-bcma.c
-@@ -236,6 +236,7 @@ static int bgmac_probe(struct bcma_devic
+@@ -268,6 +268,7 @@ static int bgmac_probe(struct bcma_devic
  		bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST;
  		bgmac->feature_flags |= BGMAC_FEAT_NO_RESET;
  		bgmac->feature_flags |= BGMAC_FEAT_FORCE_SPEED_2500;
 +		bgmac->feature_flags |= BGMAC_FEAT_SRAB;
  		break;
- 	case BCMA_CHIP_ID_BCM53573:
+ 	default:
  		bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST;
 --- a/drivers/net/ethernet/broadcom/bgmac.c
 +++ b/drivers/net/ethernet/broadcom/bgmac.c
-@@ -11,6 +11,7 @@
- 
+@@ -12,6 +12,7 @@
  #include <linux/bcma/bcma.h>
  #include <linux/etherdevice.h>
+ #include <linux/interrupt.h>
 +#include <linux/platform_data/b53.h>
  #include <linux/bcm47xx_nvram.h>
- #include "bgmac.h"
- 
-@@ -1387,6 +1388,17 @@ static const struct ethtool_ops bgmac_et
+ #include <linux/phy.h>
+ #include <linux/phy_fixed.h>
+@@ -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@hauke-m.de>
  /**************************************************
   * MII
   **************************************************/
-@@ -1533,6 +1545,14 @@ int bgmac_enet_probe(struct bgmac *bgmac
+@@ -1538,6 +1550,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@hauke-m.de>
  	err = register_netdev(bgmac->net_dev);
  	if (err) {
  		dev_err(bgmac->dev, "Cannot register net device\n");
-@@ -1555,6 +1575,10 @@ EXPORT_SYMBOL_GPL(bgmac_enet_probe);
+@@ -1560,6 +1580,10 @@ EXPORT_SYMBOL_GPL(bgmac_enet_probe);
  
  void bgmac_enet_remove(struct bgmac *bgmac)
  {
@@ -78,18 +78,18 @@  Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
  	netif_napi_del(&bgmac->napi);
 --- a/drivers/net/ethernet/broadcom/bgmac.h
 +++ b/drivers/net/ethernet/broadcom/bgmac.h
-@@ -409,6 +409,7 @@
- #define BGMAC_FEAT_CC4_IF_SW_TYPE	BIT(17)
+@@ -427,6 +427,7 @@
  #define BGMAC_FEAT_CC4_IF_SW_TYPE_RGMII	BIT(18)
  #define BGMAC_FEAT_CC7_IF_TYPE_RGMII	BIT(19)
-+#define BGMAC_FEAT_SRAB			BIT(20)
+ #define BGMAC_FEAT_IDM_MASK		BIT(20)
++#define BGMAC_FEAT_SRAB			BIT(21)
  
  struct bgmac_slot_info {
  	union {
-@@ -513,6 +514,9 @@ struct bgmac {
- 	u32 (*get_bus_clock)(struct bgmac *bgmac);
+@@ -532,6 +533,9 @@ struct bgmac {
  	void (*cmn_maskset32)(struct bgmac *bgmac, u16 offset, u32 mask,
  			      u32 set);
+ 	int (*phy_connect)(struct bgmac *bgmac);
 +
 +	/* platform device for associated switch */
 +	struct platform_device *b53_device;
diff --git a/target/linux/generic/hack-4.14/835-misc-owl_loader.patch b/target/linux/generic/hack-4.14/835-misc-owl_loader.patch
index 07cd4e580a..bf7f7d5cba 100644
--- a/target/linux/generic/hack-4.14/835-misc-owl_loader.patch
+++ b/target/linux/generic/hack-4.14/835-misc-owl_loader.patch
@@ -42,7 +42,7 @@  Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
  	depends on PCI
 --- a/drivers/misc/Makefile
 +++ b/drivers/misc/Makefile
-@@ -12,6 +12,7 @@ obj-$(CONFIG_ATMEL_TCLIB)	+= atmel_tclib
+@@ -13,6 +13,7 @@ obj-$(CONFIG_ATMEL_TCLIB)	+= atmel_tclib
  obj-$(CONFIG_DUMMY_IRQ)		+= dummy-irq.o
  obj-$(CONFIG_ICS932S401)	+= ics932s401.o
  obj-$(CONFIG_LKDTM)		+= lkdtm.o
diff --git a/target/linux/generic/hack-4.14/901-debloat_sock_diag.patch b/target/linux/generic/hack-4.14/901-debloat_sock_diag.patch
index 98ac5afea6..d854865d60 100644
--- a/target/linux/generic/hack-4.14/901-debloat_sock_diag.patch
+++ b/target/linux/generic/hack-4.14/901-debloat_sock_diag.patch
@@ -16,7 +16,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/net/Kconfig
 +++ b/net/Kconfig
-@@ -95,6 +95,9 @@ source "net/netlabel/Kconfig"
+@@ -97,6 +97,9 @@ source "net/netlabel/Kconfig"
  
  endif # if INET
  
@@ -28,20 +28,40 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	help
 --- a/net/core/Makefile
 +++ b/net/core/Makefile
-@@ -9,8 +9,9 @@ obj-$(CONFIG_SYSCTL) += sysctl_net_core.
+@@ -10,9 +10,10 @@ obj-$(CONFIG_SYSCTL) += sysctl_net_core.
  
  obj-y		     += dev.o ethtool.o dev_addr_lists.o dst.o netevent.o \
  			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
+-			sock_diag.o dev_ioctl.o tso.o sock_reuseport.o \
++ 			dev_ioctl.o tso.o sock_reuseport.o \
+ 			fib_notifier.o
  
-+obj-$(CONFIG_SOCK_DIAG) += sock_diag.o
- obj-$(CONFIG_XFRM) += flow.o
++obj-$(CONFIG_SOCK_DIAG) += sock_diag.o 
  obj-y += net-sysfs.o
  obj-$(CONFIG_PROC_FS) += net-procfs.o
+ obj-$(CONFIG_NET_PKTGEN) += pktgen.o
 --- a/net/core/sock.c
 +++ b/net/core/sock.c
-@@ -1457,9 +1457,11 @@ void sk_destruct(struct sock *sk)
+@@ -528,6 +528,18 @@ discard_and_relse:
+ }
+ EXPORT_SYMBOL(__sk_receive_skb);
+ 
++u64 sock_gen_cookie(struct sock *sk)
++{
++	while (1) {
++		u64 res = atomic64_read(&sk->sk_cookie);
++
++		if (res)
++			return res;
++		res = atomic64_inc_return(&sock_net(sk)->cookie_gen);
++		atomic64_cmpxchg(&sk->sk_cookie, 0, res);
++	}
++}
++
+ struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie)
+ {
+ 	struct dst_entry *dst = __sk_dst_get(sk);
+@@ -1597,9 +1609,11 @@ void sk_destruct(struct sock *sk)
  
  static void __sk_free(struct sock *sk)
  {
@@ -53,9 +73,30 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  		sk_destruct(sk);
  }
  
+--- a/net/core/sock_diag.c
++++ b/net/core/sock_diag.c
+@@ -19,18 +19,6 @@ static int (*inet_rcv_compat)(struct sk_
+ static DEFINE_MUTEX(sock_diag_table_mutex);
+ static struct workqueue_struct *broadcast_wq;
+ 
+-u64 sock_gen_cookie(struct sock *sk)
+-{
+-	while (1) {
+-		u64 res = atomic64_read(&sk->sk_cookie);
+-
+-		if (res)
+-			return res;
+-		res = atomic64_inc_return(&sock_net(sk)->cookie_gen);
+-		atomic64_cmpxchg(&sk->sk_cookie, 0, res);
+-	}
+-}
+-
+ int sock_diag_check_cookie(struct sock *sk, const __u32 *cookie)
+ {
+ 	u64 res;
 --- a/net/ipv4/Kconfig
 +++ b/net/ipv4/Kconfig
-@@ -408,6 +408,7 @@ config INET_XFRM_MODE_BEET
+@@ -420,6 +420,7 @@ config INET_XFRM_MODE_BEET
  
  config INET_DIAG
  	tristate "INET: socket monitoring interface"
diff --git a/target/linux/generic/hack-4.14/902-debloat_proc.patch b/target/linux/generic/hack-4.14/902-debloat_proc.patch
index 6881d5faf4..a624cb1c45 100644
--- a/target/linux/generic/hack-4.14/902-debloat_proc.patch
+++ b/target/linux/generic/hack-4.14/902-debloat_proc.patch
@@ -29,7 +29,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/fs/locks.c
 +++ b/fs/locks.c
-@@ -2802,6 +2802,8 @@ static const struct file_operations proc
+@@ -2805,6 +2805,8 @@ static const struct file_operations proc
  
  static int __init proc_locks_init(void)
  {
@@ -63,7 +63,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  }
 --- a/fs/proc/proc_tty.c
 +++ b/fs/proc/proc_tty.c
-@@ -143,7 +143,10 @@ static const struct file_operations proc
+@@ -144,7 +144,10 @@ static const struct file_operations proc
  void proc_tty_register_driver(struct tty_driver *driver)
  {
  	struct proc_dir_entry *ent;
@@ -75,7 +75,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	if (!driver->driver_name || driver->proc_entry ||
  	    !driver->ops->proc_fops)
  		return;
-@@ -160,6 +163,9 @@ void proc_tty_unregister_driver(struct t
+@@ -161,6 +164,9 @@ void proc_tty_unregister_driver(struct t
  {
  	struct proc_dir_entry *ent;
  
@@ -85,7 +85,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	ent = driver->proc_entry;
  	if (!ent)
  		return;
-@@ -174,6 +180,9 @@ void proc_tty_unregister_driver(struct t
+@@ -175,6 +181,9 @@ void proc_tty_unregister_driver(struct t
   */
  void __init proc_tty_init(void)
  {
@@ -132,30 +132,30 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	do {								\
 --- a/ipc/msg.c
 +++ b/ipc/msg.c
-@@ -1058,6 +1058,9 @@ void __init msg_init(void)
+@@ -1208,6 +1208,9 @@ int __init msg_init(void)
  {
- 	msg_init_ns(&init_ipc_ns);
+ 	const int err = msg_init_ns(&init_ipc_ns);
  
 +	if (IS_ENABLED(CONFIG_PROC_STRIPPED))
-+		return;
++		return err;
 +
  	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
-@@ -205,6 +205,8 @@ void sem_exit_ns(struct ipc_namespace *n
- void __init sem_init(void)
+@@ -207,6 +207,8 @@ int __init sem_init(void)
  {
- 	sem_init_ns(&init_ipc_ns);
+ 	const int err = sem_init_ns(&init_ipc_ns);
+ 
 +	if (IS_ENABLED(CONFIG_PROC_STRIPPED))
-+		return;
++		return err;
  	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
-@@ -118,6 +118,8 @@ pure_initcall(ipc_ns_init);
+@@ -122,6 +122,8 @@ pure_initcall(ipc_ns_init);
  
  void __init shm_init(void)
  {
@@ -166,7 +166,7 @@  Signed-off-by: Felix Fietkau <nbd@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
-@@ -121,6 +121,9 @@ void __init ipc_init_proc_interface(cons
+@@ -141,6 +141,9 @@ void __init ipc_init_proc_interface(cons
  	struct proc_dir_entry *pde;
  	struct ipc_proc_iface *iface;
  
@@ -178,7 +178,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  		return;
 --- a/kernel/exec_domain.c
 +++ b/kernel/exec_domain.c
-@@ -41,6 +41,8 @@ static const struct file_operations exec
+@@ -42,6 +42,8 @@ static const struct file_operations exec
  
  static int __init proc_execdomains_init(void)
  {
@@ -189,8 +189,8 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  }
 --- a/kernel/irq/proc.c
 +++ b/kernel/irq/proc.c
-@@ -326,6 +326,9 @@ void register_irq_proc(unsigned int irq,
- 	static DEFINE_MUTEX(register_lock);
+@@ -396,6 +396,9 @@ void register_irq_proc(unsigned int irq,
+ 	void __maybe_unused *irqp = (void *)(unsigned long) irq;
  	char name [MAX_NAMELEN];
  
 +	if (IS_ENABLED(CONFIG_PROC_STRIPPED) && !IS_ENABLED(CONFIG_SMP))
@@ -199,7 +199,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	if (!root_irq_dir || (desc->irq_data.chip == &no_irq_chip))
  		return;
  
-@@ -374,6 +377,9 @@ void unregister_irq_proc(unsigned int ir
+@@ -449,6 +452,9 @@ void unregister_irq_proc(unsigned int ir
  {
  	char name [MAX_NAMELEN];
  
@@ -209,7 +209,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	if (!root_irq_dir || !desc->dir)
  		return;
  #ifdef CONFIG_SMP
-@@ -408,6 +414,9 @@ void init_irq_proc(void)
+@@ -487,6 +493,9 @@ void init_irq_proc(void)
  	unsigned int irq;
  	struct irq_desc *desc;
  
@@ -221,7 +221,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	if (!root_irq_dir)
 --- a/kernel/time/timer_list.c
 +++ b/kernel/time/timer_list.c
-@@ -393,6 +393,8 @@ static int __init init_timer_list_procfs
+@@ -389,6 +389,8 @@ static int __init init_timer_list_procfs
  {
  	struct proc_dir_entry *pe;
  
@@ -232,7 +232,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  		return -ENOMEM;
 --- a/mm/vmalloc.c
 +++ b/mm/vmalloc.c
-@@ -2713,6 +2713,8 @@ static const struct file_operations proc
+@@ -2765,6 +2765,8 @@ static const struct file_operations proc
  
  static int __init proc_vmalloc_init(void)
  {
@@ -243,22 +243,22 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  }
 --- a/mm/vmstat.c
 +++ b/mm/vmstat.c
-@@ -1791,10 +1791,12 @@ static int __init setup_vmstat(void)
- 	cpu_notifier_register_done();
+@@ -1944,10 +1944,12 @@ void __init init_mm_internals(void)
+ 	start_shepherd_timer();
  #endif
  #ifdef CONFIG_PROC_FS
--	proc_create("buddyinfo", S_IRUGO, NULL, &fragmentation_file_operations);
--	proc_create("pagetypeinfo", S_IRUGO, NULL, &pagetypeinfo_file_ops);
+-	proc_create("buddyinfo", 0444, NULL, &buddyinfo_file_operations);
+-	proc_create("pagetypeinfo", 0444, NULL, &pagetypeinfo_file_operations);
 +	if (!IS_ENABLED(CONFIG_PROC_STRIPPED)) {
-+		proc_create("buddyinfo", S_IRUGO, NULL, &fragmentation_file_operations);
-+		proc_create("pagetypeinfo", S_IRUGO, NULL, &pagetypeinfo_file_ops);
-+		proc_create("zoneinfo", S_IRUGO, NULL, &proc_zoneinfo_file_operations);
++		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("vmstat", S_IRUGO, NULL, &proc_vmstat_file_operations);
--	proc_create("zoneinfo", S_IRUGO, NULL, &proc_zoneinfo_file_operations);
+ 	proc_create("vmstat", 0444, NULL, &vmstat_file_operations);
+-	proc_create("zoneinfo", 0444, NULL, &zoneinfo_file_operations);
  #endif
- 	return 0;
  }
+ 
 --- a/net/8021q/vlanproc.c
 +++ b/net/8021q/vlanproc.c
 @@ -127,6 +127,9 @@ void vlan_proc_cleanup(struct net *net)
@@ -283,7 +283,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  		goto err;
 --- a/net/core/net-procfs.c
 +++ b/net/core/net-procfs.c
-@@ -319,10 +319,12 @@ static int __net_init dev_proc_net_init(
+@@ -320,10 +320,12 @@ static int __net_init dev_proc_net_init(
  
  	if (!proc_create("dev", S_IRUGO, net->proc_net, &dev_seq_fops))
  		goto out;
@@ -298,7 +298,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  		goto out_softnet;
  
  	if (wext_proc_init(net))
-@@ -331,9 +333,11 @@ static int __net_init dev_proc_net_init(
+@@ -332,9 +334,11 @@ static int __net_init dev_proc_net_init(
  out:
  	return rc;
  out_ptype:
@@ -312,7 +312,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  out_dev:
  	remove_proc_entry("dev", net->proc_net);
  	goto out;
-@@ -343,8 +347,10 @@ static void __net_exit dev_proc_net_exit
+@@ -344,8 +348,10 @@ static void __net_exit dev_proc_net_exit
  {
  	wext_proc_exit(net);
  
@@ -327,7 +327,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
 --- a/net/core/sock.c
 +++ b/net/core/sock.c
-@@ -3084,6 +3084,8 @@ static __net_initdata struct pernet_oper
+@@ -3383,6 +3383,8 @@ static __net_initdata struct pernet_oper
  
  static int __init proto_init(void)
  {
@@ -338,7 +338,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
 --- a/net/ipv4/fib_trie.c
 +++ b/net/ipv4/fib_trie.c
-@@ -2667,10 +2667,12 @@ static const struct file_operations fib_
+@@ -2731,10 +2731,12 @@ static const struct file_operations fib_
  
  int __net_init fib_proc_init(struct net *net)
  {
@@ -353,7 +353,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  			 &fib_triestat_fops))
  		goto out2;
  
-@@ -2680,17 +2682,21 @@ int __net_init fib_proc_init(struct net
+@@ -2744,17 +2746,21 @@ int __net_init fib_proc_init(struct net
  	return 0;
  
  out3:
@@ -381,7 +381,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
 --- a/net/ipv4/proc.c
 +++ b/net/ipv4/proc.c
-@@ -564,6 +564,9 @@ static __net_initdata struct pernet_oper
+@@ -557,6 +557,9 @@ static __net_initdata struct pernet_oper
  
  int __init ip_misc_proc_init(void)
  {
@@ -393,7 +393,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
 --- a/net/ipv4/route.c
 +++ b/net/ipv4/route.c
-@@ -420,6 +420,9 @@ static struct pernet_operations ip_rt_pr
+@@ -424,6 +424,9 @@ static struct pernet_operations ip_rt_pr
  
  static int __init ip_rt_proc_init(void)
  {
diff --git a/target/linux/generic/hack-4.14/904-debloat_dma_buf.patch b/target/linux/generic/hack-4.14/904-debloat_dma_buf.patch
index 4f432c3568..da34d1d3f7 100644
--- a/target/linux/generic/hack-4.14/904-debloat_dma_buf.patch
+++ b/target/linux/generic/hack-4.14/904-debloat_dma_buf.patch
@@ -13,7 +13,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/drivers/base/Kconfig
 +++ b/drivers/base/Kconfig
-@@ -241,7 +241,7 @@ config SOC_BUS
+@@ -242,7 +242,7 @@ config SOC_BUS
  source "drivers/base/regmap/Kconfig"
  
  config DMA_SHARED_BUFFER
@@ -25,12 +25,12 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 --- a/drivers/dma-buf/Makefile
 +++ b/drivers/dma-buf/Makefile
 @@ -1,3 +1,7 @@
--obj-y := dma-buf.o fence.o reservation.o seqno-fence.o fence-array.o
+-obj-y := dma-buf.o dma-fence.o dma-fence-array.o reservation.o seqno-fence.o
 -obj-$(CONFIG_SYNC_FILE)		+= sync_file.o
 -obj-$(CONFIG_SW_SYNC)		+= sw_sync.o sync_debug.o
 +obj-$(CONFIG_DMA_SHARED_BUFFER) := dma-shared-buffer.o
 +
-+dma-buf-objs-y := dma-buf.o fence.o reservation.o seqno-fence.o fence-array.o
++dma-buf-objs-y := dma-buf.o dma-fence.o dma-fence-array.o reservation.o seqno-fence.o
 +dma-buf-objs-$(CONFIG_SYNC_FILE)		+= sync_file.o
 +dma-buf-objs-$(CONFIG_SW_SYNC)		+= sw_sync.o sync_debug.o
 +
@@ -45,7 +45,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
  #include <uapi/linux/dma-buf.h>
  
-@@ -977,4 +978,5 @@ static void __exit dma_buf_deinit(void)
+@@ -1205,4 +1206,5 @@ static void __exit dma_buf_deinit(void)
  {
  	dma_buf_uninit_debugfs();
  }
@@ -54,11 +54,11 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +MODULE_LICENSE("GPL");
 --- a/kernel/sched/core.c
 +++ b/kernel/sched/core.c
-@@ -2170,6 +2170,7 @@ int wake_up_state(struct task_struct *p,
+@@ -2146,6 +2146,7 @@ int wake_up_state(struct task_struct *p,
  {
  	return try_to_wake_up(p, state, 0);
  }
 +EXPORT_SYMBOL_GPL(wake_up_state);
  
  /*
-  * This function clears the sched_dl_entity static params.
+  * Perform scheduler related setup for a newly forked process p.
diff --git a/target/linux/generic/hack-4.14/910-kobject_uevent.patch b/target/linux/generic/hack-4.14/910-kobject_uevent.patch
index 734401e1c6..113fbb54b3 100644
--- a/target/linux/generic/hack-4.14/910-kobject_uevent.patch
+++ b/target/linux/generic/hack-4.14/910-kobject_uevent.patch
@@ -11,9 +11,9 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/lib/kobject_uevent.c
 +++ b/lib/kobject_uevent.c
-@@ -52,6 +52,18 @@ static const char *kobject_actions[] = {
- 	[KOBJ_OFFLINE] =	"offline",
- };
+@@ -176,6 +176,18 @@ out:
+ 	return r;
+ }
  
 +u64 uevent_next_seqnum(void)
 +{
@@ -28,5 +28,5 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +EXPORT_SYMBOL_GPL(uevent_next_seqnum);
 +
  /**
-  * kobject_action_type - translate action string to numeric type
+  * kobject_synth_uevent - send synthetic uevent with arguments
   *
diff --git a/target/linux/generic/hack-4.14/911-kobject_add_broadcast_uevent.patch b/target/linux/generic/hack-4.14/911-kobject_add_broadcast_uevent.patch
index 55ce171567..abacfc390a 100644
--- a/target/linux/generic/hack-4.14/911-kobject_add_broadcast_uevent.patch
+++ b/target/linux/generic/hack-4.14/911-kobject_add_broadcast_uevent.patch
@@ -20,9 +20,9 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  #ifdef CONFIG_UEVENT_HELPER
  /* path to the userspace helper executed on an event */
  extern char uevent_helper[];
-@@ -222,4 +224,7 @@ int add_uevent_var(struct kobj_uevent_en
- int kobject_action_type(const char *buf, size_t count,
- 			enum kobject_action *type);
+@@ -224,4 +226,7 @@ int kobject_synth_uevent(struct kobject
+ __printf(2, 3)
+ int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...);
  
 +int broadcast_uevent(struct sk_buff *skb, __u32 pid, __u32 group,
 +		     gfp_t allocation);
@@ -30,7 +30,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  #endif /* _KOBJECT_H_ */
 --- a/lib/kobject_uevent.c
 +++ b/lib/kobject_uevent.c
-@@ -423,6 +423,43 @@ int add_uevent_var(struct kobj_uevent_en
+@@ -599,6 +599,43 @@ int add_uevent_var(struct kobj_uevent_en
  EXPORT_SYMBOL_GPL(add_uevent_var);
  
  #if defined(CONFIG_NET)
diff --git a/target/linux/generic/hack-4.14/930-crashlog.patch b/target/linux/generic/hack-4.14/930-crashlog.patch
index baa87b1b7f..17ba187925 100644
--- a/target/linux/generic/hack-4.14/930-crashlog.patch
+++ b/target/linux/generic/hack-4.14/930-crashlog.patch
@@ -41,7 +41,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +#endif
 --- a/init/Kconfig
 +++ b/init/Kconfig
-@@ -1298,6 +1298,10 @@ config RELAY
+@@ -1009,6 +1009,10 @@ config RELAY
  
  	  If unsure, say N.
  
@@ -54,8 +54,8 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	depends on BROKEN || !FRV
 --- a/kernel/Makefile
 +++ b/kernel/Makefile
-@@ -113,6 +113,7 @@ obj-$(CONFIG_TORTURE_TEST) += torture.o
- obj-$(CONFIG_MEMBARRIER) += membarrier.o
+@@ -112,6 +112,7 @@ obj-$(CONFIG_CONTEXT_TRACKING) += contex
+ obj-$(CONFIG_TORTURE_TEST) += torture.o
  
  obj-$(CONFIG_HAS_IOMEM) += memremap.o
 +obj-$(CONFIG_CRASHLOG) += crashlog.o
@@ -280,7 +280,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +module_init(crashlog_init_fs);
 --- a/kernel/module.c
 +++ b/kernel/module.c
-@@ -253,6 +253,9 @@ static void mod_update_bounds(struct mod
+@@ -256,6 +256,9 @@ static void mod_update_bounds(struct mod
  #ifdef CONFIG_KGDB_KDB
  struct list_head *kdb_modules = &modules; /* kdb needs the list of modules */
  #endif /* CONFIG_KGDB_KDB */
@@ -292,7 +292,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  {
 --- a/mm/bootmem.c
 +++ b/mm/bootmem.c
-@@ -14,6 +14,7 @@
+@@ -15,6 +15,7 @@
  #include <linux/export.h>
  #include <linux/kmemleak.h>
  #include <linux/range.h>
@@ -300,7 +300,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  #include <linux/bug.h>
  #include <linux/io.h>
  #include <linux/bootmem.h>
-@@ -174,6 +175,7 @@ static unsigned long __init free_all_boo
+@@ -175,6 +176,7 @@ static unsigned long __init free_all_boo
  	if (!bdata->node_bootmem_map)
  		return 0;
  
@@ -318,7 +318,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
  #include <asm/sections.h>
  #include <linux/io.h>
-@@ -495,6 +496,8 @@ static void __init_memblock memblock_ins
+@@ -483,6 +484,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@nbd.name>
  }
  
  /**
-@@ -534,6 +537,8 @@ int __init_memblock memblock_add_range(s
+@@ -522,6 +525,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/100-MIPS-fix-cache-flushing-for-highmem-pages.patch b/target/linux/generic/pending-4.14/100-MIPS-fix-cache-flushing-for-highmem-pages.patch
index 622fab65b7..b1c65f7cd8 100644
--- a/target/linux/generic/pending-4.14/100-MIPS-fix-cache-flushing-for-highmem-pages.patch
+++ b/target/linux/generic/pending-4.14/100-MIPS-fix-cache-flushing-for-highmem-pages.patch
@@ -14,7 +14,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/arch/mips/mm/cache.c
 +++ b/arch/mips/mm/cache.c
-@@ -115,6 +115,13 @@ void __flush_anon_page(struct page *page
+@@ -116,6 +116,13 @@ void __flush_anon_page(struct page *page
  {
  	unsigned long addr = (unsigned long) page_address(page);
  
diff --git a/target/linux/generic/pending-4.14/110-ehci_hcd_ignore_oc.patch b/target/linux/generic/pending-4.14/110-ehci_hcd_ignore_oc.patch
index 644d936574..b45b1c079c 100644
--- a/target/linux/generic/pending-4.14/110-ehci_hcd_ignore_oc.patch
+++ b/target/linux/generic/pending-4.14/110-ehci_hcd_ignore_oc.patch
@@ -28,7 +28,7 @@  Signed-off-by: Florian Fainelli <florian@openwrt.org>
  		    &ehci->regs->intr_enable); /* Turn On Interrupts */
 --- a/drivers/usb/host/ehci-hub.c
 +++ b/drivers/usb/host/ehci-hub.c
-@@ -638,7 +638,7 @@ ehci_hub_status_data (struct usb_hcd *hc
+@@ -646,7 +646,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@openwrt.org>
  		mask = PORT_CSC | PORT_PEC | PORT_OCC;
  	else
  		mask = PORT_CSC | PORT_PEC;
-@@ -1008,7 +1008,7 @@ int ehci_hub_control(
+@@ -1016,7 +1016,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@openwrt.org>
  			/*
 --- a/drivers/usb/host/ehci-platform.c
 +++ b/drivers/usb/host/ehci-platform.c
-@@ -259,6 +259,8 @@ static int ehci_platform_probe(struct pl
+@@ -263,6 +263,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@openwrt.org>
  	if (ehci->big_endian_mmio) {
 --- a/drivers/usb/host/ehci.h
 +++ b/drivers/usb/host/ehci.h
-@@ -230,6 +230,7 @@ struct ehci_hcd {			/* one per controlle
+@@ -231,6 +231,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 */
diff --git a/target/linux/generic/pending-4.14/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch b/target/linux/generic/pending-4.14/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch
index 826496b419..fbf9981384 100644
--- a/target/linux/generic/pending-4.14/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch
+++ b/target/linux/generic/pending-4.14/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch
@@ -71,7 +71,7 @@  Signed-off-by: Tobias Wolf <dev-NTEO@vplace.de>
 
 --- a/mm/page_alloc.c
 +++ b/mm/page_alloc.c
-@@ -5930,7 +5930,7 @@ static void __ref alloc_node_mem_map(str
+@@ -6170,7 +6170,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.14/130-add-linux-spidev-compatible-si3210.patch b/target/linux/generic/pending-4.14/130-add-linux-spidev-compatible-si3210.patch
index b3de75fbbe..b00fb8ee2e 100644
--- a/target/linux/generic/pending-4.14/130-add-linux-spidev-compatible-si3210.patch
+++ b/target/linux/generic/pending-4.14/130-add-linux-spidev-compatible-si3210.patch
@@ -8,10 +8,10 @@  Signed-off-by: Giuseppe Lippolis <giu.lippolis@gmail.com>
 
 --- a/drivers/spi/spidev.c
 +++ b/drivers/spi/spidev.c
-@@ -696,6 +696,7 @@ static struct class *spidev_class;
- static const struct of_device_id spidev_dt_ids[] = {
- 	{ .compatible = "rohm,dh2228fv" },
+@@ -669,6 +669,7 @@ static const struct of_device_id spidev_
  	{ .compatible = "lineartechnology,ltc2488" },
+ 	{ .compatible = "ge,achc" },
+ 	{ .compatible = "semtech,sx1301" },
 +	{ .compatible = "siliconlabs,si3210" },
  	{},
  };
diff --git a/target/linux/generic/pending-4.14/131-spi-use-gpio_set_value_cansleep-for-setting-chipsele.patch b/target/linux/generic/pending-4.14/131-spi-use-gpio_set_value_cansleep-for-setting-chipsele.patch
index 8c2d68b9db..9603385aed 100644
--- a/target/linux/generic/pending-4.14/131-spi-use-gpio_set_value_cansleep-for-setting-chipsele.patch
+++ b/target/linux/generic/pending-4.14/131-spi-use-gpio_set_value_cansleep-for-setting-chipsele.patch
@@ -9,12 +9,12 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/drivers/spi/spi.c
 +++ b/drivers/spi/spi.c
-@@ -700,7 +700,7 @@ static void spi_set_cs(struct spi_device
+@@ -729,7 +729,7 @@ static void spi_set_cs(struct spi_device
  		enable = !enable;
  
- 	if (gpio_is_valid(spi->cs_gpio))
+ 	if (gpio_is_valid(spi->cs_gpio)) {
 -		gpio_set_value(spi->cs_gpio, !enable);
 +		gpio_set_value_cansleep(spi->cs_gpio, !enable);
- 	else if (spi->master->set_cs)
- 		spi->master->set_cs(spi, !enable);
- }
+ 		/* Some SPI masters need both GPIO CS & slave_select */
+ 		if ((spi->controller->flags & SPI_MASTER_GPIO_SS) &&
+ 		    spi->controller->set_cs)
diff --git a/target/linux/generic/pending-4.14/150-bridge_allow_receiption_on_disabled_port.patch b/target/linux/generic/pending-4.14/150-bridge_allow_receiption_on_disabled_port.patch
index a164f6e7ea..03267310a0 100644
--- a/target/linux/generic/pending-4.14/150-bridge_allow_receiption_on_disabled_port.patch
+++ b/target/linux/generic/pending-4.14/150-bridge_allow_receiption_on_disabled_port.patch
@@ -15,7 +15,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/net/bridge/br_input.c
 +++ b/net/bridge/br_input.c
-@@ -233,7 +233,8 @@ static int br_handle_local_finish(struct
+@@ -238,7 +238,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@nbd.name>
  
  	BR_INPUT_SKB_CB(skb)->brdev = p->br->dev;
  	br_pass_frame_up(skb);
-@@ -316,6 +317,15 @@ rx_handler_result_t br_handle_frame(stru
+@@ -326,6 +327,15 @@ rx_handler_result_t br_handle_frame(stru
  
  forward:
  	switch (p->state) {
diff --git a/target/linux/generic/pending-4.14/160-mtd-part-add-generic-parsing-of-linux-part-probe.patch b/target/linux/generic/pending-4.14/160-mtd-part-add-generic-parsing-of-linux-part-probe.patch
index 5e9ad8cf07..2706f13dc9 100644
--- a/target/linux/generic/pending-4.14/160-mtd-part-add-generic-parsing-of-linux-part-probe.patch
+++ b/target/linux/generic/pending-4.14/160-mtd-part-add-generic-parsing-of-linux-part-probe.patch
@@ -38,40 +38,30 @@  Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
  The ECC strength and ECC step size properties define the correction capability
  of a controller. Together, they say a controller can correct "{strength} bit
  errors per {size} bytes".
---- a/drivers/mtd/maps/physmap_of.c
-+++ b/drivers/mtd/maps/physmap_of.c
-@@ -113,47 +113,9 @@ static struct mtd_info *obsolete_probe(s
+--- 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
  static const char * const part_probe_types_def[] = {
  	"cmdlinepart", "RedBoot", "ofpart", "ofoldpart", NULL };
  
 -static const char * const *of_get_probes(struct device_node *dp)
 -{
--	const char *cp;
--	int cplen;
--	unsigned int l;
--	unsigned int count;
 -	const char **res;
+-	int count;
 -
--	cp = of_get_property(dp, "linux,part-probe", &cplen);
--	if (cp == NULL)
+-	count = of_property_count_strings(dp, "linux,part-probe");
+-	if (count < 0)
 -		return part_probe_types_def;
 -
--	count = 0;
--	for (l = 0; l != cplen; l++)
--		if (cp[l] == 0)
--			count++;
--
--	res = kzalloc((count + 1)*sizeof(*res), GFP_KERNEL);
+-	res = kzalloc((count + 1) * sizeof(*res), GFP_KERNEL);
 -	if (!res)
 -		return NULL;
--	count = 0;
--	while (cplen > 0) {
--		res[count] = cp;
--		l = strlen(cp) + 1;
--		cp += l;
--		cplen -= l;
--		count++;
--	}
+-
+-	count = of_property_read_string_array(dp, "linux,part-probe", res,
+-					      count);
+-	if (count < 0)
+-		return NULL;
+-
 -	return res;
 -}
 -
@@ -88,7 +78,7 @@  Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
  	const struct of_device_id *match;
  	struct device_node *dp = dev->dev.of_node;
  	struct resource res;
-@@ -317,14 +279,8 @@ static int of_flash_probe(struct platfor
+@@ -310,14 +282,8 @@ static int of_flash_probe(struct platfor
  
  	info->cmtd->dev.parent = &dev->dev;
  	mtd_set_of_node(info->cmtd, dp);
@@ -114,7 +104,7 @@  Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
  #include <linux/err.h>
  
  #include "mtdcore.h"
-@@ -855,6 +856,42 @@ void deregister_mtd_parser(struct mtd_pa
+@@ -863,6 +864,32 @@ void deregister_mtd_parser(struct mtd_pa
  EXPORT_SYMBOL_GPL(deregister_mtd_parser);
  
  /*
@@ -124,32 +114,22 @@  Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
 + */
 +static const char * const *of_get_probes(struct device_node *dp)
 +{
-+	const char *cp;
-+	int cplen;
-+	unsigned int l;
-+	unsigned int count;
 +	const char **res;
++	int count;
 +
-+	cp = of_get_property(dp, "linux,part-probe", &cplen);
-+	if (cp == NULL)
++	count = of_property_count_strings(dp, "linux,part-probe");
++	if (count < 0)
 +		return NULL;
 +
-+	count = 0;
-+	for (l = 0; l != cplen; l++)
-+		if (cp[l] == 0)
-+			count++;
-+
 +	res = kzalloc((count + 1) * sizeof(*res), GFP_KERNEL);
 +	if (!res)
 +		return NULL;
-+	count = 0;
-+	while (cplen > 0) {
-+		res[count] = cp;
-+		l = strlen(cp) + 1;
-+		cp += l;
-+		cplen -= l;
-+		count++;
-+	}
++
++	count = of_property_read_string_array(dp, "linux,part-probe", res,
++					      count);
++	if (count < 0)
++		return NULL;
++
 +	return res;
 +}
 +
@@ -157,7 +137,7 @@  Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
   * Do not forget to update 'parse_mtd_partitions()' kerneldoc comment if you
   * are changing this array!
   */
-@@ -912,6 +949,13 @@ int parse_mtd_partitions(struct mtd_info
+@@ -920,6 +947,13 @@ int parse_mtd_partitions(struct mtd_info
  {
  	struct mtd_part_parser *parser;
  	int ret, err = 0;
@@ -171,7 +151,7 @@  Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
  
  	if (!types)
  		types = default_mtd_part_types;
-@@ -937,6 +981,7 @@ int parse_mtd_partitions(struct mtd_info
+@@ -945,6 +979,7 @@ int parse_mtd_partitions(struct mtd_info
  		if (ret < 0 && !err)
  			err = ret;
  	}
diff --git a/target/linux/generic/pending-4.14/170-MIPS-PCI-add-controllers-before-the-specified-head.patch b/target/linux/generic/pending-4.14/170-MIPS-PCI-add-controllers-before-the-specified-head.patch
deleted file mode 100644
index 3eed80e714..0000000000
diff --git a/target/linux/generic/pending-4.14/180-net-phy-at803x-add-support-for-AT8032.patch b/target/linux/generic/pending-4.14/180-net-phy-at803x-add-support-for-AT8032.patch
index f2d5df503f..3b1a41a23b 100644
--- a/target/linux/generic/pending-4.14/180-net-phy-at803x-add-support-for-AT8032.patch
+++ b/target/linux/generic/pending-4.14/180-net-phy-at803x-add-support-for-AT8032.patch
@@ -14,9 +14,9 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  #define ATH8031_PHY_ID 0x004dd074
 +#define ATH8032_PHY_ID 0x004dd023
  #define ATH8035_PHY_ID 0x004dd072
+ #define AT803X_PHY_ID_MASK			0xffffffef
  
- MODULE_DESCRIPTION("Atheros 803x PHY driver");
-@@ -259,7 +260,8 @@ static int at803x_probe(struct phy_devic
+@@ -260,7 +261,8 @@ static int at803x_probe(struct phy_devic
  	if (!priv)
  		return -ENOMEM;
  
@@ -26,7 +26,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  		goto does_not_require_reset_workaround;
  
  	gpiod_reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
-@@ -335,7 +337,7 @@ static void at803x_link_change_notify(st
+@@ -336,7 +338,7 @@ static void at803x_link_change_notify(st
  	struct at803x_priv *priv = phydev->priv;
  
  	/*
@@ -35,7 +35,7 @@  Signed-off-by: Felix Fietkau <nbd@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
-@@ -447,6 +449,24 @@ static struct phy_driver at803x_driver[]
+@@ -448,6 +450,24 @@ static struct phy_driver at803x_driver[]
  	.aneg_done		= at803x_aneg_done,
  	.ack_interrupt		= &at803x_ack_interrupt,
  	.config_intr		= &at803x_config_intr,
@@ -60,11 +60,11 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  } };
  
  module_phy_driver(at803x_driver);
-@@ -454,6 +474,7 @@ module_phy_driver(at803x_driver);
+@@ -455,6 +475,7 @@ module_phy_driver(at803x_driver);
  static struct mdio_device_id __maybe_unused atheros_tbl[] = {
- 	{ ATH8030_PHY_ID, 0xffffffef },
- 	{ ATH8031_PHY_ID, 0xffffffef },
-+	{ ATH8032_PHY_ID, 0xffffffef },
- 	{ ATH8035_PHY_ID, 0xffffffef },
+ 	{ ATH8030_PHY_ID, AT803X_PHY_ID_MASK },
+ 	{ ATH8031_PHY_ID, AT803X_PHY_ID_MASK },
++	{ ATH8032_PHY_ID, AT803X_PHY_ID_MASK },
+ 	{ ATH8035_PHY_ID, AT803X_PHY_ID_MASK },
  	{ }
  };
diff --git a/target/linux/generic/pending-4.14/190-2-5-e1000e-Fix-wrong-comment-related-to-link-detection.patch b/target/linux/generic/pending-4.14/190-2-5-e1000e-Fix-wrong-comment-related-to-link-detection.patch
index f980bb080d..d8aea32b5a 100644
--- a/target/linux/generic/pending-4.14/190-2-5-e1000e-Fix-wrong-comment-related-to-link-detection.patch
+++ b/target/linux/generic/pending-4.14/190-2-5-e1000e-Fix-wrong-comment-related-to-link-detection.patch
@@ -23,7 +23,7 @@  Tested-by: Aaron Brown <aaron.f.brown@intel.com>
 
 --- a/drivers/net/ethernet/intel/e1000e/netdev.c
 +++ b/drivers/net/ethernet/intel/e1000e/netdev.c
-@@ -5066,7 +5066,7 @@ static bool e1000e_has_link(struct e1000
+@@ -5096,7 +5096,7 @@ static bool e1000e_has_link(struct e1000
  
  	/* get_link_status is set on LSC (link status) interrupt or
  	 * Rx sequence error interrupt.  get_link_status will stay
@@ -32,7 +32,7 @@  Tested-by: Aaron Brown <aaron.f.brown@intel.com>
  	 * for copper adapters ONLY
  	 */
  	switch (hw->phy.media_type) {
-@@ -5084,7 +5084,7 @@ static bool e1000e_has_link(struct e1000
+@@ -5114,7 +5114,7 @@ static bool e1000e_has_link(struct e1000
  		break;
  	case e1000_media_type_internal_serdes:
  		ret_val = hw->mac.ops.check_for_link(hw);
diff --git a/target/linux/generic/pending-4.14/201-extra_optimization.patch b/target/linux/generic/pending-4.14/201-extra_optimization.patch
index 74acc35715..71883755cf 100644
--- a/target/linux/generic/pending-4.14/201-extra_optimization.patch
+++ b/target/linux/generic/pending-4.14/201-extra_optimization.patch
@@ -14,12 +14,12 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/Makefile
 +++ b/Makefile
-@@ -639,12 +639,12 @@ KBUILD_CFLAGS	+= $(call cc-option,-fdata
- endif
+@@ -637,12 +637,12 @@ KBUILD_CFLAGS	+= $(call cc-disable-warni
  
  ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
--KBUILD_CFLAGS	+= -Os $(call cc-disable-warning,maybe-uninitialized,)
-+KBUILD_CFLAGS	+= -Os $(call cc-disable-warning,maybe-uninitialized,) $(EXTRA_OPTIMIZATION)
+ KBUILD_CFLAGS	+= $(call cc-option,-Oz,-Os)
+-KBUILD_CFLAGS	+= $(call cc-disable-warning,maybe-uninitialized,)
++KBUILD_CFLAGS	+= $(call cc-disable-warning,maybe-uninitialized,) $(EXTRA_OPTIMIZATION)
  else
  ifdef CONFIG_PROFILE_ALL_BRANCHES
 -KBUILD_CFLAGS	+= -O2 $(call cc-disable-warning,maybe-uninitialized,)
diff --git a/target/linux/generic/pending-4.14/203-kallsyms_uncompressed.patch b/target/linux/generic/pending-4.14/203-kallsyms_uncompressed.patch
index f275194739..fa68f307d4 100644
--- a/target/linux/generic/pending-4.14/203-kallsyms_uncompressed.patch
+++ b/target/linux/generic/pending-4.14/203-kallsyms_uncompressed.patch
@@ -13,7 +13,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/init/Kconfig
 +++ b/init/Kconfig
-@@ -1370,6 +1370,17 @@ config SYSCTL_ARCH_UNALIGN_ALLOW
+@@ -1081,6 +1081,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@nbd.name>
  
 --- a/kernel/kallsyms.c
 +++ b/kernel/kallsyms.c
-@@ -113,6 +113,11 @@ static unsigned int kallsyms_expand_symb
+@@ -108,6 +108,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@nbd.name>
  	while (len) {
  		tptr = &kallsyms_token_table[kallsyms_token_index[*data]];
  		data++;
-@@ -145,6 +150,9 @@ tail:
+@@ -140,6 +145,9 @@ tail:
   */
  static char kallsyms_get_symbol_type(unsigned int off)
  {
@@ -65,7 +65,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  static int absolute_percpu = 0;
  static char symbol_prefix_char = '\0';
  static int base_relative = 0;
-@@ -446,6 +447,9 @@ static void write_src(void)
+@@ -457,6 +458,9 @@ static void write_src(void)
  
  	free(markers);
  
@@ -75,7 +75,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	output_label("kallsyms_token_table");
  	off = 0;
  	for (i = 0; i < 256; i++) {
-@@ -504,6 +508,9 @@ static void *find_token(unsigned char *s
+@@ -515,6 +519,9 @@ static void *find_token(unsigned char *s
  {
  	int i;
  
@@ -85,7 +85,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	for (i = 0; i < len - 1; i++) {
  		if (str[i] == token[0] && str[i+1] == token[1])
  			return &str[i];
-@@ -576,6 +583,9 @@ static void optimize_result(void)
+@@ -587,6 +594,9 @@ static void optimize_result(void)
  {
  	int i, best;
  
@@ -95,7 +95,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	/* using the '\0' symbol last allows compress_symbols to use standard
  	 * fast string functions */
  	for (i = 255; i >= 0; i--) {
-@@ -764,6 +774,8 @@ int main(int argc, char **argv)
+@@ -775,6 +785,8 @@ int main(int argc, char **argv)
  				symbol_prefix_char = *p;
  			} else if (strcmp(argv[i], "--base-relative") == 0)
  				base_relative = 1;
@@ -106,7 +106,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  		}
 --- a/scripts/link-vmlinux.sh
 +++ b/scripts/link-vmlinux.sh
-@@ -136,6 +136,10 @@ kallsyms()
+@@ -164,6 +164,10 @@ kallsyms()
  		kallsymopt="${kallsymopt} --base-relative"
  	fi
  
diff --git a/target/linux/generic/pending-4.14/205-backtrace_module_info.patch b/target/linux/generic/pending-4.14/205-backtrace_module_info.patch
index 03c14e048f..4040f91021 100644
--- a/target/linux/generic/pending-4.14/205-backtrace_module_info.patch
+++ b/target/linux/generic/pending-4.14/205-backtrace_module_info.patch
@@ -11,7 +11,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/lib/vsprintf.c
 +++ b/lib/vsprintf.c
-@@ -669,8 +669,10 @@ char *symbol_string(char *buf, char *end
+@@ -670,8 +670,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@nbd.name>
  #endif
  
  	if (fmt[1] == 'R')
-@@ -684,11 +686,16 @@ char *symbol_string(char *buf, char *end
+@@ -685,11 +687,16 @@ char *symbol_string(char *buf, char *end
  		sprint_symbol(sym, value);
  	else
  		sprint_symbol_no_offset(sym, value);
diff --git a/target/linux/generic/pending-4.14/206-mips-disable-vdso.patch b/target/linux/generic/pending-4.14/206-mips-disable-vdso.patch
index 807d579044..f3c58dcd3a 100644
--- a/target/linux/generic/pending-4.14/206-mips-disable-vdso.patch
+++ b/target/linux/generic/pending-4.14/206-mips-disable-vdso.patch
@@ -9,7 +9,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/arch/mips/vdso/Makefile
 +++ b/arch/mips/vdso/Makefile
-@@ -28,9 +28,9 @@ aflags-vdso := $(ccflags-vdso) \
+@@ -30,9 +30,9 @@ aflags-vdso := $(ccflags-vdso) \
  ifndef CONFIG_CPU_MIPSR6
    ifeq ($(call ld-ifversion, -lt, 225000000, y),y)
      $(warning MIPS VDSO requires binutils >= 2.25)
diff --git a/target/linux/generic/pending-4.14/240-remove-unsane-filenames-from-deps_initramfs-list.patch b/target/linux/generic/pending-4.14/240-remove-unsane-filenames-from-deps_initramfs-list.patch
index 5dc38edfb2..f440305c9b 100644
--- a/target/linux/generic/pending-4.14/240-remove-unsane-filenames-from-deps_initramfs-list.patch
+++ b/target/linux/generic/pending-4.14/240-remove-unsane-filenames-from-deps_initramfs-list.patch
@@ -18,8 +18,8 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 
 --- a/usr/Makefile
 +++ b/usr/Makefile
-@@ -53,6 +53,8 @@ ifneq ($(wildcard $(obj)/.initramfs_data
- 	include $(obj)/.initramfs_data.cpio.d
+@@ -39,20 +39,22 @@ ifneq ($(wildcard $(obj)/$(datafile_d_y)
+ 	include $(obj)/$(datafile_d_y)
  endif
  
 +deps_initramfs_sane := $(foreach v,$(deps_initramfs),$(if $(findstring :,$(v)),,$(v)))
@@ -27,9 +27,8 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  quiet_cmd_initfs = GEN     $@
        cmd_initfs = $(initramfs) -o $@ $(ramfs-args) $(ramfs-input)
  
-@@ -61,14 +63,14 @@ targets := initramfs_data.cpio.gz initra
- 	initramfs_data.cpio.lzo initramfs_data.cpio.lz4 \
- 	initramfs_data.cpio
+ targets := $(datafile_y)
+ 
  # do not try to update files included in initramfs
 -$(deps_initramfs): ;
 +$(deps_initramfs_sane): ;
@@ -41,7 +40,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  # 2) There are changes in which files are included (added or deleted)
  # 3) If gen_init_cpio are newer than initramfs_data.cpio
  # 4) arguments to gen_initramfs.sh changes
--$(obj)/initramfs_data.cpio$(suffix_y): $(obj)/gen_init_cpio $(deps_initramfs) klibcdirs
-+$(obj)/initramfs_data.cpio$(suffix_y): $(obj)/gen_init_cpio $(deps_initramfs_sane) klibcdirs
- 	$(Q)$(initramfs) -l $(ramfs-input) > $(obj)/.initramfs_data.cpio.d
+-$(obj)/$(datafile_y): $(obj)/gen_init_cpio $(deps_initramfs) klibcdirs
++$(obj)/$(datafile_y): $(obj)/gen_init_cpio $(deps_initramfs_sane) klibcdirs
+ 	$(Q)$(initramfs) -l $(ramfs-input) > $(obj)/$(datafile_d_y)
  	$(call if_changed,initfs)
diff --git a/target/linux/generic/pending-4.14/270-uapi-kernel.h-glibc-specific-inclusion-of-sysinfo.h.patch b/target/linux/generic/pending-4.14/270-uapi-kernel.h-glibc-specific-inclusion-of-sysinfo.h.patch
index 9c30fa81bf..9ec8daf886 100644
--- a/target/linux/generic/pending-4.14/270-uapi-kernel.h-glibc-specific-inclusion-of-sysinfo.h.patch
+++ b/target/linux/generic/pending-4.14/270-uapi-kernel.h-glibc-specific-inclusion-of-sysinfo.h.patch
@@ -20,7 +20,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 
 --- a/include/uapi/linux/kernel.h
 +++ b/include/uapi/linux/kernel.h
-@@ -1,7 +1,9 @@
+@@ -2,7 +2,9 @@
  #ifndef _UAPI_LINUX_KERNEL_H
  #define _UAPI_LINUX_KERNEL_H
  
diff --git a/target/linux/generic/pending-4.14/271-uapi-libc-compat.h-do-not-rely-on-__GLIBC__.patch b/target/linux/generic/pending-4.14/271-uapi-libc-compat.h-do-not-rely-on-__GLIBC__.patch
index a4aa1567e1..9ae148da4f 100644
--- a/target/linux/generic/pending-4.14/271-uapi-libc-compat.h-do-not-rely-on-__GLIBC__.patch
+++ b/target/linux/generic/pending-4.14/271-uapi-libc-compat.h-do-not-rely-on-__GLIBC__.patch
@@ -15,7 +15,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 
 --- a/include/uapi/linux/libc-compat.h
 +++ b/include/uapi/linux/libc-compat.h
-@@ -48,13 +48,13 @@
+@@ -49,13 +49,13 @@
  #ifndef _UAPI_LIBC_COMPAT_H
  #define _UAPI_LIBC_COMPAT_H
  
@@ -34,7 +34,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
   * that would already be defined. */
  
  #define __UAPI_DEF_IF_IFCONF 0
-@@ -65,7 +65,11 @@
+@@ -66,7 +66,11 @@
  #define __UAPI_DEF_IF_NET_DEVICE_FLAGS 0
  /* For the future if glibc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO */
  #ifndef __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
@@ -46,7 +46,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  #endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */
  
  #else /* _NET_IF_H */
-@@ -85,10 +89,10 @@
+@@ -86,10 +90,10 @@
  
  #endif /* _NET_IF_H */
  
@@ -59,7 +59,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
   * that would already be defined. */
  #define __UAPI_DEF_IN_ADDR		0
  #define __UAPI_DEF_IN_IPPROTO		0
-@@ -102,7 +106,7 @@
+@@ -103,7 +107,7 @@
   * if the glibc code didn't define them. This guard matches
   * the guard in glibc/inet/netinet/in.h which defines the
   * additional in6_addr macros e.g. s6_addr16, and s6_addr32. */
@@ -68,7 +68,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  #define __UAPI_DEF_IN6_ADDR_ALT		0
  #else
  #define __UAPI_DEF_IN6_ADDR_ALT		1
-@@ -117,7 +121,7 @@
+@@ -118,7 +122,7 @@
  #else
  
  /* Linux headers included first, and we must define everything
@@ -77,7 +77,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
   * __UAPI_DEF_* defines and adjust appropriately. */
  #define __UAPI_DEF_IN_ADDR		1
  #define __UAPI_DEF_IN_IPPROTO		1
-@@ -127,7 +131,7 @@
+@@ -128,7 +132,7 @@
  #define __UAPI_DEF_IN_CLASS		1
  
  #define __UAPI_DEF_IN6_ADDR		1
@@ -86,7 +86,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
   * coordinate. */
  #define __UAPI_DEF_IN6_ADDR_ALT		1
  #define __UAPI_DEF_SOCKADDR_IN6		1
-@@ -168,7 +172,7 @@
+@@ -169,7 +173,7 @@
  /* If we did not see any headers from any supported C libraries,
   * or we are being included in the kernel, then define everything
   * that we need. */
@@ -95,7 +95,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  
  /* Definitions for if.h */
  #define __UAPI_DEF_IF_IFCONF 1
-@@ -208,6 +212,6 @@
+@@ -209,6 +213,6 @@
  /* Definitions for xattr.h */
  #define __UAPI_DEF_XATTR		1
  
diff --git a/target/linux/generic/pending-4.14/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch b/target/linux/generic/pending-4.14/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch
index 7b7b403ed0..1dca07328d 100644
--- a/target/linux/generic/pending-4.14/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch
+++ b/target/linux/generic/pending-4.14/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch
@@ -14,7 +14,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 
 --- a/include/uapi/linux/if_ether.h
 +++ b/include/uapi/linux/if_ether.h
-@@ -22,6 +22,7 @@
+@@ -23,6 +23,7 @@
  #define _UAPI_LINUX_IF_ETHER_H
  
  #include <linux/types.h>
@@ -22,7 +22,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  
  /*
   *	IEEE 802.3 Ethernet magic constants.  The frame sizes omit the preamble
-@@ -138,11 +139,13 @@
+@@ -149,11 +150,13 @@
   *	This is an Ethernet frame header.
   */
  
@@ -38,7 +38,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  #endif /* _UAPI_LINUX_IF_ETHER_H */
 --- a/include/uapi/linux/libc-compat.h
 +++ b/include/uapi/linux/libc-compat.h
-@@ -89,6 +89,14 @@
+@@ -90,6 +90,14 @@
  
  #endif /* _NET_IF_H */
  
@@ -53,7 +53,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  /* Coordinate with libc netinet/in.h header. */
  #if defined(_NETINET_IN_H)
  
-@@ -184,6 +192,9 @@
+@@ -185,6 +193,9 @@
  /* For the future if glibc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO */
  #define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 1
  
diff --git a/target/linux/generic/pending-4.14/300-mips_expose_boot_raw.patch b/target/linux/generic/pending-4.14/300-mips_expose_boot_raw.patch
index cd58eb12e8..9419e9916b 100644
--- a/target/linux/generic/pending-4.14/300-mips_expose_boot_raw.patch
+++ b/target/linux/generic/pending-4.14/300-mips_expose_boot_raw.patch
@@ -9,7 +9,7 @@  Acked-by: Rob Landley <rob@landley.net>
 ---
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -1064,9 +1064,6 @@ config FW_ARC
+@@ -1066,9 +1066,6 @@ config FW_ARC
  config ARCH_MAY_HAVE_PC_FDC
  	bool
  
@@ -19,7 +19,7 @@  Acked-by: Rob Landley <rob@landley.net>
  config CEVT_BCM1480
  	bool
  
-@@ -2963,6 +2960,18 @@ choice
+@@ -2966,6 +2963,18 @@ choice
  		bool "Extend builtin kernel arguments with bootloader arguments"
  endchoice
  
diff --git a/target/linux/generic/pending-4.14/304-mips_disable_fpu.patch b/target/linux/generic/pending-4.14/304-mips_disable_fpu.patch
index a2ec0760fe..bee62b2664 100644
--- a/target/linux/generic/pending-4.14/304-mips_disable_fpu.patch
+++ b/target/linux/generic/pending-4.14/304-mips_disable_fpu.patch
@@ -24,7 +24,7 @@  v2: incorporated changes suggested by Jonas Gorski
 
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -2887,6 +2887,20 @@ config MIPS_O32_FP64_SUPPORT
+@@ -2890,6 +2890,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
-@@ -287,7 +287,7 @@ OBJCOPYFLAGS		+= --remove-section=.regin
+@@ -319,7 +319,7 @@ OBJCOPYFLAGS		+= --remove-section=.regin
  head-y := arch/mips/kernel/head.o
  
  libs-y			+= arch/mips/lib/
@@ -58,7 +58,7 @@  v2: incorporated changes suggested by Jonas Gorski
  core-y += arch/mips/
 --- a/arch/mips/include/asm/fpu.h
 +++ b/arch/mips/include/asm/fpu.h
-@@ -227,8 +227,10 @@ static inline int init_fpu(void)
+@@ -230,8 +230,10 @@ static inline int init_fpu(void)
  		/* Restore FRE */
  		write_c0_config5(config5);
  		enable_fpu_hazard();
@@ -80,14 +80,14 @@  v2: incorporated changes suggested by Jonas Gorski
  #ifdef CONFIG_DEBUG_FS
  
  struct mips_fpu_emulator_stats {
-@@ -63,6 +64,16 @@ do {									\
+@@ -179,6 +180,16 @@ do {									\
  extern int fpu_emulator_cop1Handler(struct pt_regs *xcp,
  				    struct mips_fpu_struct *ctx, int has_fpu,
- 				    void *__user *fault_addr);
+ 				    void __user **fault_addr);
 +#else	/* no CONFIG_MIPS_FPU_EMULATOR */
 +static inline int fpu_emulator_cop1Handler(struct pt_regs *xcp,
 +				struct mips_fpu_struct *ctx, int has_fpu,
-+				void *__user *fault_addr)
++				void __user **fault_addr)
 +{
 +	*fault_addr = NULL;
 +	return SIGILL;	/* we don't speak MIPS FPU */
diff --git a/target/linux/generic/pending-4.14/305-mips_module_reloc.patch b/target/linux/generic/pending-4.14/305-mips_module_reloc.patch
index fc8015b5f6..253b50f62c 100644
--- a/target/linux/generic/pending-4.14/305-mips_module_reloc.patch
+++ b/target/linux/generic/pending-4.14/305-mips_module_reloc.patch
@@ -27,7 +27,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  LDFLAGS_vmlinux			+= --emit-relocs
 --- a/arch/mips/include/asm/module.h
 +++ b/arch/mips/include/asm/module.h
-@@ -11,6 +11,11 @@ struct mod_arch_specific {
+@@ -12,6 +12,11 @@ struct mod_arch_specific {
  	const struct exception_table_entry *dbe_start;
  	const struct exception_table_entry *dbe_end;
  	struct mips_hi16 *r_mips_hi16_list;
@@ -262,9 +262,9 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +	return 0;
 +}
  
- int apply_r_mips_none(struct module *me, u32 *location, Elf_Addr v)
- {
-@@ -65,8 +272,39 @@ static int apply_r_mips_32_rel(struct mo
+ static int apply_r_mips_none(struct module *me, u32 *location,
+ 			     u32 base, Elf_Addr v, bool rela)
+@@ -67,9 +274,40 @@ static int apply_r_mips_32(struct module
  	return 0;
  }
  
@@ -297,14 +297,15 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +
 +}
 +
- static int apply_r_mips_26_rel(struct module *me, u32 *location, Elf_Addr v)
+ static int apply_r_mips_26(struct module *me, u32 *location,
+ 			   u32 base, Elf_Addr v, bool rela)
  {
-+	u32 ofs = *location & 0x03ffffff;
++	u32 ofs = base & 0x03ffffff;
 +
  	if (v % 4) {
- 		pr_err("module %s: dangerous R_MIPS_26 REL relocation\n",
+ 		pr_err("module %s: dangerous R_MIPS_26 relocation\n",
  		       me->name);
-@@ -74,13 +312,17 @@ static int apply_r_mips_26_rel(struct mo
+@@ -77,13 +315,17 @@ static int apply_r_mips_26(struct module
  	}
  
  	if ((v & 0xf0000000) != (((unsigned long)location + 4) & 0xf0000000)) {
@@ -321,12 +322,12 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	}
  
  	*location = (*location & ~0x03ffffff) |
--		    ((*location + (v >> 2)) & 0x03ffffff);
+-		    ((base + (v >> 2)) & 0x03ffffff);
 +		    ((ofs + (v >> 2)) & 0x03ffffff);
  
  	return 0;
  }
-@@ -349,9 +591,36 @@ int module_finalize(const Elf_Ehdr *hdr,
+@@ -459,9 +701,36 @@ int module_finalize(const Elf_Ehdr *hdr,
  		list_add(&me->arch.dbe_list, &dbe_list);
  		spin_unlock_irq(&dbe_lock);
  	}
diff --git a/target/linux/generic/pending-4.14/306-mips_mem_functions_performance.patch b/target/linux/generic/pending-4.14/306-mips_mem_functions_performance.patch
index 2e404b2236..e73cfd61b3 100644
--- a/target/linux/generic/pending-4.14/306-mips_mem_functions_performance.patch
+++ b/target/linux/generic/pending-4.14/306-mips_mem_functions_performance.patch
@@ -13,15 +13,15 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/arch/mips/boot/compressed/Makefile
 +++ b/arch/mips/boot/compressed/Makefile
-@@ -23,7 +23,8 @@ KBUILD_CFLAGS := $(shell echo $(KBUILD_C
+@@ -23,7 +23,8 @@ KBUILD_CFLAGS := $(filter-out -pg, $(KBU
  KBUILD_CFLAGS := $(filter-out -fstack-protector, $(KBUILD_CFLAGS))
  
- KBUILD_CFLAGS := $(LINUXINCLUDE) $(KBUILD_CFLAGS) -D__KERNEL__ \
+ KBUILD_CFLAGS := $(KBUILD_CFLAGS) -D__KERNEL__ \
 -	-DBOOT_HEAP_SIZE=$(BOOT_HEAP_SIZE) -D"VMLINUX_LOAD_ADDRESS_ULL=$(VMLINUX_LOAD_ADDRESS)ull"
 +	-DBOOT_HEAP_SIZE=$(BOOT_HEAP_SIZE) -D"VMLINUX_LOAD_ADDRESS_ULL=$(VMLINUX_LOAD_ADDRESS)ull" \
 +	-D__ZBOOT__
  
- KBUILD_AFLAGS := $(LINUXINCLUDE) $(KBUILD_AFLAGS) -D__ASSEMBLY__ \
+ KBUILD_AFLAGS := $(KBUILD_AFLAGS) -D__ASSEMBLY__ \
  	-DBOOT_HEAP_SIZE=$(BOOT_HEAP_SIZE) \
 --- a/arch/mips/include/asm/string.h
 +++ b/arch/mips/include/asm/string.h
@@ -70,14 +70,14 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  #endif /* _ASM_STRING_H */
 --- a/arch/mips/lib/Makefile
 +++ b/arch/mips/lib/Makefile
-@@ -4,7 +4,7 @@
+@@ -5,7 +5,7 @@
  
  lib-y	+= bitops.o csum_partial.o delay.o memcpy.o memset.o \
- 	   mips-atomic.o strlen_user.o strncpy_user.o \
+ 	   mips-atomic.o strncpy_user.o \
 -	   strnlen_user.o uncached.o
 +	   strnlen_user.o uncached.o memcmp.o
  
- obj-y			+= iomap.o
+ obj-y			+= iomap.o iomap_copy.o
  obj-$(CONFIG_PCI)	+= iomap-pci.o
 --- /dev/null
 +++ b/arch/mips/lib/memcmp.c
diff --git a/target/linux/generic/pending-4.14/308-mips32r2_tune.patch b/target/linux/generic/pending-4.14/308-mips32r2_tune.patch
index 63cf576bd8..7f98616d7a 100644
--- a/target/linux/generic/pending-4.14/308-mips32r2_tune.patch
+++ b/target/linux/generic/pending-4.14/308-mips32r2_tune.patch
@@ -11,12 +11,12 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/arch/mips/Makefile
 +++ b/arch/mips/Makefile
-@@ -148,7 +148,7 @@ cflags-$(CONFIG_CPU_R4X00)	+= -march=r46
+@@ -162,7 +162,7 @@ cflags-$(CONFIG_CPU_R4X00)	+= -march=r46
  cflags-$(CONFIG_CPU_TX49XX)	+= -march=r4600 -Wa,--trap
  cflags-$(CONFIG_CPU_MIPS32_R1)	+= $(call cc-option,-march=mips32,-mips32 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS32) \
  			-Wa,-mips32 -Wa,--trap
 -cflags-$(CONFIG_CPU_MIPS32_R2)	+= $(call cc-option,-march=mips32r2,-mips32r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS32) \
 +cflags-$(CONFIG_CPU_MIPS32_R2)	+= $(call cc-option,-march=mips32r2 -mtune=34kc,-mips32r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS32) \
  			-Wa,-mips32r2 -Wa,--trap
- cflags-$(CONFIG_CPU_MIPS32_R6)	+= -march=mips32r6 -Wa,--trap
+ cflags-$(CONFIG_CPU_MIPS32_R6)	+= -march=mips32r6 -Wa,--trap -modd-spreg
  cflags-$(CONFIG_CPU_MIPS64_R1)	+= $(call cc-option,-march=mips64,-mips64 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64) \
diff --git a/target/linux/generic/pending-4.14/310-arm_module_unresolved_weak_sym.patch b/target/linux/generic/pending-4.14/310-arm_module_unresolved_weak_sym.patch
index cc1a51d17d..bc9f0a4c4d 100644
--- a/target/linux/generic/pending-4.14/310-arm_module_unresolved_weak_sym.patch
+++ b/target/linux/generic/pending-4.14/310-arm_module_unresolved_weak_sym.patch
@@ -9,7 +9,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/arch/arm/kernel/module.c
 +++ b/arch/arm/kernel/module.c
-@@ -88,6 +88,10 @@ apply_relocate(Elf32_Shdr *sechdrs, cons
+@@ -95,6 +95,10 @@ apply_relocate(Elf32_Shdr *sechdrs, cons
  			return -ENOEXEC;
  		}
  
diff --git a/target/linux/generic/pending-4.14/330-MIPS-kexec-Accept-command-line-parameters-from-users.patch b/target/linux/generic/pending-4.14/330-MIPS-kexec-Accept-command-line-parameters-from-users.patch
index ff85a13fda..5cdcc2b242 100644
--- a/target/linux/generic/pending-4.14/330-MIPS-kexec-Accept-command-line-parameters-from-users.patch
+++ b/target/linux/generic/pending-4.14/330-MIPS-kexec-Accept-command-line-parameters-from-users.patch
@@ -29,7 +29,7 @@  Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
  
  int (*_machine_kexec_prepare)(struct kimage *) = NULL;
  void (*_machine_kexec_shutdown)(void) = NULL;
-@@ -28,9 +25,115 @@ atomic_t kexec_ready_to_reboot = ATOMIC_
+@@ -28,6 +25,99 @@ atomic_t kexec_ready_to_reboot = ATOMIC_
  void (*_crash_smp_send_stop)(void) = NULL;
  #endif
  
@@ -126,9 +126,13 @@  Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
 +		kexec_argv[i] += reloc_delta;
 +}
 +
- int
+ static void kexec_image_info(const struct kimage *kimage)
+ {
+ 	unsigned long i;
+@@ -52,6 +142,18 @@ int
  machine_kexec_prepare(struct kimage *kimage)
  {
+ 	kexec_image_info(kimage);
 +	/*
 +	 * Whenever arguments passed from kexec-tools, Init the arguments as
 +	 * the original ones to try avoiding booting failure.
@@ -141,11 +145,10 @@  Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
 +
 +	machine_kexec_init_argv(kimage);
 +	machine_kexec_parse_argv(kimage);
-+
+ 
  	if (_machine_kexec_prepare)
  		return _machine_kexec_prepare(kimage);
- 	return 0;
-@@ -67,10 +170,12 @@ machine_kexec(struct kimage *image)
+@@ -89,10 +191,12 @@ machine_kexec(struct kimage *image)
  	unsigned long *ptr;
  
  	reboot_code_buffer =
@@ -159,7 +162,7 @@  Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
  
  	if (image->type == KEXEC_TYPE_DEFAULT) {
  		kexec_indirection_page =
-@@ -78,9 +183,19 @@ machine_kexec(struct kimage *image)
+@@ -100,9 +204,19 @@ machine_kexec(struct kimage *image)
  	} else {
  		kexec_indirection_page = (unsigned long)&image->head;
  	}
@@ -181,7 +184,7 @@  Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
  
  	/*
  	 * The generic kexec code builds a page list with physical
-@@ -99,15 +214,16 @@ machine_kexec(struct kimage *image)
+@@ -121,15 +235,16 @@ machine_kexec(struct kimage *image)
  	/*
  	 * we do not want to be bothered.
  	 */
diff --git a/target/linux/generic/pending-4.14/332-arc-add-OWRTDTB-section.patch b/target/linux/generic/pending-4.14/332-arc-add-OWRTDTB-section.patch
index 79d67c8bf0..58f14b6ca5 100644
--- a/target/linux/generic/pending-4.14/332-arc-add-OWRTDTB-section.patch
+++ b/target/linux/generic/pending-4.14/332-arc-add-OWRTDTB-section.patch
@@ -38,7 +38,7 @@  Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
  ;----------------------------------------------------------------
 --- a/arch/arc/kernel/setup.c
 +++ b/arch/arc/kernel/setup.c
-@@ -388,6 +388,8 @@ static inline int is_kernel(unsigned lon
+@@ -421,6 +421,8 @@ static inline int is_kernel(unsigned lon
  	return 0;
  }
  
@@ -47,7 +47,7 @@  Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
  void __init setup_arch(char **cmdline_p)
  {
  #ifdef CONFIG_ARC_UBOOT_SUPPORT
-@@ -401,7 +403,7 @@ void __init setup_arch(char **cmdline_p)
+@@ -434,7 +436,7 @@ void __init setup_arch(char **cmdline_p)
  #endif
  	{
  		/* No, so try the embedded one */
diff --git a/target/linux/generic/pending-4.14/340-MIPS-mm-remove-mips_dma_mapping_error.patch b/target/linux/generic/pending-4.14/340-MIPS-mm-remove-mips_dma_mapping_error.patch
index 4091542581..8d6cada842 100644
--- a/target/linux/generic/pending-4.14/340-MIPS-mm-remove-mips_dma_mapping_error.patch
+++ b/target/linux/generic/pending-4.14/340-MIPS-mm-remove-mips_dma_mapping_error.patch
@@ -10,19 +10,19 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/arch/mips/mm/dma-default.c
 +++ b/arch/mips/mm/dma-default.c
-@@ -394,11 +394,6 @@ static void mips_dma_sync_sg_for_device(
+@@ -373,11 +373,6 @@ static void mips_dma_sync_sg_for_device(
  	}
  }
  
--int mips_dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
+-static int mips_dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
 -{
 -	return 0;
 -}
 -
- int mips_dma_supported(struct device *dev, u64 mask)
+ static int mips_dma_supported(struct device *dev, u64 mask)
  {
  	return plat_dma_supported(dev, mask);
-@@ -427,7 +422,6 @@ static struct dma_map_ops mips_default_d
+@@ -406,7 +401,6 @@ static const struct dma_map_ops mips_def
  	.sync_single_for_device = mips_dma_sync_single_for_device,
  	.sync_sg_for_cpu = mips_dma_sync_sg_for_cpu,
  	.sync_sg_for_device = mips_dma_sync_sg_for_device,
diff --git a/target/linux/generic/pending-4.14/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch b/target/linux/generic/pending-4.14/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch
index 5b237a6d23..3cd87861a4 100644
--- a/target/linux/generic/pending-4.14/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch
+++ b/target/linux/generic/pending-4.14/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch
@@ -14,7 +14,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -213,6 +213,7 @@ config BMIPS_GENERIC
+@@ -220,6 +220,7 @@ config BMIPS_GENERIC
  	select BRCMSTB_L2_IRQ
  	select IRQ_MIPS_CPU
  	select DMA_NONCOHERENT
@@ -22,7 +22,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	select SYS_SUPPORTS_32BIT_KERNEL
  	select SYS_SUPPORTS_LITTLE_ENDIAN
  	select SYS_SUPPORTS_BIG_ENDIAN
-@@ -338,6 +339,7 @@ config MACH_JAZZ
+@@ -345,6 +346,7 @@ config MACH_JAZZ
  	select CSRC_R4K
  	select DEFAULT_SGI_PARTITION if CPU_BIG_ENDIAN
  	select GENERIC_ISA_DMA
@@ -30,7 +30,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	select HAVE_PCSPKR_PLATFORM
  	select IRQ_MIPS_CPU
  	select I8253
-@@ -1125,6 +1127,9 @@ config DMA_NONCOHERENT
+@@ -1127,6 +1129,9 @@ config DMA_NONCOHERENT
  	bool
  	select NEED_DMA_MAP_STATE
  
@@ -40,7 +40,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  config NEED_DMA_MAP_STATE
  	bool
  
-@@ -1649,6 +1654,7 @@ config CPU_R10000
+@@ -1651,6 +1656,7 @@ config CPU_R10000
  	select CPU_SUPPORTS_64BIT_KERNEL
  	select CPU_SUPPORTS_HIGHMEM
  	select CPU_SUPPORTS_HUGEPAGES
@@ -48,7 +48,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	help
  	  MIPS Technologies R10000-series processors.
  
-@@ -1894,9 +1900,11 @@ config SYS_HAS_CPU_MIPS32_R3_5
+@@ -1899,9 +1905,11 @@ config SYS_HAS_CPU_MIPS32_R3_5
  	bool
  
  config SYS_HAS_CPU_MIPS32_R5
@@ -60,7 +60,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	bool
  
  config SYS_HAS_CPU_MIPS64_R1
-@@ -1906,6 +1914,7 @@ config SYS_HAS_CPU_MIPS64_R2
+@@ -1911,6 +1919,7 @@ config SYS_HAS_CPU_MIPS64_R2
  	bool
  
  config SYS_HAS_CPU_MIPS64_R6
@@ -70,7 +70,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  config SYS_HAS_CPU_R3000
 --- a/arch/mips/mm/dma-default.c
 +++ b/arch/mips/mm/dma-default.c
-@@ -290,8 +290,9 @@ static inline void __dma_sync(struct pag
+@@ -267,8 +267,9 @@ static inline void __dma_sync(struct pag
  	} while (left);
  }
  
@@ -80,9 +80,9 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +mips_dma_unmap_page(struct device *dev, dma_addr_t dma_addr, size_t size,
 +		    enum dma_data_direction direction, unsigned long attrs)
  {
- 	if (cpu_needs_post_dma_flush(dev))
+ 	if (cpu_needs_post_dma_flush(dev) && !(attrs & DMA_ATTR_SKIP_CPU_SYNC))
  		__dma_sync(dma_addr_to_page(dev, dma_addr),
-@@ -330,9 +331,10 @@ static dma_addr_t mips_dma_map_page(stru
+@@ -308,9 +309,10 @@ static dma_addr_t mips_dma_map_page(stru
  	return plat_map_dma_mem_page(dev, page) + offset;
  }
  
@@ -96,7 +96,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  {
  	int i;
  	struct scatterlist *sg;
-@@ -346,8 +348,9 @@ static void mips_dma_unmap_sg(struct dev
+@@ -325,8 +327,9 @@ static void mips_dma_unmap_sg(struct dev
  	}
  }
  
@@ -108,7 +108,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  {
  	if (cpu_needs_post_dma_flush(dev))
  		__dma_sync(dma_addr_to_page(dev, dma_handle),
-@@ -363,9 +366,9 @@ static void mips_dma_sync_single_for_dev
+@@ -342,9 +345,9 @@ static void mips_dma_sync_single_for_dev
  			   dma_handle & ~PAGE_MASK, size, direction);
  }
  
@@ -121,7 +121,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  {
  	int i;
  	struct scatterlist *sg;
-@@ -415,12 +418,14 @@ static struct dma_map_ops mips_default_d
+@@ -394,12 +397,14 @@ static const struct dma_map_ops mips_def
  	.free = mips_dma_free_coherent,
  	.mmap = mips_dma_mmap,
  	.map_page = mips_dma_map_page,
diff --git a/target/linux/generic/pending-4.14/400-mtd-add-rootfs-split-support.patch b/target/linux/generic/pending-4.14/400-mtd-add-rootfs-split-support.patch
index cf8a54ff56..f0c852a695 100644
--- a/target/linux/generic/pending-4.14/400-mtd-add-rootfs-split-support.patch
+++ b/target/linux/generic/pending-4.14/400-mtd-add-rootfs-split-support.patch
@@ -59,7 +59,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  /*
   * Given a pointer to the MTD object in the mtd_part structure, we can retrieve
   * the pointer to that structure.
-@@ -678,6 +682,7 @@ int mtd_add_partition(struct mtd_info *p
+@@ -686,6 +690,7 @@ int mtd_add_partition(struct mtd_info *p
  	mutex_unlock(&mtd_partitions_mutex);
  
  	add_mtd_device(&new->mtd);
@@ -67,7 +67,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
  	mtd_add_partition_attrs(new);
  
-@@ -756,6 +761,35 @@ int mtd_del_partition(struct mtd_info *m
+@@ -764,6 +769,35 @@ int mtd_del_partition(struct mtd_info *m
  }
  EXPORT_SYMBOL_GPL(mtd_del_partition);
  
@@ -103,7 +103,7 @@  Signed-off-by: Felix Fietkau <nbd@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
-@@ -787,6 +821,7 @@ int add_mtd_partitions(struct mtd_info *
+@@ -795,6 +829,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.14/401-mtd-add-support-for-different-partition-parser-types.patch b/target/linux/generic/pending-4.14/401-mtd-add-support-for-different-partition-parser-types.patch
index c112453498..77ee85a8c8 100644
--- a/target/linux/generic/pending-4.14/401-mtd-add-support-for-different-partition-parser-types.patch
+++ b/target/linux/generic/pending-4.14/401-mtd-add-support-for-different-partition-parser-types.patch
@@ -9,7 +9,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 
 --- a/drivers/mtd/mtdpart.c
 +++ b/drivers/mtd/mtdpart.c
-@@ -1036,6 +1036,62 @@ void mtd_part_parser_cleanup(struct mtd_
+@@ -1034,6 +1034,62 @@ void mtd_part_parser_cleanup(struct mtd_
  	}
  }
  
diff --git a/target/linux/generic/pending-4.14/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch b/target/linux/generic/pending-4.14/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch
index b78ff526ff..dff9c3166e 100644
--- a/target/linux/generic/pending-4.14/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch
+++ b/target/linux/generic/pending-4.14/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch
@@ -10,7 +10,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 
 --- a/drivers/mtd/mtdpart.c
 +++ b/drivers/mtd/mtdpart.c
-@@ -761,6 +761,36 @@ int mtd_del_partition(struct mtd_info *m
+@@ -769,6 +769,36 @@ int mtd_del_partition(struct mtd_info *m
  }
  EXPORT_SYMBOL_GPL(mtd_del_partition);
  
@@ -47,7 +47,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  #ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME
  #define SPLIT_FIRMWARE_NAME	CONFIG_MTD_SPLIT_FIRMWARE_NAME
  #else
-@@ -769,6 +799,7 @@ EXPORT_SYMBOL_GPL(mtd_del_partition);
+@@ -777,6 +807,7 @@ EXPORT_SYMBOL_GPL(mtd_del_partition);
  
  static void split_firmware(struct mtd_info *master, struct mtd_part *part)
  {
@@ -55,7 +55,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  }
  
  void __weak arch_split_mtd_part(struct mtd_info *master, const char *name,
-@@ -783,6 +814,12 @@ static void mtd_partition_split(struct m
+@@ -791,6 +822,12 @@ static void mtd_partition_split(struct m
  	if (rootfs_found)
  		return;
  
diff --git a/target/linux/generic/pending-4.14/403-mtd-hook-mtdsplit-to-Kbuild.patch b/target/linux/generic/pending-4.14/403-mtd-hook-mtdsplit-to-Kbuild.patch
index 917cd9cafe..89c202bc0d 100644
--- a/target/linux/generic/pending-4.14/403-mtd-hook-mtdsplit-to-Kbuild.patch
+++ b/target/linux/generic/pending-4.14/403-mtd-hook-mtdsplit-to-Kbuild.patch
@@ -21,7 +21,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  config MTD_TESTS
 --- a/drivers/mtd/Makefile
 +++ b/drivers/mtd/Makefile
-@@ -6,6 +6,8 @@
+@@ -7,6 +7,8 @@
  obj-$(CONFIG_MTD)		+= mtd.o
  mtd-y				:= mtdcore.o mtdsuper.o mtdconcat.o mtdpart.o mtdchar.o
  
diff --git a/target/linux/generic/pending-4.14/404-mtd-add-more-helper-functions.patch b/target/linux/generic/pending-4.14/404-mtd-add-more-helper-functions.patch
index 8e9604fb7d..97bd7730c8 100644
--- a/target/linux/generic/pending-4.14/404-mtd-add-more-helper-functions.patch
+++ b/target/linux/generic/pending-4.14/404-mtd-add-more-helper-functions.patch
@@ -11,7 +11,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 
 --- a/drivers/mtd/mtdpart.c
 +++ b/drivers/mtd/mtdpart.c
-@@ -791,6 +791,17 @@ run_parsers_by_type(struct mtd_part *sla
+@@ -799,6 +799,17 @@ run_parsers_by_type(struct mtd_part *sla
  	return nr_parts;
  }
  
@@ -29,7 +29,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  #ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME
  #define SPLIT_FIRMWARE_NAME	CONFIG_MTD_SPLIT_FIRMWARE_NAME
  #else
-@@ -1146,6 +1157,24 @@ int mtd_is_partition(const struct mtd_in
+@@ -1144,6 +1155,24 @@ int mtd_is_partition(const struct mtd_in
  }
  EXPORT_SYMBOL_GPL(mtd_is_partition);
  
@@ -56,7 +56,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  {
 --- a/include/linux/mtd/mtd.h
 +++ b/include/linux/mtd/mtd.h
-@@ -485,6 +485,24 @@ static inline uint32_t mtd_mod_by_eb(uin
+@@ -493,6 +493,24 @@ static inline uint32_t mtd_mod_by_eb(uin
  	return do_div(sz, mtd->erasesize);
  }
  
diff --git a/target/linux/generic/pending-4.14/411-mtd-partial_eraseblock_write.patch b/target/linux/generic/pending-4.14/411-mtd-partial_eraseblock_write.patch
index 6c03a29842..096d6a4e71 100644
--- a/target/linux/generic/pending-4.14/411-mtd-partial_eraseblock_write.patch
+++ b/target/linux/generic/pending-4.14/411-mtd-partial_eraseblock_write.patch
@@ -107,7 +107,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
  		if (instr->fail_addr != MTD_FAIL_ADDR_UNKNOWN)
  			instr->fail_addr -= part->offset;
-@@ -590,19 +659,22 @@ static struct mtd_part *allocate_partiti
+@@ -598,19 +667,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 */
@@ -141,7 +141,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	mtd_set_ooblayout(&slave->mtd, &part_ooblayout_ops);
 --- a/include/linux/mtd/mtd.h
 +++ b/include/linux/mtd/mtd.h
-@@ -55,6 +55,10 @@ struct erase_info {
+@@ -56,6 +56,10 @@ struct erase_info {
  	u_long priv;
  	u_char state;
  	struct erase_info *next;
diff --git a/target/linux/generic/pending-4.14/430-mtd-add-myloader-partition-parser.patch b/target/linux/generic/pending-4.14/430-mtd-add-myloader-partition-parser.patch
index eb969a0d91..889c452057 100644
--- a/target/linux/generic/pending-4.14/430-mtd-add-myloader-partition-parser.patch
+++ b/target/linux/generic/pending-4.14/430-mtd-add-myloader-partition-parser.patch
@@ -37,7 +37,7 @@  Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
  #
 --- a/drivers/mtd/Makefile
 +++ b/drivers/mtd/Makefile
-@@ -15,6 +15,7 @@ obj-$(CONFIG_MTD_AFS_PARTS)	+= afs.o
+@@ -16,6 +16,7 @@ obj-$(CONFIG_MTD_AFS_PARTS)	+= afs.o
  obj-$(CONFIG_MTD_AR7_PARTS)	+= ar7part.o
  obj-$(CONFIG_MTD_BCM63XX_PARTS)	+= bcm63xxpart.o
  obj-$(CONFIG_MTD_BCM47XX_PARTS)	+= bcm47xxpart.o
diff --git a/target/linux/generic/pending-4.14/460-mtd-cfi_cmdset_0002-no-erase_suspend.patch b/target/linux/generic/pending-4.14/460-mtd-cfi_cmdset_0002-no-erase_suspend.patch
index c52d7de762..41f9d31cb0 100644
--- a/target/linux/generic/pending-4.14/460-mtd-cfi_cmdset_0002-no-erase_suspend.patch
+++ b/target/linux/generic/pending-4.14/460-mtd-cfi_cmdset_0002-no-erase_suspend.patch
@@ -14,7 +14,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/drivers/mtd/chips/cfi_cmdset_0002.c
 +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
-@@ -807,7 +807,7 @@ static int get_chip(struct map_info *map
+@@ -811,7 +811,7 @@ static int get_chip(struct map_info *map
  		return 0;
  
  	case FL_ERASING:
diff --git a/target/linux/generic/pending-4.14/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch b/target/linux/generic/pending-4.14/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch
index c1b0d4f16b..f4ba5b72f7 100644
--- a/target/linux/generic/pending-4.14/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch
+++ b/target/linux/generic/pending-4.14/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch
@@ -7,7 +7,7 @@  Signed-off-by: George Kashperko <george@znau.edu.ua>
  1 file changed, 1 insertion(+)
 --- a/drivers/mtd/chips/cfi_cmdset_0002.c
 +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
-@@ -1828,6 +1828,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.14/465-m25p80-mx-disable-software-protection.patch b/target/linux/generic/pending-4.14/465-m25p80-mx-disable-software-protection.patch
index 9b90b9bc7e..89d38ec303 100644
--- a/target/linux/generic/pending-4.14/465-m25p80-mx-disable-software-protection.patch
+++ b/target/linux/generic/pending-4.14/465-m25p80-mx-disable-software-protection.patch
@@ -8,7 +8,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/drivers/mtd/spi-nor/spi-nor.c
 +++ b/drivers/mtd/spi-nor/spi-nor.c
-@@ -1595,6 +1595,7 @@ int spi_nor_scan(struct spi_nor *nor, co
+@@ -2715,6 +2715,7 @@ int spi_nor_scan(struct spi_nor *nor, co
  
  	if (JEDEC_MFR(info) == SNOR_MFR_ATMEL ||
  	    JEDEC_MFR(info) == SNOR_MFR_INTEL ||
diff --git a/target/linux/generic/pending-4.14/470-mtd-spi-nor-support-limiting-4K-sectors-support-base.patch b/target/linux/generic/pending-4.14/470-mtd-spi-nor-support-limiting-4K-sectors-support-base.patch
index 1c5b9c3b26..10db289cc9 100644
--- a/target/linux/generic/pending-4.14/470-mtd-spi-nor-support-limiting-4K-sectors-support-base.patch
+++ b/target/linux/generic/pending-4.14/470-mtd-spi-nor-support-limiting-4K-sectors-support-base.patch
@@ -19,9 +19,9 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/drivers/mtd/spi-nor/Kconfig
 +++ b/drivers/mtd/spi-nor/Kconfig
-@@ -29,6 +29,17 @@ config MTD_SPI_NOR_USE_4K_SECTORS
- 	  Please note that some tools/drivers/filesystems may not work with
- 	  4096 B erase size (e.g. UBIFS requires 15 KiB as a minimum).
+@@ -39,6 +39,17 @@ config SPI_ASPEED_SMC
+ 	  and support for the SPI flash memory controller (SPI) for
+ 	  the host firmware. The implementation only supports SPI NOR.
  
 +config MTD_SPI_NOR_USE_4K_SECTORS_LIMIT
 +	int "Maximum flash chip size to use 4K sectors on (in KiB)"
@@ -39,7 +39,7 @@  Signed-off-by: Felix Fietkau <nbd@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
-@@ -1640,10 +1640,12 @@ int spi_nor_scan(struct spi_nor *nor, co
+@@ -2562,10 +2562,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.14/477-mtd-add-spi-nor-add-mx25u3235f.patch b/target/linux/generic/pending-4.14/477-mtd-add-spi-nor-add-mx25u3235f.patch
index 9f044027d9..191e01df7a 100644
--- a/target/linux/generic/pending-4.14/477-mtd-add-spi-nor-add-mx25u3235f.patch
+++ b/target/linux/generic/pending-4.14/477-mtd-add-spi-nor-add-mx25u3235f.patch
@@ -8,11 +8,11 @@  Signed-off-by: André Valentin <avalentin@marcant.net>
 
 --- a/drivers/mtd/spi-nor/spi-nor.c
 +++ b/drivers/mtd/spi-nor/spi-nor.c
-@@ -1014,6 +1014,7 @@ static const struct flash_info spi_nor_i
+@@ -1016,6 +1016,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) },
 +	{ "mx25u3235f",	 INFO(0xc22536, 0, 64 * 1024, 64, 0) },
- 	{ "mx25u6435f",  INFO(0xc22537, 0, 64 * 1024, 128, SECT_4K) },
- 	{ "mx25l12805d", INFO(0xc22018, 0, 64 * 1024, 256, 0) },
- 	{ "mx25l12855e", INFO(0xc22618, 0, 64 * 1024, 256, 0) },
+ 	{ "mx25u2033e",  INFO(0xc22532, 0, 64 * 1024,   4, SECT_4K) },
+ 	{ "mx25u4035",   INFO(0xc22533, 0, 64 * 1024,   8, SECT_4K) },
+ 	{ "mx25u8035",   INFO(0xc22534, 0, 64 * 1024,  16, SECT_4K) },
diff --git a/target/linux/generic/pending-4.14/480-mtd-set-rootfs-to-be-root-dev.patch b/target/linux/generic/pending-4.14/480-mtd-set-rootfs-to-be-root-dev.patch
index 1bc958c2f7..6cddaf01b7 100644
--- a/target/linux/generic/pending-4.14/480-mtd-set-rootfs-to-be-root-dev.patch
+++ b/target/linux/generic/pending-4.14/480-mtd-set-rootfs-to-be-root-dev.patch
@@ -12,15 +12,15 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 
 --- a/drivers/mtd/mtdcore.c
 +++ b/drivers/mtd/mtdcore.c
-@@ -40,6 +40,7 @@
- #include <linux/slab.h>
+@@ -41,6 +41,7 @@
  #include <linux/reboot.h>
  #include <linux/leds.h>
+ #include <linux/debugfs.h>
 +#include <linux/root_dev.h>
  
  #include <linux/mtd/mtd.h>
  #include <linux/mtd/partitions.h>
-@@ -570,6 +571,15 @@ int add_mtd_device(struct mtd_info *mtd)
+@@ -578,6 +579,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.14/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch b/target/linux/generic/pending-4.14/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch
index a8dcad458f..523a69c873 100644
--- a/target/linux/generic/pending-4.14/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch
+++ b/target/linux/generic/pending-4.14/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch
@@ -8,7 +8,7 @@  Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 
 --- a/drivers/mtd/ubi/build.c
 +++ b/drivers/mtd/ubi/build.c
-@@ -1212,6 +1212,49 @@ static struct mtd_info * __init open_mtd
+@@ -1157,6 +1157,49 @@ static struct mtd_info * __init open_mtd
  	return mtd;
  }
  
@@ -58,7 +58,7 @@  Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  static int __init ubi_init(void)
  {
  	int err, i, k;
-@@ -1295,6 +1338,12 @@ static int __init ubi_init(void)
+@@ -1240,6 +1283,12 @@ static int __init ubi_init(void)
  		}
  	}
  
@@ -70,4 +70,4 @@  Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 +
  	err = ubiblock_init();
  	if (err) {
- 		pr_err("UBI error: block: cannot initialize, error %d", err);
+ 		pr_err("UBI error: block: cannot initialize, error %d\n", err);
diff --git a/target/linux/generic/pending-4.14/491-ubi-auto-create-ubiblock-device-for-rootfs.patch b/target/linux/generic/pending-4.14/491-ubi-auto-create-ubiblock-device-for-rootfs.patch
index 2e7933ba2b..f8dc1bcb28 100644
--- a/target/linux/generic/pending-4.14/491-ubi-auto-create-ubiblock-device-for-rootfs.patch
+++ b/target/linux/generic/pending-4.14/491-ubi-auto-create-ubiblock-device-for-rootfs.patch
@@ -8,7 +8,7 @@  Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 
 --- a/drivers/mtd/ubi/block.c
 +++ b/drivers/mtd/ubi/block.c
-@@ -627,6 +627,44 @@ static void __init ubiblock_create_from_
+@@ -625,6 +625,44 @@ static void __init ubiblock_create_from_
  	}
  }
  
@@ -53,7 +53,7 @@  Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  static void ubiblock_remove_all(void)
  {
  	struct ubiblock *next;
-@@ -657,6 +695,10 @@ int __init ubiblock_init(void)
+@@ -655,6 +693,10 @@ int __init ubiblock_init(void)
  	 */
  	ubiblock_create_from_param();
  
diff --git a/target/linux/generic/pending-4.14/493-ubi-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch b/target/linux/generic/pending-4.14/493-ubi-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch
index e41dca6c93..06cd1b62ac 100644
--- a/target/linux/generic/pending-4.14/493-ubi-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch
+++ b/target/linux/generic/pending-4.14/493-ubi-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch
@@ -16,7 +16,7 @@  Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  
  #include "ubi-media.h"
  #include "ubi.h"
-@@ -447,6 +448,15 @@ int ubiblock_create(struct ubi_volume_in
+@@ -445,6 +446,15 @@ int ubiblock_create(struct ubi_volume_in
  	add_disk(dev->gd);
  	dev_info(disk_to_dev(dev->gd), "created from ubi%d:%d(%s)",
  		 dev->ubi_num, dev->vol_id, vi->name);
diff --git a/target/linux/generic/pending-4.14/494-mtd-ubi-add-EOF-marker-support.patch b/target/linux/generic/pending-4.14/494-mtd-ubi-add-EOF-marker-support.patch
index c6ba444b4d..99cc0f6cdc 100644
--- a/target/linux/generic/pending-4.14/494-mtd-ubi-add-EOF-marker-support.patch
+++ b/target/linux/generic/pending-4.14/494-mtd-ubi-add-EOF-marker-support.patch
@@ -50,7 +50,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  		break;
 --- a/drivers/mtd/ubi/ubi.h
 +++ b/drivers/mtd/ubi/ubi.h
-@@ -779,6 +779,7 @@ struct ubi_attach_info {
+@@ -778,6 +778,7 @@ struct ubi_attach_info {
  	int mean_ec;
  	uint64_t ec_sum;
  	int ec_count;
diff --git a/target/linux/generic/pending-4.14/530-jffs2_make_lzma_available.patch b/target/linux/generic/pending-4.14/530-jffs2_make_lzma_available.patch
index 8f68fed50c..046e9d54d3 100644
--- a/target/linux/generic/pending-4.14/530-jffs2_make_lzma_available.patch
+++ b/target/linux/generic/pending-4.14/530-jffs2_make_lzma_available.patch
@@ -56,7 +56,7 @@  Signed-off-by: Alexandros C. Couloumbis <alex@ozo.com>
  	depends on JFFS2_FS
 --- a/fs/jffs2/Makefile
 +++ b/fs/jffs2/Makefile
-@@ -18,4 +18,7 @@ jffs2-$(CONFIG_JFFS2_RUBIN)	+= compr_rub
+@@ -19,4 +19,7 @@ jffs2-$(CONFIG_JFFS2_RUBIN)	+= compr_rub
  jffs2-$(CONFIG_JFFS2_RTIME)	+= compr_rtime.o
  jffs2-$(CONFIG_JFFS2_ZLIB)	+= compr_zlib.o
  jffs2-$(CONFIG_JFFS2_LZO)	+= compr_lzo.o
@@ -1087,7 +1087,7 @@  Signed-off-by: Alexandros C. Couloumbis <alex@ozo.com>
  #define JFFS2_NODE_ACCURATE 0x2000
 --- a/lib/Kconfig
 +++ b/lib/Kconfig
-@@ -241,6 +241,12 @@ config LZ4_DECOMPRESS
+@@ -259,6 +259,12 @@ config ZSTD_DECOMPRESS
  
  source "lib/xz/Kconfig"
  
@@ -1102,7 +1102,7 @@  Signed-off-by: Alexandros C. Couloumbis <alex@ozo.com>
  # ZLIB_INFLATE; DECOMPRESS_GZIP is just a wrapper.)
 --- a/lib/Makefile
 +++ b/lib/Makefile
-@@ -2,6 +2,16 @@
+@@ -3,6 +3,16 @@
  # Makefile for some libs needed in the kernel.
  #
  
@@ -1119,8 +1119,8 @@  Signed-off-by: Alexandros C. Couloumbis <alex@ozo.com>
  ifdef CONFIG_FUNCTION_TRACER
  ORIG_CFLAGS := $(KBUILD_CFLAGS)
  KBUILD_CFLAGS = $(subst $(CC_FLAGS_FTRACE),,$(ORIG_CFLAGS))
-@@ -108,6 +118,8 @@ obj-$(CONFIG_LZ4HC_COMPRESS) += lz4/
- obj-$(CONFIG_LZ4_DECOMPRESS) += lz4/
+@@ -122,6 +132,8 @@ obj-$(CONFIG_ZSTD_COMPRESS) += zstd/
+ obj-$(CONFIG_ZSTD_DECOMPRESS) += zstd/
  obj-$(CONFIG_XZ_DEC) += xz/
  obj-$(CONFIG_RAID6_PQ) += raid6/
 +obj-$(CONFIG_LZMA_COMPRESS) += lzma/
diff --git a/target/linux/generic/pending-4.14/551-ubifs-fix-default-compression-selection.patch b/target/linux/generic/pending-4.14/551-ubifs-fix-default-compression-selection.patch
index ca96cbbdb8..4782fc9ed8 100644
--- a/target/linux/generic/pending-4.14/551-ubifs-fix-default-compression-selection.patch
+++ b/target/linux/generic/pending-4.14/551-ubifs-fix-default-compression-selection.patch
@@ -26,7 +26,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  /**
   * create_default_filesystem - format empty UBI volume.
   * @c: UBIFS file-system description object
-@@ -183,7 +194,7 @@ static int create_default_filesystem(str
+@@ -186,7 +197,7 @@ static int create_default_filesystem(str
  	if (c->mount_opts.override_compr)
  		sup->default_compr = cpu_to_le16(c->mount_opts.compr_type);
  	else
diff --git a/target/linux/generic/pending-4.14/600-netfilter_conntrack_flush.patch b/target/linux/generic/pending-4.14/600-netfilter_conntrack_flush.patch
index 81dac2ab23..f39ed62dc0 100644
--- a/target/linux/generic/pending-4.14/600-netfilter_conntrack_flush.patch
+++ b/target/linux/generic/pending-4.14/600-netfilter_conntrack_flush.patch
@@ -17,7 +17,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  #include <net/net_namespace.h>
  #ifdef CONFIG_SYSCTL
  #include <linux/sysctl.h>
-@@ -298,10 +299,66 @@ static int ct_open(struct inode *inode,
+@@ -377,10 +378,66 @@ static int ct_open(struct inode *inode,
  			sizeof(struct ct_iter_state));
  }
  
@@ -71,7 +71,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +			return -EINVAL;
 +	}
 +
-+	nf_ct_iterate_cleanup(net, kill_matching, &kr, 0, 0);
++	nf_ct_iterate_cleanup_net(net, kill_matching, &kr, 0, 0);
 +
 +	return count;
 +}
@@ -84,7 +84,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	.llseek  = seq_lseek,
  	.release = seq_release_net,
  };
-@@ -405,7 +462,7 @@ static int nf_conntrack_standalone_init_
+@@ -484,7 +541,7 @@ static int nf_conntrack_standalone_init_
  	kuid_t root_uid;
  	kgid_t root_gid;
  
diff --git a/target/linux/generic/pending-4.14/610-netfilter_match_bypass_default_checks.patch b/target/linux/generic/pending-4.14/610-netfilter_match_bypass_default_checks.patch
index 6e653ef881..0a3c0f9677 100644
--- a/target/linux/generic/pending-4.14/610-netfilter_match_bypass_default_checks.patch
+++ b/target/linux/generic/pending-4.14/610-netfilter_match_bypass_default_checks.patch
@@ -9,7 +9,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/include/uapi/linux/netfilter_ipv4/ip_tables.h
 +++ b/include/uapi/linux/netfilter_ipv4/ip_tables.h
-@@ -88,6 +88,7 @@ struct ipt_ip {
+@@ -89,6 +89,7 @@ struct ipt_ip {
  #define IPT_F_FRAG		0x01	/* Set if rule is a fragment rule */
  #define IPT_F_GOTO		0x02	/* Set if jump is a goto */
  #define IPT_F_MASK		0x03	/* All possible flag bits mask. */
@@ -19,7 +19,7 @@  Signed-off-by: Felix Fietkau <nbd@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
-@@ -58,6 +58,9 @@ ip_packet_match(const struct iphdr *ip,
+@@ -52,6 +52,9 @@ ip_packet_match(const struct iphdr *ip,
  {
  	unsigned long ret;
  
@@ -29,7 +29,7 @@  Signed-off-by: Felix Fietkau <nbd@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,
-@@ -88,6 +91,29 @@ ip_packet_match(const struct iphdr *ip,
+@@ -82,6 +85,29 @@ ip_packet_match(const struct iphdr *ip,
  	return true;
  }
  
@@ -59,16 +59,16 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  static bool
  ip_checkentry(const struct ipt_ip *ip)
  {
-@@ -545,6 +571,8 @@ find_check_entry(struct ipt_entry *e, st
+@@ -532,6 +558,8 @@ find_check_entry(struct ipt_entry *e, st
+ 	struct xt_mtchk_param mtpar;
  	struct xt_entry_match *ematch;
- 	unsigned long pcnt;
  
 +	ip_checkdefault(&e->ip);
 +
- 	pcnt = xt_percpu_counter_alloc();
- 	if (IS_ERR_VALUE(pcnt))
+ 	if (!xt_percpu_counter_alloc(alloc_state, &e->counters))
  		return -ENOMEM;
-@@ -824,6 +852,7 @@ copy_entries_to_user(unsigned int total_
+ 
+@@ -812,6 +840,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@nbd.name>
  
  	counters = alloc_counters(table);
  	if (IS_ERR(counters))
-@@ -851,6 +880,14 @@ copy_entries_to_user(unsigned int total_
+@@ -839,6 +868,14 @@ copy_entries_to_user(unsigned int total_
  			goto free_counters;
  		}
  
@@ -91,14 +91,14 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  		for (i = sizeof(struct ipt_entry);
  		     i < e->target_offset;
  		     i += m->u.match_size) {
-@@ -1240,12 +1277,15 @@ compat_copy_entry_to_user(struct ipt_ent
+@@ -1219,12 +1256,15 @@ compat_copy_entry_to_user(struct ipt_ent
  	compat_uint_t origsize;
  	const struct xt_entry_match *ematch;
  	int ret = 0;
 +	u8 flags = e->ip.flags & IPT_F_MASK;
  
  	origsize = *size;
- 	ce = (struct compat_ipt_entry __user *)*dstptr;
+ 	ce = *dstptr;
  	if (copy_to_user(ce, e, sizeof(struct ipt_entry)) != 0 ||
  	    copy_to_user(&ce->counters, &counters[i],
 -	    sizeof(counters[i])) != 0)
diff --git a/target/linux/generic/pending-4.14/611-netfilter_match_bypass_default_table.patch b/target/linux/generic/pending-4.14/611-netfilter_match_bypass_default_table.patch
index 12e4bd5c57..11f07e12b3 100644
--- a/target/linux/generic/pending-4.14/611-netfilter_match_bypass_default_table.patch
+++ b/target/linux/generic/pending-4.14/611-netfilter_match_bypass_default_table.patch
@@ -8,7 +8,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/net/ipv4/netfilter/ip_tables.c
 +++ b/net/ipv4/netfilter/ip_tables.c
-@@ -254,6 +254,33 @@ struct ipt_entry *ipt_next_entry(const s
+@@ -248,6 +248,33 @@ struct ipt_entry *ipt_next_entry(const s
  	return (void *)entry + entry->next_offset;
  }
  
@@ -42,7 +42,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  /* Returns one of the generic firewall policies, like NF_ACCEPT. */
  unsigned int
  ipt_do_table(struct sk_buff *skb,
-@@ -274,28 +301,8 @@ ipt_do_table(struct sk_buff *skb,
+@@ -268,24 +295,8 @@ ipt_do_table(struct sk_buff *skb,
  	unsigned int addend;
  
  	/* Initialization */
@@ -59,19 +59,15 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 -	acpar.fragoff = ntohs(ip->frag_off) & IP_OFFSET;
 -	acpar.thoff   = ip_hdrlen(skb);
 -	acpar.hotdrop = false;
--	acpar.net     = state->net;
--	acpar.in      = state->in;
--	acpar.out     = state->out;
--	acpar.family  = NFPROTO_IPV4;
--	acpar.hooknum = hook;
+-	acpar.state   = state;
 -
- 	IP_NF_ASSERT(table->valid_hooks & (1 << hook));
+ 	WARN_ON(!(table->valid_hooks & (1 << hook)));
  	local_bh_disable();
 -	addend = xt_write_recseq_begin();
  	private = table->private;
  	cpu        = smp_processor_id();
  	/*
-@@ -304,6 +311,23 @@ ipt_do_table(struct sk_buff *skb,
+@@ -294,6 +305,23 @@ ipt_do_table(struct sk_buff *skb,
  	 */
  	smp_read_barrier_depends();
  	table_base = private->entries;
@@ -95,7 +91,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	jumpstack  = (struct ipt_entry **)private->jumpstack[cpu];
  
  	/* Switch to alternate jumpstack if we're being invoked via TEE.
-@@ -316,7 +340,20 @@ ipt_do_table(struct sk_buff *skb,
+@@ -306,7 +334,16 @@ ipt_do_table(struct sk_buff *skb,
  	if (static_key_false(&xt_tee_enabled))
  		jumpstack += private->stacksize * __this_cpu_read(nf_skb_duplicated);
  
@@ -109,11 +105,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +	acpar.fragoff = ntohs(ip->frag_off) & IP_OFFSET;
 +	acpar.thoff   = ip_hdrlen(skb);
 +	acpar.hotdrop = false;
-+	acpar.net     = state->net;
-+	acpar.in      = state->in;
-+	acpar.out     = state->out;
-+	acpar.family  = NFPROTO_IPV4;
-+	acpar.hooknum = hook;
++	acpar.state   = state;
  
  	do {
  		const struct xt_entry_target *t;
diff --git a/target/linux/generic/pending-4.14/612-netfilter_match_reduce_memory_access.patch b/target/linux/generic/pending-4.14/612-netfilter_match_reduce_memory_access.patch
index c6c5172d2f..183c74c1c7 100644
--- a/target/linux/generic/pending-4.14/612-netfilter_match_reduce_memory_access.patch
+++ b/target/linux/generic/pending-4.14/612-netfilter_match_reduce_memory_access.patch
@@ -8,7 +8,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/net/ipv4/netfilter/ip_tables.c
 +++ b/net/ipv4/netfilter/ip_tables.c
-@@ -61,9 +61,9 @@ ip_packet_match(const struct iphdr *ip,
+@@ -55,9 +55,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.14/613-netfilter_optional_tcp_window_check.patch b/target/linux/generic/pending-4.14/613-netfilter_optional_tcp_window_check.patch
index 78a9617762..3ded90168f 100644
--- a/target/linux/generic/pending-4.14/613-netfilter_optional_tcp_window_check.patch
+++ b/target/linux/generic/pending-4.14/613-netfilter_optional_tcp_window_check.patch
@@ -18,7 +18,7 @@  Signed-off-by: Felix Fietkau <nbd@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. */
-@@ -513,6 +516,9 @@ static bool tcp_in_window(const struct n
+@@ -505,6 +508,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@nbd.name>
  	/*
  	 * Get the required data from the packet.
  	 */
-@@ -1479,6 +1485,13 @@ static struct ctl_table tcp_sysctl_table
+@@ -1486,6 +1492,13 @@ static struct ctl_table tcp_sysctl_table
  		.mode		= 0644,
  		.proc_handler	= proc_dointvec,
  	},
diff --git a/target/linux/generic/pending-4.14/616-net_optimize_xfrm_calls.patch b/target/linux/generic/pending-4.14/616-net_optimize_xfrm_calls.patch
index a147f5f94f..c64694ea3c 100644
--- a/target/linux/generic/pending-4.14/616-net_optimize_xfrm_calls.patch
+++ b/target/linux/generic/pending-4.14/616-net_optimize_xfrm_calls.patch
@@ -8,7 +8,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/net/netfilter/nf_nat_core.c
 +++ b/net/netfilter/nf_nat_core.c
-@@ -93,6 +93,9 @@ int nf_xfrm_me_harder(struct net *net, s
+@@ -90,6 +90,9 @@ int nf_xfrm_me_harder(struct net *net, s
  	struct dst_entry *dst;
  	int err;
  
diff --git a/target/linux/generic/pending-4.14/630-packet_socket_type.patch b/target/linux/generic/pending-4.14/630-packet_socket_type.patch
index e943a47a84..7a0f924b8b 100644
--- a/target/linux/generic/pending-4.14/630-packet_socket_type.patch
+++ b/target/linux/generic/pending-4.14/630-packet_socket_type.patch
@@ -11,7 +11,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/include/uapi/linux/if_packet.h
 +++ b/include/uapi/linux/if_packet.h
-@@ -31,6 +31,8 @@ struct sockaddr_ll {
+@@ -32,6 +32,8 @@ struct sockaddr_ll {
  #define PACKET_KERNEL		7		/* To kernel space	*/
  /* Unused, PACKET_FASTROUTE and PACKET_LOOPBACK are invisible to user space */
  #define PACKET_FASTROUTE	6		/* Fastrouted frame	*/
@@ -20,7 +20,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
  /* Packet socket options */
  
-@@ -56,6 +58,7 @@ struct sockaddr_ll {
+@@ -57,6 +59,7 @@ struct sockaddr_ll {
  #define PACKET_QDISC_BYPASS		20
  #define PACKET_ROLLOVER_STATS		21
  #define PACKET_FANOUT_DATA		22
@@ -30,7 +30,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  #define PACKET_FANOUT_LB		1
 --- a/net/packet/af_packet.c
 +++ b/net/packet/af_packet.c
-@@ -1780,6 +1780,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1829,6 +1829,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@nbd.name>
  
  	/*
  	 *	When we registered the protocol we saved the socket in the data
-@@ -1787,6 +1788,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1836,6 +1837,7 @@ static int packet_rcv_spkt(struct sk_buf
  	 */
  
  	sk = pt->af_packet_priv;
@@ -46,7 +46,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
  	/*
  	 *	Yank back the headers [hope the device set this
-@@ -1799,7 +1801,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1848,7 +1850,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@nbd.name>
  		goto out;
  
  	if (!net_eq(dev_net(dev), sock_net(sk)))
-@@ -2037,12 +2039,12 @@ static int packet_rcv(struct sk_buff *sk
+@@ -2075,12 +2077,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@nbd.name>
  	if (!net_eq(dev_net(dev), sock_net(sk)))
  		goto drop;
  
-@@ -2168,12 +2170,12 @@ static int tpacket_rcv(struct sk_buff *s
+@@ -2206,12 +2208,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);
  
@@ -128,7 +128,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  		break;
 --- a/net/packet/internal.h
 +++ b/net/packet/internal.h
-@@ -129,6 +129,7 @@ struct packet_sock {
+@@ -132,6 +132,7 @@ struct packet_sock {
  	struct net_device __rcu	*cached_dev;
  	int			(*xmit)(struct sk_buff *skb);
  	struct packet_type	prot_hook ____cacheline_aligned_in_smp;
diff --git a/target/linux/generic/pending-4.14/655-increase_skb_pad.patch b/target/linux/generic/pending-4.14/655-increase_skb_pad.patch
index ebd9893aa2..4bc8a5e1ca 100644
--- a/target/linux/generic/pending-4.14/655-increase_skb_pad.patch
+++ b/target/linux/generic/pending-4.14/655-increase_skb_pad.patch
@@ -9,7 +9,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/include/linux/skbuff.h
 +++ b/include/linux/skbuff.h
-@@ -2298,7 +2298,7 @@ static inline int pskb_network_may_pull(
+@@ -2456,7 +2456,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.14/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch b/target/linux/generic/pending-4.14/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
index ee58c2c5e9..a114acda92 100644
--- a/target/linux/generic/pending-4.14/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
+++ b/target/linux/generic/pending-4.14/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
@@ -14,7 +14,7 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
 
 --- a/include/net/ip6_tunnel.h
 +++ b/include/net/ip6_tunnel.h
-@@ -17,6 +17,18 @@
+@@ -18,6 +18,18 @@
  /* determine capability on a per-packet basis */
  #define IP6_TNL_F_CAP_PER_PACKET 0x40000
  
@@ -33,7 +33,7 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  struct __ip6_tnl_parm {
  	char name[IFNAMSIZ];	/* name of tunnel device */
  	int link;		/* ifindex of underlying L2 interface */
-@@ -28,6 +40,7 @@ struct __ip6_tnl_parm {
+@@ -29,6 +41,7 @@ struct __ip6_tnl_parm {
  	__u32 flags;		/* tunnel flags */
  	struct in6_addr laddr;	/* local tunnel end-point address */
  	struct in6_addr raddr;	/* remote tunnel end-point address */
@@ -43,10 +43,10 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	__be16			o_flags;
 --- a/include/uapi/linux/if_tunnel.h
 +++ b/include/uapi/linux/if_tunnel.h
-@@ -75,10 +75,23 @@ enum {
- 	IFLA_IPTUN_ENCAP_SPORT,
+@@ -77,10 +77,23 @@ enum {
  	IFLA_IPTUN_ENCAP_DPORT,
  	IFLA_IPTUN_COLLECT_METADATA,
+ 	IFLA_IPTUN_FWMARK,
 +	IFLA_IPTUN_FMRS,
  	__IFLA_IPTUN_MAX,
  };
@@ -143,7 +143,7 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	}
  	return &ip6n->tnls[prio][h];
  }
-@@ -381,6 +392,12 @@ ip6_tnl_dev_uninit(struct net_device *de
+@@ -380,6 +391,12 @@ ip6_tnl_dev_uninit(struct net_device *de
  	struct net *net = t->net;
  	struct ip6_tnl_net *ip6n = net_generic(net, ip6_tnl_net_id);
  
@@ -156,7 +156,7 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	if (dev == ip6n->fb_tnl_dev)
  		RCU_INIT_POINTER(ip6n->tnls_wc[0], NULL);
  	else
-@@ -777,6 +794,107 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t,
+@@ -776,6 +793,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@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,
-@@ -829,6 +947,27 @@ static int __ip6_tnl_rcv(struct ip6_tnl
+@@ -828,6 +946,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@openwrt.org>
  	__skb_tunnel_rx(skb, tunnel->dev, tunnel->net);
  
  	err = dscp_ecn_decapsulate(tunnel, ipv6h, skb);
-@@ -958,6 +1097,7 @@ static void init_tel_txopt(struct ipv6_t
+@@ -959,6 +1098,7 @@ static void init_tel_txopt(struct ipv6_t
  	opt->ops.opt_nflen = 8;
  }
  
@@ -300,7 +300,7 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  /**
   * ip6_tnl_addr_conflict - compare packet addresses to tunnel's own
   *   @t: the outgoing tunnel device
-@@ -1286,6 +1426,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1295,6 +1435,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
  {
  	struct ip6_tnl *t = netdev_priv(dev);
  	struct ipv6hdr *ipv6h = ipv6_hdr(skb);
@@ -308,9 +308,9 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	int encap_limit = -1;
  	__u16 offset;
  	struct flowi6 fl6;
-@@ -1344,6 +1485,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
- 			fl6.flowi6_mark = skb->mark;
- 	}
+@@ -1357,6 +1498,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
+ 
+ 	fl6.flowi6_uid = sock_net_uid(dev_net(dev), NULL);
  
 +	/* try to find matching FMR */
 +	for (fmr = t->parms.fmrs; fmr; fmr = fmr->next) {
@@ -327,10 +327,10 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
  		return -1;
  
-@@ -1471,6 +1624,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
- 	t->parms.flowinfo = p->flowinfo;
+@@ -1485,6 +1638,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
  	t->parms.link = p->link;
  	t->parms.proto = p->proto;
+ 	t->parms.fwmark = p->fwmark;
 +
 +	while (t->parms.fmrs) {
 +		struct __ip6_tnl_fmr *next = t->parms.fmrs->next;
@@ -342,7 +342,7 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	dst_cache_reset(&t->dst_cache);
  	ip6_tnl_link_config(t);
  	return 0;
-@@ -1509,6 +1670,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
+@@ -1523,6 +1684,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@openwrt.org>
  	memcpy(p->name, u->name, sizeof(u->name));
  }
  
-@@ -1886,6 +2048,15 @@ static int ip6_tnl_validate(struct nlatt
+@@ -1904,6 +2066,15 @@ static int ip6_tnl_validate(struct nlatt
  	return 0;
  }
  
@@ -366,10 +366,10 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  static void ip6_tnl_netlink_parms(struct nlattr *data[],
  				  struct __ip6_tnl_parm *parms)
  {
-@@ -1920,6 +2091,46 @@ static void ip6_tnl_netlink_parms(struct
+@@ -1941,6 +2112,46 @@ static void ip6_tnl_netlink_parms(struct
  
- 	if (data[IFLA_IPTUN_COLLECT_METADATA])
- 		parms->collect_md = true;
+ 	if (data[IFLA_IPTUN_FWMARK])
+ 		parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]);
 +
 +	if (data[IFLA_IPTUN_FMRS]) {
 +		unsigned rem;
@@ -379,7 +379,7 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
 +			struct __ip6_tnl_fmr *nfmr;
 +
 +			nla_parse_nested(fmrd, IFLA_IPTUN_FMR_MAX,
-+				fmr, ip6_tnl_fmr_policy);
++				fmr, ip6_tnl_fmr_policy, NULL);
 +
 +			if (!(nfmr = kzalloc(sizeof(*nfmr), GFP_KERNEL)))
 +				continue;
@@ -413,7 +413,7 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  }
  
  static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
-@@ -2029,6 +2240,12 @@ static void ip6_tnl_dellink(struct net_d
+@@ -2052,6 +2263,12 @@ static void ip6_tnl_dellink(struct net_d
  
  static size_t ip6_tnl_get_size(const struct net_device *dev)
  {
@@ -426,10 +426,10 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	return
  		/* IFLA_IPTUN_LINK */
  		nla_total_size(4) +
-@@ -2056,6 +2273,24 @@ static size_t ip6_tnl_get_size(const str
- 		nla_total_size(2) +
- 		/* IFLA_IPTUN_COLLECT_METADATA */
+@@ -2081,6 +2298,24 @@ static size_t ip6_tnl_get_size(const str
  		nla_total_size(0) +
+ 		/* IFLA_IPTUN_FWMARK */
+ 		nla_total_size(4) +
 +		/* IFLA_IPTUN_FMRS */
 +		nla_total_size(0) +
 +		(
@@ -451,7 +451,7 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  		0;
  }
  
-@@ -2063,6 +2298,9 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2088,6 +2323,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,12 +461,12 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  
  	if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
  	    nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
-@@ -2071,9 +2309,27 @@ static int ip6_tnl_fill_info(struct sk_b
- 	    nla_put_u8(skb, IFLA_IPTUN_ENCAP_LIMIT, parm->encap_limit) ||
+@@ -2097,9 +2335,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))
-+	    nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
+ 	    nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
+-	    nla_put_u32(skb, IFLA_IPTUN_FWMARK, parm->fwmark))
++	    nla_put_u32(skb, IFLA_IPTUN_FWMARK, parm->fwmark) ||
 +	    !(fmrs = nla_nest_start(skb, IFLA_IPTUN_FMRS)))
  		goto nla_put_failure;
  
@@ -490,10 +490,10 @@  Signed-off-by: Steven Barth <cyrus@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) ||
-@@ -2111,6 +2367,7 @@ static const struct nla_policy ip6_tnl_p
- 	[IFLA_IPTUN_ENCAP_SPORT]	= { .type = NLA_U16 },
+@@ -2139,6 +2395,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 },
 +	[IFLA_IPTUN_FMRS]		= { .type = NLA_NESTED },
  };
  
diff --git a/target/linux/generic/pending-4.14/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-4.14/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
index e9c247fad0..82b9ba5354 100644
--- a/target/linux/generic/pending-4.14/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
+++ b/target/linux/generic/pending-4.14/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
@@ -20,9 +20,9 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 
 --- a/include/net/netns/ipv6.h
 +++ b/include/net/netns/ipv6.h
-@@ -66,6 +66,7 @@ struct netns_ipv6 {
- 	unsigned long		 ip6_rt_last_gc;
+@@ -69,6 +69,7 @@ struct netns_ipv6 {
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
+ 	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@openwrt.org>
  	struct fib_rules_ops    *fib6_rules_ops;
 --- a/include/uapi/linux/fib_rules.h
 +++ b/include/uapi/linux/fib_rules.h
-@@ -66,6 +66,10 @@ enum {
+@@ -73,6 +73,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@openwrt.org>
  
 --- a/include/uapi/linux/rtnetlink.h
 +++ b/include/uapi/linux/rtnetlink.h
-@@ -215,6 +215,7 @@ enum {
+@@ -221,6 +221,7 @@ enum {
  	RTN_THROW,		/* Not in this table		*/
  	RTN_NAT,		/* Translate this address	*/
  	RTN_XRESOLVE,		/* Use external resolver	*/
@@ -53,7 +53,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  
 --- a/net/ipv4/fib_semantics.c
 +++ b/net/ipv4/fib_semantics.c
-@@ -138,6 +138,10 @@ const struct fib_prop fib_props[RTN_MAX
+@@ -139,6 +139,10 @@ const struct fib_prop fib_props[RTN_MAX
  		.error	= -EINVAL,
  		.scope	= RT_SCOPE_NOWHERE,
  	},
@@ -66,7 +66,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  static void rt_fibinfo_free(struct rtable __rcu **rtp)
 --- a/net/ipv4/fib_trie.c
 +++ b/net/ipv4/fib_trie.c
-@@ -2396,6 +2396,7 @@ static const char *const rtn_type_names[
+@@ -2460,6 +2460,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@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
-@@ -157,6 +157,7 @@ static int ipmr_rule_action(struct fib_r
+@@ -161,6 +161,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@openwrt.org>
  	default:
 --- a/net/ipv6/fib6_rules.c
 +++ b/net/ipv6/fib6_rules.c
-@@ -77,6 +77,10 @@ static int fib6_rule_action(struct fib_r
+@@ -121,6 +121,10 @@ static int fib6_rule_action(struct fib_r
  		err = -EACCES;
  		rt = net->ipv6.ip6_prohibit_entry;
  		goto discard_pkt;
@@ -99,7 +99,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  	tb_id = fib_rule_get_table(rule, arg);
 --- a/net/ipv6/ip6mr.c
 +++ b/net/ipv6/ip6mr.c
-@@ -167,6 +167,8 @@ static int ip6mr_rule_action(struct fib_
+@@ -168,6 +168,8 @@ static int ip6mr_rule_action(struct fib_
  		return -ENETUNREACH;
  	case FR_ACT_PROHIBIT:
  		return -EACCES;
@@ -119,7 +119,7 @@  Signed-off-by: Jonas Gorski <jogo@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);
-@@ -300,6 +302,21 @@ static const struct rt6_info ip6_prohibi
+@@ -321,6 +323,21 @@ static const struct rt6_info ip6_prohibi
  	.rt6i_ref	= ATOMIC_INIT(1),
  };
  
@@ -141,7 +141,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  static const struct rt6_info ip6_blk_hole_entry_template = {
  	.dst = {
  		.__refcnt	= ATOMIC_INIT(1),
-@@ -1966,6 +1983,11 @@ static struct rt6_info *ip6_route_info_c
+@@ -2037,6 +2054,11 @@ static struct rt6_info *ip6_route_info_c
  			rt->dst.output = ip6_pkt_prohibit_out;
  			rt->dst.input = ip6_pkt_prohibit;
  			break;
@@ -153,7 +153,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		case RTN_THROW:
  		case RTN_UNREACHABLE:
  		default:
-@@ -2609,6 +2631,17 @@ static int ip6_pkt_prohibit_out(struct n
+@@ -2762,6 +2784,17 @@ static int ip6_pkt_prohibit_out(struct n
  	return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
  }
  
@@ -171,7 +171,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  /*
   *	Allocate a dst for local (unicast / anycast) address.
   */
-@@ -2844,7 +2877,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -2996,7 +3029,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,7 +181,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		cfg->fc_flags |= RTF_REJECT;
  
  	if (rtm->rtm_type == RTN_LOCAL)
-@@ -3216,6 +3250,9 @@ static int rt6_fill_node(struct net *net
+@@ -3486,6 +3520,9 @@ static int rt6_fill_node(struct net *net
  		case -EACCES:
  			rtm->rtm_type = RTN_PROHIBIT;
  			break;
@@ -191,7 +191,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		case -EAGAIN:
  			rtm->rtm_type = RTN_THROW;
  			break;
-@@ -3492,6 +3529,8 @@ static int ip6_route_dev_notify(struct n
+@@ -3801,6 +3838,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 +200,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
  		net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
  #endif
-@@ -3718,6 +3757,17 @@ static int __net_init ip6_route_net_init
+@@ -4028,6 +4067,17 @@ 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,7 +218,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  #endif
  
  	net->ipv6.sysctl.flush_delay = 0;
-@@ -3736,6 +3786,8 @@ out:
+@@ -4046,6 +4096,8 @@ out:
  	return ret;
  
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
@@ -227,7 +227,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  out_ip6_prohibit_entry:
  	kfree(net->ipv6.ip6_prohibit_entry);
  out_ip6_null_entry:
-@@ -3753,6 +3805,7 @@ static void __net_exit ip6_route_net_exi
+@@ -4063,6 +4115,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);
@@ -235,7 +235,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  #endif
  	dst_entries_destroy(&net->ipv6.ip6_dst_ops);
  }
-@@ -3826,6 +3879,9 @@ void __init ip6_route_init_special_entri
+@@ -4136,6 +4189,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.14/671-net-provide-defines-for-_POLICY_FAILED-until-all-cod.patch b/target/linux/generic/pending-4.14/671-net-provide-defines-for-_POLICY_FAILED-until-all-cod.patch
index cd627667d3..cfea527e3d 100644
--- a/target/linux/generic/pending-4.14/671-net-provide-defines-for-_POLICY_FAILED-until-all-cod.patch
+++ b/target/linux/generic/pending-4.14/671-net-provide-defines-for-_POLICY_FAILED-until-all-cod.patch
@@ -17,7 +17,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 
 --- a/include/uapi/linux/fib_rules.h
 +++ b/include/uapi/linux/fib_rules.h
-@@ -73,6 +73,8 @@ enum {
+@@ -80,6 +80,8 @@ enum {
  	__FR_ACT_MAX,
  };
  
@@ -28,7 +28,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  #endif
 --- a/include/uapi/linux/icmpv6.h
 +++ b/include/uapi/linux/icmpv6.h
-@@ -118,6 +118,8 @@ struct icmp6hdr {
+@@ -119,6 +119,8 @@ struct icmp6hdr {
  #define ICMPV6_POLICY_FAIL		5
  #define ICMPV6_REJECT_ROUTE		6
  
@@ -39,7 +39,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
   */
 --- a/include/uapi/linux/rtnetlink.h
 +++ b/include/uapi/linux/rtnetlink.h
-@@ -219,6 +219,8 @@ enum {
+@@ -225,6 +225,8 @@ enum {
  	__RTN_MAX
  };
  
diff --git a/target/linux/generic/pending-4.14/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/pending-4.14/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
index ad0fb5bdc5..4467975b92 100644
--- a/target/linux/generic/pending-4.14/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
+++ b/target/linux/generic/pending-4.14/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
@@ -11,7 +11,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/include/linux/netdevice.h
 +++ b/include/linux/netdevice.h
-@@ -1749,6 +1749,8 @@ struct net_device {
+@@ -1739,6 +1739,8 @@ struct net_device {
  	struct netdev_hw_addr_list	mc;
  	struct netdev_hw_addr_list	dev_addrs;
  
@@ -22,29 +22,27 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  #endif
 --- a/include/linux/skbuff.h
 +++ b/include/linux/skbuff.h
-@@ -742,7 +742,8 @@ struct sk_buff {
- #ifdef CONFIG_NET_SWITCHDEV
- 	__u8			offload_fwd_mark:1;
+@@ -778,6 +778,7 @@ struct sk_buff {
+ 	__u8			tc_redirected:1;
+ 	__u8			tc_from_ingress:1;
  #endif
--	/* 2, 4 or 5 bit hole */
 +	__u8			gro_skip:1;
-+	/* 1, 3 or 4 bit hole */
  
  #ifdef CONFIG_NET_SCHED
  	__u16			tc_index;	/* traffic control index */
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -4523,6 +4523,9 @@ static enum gro_result dev_gro_receive(s
+@@ -4756,6 +4756,9 @@ static enum gro_result dev_gro_receive(s
  	enum gro_result ret;
  	int grow;
  
 +	if (skb->gro_skip)
 +		goto normal;
 +
- 	if (!(skb->dev->features & NETIF_F_GRO))
+ 	if (netif_elide_gro(skb->dev))
  		goto normal;
  
-@@ -5811,6 +5814,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -6226,6 +6229,48 @@ static void __netdev_adjacent_dev_unlink
  					   &upper_dev->adj_list.lower);
  }
  
@@ -93,16 +91,16 @@  Signed-off-by: Felix Fietkau <nbd@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)
-@@ -6009,6 +6054,8 @@ void netdev_upper_dev_unlink(struct net_
- 	list_for_each_entry(i, &upper_dev->all_adj_list.upper, list)
- 		__netdev_adjacent_dev_unlink(dev, i->dev, i->ref_nr);
+@@ -6341,6 +6386,8 @@ void netdev_upper_dev_unlink(struct net_
+ 
+ 	__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
  
 +	netdev_update_addr_mask(dev);
 +	netdev_update_addr_mask(dev);
  	call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
  				      &changeupper_info.info);
  }
-@@ -6609,6 +6656,7 @@ int dev_set_mac_address(struct net_devic
+@@ -6911,6 +6958,7 @@ int dev_set_mac_address(struct net_devic
  	if (err)
  		return err;
  	dev->addr_assign_type = NET_ADDR_SET;
@@ -112,7 +110,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	return 0;
 --- a/net/ethernet/eth.c
 +++ b/net/ethernet/eth.c
-@@ -143,6 +143,18 @@ u32 eth_get_headlen(void *data, unsigned
+@@ -144,6 +144,18 @@ u32 eth_get_headlen(void *data, unsigned
  }
  EXPORT_SYMBOL(eth_get_headlen);
  
@@ -131,7 +129,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  /**
   * eth_type_trans - determine the packet's protocol ID.
   * @skb: received socket data
-@@ -171,8 +183,12 @@ __be16 eth_type_trans(struct sk_buff *sk
+@@ -172,8 +184,12 @@ __be16 eth_type_trans(struct sk_buff *sk
  			skb->pkt_type = PACKET_MULTICAST;
  	}
  	else if (unlikely(!ether_addr_equal_64bits(eth->h_dest,
diff --git a/target/linux/generic/pending-4.14/701-phy_extension.patch b/target/linux/generic/pending-4.14/701-phy_extension.patch
index b480b1d78d..1b380e24a9 100644
--- a/target/linux/generic/pending-4.14/701-phy_extension.patch
+++ b/target/linux/generic/pending-4.14/701-phy_extension.patch
@@ -9,10 +9,33 @@  Signed-off-by: John Crispin <john@phrozen.org>
 
 --- a/drivers/net/phy/phy.c
 +++ b/drivers/net/phy/phy.c
-@@ -466,6 +466,50 @@ int phy_ethtool_ksettings_get(struct phy
+@@ -382,6 +382,73 @@ void phy_ethtool_ksettings_get(struct ph
  }
  EXPORT_SYMBOL(phy_ethtool_ksettings_get);
  
++static int phy_ethtool_gset(struct phy_device *phydev, struct ethtool_cmd *cmd)
++{
++	cmd->supported = phydev->supported;
++
++	cmd->advertising = phydev->advertising;
++	cmd->lp_advertising = phydev->lp_advertising;
++
++	ethtool_cmd_speed_set(cmd, phydev->speed);
++	cmd->duplex = phydev->duplex;
++	if (phydev->interface == PHY_INTERFACE_MODE_MOCA)
++		cmd->port = PORT_BNC;
++	else
++		cmd->port = PORT_MII;
++	cmd->phy_address = phydev->mdio.addr;
++	cmd->transceiver = phy_is_internal(phydev) ?
++		XCVR_INTERNAL : XCVR_EXTERNAL;
++	cmd->autoneg = phydev->autoneg;
++	cmd->eth_tp_mdix_ctrl = phydev->mdix_ctrl;
++	cmd->eth_tp_mdix = phydev->mdix;
++
++	return 0;
++}
++
 +int phy_ethtool_ioctl(struct phy_device *phydev, void *useraddr)
 +{
 +	u32 cmd;
@@ -62,8 +85,8 @@  Signed-off-by: John Crispin <john@phrozen.org>
   * @phydev: the phy_device struct
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -816,6 +816,7 @@ int phy_ethtool_ksettings_get(struct phy
- 			      struct ethtool_link_ksettings *cmd);
+@@ -905,6 +905,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);
 +int phy_ethtool_ioctl(struct phy_device *phydev, void *useraddr);
diff --git a/target/linux/generic/pending-4.14/703-phy-add-detach-callback-to-struct-phy_driver.patch b/target/linux/generic/pending-4.14/703-phy-add-detach-callback-to-struct-phy_driver.patch
index 7cc39dcb8a..3d5f8fc5ed 100644
--- a/target/linux/generic/pending-4.14/703-phy-add-detach-callback-to-struct-phy_driver.patch
+++ b/target/linux/generic/pending-4.14/703-phy-add-detach-callback-to-struct-phy_driver.patch
@@ -11,19 +11,19 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 
 --- a/drivers/net/phy/phy_device.c
 +++ b/drivers/net/phy/phy_device.c
-@@ -1001,6 +1001,9 @@ void phy_detach(struct phy_device *phyde
+@@ -1095,6 +1095,9 @@ void phy_detach(struct phy_device *phyde
+ 	struct module *ndev_owner = dev->dev.parent->driver->owner;
  	struct mii_bus *bus;
- 	int i;
  
 +	if (phydev->drv && phydev->drv->detach)
 +		phydev->drv->detach(phydev);
 +
- 	phydev->attached_dev->phydev = NULL;
- 	phydev->attached_dev = NULL;
- 	phy_suspend(phydev);
+ 	if (phydev->sysfs_links) {
+ 		sysfs_remove_link(&dev->dev.kobj, "phydev");
+ 		sysfs_remove_link(&phydev->mdio.dev.kobj, "attached_dev");
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -507,6 +507,12 @@ struct phy_driver {
+@@ -559,6 +559,12 @@ struct phy_driver {
  	 */
  	int (*did_interrupt)(struct phy_device *phydev);
  
diff --git a/target/linux/generic/pending-4.14/734-net-phy-at803x-allow-to-configure-via-pdata.patch b/target/linux/generic/pending-4.14/734-net-phy-at803x-allow-to-configure-via-pdata.patch
index 69b21be951..19dea170c3 100644
--- a/target/linux/generic/pending-4.14/734-net-phy-at803x-allow-to-configure-via-pdata.patch
+++ b/target/linux/generic/pending-4.14/734-net-phy-at803x-allow-to-configure-via-pdata.patch
@@ -40,7 +40,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  #define AT803X_DEBUG_ADDR			0x1D
  #define AT803X_DEBUG_DATA			0x1E
  
-@@ -72,6 +79,7 @@ MODULE_LICENSE("GPL");
+@@ -73,6 +80,7 @@ MODULE_LICENSE("GPL");
  struct at803x_priv {
  	bool phy_reset:1;
  	struct gpio_desc *gpiod_reset;
@@ -48,7 +48,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  };
  
  struct at803x_context {
-@@ -276,8 +284,16 @@ does_not_require_reset_workaround:
+@@ -277,8 +285,16 @@ does_not_require_reset_workaround:
  	return 0;
  }
  
@@ -65,7 +65,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  	int ret;
  
  	ret = genphy_config_init(phydev);
-@@ -298,6 +314,26 @@ static int at803x_config_init(struct phy
+@@ -299,6 +315,26 @@ static int at803x_config_init(struct phy
  			return ret;
  	}
  
@@ -92,7 +92,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  	return 0;
  }
  
-@@ -335,6 +371,8 @@ static int at803x_config_intr(struct phy
+@@ -336,6 +372,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@openwrt.org>
  
  	/*
  	 * Conduct a hardware reset for AT8030/2 every time a link loss is
-@@ -363,6 +401,24 @@ static void at803x_link_change_notify(st
+@@ -364,6 +402,24 @@ static void at803x_link_change_notify(st
  	} else {
  		priv->phy_reset = false;
  	}
diff --git a/target/linux/generic/pending-4.14/735-net-phy-at803x-fix-at8033-sgmii-mode.patch b/target/linux/generic/pending-4.14/735-net-phy-at803x-fix-at8033-sgmii-mode.patch
index 485567cd76..3c686623b9 100644
--- a/target/linux/generic/pending-4.14/735-net-phy-at803x-fix-at8033-sgmii-mode.patch
+++ b/target/linux/generic/pending-4.14/735-net-phy-at803x-fix-at8033-sgmii-mode.patch
@@ -24,7 +24,7 @@  Signed-off-by: Roman Yeryomin <roman@advem.lv>
  #define AT803X_MODE_CFG_MASK			0x0F
  #define AT803X_MODE_CFG_SGMII			0x01
  
-@@ -295,6 +299,27 @@ static int at803x_config_init(struct phy
+@@ -296,6 +300,27 @@ static int at803x_config_init(struct phy
  {
  	struct at803x_platform_data *pdata;
  	int ret;
diff --git a/target/linux/generic/pending-4.14/810-pci_disable_common_quirks.patch b/target/linux/generic/pending-4.14/810-pci_disable_common_quirks.patch
index 464e035f5f..2a5bcc8ef1 100644
--- a/target/linux/generic/pending-4.14/810-pci_disable_common_quirks.patch
+++ b/target/linux/generic/pending-4.14/810-pci_disable_common_quirks.patch
@@ -24,7 +24,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  	default y
 --- a/drivers/pci/quirks.c
 +++ b/drivers/pci/quirks.c
-@@ -41,6 +41,7 @@ static void quirk_mmio_always_on(struct
+@@ -43,6 +43,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);
  
@@ -32,7 +32,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  /* The Mellanox Tavor device gives false positive parity errors
   * Mark this device with a broken_parity_status, to allow
   * PCI scanning code to "skip" this now blacklisted device.
-@@ -3038,6 +3039,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
+@@ -3077,6 +3078,7 @@ 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);
  
@@ -40,7 +40,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  
  /*
   * Ivytown NTB BAR sizes are misreported by the hardware due to an erratum.  To
-@@ -3094,6 +3096,8 @@ static void fixup_debug_report(struct pc
+@@ -3133,6 +3135,8 @@ static void fixup_debug_report(struct pc
  	}
  }
  
@@ -49,7 +49,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  /*
   * Some BIOS implementations leave the Intel GPU interrupts enabled,
   * even though no one is handling them (f.e. i915 driver is never loaded).
-@@ -3128,6 +3132,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
+@@ -3167,6 +3171,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.14/811-pci_disable_usb_common_quirks.patch b/target/linux/generic/pending-4.14/811-pci_disable_usb_common_quirks.patch
index 9dbb2ca8cd..005c25d048 100644
--- a/target/linux/generic/pending-4.14/811-pci_disable_usb_common_quirks.patch
+++ b/target/linux/generic/pending-4.14/811-pci_disable_usb_common_quirks.patch
@@ -48,25 +48,28 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  static inline int io_type_enabled(struct pci_dev *pdev, unsigned int mask)
  {
  	u16 cmd;
-@@ -1158,3 +1173,4 @@ static void quirk_usb_early_handoff(stru
+@@ -1158,6 +1173,7 @@ static void quirk_usb_early_handoff(stru
  }
  DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
  			PCI_CLASS_SERIAL_USB, 8, quirk_usb_early_handoff);
 +#endif
+ 
+ bool usb_xhci_needs_pci_reset(struct pci_dev *pdev)
+ {
 --- a/drivers/usb/host/pci-quirks.h
 +++ b/drivers/usb/host/pci-quirks.h
-@@ -4,6 +4,9 @@
- #ifdef CONFIG_PCI
+@@ -5,6 +5,9 @@
+ #ifdef CONFIG_USB_PCI
  void uhci_reset_hc(struct pci_dev *pdev, unsigned long base);
  int uhci_check_and_reset_hc(struct pci_dev *pdev, unsigned long base);
-+#endif  /* CONFIG_PCI */
++#endif  /* CONFIG_USB_PCI */
 +
-+#if defined(CONFIG_PCI) && !defined(CONFIG_PCI_DISABLE_COMMON_QUIRKS)
++#if defined(CONFIG_USB_PCI) && !defined(CONFIG_PCI_DISABLE_COMMON_QUIRKS)
  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);
-@@ -17,12 +20,25 @@ void usb_disable_xhci_ports(struct pci_d
- void sb800_prefetch(struct device *dev, int on);
+@@ -19,12 +22,25 @@ void sb800_prefetch(struct device *dev,
+ bool usb_xhci_needs_pci_reset(struct pci_dev *pdev);
  #else
  struct pci_dev;
 +static inline int usb_amd_find_chipset_info(void)
@@ -88,12 +91,12 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  static inline void usb_disable_xhci_ports(struct pci_dev *xhci_pdev) {}
  static inline void sb800_prefetch(struct device *dev, int on) {}
 +static inline void usb_enable_intel_xhci_ports(struct pci_dev *xhci_pdev) {}
- #endif  /* CONFIG_PCI */
+ #endif  /* CONFIG_USB_PCI */
  
  #endif  /*  __LINUX_USB_PCI_QUIRKS_H  */
 --- a/include/linux/usb/hcd.h
 +++ b/include/linux/usb/hcd.h
-@@ -461,7 +461,14 @@ extern int usb_hcd_pci_probe(struct pci_
+@@ -465,7 +465,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.14/821-usb-Remove-annoying-warning-about-bogus-URB.patch b/target/linux/generic/pending-4.14/821-usb-Remove-annoying-warning-about-bogus-URB.patch
index dc60557f4e..c14e679590 100644
--- a/target/linux/generic/pending-4.14/821-usb-Remove-annoying-warning-about-bogus-URB.patch
+++ b/target/linux/generic/pending-4.14/821-usb-Remove-annoying-warning-about-bogus-URB.patch
@@ -52,7 +52,7 @@  Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
 
 --- a/drivers/usb/core/urb.c
 +++ b/drivers/usb/core/urb.c
-@@ -321,9 +321,6 @@ EXPORT_SYMBOL_GPL(usb_unanchor_urb);
+@@ -326,9 +326,6 @@ EXPORT_SYMBOL_GPL(usb_unanchor_urb);
   */
  int usb_submit_urb(struct urb *urb, gfp_t mem_flags)
  {
@@ -62,7 +62,7 @@  Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
  	int				xfertype, max;
  	struct usb_device		*dev;
  	struct usb_host_endpoint	*ep;
-@@ -441,11 +438,6 @@ int usb_submit_urb(struct urb *urb, gfp_
+@@ -443,11 +440,6 @@ int usb_submit_urb(struct urb *urb, gfp_
  	 * cause problems in HCDs if they get it wrong.
  	 */
  
diff --git a/target/linux/generic/pending-4.14/831-ledtrig_netdev.patch b/target/linux/generic/pending-4.14/831-ledtrig_netdev.patch
index 037ec9bb2d..a12e6dba96 100644
--- a/target/linux/generic/pending-4.14/831-ledtrig_netdev.patch
+++ b/target/linux/generic/pending-4.14/831-ledtrig_netdev.patch
@@ -53,7 +53,7 @@  Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
 
 --- a/drivers/leds/Makefile
 +++ b/drivers/leds/Makefile
-@@ -77,3 +77,4 @@ obj-$(CONFIG_LEDS_DAC124S085)		+= leds-d
+@@ -82,3 +82,4 @@ obj-$(CONFIG_LEDS_USER)			+= uleds.o
  
  # LED Triggers
  obj-$(CONFIG_LEDS_TRIGGERS)		+= trigger/
diff --git a/target/linux/generic/pending-4.14/834-ledtrig-libata.patch b/target/linux/generic/pending-4.14/834-ledtrig-libata.patch
index 44ee23fb9b..8597a936f5 100644
--- a/target/linux/generic/pending-4.14/834-ledtrig-libata.patch
+++ b/target/linux/generic/pending-4.14/834-ledtrig-libata.patch
@@ -65,7 +65,7 @@  Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  /**
   *	ata_build_rw_tf - Build ATA taskfile for given read/write request
   *	@tf: Target ATA taskfile
-@@ -4963,6 +4976,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
+@@ -5089,6 +5102,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
  		if (tag < 0)
  			return NULL;
  	}
@@ -75,7 +75,7 @@  Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  
  	qc = __ata_qc_from_tag(ap, tag);
  	qc->tag = tag;
-@@ -5865,6 +5881,9 @@ struct ata_port *ata_port_alloc(struct a
+@@ -5991,6 +6007,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@makrotopia.org>
  	ata_sff_port_init(ap);
  
  	return ap;
-@@ -5886,6 +5905,12 @@ static void ata_host_release(struct devi
+@@ -6012,6 +6031,12 @@ static void ata_host_release(struct devi
  
  		kfree(ap->pmp_link);
  		kfree(ap->slave_link);
@@ -98,7 +98,7 @@  Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  		kfree(ap);
  		host->ports[i] = NULL;
  	}
-@@ -6332,7 +6357,23 @@ int ata_host_register(struct ata_host *h
+@@ -6458,7 +6483,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@makrotopia.org>
  
  /*
   * Define if arch has non-standard setup.  This is a _PCI_ standard
-@@ -883,6 +886,12 @@ struct ata_port {
+@@ -889,6 +892,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.14/890-uart_optional_sysrq.patch b/target/linux/generic/pending-4.14/890-uart_optional_sysrq.patch
deleted file mode 100644
index a69227b776..0000000000
diff --git a/target/linux/generic/pending-4.14/920-mangle_bootargs.patch b/target/linux/generic/pending-4.14/920-mangle_bootargs.patch
index a985a7c952..be89441d30 100644
--- a/target/linux/generic/pending-4.14/920-mangle_bootargs.patch
+++ b/target/linux/generic/pending-4.14/920-mangle_bootargs.patch
@@ -13,7 +13,7 @@  Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
 
 --- a/init/Kconfig
 +++ b/init/Kconfig
-@@ -1687,6 +1687,15 @@ config EMBEDDED
+@@ -1420,6 +1420,15 @@ config EMBEDDED
  	  an embedded system so certain expert options are available
  	  for configuration.
  
@@ -31,7 +31,7 @@  Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
  	help
 --- a/init/main.c
 +++ b/init/main.c
-@@ -351,6 +351,29 @@ static inline void setup_nr_cpu_ids(void
+@@ -359,6 +359,29 @@ static inline void setup_nr_cpu_ids(void
  static inline void smp_prepare_cpus(unsigned int maxcpus) { }
  #endif
  
@@ -61,9 +61,9 @@  Signed-off-by: Imre Kaloz <kaloz@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
-@@ -503,6 +526,7 @@ asmlinkage __visible void __init start_k
- 	pr_notice("%s", linux_banner);
- 	setup_arch(&command_line);
+@@ -536,6 +559,7 @@ asmlinkage __visible void __init start_k
+ 	add_device_randomness(command_line, strlen(command_line));
+ 	boot_init_stack_canary();
  	mm_init_cpumask(&init_mm);
 +	mangle_bootargs(command_line);
  	setup_command_line(command_line);