kernel: bump 4.9 to 4.9.100
Refreshed all patches Added new ARM64 symbol: ARM64_ERRATUM_1024718 Compile-tested on: ar71xx Runtime-tested on: ar71xx Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
This commit is contained in:
parent
6390f27c2e
commit
12f44b83a8
35 changed files with 312 additions and 311 deletions
|
@ -4,13 +4,13 @@ LINUX_RELEASE?=1
|
|||
|
||||
LINUX_VERSION-3.18 = .71
|
||||
LINUX_VERSION-4.4 = .121
|
||||
LINUX_VERSION-4.9 = .96
|
||||
LINUX_VERSION-4.14 = .37
|
||||
LINUX_VERSION-4.9 = .100
|
||||
|
||||
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.14.37 = 8197e7ed3620713e412905430a7bf93e2048384042ffba189a66f0eeb6908e92
|
||||
LINUX_KERNEL_HASH-4.9.100 = c5bb6f3a7113e05cbaf6e48b2b485dea4f7edae5e42b3fe81c963ba63413a77c
|
||||
|
||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
||||
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
@ -16,8 +14,6 @@ index 61ac757..9820227 100644
|
|||
|
||||
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) += \
|
||||
|
@ -28,9 +24,6 @@ index 1218005..c88e426 100644
|
|||
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
|
||||
--- /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,8 +880,6 @@ 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 @@
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
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) += \
|
||||
|
@ -10,9 +8,6 @@ index c88e426..cb47e80 100644
|
|||
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
|
||||
--- /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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -268,6 +268,7 @@ CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
|
|||
# CONFIG_ARM64_ERRATUM_834220 is not set
|
||||
# CONFIG_ARM64_ERRATUM_843419 is not set
|
||||
# CONFIG_ARM64_ERRATUM_845719 is not set
|
||||
# CONFIG_ARM64_ERRATUM_1024718 is not set
|
||||
# CONFIG_ARM_APPENDED_DTB is not set
|
||||
# CONFIG_ARM_ARCH_TIMER is not set
|
||||
# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set
|
||||
|
|
|
@ -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)) \
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -65,7 +65,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||
/**
|
||||
* ata_build_rw_tf - Build ATA taskfile for given read/write request
|
||||
* @tf: Target ATA taskfile
|
||||
@@ -4985,6 +4998,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
|
||||
@@ -4988,6 +5001,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
|
||||
if (tag < 0)
|
||||
return NULL;
|
||||
}
|
||||
|
@ -75,7 +75,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||
|
||||
qc = __ata_qc_from_tag(ap, tag);
|
||||
qc->tag = tag;
|
||||
@@ -5886,6 +5902,9 @@ struct ata_port *ata_port_alloc(struct a
|
||||
@@ -5889,6 +5905,9 @@ struct ata_port *ata_port_alloc(struct a
|
||||
ap->stats.unhandled_irq = 1;
|
||||
ap->stats.idle_irq = 1;
|
||||
#endif
|
||||
|
@ -85,7 +85,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||
ata_sff_port_init(ap);
|
||||
|
||||
return ap;
|
||||
@@ -5907,6 +5926,12 @@ static void ata_host_release(struct devi
|
||||
@@ -5910,6 +5929,12 @@ static void ata_host_release(struct devi
|
||||
|
||||
kfree(ap->pmp_link);
|
||||
kfree(ap->slave_link);
|
||||
|
@ -98,7 +98,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||
kfree(ap);
|
||||
host->ports[i] = NULL;
|
||||
}
|
||||
@@ -6353,7 +6378,23 @@ int ata_host_register(struct ata_host *h
|
||||
@@ -6356,7 +6381,23 @@ int ata_host_register(struct ata_host *h
|
||||
host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
|
||||
host->ports[i]->local_port_no = i + 1;
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/drivers/char/random.c
|
||||
+++ b/drivers/char/random.c
|
||||
@@ -278,11 +278,11 @@
|
||||
@@ -279,11 +279,11 @@
|
||||
/*
|
||||
* Configuration information
|
||||
*/
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
/* Get the HEAD */
|
||||
skb = kmem_cache_alloc_node(cache, gfp_mask & ~__GFP_DMA, node);
|
||||
@@ -1222,6 +1225,10 @@ int pskb_expand_head(struct sk_buff *skb
|
||||
@@ -1223,6 +1226,10 @@ int pskb_expand_head(struct sk_buff *skb
|
||||
if (skb_shared(skb))
|
||||
BUG();
|
||||
|
||||
|
|
|
@ -477,7 +477,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
|||
/* Make sure a field is enclosed inside headers_start/headers_end section */
|
||||
#define CHECK_SKB_FIELD(field) \
|
||||
BUILD_BUG_ON(offsetof(struct sk_buff, field) < \
|
||||
@@ -1073,7 +1099,7 @@ static void skb_headers_offset_update(st
|
||||
@@ -1074,7 +1100,7 @@ static void skb_headers_offset_update(st
|
||||
skb->inner_mac_header += off;
|
||||
}
|
||||
|
||||
|
@ -486,7 +486,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
|||
{
|
||||
__copy_skb_header(new, old);
|
||||
|
||||
@@ -1081,6 +1107,7 @@ static void copy_skb_header(struct sk_bu
|
||||
@@ -1082,6 +1108,7 @@ static void copy_skb_header(struct sk_bu
|
||||
skb_shinfo(new)->gso_segs = skb_shinfo(old)->gso_segs;
|
||||
skb_shinfo(new)->gso_type = skb_shinfo(old)->gso_type;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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));
|
||||
|
||||
|
|
|
@ -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,14 +3560,183 @@
|
|||
+
|
||||
+ 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)
|
||||
+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);
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
+ * 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 (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);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
- * 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
|
||||
+ * @chan: TX channel index
|
||||
+ * Description:
|
||||
+ * This starts a TX DMA channel
|
||||
+ */
|
||||
+static void stmmac_start_tx_dma(struct stmmac_priv *priv, u32 chan)
|
||||
+{
|
||||
+ 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
|
||||
+ * @chan: RX channel index
|
||||
+ * Description:
|
||||
+ * This stops a RX DMA channel
|
||||
+ */
|
||||
+static void stmmac_stop_rx_dma(struct stmmac_priv *priv, u32 chan)
|
||||
+{
|
||||
+ 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
|
||||
+ * @chan: TX channel index
|
||||
+ * Description:
|
||||
+ * This stops a TX DMA channel
|
||||
+ */
|
||||
+static void stmmac_stop_tx_dma(struct stmmac_priv *priv, u32 chan)
|
||||
+{
|
||||
+ 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
|
||||
+ * Description:
|
||||
+ * 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);
|
||||
|
@ -3662,99 +3762,6 @@
|
|||
- kfree(priv->rx_skbuff);
|
||||
- kfree(priv->tx_skbuff_dma);
|
||||
- kfree(priv->tx_skbuff);
|
||||
+ /* 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;
|
||||
+ 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;
|
||||
+ 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);
|
||||
+/**
|
||||
+ * stmmac_start_rx_dma - start RX DMA channel
|
||||
+ * @priv: driver private structure
|
||||
+ * @chan: RX channel index
|
||||
+ * Description:
|
||||
+ * This starts a RX DMA channel
|
||||
+ */
|
||||
+static void stmmac_start_rx_dma(struct stmmac_priv *priv, u32 chan)
|
||||
+{
|
||||
+ netdev_dbg(priv->dev, "DMA RX processes started in channel %d\n", chan);
|
||||
+ priv->hw->dma->start_rx(priv->ioaddr, chan);
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
+ * stmmac_start_tx_dma - start TX DMA channel
|
||||
+ * @priv: driver private structure
|
||||
+ * @chan: TX channel index
|
||||
+ * Description:
|
||||
+ * This starts a TX DMA channel
|
||||
+ */
|
||||
+static void stmmac_start_tx_dma(struct stmmac_priv *priv, u32 chan)
|
||||
+{
|
||||
+ netdev_dbg(priv->dev, "DMA TX processes started in channel %d\n", chan);
|
||||
+ priv->hw->dma->start_tx(priv->ioaddr, chan);
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
+ * stmmac_stop_rx_dma - stop RX DMA channel
|
||||
+ * @priv: driver private structure
|
||||
+ * @chan: RX channel index
|
||||
+ * Description:
|
||||
+ * This stops a RX DMA channel
|
||||
+ */
|
||||
+static void stmmac_stop_rx_dma(struct stmmac_priv *priv, u32 chan)
|
||||
+{
|
||||
+ netdev_dbg(priv->dev, "DMA RX processes stopped in channel %d\n", chan);
|
||||
+ priv->hw->dma->stop_rx(priv->ioaddr, chan);
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
+ * stmmac_stop_tx_dma - stop TX DMA channel
|
||||
+ * @priv: driver private structure
|
||||
+ * @chan: TX channel index
|
||||
+ * Description:
|
||||
+ * This stops a TX DMA channel
|
||||
+ */
|
||||
+static void stmmac_stop_tx_dma(struct stmmac_priv *priv, u32 chan)
|
||||
+{
|
||||
+ netdev_dbg(priv->dev, "DMA TX processes stopped in channel %d\n", chan);
|
||||
+ priv->hw->dma->stop_tx(priv->ioaddr, chan);
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
+ * stmmac_start_all_dma - start all RX and TX DMA channels
|
||||
+ * @priv: driver private structure
|
||||
+ * Description:
|
||||
+ * This starts all the RX and TX DMA channels
|
||||
+ */
|
||||
+static void stmmac_start_all_dma(struct stmmac_priv *priv)
|
||||
+{
|
||||
+ 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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in a new issue