[LEDE-DEV] [PATCH] kernel: bump 4.9 to 4.9.60
John Crispin
john at phrozen.org
Tue Nov 7 23:20:57 PST 2017
On 06/11/17 17:17, Koen Vandeputte wrote:
> Refreshed all patches.
>
> Compiled on: cns3xxx, imx6
> Run-tested on: cns3xxx, imx6
Hi,
the
target/linux/layerscape/patches-4.9/820-base-soc-Introduce-soc_device_match-interface.patchpatch
looks overly large. why is this such a huge change ?
John
>
> Signed-off-by: Koen Vandeputte <koen.vandeputte at ncentric.com>
> ---
> include/kernel-version.mk | 4 +-
> .../patches-4.9/950-0031-Add-dwc_otg-driver.patch | 2 +-
> .../hack-4.9/214-spidev_h_portability.patch | 2 +-
> ...dts-ipq4019-ap-dk04-fix-pinctrl-node-name.patch | 2 +-
> ...entralize-net_device-min-max-MTU-checking.patch | 13 +-
> .../303-add-devm_alloc_percpu-support.patch | 11 +-
> .../patches-4.9/601-net-readd-skb_recycle.patch | 11 +-
> ...inux-core-export-copy_skb_header-function.patch | 13 +-
> ...date-the-xmit-timestamp-to-avoid-watchdog.patch | 9 +-
> .../patches-4.9/817-usb-support-layerscape.patch | 2 +-
> ...-soc-Introduce-soc_device_match-interface.patch | 21 +-
> .../sunxi/patches-4.9/0052-stmmac-form-4-12.patch | 386 +++++++++++----------
> ...Allow-building-and-running-on-older-hosts.patch | 2 +-
> .../x86/patches-4.9/100-fix_cs5535_clockevt.patch | 2 +-
> 14 files changed, 229 insertions(+), 251 deletions(-)
>
> diff --git a/include/kernel-version.mk b/include/kernel-version.mk
> index 2bddc87..4dd1399 100644
> --- a/include/kernel-version.mk
> +++ b/include/kernel-version.mk
> @@ -4,11 +4,11 @@ LINUX_RELEASE?=1
>
> LINUX_VERSION-3.18 = .71
> LINUX_VERSION-4.4 = .93
> -LINUX_VERSION-4.9 = .58
> +LINUX_VERSION-4.9 = .60
>
> LINUX_KERNEL_HASH-3.18.71 = 5abc9778ad44ce02ed6c8ab52ece8a21c6d20d21f6ed8a19287b4a38a50c1240
> LINUX_KERNEL_HASH-4.4.93 = ed349314f16e78a6571b5f8884f6452782aef6c26b81bcc7ccdac44ecd917c36
> -LINUX_KERNEL_HASH-4.9.58 = 748f12a28689644b6a9102c67f8fa7938ca73823a949ba6f65024aecf2f221a7
> +LINUX_KERNEL_HASH-4.9.60 = 0e326c5c5152c41265d1c681b41b52afce1925f4a382dfd41cb93605f3fcad04
>
> ifdef KERNEL_PATCHVER
> LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
> 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 1932e30..c3862fc 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 at tronnes.org>
> }
> --- a/drivers/usb/core/hub.c
> +++ b/drivers/usb/core/hub.c
> -@@ -5042,7 +5042,7 @@ static void port_event(struct usb_hub *h
> +@@ -5045,7 +5045,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/generic/hack-4.9/214-spidev_h_portability.patch b/target/linux/generic/hack-4.9/214-spidev_h_portability.patch
> index 23914d6..ad4706c 100644
> --- a/target/linux/generic/hack-4.9/214-spidev_h_portability.patch
> +++ b/target/linux/generic/hack-4.9/214-spidev_h_portability.patch
> @@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
>
> --- a/include/uapi/linux/spi/spidev.h
> +++ b/include/uapi/linux/spi/spidev.h
> -@@ -111,7 +111,7 @@ struct spi_ioc_transfer {
> +@@ -112,7 +112,7 @@ struct spi_ioc_transfer {
>
> /* not all platforms use <asm-generic/ioctl.h> or _IOC_TYPECHECK() ... */
> #define SPI_MSGSIZE(N) \
> diff --git a/target/linux/ipq806x/patches-4.9/864-01-dts-ipq4019-ap-dk04-fix-pinctrl-node-name.patch b/target/linux/ipq806x/patches-4.9/864-01-dts-ipq4019-ap-dk04-fix-pinctrl-node-name.patch
> index a7717a6..f2de6d6 100644
> --- a/target/linux/ipq806x/patches-4.9/864-01-dts-ipq4019-ap-dk04-fix-pinctrl-node-name.patch
> +++ b/target/linux/ipq806x/patches-4.9/864-01-dts-ipq4019-ap-dk04-fix-pinctrl-node-name.patch
> @@ -1,6 +1,6 @@
> --- a/arch/arm/boot/dts/qcom-ipq4019-ap.dk04.1.dtsi
> +++ b/arch/arm/boot/dts/qcom-ipq4019-ap.dk04.1.dtsi
> -@@ -40,7 +40,7 @@
> +@@ -38,7 +38,7 @@
> clock-frequency = <48000000>;
> };
>
> diff --git a/target/linux/layerscape/patches-4.9/001-net-centralize-net_device-min-max-MTU-checking.patch b/target/linux/layerscape/patches-4.9/001-net-centralize-net_device-min-max-MTU-checking.patch
> index fcabb62..104ecda 100644
> --- a/target/linux/layerscape/patches-4.9/001-net-centralize-net_device-min-max-MTU-checking.patch
> +++ b/target/linux/layerscape/patches-4.9/001-net-centralize-net_device-min-max-MTU-checking.patch
> @@ -26,11 +26,9 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
> net/core/dev.c | 13 +++++++++++--
> 2 files changed, 15 insertions(+), 2 deletions(-)
>
> -diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
> -index 780e7171f548..2082b7d02a77 100644
> --- a/include/linux/netdevice.h
> +++ b/include/linux/netdevice.h
> -@@ -1507,6 +1507,8 @@ enum netdev_priv_flags {
> +@@ -1509,6 +1509,8 @@ enum netdev_priv_flags {
> * @if_port: Selectable AUI, TP, ...
> * @dma: DMA channel
> * @mtu: Interface MTU value
> @@ -39,7 +37,7 @@ index 780e7171f548..2082b7d02a77 100644
> * @type: Interface hardware type
> * @hard_header_len: Maximum hardware header length.
> * @min_header_len: Minimum hardware header length
> -@@ -1728,6 +1730,8 @@ struct net_device {
> +@@ -1735,6 +1737,8 @@ struct net_device {
> unsigned char dma;
>
> unsigned int mtu;
> @@ -48,11 +46,9 @@ index 780e7171f548..2082b7d02a77 100644
> unsigned short type;
> unsigned short hard_header_len;
> unsigned short min_header_len;
> -diff --git a/net/core/dev.c b/net/core/dev.c
> -index 2e04fd188081..c7ec56e8659a 100644
> --- a/net/core/dev.c
> +++ b/net/core/dev.c
> -@@ -6524,9 +6524,18 @@ int dev_set_mtu(struct net_device *dev, int new_mtu)
> +@@ -6603,9 +6603,18 @@ int dev_set_mtu(struct net_device *dev,
> if (new_mtu == dev->mtu)
> return 0;
>
> @@ -73,6 +69,3 @@ index 2e04fd188081..c7ec56e8659a 100644
>
> if (!netif_device_present(dev))
> return -ENODEV;
> ---
> -2.11.1
> -
> diff --git a/target/linux/layerscape/patches-4.9/303-add-devm_alloc_percpu-support.patch b/target/linux/layerscape/patches-4.9/303-add-devm_alloc_percpu-support.patch
> index a8573cc..2eb7cf6 100644
> --- a/target/linux/layerscape/patches-4.9/303-add-devm_alloc_percpu-support.patch
> +++ b/target/linux/layerscape/patches-4.9/303-add-devm_alloc_percpu-support.patch
> @@ -9,8 +9,6 @@ Signed-off-by: Zhao Qiang <qiang.zhao at nxp.com>
> include/linux/device.h | 19 +++++++++++++++
> 2 files changed, 85 insertions(+)
>
> -diff --git a/drivers/base/devres.c b/drivers/base/devres.c
> -index 8fc654f0807b..71d577025285 100644
> --- a/drivers/base/devres.c
> +++ b/drivers/base/devres.c
> @@ -10,6 +10,7 @@
> @@ -21,7 +19,7 @@ index 8fc654f0807b..71d577025285 100644
>
> #include "base.h"
>
> -@@ -985,3 +986,68 @@ void devm_free_pages(struct device *dev, unsigned long addr)
> +@@ -985,3 +986,68 @@ void devm_free_pages(struct device *dev,
> &devres));
> }
> EXPORT_SYMBOL_GPL(devm_free_pages);
> @@ -90,11 +88,9 @@ index 8fc654f0807b..71d577025285 100644
> + (void *)pdata));
> +}
> +EXPORT_SYMBOL_GPL(devm_free_percpu);
> -diff --git a/include/linux/device.h b/include/linux/device.h
> -index bc41e87a969b..0a2135cbddc9 100644
> --- a/include/linux/device.h
> +++ b/include/linux/device.h
> -@@ -686,6 +686,25 @@ void __iomem *devm_ioremap_resource(struct device *dev, struct resource *res);
> +@@ -688,6 +688,25 @@ void __iomem *devm_ioremap_resource(stru
> int devm_add_action(struct device *dev, void (*action)(void *), void *data);
> void devm_remove_action(struct device *dev, void (*action)(void *), void *data);
>
> @@ -120,6 +116,3 @@ index bc41e87a969b..0a2135cbddc9 100644
> static inline int devm_add_action_or_reset(struct device *dev,
> void (*action)(void *), void *data)
> {
> ---
> -2.11.1
> -
> diff --git a/target/linux/layerscape/patches-4.9/601-net-readd-skb_recycle.patch b/target/linux/layerscape/patches-4.9/601-net-readd-skb_recycle.patch
> index 08aa2a0..105866e 100644
> --- a/target/linux/layerscape/patches-4.9/601-net-readd-skb_recycle.patch
> +++ b/target/linux/layerscape/patches-4.9/601-net-readd-skb_recycle.patch
> @@ -12,11 +12,9 @@ Signed-off-by: Madalin Bucur <madalin.bucur at freescale.com>
> net/core/skbuff.c | 26 ++++++++++++++++++++++++++
> 2 files changed, 27 insertions(+)
>
> -diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
> -index 32810f279f8e..a52a6fb0ac2e 100644
> --- a/include/linux/skbuff.h
> +++ b/include/linux/skbuff.h
> -@@ -902,6 +902,7 @@ void kfree_skb(struct sk_buff *skb);
> +@@ -903,6 +903,7 @@ void kfree_skb(struct sk_buff *skb);
> void kfree_skb_list(struct sk_buff *segs);
> void skb_tx_error(struct sk_buff *skb);
> void consume_skb(struct sk_buff *skb);
> @@ -24,11 +22,9 @@ index 32810f279f8e..a52a6fb0ac2e 100644
> void __kfree_skb(struct sk_buff *skb);
> extern struct kmem_cache *skbuff_head_cache;
>
> -diff --git a/net/core/skbuff.c b/net/core/skbuff.c
> -index fe008f1bd930..ab1038083df2 100644
> --- a/net/core/skbuff.c
> +++ b/net/core/skbuff.c
> -@@ -825,6 +825,32 @@ void napi_consume_skb(struct sk_buff *skb, int budget)
> +@@ -842,6 +842,32 @@ void napi_consume_skb(struct sk_buff *sk
> }
> EXPORT_SYMBOL(napi_consume_skb);
>
> @@ -61,6 +57,3 @@ index fe008f1bd930..ab1038083df2 100644
> /* 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) < \
> ---
> -2.11.1
> -
> diff --git a/target/linux/layerscape/patches-4.9/602-linux-core-export-copy_skb_header-function.patch b/target/linux/layerscape/patches-4.9/602-linux-core-export-copy_skb_header-function.patch
> index 1244675..b00b7aa 100644
> --- a/target/linux/layerscape/patches-4.9/602-linux-core-export-copy_skb_header-function.patch
> +++ b/target/linux/layerscape/patches-4.9/602-linux-core-export-copy_skb_header-function.patch
> @@ -9,11 +9,9 @@ Signed-off-by: Camelia Groza camelia.groza at nxp.com
> net/core/skbuff.c | 3 ++-
> 2 files changed, 3 insertions(+), 1 deletion(-)
>
> -diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
> -index a52a6fb0ac2e..a0385f9bdd4e 100644
> --- a/include/linux/skbuff.h
> +++ b/include/linux/skbuff.h
> -@@ -3063,6 +3063,7 @@ static inline void skb_free_datagram_locked(struct sock *sk,
> +@@ -3058,6 +3058,7 @@ static inline void skb_free_datagram_loc
> }
> int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags);
> int skb_copy_bits(const struct sk_buff *skb, int offset, void *to, int len);
> @@ -21,11 +19,9 @@ index a52a6fb0ac2e..a0385f9bdd4e 100644
> int skb_store_bits(struct sk_buff *skb, int offset, const void *from, int len);
> __wsum skb_copy_and_csum_bits(const struct sk_buff *skb, int offset, u8 *to,
> int len, __wsum csum);
> -diff --git a/net/core/skbuff.c b/net/core/skbuff.c
> -index ab1038083df2..2684c49b9805 100644
> --- a/net/core/skbuff.c
> +++ b/net/core/skbuff.c
> -@@ -1082,7 +1082,7 @@ static void skb_headers_offset_update(struct sk_buff *skb, int off)
> +@@ -1099,7 +1099,7 @@ static void skb_headers_offset_update(st
> skb->inner_mac_header += off;
> }
>
> @@ -34,7 +30,7 @@ index ab1038083df2..2684c49b9805 100644
> {
> __copy_skb_header(new, old);
>
> -@@ -1090,6 +1090,7 @@ static void copy_skb_header(struct sk_buff *new, const struct sk_buff *old)
> +@@ -1107,6 +1107,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;
> }
> @@ -42,6 +38,3 @@ index ab1038083df2..2684c49b9805 100644
>
> static inline int skb_alloc_rx_flag(const struct sk_buff *skb)
> {
> ---
> -2.11.1
> -
> diff --git a/target/linux/layerscape/patches-4.9/603-sdk_dpaa-update-the-xmit-timestamp-to-avoid-watchdog.patch b/target/linux/layerscape/patches-4.9/603-sdk_dpaa-update-the-xmit-timestamp-to-avoid-watchdog.patch
> index a9a4596..0d3b9d6 100644
> --- a/target/linux/layerscape/patches-4.9/603-sdk_dpaa-update-the-xmit-timestamp-to-avoid-watchdog.patch
> +++ b/target/linux/layerscape/patches-4.9/603-sdk_dpaa-update-the-xmit-timestamp-to-avoid-watchdog.patch
> @@ -17,8 +17,6 @@ Signed-off-by: Camelia Groza <camelia.groza at nxp.com>
> net/sched/sch_generic.c | 7 +++++++
> 2 files changed, 9 insertions(+)
>
> -diff --git a/include/linux/netdev_features.h b/include/linux/netdev_features.h
> -index 9c6c8ef2e9e7..90b4107ebeff 100644
> --- a/include/linux/netdev_features.h
> +++ b/include/linux/netdev_features.h
> @@ -74,6 +74,7 @@ enum {
> @@ -37,11 +35,9 @@ index 9c6c8ef2e9e7..90b4107ebeff 100644
>
> #define for_each_netdev_feature(mask_addr, bit) \
> for_each_set_bit(bit, (unsigned long *)mask_addr, NETDEV_FEATURE_COUNT)
> -diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
> -index 6cfb6e9038c2..3fab16cb7c58 100644
> --- a/net/sched/sch_generic.c
> +++ b/net/sched/sch_generic.c
> -@@ -309,6 +309,13 @@ static void dev_watchdog(unsigned long arg)
> +@@ -309,6 +309,13 @@ static void dev_watchdog(unsigned long a
> txq->trans_timeout++;
> break;
> }
> @@ -55,6 +51,3 @@ index 6cfb6e9038c2..3fab16cb7c58 100644
> }
>
> if (some_queue_timedout) {
> ---
> -2.11.1
> -
> 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 147b03a..cd724cb 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
> @@ -95,7 +95,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
> int ret;
> --- a/drivers/usb/core/hub.c
> +++ b/drivers/usb/core/hub.c
> -@@ -4412,6 +4412,14 @@ hub_port_init(struct usb_hub *hub, struc
> +@@ -4415,6 +4415,14 @@ hub_port_init(struct usb_hub *hub, struc
> else
> speed = usb_speed_string(udev->speed);
>
> diff --git a/target/linux/layerscape/patches-4.9/820-base-soc-Introduce-soc_device_match-interface.patch b/target/linux/layerscape/patches-4.9/820-base-soc-Introduce-soc_device_match-interface.patch
> index ec9e261..e277e30 100644
> --- a/target/linux/layerscape/patches-4.9/820-base-soc-Introduce-soc_device_match-interface.patch
> +++ b/target/linux/layerscape/patches-4.9/820-base-soc-Introduce-soc_device_match-interface.patch
> @@ -45,20 +45,16 @@ Acked-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
> include/linux/sys_soc.h | 3 +++
> 3 files changed, 70 insertions(+)
>
> -diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig
> -index fdf44cac08e6..991b21e1f89b 100644
> --- a/drivers/base/Kconfig
> +++ b/drivers/base/Kconfig
> -@@ -235,6 +235,7 @@ config GENERIC_CPU_AUTOPROBE
> +@@ -234,6 +234,7 @@ config GENERIC_CPU_DEVICES
>
> - config SOC_BUS
> + config GENERIC_CPU_AUTOPROBE
> bool
> + select GLOB
>
> - source "drivers/base/regmap/Kconfig"
> -
> -diff --git a/drivers/base/soc.c b/drivers/base/soc.c
> -index 028cef377fd4..04ee597fc3a3 100644
> + config SOC_BUS
> + bool
> --- a/drivers/base/soc.c
> +++ b/drivers/base/soc.c
> @@ -13,6 +13,7 @@
> @@ -69,7 +65,7 @@ index 028cef377fd4..04ee597fc3a3 100644
>
> static DEFINE_IDA(soc_ida);
>
> -@@ -168,3 +169,68 @@ static int __init soc_bus_register(void)
> +@@ -159,3 +160,68 @@ static int __init soc_bus_register(void)
> return bus_register(&soc_bus_type);
> }
> core_initcall(soc_bus_register);
> @@ -138,8 +134,6 @@ index 028cef377fd4..04ee597fc3a3 100644
> + return NULL;
> +}
> +EXPORT_SYMBOL_GPL(soc_device_match);
> -diff --git a/include/linux/sys_soc.h b/include/linux/sys_soc.h
> -index 2739ccb69571..9f5eb06f9fd8 100644
> --- a/include/linux/sys_soc.h
> +++ b/include/linux/sys_soc.h
> @@ -13,6 +13,7 @@ struct soc_device_attribute {
> @@ -150,13 +144,10 @@ index 2739ccb69571..9f5eb06f9fd8 100644
> };
>
> /**
> -@@ -34,4 +35,6 @@ void soc_device_unregister(struct soc_device *soc_dev);
> +@@ -34,4 +35,6 @@ void soc_device_unregister(struct soc_de
> */
> struct device *soc_device_to_device(struct soc_device *soc);
>
> +const struct soc_device_attribute *soc_device_match(
> + const struct soc_device_attribute *matches);
> #endif /* __SOC_BUS_H */
> ---
> -2.11.1
> -
> 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 285e4d2..a5cdec5 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
> @@ -2887,7 +2887,7 @@
> +
> + /* Display RX ring */
> + priv->hw->desc->display_ring(head_rx, DMA_RX_SIZE, true);
> - }
> ++ }
> +}
> +
> +static void stmmac_display_tx_rings(struct stmmac_priv *priv)
> @@ -2906,15 +2906,15 @@
> + head_tx = (void *)tx_q->dma_etx;
> + else
> + head_tx = (void *)tx_q->dma_tx;
> ++
> ++ priv->hw->desc->display_ring(head_tx, DMA_TX_SIZE, false);
> + }
> ++}
>
> - /* Display Rx ring */
> - priv->hw->desc->display_ring(head_rx, DMA_RX_SIZE, true);
> - /* Display Tx ring */
> - priv->hw->desc->display_ring(head_tx, DMA_TX_SIZE, false);
> -+ priv->hw->desc->display_ring(head_tx, DMA_TX_SIZE, false);
> -+ }
> -+}
> -+
> +static void stmmac_display_rings(struct stmmac_priv *priv)
> +{
> + /* Display RX ring */
> @@ -3131,7 +3131,7 @@
>
> if (priv->hw->mode->set_16kib_bfsize)
> bfsize = priv->hw->mode->set_16kib_bfsize(dev->mtu);
> -@@ -1018,235 +1228,409 @@ static int init_dma_desc_rings(struct ne
> +@@ -1018,257 +1228,516 @@ static int init_dma_desc_rings(struct ne
>
> priv->dma_buf_sz = bfsize;
>
> @@ -3163,7 +3163,10 @@
> + p = &((rx_q->dma_erx + i)->basic);
> + else
> + p = rx_q->dma_rx + i;
> -+
> +
> +- ret = stmmac_init_rx_buffers(priv, p, i, flags);
> +- if (ret)
> +- goto err_init_rx_buffers;
> + ret = stmmac_init_rx_buffers(priv, p, i, flags,
> + queue);
> + if (ret)
> @@ -3173,18 +3176,15 @@
> + rx_q->rx_skbuff[i], rx_q->rx_skbuff[i]->data,
> + (unsigned int)rx_q->rx_skbuff_dma[i]);
> + }
> -
> -- ret = stmmac_init_rx_buffers(priv, p, i, flags);
> -- if (ret)
> -- goto err_init_rx_buffers;
> ++
> + rx_q->cur_rx = 0;
> + rx_q->dirty_rx = (unsigned int)(i - DMA_RX_SIZE);
> ++
> ++ stmmac_clear_rx_descriptors(priv, queue);
>
> - netif_dbg(priv, probe, priv->dev, "[%p]\t[%p]\t[%x]\n",
> - priv->rx_skbuff[i], priv->rx_skbuff[i]->data,
> - (unsigned int)priv->rx_skbuff_dma[i]);
> -+ stmmac_clear_rx_descriptors(priv, queue);
> -+
> + /* Setup the chained descriptor addresses */
> + if (priv->mode == STMMAC_CHAIN_MODE) {
> + if (priv->extend_desc)
> @@ -3277,8 +3277,13 @@
> + priv->hw->mode->init(tx_q->dma_tx,
> + tx_q->dma_tx_phy,
> + DMA_TX_SIZE, 0);
> -+ }
> -+
> + }
> +
> +- priv->tx_skbuff_dma[i].buf = 0;
> +- priv->tx_skbuff_dma[i].map_as_page = false;
> +- priv->tx_skbuff_dma[i].len = 0;
> +- priv->tx_skbuff_dma[i].last_segment = false;
> +- priv->tx_skbuff[i] = NULL;
> + for (i = 0; i < DMA_TX_SIZE; i++) {
> + struct dma_desc *p;
> + if (priv->extend_desc)
> @@ -3300,13 +3305,8 @@
> + tx_q->tx_skbuff_dma[i].len = 0;
> + tx_q->tx_skbuff_dma[i].last_segment = false;
> + tx_q->tx_skbuff[i] = NULL;
> - }
> -
> -- priv->tx_skbuff_dma[i].buf = 0;
> -- priv->tx_skbuff_dma[i].map_as_page = false;
> -- priv->tx_skbuff_dma[i].len = 0;
> -- priv->tx_skbuff_dma[i].last_segment = false;
> -- priv->tx_skbuff[i] = NULL;
> ++ }
> ++
> + tx_q->dirty_tx = 0;
> + tx_q->cur_tx = 0;
> +
> @@ -3387,17 +3387,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
> @@ -3426,11 +3419,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
> + */
> @@ -3463,90 +3455,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,
> @@ -3567,19 +3505,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;
> @@ -3636,7 +3567,7 @@
> + GFP_KERNEL);
> + if (!tx_q->dma_tx)
> + goto err_dma_buffers;
> -+ }
> + }
> + }
> +
> + return 0;
> @@ -3644,9 +3575,9 @@
> +err_dma_buffers:
> + free_dma_tx_desc_resources(priv);
> +
> - return ret;
> - }
> -
> ++ return ret;
> ++}
> ++
> +/**
> + * alloc_dma_desc_resources - alloc TX/RX resources.
> + * @priv: private structure
> @@ -3672,78 +3603,119 @@
> + * 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);
> - }
> -
> - /**
> -@@ -1256,19 +1640,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
> @@ -3756,7 +3728,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
> @@ -3769,7 +3742,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
> @@ -3781,8 +3763,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
> @@ -3790,7 +3773,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;
> @@ -3800,23 +3807,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/001-um-Allow-building-and-running-on-older-hosts.patch b/target/linux/uml/patches-4.9/001-um-Allow-building-and-running-on-older-hosts.patch
> index 9de557b..501cca8 100644
> --- a/target/linux/uml/patches-4.9/001-um-Allow-building-and-running-on-older-hosts.patch
> +++ b/target/linux/uml/patches-4.9/001-um-Allow-building-and-running-on-older-hosts.patch
> @@ -35,7 +35,7 @@ Signed-off-by: Richard Weinberger <richard at nod.at>
> struct iovec iov;
>
> if (have_xstate_support) {
> -@@ -34,9 +35,9 @@ int save_fp_registers(int pid, unsigned
> +@@ -34,9 +35,9 @@ int save_fp_registers(int pid, unsigned
> if (ptrace(PTRACE_GETREGSET, pid, NT_X86_XSTATE, &iov) < 0)
> return -errno;
> return 0;
> diff --git a/target/linux/x86/patches-4.9/100-fix_cs5535_clockevt.patch b/target/linux/x86/patches-4.9/100-fix_cs5535_clockevt.patch
> index c49ddca..c3a7fce 100644
> --- a/target/linux/x86/patches-4.9/100-fix_cs5535_clockevt.patch
> +++ b/target/linux/x86/patches-4.9/100-fix_cs5535_clockevt.patch
> @@ -1,6 +1,6 @@
> --- a/drivers/clocksource/cs5535-clockevt.c
> +++ b/drivers/clocksource/cs5535-clockevt.c
> -@@ -129,7 +129,8 @@ static irqreturn_t mfgpt_tick(int irq, v
> +@@ -130,7 +130,8 @@ static irqreturn_t mfgpt_tick(int irq, v
> cs5535_mfgpt_write(cs5535_event_clock, MFGPT_REG_SETUP,
> MFGPT_SETUP_CNTEN | MFGPT_SETUP_CMP2);
>
More information about the Lede-dev
mailing list