diff mbox series

[LEDE-DEV,1/2] kernel: bump 4.9 to 4.9.99

Message ID 1526400646-9202-1-git-send-email-koen.vandeputte@ncentric.com
State Superseded
Headers show
Series [LEDE-DEV,1/2] kernel: bump 4.9 to 4.9.99 | expand

Commit Message

Koen Vandeputte May 15, 2018, 4:10 p.m. UTC
Refreshed all patches

Compile-tested on: ar71xx
Runtime-tested on: ar71xx

Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
---

Refreshed on the latest master state (commit: "mt76: update to the latest version")

 include/kernel-version.mk                          |   4 +-
 .../ar7/patches-4.9/300-add-ac49x-platform.patch   |   4 +-
 .../403-mtd_fix_cfi_cmdset_0002_status_check.patch |  14 +-
 .../411-mtd-cfi_cmdset_0002-force-word-write.patch |   6 +-
 .../ar71xx/patches-4.9/500-MIPS-fw-myloader.patch  |   2 +-
 .../ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch  |   2 +-
 ...4-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch |  31 +-
 ...105-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch |  17 +-
 .../linux/ath25/patches-4.9/107-ar5312_gpio.patch  |   2 +-
 .../patches-4.9/950-0031-Add-dwc_otg-driver.patch  |   2 +-
 ...fill-user-BO-creation-requests-from-the-k.patch |   2 +-
 ...-OOPSes-from-trying-to-cache-a-partially-.patch |   2 +-
 ...01-MIPS-BCM63XX-add-clkdev-lookup-support.patch |   2 +-
 ...match_table-parsing-for-partition-parsers.patch |   6 +-
 .../322-MIPS-BCM63XX-switch-to-IRQ_DOMAIN.patch    |   2 +-
 .../linux/generic/hack-4.9/220-gc_sections.patch   |   2 +-
 .../hack-4.9/301-mips_image_cmdline_hack.patch     |   2 +-
 ...net-usb-add-lte-modem-wistron-neweb-d18q1.patch |   2 +-
 ...t-qmi_wwan-add-BroadMobi-BM806U-2020-2033.patch |   2 +-
 .../pending-4.9/300-mips_expose_boot_raw.patch     |   4 +-
 .../generic/pending-4.9/304-mips_disable_fpu.patch |   2 +-
 ...m-remove-no-op-dma_map_ops-where-possible.patch |  12 +-
 ..._cmdset_0002-add-buffer-write-cmd-timeout.patch |   2 +-
 .../pending-4.9/630-packet_socket_type.patch       |  16 +-
 ...jecting-with-source-address-failed-policy.patch |  16 +-
 .../pending-4.9/890-uart_optional_sysrq.patch      |   4 +-
 .../patches-4.9/090-increase_entropy_pools.patch   |   2 +-
 .../linux/lantiq/patches-4.9/0152-lantiq-VPE.patch |   2 +-
 .../patches-4.9/817-usb-support-layerscape.patch   |  18 +-
 .../102-powerpc-add-cmdline-override.patch         |   2 +-
 .../sunxi/patches-4.9/0052-stmmac-form-4-12.patch  | 344 +++++++++++----------
 .../linux/uml/patches-4.9/101-mconsole-exec.patch  |   2 +-
 32 files changed, 266 insertions(+), 266 deletions(-)

Comments

Arjen de Korte May 16, 2018, 10:22 a.m. UTC | #1
Citeren Koen Vandeputte <koen.vandeputte@ncentric.com>:

> Refreshed all patches
>
> Compile-tested on: ar71xx
> Runtime-tested on: ar71xx
>
> Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>

Tested-by: Arjen de Korte <build+openwrt@de-korte.org>

Target: ar71xx (Netgear WNDR4300)

> ---
>
> Refreshed on the latest master state (commit: "mt76: update to the  
> latest version")
>
>  include/kernel-version.mk                          |   4 +-
>  .../ar7/patches-4.9/300-add-ac49x-platform.patch   |   4 +-
>  .../403-mtd_fix_cfi_cmdset_0002_status_check.patch |  14 +-
>  .../411-mtd-cfi_cmdset_0002-force-word-write.patch |   6 +-
>  .../ar71xx/patches-4.9/500-MIPS-fw-myloader.patch  |   2 +-
>  .../ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch  |   2 +-
>  ...4-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch |  31 +-
>  ...105-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch |  17 +-
>  .../linux/ath25/patches-4.9/107-ar5312_gpio.patch  |   2 +-
>  .../patches-4.9/950-0031-Add-dwc_otg-driver.patch  |   2 +-
>  ...fill-user-BO-creation-requests-from-the-k.patch |   2 +-
>  ...-OOPSes-from-trying-to-cache-a-partially-.patch |   2 +-
>  ...01-MIPS-BCM63XX-add-clkdev-lookup-support.patch |   2 +-
>  ...match_table-parsing-for-partition-parsers.patch |   6 +-
>  .../322-MIPS-BCM63XX-switch-to-IRQ_DOMAIN.patch    |   2 +-
>  .../linux/generic/hack-4.9/220-gc_sections.patch   |   2 +-
>  .../hack-4.9/301-mips_image_cmdline_hack.patch     |   2 +-
>  ...net-usb-add-lte-modem-wistron-neweb-d18q1.patch |   2 +-
>  ...t-qmi_wwan-add-BroadMobi-BM806U-2020-2033.patch |   2 +-
>  .../pending-4.9/300-mips_expose_boot_raw.patch     |   4 +-
>  .../generic/pending-4.9/304-mips_disable_fpu.patch |   2 +-
>  ...m-remove-no-op-dma_map_ops-where-possible.patch |  12 +-
>  ..._cmdset_0002-add-buffer-write-cmd-timeout.patch |   2 +-
>  .../pending-4.9/630-packet_socket_type.patch       |  16 +-
>  ...jecting-with-source-address-failed-policy.patch |  16 +-
>  .../pending-4.9/890-uart_optional_sysrq.patch      |   4 +-
>  .../patches-4.9/090-increase_entropy_pools.patch   |   2 +-
>  .../linux/lantiq/patches-4.9/0152-lantiq-VPE.patch |   2 +-
>  .../patches-4.9/817-usb-support-layerscape.patch   |  18 +-
>  .../102-powerpc-add-cmdline-override.patch         |   2 +-
>  .../sunxi/patches-4.9/0052-stmmac-form-4-12.patch  | 344  
> +++++++++++----------
>  .../linux/uml/patches-4.9/101-mconsole-exec.patch  |   2 +-
>  32 files changed, 266 insertions(+), 266 deletions(-)
>
> diff --git a/include/kernel-version.mk b/include/kernel-version.mk
> index cf84e31f7b0f..e49b66dcf21f 100644
> --- a/include/kernel-version.mk
> +++ b/include/kernel-version.mk
> @@ -4,12 +4,12 @@ LINUX_RELEASE?=1
>
>  LINUX_VERSION-3.18 = .71
>  LINUX_VERSION-4.4 = .121
> -LINUX_VERSION-4.9 = .96
> +LINUX_VERSION-4.9 = .99
>  LINUX_VERSION-4.14 = .37
>
>  LINUX_KERNEL_HASH-3.18.71 =  
> 5abc9778ad44ce02ed6c8ab52ece8a21c6d20d21f6ed8a19287b4a38a50c1240
>  LINUX_KERNEL_HASH-4.4.121 =  
> 44a88268b5088dc326b30c9b9133ac35a9a200b636b7268d08f32abeae6ca729
> -LINUX_KERNEL_HASH-4.9.96 =  
> 826f596eb5197f8b17304649c2990dd7b766f5c79076cae79f4261c40cea877f
> +LINUX_KERNEL_HASH-4.9.99 =  
> 3dc3eb8c918bca444c8e6c061d534b1a8a5ac60a5b5d7065141f7b8e204213df
>  LINUX_KERNEL_HASH-4.14.37 =  
> 8197e7ed3620713e412905430a7bf93e2048384042ffba189a66f0eeb6908e92
>
>  remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
> diff --git  
> a/target/linux/ar7/patches-4.9/300-add-ac49x-platform.patch  
> b/target/linux/ar7/patches-4.9/300-add-ac49x-platform.patch
> index 67ed3e494a0d..639f09709ba8 100644
> --- a/target/linux/ar7/patches-4.9/300-add-ac49x-platform.patch
> +++ b/target/linux/ar7/patches-4.9/300-add-ac49x-platform.patch
> @@ -37,7 +37,7 @@
>   #define AR7_IRQ_UART0	15
>  --- a/arch/mips/Kconfig
>  +++ b/arch/mips/Kconfig
> -@@ -160,7 +160,7 @@ config AR7
> +@@ -161,7 +161,7 @@ config AR7
>   	select HAVE_CLK
>   	help
>   	  Support for the Texas Instruments AR7 System-on-a-Chip
> @@ -46,7 +46,7 @@
>
>   config ATH25
>   	bool "Atheros AR231x/AR531x SoC support"
> -@@ -1004,6 +1004,7 @@ config MIPS_PARAVIRT
> +@@ -1005,6 +1005,7 @@ config MIPS_PARAVIRT
>   endchoice
>
>   source "arch/mips/alchemy/Kconfig"
> diff --git  
> a/target/linux/ar71xx/patches-4.9/403-mtd_fix_cfi_cmdset_0002_status_check.patch  
> b/target/linux/ar71xx/patches-4.9/403-mtd_fix_cfi_cmdset_0002_status_check.patch
> index 415d835ee348..3a7fe99e6524 100644
> ---  
> a/target/linux/ar71xx/patches-4.9/403-mtd_fix_cfi_cmdset_0002_status_check.patch
> +++  
> b/target/linux/ar71xx/patches-4.9/403-mtd_fix_cfi_cmdset_0002_status_check.patch
> @@ -1,6 +1,6 @@
>  --- a/drivers/mtd/chips/cfi_cmdset_0002.c
>  +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
> -@@ -1630,8 +1630,8 @@ static int __xipram do_write_oneword(str
> +@@ -1631,8 +1631,8 @@ static int __xipram do_write_oneword(str
>   			break;
>   		}
>
> @@ -11,7 +11,7 @@
>
>   		/* Latency issues. Drop the lock, wait a while and retry */
>   		UDELAY(map, chip, adr, 1);
> -@@ -1647,6 +1647,8 @@ static int __xipram do_write_oneword(str
> +@@ -1648,6 +1648,8 @@ static int __xipram do_write_oneword(str
>
>   		ret = -EIO;
>   	}
> @@ -20,7 +20,7 @@
>   	xip_enable(map, chip, adr);
>    op_done:
>   	if (mode == FL_OTP_WRITE)
> -@@ -2225,7 +2227,6 @@ static int cfi_amdstd_panic_write(struct
> +@@ -2226,7 +2228,6 @@ static int cfi_amdstd_panic_write(struct
>   	return 0;
>   }
>
> @@ -28,7 +28,7 @@
>   /*
>    * Handle devices with one erase region, that only implement
>    * the chip erase command.
> -@@ -2289,8 +2290,8 @@ static int __xipram do_erase_chip(struct
> +@@ -2291,8 +2292,8 @@ static int __xipram do_erase_chip(struct
>   			chip->erase_suspended = 0;
>   		}
>
> @@ -39,7 +39,7 @@
>
>   		if (time_after(jiffies, timeo)) {
>   			printk(KERN_WARNING "MTD %s(): software timeout\n",
> -@@ -2310,6 +2311,7 @@ static int __xipram do_erase_chip(struct
> +@@ -2312,6 +2313,7 @@ static int __xipram do_erase_chip(struct
>   		ret = -EIO;
>   	}
>
> @@ -47,7 +47,7 @@
>   	chip->state = FL_READY;
>   	xip_enable(map, chip, adr);
>   	DISABLE_VPP(map);
> -@@ -2378,9 +2380,9 @@ static int __xipram do_erase_oneblock(st
> +@@ -2381,9 +2383,9 @@ static int __xipram do_erase_oneblock(st
>   			chip->erase_suspended = 0;
>   		}
>
> @@ -59,7 +59,7 @@
>   		}
>
>   		if (time_after(jiffies, timeo)) {
> -@@ -2402,6 +2404,7 @@ static int __xipram do_erase_oneblock(st
> +@@ -2405,6 +2407,7 @@ static int __xipram do_erase_oneblock(st
>   		ret = -EIO;
>   	}
>
> diff --git  
> a/target/linux/ar71xx/patches-4.9/411-mtd-cfi_cmdset_0002-force-word-write.patch  
> b/target/linux/ar71xx/patches-4.9/411-mtd-cfi_cmdset_0002-force-word-write.patch
> index 7f5b2f55acd1..25a73dcdff59 100644
> ---  
> a/target/linux/ar71xx/patches-4.9/411-mtd-cfi_cmdset_0002-force-word-write.patch
> +++  
> b/target/linux/ar71xx/patches-4.9/411-mtd-cfi_cmdset_0002-force-word-write.patch
> @@ -35,7 +35,7 @@
>
>   /* Atmel chips don't use the same PRI format as AMD chips */
>   static void fixup_convert_atmel_pri(struct mtd_info *mtd)
> -@@ -1789,6 +1793,7 @@ static int cfi_amdstd_write_words(struct
> +@@ -1790,6 +1794,7 @@ static int cfi_amdstd_write_words(struct
>   /*
>    * FIXME: interleaved mode not tested, and probably not supported!
>    */
> @@ -43,7 +43,7 @@
>   static int __xipram do_write_buffer(struct map_info *map, struct  
> flchip *chip,
>   				    unsigned long adr, const u_char *buf,
>   				    int len)
> -@@ -1917,7 +1922,6 @@ static int __xipram do_write_buffer(stru
> +@@ -1918,7 +1923,6 @@ static int __xipram do_write_buffer(stru
>   	return ret;
>   }
>
> @@ -51,7 +51,7 @@
>   static int cfi_amdstd_write_buffers(struct mtd_info *mtd, loff_t  
> to, size_t len,
>   				    size_t *retlen, const u_char *buf)
>   {
> -@@ -1992,6 +1996,7 @@ static int cfi_amdstd_write_buffers(stru
> +@@ -1993,6 +1997,7 @@ static int cfi_amdstd_write_buffers(stru
>
>   	return 0;
>   }
> diff --git  
> a/target/linux/ar71xx/patches-4.9/500-MIPS-fw-myloader.patch  
> b/target/linux/ar71xx/patches-4.9/500-MIPS-fw-myloader.patch
> index d6a9276c3251..301422a7d8a1 100644
> --- a/target/linux/ar71xx/patches-4.9/500-MIPS-fw-myloader.patch
> +++ b/target/linux/ar71xx/patches-4.9/500-MIPS-fw-myloader.patch
> @@ -10,7 +10,7 @@
>
>  --- a/arch/mips/Kconfig
>  +++ b/arch/mips/Kconfig
> -@@ -1149,6 +1149,9 @@ config MIPS_MSC
> +@@ -1150,6 +1150,9 @@ config MIPS_MSC
>   config MIPS_NILE4
>   	bool
>
> diff --git  
> a/target/linux/ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch  
> b/target/linux/ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch
> index c0b5459e4578..89dd32a7c10c 100644
> --- a/target/linux/ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch
> +++ b/target/linux/ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch
> @@ -1,6 +1,6 @@
>  --- a/arch/mips/Kconfig
>  +++ b/arch/mips/Kconfig
> -@@ -195,7 +195,6 @@ config ATH79
> +@@ -196,7 +196,6 @@ config ATH79
>   	select SYS_SUPPORTS_BIG_ENDIAN
>   	select SYS_SUPPORTS_MIPS16
>   	select SYS_SUPPORTS_ZBOOT_UART_PROM
> diff --git  
> a/target/linux/at91/patches-4.9/104-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch  
> b/target/linux/at91/patches-4.9/104-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch
> index 1a3945eb4a39..20c69f39ed1e 100644
> ---  
> a/target/linux/at91/patches-4.9/104-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch
> +++  
> b/target/linux/at91/patches-4.9/104-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch
> @@ -1,5 +1,3 @@
> -diff --git  
> a/Documentation/devicetree/bindings/pinctrl/atmel,at91-pio4-pinctrl.txt  
> b/Documentation/devicetree/bindings/pinctrl/atmel,at91-pio4-pinctrl.txt
> -index 61ac757..9820227 100644
>  --- a/Documentation/devicetree/bindings/pinctrl/atmel,at91-pio4-pinctrl.txt
>  +++ b/Documentation/devicetree/bindings/pinctrl/atmel,at91-pio4-pinctrl.txt
>  @@ -35,7 +35,12 @@ right representation of the pin.
> @@ -13,24 +11,19 @@ index 61ac757..9820227 100644
>  +ATMEL_PIO_DRVSTR_LO, ATMEL_PIO_DRVSTR_ME, ATMEL_PIO_DRVSTR_HI. The current
>  +depends on VDDIOP. You can find the details in the DC Characteristics table
>  +from the datasheet.
> -
> +
>   Example:
> -
> -diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> -index 1218005..c88e426 100644
> +
>  --- a/arch/arm/boot/dts/Makefile
>  +++ b/arch/arm/boot/dts/Makefile
>  @@ -49,6 +49,7 @@ dtb-$(CONFIG_SOC_AT91SAM9) += \
> -	wb45n.dtb
> + 	wb45n.dtb
>   dtb-$(CONFIG_SOC_SAM_V7) += \
> -	at91-kizbox2.dtb \
> + 	at91-kizbox2.dtb \
>  +	at91-sama5d27_som1_ek.dtb \
> -	at91-sama5d2_xplained.dtb \
> -	at91-sama5d3_xplained.dtb \
> -	sama5d31ek.dtb \
> -diff --git a/arch/arm/boot/dts/at91-sama5d27_som1.dtsi  
> b/arch/arm/boot/dts/at91-sama5d27_som1.dtsi
> -new file mode 100644
> -index 0000000..7d7575f
> + 	at91-sama5d2_xplained.dtb \
> + 	at91-sama5d3_xplained.dtb \
> + 	sama5d31ek.dtb \
>  --- /dev/null
>  +++ b/arch/arm/boot/dts/at91-sama5d27_som1.dtsi
>  @@ -0,0 +1,175 @@
> @@ -209,9 +202,6 @@ index 0000000..7d7575f
>  +		};
>  +	};
>  +};
> -diff --git a/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts  
> b/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts
> -new file mode 100644
> -index 0000000..fd12b68
>  --- /dev/null
>  +++ b/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts
>  @@ -0,0 +1,53 @@
> @@ -268,9 +258,6 @@ index 0000000..fd12b68
>  +	model = "Atmel SAMA5D27 SOM1 EK";
>  +	compatible = "atmel,sama5d27-som1-ek", "atmel,sama5d27-som1",  
> "atmel,sama5d27", "atmel,sama5d2", "atmel,sama5";
>  +};
> -diff --git a/arch/arm/boot/dts/at91-sama5d27_som1_ek_common.dtsi  
> b/arch/arm/boot/dts/at91-sama5d27_som1_ek_common.dtsi
> -new file mode 100644
> -index 0000000..7201a8e
>  --- /dev/null
>  +++ b/arch/arm/boot/dts/at91-sama5d27_som1_ek_common.dtsi
>  @@ -0,0 +1,619 @@
> @@ -893,14 +880,12 @@ index 0000000..7201a8e
>  +		};
>  +	};
>  +};
> -diff --git a/include/dt-bindings/pinctrl/at91.h  
> b/include/dt-bindings/pinctrl/at91.h
> -index bbca3d0..88eb7d0 100644
>  --- a/include/dt-bindings/pinctrl/at91.h
>  +++ b/include/dt-bindings/pinctrl/at91.h
>  @@ -37,4 +37,8 @@
>   #define AT91_PERIPH_C		3
>   #define AT91_PERIPH_D		4
> -
> +
>  +#define ATMEL_PIO_DRVSTR_LO	1
>  +#define ATMEL_PIO_DRVSTR_ME	2
>  +#define ATMEL_PIO_DRVSTR_HI	3
> diff --git  
> a/target/linux/at91/patches-4.9/105-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch  
> b/target/linux/at91/patches-4.9/105-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch
> index 3da9955ee7d6..e33840cfd8b2 100644
> ---  
> a/target/linux/at91/patches-4.9/105-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch
> +++  
> b/target/linux/at91/patches-4.9/105-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch
> @@ -1,18 +1,13 @@
> -diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> -index c88e426..cb47e80 100644
>  --- a/arch/arm/boot/dts/Makefile
>  +++ b/arch/arm/boot/dts/Makefile
>  @@ -49,6 +49,7 @@ dtb-$(CONFIG_SOC_AT91SAM9) += \
> -	wb45n.dtb
> + 	wb45n.dtb
>   dtb-$(CONFIG_SOC_SAM_V7) += \
> -	at91-kizbox2.dtb \
> + 	at91-kizbox2.dtb \
>  +	at91-sama5d2_ptc_ek.dtb \
> -	at91-sama5d27_som1_ek.dtb \
> -	at91-sama5d2_xplained.dtb \
> -	at91-sama5d3_xplained.dtb \
> -diff --git a/arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts  
> b/arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts
> -new file mode 100644
> -index 0000000..257eaac
> + 	at91-sama5d27_som1_ek.dtb \
> + 	at91-sama5d2_xplained.dtb \
> + 	at91-sama5d3_xplained.dtb \
>  --- /dev/null
>  +++ b/arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts
>  @@ -0,0 +1,422 @@
> @@ -438,5 +433,3 @@ index 0000000..257eaac
>  +		};
>  +	};
>  +};
> ---
> -2.7.4
> diff --git a/target/linux/ath25/patches-4.9/107-ar5312_gpio.patch  
> b/target/linux/ath25/patches-4.9/107-ar5312_gpio.patch
> index ac729ee48e0b..f42108702d56 100644
> --- a/target/linux/ath25/patches-4.9/107-ar5312_gpio.patch
> +++ b/target/linux/ath25/patches-4.9/107-ar5312_gpio.patch
> @@ -202,7 +202,7 @@
>  +subsys_initcall(ar5312_gpio_init);
>  --- a/arch/mips/Kconfig
>  +++ b/arch/mips/Kconfig
> -@@ -167,6 +167,7 @@ config ATH25
> +@@ -168,6 +168,7 @@ config ATH25
>   	select CEVT_R4K
>   	select CSRC_R4K
>   	select DMA_NONCOHERENT
> diff --git  
> a/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch  
> b/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch
> index 3006fefc2056..34e776466809 100644
> --- a/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch
> +++ b/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch
> @@ -696,7 +696,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
>   }
>  --- a/drivers/usb/core/hub.c
>  +++ b/drivers/usb/core/hub.c
> -@@ -5054,7 +5054,7 @@ static void port_event(struct usb_hub *h
> +@@ -5062,7 +5062,7 @@ static void port_event(struct usb_hub *h
>   	if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
>   		u16 status = 0, unused;
>
> diff --git  
> a/target/linux/brcm2708/patches-4.9/950-0180-drm-vc4-Fulfill-user-BO-creation-requests-from-the-k.patch  
> b/target/linux/brcm2708/patches-4.9/950-0180-drm-vc4-Fulfill-user-BO-creation-requests-from-the-k.patch
> index c0967b463932..71118e26cc8c 100644
> ---  
> a/target/linux/brcm2708/patches-4.9/950-0180-drm-vc4-Fulfill-user-BO-creation-requests-from-the-k.patch
> +++  
> b/target/linux/brcm2708/patches-4.9/950-0180-drm-vc4-Fulfill-user-BO-creation-requests-from-the-k.patch
> @@ -22,7 +22,7 @@ Signed-off-by: Eric Anholt <eric@anholt.net>
>
>  --- a/drivers/gpu/drm/vc4/vc4_bo.c
>  +++ b/drivers/gpu/drm/vc4/vc4_bo.c
> -@@ -208,21 +208,22 @@ struct drm_gem_object *vc4_create_object
> +@@ -209,21 +209,22 @@ struct drm_gem_object *vc4_create_object
>   }
>
>   struct vc4_bo *vc4_bo_create(struct drm_device *dev, size_t unaligned_size,
> diff --git  
> a/target/linux/brcm2708/patches-4.9/950-0181-drm-vc4-Fix-OOPSes-from-trying-to-cache-a-partially-.patch  
> b/target/linux/brcm2708/patches-4.9/950-0181-drm-vc4-Fix-OOPSes-from-trying-to-cache-a-partially-.patch
> index 3fed370bee5c..52d0de3914e4 100644
> ---  
> a/target/linux/brcm2708/patches-4.9/950-0181-drm-vc4-Fix-OOPSes-from-trying-to-cache-a-partially-.patch
> +++  
> b/target/linux/brcm2708/patches-4.9/950-0181-drm-vc4-Fix-OOPSes-from-trying-to-cache-a-partially-.patch
> @@ -17,7 +17,7 @@ Fixes: c826a6e10644 ("drm/vc4: Add a BO cache.")
>
>  --- a/drivers/gpu/drm/vc4/vc4_bo.c
>  +++ b/drivers/gpu/drm/vc4/vc4_bo.c
> -@@ -322,6 +322,14 @@ void vc4_free_object(struct drm_gem_obje
> +@@ -323,6 +323,14 @@ void vc4_free_object(struct drm_gem_obje
>   		goto out;
>   	}
>
> diff --git  
> a/target/linux/brcm63xx/patches-4.9/001-4.15-01-MIPS-BCM63XX-add-clkdev-lookup-support.patch  
> b/target/linux/brcm63xx/patches-4.9/001-4.15-01-MIPS-BCM63XX-add-clkdev-lookup-support.patch
> index 59e9933e5ff0..c193c72ab3e2 100644
> ---  
> a/target/linux/brcm63xx/patches-4.9/001-4.15-01-MIPS-BCM63XX-add-clkdev-lookup-support.patch
> +++  
> b/target/linux/brcm63xx/patches-4.9/001-4.15-01-MIPS-BCM63XX-add-clkdev-lookup-support.patch
> @@ -16,7 +16,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
>
>  --- a/arch/mips/Kconfig
>  +++ b/arch/mips/Kconfig
> -@@ -271,6 +271,7 @@ config BCM63XX
> +@@ -272,6 +272,7 @@ config BCM63XX
>   	select GPIOLIB
>   	select HAVE_CLK
>   	select MIPS_L1_CACHE_SHIFT_4
> diff --git  
> a/target/linux/brcm63xx/patches-4.9/120-mtd-add-of_match_table-parsing-for-partition-parsers.patch  
> b/target/linux/brcm63xx/patches-4.9/120-mtd-add-of_match_table-parsing-for-partition-parsers.patch
> index 6a93398c725d..5ae903b9373c 100644
> ---  
> a/target/linux/brcm63xx/patches-4.9/120-mtd-add-of_match_table-parsing-for-partition-parsers.patch
> +++  
> b/target/linux/brcm63xx/patches-4.9/120-mtd-add-of_match_table-parsing-for-partition-parsers.patch
> @@ -42,7 +42,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
>
>  --- a/drivers/mtd/mtdpart.c
>  +++ b/drivers/mtd/mtdpart.c
> -@@ -953,8 +953,7 @@ int add_mtd_partitions(struct mtd_info *
> +@@ -940,8 +940,7 @@ int add_mtd_partitions(struct mtd_info *
>   		add_mtd_device(&slave->mtd);
>   		mtd_partition_split(master, slave);
>   		mtd_add_partition_attrs(slave);
> @@ -52,7 +52,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
>
>   		cur_offset = slave->offset + slave->mtd.size;
>   	}
> -@@ -1136,7 +1135,9 @@ static int mtd_part_of_parse(struct mtd_
> +@@ -1123,7 +1122,9 @@ static int mtd_part_of_parse(struct mtd_
>   	const char *fixed = "fixed-partitions";
>   	int ret, err = 0;
>
> @@ -63,7 +63,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
>   	of_property_for_each_string(np, "compatible", prop, compat) {
>   		parser = mtd_part_get_compatible_parser(compat);
>   		if (!parser)
> -@@ -1208,8 +1209,12 @@ int parse_mtd_partitions(struct mtd_info
> +@@ -1192,8 +1193,12 @@ int parse_mtd_partitions(struct mtd_info
>   			types = types_of;
>   	}
>
> diff --git  
> a/target/linux/brcm63xx/patches-4.9/322-MIPS-BCM63XX-switch-to-IRQ_DOMAIN.patch  
> b/target/linux/brcm63xx/patches-4.9/322-MIPS-BCM63XX-switch-to-IRQ_DOMAIN.patch
> index 0c4d034c0da8..ee0d4d657ade 100644
> ---  
> a/target/linux/brcm63xx/patches-4.9/322-MIPS-BCM63XX-switch-to-IRQ_DOMAIN.patch
> +++  
> b/target/linux/brcm63xx/patches-4.9/322-MIPS-BCM63XX-switch-to-IRQ_DOMAIN.patch
> @@ -14,7 +14,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>
>  --- a/arch/mips/Kconfig
>  +++ b/arch/mips/Kconfig
> -@@ -264,6 +264,9 @@ config BCM63XX
> +@@ -265,6 +265,9 @@ config BCM63XX
>   	select SYNC_R4K
>   	select DMA_NONCOHERENT
>   	select IRQ_MIPS_CPU
> diff --git a/target/linux/generic/hack-4.9/220-gc_sections.patch  
> b/target/linux/generic/hack-4.9/220-gc_sections.patch
> index 02e36b664ea3..40e4905db299 100644
> --- a/target/linux/generic/hack-4.9/220-gc_sections.patch
> +++ b/target/linux/generic/hack-4.9/220-gc_sections.patch
> @@ -261,7 +261,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
>   #define TRACE_SYSCALLS()
>  @@ -172,7 +172,7 @@
>   #ifdef CONFIG_SERIAL_EARLYCON
> - #define EARLYCON_TABLE() STRUCT_ALIGN();			\
> + #define EARLYCON_TABLE() . = ALIGN(8);				\
>   			 VMLINUX_SYMBOL(__earlycon_table) = .;	\
>  -			 *(__earlycon_table)			\
>  +			 KEEP(*(__earlycon_table))		\
> diff --git  
> a/target/linux/generic/hack-4.9/301-mips_image_cmdline_hack.patch  
> b/target/linux/generic/hack-4.9/301-mips_image_cmdline_hack.patch
> index 7c3e38efcfa5..96ae77ba09bf 100644
> --- a/target/linux/generic/hack-4.9/301-mips_image_cmdline_hack.patch
> +++ b/target/linux/generic/hack-4.9/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
> -@@ -1155,6 +1155,10 @@ config SYNC_R4K
> +@@ -1156,6 +1156,10 @@ config SYNC_R4K
>   config MIPS_MACHINE
>   	def_bool n
>
> diff --git  
> a/target/linux/generic/pending-4.9/181-net-usb-add-lte-modem-wistron-neweb-d18q1.patch  
> b/target/linux/generic/pending-4.9/181-net-usb-add-lte-modem-wistron-neweb-d18q1.patch
> index 3ec5d7518ab0..8403382de78b 100644
> ---  
> a/target/linux/generic/pending-4.9/181-net-usb-add-lte-modem-wistron-neweb-d18q1.patch
> +++  
> b/target/linux/generic/pending-4.9/181-net-usb-add-lte-modem-wistron-neweb-d18q1.patch
> @@ -49,7 +49,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
>
>  --- a/drivers/net/usb/qmi_wwan.c
>  +++ b/drivers/net/usb/qmi_wwan.c
> -@@ -809,6 +809,9 @@ static const struct usb_device_id produc
> +@@ -810,6 +810,9 @@ static const struct usb_device_id produc
>   	{QMI_FIXED_INTF(0x0846, 0x68a2, 8)},
>   	{QMI_FIXED_INTF(0x12d1, 0x140c, 1)},	/* Huawei E173 */
>   	{QMI_FIXED_INTF(0x12d1, 0x14ac, 1)},	/* Huawei E1820 */
> diff --git  
> a/target/linux/generic/pending-4.9/182-net-qmi_wwan-add-BroadMobi-BM806U-2020-2033.patch  
> b/target/linux/generic/pending-4.9/182-net-qmi_wwan-add-BroadMobi-BM806U-2020-2033.patch
> index 9d9bb4ce1d53..2a41a6a95fba 100644
> ---  
> a/target/linux/generic/pending-4.9/182-net-qmi_wwan-add-BroadMobi-BM806U-2020-2033.patch
> +++  
> b/target/linux/generic/pending-4.9/182-net-qmi_wwan-add-BroadMobi-BM806U-2020-2033.patch
> @@ -18,7 +18,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
>
>  --- a/drivers/net/usb/qmi_wwan.c
>  +++ b/drivers/net/usb/qmi_wwan.c
> -@@ -888,6 +888,7 @@ static const struct usb_device_id produc
> +@@ -889,6 +889,7 @@ static const struct usb_device_id produc
>   	{QMI_FIXED_INTF(0x19d2, 0x2002, 4)},	/* ZTE (Vodafone) K3765-Z */
>   	{QMI_FIXED_INTF(0x2001, 0x7e19, 4)},	/* D-Link DWM-221 B1 */
>   	{QMI_FIXED_INTF(0x2001, 0x7e35, 4)},	/* D-Link DWM-222 */
> diff --git  
> a/target/linux/generic/pending-4.9/300-mips_expose_boot_raw.patch  
> b/target/linux/generic/pending-4.9/300-mips_expose_boot_raw.patch
> index cd58eb12e811..d7a3effa4cbb 100644
> --- a/target/linux/generic/pending-4.9/300-mips_expose_boot_raw.patch
> +++ b/target/linux/generic/pending-4.9/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
> +@@ -1065,9 +1065,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
> +@@ -2964,6 +2961,18 @@ choice
>   		bool "Extend builtin kernel arguments with bootloader arguments"
>   endchoice
>
> diff --git  
> a/target/linux/generic/pending-4.9/304-mips_disable_fpu.patch  
> b/target/linux/generic/pending-4.9/304-mips_disable_fpu.patch
> index a2ec0760fe1c..5707f90becd1 100644
> --- a/target/linux/generic/pending-4.9/304-mips_disable_fpu.patch
> +++ b/target/linux/generic/pending-4.9/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
> +@@ -2888,6 +2888,20 @@ config MIPS_O32_FP64_SUPPORT
>
>   	  If unsure, say N.
>
> diff --git  
> a/target/linux/generic/pending-4.9/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch  
> b/target/linux/generic/pending-4.9/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch
> index 5b237a6d2391..393046cf263d 100644
> ---  
> a/target/linux/generic/pending-4.9/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch
> +++  
> b/target/linux/generic/pending-4.9/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
> +@@ -214,6 +214,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
> +@@ -339,6 +340,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
> +@@ -1126,6 +1128,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
> +@@ -1650,6 +1655,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
> +@@ -1895,9 +1901,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
> +@@ -1907,6 +1915,7 @@ config SYS_HAS_CPU_MIPS64_R2
>   	bool
>
>   config SYS_HAS_CPU_MIPS64_R6
> diff --git  
> a/target/linux/generic/pending-4.9/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch  
> b/target/linux/generic/pending-4.9/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch
> index c1b0d4f16b89..905675e50c51 100644
> ---  
> a/target/linux/generic/pending-4.9/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch
> +++  
> b/target/linux/generic/pending-4.9/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
> +@@ -1829,6 +1829,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.9/630-packet_socket_type.patch  
> b/target/linux/generic/pending-4.9/630-packet_socket_type.patch
> index 092011d0ec60..08d730ac31ed 100644
> --- a/target/linux/generic/pending-4.9/630-packet_socket_type.patch
> +++ b/target/linux/generic/pending-4.9/630-packet_socket_type.patch
> @@ -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
> -@@ -1773,6 +1773,7 @@ static int packet_rcv_spkt(struct sk_buf
> +@@ -1780,6 +1780,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
> -@@ -1780,6 +1781,7 @@ static int packet_rcv_spkt(struct sk_buf
> +@@ -1787,6 +1788,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
> -@@ -1792,7 +1794,7 @@ static int packet_rcv_spkt(struct sk_buf
> +@@ -1799,7 +1801,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)))
> -@@ -2030,12 +2032,12 @@ static int packet_rcv(struct sk_buff *sk
> +@@ -2037,12 +2039,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;
>
> -@@ -2161,12 +2163,12 @@ static int tpacket_rcv(struct sk_buff *s
> +@@ -2168,12 +2170,12 @@ static int tpacket_rcv(struct sk_buff *s
>   	BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
>   	BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
>
> @@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
>   	if (!net_eq(dev_net(dev), sock_net(sk)))
>   		goto drop;
>
> -@@ -3251,6 +3253,7 @@ static int packet_create(struct net *net
> +@@ -3260,6 +3262,7 @@ static int packet_create(struct net *net
>   	mutex_init(&po->pg_vec_lock);
>   	po->rollover = NULL;
>   	po->prot_hook.func = packet_rcv;
> @@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
>
>   	if (sock->type == SOCK_PACKET)
>   		po->prot_hook.func = packet_rcv_spkt;
> -@@ -3837,6 +3840,16 @@ packet_setsockopt(struct socket *sock, i
> +@@ -3873,6 +3876,16 @@ packet_setsockopt(struct socket *sock, i
>   		po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
>   		return 0;
>   	}
> @@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
>   	default:
>   		return -ENOPROTOOPT;
>   	}
> -@@ -3889,6 +3902,13 @@ static int packet_getsockopt(struct sock
> +@@ -3925,6 +3938,13 @@ static int packet_getsockopt(struct sock
>   	case PACKET_VNET_HDR:
>   		val = po->has_vnet_hdr;
>   		break;
> diff --git  
> a/target/linux/generic/pending-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch  
> b/target/linux/generic/pending-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
> index 14715718cbf4..2cebf55a447b 100644
> ---  
> a/target/linux/generic/pending-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
> +++  
> b/target/linux/generic/pending-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
> @@ -171,7 +171,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>   /*
>    *	Allocate a dst for local (unicast / anycast) address.
>    */
> -@@ -2848,7 +2881,8 @@ static int rtm_to_fib6_config(struct sk_
> +@@ -2850,7 +2883,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)
> -@@ -3220,6 +3254,9 @@ static int rt6_fill_node(struct net *net
> +@@ -3222,6 +3256,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;
> -@@ -3496,6 +3533,8 @@ static int ip6_route_dev_notify(struct n
> +@@ -3498,6 +3535,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
> -@@ -3507,6 +3546,7 @@ static int ip6_route_dev_notify(struct n
> +@@ -3509,6 +3548,7 @@ static int ip6_route_dev_notify(struct n
>   		in6_dev_put(net->ipv6.ip6_null_entry->rt6i_idev);
>   #ifdef CONFIG_IPV6_MULTIPLE_TABLES
>   		in6_dev_put(net->ipv6.ip6_prohibit_entry->rt6i_idev);
> @@ -208,7 +208,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>   		in6_dev_put(net->ipv6.ip6_blk_hole_entry->rt6i_idev);
>   #endif
>   	}
> -@@ -3722,6 +3762,17 @@ static int __net_init ip6_route_net_init
> +@@ -3724,6 +3764,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);
> @@ -226,7 +226,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>   #endif
>
>   	net->ipv6.sysctl.flush_delay = 0;
> -@@ -3740,6 +3791,8 @@ out:
> +@@ -3742,6 +3793,8 @@ out:
>   	return ret;
>
>   #ifdef CONFIG_IPV6_MULTIPLE_TABLES
> @@ -235,7 +235,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>   out_ip6_prohibit_entry:
>   	kfree(net->ipv6.ip6_prohibit_entry);
>   out_ip6_null_entry:
> -@@ -3757,6 +3810,7 @@ static void __net_exit ip6_route_net_exi
> +@@ -3759,6 +3812,7 @@ static void __net_exit ip6_route_net_exi
>   #ifdef CONFIG_IPV6_MULTIPLE_TABLES
>   	kfree(net->ipv6.ip6_prohibit_entry);
>   	kfree(net->ipv6.ip6_blk_hole_entry);
> @@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>   #endif
>   	dst_entries_destroy(&net->ipv6.ip6_dst_ops);
>   }
> -@@ -3830,6 +3884,9 @@ void __init ip6_route_init_special_entri
> +@@ -3832,6 +3886,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.9/890-uart_optional_sysrq.patch  
> b/target/linux/generic/pending-4.9/890-uart_optional_sysrq.patch
> index 1cb51a2ed53a..6cb745ee3329 100644
> --- a/target/linux/generic/pending-4.9/890-uart_optional_sysrq.patch
> +++ b/target/linux/generic/pending-4.9/890-uart_optional_sysrq.patch
> @@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
>
>  --- a/include/linux/serial_core.h
>  +++ b/include/linux/serial_core.h
> -@@ -448,7 +448,7 @@ extern void uart_handle_cts_change(struc
> +@@ -455,7 +455,7 @@ extern void uart_handle_cts_change(struc
>   extern void uart_insert_char(struct uart_port *port, unsigned int status,
>   		 unsigned int overrun, unsigned int ch, unsigned int flag);
>
> @@ -26,7 +26,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
>   {
>  --- a/lib/Kconfig.debug
>  +++ b/lib/Kconfig.debug
> -@@ -410,6 +410,11 @@ config MAGIC_SYSRQ_DEFAULT_ENABLE
> +@@ -396,6 +396,11 @@ config MAGIC_SYSRQ_DEFAULT_ENABLE
>   	  This may be set to 1 or 0 to enable or disable them all, or
>   	  to a bitmask as described in Documentation/sysrq.txt.
>
> diff --git  
> a/target/linux/ixp4xx/patches-4.9/090-increase_entropy_pools.patch  
> b/target/linux/ixp4xx/patches-4.9/090-increase_entropy_pools.patch
> index 2b4db053c25b..9da213911e24 100644
> --- a/target/linux/ixp4xx/patches-4.9/090-increase_entropy_pools.patch
> +++ b/target/linux/ixp4xx/patches-4.9/090-increase_entropy_pools.patch
> @@ -1,6 +1,6 @@
>  --- a/drivers/char/random.c
>  +++ b/drivers/char/random.c
> -@@ -278,11 +278,11 @@
> +@@ -279,11 +279,11 @@
>   /*
>    * Configuration information
>    */
> diff --git a/target/linux/lantiq/patches-4.9/0152-lantiq-VPE.patch  
> b/target/linux/lantiq/patches-4.9/0152-lantiq-VPE.patch
> index 7b14d9e5a906..7d6e4b808989 100644
> --- a/target/linux/lantiq/patches-4.9/0152-lantiq-VPE.patch
> +++ b/target/linux/lantiq/patches-4.9/0152-lantiq-VPE.patch
> @@ -1,6 +1,6 @@
>  --- a/arch/mips/Kconfig
>  +++ b/arch/mips/Kconfig
> -@@ -2320,6 +2320,12 @@ config MIPS_VPE_LOADER
> +@@ -2321,6 +2321,12 @@ config MIPS_VPE_LOADER
>   	  Includes a loader for loading an elf relocatable object
>   	  onto another VPE and running it.
>
> diff --git  
> a/target/linux/layerscape/patches-4.9/817-usb-support-layerscape.patch  
> b/target/linux/layerscape/patches-4.9/817-usb-support-layerscape.patch
> index c01db458a5f2..f8917291ee25 100644
> --- a/target/linux/layerscape/patches-4.9/817-usb-support-layerscape.patch
> +++ b/target/linux/layerscape/patches-4.9/817-usb-support-layerscape.patch
> @@ -44,15 +44,15 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
>
>  --- a/drivers/net/usb/cdc_ether.c
>  +++ b/drivers/net/usb/cdc_ether.c
> -@@ -532,6 +532,7 @@ static const struct driver_info wwan_inf
> - #define LENOVO_VENDOR_ID	0x17ef
> +@@ -533,6 +533,7 @@ static const struct driver_info wwan_inf
> + #define LINKSYS_VENDOR_ID	0x13b1
>   #define NVIDIA_VENDOR_ID	0x0955
>   #define HP_VENDOR_ID		0x03f0
>  +#define TPLINK_VENDOR_ID	0x2357
>
>   static const struct usb_device_id	products[] = {
>   /* BLACKLIST !!
> -@@ -732,6 +733,13 @@ static const struct usb_device_id	produc
> +@@ -742,6 +743,13 @@ static const struct usb_device_id	produc
>   			USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),
>   	.driver_info = 0,
>   },
> @@ -68,15 +68,15 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
>    *
>  --- a/drivers/net/usb/r8152.c
>  +++ b/drivers/net/usb/r8152.c
> -@@ -520,6 +520,7 @@ enum rtl8152_flags {
> - #define VENDOR_ID_SAMSUNG		0x04e8
> +@@ -521,6 +521,7 @@ enum rtl8152_flags {
>   #define VENDOR_ID_LENOVO		0x17ef
> + #define VENDOR_ID_LINKSYS		0x13b1
>   #define VENDOR_ID_NVIDIA		0x0955
>  +#define VENDOR_ID_TPLINK		0x2357
>
>   #define MCU_TYPE_PLA			0x0100
>   #define MCU_TYPE_USB			0x0000
> -@@ -1816,6 +1817,10 @@ static int rx_bottom(struct r8152 *tp, i
> +@@ -1817,6 +1818,10 @@ static int rx_bottom(struct r8152 *tp, i
>   			unsigned int pkt_len;
>   			struct sk_buff *skb;
>
> @@ -87,9 +87,9 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
>   			pkt_len = le32_to_cpu(rx_desc->opts1) & RX_LEN_MASK;
>   			if (pkt_len < ETH_ZLEN)
>   				break;
> -@@ -4507,6 +4512,7 @@ static struct usb_device_id rtl8152_tabl
> - 	{REALTEK_USB_DEVICE(VENDOR_ID_LENOVO,  0x7205)},
> +@@ -4509,6 +4514,7 @@ static struct usb_device_id rtl8152_tabl
>   	{REALTEK_USB_DEVICE(VENDOR_ID_LENOVO,  0x304f)},
> + 	{REALTEK_USB_DEVICE(VENDOR_ID_LINKSYS, 0x0041)},
>   	{REALTEK_USB_DEVICE(VENDOR_ID_NVIDIA,  0x09ff)},
>  +	{REALTEK_USB_DEVICE(VENDOR_ID_TPLINK,  0x0601)},
>   	{}
> @@ -156,7 +156,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
>   	int ret;
>  --- a/drivers/usb/core/hub.c
>  +++ b/drivers/usb/core/hub.c
> -@@ -4415,6 +4415,14 @@ hub_port_init(struct usb_hub *hub, struc
> +@@ -4423,6 +4423,14 @@ hub_port_init(struct usb_hub *hub, struc
>   	else
>   		speed = usb_speed_string(udev->speed);
>
> diff --git  
> a/target/linux/mpc85xx/patches-4.9/102-powerpc-add-cmdline-override.patch  
> b/target/linux/mpc85xx/patches-4.9/102-powerpc-add-cmdline-override.patch
> index c70ac1bb9d52..55976c32b16c 100644
> --- a/target/linux/mpc85xx/patches-4.9/102-powerpc-add-cmdline-override.patch
> +++ b/target/linux/mpc85xx/patches-4.9/102-powerpc-add-cmdline-override.patch
> @@ -17,7 +17,7 @@
>   	help
>  --- a/drivers/of/fdt.c
>  +++ b/drivers/of/fdt.c
> -@@ -1079,6 +1079,17 @@ int __init early_init_dt_scan_chosen(uns
> +@@ -1082,6 +1082,17 @@ int __init early_init_dt_scan_chosen(uns
>   	if (p != NULL && l > 0)
>   		strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE));
>
> diff --git  
> a/target/linux/sunxi/patches-4.9/0052-stmmac-form-4-12.patch  
> b/target/linux/sunxi/patches-4.9/0052-stmmac-form-4-12.patch
> index aa6b813daf74..3d9bbb229553 100644
> --- a/target/linux/sunxi/patches-4.9/0052-stmmac-form-4-12.patch
> +++ b/target/linux/sunxi/patches-4.9/0052-stmmac-form-4-12.patch
> @@ -3095,7 +3095,7 @@
>
>   	if (priv->hw->mode->set_16kib_bfsize)
>   		bfsize = priv->hw->mode->set_16kib_bfsize(dev->mtu);
> -@@ -1033,235 +1234,409 @@ static int init_dma_desc_rings(struct ne
> +@@ -1033,257 +1234,516 @@ static int init_dma_desc_rings(struct ne
>
>   	priv->dma_buf_sz = bfsize;
>
> @@ -3351,17 +3351,10 @@
>  -						 priv->tx_skbuff_dma[i].buf,
>  -						 priv->tx_skbuff_dma[i].len,
>  -						 DMA_TO_DEVICE);
> --		}
>  +	for (i = 0; i < DMA_TX_SIZE; i++)
>  +		stmmac_free_tx_buffer(priv, queue, i);
>  +}
> -
> --		if (priv->tx_skbuff[i]) {
> --			dev_kfree_skb_any(priv->tx_skbuff[i]);
> --			priv->tx_skbuff[i] = NULL;
> --			priv->tx_skbuff_dma[i].buf = 0;
> --			priv->tx_skbuff_dma[i].map_as_page = false;
> --		}
> ++
>  +/**
>  + * free_dma_rx_desc_resources - free RX dma desc resources
>  + * @priv: private structure
> @@ -3390,11 +3383,10 @@
>  +
>  +		kfree(rx_q->rx_skbuff_dma);
>  +		kfree(rx_q->rx_skbuff);
> - 	}
> - }
> -
> - /**
> -- * alloc_dma_desc_resources - alloc TX/RX resources.
> ++	}
> ++}
> ++
> ++/**
>  + * free_dma_tx_desc_resources - free TX dma desc resources
>  + * @priv: private structure
>  + */
> @@ -3427,90 +3419,36 @@
>  +
>  +/**
>  + * alloc_dma_rx_desc_resources - alloc RX resources.
> -  * @priv: private structure
> -  * Description: according to which descriptor can be used (extend or basic)
> -  * this function allocates the resources for TX and RX paths. In case of
> -  * reception, for example, it pre-allocated the RX socket buffer  
> in order to
> -  * allow zero-copy mechanism.
> -  */
> --static int alloc_dma_desc_resources(struct stmmac_priv *priv)
> ++ * @priv: private structure
> ++ * Description: according to which descriptor can be used (extend or basic)
> ++ * this function allocates the resources for TX and RX paths. In case of
> ++ * reception, for example, it pre-allocated the RX socket buffer  
> in order to
> ++ * allow zero-copy mechanism.
> ++ */
>  +static int alloc_dma_rx_desc_resources(struct stmmac_priv *priv)
> - {
> ++{
>  +	u32 rx_count = priv->plat->rx_queues_to_use;
> - 	int ret = -ENOMEM;
> ++	int ret = -ENOMEM;
>  +	u32 queue;
> -
> --	priv->rx_skbuff_dma = kmalloc_array(DMA_RX_SIZE, sizeof(dma_addr_t),
> --					    GFP_KERNEL);
> --	if (!priv->rx_skbuff_dma)
> --		return -ENOMEM;
> ++
>  +	/* RX queues buffers and DMA */
>  +	for (queue = 0; queue < rx_count; queue++) {
>  +		struct stmmac_rx_queue *rx_q = &priv->rx_queue[queue];
> -
> --	priv->rx_skbuff = kmalloc_array(DMA_RX_SIZE, sizeof(struct sk_buff *),
> --					GFP_KERNEL);
> --	if (!priv->rx_skbuff)
> --		goto err_rx_skbuff;
> --
> --	priv->tx_skbuff_dma = kmalloc_array(DMA_TX_SIZE,
> --					    sizeof(*priv->tx_skbuff_dma),
> --					    GFP_KERNEL);
> --	if (!priv->tx_skbuff_dma)
> --		goto err_tx_skbuff_dma;
> --
> --	priv->tx_skbuff = kmalloc_array(DMA_TX_SIZE, sizeof(struct sk_buff *),
> --					GFP_KERNEL);
> --	if (!priv->tx_skbuff)
> --		goto err_tx_skbuff;
> --
> --	if (priv->extend_desc) {
> --		priv->dma_erx = dma_zalloc_coherent(priv->device, DMA_RX_SIZE *
> --						    sizeof(struct
> --							   dma_extended_desc),
> --						    &priv->dma_rx_phy,
> --						    GFP_KERNEL);
> --		if (!priv->dma_erx)
> --			goto err_dma;
> ++
>  +		rx_q->queue_index = queue;
>  +		rx_q->priv_data = priv;
> -
> --		priv->dma_etx = dma_zalloc_coherent(priv->device, DMA_TX_SIZE *
> --						    sizeof(struct
> --							   dma_extended_desc),
> --						    &priv->dma_tx_phy,
> ++
>  +		rx_q->rx_skbuff_dma = kmalloc_array(DMA_RX_SIZE,
>  +						    sizeof(dma_addr_t),
> - 						    GFP_KERNEL);
> --		if (!priv->dma_etx) {
> --			dma_free_coherent(priv->device, DMA_RX_SIZE *
> --					  sizeof(struct dma_extended_desc),
> --					  priv->dma_erx, priv->dma_rx_phy);
> --			goto err_dma;
> --		}
> --	} else {
> --		priv->dma_rx = dma_zalloc_coherent(priv->device, DMA_RX_SIZE *
> --						   sizeof(struct dma_desc),
> --						   &priv->dma_rx_phy,
> --						   GFP_KERNEL);
> --		if (!priv->dma_rx)
> --			goto err_dma;
> ++						    GFP_KERNEL);
>  +		if (!rx_q->rx_skbuff_dma)
>  +			return -ENOMEM;
> -
> --		priv->dma_tx = dma_zalloc_coherent(priv->device, DMA_TX_SIZE *
> --						   sizeof(struct dma_desc),
> --						   &priv->dma_tx_phy,
> --						   GFP_KERNEL);
> --		if (!priv->dma_tx) {
> --			dma_free_coherent(priv->device, DMA_RX_SIZE *
> --					  sizeof(struct dma_desc),
> --					  priv->dma_rx, priv->dma_rx_phy);
> ++
>  +		rx_q->rx_skbuff = kmalloc_array(DMA_RX_SIZE,
>  +						sizeof(struct sk_buff *),
>  +						GFP_KERNEL);
>  +		if (!rx_q->rx_skbuff)
> - 			goto err_dma;
> ++			goto err_dma;
>  +
>  +		if (priv->extend_desc) {
>  +			rx_q->dma_erx = dma_zalloc_coherent(priv->device,
> @@ -3531,19 +3469,12 @@
>  +							   GFP_KERNEL);
>  +			if (!rx_q->dma_rx)
>  +				goto err_dma;
> - 		}
> - 	}
> -
> - 	return 0;
> -
> - err_dma:
> --	kfree(priv->tx_skbuff);
> --err_tx_skbuff:
> --	kfree(priv->tx_skbuff_dma);
> --err_tx_skbuff_dma:
> --	kfree(priv->rx_skbuff);
> --err_rx_skbuff:
> --	kfree(priv->rx_skbuff_dma);
> ++		}
> ++	}
> ++
> ++	return 0;
> ++
> ++err_dma:
>  +	free_dma_rx_desc_resources(priv);
>  +
>  +	return ret;
> @@ -3600,7 +3531,7 @@
>  +							   GFP_KERNEL);
>  +			if (!tx_q->dma_tx)
>  +				goto err_dma_buffers;
> -+		}
> + 		}
>  +	}
>  +
>  +	return 0;
> @@ -3629,85 +3560,126 @@
>  +
>  +	ret = alloc_dma_tx_desc_resources(priv);
>  +
> - 	return ret;
> - }
> -
> ++	return ret;
> ++}
> ++
>  +/**
>  + * free_dma_desc_resources - free dma desc resources
>  + * @priv: private structure
>  + */
> - static void free_dma_desc_resources(struct stmmac_priv *priv)
> - {
> --	/* Release the DMA TX/RX socket buffers */
> --	dma_free_rx_skbufs(priv);
> --	dma_free_tx_skbufs(priv);
> --
> --	/* Free DMA regions of consistent memory previously allocated */
> --	if (!priv->extend_desc) {
> --		dma_free_coherent(priv->device,
> --				  DMA_TX_SIZE * sizeof(struct dma_desc),
> --				  priv->dma_tx, priv->dma_tx_phy);
> --		dma_free_coherent(priv->device,
> --				  DMA_RX_SIZE * sizeof(struct dma_desc),
> --				  priv->dma_rx, priv->dma_rx_phy);
> --	} else {
> --		dma_free_coherent(priv->device, DMA_TX_SIZE *
> --				  sizeof(struct dma_extended_desc),
> --				  priv->dma_etx, priv->dma_tx_phy);
> --		dma_free_coherent(priv->device, DMA_RX_SIZE *
> --				  sizeof(struct dma_extended_desc),
> --				  priv->dma_erx, priv->dma_rx_phy);
> --	}
> --	kfree(priv->rx_skbuff_dma);
> --	kfree(priv->rx_skbuff);
> --	kfree(priv->tx_skbuff_dma);
> --	kfree(priv->tx_skbuff);
> ++static void free_dma_desc_resources(struct stmmac_priv *priv)
> ++{
>  +	/* Release the DMA RX socket buffers */
>  +	free_dma_rx_desc_resources(priv);
>  +
>  +	/* Release the DMA TX socket buffers */
>  +	free_dma_tx_desc_resources(priv);
> - }
> -
> - /**
> -@@ -1271,19 +1646,104 @@ static void free_dma_desc_resources(stru
> -  */
> - static void stmmac_mac_enable_rx_queues(struct stmmac_priv *priv)
> - {
> --	int rx_count = priv->dma_cap.number_rx_queues;
> --	int queue = 0;
> ++}
> ++
> ++/**
> ++ *  stmmac_mac_enable_rx_queues - Enable MAC rx queues
> ++ *  @priv: driver private structure
> ++ *  Description: It is used for enabling the rx queues in the MAC
> ++ */
> ++static void stmmac_mac_enable_rx_queues(struct stmmac_priv *priv)
> ++{
>  +	u32 rx_queues_count = priv->plat->rx_queues_to_use;
>  +	int queue;
>  +	u8 mode;
>
> --	/* If GMAC does not have multiple queues, then this is not necessary*/
> --	if (rx_count == 1)
> --		return;
> +-		if (priv->tx_skbuff[i]) {
> +-			dev_kfree_skb_any(priv->tx_skbuff[i]);
> +-			priv->tx_skbuff[i] = NULL;
> +-			priv->tx_skbuff_dma[i].buf = 0;
> +-			priv->tx_skbuff_dma[i].map_as_page = false;
> +-		}
>  +	for (queue = 0; queue < rx_queues_count; queue++) {
>  +		mode = priv->plat->rx_queues_cfg[queue].mode_to_use;
>  +		priv->hw->mac->rx_queue_enable(priv->hw, mode, queue);
> -+	}
> -+}
> + 	}
> + }
>
> --	/**
> --	 *  If the core is synthesized with multiple rx queues / multiple
> --	 *  dma channels, then rx queues will be disabled by default.
> --	 *  For now only rx queue 0 is enabled.
> --	 */
> --	priv->hw->mac->rx_queue_enable(priv->hw, queue);
> -+/**
> + /**
> +- * alloc_dma_desc_resources - alloc TX/RX resources.
> +- * @priv: private structure
> +- * Description: according to which descriptor can be used (extend or basic)
> +- * this function allocates the resources for TX and RX paths. In case of
> +- * reception, for example, it pre-allocated the RX socket buffer  
> in order to
> +- * allow zero-copy mechanism.
>  + * stmmac_start_rx_dma - start RX DMA channel
>  + * @priv: driver private structure
>  + * @chan: RX channel index
>  + * Description:
>  + * This starts a RX DMA channel
> -+ */
> +  */
> +-static int alloc_dma_desc_resources(struct stmmac_priv *priv)
>  +static void stmmac_start_rx_dma(struct stmmac_priv *priv, u32 chan)
> -+{
> + {
> +-	int ret = -ENOMEM;
> +-
> +-	priv->rx_skbuff_dma = kmalloc_array(DMA_RX_SIZE, sizeof(dma_addr_t),
> +-					    GFP_KERNEL);
> +-	if (!priv->rx_skbuff_dma)
> +-		return -ENOMEM;
> +-
> +-	priv->rx_skbuff = kmalloc_array(DMA_RX_SIZE, sizeof(struct sk_buff *),
> +-					GFP_KERNEL);
> +-	if (!priv->rx_skbuff)
> +-		goto err_rx_skbuff;
> +-
> +-	priv->tx_skbuff_dma = kmalloc_array(DMA_TX_SIZE,
> +-					    sizeof(*priv->tx_skbuff_dma),
> +-					    GFP_KERNEL);
> +-	if (!priv->tx_skbuff_dma)
> +-		goto err_tx_skbuff_dma;
> +-
> +-	priv->tx_skbuff = kmalloc_array(DMA_TX_SIZE, sizeof(struct sk_buff *),
> +-					GFP_KERNEL);
> +-	if (!priv->tx_skbuff)
> +-		goto err_tx_skbuff;
> +-
> +-	if (priv->extend_desc) {
> +-		priv->dma_erx = dma_zalloc_coherent(priv->device, DMA_RX_SIZE *
> +-						    sizeof(struct
> +-							   dma_extended_desc),
> +-						    &priv->dma_rx_phy,
> +-						    GFP_KERNEL);
> +-		if (!priv->dma_erx)
> +-			goto err_dma;
> +-
> +-		priv->dma_etx = dma_zalloc_coherent(priv->device, DMA_TX_SIZE *
> +-						    sizeof(struct
> +-							   dma_extended_desc),
> +-						    &priv->dma_tx_phy,
> +-						    GFP_KERNEL);
> +-		if (!priv->dma_etx) {
> +-			dma_free_coherent(priv->device, DMA_RX_SIZE *
> +-					  sizeof(struct dma_extended_desc),
> +-					  priv->dma_erx, priv->dma_rx_phy);
> +-			goto err_dma;
> +-		}
> +-	} else {
> +-		priv->dma_rx = dma_zalloc_coherent(priv->device, DMA_RX_SIZE *
> +-						   sizeof(struct dma_desc),
> +-						   &priv->dma_rx_phy,
> +-						   GFP_KERNEL);
> +-		if (!priv->dma_rx)
> +-			goto err_dma;
>  +	netdev_dbg(priv->dev, "DMA RX processes started in channel %d\n", chan);
>  +	priv->hw->dma->start_rx(priv->ioaddr, chan);
>  +}
> -+
> +
> +-		priv->dma_tx = dma_zalloc_coherent(priv->device, DMA_TX_SIZE *
> +-						   sizeof(struct dma_desc),
> +-						   &priv->dma_tx_phy,
> +-						   GFP_KERNEL);
> +-		if (!priv->dma_tx) {
> +-			dma_free_coherent(priv->device, DMA_RX_SIZE *
> +-					  sizeof(struct dma_desc),
> +-					  priv->dma_rx, priv->dma_rx_phy);
> +-			goto err_dma;
> +-		}
> +-	}
>  +/**
>  + * stmmac_start_tx_dma - start TX DMA channel
>  + * @priv: driver private structure
> @@ -3720,7 +3692,8 @@
>  +	netdev_dbg(priv->dev, "DMA TX processes started in channel %d\n", chan);
>  +	priv->hw->dma->start_tx(priv->ioaddr, chan);
>  +}
> -+
> +
> +-	return 0;
>  +/**
>  + * stmmac_stop_rx_dma - stop RX DMA channel
>  + * @priv: driver private structure
> @@ -3733,7 +3706,16 @@
>  +	netdev_dbg(priv->dev, "DMA RX processes stopped in channel %d\n", chan);
>  +	priv->hw->dma->stop_rx(priv->ioaddr, chan);
>  +}
> -+
> +
> +-err_dma:
> +-	kfree(priv->tx_skbuff);
> +-err_tx_skbuff:
> +-	kfree(priv->tx_skbuff_dma);
> +-err_tx_skbuff_dma:
> +-	kfree(priv->rx_skbuff);
> +-err_rx_skbuff:
> +-	kfree(priv->rx_skbuff_dma);
> +-	return ret;
>  +/**
>  + * stmmac_stop_tx_dma - stop TX DMA channel
>  + * @priv: driver private structure
> @@ -3745,8 +3727,9 @@
>  +{
>  +	netdev_dbg(priv->dev, "DMA TX processes stopped in channel %d\n", chan);
>  +	priv->hw->dma->stop_tx(priv->ioaddr, chan);
> -+}
> -+
> + }
> +
> +-static void free_dma_desc_resources(struct stmmac_priv *priv)
>  +/**
>  + * stmmac_start_all_dma - start all RX and TX DMA channels
>  + * @priv: driver private structure
> @@ -3754,7 +3737,31 @@
>  + * This starts all the RX and TX DMA channels
>  + */
>  +static void stmmac_start_all_dma(struct stmmac_priv *priv)
> -+{
> + {
> +-	/* Release the DMA TX/RX socket buffers */
> +-	dma_free_rx_skbufs(priv);
> +-	dma_free_tx_skbufs(priv);
> +-
> +-	/* Free DMA regions of consistent memory previously allocated */
> +-	if (!priv->extend_desc) {
> +-		dma_free_coherent(priv->device,
> +-				  DMA_TX_SIZE * sizeof(struct dma_desc),
> +-				  priv->dma_tx, priv->dma_tx_phy);
> +-		dma_free_coherent(priv->device,
> +-				  DMA_RX_SIZE * sizeof(struct dma_desc),
> +-				  priv->dma_rx, priv->dma_rx_phy);
> +-	} else {
> +-		dma_free_coherent(priv->device, DMA_TX_SIZE *
> +-				  sizeof(struct dma_extended_desc),
> +-				  priv->dma_etx, priv->dma_tx_phy);
> +-		dma_free_coherent(priv->device, DMA_RX_SIZE *
> +-				  sizeof(struct dma_extended_desc),
> +-				  priv->dma_erx, priv->dma_rx_phy);
> +-	}
> +-	kfree(priv->rx_skbuff_dma);
> +-	kfree(priv->rx_skbuff);
> +-	kfree(priv->tx_skbuff_dma);
> +-	kfree(priv->tx_skbuff);
>  +	u32 rx_channels_count = priv->plat->rx_queues_to_use;
>  +	u32 tx_channels_count = priv->plat->tx_queues_to_use;
>  +	u32 chan = 0;
> @@ -3764,23 +3771,38 @@
>  +
>  +	for (chan = 0; chan < tx_channels_count; chan++)
>  +		stmmac_start_tx_dma(priv, chan);
> -+}
> -+
> -+/**
> + }
> +
> + /**
> +- *  stmmac_mac_enable_rx_queues - Enable MAC rx queues
> +- *  @priv: driver private structure
> +- *  Description: It is used for enabling the rx queues in the MAC
>  + * stmmac_stop_all_dma - stop all RX and TX DMA channels
>  + * @priv: driver private structure
>  + * Description:
>  + * This stops the RX and TX DMA channels
> -+ */
> +  */
> +-static void stmmac_mac_enable_rx_queues(struct stmmac_priv *priv)
>  +static void stmmac_stop_all_dma(struct stmmac_priv *priv)
> -+{
> + {
> +-	int rx_count = priv->dma_cap.number_rx_queues;
> +-	int queue = 0;
>  +	u32 rx_channels_count = priv->plat->rx_queues_to_use;
>  +	u32 tx_channels_count = priv->plat->tx_queues_to_use;
>  +	u32 chan = 0;
> -+
> +
> +-	/* If GMAC does not have multiple queues, then this is not necessary*/
> +-	if (rx_count == 1)
> +-		return;
>  +	for (chan = 0; chan < rx_channels_count; chan++)
>  +		stmmac_stop_rx_dma(priv, chan);
> -+
> +
> +-	/**
> +-	 *  If the core is synthesized with multiple rx queues / multiple
> +-	 *  dma channels, then rx queues will be disabled by default.
> +-	 *  For now only rx queue 0 is enabled.
> +-	 */
> +-	priv->hw->mac->rx_queue_enable(priv->hw, queue);
>  +	for (chan = 0; chan < tx_channels_count; chan++)
>  +		stmmac_stop_tx_dma(priv, chan);
>   }
> diff --git a/target/linux/uml/patches-4.9/101-mconsole-exec.patch  
> b/target/linux/uml/patches-4.9/101-mconsole-exec.patch
> index 6682338f3963..ea9da8d8c3d1 100644
> --- a/target/linux/uml/patches-4.9/101-mconsole-exec.patch
> +++ b/target/linux/uml/patches-4.9/101-mconsole-exec.patch
> @@ -123,7 +123,7 @@
>   };
>  --- a/arch/um/os-Linux/file.c
>  +++ b/arch/um/os-Linux/file.c
> -@@ -554,6 +554,8 @@ int os_create_unix_socket(const char *fi
> +@@ -555,6 +555,8 @@ int os_create_unix_socket(const char *fi
>
>   	addr.sun_family = AF_UNIX;
diff mbox series

Patch

diff --git a/include/kernel-version.mk b/include/kernel-version.mk
index cf84e31f7b0f..e49b66dcf21f 100644
--- a/include/kernel-version.mk
+++ b/include/kernel-version.mk
@@ -4,12 +4,12 @@  LINUX_RELEASE?=1
 
 LINUX_VERSION-3.18 = .71
 LINUX_VERSION-4.4 = .121
-LINUX_VERSION-4.9 = .96
+LINUX_VERSION-4.9 = .99
 LINUX_VERSION-4.14 = .37
 
 LINUX_KERNEL_HASH-3.18.71 = 5abc9778ad44ce02ed6c8ab52ece8a21c6d20d21f6ed8a19287b4a38a50c1240
 LINUX_KERNEL_HASH-4.4.121 = 44a88268b5088dc326b30c9b9133ac35a9a200b636b7268d08f32abeae6ca729
-LINUX_KERNEL_HASH-4.9.96 = 826f596eb5197f8b17304649c2990dd7b766f5c79076cae79f4261c40cea877f
+LINUX_KERNEL_HASH-4.9.99 = 3dc3eb8c918bca444c8e6c061d534b1a8a5ac60a5b5d7065141f7b8e204213df
 LINUX_KERNEL_HASH-4.14.37 = 8197e7ed3620713e412905430a7bf93e2048384042ffba189a66f0eeb6908e92
 
 remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
diff --git a/target/linux/ar7/patches-4.9/300-add-ac49x-platform.patch b/target/linux/ar7/patches-4.9/300-add-ac49x-platform.patch
index 67ed3e494a0d..639f09709ba8 100644
--- a/target/linux/ar7/patches-4.9/300-add-ac49x-platform.patch
+++ b/target/linux/ar7/patches-4.9/300-add-ac49x-platform.patch
@@ -37,7 +37,7 @@ 
  #define AR7_IRQ_UART0	15
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -160,7 +160,7 @@ config AR7
+@@ -161,7 +161,7 @@ config AR7
  	select HAVE_CLK
  	help
  	  Support for the Texas Instruments AR7 System-on-a-Chip
@@ -46,7 +46,7 @@ 
  
  config ATH25
  	bool "Atheros AR231x/AR531x SoC support"
-@@ -1004,6 +1004,7 @@ config MIPS_PARAVIRT
+@@ -1005,6 +1005,7 @@ config MIPS_PARAVIRT
  endchoice
  
  source "arch/mips/alchemy/Kconfig"
diff --git a/target/linux/ar71xx/patches-4.9/403-mtd_fix_cfi_cmdset_0002_status_check.patch b/target/linux/ar71xx/patches-4.9/403-mtd_fix_cfi_cmdset_0002_status_check.patch
index 415d835ee348..3a7fe99e6524 100644
--- a/target/linux/ar71xx/patches-4.9/403-mtd_fix_cfi_cmdset_0002_status_check.patch
+++ b/target/linux/ar71xx/patches-4.9/403-mtd_fix_cfi_cmdset_0002_status_check.patch
@@ -1,6 +1,6 @@ 
 --- a/drivers/mtd/chips/cfi_cmdset_0002.c
 +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
-@@ -1630,8 +1630,8 @@ static int __xipram do_write_oneword(str
+@@ -1631,8 +1631,8 @@ static int __xipram do_write_oneword(str
  			break;
  		}
  
@@ -11,7 +11,7 @@ 
  
  		/* Latency issues. Drop the lock, wait a while and retry */
  		UDELAY(map, chip, adr, 1);
-@@ -1647,6 +1647,8 @@ static int __xipram do_write_oneword(str
+@@ -1648,6 +1648,8 @@ static int __xipram do_write_oneword(str
  
  		ret = -EIO;
  	}
@@ -20,7 +20,7 @@ 
  	xip_enable(map, chip, adr);
   op_done:
  	if (mode == FL_OTP_WRITE)
-@@ -2225,7 +2227,6 @@ static int cfi_amdstd_panic_write(struct
+@@ -2226,7 +2228,6 @@ static int cfi_amdstd_panic_write(struct
  	return 0;
  }
  
@@ -28,7 +28,7 @@ 
  /*
   * Handle devices with one erase region, that only implement
   * the chip erase command.
-@@ -2289,8 +2290,8 @@ static int __xipram do_erase_chip(struct
+@@ -2291,8 +2292,8 @@ static int __xipram do_erase_chip(struct
  			chip->erase_suspended = 0;
  		}
  
@@ -39,7 +39,7 @@ 
  
  		if (time_after(jiffies, timeo)) {
  			printk(KERN_WARNING "MTD %s(): software timeout\n",
-@@ -2310,6 +2311,7 @@ static int __xipram do_erase_chip(struct
+@@ -2312,6 +2313,7 @@ static int __xipram do_erase_chip(struct
  		ret = -EIO;
  	}
  
@@ -47,7 +47,7 @@ 
  	chip->state = FL_READY;
  	xip_enable(map, chip, adr);
  	DISABLE_VPP(map);
-@@ -2378,9 +2380,9 @@ static int __xipram do_erase_oneblock(st
+@@ -2381,9 +2383,9 @@ static int __xipram do_erase_oneblock(st
  			chip->erase_suspended = 0;
  		}
  
@@ -59,7 +59,7 @@ 
  		}
  
  		if (time_after(jiffies, timeo)) {
-@@ -2402,6 +2404,7 @@ static int __xipram do_erase_oneblock(st
+@@ -2405,6 +2407,7 @@ static int __xipram do_erase_oneblock(st
  		ret = -EIO;
  	}
  
diff --git a/target/linux/ar71xx/patches-4.9/411-mtd-cfi_cmdset_0002-force-word-write.patch b/target/linux/ar71xx/patches-4.9/411-mtd-cfi_cmdset_0002-force-word-write.patch
index 7f5b2f55acd1..25a73dcdff59 100644
--- a/target/linux/ar71xx/patches-4.9/411-mtd-cfi_cmdset_0002-force-word-write.patch
+++ b/target/linux/ar71xx/patches-4.9/411-mtd-cfi_cmdset_0002-force-word-write.patch
@@ -35,7 +35,7 @@ 
  
  /* Atmel chips don't use the same PRI format as AMD chips */
  static void fixup_convert_atmel_pri(struct mtd_info *mtd)
-@@ -1789,6 +1793,7 @@ static int cfi_amdstd_write_words(struct
+@@ -1790,6 +1794,7 @@ static int cfi_amdstd_write_words(struct
  /*
   * FIXME: interleaved mode not tested, and probably not supported!
   */
@@ -43,7 +43,7 @@ 
  static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip,
  				    unsigned long adr, const u_char *buf,
  				    int len)
-@@ -1917,7 +1922,6 @@ static int __xipram do_write_buffer(stru
+@@ -1918,7 +1923,6 @@ static int __xipram do_write_buffer(stru
  	return ret;
  }
  
@@ -51,7 +51,7 @@ 
  static int cfi_amdstd_write_buffers(struct mtd_info *mtd, loff_t to, size_t len,
  				    size_t *retlen, const u_char *buf)
  {
-@@ -1992,6 +1996,7 @@ static int cfi_amdstd_write_buffers(stru
+@@ -1993,6 +1997,7 @@ static int cfi_amdstd_write_buffers(stru
  
  	return 0;
  }
diff --git a/target/linux/ar71xx/patches-4.9/500-MIPS-fw-myloader.patch b/target/linux/ar71xx/patches-4.9/500-MIPS-fw-myloader.patch
index d6a9276c3251..301422a7d8a1 100644
--- a/target/linux/ar71xx/patches-4.9/500-MIPS-fw-myloader.patch
+++ b/target/linux/ar71xx/patches-4.9/500-MIPS-fw-myloader.patch
@@ -10,7 +10,7 @@ 
  
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -1149,6 +1149,9 @@ config MIPS_MSC
+@@ -1150,6 +1150,9 @@ config MIPS_MSC
  config MIPS_NILE4
  	bool
  
diff --git a/target/linux/ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch b/target/linux/ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch
index c0b5459e4578..89dd32a7c10c 100644
--- a/target/linux/ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch
+++ b/target/linux/ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch
@@ -1,6 +1,6 @@ 
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -195,7 +195,6 @@ config ATH79
+@@ -196,7 +196,6 @@ config ATH79
  	select SYS_SUPPORTS_BIG_ENDIAN
  	select SYS_SUPPORTS_MIPS16
  	select SYS_SUPPORTS_ZBOOT_UART_PROM
diff --git a/target/linux/at91/patches-4.9/104-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch b/target/linux/at91/patches-4.9/104-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch
index 1a3945eb4a39..20c69f39ed1e 100644
--- a/target/linux/at91/patches-4.9/104-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch
+++ b/target/linux/at91/patches-4.9/104-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch
@@ -1,5 +1,3 @@ 
-diff --git a/Documentation/devicetree/bindings/pinctrl/atmel,at91-pio4-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/atmel,at91-pio4-pinctrl.txt
-index 61ac757..9820227 100644
 --- a/Documentation/devicetree/bindings/pinctrl/atmel,at91-pio4-pinctrl.txt
 +++ b/Documentation/devicetree/bindings/pinctrl/atmel,at91-pio4-pinctrl.txt
 @@ -35,7 +35,12 @@ right representation of the pin.
@@ -13,24 +11,19 @@  index 61ac757..9820227 100644
 +ATMEL_PIO_DRVSTR_LO, ATMEL_PIO_DRVSTR_ME, ATMEL_PIO_DRVSTR_HI. The current
 +depends on VDDIOP. You can find the details in the DC Characteristics table
 +from the datasheet.
-
+ 
  Example:
-
-diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
-index 1218005..c88e426 100644
+ 
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
 @@ -49,6 +49,7 @@ dtb-$(CONFIG_SOC_AT91SAM9) += \
-	wb45n.dtb
+ 	wb45n.dtb
  dtb-$(CONFIG_SOC_SAM_V7) += \
-	at91-kizbox2.dtb \
+ 	at91-kizbox2.dtb \
 +	at91-sama5d27_som1_ek.dtb \
-	at91-sama5d2_xplained.dtb \
-	at91-sama5d3_xplained.dtb \
-	sama5d31ek.dtb \
-diff --git a/arch/arm/boot/dts/at91-sama5d27_som1.dtsi b/arch/arm/boot/dts/at91-sama5d27_som1.dtsi
-new file mode 100644
-index 0000000..7d7575f
+ 	at91-sama5d2_xplained.dtb \
+ 	at91-sama5d3_xplained.dtb \
+ 	sama5d31ek.dtb \
 --- /dev/null
 +++ b/arch/arm/boot/dts/at91-sama5d27_som1.dtsi
 @@ -0,0 +1,175 @@
@@ -209,9 +202,6 @@  index 0000000..7d7575f
 +		};
 +	};
 +};
-diff --git a/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts b/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts
-new file mode 100644
-index 0000000..fd12b68
 --- /dev/null
 +++ b/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts
 @@ -0,0 +1,53 @@
@@ -268,9 +258,6 @@  index 0000000..fd12b68
 +	model = "Atmel SAMA5D27 SOM1 EK";
 +	compatible = "atmel,sama5d27-som1-ek", "atmel,sama5d27-som1", "atmel,sama5d27", "atmel,sama5d2", "atmel,sama5";
 +};
-diff --git a/arch/arm/boot/dts/at91-sama5d27_som1_ek_common.dtsi b/arch/arm/boot/dts/at91-sama5d27_som1_ek_common.dtsi
-new file mode 100644
-index 0000000..7201a8e
 --- /dev/null
 +++ b/arch/arm/boot/dts/at91-sama5d27_som1_ek_common.dtsi
 @@ -0,0 +1,619 @@
@@ -893,14 +880,12 @@  index 0000000..7201a8e
 +		};
 +	};
 +};
-diff --git a/include/dt-bindings/pinctrl/at91.h b/include/dt-bindings/pinctrl/at91.h
-index bbca3d0..88eb7d0 100644
 --- a/include/dt-bindings/pinctrl/at91.h
 +++ b/include/dt-bindings/pinctrl/at91.h
 @@ -37,4 +37,8 @@
  #define AT91_PERIPH_C		3
  #define AT91_PERIPH_D		4
-
+ 
 +#define ATMEL_PIO_DRVSTR_LO	1
 +#define ATMEL_PIO_DRVSTR_ME	2
 +#define ATMEL_PIO_DRVSTR_HI	3
diff --git a/target/linux/at91/patches-4.9/105-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch b/target/linux/at91/patches-4.9/105-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch
index 3da9955ee7d6..e33840cfd8b2 100644
--- a/target/linux/at91/patches-4.9/105-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch
+++ b/target/linux/at91/patches-4.9/105-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch
@@ -1,18 +1,13 @@ 
-diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
-index c88e426..cb47e80 100644
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
 @@ -49,6 +49,7 @@ dtb-$(CONFIG_SOC_AT91SAM9) += \
-	wb45n.dtb
+ 	wb45n.dtb
  dtb-$(CONFIG_SOC_SAM_V7) += \
-	at91-kizbox2.dtb \
+ 	at91-kizbox2.dtb \
 +	at91-sama5d2_ptc_ek.dtb \
-	at91-sama5d27_som1_ek.dtb \
-	at91-sama5d2_xplained.dtb \
-	at91-sama5d3_xplained.dtb \
-diff --git a/arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts b/arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts
-new file mode 100644
-index 0000000..257eaac
+ 	at91-sama5d27_som1_ek.dtb \
+ 	at91-sama5d2_xplained.dtb \
+ 	at91-sama5d3_xplained.dtb \
 --- /dev/null
 +++ b/arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts
 @@ -0,0 +1,422 @@
@@ -438,5 +433,3 @@  index 0000000..257eaac
 +		};
 +	};
 +};
---
-2.7.4
diff --git a/target/linux/ath25/patches-4.9/107-ar5312_gpio.patch b/target/linux/ath25/patches-4.9/107-ar5312_gpio.patch
index ac729ee48e0b..f42108702d56 100644
--- a/target/linux/ath25/patches-4.9/107-ar5312_gpio.patch
+++ b/target/linux/ath25/patches-4.9/107-ar5312_gpio.patch
@@ -202,7 +202,7 @@ 
 +subsys_initcall(ar5312_gpio_init);
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -167,6 +167,7 @@ config ATH25
+@@ -168,6 +168,7 @@ config ATH25
  	select CEVT_R4K
  	select CSRC_R4K
  	select DMA_NONCOHERENT
diff --git a/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch b/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch
index 3006fefc2056..34e776466809 100644
--- a/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch
+++ b/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch
@@ -696,7 +696,7 @@  Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
  }
 --- a/drivers/usb/core/hub.c
 +++ b/drivers/usb/core/hub.c
-@@ -5054,7 +5054,7 @@ static void port_event(struct usb_hub *h
+@@ -5062,7 +5062,7 @@ static void port_event(struct usb_hub *h
  	if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
  		u16 status = 0, unused;
  
diff --git a/target/linux/brcm2708/patches-4.9/950-0180-drm-vc4-Fulfill-user-BO-creation-requests-from-the-k.patch b/target/linux/brcm2708/patches-4.9/950-0180-drm-vc4-Fulfill-user-BO-creation-requests-from-the-k.patch
index c0967b463932..71118e26cc8c 100644
--- a/target/linux/brcm2708/patches-4.9/950-0180-drm-vc4-Fulfill-user-BO-creation-requests-from-the-k.patch
+++ b/target/linux/brcm2708/patches-4.9/950-0180-drm-vc4-Fulfill-user-BO-creation-requests-from-the-k.patch
@@ -22,7 +22,7 @@  Signed-off-by: Eric Anholt <eric@anholt.net>
 
 --- a/drivers/gpu/drm/vc4/vc4_bo.c
 +++ b/drivers/gpu/drm/vc4/vc4_bo.c
-@@ -208,21 +208,22 @@ struct drm_gem_object *vc4_create_object
+@@ -209,21 +209,22 @@ struct drm_gem_object *vc4_create_object
  }
  
  struct vc4_bo *vc4_bo_create(struct drm_device *dev, size_t unaligned_size,
diff --git a/target/linux/brcm2708/patches-4.9/950-0181-drm-vc4-Fix-OOPSes-from-trying-to-cache-a-partially-.patch b/target/linux/brcm2708/patches-4.9/950-0181-drm-vc4-Fix-OOPSes-from-trying-to-cache-a-partially-.patch
index 3fed370bee5c..52d0de3914e4 100644
--- a/target/linux/brcm2708/patches-4.9/950-0181-drm-vc4-Fix-OOPSes-from-trying-to-cache-a-partially-.patch
+++ b/target/linux/brcm2708/patches-4.9/950-0181-drm-vc4-Fix-OOPSes-from-trying-to-cache-a-partially-.patch
@@ -17,7 +17,7 @@  Fixes: c826a6e10644 ("drm/vc4: Add a BO cache.")
 
 --- a/drivers/gpu/drm/vc4/vc4_bo.c
 +++ b/drivers/gpu/drm/vc4/vc4_bo.c
-@@ -322,6 +322,14 @@ void vc4_free_object(struct drm_gem_obje
+@@ -323,6 +323,14 @@ void vc4_free_object(struct drm_gem_obje
  		goto out;
  	}
  
diff --git a/target/linux/brcm63xx/patches-4.9/001-4.15-01-MIPS-BCM63XX-add-clkdev-lookup-support.patch b/target/linux/brcm63xx/patches-4.9/001-4.15-01-MIPS-BCM63XX-add-clkdev-lookup-support.patch
index 59e9933e5ff0..c193c72ab3e2 100644
--- a/target/linux/brcm63xx/patches-4.9/001-4.15-01-MIPS-BCM63XX-add-clkdev-lookup-support.patch
+++ b/target/linux/brcm63xx/patches-4.9/001-4.15-01-MIPS-BCM63XX-add-clkdev-lookup-support.patch
@@ -16,7 +16,7 @@  Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
 
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -271,6 +271,7 @@ config BCM63XX
+@@ -272,6 +272,7 @@ config BCM63XX
  	select GPIOLIB
  	select HAVE_CLK
  	select MIPS_L1_CACHE_SHIFT_4
diff --git a/target/linux/brcm63xx/patches-4.9/120-mtd-add-of_match_table-parsing-for-partition-parsers.patch b/target/linux/brcm63xx/patches-4.9/120-mtd-add-of_match_table-parsing-for-partition-parsers.patch
index 6a93398c725d..5ae903b9373c 100644
--- a/target/linux/brcm63xx/patches-4.9/120-mtd-add-of_match_table-parsing-for-partition-parsers.patch
+++ b/target/linux/brcm63xx/patches-4.9/120-mtd-add-of_match_table-parsing-for-partition-parsers.patch
@@ -42,7 +42,7 @@  Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
 
 --- a/drivers/mtd/mtdpart.c
 +++ b/drivers/mtd/mtdpart.c
-@@ -953,8 +953,7 @@ int add_mtd_partitions(struct mtd_info *
+@@ -940,8 +940,7 @@ int add_mtd_partitions(struct mtd_info *
  		add_mtd_device(&slave->mtd);
  		mtd_partition_split(master, slave);
  		mtd_add_partition_attrs(slave);
@@ -52,7 +52,7 @@  Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
  
  		cur_offset = slave->offset + slave->mtd.size;
  	}
-@@ -1136,7 +1135,9 @@ static int mtd_part_of_parse(struct mtd_
+@@ -1123,7 +1122,9 @@ static int mtd_part_of_parse(struct mtd_
  	const char *fixed = "fixed-partitions";
  	int ret, err = 0;
  
@@ -63,7 +63,7 @@  Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
  	of_property_for_each_string(np, "compatible", prop, compat) {
  		parser = mtd_part_get_compatible_parser(compat);
  		if (!parser)
-@@ -1208,8 +1209,12 @@ int parse_mtd_partitions(struct mtd_info
+@@ -1192,8 +1193,12 @@ int parse_mtd_partitions(struct mtd_info
  			types = types_of;
  	}
  
diff --git a/target/linux/brcm63xx/patches-4.9/322-MIPS-BCM63XX-switch-to-IRQ_DOMAIN.patch b/target/linux/brcm63xx/patches-4.9/322-MIPS-BCM63XX-switch-to-IRQ_DOMAIN.patch
index 0c4d034c0da8..ee0d4d657ade 100644
--- a/target/linux/brcm63xx/patches-4.9/322-MIPS-BCM63XX-switch-to-IRQ_DOMAIN.patch
+++ b/target/linux/brcm63xx/patches-4.9/322-MIPS-BCM63XX-switch-to-IRQ_DOMAIN.patch
@@ -14,7 +14,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -264,6 +264,9 @@ config BCM63XX
+@@ -265,6 +265,9 @@ config BCM63XX
  	select SYNC_R4K
  	select DMA_NONCOHERENT
  	select IRQ_MIPS_CPU
diff --git a/target/linux/generic/hack-4.9/220-gc_sections.patch b/target/linux/generic/hack-4.9/220-gc_sections.patch
index 02e36b664ea3..40e4905db299 100644
--- a/target/linux/generic/hack-4.9/220-gc_sections.patch
+++ b/target/linux/generic/hack-4.9/220-gc_sections.patch
@@ -261,7 +261,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  #define TRACE_SYSCALLS()
 @@ -172,7 +172,7 @@
  #ifdef CONFIG_SERIAL_EARLYCON
- #define EARLYCON_TABLE() STRUCT_ALIGN();			\
+ #define EARLYCON_TABLE() . = ALIGN(8);				\
  			 VMLINUX_SYMBOL(__earlycon_table) = .;	\
 -			 *(__earlycon_table)			\
 +			 KEEP(*(__earlycon_table))		\
diff --git a/target/linux/generic/hack-4.9/301-mips_image_cmdline_hack.patch b/target/linux/generic/hack-4.9/301-mips_image_cmdline_hack.patch
index 7c3e38efcfa5..96ae77ba09bf 100644
--- a/target/linux/generic/hack-4.9/301-mips_image_cmdline_hack.patch
+++ b/target/linux/generic/hack-4.9/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
-@@ -1155,6 +1155,10 @@ config SYNC_R4K
+@@ -1156,6 +1156,10 @@ config SYNC_R4K
  config MIPS_MACHINE
  	def_bool n
  
diff --git a/target/linux/generic/pending-4.9/181-net-usb-add-lte-modem-wistron-neweb-d18q1.patch b/target/linux/generic/pending-4.9/181-net-usb-add-lte-modem-wistron-neweb-d18q1.patch
index 3ec5d7518ab0..8403382de78b 100644
--- a/target/linux/generic/pending-4.9/181-net-usb-add-lte-modem-wistron-neweb-d18q1.patch
+++ b/target/linux/generic/pending-4.9/181-net-usb-add-lte-modem-wistron-neweb-d18q1.patch
@@ -49,7 +49,7 @@  Signed-off-by: David S. Miller <davem@davemloft.net>
 
 --- a/drivers/net/usb/qmi_wwan.c
 +++ b/drivers/net/usb/qmi_wwan.c
-@@ -809,6 +809,9 @@ static const struct usb_device_id produc
+@@ -810,6 +810,9 @@ static const struct usb_device_id produc
  	{QMI_FIXED_INTF(0x0846, 0x68a2, 8)},
  	{QMI_FIXED_INTF(0x12d1, 0x140c, 1)},	/* Huawei E173 */
  	{QMI_FIXED_INTF(0x12d1, 0x14ac, 1)},	/* Huawei E1820 */
diff --git a/target/linux/generic/pending-4.9/182-net-qmi_wwan-add-BroadMobi-BM806U-2020-2033.patch b/target/linux/generic/pending-4.9/182-net-qmi_wwan-add-BroadMobi-BM806U-2020-2033.patch
index 9d9bb4ce1d53..2a41a6a95fba 100644
--- a/target/linux/generic/pending-4.9/182-net-qmi_wwan-add-BroadMobi-BM806U-2020-2033.patch
+++ b/target/linux/generic/pending-4.9/182-net-qmi_wwan-add-BroadMobi-BM806U-2020-2033.patch
@@ -18,7 +18,7 @@  Signed-off-by: David S. Miller <davem@davemloft.net>
 
 --- a/drivers/net/usb/qmi_wwan.c
 +++ b/drivers/net/usb/qmi_wwan.c
-@@ -888,6 +888,7 @@ static const struct usb_device_id produc
+@@ -889,6 +889,7 @@ static const struct usb_device_id produc
  	{QMI_FIXED_INTF(0x19d2, 0x2002, 4)},	/* ZTE (Vodafone) K3765-Z */
  	{QMI_FIXED_INTF(0x2001, 0x7e19, 4)},	/* D-Link DWM-221 B1 */
  	{QMI_FIXED_INTF(0x2001, 0x7e35, 4)},	/* D-Link DWM-222 */
diff --git a/target/linux/generic/pending-4.9/300-mips_expose_boot_raw.patch b/target/linux/generic/pending-4.9/300-mips_expose_boot_raw.patch
index cd58eb12e811..d7a3effa4cbb 100644
--- a/target/linux/generic/pending-4.9/300-mips_expose_boot_raw.patch
+++ b/target/linux/generic/pending-4.9/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
+@@ -1065,9 +1065,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
+@@ -2964,6 +2961,18 @@ choice
  		bool "Extend builtin kernel arguments with bootloader arguments"
  endchoice
  
diff --git a/target/linux/generic/pending-4.9/304-mips_disable_fpu.patch b/target/linux/generic/pending-4.9/304-mips_disable_fpu.patch
index a2ec0760fe1c..5707f90becd1 100644
--- a/target/linux/generic/pending-4.9/304-mips_disable_fpu.patch
+++ b/target/linux/generic/pending-4.9/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
+@@ -2888,6 +2888,20 @@ config MIPS_O32_FP64_SUPPORT
  
  	  If unsure, say N.
  
diff --git a/target/linux/generic/pending-4.9/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch b/target/linux/generic/pending-4.9/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch
index 5b237a6d2391..393046cf263d 100644
--- a/target/linux/generic/pending-4.9/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch
+++ b/target/linux/generic/pending-4.9/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
+@@ -214,6 +214,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
+@@ -339,6 +340,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
+@@ -1126,6 +1128,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
+@@ -1650,6 +1655,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
+@@ -1895,9 +1901,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
+@@ -1907,6 +1915,7 @@ config SYS_HAS_CPU_MIPS64_R2
  	bool
  
  config SYS_HAS_CPU_MIPS64_R6
diff --git a/target/linux/generic/pending-4.9/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch b/target/linux/generic/pending-4.9/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch
index c1b0d4f16b89..905675e50c51 100644
--- a/target/linux/generic/pending-4.9/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch
+++ b/target/linux/generic/pending-4.9/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
+@@ -1829,6 +1829,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.9/630-packet_socket_type.patch b/target/linux/generic/pending-4.9/630-packet_socket_type.patch
index 092011d0ec60..08d730ac31ed 100644
--- a/target/linux/generic/pending-4.9/630-packet_socket_type.patch
+++ b/target/linux/generic/pending-4.9/630-packet_socket_type.patch
@@ -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
-@@ -1773,6 +1773,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1780,6 +1780,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
-@@ -1780,6 +1781,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1787,6 +1788,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
-@@ -1792,7 +1794,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1799,7 +1801,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)))
-@@ -2030,12 +2032,12 @@ static int packet_rcv(struct sk_buff *sk
+@@ -2037,12 +2039,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;
  
-@@ -2161,12 +2163,12 @@ static int tpacket_rcv(struct sk_buff *s
+@@ -2168,12 +2170,12 @@ static int tpacket_rcv(struct sk_buff *s
  	BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
  	BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
  
@@ -87,7 +87,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	if (!net_eq(dev_net(dev), sock_net(sk)))
  		goto drop;
  
-@@ -3251,6 +3253,7 @@ static int packet_create(struct net *net
+@@ -3260,6 +3262,7 @@ static int packet_create(struct net *net
  	mutex_init(&po->pg_vec_lock);
  	po->rollover = NULL;
  	po->prot_hook.func = packet_rcv;
@@ -95,7 +95,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
  	if (sock->type == SOCK_PACKET)
  		po->prot_hook.func = packet_rcv_spkt;
-@@ -3837,6 +3840,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3873,6 +3876,16 @@ packet_setsockopt(struct socket *sock, i
  		po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
  		return 0;
  	}
@@ -112,7 +112,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	default:
  		return -ENOPROTOOPT;
  	}
-@@ -3889,6 +3902,13 @@ static int packet_getsockopt(struct sock
+@@ -3925,6 +3938,13 @@ static int packet_getsockopt(struct sock
  	case PACKET_VNET_HDR:
  		val = po->has_vnet_hdr;
  		break;
diff --git a/target/linux/generic/pending-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
index 14715718cbf4..2cebf55a447b 100644
--- a/target/linux/generic/pending-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
+++ b/target/linux/generic/pending-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
@@ -171,7 +171,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  /*
   *	Allocate a dst for local (unicast / anycast) address.
   */
-@@ -2848,7 +2881,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -2850,7 +2883,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)
-@@ -3220,6 +3254,9 @@ static int rt6_fill_node(struct net *net
+@@ -3222,6 +3256,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;
-@@ -3496,6 +3533,8 @@ static int ip6_route_dev_notify(struct n
+@@ -3498,6 +3535,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
-@@ -3507,6 +3546,7 @@ static int ip6_route_dev_notify(struct n
+@@ -3509,6 +3548,7 @@ static int ip6_route_dev_notify(struct n
  		in6_dev_put(net->ipv6.ip6_null_entry->rt6i_idev);
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  		in6_dev_put(net->ipv6.ip6_prohibit_entry->rt6i_idev);
@@ -208,7 +208,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		in6_dev_put(net->ipv6.ip6_blk_hole_entry->rt6i_idev);
  #endif
  	}
-@@ -3722,6 +3762,17 @@ static int __net_init ip6_route_net_init
+@@ -3724,6 +3764,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);
@@ -226,7 +226,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  #endif
  
  	net->ipv6.sysctl.flush_delay = 0;
-@@ -3740,6 +3791,8 @@ out:
+@@ -3742,6 +3793,8 @@ out:
  	return ret;
  
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
@@ -235,7 +235,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  out_ip6_prohibit_entry:
  	kfree(net->ipv6.ip6_prohibit_entry);
  out_ip6_null_entry:
-@@ -3757,6 +3810,7 @@ static void __net_exit ip6_route_net_exi
+@@ -3759,6 +3812,7 @@ static void __net_exit ip6_route_net_exi
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  	kfree(net->ipv6.ip6_prohibit_entry);
  	kfree(net->ipv6.ip6_blk_hole_entry);
@@ -243,7 +243,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  #endif
  	dst_entries_destroy(&net->ipv6.ip6_dst_ops);
  }
-@@ -3830,6 +3884,9 @@ void __init ip6_route_init_special_entri
+@@ -3832,6 +3886,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.9/890-uart_optional_sysrq.patch b/target/linux/generic/pending-4.9/890-uart_optional_sysrq.patch
index 1cb51a2ed53a..6cb745ee3329 100644
--- a/target/linux/generic/pending-4.9/890-uart_optional_sysrq.patch
+++ b/target/linux/generic/pending-4.9/890-uart_optional_sysrq.patch
@@ -15,7 +15,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/include/linux/serial_core.h
 +++ b/include/linux/serial_core.h
-@@ -448,7 +448,7 @@ extern void uart_handle_cts_change(struc
+@@ -455,7 +455,7 @@ extern void uart_handle_cts_change(struc
  extern void uart_insert_char(struct uart_port *port, unsigned int status,
  		 unsigned int overrun, unsigned int ch, unsigned int flag);
  
@@ -26,7 +26,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  {
 --- a/lib/Kconfig.debug
 +++ b/lib/Kconfig.debug
-@@ -410,6 +410,11 @@ config MAGIC_SYSRQ_DEFAULT_ENABLE
+@@ -396,6 +396,11 @@ config MAGIC_SYSRQ_DEFAULT_ENABLE
  	  This may be set to 1 or 0 to enable or disable them all, or
  	  to a bitmask as described in Documentation/sysrq.txt.
  
diff --git a/target/linux/ixp4xx/patches-4.9/090-increase_entropy_pools.patch b/target/linux/ixp4xx/patches-4.9/090-increase_entropy_pools.patch
index 2b4db053c25b..9da213911e24 100644
--- a/target/linux/ixp4xx/patches-4.9/090-increase_entropy_pools.patch
+++ b/target/linux/ixp4xx/patches-4.9/090-increase_entropy_pools.patch
@@ -1,6 +1,6 @@ 
 --- a/drivers/char/random.c
 +++ b/drivers/char/random.c
-@@ -278,11 +278,11 @@
+@@ -279,11 +279,11 @@
  /*
   * Configuration information
   */
diff --git a/target/linux/lantiq/patches-4.9/0152-lantiq-VPE.patch b/target/linux/lantiq/patches-4.9/0152-lantiq-VPE.patch
index 7b14d9e5a906..7d6e4b808989 100644
--- a/target/linux/lantiq/patches-4.9/0152-lantiq-VPE.patch
+++ b/target/linux/lantiq/patches-4.9/0152-lantiq-VPE.patch
@@ -1,6 +1,6 @@ 
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -2320,6 +2320,12 @@ config MIPS_VPE_LOADER
+@@ -2321,6 +2321,12 @@ config MIPS_VPE_LOADER
  	  Includes a loader for loading an elf relocatable object
  	  onto another VPE and running it.
  
diff --git a/target/linux/layerscape/patches-4.9/817-usb-support-layerscape.patch b/target/linux/layerscape/patches-4.9/817-usb-support-layerscape.patch
index c01db458a5f2..f8917291ee25 100644
--- a/target/linux/layerscape/patches-4.9/817-usb-support-layerscape.patch
+++ b/target/linux/layerscape/patches-4.9/817-usb-support-layerscape.patch
@@ -44,15 +44,15 @@  Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
 
 --- a/drivers/net/usb/cdc_ether.c
 +++ b/drivers/net/usb/cdc_ether.c
-@@ -532,6 +532,7 @@ static const struct driver_info wwan_inf
- #define LENOVO_VENDOR_ID	0x17ef
+@@ -533,6 +533,7 @@ static const struct driver_info wwan_inf
+ #define LINKSYS_VENDOR_ID	0x13b1
  #define NVIDIA_VENDOR_ID	0x0955
  #define HP_VENDOR_ID		0x03f0
 +#define TPLINK_VENDOR_ID	0x2357
  
  static const struct usb_device_id	products[] = {
  /* BLACKLIST !!
-@@ -732,6 +733,13 @@ static const struct usb_device_id	produc
+@@ -742,6 +743,13 @@ static const struct usb_device_id	produc
  			USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),
  	.driver_info = 0,
  },
@@ -68,15 +68,15 @@  Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
   *
 --- a/drivers/net/usb/r8152.c
 +++ b/drivers/net/usb/r8152.c
-@@ -520,6 +520,7 @@ enum rtl8152_flags {
- #define VENDOR_ID_SAMSUNG		0x04e8
+@@ -521,6 +521,7 @@ enum rtl8152_flags {
  #define VENDOR_ID_LENOVO		0x17ef
+ #define VENDOR_ID_LINKSYS		0x13b1
  #define VENDOR_ID_NVIDIA		0x0955
 +#define VENDOR_ID_TPLINK		0x2357
  
  #define MCU_TYPE_PLA			0x0100
  #define MCU_TYPE_USB			0x0000
-@@ -1816,6 +1817,10 @@ static int rx_bottom(struct r8152 *tp, i
+@@ -1817,6 +1818,10 @@ static int rx_bottom(struct r8152 *tp, i
  			unsigned int pkt_len;
  			struct sk_buff *skb;
  
@@ -87,9 +87,9 @@  Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
  			pkt_len = le32_to_cpu(rx_desc->opts1) & RX_LEN_MASK;
  			if (pkt_len < ETH_ZLEN)
  				break;
-@@ -4507,6 +4512,7 @@ static struct usb_device_id rtl8152_tabl
- 	{REALTEK_USB_DEVICE(VENDOR_ID_LENOVO,  0x7205)},
+@@ -4509,6 +4514,7 @@ static struct usb_device_id rtl8152_tabl
  	{REALTEK_USB_DEVICE(VENDOR_ID_LENOVO,  0x304f)},
+ 	{REALTEK_USB_DEVICE(VENDOR_ID_LINKSYS, 0x0041)},
  	{REALTEK_USB_DEVICE(VENDOR_ID_NVIDIA,  0x09ff)},
 +	{REALTEK_USB_DEVICE(VENDOR_ID_TPLINK,  0x0601)},
  	{}
@@ -156,7 +156,7 @@  Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
  	int ret;
 --- a/drivers/usb/core/hub.c
 +++ b/drivers/usb/core/hub.c
-@@ -4415,6 +4415,14 @@ hub_port_init(struct usb_hub *hub, struc
+@@ -4423,6 +4423,14 @@ hub_port_init(struct usb_hub *hub, struc
  	else
  		speed = usb_speed_string(udev->speed);
  
diff --git a/target/linux/mpc85xx/patches-4.9/102-powerpc-add-cmdline-override.patch b/target/linux/mpc85xx/patches-4.9/102-powerpc-add-cmdline-override.patch
index c70ac1bb9d52..55976c32b16c 100644
--- a/target/linux/mpc85xx/patches-4.9/102-powerpc-add-cmdline-override.patch
+++ b/target/linux/mpc85xx/patches-4.9/102-powerpc-add-cmdline-override.patch
@@ -17,7 +17,7 @@ 
  	help
 --- a/drivers/of/fdt.c
 +++ b/drivers/of/fdt.c
-@@ -1079,6 +1079,17 @@ int __init early_init_dt_scan_chosen(uns
+@@ -1082,6 +1082,17 @@ int __init early_init_dt_scan_chosen(uns
  	if (p != NULL && l > 0)
  		strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE));
  
diff --git a/target/linux/sunxi/patches-4.9/0052-stmmac-form-4-12.patch b/target/linux/sunxi/patches-4.9/0052-stmmac-form-4-12.patch
index aa6b813daf74..3d9bbb229553 100644
--- a/target/linux/sunxi/patches-4.9/0052-stmmac-form-4-12.patch
+++ b/target/linux/sunxi/patches-4.9/0052-stmmac-form-4-12.patch
@@ -3095,7 +3095,7 @@ 
  
  	if (priv->hw->mode->set_16kib_bfsize)
  		bfsize = priv->hw->mode->set_16kib_bfsize(dev->mtu);
-@@ -1033,235 +1234,409 @@ static int init_dma_desc_rings(struct ne
+@@ -1033,257 +1234,516 @@ static int init_dma_desc_rings(struct ne
  
  	priv->dma_buf_sz = bfsize;
  
@@ -3351,17 +3351,10 @@ 
 -						 priv->tx_skbuff_dma[i].buf,
 -						 priv->tx_skbuff_dma[i].len,
 -						 DMA_TO_DEVICE);
--		}
 +	for (i = 0; i < DMA_TX_SIZE; i++)
 +		stmmac_free_tx_buffer(priv, queue, i);
 +}
- 
--		if (priv->tx_skbuff[i]) {
--			dev_kfree_skb_any(priv->tx_skbuff[i]);
--			priv->tx_skbuff[i] = NULL;
--			priv->tx_skbuff_dma[i].buf = 0;
--			priv->tx_skbuff_dma[i].map_as_page = false;
--		}
++
 +/**
 + * free_dma_rx_desc_resources - free RX dma desc resources
 + * @priv: private structure
@@ -3390,11 +3383,10 @@ 
 +
 +		kfree(rx_q->rx_skbuff_dma);
 +		kfree(rx_q->rx_skbuff);
- 	}
- }
- 
- /**
-- * alloc_dma_desc_resources - alloc TX/RX resources.
++	}
++}
++
++/**
 + * free_dma_tx_desc_resources - free TX dma desc resources
 + * @priv: private structure
 + */
@@ -3427,90 +3419,36 @@ 
 +
 +/**
 + * alloc_dma_rx_desc_resources - alloc RX resources.
-  * @priv: private structure
-  * Description: according to which descriptor can be used (extend or basic)
-  * this function allocates the resources for TX and RX paths. In case of
-  * reception, for example, it pre-allocated the RX socket buffer in order to
-  * allow zero-copy mechanism.
-  */
--static int alloc_dma_desc_resources(struct stmmac_priv *priv)
++ * @priv: private structure
++ * Description: according to which descriptor can be used (extend or basic)
++ * this function allocates the resources for TX and RX paths. In case of
++ * reception, for example, it pre-allocated the RX socket buffer in order to
++ * allow zero-copy mechanism.
++ */
 +static int alloc_dma_rx_desc_resources(struct stmmac_priv *priv)
- {
++{
 +	u32 rx_count = priv->plat->rx_queues_to_use;
- 	int ret = -ENOMEM;
++	int ret = -ENOMEM;
 +	u32 queue;
- 
--	priv->rx_skbuff_dma = kmalloc_array(DMA_RX_SIZE, sizeof(dma_addr_t),
--					    GFP_KERNEL);
--	if (!priv->rx_skbuff_dma)
--		return -ENOMEM;
++
 +	/* RX queues buffers and DMA */
 +	for (queue = 0; queue < rx_count; queue++) {
 +		struct stmmac_rx_queue *rx_q = &priv->rx_queue[queue];
- 
--	priv->rx_skbuff = kmalloc_array(DMA_RX_SIZE, sizeof(struct sk_buff *),
--					GFP_KERNEL);
--	if (!priv->rx_skbuff)
--		goto err_rx_skbuff;
--
--	priv->tx_skbuff_dma = kmalloc_array(DMA_TX_SIZE,
--					    sizeof(*priv->tx_skbuff_dma),
--					    GFP_KERNEL);
--	if (!priv->tx_skbuff_dma)
--		goto err_tx_skbuff_dma;
--
--	priv->tx_skbuff = kmalloc_array(DMA_TX_SIZE, sizeof(struct sk_buff *),
--					GFP_KERNEL);
--	if (!priv->tx_skbuff)
--		goto err_tx_skbuff;
--
--	if (priv->extend_desc) {
--		priv->dma_erx = dma_zalloc_coherent(priv->device, DMA_RX_SIZE *
--						    sizeof(struct
--							   dma_extended_desc),
--						    &priv->dma_rx_phy,
--						    GFP_KERNEL);
--		if (!priv->dma_erx)
--			goto err_dma;
++
 +		rx_q->queue_index = queue;
 +		rx_q->priv_data = priv;
- 
--		priv->dma_etx = dma_zalloc_coherent(priv->device, DMA_TX_SIZE *
--						    sizeof(struct
--							   dma_extended_desc),
--						    &priv->dma_tx_phy,
++
 +		rx_q->rx_skbuff_dma = kmalloc_array(DMA_RX_SIZE,
 +						    sizeof(dma_addr_t),
- 						    GFP_KERNEL);
--		if (!priv->dma_etx) {
--			dma_free_coherent(priv->device, DMA_RX_SIZE *
--					  sizeof(struct dma_extended_desc),
--					  priv->dma_erx, priv->dma_rx_phy);
--			goto err_dma;
--		}
--	} else {
--		priv->dma_rx = dma_zalloc_coherent(priv->device, DMA_RX_SIZE *
--						   sizeof(struct dma_desc),
--						   &priv->dma_rx_phy,
--						   GFP_KERNEL);
--		if (!priv->dma_rx)
--			goto err_dma;
++						    GFP_KERNEL);
 +		if (!rx_q->rx_skbuff_dma)
 +			return -ENOMEM;
- 
--		priv->dma_tx = dma_zalloc_coherent(priv->device, DMA_TX_SIZE *
--						   sizeof(struct dma_desc),
--						   &priv->dma_tx_phy,
--						   GFP_KERNEL);
--		if (!priv->dma_tx) {
--			dma_free_coherent(priv->device, DMA_RX_SIZE *
--					  sizeof(struct dma_desc),
--					  priv->dma_rx, priv->dma_rx_phy);
++
 +		rx_q->rx_skbuff = kmalloc_array(DMA_RX_SIZE,
 +						sizeof(struct sk_buff *),
 +						GFP_KERNEL);
 +		if (!rx_q->rx_skbuff)
- 			goto err_dma;
++			goto err_dma;
 +
 +		if (priv->extend_desc) {
 +			rx_q->dma_erx = dma_zalloc_coherent(priv->device,
@@ -3531,19 +3469,12 @@ 
 +							   GFP_KERNEL);
 +			if (!rx_q->dma_rx)
 +				goto err_dma;
- 		}
- 	}
- 
- 	return 0;
- 
- err_dma:
--	kfree(priv->tx_skbuff);
--err_tx_skbuff:
--	kfree(priv->tx_skbuff_dma);
--err_tx_skbuff_dma:
--	kfree(priv->rx_skbuff);
--err_rx_skbuff:
--	kfree(priv->rx_skbuff_dma);
++		}
++	}
++
++	return 0;
++
++err_dma:
 +	free_dma_rx_desc_resources(priv);
 +
 +	return ret;
@@ -3600,7 +3531,7 @@ 
 +							   GFP_KERNEL);
 +			if (!tx_q->dma_tx)
 +				goto err_dma_buffers;
-+		}
+ 		}
 +	}
 +
 +	return 0;
@@ -3629,85 +3560,126 @@ 
 +
 +	ret = alloc_dma_tx_desc_resources(priv);
 +
- 	return ret;
- }
- 
++	return ret;
++}
++
 +/**
 + * free_dma_desc_resources - free dma desc resources
 + * @priv: private structure
 + */
- static void free_dma_desc_resources(struct stmmac_priv *priv)
- {
--	/* Release the DMA TX/RX socket buffers */
--	dma_free_rx_skbufs(priv);
--	dma_free_tx_skbufs(priv);
--
--	/* Free DMA regions of consistent memory previously allocated */
--	if (!priv->extend_desc) {
--		dma_free_coherent(priv->device,
--				  DMA_TX_SIZE * sizeof(struct dma_desc),
--				  priv->dma_tx, priv->dma_tx_phy);
--		dma_free_coherent(priv->device,
--				  DMA_RX_SIZE * sizeof(struct dma_desc),
--				  priv->dma_rx, priv->dma_rx_phy);
--	} else {
--		dma_free_coherent(priv->device, DMA_TX_SIZE *
--				  sizeof(struct dma_extended_desc),
--				  priv->dma_etx, priv->dma_tx_phy);
--		dma_free_coherent(priv->device, DMA_RX_SIZE *
--				  sizeof(struct dma_extended_desc),
--				  priv->dma_erx, priv->dma_rx_phy);
--	}
--	kfree(priv->rx_skbuff_dma);
--	kfree(priv->rx_skbuff);
--	kfree(priv->tx_skbuff_dma);
--	kfree(priv->tx_skbuff);
++static void free_dma_desc_resources(struct stmmac_priv *priv)
++{
 +	/* Release the DMA RX socket buffers */
 +	free_dma_rx_desc_resources(priv);
 +
 +	/* Release the DMA TX socket buffers */
 +	free_dma_tx_desc_resources(priv);
- }
- 
- /**
-@@ -1271,19 +1646,104 @@ static void free_dma_desc_resources(stru
-  */
- static void stmmac_mac_enable_rx_queues(struct stmmac_priv *priv)
- {
--	int rx_count = priv->dma_cap.number_rx_queues;
--	int queue = 0;
++}
++
++/**
++ *  stmmac_mac_enable_rx_queues - Enable MAC rx queues
++ *  @priv: driver private structure
++ *  Description: It is used for enabling the rx queues in the MAC
++ */
++static void stmmac_mac_enable_rx_queues(struct stmmac_priv *priv)
++{
 +	u32 rx_queues_count = priv->plat->rx_queues_to_use;
 +	int queue;
 +	u8 mode;
  
--	/* If GMAC does not have multiple queues, then this is not necessary*/
--	if (rx_count == 1)
--		return;
+-		if (priv->tx_skbuff[i]) {
+-			dev_kfree_skb_any(priv->tx_skbuff[i]);
+-			priv->tx_skbuff[i] = NULL;
+-			priv->tx_skbuff_dma[i].buf = 0;
+-			priv->tx_skbuff_dma[i].map_as_page = false;
+-		}
 +	for (queue = 0; queue < rx_queues_count; queue++) {
 +		mode = priv->plat->rx_queues_cfg[queue].mode_to_use;
 +		priv->hw->mac->rx_queue_enable(priv->hw, mode, queue);
-+	}
-+}
+ 	}
+ }
  
--	/**
--	 *  If the core is synthesized with multiple rx queues / multiple
--	 *  dma channels, then rx queues will be disabled by default.
--	 *  For now only rx queue 0 is enabled.
--	 */
--	priv->hw->mac->rx_queue_enable(priv->hw, queue);
-+/**
+ /**
+- * alloc_dma_desc_resources - alloc TX/RX resources.
+- * @priv: private structure
+- * Description: according to which descriptor can be used (extend or basic)
+- * this function allocates the resources for TX and RX paths. In case of
+- * reception, for example, it pre-allocated the RX socket buffer in order to
+- * allow zero-copy mechanism.
 + * stmmac_start_rx_dma - start RX DMA channel
 + * @priv: driver private structure
 + * @chan: RX channel index
 + * Description:
 + * This starts a RX DMA channel
-+ */
+  */
+-static int alloc_dma_desc_resources(struct stmmac_priv *priv)
 +static void stmmac_start_rx_dma(struct stmmac_priv *priv, u32 chan)
-+{
+ {
+-	int ret = -ENOMEM;
+-
+-	priv->rx_skbuff_dma = kmalloc_array(DMA_RX_SIZE, sizeof(dma_addr_t),
+-					    GFP_KERNEL);
+-	if (!priv->rx_skbuff_dma)
+-		return -ENOMEM;
+-
+-	priv->rx_skbuff = kmalloc_array(DMA_RX_SIZE, sizeof(struct sk_buff *),
+-					GFP_KERNEL);
+-	if (!priv->rx_skbuff)
+-		goto err_rx_skbuff;
+-
+-	priv->tx_skbuff_dma = kmalloc_array(DMA_TX_SIZE,
+-					    sizeof(*priv->tx_skbuff_dma),
+-					    GFP_KERNEL);
+-	if (!priv->tx_skbuff_dma)
+-		goto err_tx_skbuff_dma;
+-
+-	priv->tx_skbuff = kmalloc_array(DMA_TX_SIZE, sizeof(struct sk_buff *),
+-					GFP_KERNEL);
+-	if (!priv->tx_skbuff)
+-		goto err_tx_skbuff;
+-
+-	if (priv->extend_desc) {
+-		priv->dma_erx = dma_zalloc_coherent(priv->device, DMA_RX_SIZE *
+-						    sizeof(struct
+-							   dma_extended_desc),
+-						    &priv->dma_rx_phy,
+-						    GFP_KERNEL);
+-		if (!priv->dma_erx)
+-			goto err_dma;
+-
+-		priv->dma_etx = dma_zalloc_coherent(priv->device, DMA_TX_SIZE *
+-						    sizeof(struct
+-							   dma_extended_desc),
+-						    &priv->dma_tx_phy,
+-						    GFP_KERNEL);
+-		if (!priv->dma_etx) {
+-			dma_free_coherent(priv->device, DMA_RX_SIZE *
+-					  sizeof(struct dma_extended_desc),
+-					  priv->dma_erx, priv->dma_rx_phy);
+-			goto err_dma;
+-		}
+-	} else {
+-		priv->dma_rx = dma_zalloc_coherent(priv->device, DMA_RX_SIZE *
+-						   sizeof(struct dma_desc),
+-						   &priv->dma_rx_phy,
+-						   GFP_KERNEL);
+-		if (!priv->dma_rx)
+-			goto err_dma;
 +	netdev_dbg(priv->dev, "DMA RX processes started in channel %d\n", chan);
 +	priv->hw->dma->start_rx(priv->ioaddr, chan);
 +}
-+
+ 
+-		priv->dma_tx = dma_zalloc_coherent(priv->device, DMA_TX_SIZE *
+-						   sizeof(struct dma_desc),
+-						   &priv->dma_tx_phy,
+-						   GFP_KERNEL);
+-		if (!priv->dma_tx) {
+-			dma_free_coherent(priv->device, DMA_RX_SIZE *
+-					  sizeof(struct dma_desc),
+-					  priv->dma_rx, priv->dma_rx_phy);
+-			goto err_dma;
+-		}
+-	}
 +/**
 + * stmmac_start_tx_dma - start TX DMA channel
 + * @priv: driver private structure
@@ -3720,7 +3692,8 @@ 
 +	netdev_dbg(priv->dev, "DMA TX processes started in channel %d\n", chan);
 +	priv->hw->dma->start_tx(priv->ioaddr, chan);
 +}
-+
+ 
+-	return 0;
 +/**
 + * stmmac_stop_rx_dma - stop RX DMA channel
 + * @priv: driver private structure
@@ -3733,7 +3706,16 @@ 
 +	netdev_dbg(priv->dev, "DMA RX processes stopped in channel %d\n", chan);
 +	priv->hw->dma->stop_rx(priv->ioaddr, chan);
 +}
-+
+ 
+-err_dma:
+-	kfree(priv->tx_skbuff);
+-err_tx_skbuff:
+-	kfree(priv->tx_skbuff_dma);
+-err_tx_skbuff_dma:
+-	kfree(priv->rx_skbuff);
+-err_rx_skbuff:
+-	kfree(priv->rx_skbuff_dma);
+-	return ret;
 +/**
 + * stmmac_stop_tx_dma - stop TX DMA channel
 + * @priv: driver private structure
@@ -3745,8 +3727,9 @@ 
 +{
 +	netdev_dbg(priv->dev, "DMA TX processes stopped in channel %d\n", chan);
 +	priv->hw->dma->stop_tx(priv->ioaddr, chan);
-+}
-+
+ }
+ 
+-static void free_dma_desc_resources(struct stmmac_priv *priv)
 +/**
 + * stmmac_start_all_dma - start all RX and TX DMA channels
 + * @priv: driver private structure
@@ -3754,7 +3737,31 @@ 
 + * This starts all the RX and TX DMA channels
 + */
 +static void stmmac_start_all_dma(struct stmmac_priv *priv)
-+{
+ {
+-	/* Release the DMA TX/RX socket buffers */
+-	dma_free_rx_skbufs(priv);
+-	dma_free_tx_skbufs(priv);
+-
+-	/* Free DMA regions of consistent memory previously allocated */
+-	if (!priv->extend_desc) {
+-		dma_free_coherent(priv->device,
+-				  DMA_TX_SIZE * sizeof(struct dma_desc),
+-				  priv->dma_tx, priv->dma_tx_phy);
+-		dma_free_coherent(priv->device,
+-				  DMA_RX_SIZE * sizeof(struct dma_desc),
+-				  priv->dma_rx, priv->dma_rx_phy);
+-	} else {
+-		dma_free_coherent(priv->device, DMA_TX_SIZE *
+-				  sizeof(struct dma_extended_desc),
+-				  priv->dma_etx, priv->dma_tx_phy);
+-		dma_free_coherent(priv->device, DMA_RX_SIZE *
+-				  sizeof(struct dma_extended_desc),
+-				  priv->dma_erx, priv->dma_rx_phy);
+-	}
+-	kfree(priv->rx_skbuff_dma);
+-	kfree(priv->rx_skbuff);
+-	kfree(priv->tx_skbuff_dma);
+-	kfree(priv->tx_skbuff);
 +	u32 rx_channels_count = priv->plat->rx_queues_to_use;
 +	u32 tx_channels_count = priv->plat->tx_queues_to_use;
 +	u32 chan = 0;
@@ -3764,23 +3771,38 @@ 
 +
 +	for (chan = 0; chan < tx_channels_count; chan++)
 +		stmmac_start_tx_dma(priv, chan);
-+}
-+
-+/**
+ }
+ 
+ /**
+- *  stmmac_mac_enable_rx_queues - Enable MAC rx queues
+- *  @priv: driver private structure
+- *  Description: It is used for enabling the rx queues in the MAC
 + * stmmac_stop_all_dma - stop all RX and TX DMA channels
 + * @priv: driver private structure
 + * Description:
 + * This stops the RX and TX DMA channels
-+ */
+  */
+-static void stmmac_mac_enable_rx_queues(struct stmmac_priv *priv)
 +static void stmmac_stop_all_dma(struct stmmac_priv *priv)
-+{
+ {
+-	int rx_count = priv->dma_cap.number_rx_queues;
+-	int queue = 0;
 +	u32 rx_channels_count = priv->plat->rx_queues_to_use;
 +	u32 tx_channels_count = priv->plat->tx_queues_to_use;
 +	u32 chan = 0;
-+
+ 
+-	/* If GMAC does not have multiple queues, then this is not necessary*/
+-	if (rx_count == 1)
+-		return;
 +	for (chan = 0; chan < rx_channels_count; chan++)
 +		stmmac_stop_rx_dma(priv, chan);
-+
+ 
+-	/**
+-	 *  If the core is synthesized with multiple rx queues / multiple
+-	 *  dma channels, then rx queues will be disabled by default.
+-	 *  For now only rx queue 0 is enabled.
+-	 */
+-	priv->hw->mac->rx_queue_enable(priv->hw, queue);
 +	for (chan = 0; chan < tx_channels_count; chan++)
 +		stmmac_stop_tx_dma(priv, chan);
  }
diff --git a/target/linux/uml/patches-4.9/101-mconsole-exec.patch b/target/linux/uml/patches-4.9/101-mconsole-exec.patch
index 6682338f3963..ea9da8d8c3d1 100644
--- a/target/linux/uml/patches-4.9/101-mconsole-exec.patch
+++ b/target/linux/uml/patches-4.9/101-mconsole-exec.patch
@@ -123,7 +123,7 @@ 
  };
 --- a/arch/um/os-Linux/file.c
 +++ b/arch/um/os-Linux/file.c
-@@ -554,6 +554,8 @@ int os_create_unix_socket(const char *fi
+@@ -555,6 +555,8 @@ int os_create_unix_socket(const char *fi
  
  	addr.sun_family = AF_UNIX;