diff --git a/include/kernel-version.mk b/include/kernel-version.mk index f88162e8a1..29d4afbbab 100644 --- a/include/kernel-version.mk +++ b/include/kernel-version.mk @@ -6,13 +6,13 @@ ifdef CONFIG_TESTING_KERNEL KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER) endif -LINUX_VERSION-4.9 = .244 -LINUX_VERSION-4.14 = .207 -LINUX_VERSION-4.19 = .158 +LINUX_VERSION-4.9 = .247 +LINUX_VERSION-4.14 = .210 +LINUX_VERSION-4.19 = .161 -LINUX_KERNEL_HASH-4.9.244 = 997af5a1558dd72ce49b87bf710359ad1fca5af777616a8baa98000f6edff109 -LINUX_KERNEL_HASH-4.14.207 = 78a753970d98584da0821147d4ee7d469325464cb664fb446b8bb30339240029 -LINUX_KERNEL_HASH-4.19.158 = d658e4b13f796a370da27c868c69c2d6f6edf7eab4cda0c2b44cb31f538db75c +LINUX_KERNEL_HASH-4.9.247 = f73aeb0046a94c6cedcc3edc07d5609f1fc64a38c445983a68bf5d84f56acfd6 +LINUX_KERNEL_HASH-4.14.210 = f91851d0b43c39732f9ee3afa1850145aee21e3bc71b3bf4b9a0b8a74dc4fd18 +LINUX_KERNEL_HASH-4.19.161 = 07412995966899dda7842b808937b55884106465545a162d6f31f3f4ebd43c41 remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1))))))) diff --git a/target/linux/bcm27xx/patches-4.19/950-0029-mm-Remove-the-PFN-busy-warning.patch b/target/linux/bcm27xx/patches-4.19/950-0029-mm-Remove-the-PFN-busy-warning.patch index 154e1ef2aa..5fcfc4769e 100644 --- a/target/linux/bcm27xx/patches-4.19/950-0029-mm-Remove-the-PFN-busy-warning.patch +++ b/target/linux/bcm27xx/patches-4.19/950-0029-mm-Remove-the-PFN-busy-warning.patch @@ -14,7 +14,7 @@ Signed-off-by: Eric Anholt --- a/mm/page_alloc.c +++ b/mm/page_alloc.c -@@ -8012,8 +8012,6 @@ int alloc_contig_range(unsigned long sta +@@ -8017,8 +8017,6 @@ int alloc_contig_range(unsigned long sta /* Make sure the range is really isolated. */ if (test_pages_isolated(outer_start, end, false)) { diff --git a/target/linux/bcm27xx/patches-4.19/950-0060-rpi-ft5406-Add-touchscreen-driver-for-pi-LCD-display.patch b/target/linux/bcm27xx/patches-4.19/950-0060-rpi-ft5406-Add-touchscreen-driver-for-pi-LCD-display.patch index 6f7b31e4d0..5cd5b8264a 100644 --- a/target/linux/bcm27xx/patches-4.19/950-0060-rpi-ft5406-Add-touchscreen-driver-for-pi-LCD-display.patch +++ b/target/linux/bcm27xx/patches-4.19/950-0060-rpi-ft5406-Add-touchscreen-driver-for-pi-LCD-display.patch @@ -19,7 +19,7 @@ Signed-off-by: Gerhard de Clercq --- a/drivers/input/touchscreen/Kconfig +++ b/drivers/input/touchscreen/Kconfig -@@ -696,6 +696,13 @@ config TOUCHSCREEN_EDT_FT5X06 +@@ -697,6 +697,13 @@ config TOUCHSCREEN_EDT_FT5X06 To compile this driver as a module, choose M here: the module will be called edt-ft5x06. diff --git a/target/linux/bcm27xx/patches-4.19/950-0620-drm-connector-Fix-drm_mode_create_tv_properties-doc.patch b/target/linux/bcm27xx/patches-4.19/950-0620-drm-connector-Fix-drm_mode_create_tv_properties-doc.patch index 8cc04b78d9..887c7cd249 100644 --- a/target/linux/bcm27xx/patches-4.19/950-0620-drm-connector-Fix-drm_mode_create_tv_properties-doc.patch +++ b/target/linux/bcm27xx/patches-4.19/950-0620-drm-connector-Fix-drm_mode_create_tv_properties-doc.patch @@ -18,7 +18,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20181206142439.10441-2-boris --- a/drivers/gpu/drm/drm_connector.c +++ b/drivers/gpu/drm/drm_connector.c -@@ -1110,7 +1110,7 @@ void drm_hdmi_avi_infoframe_content_type +@@ -1111,7 +1111,7 @@ void drm_hdmi_avi_infoframe_content_type EXPORT_SYMBOL(drm_hdmi_avi_infoframe_content_type); /** diff --git a/target/linux/bcm27xx/patches-4.19/950-0621-drm-connector-Clarify-the-unit-of-TV-margins.patch b/target/linux/bcm27xx/patches-4.19/950-0621-drm-connector-Clarify-the-unit-of-TV-margins.patch index 85b56a3511..5e3c8dfc4c 100644 --- a/target/linux/bcm27xx/patches-4.19/950-0621-drm-connector-Clarify-the-unit-of-TV-margins.patch +++ b/target/linux/bcm27xx/patches-4.19/950-0621-drm-connector-Clarify-the-unit-of-TV-margins.patch @@ -18,7 +18,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20181206142439.10441-3-boris --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h -@@ -346,7 +346,7 @@ int drm_display_info_set_bus_formats(str +@@ -393,7 +393,7 @@ int drm_display_info_set_bus_formats(str /** * struct drm_tv_connector_state - TV connector related states * @subconnector: selected subconnector diff --git a/target/linux/bcm27xx/patches-4.19/950-0622-drm-connector-Allow-creation-of-margin-props-alone.patch b/target/linux/bcm27xx/patches-4.19/950-0622-drm-connector-Allow-creation-of-margin-props-alone.patch index 1b242f46e3..6d1ad50f37 100644 --- a/target/linux/bcm27xx/patches-4.19/950-0622-drm-connector-Allow-creation-of-margin-props-alone.patch +++ b/target/linux/bcm27xx/patches-4.19/950-0622-drm-connector-Allow-creation-of-margin-props-alone.patch @@ -23,7 +23,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20181206142439.10441-4-boris --- a/drivers/gpu/drm/drm_connector.c +++ b/drivers/gpu/drm/drm_connector.c -@@ -1110,6 +1110,70 @@ void drm_hdmi_avi_infoframe_content_type +@@ -1111,6 +1111,70 @@ void drm_hdmi_avi_infoframe_content_type EXPORT_SYMBOL(drm_hdmi_avi_infoframe_content_type); /** @@ -94,7 +94,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20181206142439.10441-4-boris * drm_mode_create_tv_properties - create TV specific connector properties * @dev: DRM device * @num_modes: number of different TV formats (modes) supported -@@ -1155,24 +1219,7 @@ int drm_mode_create_tv_properties(struct +@@ -1156,24 +1220,7 @@ int drm_mode_create_tv_properties(struct /* * Other, TV specific properties: margins & TV modes. */ @@ -122,7 +122,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20181206142439.10441-4-boris dev->mode_config.tv_mode_property = --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h -@@ -1175,9 +1175,11 @@ const char *drm_get_tv_select_name(int v +@@ -1242,9 +1242,11 @@ const char *drm_get_tv_select_name(int v const char *drm_get_content_protection_name(int val); int drm_mode_create_dvi_i_properties(struct drm_device *dev); diff --git a/target/linux/bcm27xx/patches-4.19/950-0636-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch b/target/linux/bcm27xx/patches-4.19/950-0636-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch index e73f91ef36..b686be0a67 100644 --- a/target/linux/bcm27xx/patches-4.19/950-0636-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch +++ b/target/linux/bcm27xx/patches-4.19/950-0636-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch @@ -33,7 +33,7 @@ Signed-off-by: Jonathan Bell #define USB_VENDOR_ID_BELKIN 0x050d #define USB_DEVICE_ID_FLIP_KVM 0x3201 -@@ -1211,6 +1214,9 @@ +@@ -1219,6 +1222,9 @@ #define USB_VENDOR_ID_XAT 0x2505 #define USB_DEVICE_ID_XAT_CSR 0x0220 @@ -53,7 +53,7 @@ Signed-off-by: Jonathan Bell { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE2), HID_QUIRK_ALWAYS_POLL }, -@@ -180,6 +181,7 @@ static const struct hid_device_id hid_qu +@@ -185,6 +186,7 @@ static const struct hid_device_id hid_qu { HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_SIRIUS_BATTERY_FREE_TABLET), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD2, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, diff --git a/target/linux/bcm27xx/patches-4.19/950-0638-drm-connector-Add-documentation-for-drm_cmdline_mode.patch b/target/linux/bcm27xx/patches-4.19/950-0638-drm-connector-Add-documentation-for-drm_cmdline_mode.patch index 16b84bc037..14295a643b 100644 --- a/target/linux/bcm27xx/patches-4.19/950-0638-drm-connector-Add-documentation-for-drm_cmdline_mode.patch +++ b/target/linux/bcm27xx/patches-4.19/950-0638-drm-connector-Add-documentation-for-drm_cmdline_mode.patch @@ -20,7 +20,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/963c893c16c6a25fc469b53c726f --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h -@@ -755,18 +755,100 @@ struct drm_connector_funcs { +@@ -802,18 +802,100 @@ struct drm_connector_funcs { const struct drm_connector_state *state); }; diff --git a/target/linux/bcm27xx/patches-4.19/950-0640-drm-modes-Support-modes-names-on-the-command-line.patch b/target/linux/bcm27xx/patches-4.19/950-0640-drm-modes-Support-modes-names-on-the-command-line.patch index 1cacab25e2..66151af217 100644 --- a/target/linux/bcm27xx/patches-4.19/950-0640-drm-modes-Support-modes-names-on-the-command-line.patch +++ b/target/linux/bcm27xx/patches-4.19/950-0640-drm-modes-Support-modes-names-on-the-command-line.patch @@ -158,7 +158,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/18443e0c3bdbbd16cea4ec63bc7f return true; --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h -@@ -765,6 +765,13 @@ struct drm_connector_funcs { +@@ -812,6 +812,13 @@ struct drm_connector_funcs { */ struct drm_cmdline_mode { /** diff --git a/target/linux/bcm27xx/patches-4.19/950-0641-drm-modes-Allow-to-specify-rotation-and-reflection-o.patch b/target/linux/bcm27xx/patches-4.19/950-0641-drm-modes-Allow-to-specify-rotation-and-reflection-o.patch index 0b2a185441..d4cf847921 100644 --- a/target/linux/bcm27xx/patches-4.19/950-0641-drm-modes-Allow-to-specify-rotation-and-reflection-o.patch +++ b/target/linux/bcm27xx/patches-4.19/950-0641-drm-modes-Allow-to-specify-rotation-and-reflection-o.patch @@ -258,7 +258,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/777da16e42db757c1f5b414b5ca3 return true; --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h -@@ -857,6 +857,16 @@ struct drm_cmdline_mode { +@@ -904,6 +904,16 @@ struct drm_cmdline_mode { * state to one of the DRM_FORCE_* values. */ enum drm_connector_force force; diff --git a/target/linux/bcm27xx/patches-4.19/950-0642-drm-connector-Introduce-a-TV-margins-structure.patch b/target/linux/bcm27xx/patches-4.19/950-0642-drm-connector-Introduce-a-TV-margins-structure.patch index 7c6f415402..4a3564a4d7 100644 --- a/target/linux/bcm27xx/patches-4.19/950-0642-drm-connector-Introduce-a-TV-margins-structure.patch +++ b/target/linux/bcm27xx/patches-4.19/950-0642-drm-connector-Introduce-a-TV-margins-structure.patch @@ -22,7 +22,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/38b773b03f15ec7a135cdf8f7db6 --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h -@@ -344,13 +344,37 @@ int drm_display_info_set_bus_formats(str +@@ -391,13 +391,37 @@ int drm_display_info_set_bus_formats(str unsigned int num_formats); /** @@ -65,7 +65,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/38b773b03f15ec7a135cdf8f7db6 * @mode: TV mode * @brightness: brightness in percent * @contrast: contrast in percent -@@ -361,12 +385,7 @@ int drm_display_info_set_bus_formats(str +@@ -408,12 +432,7 @@ int drm_display_info_set_bus_formats(str */ struct drm_tv_connector_state { enum drm_mode_subconnector subconnector; diff --git a/target/linux/bcm27xx/patches-4.19/950-0643-drm-modes-Parse-overscan-properties.patch b/target/linux/bcm27xx/patches-4.19/950-0643-drm-modes-Parse-overscan-properties.patch index f8de9b5fc3..b8a673d1ba 100644 --- a/target/linux/bcm27xx/patches-4.19/950-0643-drm-modes-Parse-overscan-properties.patch +++ b/target/linux/bcm27xx/patches-4.19/950-0643-drm-modes-Parse-overscan-properties.patch @@ -88,7 +88,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/e481f1628e3768ca49226ec2115c } --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h -@@ -886,6 +886,11 @@ struct drm_cmdline_mode { +@@ -933,6 +933,11 @@ struct drm_cmdline_mode { * DRM_MODE_ROTATE_0 and DRM_MODE_ROTATE_180. */ unsigned int rotation_reflection; diff --git a/target/linux/bcm27xx/patches-4.19/950-0644-drm-atomic-Add-a-function-to-reset-connector-TV-prop.patch b/target/linux/bcm27xx/patches-4.19/950-0644-drm-atomic-Add-a-function-to-reset-connector-TV-prop.patch index 9f509437d8..2605c0c6a4 100644 --- a/target/linux/bcm27xx/patches-4.19/950-0644-drm-atomic-Add-a-function-to-reset-connector-TV-prop.patch +++ b/target/linux/bcm27xx/patches-4.19/950-0644-drm-atomic-Add-a-function-to-reset-connector-TV-prop.patch @@ -26,7 +26,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/84a7b657f09303a2850e1cc79e68 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c -@@ -3737,6 +3737,24 @@ void drm_atomic_helper_connector_reset(s +@@ -3756,6 +3756,24 @@ void drm_atomic_helper_connector_reset(s EXPORT_SYMBOL(drm_atomic_helper_connector_reset); /** diff --git a/target/linux/bcm53xx/patches-4.14/400-mtd-spi-nor-detect-JEDEC-incompatible-w25q128-using-.patch b/target/linux/bcm53xx/patches-4.14/400-mtd-spi-nor-detect-JEDEC-incompatible-w25q128-using-.patch index 446ba6cdcd..ca39986a86 100644 --- a/target/linux/bcm53xx/patches-4.14/400-mtd-spi-nor-detect-JEDEC-incompatible-w25q128-using-.patch +++ b/target/linux/bcm53xx/patches-4.14/400-mtd-spi-nor-detect-JEDEC-incompatible-w25q128-using-.patch @@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki --- a/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c -@@ -1230,6 +1230,18 @@ static const struct flash_info *spi_nor_ +@@ -1240,6 +1240,18 @@ static const struct flash_info *spi_nor_ } dev_err(nor->dev, "unrecognized JEDEC id bytes: %02x, %02x, %02x\n", id[0], id[1], id[2]); diff --git a/target/linux/brcm47xx/patches-4.14/209-b44-register-adm-switch.patch b/target/linux/brcm47xx/patches-4.14/209-b44-register-adm-switch.patch index cdeb1f96e9..be0fd7c6eb 100644 --- a/target/linux/brcm47xx/patches-4.14/209-b44-register-adm-switch.patch +++ b/target/linux/brcm47xx/patches-4.14/209-b44-register-adm-switch.patch @@ -99,7 +99,7 @@ Subject: [PATCH 210/210] b44: register adm switch dev_info(sdev->dev, "could not find PHY at %i, use fixed one\n", bp->phy_addr); -@@ -2480,6 +2548,7 @@ static void b44_remove_one(struct ssb_de +@@ -2481,6 +2549,7 @@ static void b44_remove_one(struct ssb_de unregister_netdev(dev); if (bp->flags & B44_FLAG_EXTERNAL_PHY) b44_unregister_phy_one(bp); diff --git a/target/linux/brcm47xx/patches-4.19/209-b44-register-adm-switch.patch b/target/linux/brcm47xx/patches-4.19/209-b44-register-adm-switch.patch index bc2d2ab90a..ec94f560a5 100644 --- a/target/linux/brcm47xx/patches-4.19/209-b44-register-adm-switch.patch +++ b/target/linux/brcm47xx/patches-4.19/209-b44-register-adm-switch.patch @@ -99,7 +99,7 @@ Subject: [PATCH 210/210] b44: register adm switch dev_info(sdev->dev, "could not find PHY at %i, use fixed one\n", bp->phy_addr); -@@ -2478,6 +2546,7 @@ static void b44_remove_one(struct ssb_de +@@ -2479,6 +2547,7 @@ static void b44_remove_one(struct ssb_de unregister_netdev(dev); if (bp->flags & B44_FLAG_EXTERNAL_PHY) b44_unregister_phy_one(bp); diff --git a/target/linux/generic/backport-4.14/315-v5.10-usbnet-ipeth-fix-connectivity-with-ios-14.patch b/target/linux/generic/backport-4.14/315-v5.10-usbnet-ipeth-fix-connectivity-with-ios-14.patch index bb572b3f21..aebc8752b4 100644 --- a/target/linux/generic/backport-4.14/315-v5.10-usbnet-ipeth-fix-connectivity-with-ios-14.patch +++ b/target/linux/generic/backport-4.14/315-v5.10-usbnet-ipeth-fix-connectivity-with-ios-14.patch @@ -33,7 +33,7 @@ Cc: stable@vger.kernel.org --- a/drivers/net/usb/ipheth.c +++ b/drivers/net/usb/ipheth.c -@@ -59,7 +59,7 @@ +@@ -70,7 +70,7 @@ #define IPHETH_USBINTF_SUBCLASS 253 #define IPHETH_USBINTF_PROTO 1 diff --git a/target/linux/generic/backport-4.14/373-netfilter_actual_sk.patch b/target/linux/generic/backport-4.14/373-netfilter_actual_sk.patch index 21722ceb23..86e4b7aa1c 100644 --- a/target/linux/generic/backport-4.14/373-netfilter_actual_sk.patch +++ b/target/linux/generic/backport-4.14/373-netfilter_actual_sk.patch @@ -52,28 +52,28 @@ Signed-off-by: Aaron Goodman @@ -16,7 +16,7 @@ struct ip_rt_info { u_int32_t mark; }; - + -int ip_route_me_harder(struct net *net, struct sk_buff *skb, unsigned addr_type); +int ip_route_me_harder(struct net *net, struct sock *sk, struct sk_buff *skb, unsigned addr_type); - + struct nf_queue_entry; - + --- a/include/linux/netfilter_ipv6.h +++ b/include/linux/netfilter_ipv6.h @@ -41,7 +41,7 @@ struct nf_ipv6_ops { }; - + #ifdef CONFIG_NETFILTER -int ip6_route_me_harder(struct net *net, struct sk_buff *skb); +int ip6_route_me_harder(struct net *net, struct sock *sk, struct sk_buff *skb); __sum16 nf_ip6_checksum(struct sk_buff *skb, unsigned int hook, unsigned int dataoff, u_int8_t protocol); - + --- a/net/ipv4/netfilter.c +++ b/net/ipv4/netfilter.c @@ -17,17 +17,19 @@ #include - + /* route_me_harder function, used by iptable_nat, iptable_mangle + ip_queue */ -int ip_route_me_harder(struct net *net, struct sk_buff *skb, unsigned int addr_type) +int ip_route_me_harder(struct net *net, struct sock *sk, struct sk_buff *skb, unsigned int addr_type) @@ -87,7 +87,7 @@ Signed-off-by: Aaron Goodman + __u8 flags; struct net_device *dev = skb_dst(skb)->dev; unsigned int hh_len; - + + sk = sk_to_full_sk(sk); + flags = sk ? inet_sk_flowi_flags(sk) : 0; + @@ -106,13 +106,13 @@ Signed-off-by: Aaron Goodman --- a/net/ipv4/netfilter/ipt_SYNPROXY.c +++ b/net/ipv4/netfilter/ipt_SYNPROXY.c @@ -53,7 +53,7 @@ synproxy_send_tcp(struct net *net, - + skb_dst_set_noref(nskb, skb_dst(skb)); nskb->protocol = htons(ETH_P_IP); - if (ip_route_me_harder(net, nskb, RTN_UNSPEC)) + if (ip_route_me_harder(net, nskb->sk, nskb, RTN_UNSPEC)) goto free_nskb; - + if (nfct) { --- a/net/ipv4/netfilter/iptable_mangle.c +++ b/net/ipv4/netfilter/iptable_mangle.c @@ -128,7 +128,7 @@ Signed-off-by: Aaron Goodman --- a/net/ipv4/netfilter/nf_nat_l3proto_ipv4.c +++ b/net/ipv4/netfilter/nf_nat_l3proto_ipv4.c @@ -397,7 +397,7 @@ nf_nat_ipv4_local_fn(void *priv, struct - + if (ct->tuplehash[dir].tuple.dst.u3.ip != ct->tuplehash[!dir].tuple.src.u3.ip) { - err = ip_route_me_harder(state->net, skb, RTN_UNSPEC); @@ -141,11 +141,11 @@ Signed-off-by: Aaron Goodman @@ -129,7 +129,7 @@ void nf_send_reset(struct net *net, stru ip4_dst_hoplimit(skb_dst(nskb))); nf_reject_ip_tcphdr_put(nskb, oldskb, oth); - + - if (ip_route_me_harder(net, nskb, RTN_UNSPEC)) + if (ip_route_me_harder(net, nskb->sk, nskb, RTN_UNSPEC)) goto free_nskb; - + niph = ip_hdr(nskb); --- a/net/ipv4/netfilter/nft_chain_route_ipv4.c +++ b/net/ipv4/netfilter/nft_chain_route_ipv4.c @@ -163,7 +163,7 @@ Signed-off-by: Aaron Goodman @@ -18,10 +18,10 @@ #include #include - + -int ip6_route_me_harder(struct net *net, struct sk_buff *skb) +int ip6_route_me_harder(struct net *net, struct sock *sk_partial, struct sk_buff *skb) { @@ -196,7 +196,7 @@ Signed-off-by: Aaron Goodman --- a/net/ipv6/netfilter/nf_nat_l3proto_ipv6.c +++ b/net/ipv6/netfilter/nf_nat_l3proto_ipv6.c @@ -414,7 +414,7 @@ nf_nat_ipv6_local_fn(void *priv, struct - + if (!nf_inet_addr_cmp(&ct->tuplehash[dir].tuple.dst.u3, &ct->tuplehash[!dir].tuple.src.u3)) { - err = ip6_route_me_harder(state->net, skb); @@ -219,7 +219,7 @@ Signed-off-by: Aaron Goodman +++ b/net/netfilter/ipvs/ip_vs_core.c @@ -713,12 +713,12 @@ static int ip_vs_route_me_harder(struct struct dst_entry *dst = skb_dst(skb); - + if (dst->dev && !(dst->dev->flags & IFF_LOOPBACK) && - ip6_route_me_harder(ipvs->net, skb) != 0) + ip6_route_me_harder(ipvs->net, skb->sk, skb) != 0) @@ -230,5 +230,5 @@ Signed-off-by: Aaron Goodman - ip_route_me_harder(ipvs->net, skb, RTN_LOCAL) != 0) + ip_route_me_harder(ipvs->net, skb->sk, skb, RTN_LOCAL) != 0) return 1; - + return 0; diff --git a/target/linux/generic/backport-4.19/315-v5.10-usbnet-ipeth-fix-connectivity-with-ios-14.patch b/target/linux/generic/backport-4.19/315-v5.10-usbnet-ipeth-fix-connectivity-with-ios-14.patch index bb572b3f21..aebc8752b4 100644 --- a/target/linux/generic/backport-4.19/315-v5.10-usbnet-ipeth-fix-connectivity-with-ios-14.patch +++ b/target/linux/generic/backport-4.19/315-v5.10-usbnet-ipeth-fix-connectivity-with-ios-14.patch @@ -33,7 +33,7 @@ Cc: stable@vger.kernel.org --- a/drivers/net/usb/ipheth.c +++ b/drivers/net/usb/ipheth.c -@@ -59,7 +59,7 @@ +@@ -70,7 +70,7 @@ #define IPHETH_USBINTF_SUBCLASS 253 #define IPHETH_USBINTF_PROTO 1 diff --git a/target/linux/generic/backport-4.9/315-v5.10-usbnet-ipeth-fix-connectivity-with-ios-14.patch b/target/linux/generic/backport-4.9/315-v5.10-usbnet-ipeth-fix-connectivity-with-ios-14.patch index bb572b3f21..aebc8752b4 100644 --- a/target/linux/generic/backport-4.9/315-v5.10-usbnet-ipeth-fix-connectivity-with-ios-14.patch +++ b/target/linux/generic/backport-4.9/315-v5.10-usbnet-ipeth-fix-connectivity-with-ios-14.patch @@ -33,7 +33,7 @@ Cc: stable@vger.kernel.org --- a/drivers/net/usb/ipheth.c +++ b/drivers/net/usb/ipheth.c -@@ -59,7 +59,7 @@ +@@ -70,7 +70,7 @@ #define IPHETH_USBINTF_SUBCLASS 253 #define IPHETH_USBINTF_PROTO 1 diff --git a/target/linux/generic/pending-4.14/479-mtd-spi-nor-add-xtx-xt25f128b.patch b/target/linux/generic/pending-4.14/479-mtd-spi-nor-add-xtx-xt25f128b.patch index 7545cf8427..b18cef0d23 100644 --- a/target/linux/generic/pending-4.14/479-mtd-spi-nor-add-xtx-xt25f128b.patch +++ b/target/linux/generic/pending-4.14/479-mtd-spi-nor-add-xtx-xt25f128b.patch @@ -30,7 +30,7 @@ Signed-off-by: Daniel Golle --- a/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c -@@ -1198,6 +1198,9 @@ static const struct flash_info spi_nor_i +@@ -1208,6 +1208,9 @@ static const struct flash_info spi_nor_i /* XMC (Wuhan Xinxin Semiconductor Manufacturing Corp.) */ { "XM25QH64A", INFO(0x207017, 0, 64 * 1024, 128, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, { "XM25QH128A", INFO(0x207018, 0, 64 * 1024, 256, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, diff --git a/target/linux/generic/pending-4.14/499-mtd-parser-cmdline-Fix-parsing-of-part-names-with-co.patch b/target/linux/generic/pending-4.14/499-mtd-parser-cmdline-Fix-parsing-of-part-names-with-co.patch index 9bb713e780..9fad2663ea 100644 --- a/target/linux/generic/pending-4.14/499-mtd-parser-cmdline-Fix-parsing-of-part-names-with-co.patch +++ b/target/linux/generic/pending-4.14/499-mtd-parser-cmdline-Fix-parsing-of-part-names-with-co.patch @@ -23,11 +23,9 @@ Forwarded: https://patchwork.ozlabs.org/project/linux-mtd/patch/20201122001533.9 Fixes: eb13fa022741 ("mtd: parser: cmdline: Support MTD names containing one or more colons") Signed-off-by: Sven Eckelmann -diff --git a/drivers/mtd/cmdlinepart.c b/drivers/mtd/cmdlinepart.c -index 0625b25620ca766318ea4646a6e3761ff4d3a4cc..22881ea4c132ea5a5ba7aebd025d91bf1cd023af 100644 --- a/drivers/mtd/cmdlinepart.c +++ b/drivers/mtd/cmdlinepart.c -@@ -218,7 +218,7 @@ static int mtdpart_setup_real(char *s) +@@ -228,7 +228,7 @@ static int mtdpart_setup_real(char *s) struct cmdline_mtd_partition *this_mtd; struct mtd_partition *parts; int mtd_id_len, num_parts; @@ -36,7 +34,7 @@ index 0625b25620ca766318ea4646a6e3761ff4d3a4cc..22881ea4c132ea5a5ba7aebd025d91bf /* * Replace the first ';' by a NULL char so strrchr can work -@@ -228,6 +228,13 @@ static int mtdpart_setup_real(char *s) +@@ -238,6 +238,13 @@ static int mtdpart_setup_real(char *s) if (semicol) *semicol = '\0'; @@ -50,7 +48,7 @@ index 0625b25620ca766318ea4646a6e3761ff4d3a4cc..22881ea4c132ea5a5ba7aebd025d91bf mtd_id = s; /* -@@ -237,6 +244,10 @@ static int mtdpart_setup_real(char *s) +@@ -247,6 +254,10 @@ static int mtdpart_setup_real(char *s) */ p = strrchr(s, ':'); diff --git a/target/linux/generic/pending-4.14/607-tcp_bbr-adapt-cwnd-based-on-ack-aggregation-estimation.patch b/target/linux/generic/pending-4.14/607-tcp_bbr-adapt-cwnd-based-on-ack-aggregation-estimation.patch index 30a9705338..2aaafa19d4 100644 --- a/target/linux/generic/pending-4.14/607-tcp_bbr-adapt-cwnd-based-on-ack-aggregation-estimation.patch +++ b/target/linux/generic/pending-4.14/607-tcp_bbr-adapt-cwnd-based-on-ack-aggregation-estimation.patch @@ -458,8 +458,8 @@ Signed-off-by: David S. Miller filter_expired = after(tcp_jiffies32, bbr->min_rtt_stamp + bbr_min_rtt_win_sec * HZ); if (rs->rtt_us >= 0 && -- (rs->rtt_us <= bbr->min_rtt_us || filter_expired)) { -+ (rs->rtt_us <= bbr->min_rtt_us || +- (rs->rtt_us < bbr->min_rtt_us || filter_expired)) { ++ (rs->rtt_us < bbr->min_rtt_us || + (filter_expired && !rs->is_ack_delayed))) { bbr->min_rtt_us = rs->rtt_us; bbr->min_rtt_stamp = tcp_jiffies32; diff --git a/target/linux/generic/pending-4.14/643-net-bridge-support-hardware-flow-table-offload.patch b/target/linux/generic/pending-4.14/643-net-bridge-support-hardware-flow-table-offload.patch index b54d3cb48f..698b0de98c 100644 --- a/target/linux/generic/pending-4.14/643-net-bridge-support-hardware-flow-table-offload.patch +++ b/target/linux/generic/pending-4.14/643-net-bridge-support-hardware-flow-table-offload.patch @@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau #include #include "br_private.h" -@@ -346,6 +350,28 @@ static const struct ethtool_ops br_ethto +@@ -347,6 +351,28 @@ static const struct ethtool_ops br_ethto .get_link = ethtool_op_get_link, }; @@ -49,7 +49,7 @@ Signed-off-by: Felix Fietkau static const struct net_device_ops br_netdev_ops = { .ndo_open = br_dev_open, .ndo_stop = br_dev_stop, -@@ -373,6 +399,9 @@ static const struct net_device_ops br_ne +@@ -374,6 +400,9 @@ static const struct net_device_ops br_ne .ndo_bridge_setlink = br_setlink, .ndo_bridge_dellink = br_dellink, .ndo_features_check = passthru_features_check, diff --git a/target/linux/generic/pending-4.19/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch b/target/linux/generic/pending-4.19/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch index 1a416e7782..a81efbca3f 100644 --- a/target/linux/generic/pending-4.19/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch +++ b/target/linux/generic/pending-4.19/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch @@ -71,7 +71,7 @@ Signed-off-by: Tobias Wolf --- a/mm/page_alloc.c +++ b/mm/page_alloc.c -@@ -6403,7 +6403,7 @@ static void __ref alloc_node_mem_map(str +@@ -6408,7 +6408,7 @@ static void __ref alloc_node_mem_map(str mem_map = NODE_DATA(0)->node_mem_map; #if defined(CONFIG_HAVE_MEMBLOCK_NODE_MAP) || defined(CONFIG_FLATMEM) if (page_to_pfn(mem_map) != pgdat->node_start_pfn) diff --git a/target/linux/generic/pending-4.19/643-net-bridge-support-hardware-flow-table-offload.patch b/target/linux/generic/pending-4.19/643-net-bridge-support-hardware-flow-table-offload.patch index 8b09fabf12..12c72e07d3 100644 --- a/target/linux/generic/pending-4.19/643-net-bridge-support-hardware-flow-table-offload.patch +++ b/target/linux/generic/pending-4.19/643-net-bridge-support-hardware-flow-table-offload.patch @@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau #include #include "br_private.h" -@@ -376,6 +380,28 @@ static const struct ethtool_ops br_ethto +@@ -377,6 +381,28 @@ static const struct ethtool_ops br_ethto .get_link = ethtool_op_get_link, }; @@ -49,7 +49,7 @@ Signed-off-by: Felix Fietkau static const struct net_device_ops br_netdev_ops = { .ndo_open = br_dev_open, .ndo_stop = br_dev_stop, -@@ -403,6 +429,9 @@ static const struct net_device_ops br_ne +@@ -404,6 +430,9 @@ static const struct net_device_ops br_ne .ndo_bridge_setlink = br_setlink, .ndo_bridge_dellink = br_dellink, .ndo_features_check = passthru_features_check, diff --git a/target/linux/generic/pending-4.9/499-mtd-parser-cmdline-Fix-parsing-of-part-names-with-co.patch b/target/linux/generic/pending-4.9/499-mtd-parser-cmdline-Fix-parsing-of-part-names-with-co.patch index 9bb713e780..9fad2663ea 100644 --- a/target/linux/generic/pending-4.9/499-mtd-parser-cmdline-Fix-parsing-of-part-names-with-co.patch +++ b/target/linux/generic/pending-4.9/499-mtd-parser-cmdline-Fix-parsing-of-part-names-with-co.patch @@ -23,11 +23,9 @@ Forwarded: https://patchwork.ozlabs.org/project/linux-mtd/patch/20201122001533.9 Fixes: eb13fa022741 ("mtd: parser: cmdline: Support MTD names containing one or more colons") Signed-off-by: Sven Eckelmann -diff --git a/drivers/mtd/cmdlinepart.c b/drivers/mtd/cmdlinepart.c -index 0625b25620ca766318ea4646a6e3761ff4d3a4cc..22881ea4c132ea5a5ba7aebd025d91bf1cd023af 100644 --- a/drivers/mtd/cmdlinepart.c +++ b/drivers/mtd/cmdlinepart.c -@@ -218,7 +218,7 @@ static int mtdpart_setup_real(char *s) +@@ -228,7 +228,7 @@ static int mtdpart_setup_real(char *s) struct cmdline_mtd_partition *this_mtd; struct mtd_partition *parts; int mtd_id_len, num_parts; @@ -36,7 +34,7 @@ index 0625b25620ca766318ea4646a6e3761ff4d3a4cc..22881ea4c132ea5a5ba7aebd025d91bf /* * Replace the first ';' by a NULL char so strrchr can work -@@ -228,6 +228,13 @@ static int mtdpart_setup_real(char *s) +@@ -238,6 +238,13 @@ static int mtdpart_setup_real(char *s) if (semicol) *semicol = '\0'; @@ -50,7 +48,7 @@ index 0625b25620ca766318ea4646a6e3761ff4d3a4cc..22881ea4c132ea5a5ba7aebd025d91bf mtd_id = s; /* -@@ -237,6 +244,10 @@ static int mtdpart_setup_real(char *s) +@@ -247,6 +254,10 @@ static int mtdpart_setup_real(char *s) */ p = strrchr(s, ':'); diff --git a/target/linux/ipq40xx/patches-4.14/303-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch b/target/linux/ipq40xx/patches-4.14/303-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch index 3b219f46b2..9f3ab496db 100644 --- a/target/linux/ipq40xx/patches-4.14/303-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch +++ b/target/linux/ipq40xx/patches-4.14/303-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch @@ -1,6 +1,6 @@ --- a/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c -@@ -1037,6 +1037,7 @@ static const struct flash_info spi_nor_i +@@ -1047,6 +1047,7 @@ static const struct flash_info spi_nor_i { "mx25l12805d", INFO(0xc22018, 0, 64 * 1024, 256, 0) }, { "mx25l12855e", INFO(0xc22618, 0, 64 * 1024, 256, 0) }, { "mx25l25635e", INFO(0xc22019, 0, 64 * 1024, 512, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, @@ -8,7 +8,7 @@ { "mx25u25635f", INFO(0xc22539, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_4B_OPCODES) }, { "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, 0) }, { "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) }, -@@ -1209,11 +1210,12 @@ static const struct flash_info spi_nor_i +@@ -1219,11 +1220,12 @@ static const struct flash_info spi_nor_i { }, }; @@ -23,7 +23,7 @@ tmp = nor->read_reg(nor, SPINOR_OP_RDID, id, SPI_NOR_MAX_ID_LEN); if (tmp < 0) { -@@ -1224,10 +1226,16 @@ static const struct flash_info *spi_nor_ +@@ -1234,10 +1236,16 @@ static const struct flash_info *spi_nor_ for (tmp = 0; tmp < ARRAY_SIZE(spi_nor_ids) - 1; tmp++) { info = &spi_nor_ids[tmp]; if (info->id_len) { @@ -42,7 +42,7 @@ dev_err(nor->dev, "unrecognized JEDEC id bytes: %02x, %02x, %02x\n", id[0], id[1], id[2]); return ERR_PTR(-ENODEV); -@@ -2687,7 +2695,7 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -2706,7 +2714,7 @@ int spi_nor_scan(struct spi_nor *nor, co info = spi_nor_match_id(name); /* Try to auto-detect if chip name wasn't specified or not found */ if (!info) @@ -51,7 +51,7 @@ if (IS_ERR_OR_NULL(info)) return -ENOENT; -@@ -2698,7 +2706,7 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -2717,7 +2725,7 @@ int spi_nor_scan(struct spi_nor *nor, co if (name && info->id_len) { const struct flash_info *jinfo; diff --git a/target/linux/ipq40xx/patches-4.14/304-spi-nor-add-en25qh16.patch b/target/linux/ipq40xx/patches-4.14/304-spi-nor-add-en25qh16.patch index 2b0ed83824..4db39b45ee 100644 --- a/target/linux/ipq40xx/patches-4.14/304-spi-nor-add-en25qh16.patch +++ b/target/linux/ipq40xx/patches-4.14/304-spi-nor-add-en25qh16.patch @@ -1,6 +1,6 @@ --- a/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c -@@ -955,6 +955,7 @@ static const struct flash_info spi_nor_i +@@ -959,6 +959,7 @@ static const struct flash_info spi_nor_i { "en25p64", INFO(0x1c2017, 0, 64 * 1024, 128, 0) }, { "en25q64", INFO(0x1c3017, 0, 64 * 1024, 128, SECT_4K) }, { "en25q128", INFO(0x1c3018, 0, 64 * 1024, 256, SECT_4K) }, diff --git a/target/linux/layerscape/patches-4.14/301-arch-support-layerscape.patch b/target/linux/layerscape/patches-4.14/301-arch-support-layerscape.patch index 302645e776..27c7d864fa 100644 --- a/target/linux/layerscape/patches-4.14/301-arch-support-layerscape.patch +++ b/target/linux/layerscape/patches-4.14/301-arch-support-layerscape.patch @@ -285,7 +285,7 @@ Signed-off-by: Zhao Qiang #define PAGE_NONE __pgprot(((_PAGE_DEFAULT) & ~PTE_VALID) | PTE_PROT_NONE | PTE_RDONLY | PTE_NG | PTE_PXN | PTE_UXN) --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h -@@ -357,6 +357,11 @@ static inline int pmd_protnone(pmd_t pmd +@@ -365,6 +365,11 @@ static inline int pmd_protnone(pmd_t pmd __pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_DEVICE_nGnRnE) | PTE_PXN | PTE_UXN) #define pgprot_writecombine(prot) \ __pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_NORMAL_NC) | PTE_PXN | PTE_UXN) diff --git a/target/linux/layerscape/patches-4.14/804-i2c-support-layerscape.patch b/target/linux/layerscape/patches-4.14/804-i2c-support-layerscape.patch index 31c686d561..d85f9d1c5f 100644 --- a/target/linux/layerscape/patches-4.14/804-i2c-support-layerscape.patch +++ b/target/linux/layerscape/patches-4.14/804-i2c-support-layerscape.patch @@ -84,7 +84,7 @@ Signed-off-by: Zhang Ying-22455 /* * sorted list of clock divider, register value pairs * taken from table 26-5, p.26-9, Freescale i.MX -@@ -210,6 +263,12 @@ struct imx_i2c_struct { +@@ -211,6 +264,12 @@ struct imx_i2c_struct { struct pinctrl_state *pinctrl_pins_gpio; struct imx_i2c_dma *dma; @@ -97,7 +97,7 @@ Signed-off-by: Zhang Ying-22455 }; static const struct imx_i2c_hwdata imx1_i2c_hwdata = { -@@ -281,8 +340,8 @@ static inline unsigned char imx_i2c_read +@@ -282,8 +341,8 @@ static inline unsigned char imx_i2c_read } /* Functions for DMA support */ @@ -108,7 +108,7 @@ Signed-off-by: Zhang Ying-22455 { struct imx_i2c_dma *dma; struct dma_slave_config dma_sconfig; -@@ -291,11 +350,13 @@ static void i2c_imx_dma_request(struct i +@@ -292,11 +351,13 @@ static void i2c_imx_dma_request(struct i dma = devm_kzalloc(dev, sizeof(*dma), GFP_KERNEL); if (!dma) @@ -126,7 +126,7 @@ Signed-off-by: Zhang Ying-22455 goto fail_al; } -@@ -306,13 +367,15 @@ static void i2c_imx_dma_request(struct i +@@ -307,13 +368,15 @@ static void i2c_imx_dma_request(struct i dma_sconfig.direction = DMA_MEM_TO_DEV; ret = dmaengine_slave_config(dma->chan_tx, &dma_sconfig); if (ret < 0) { @@ -146,7 +146,7 @@ Signed-off-by: Zhang Ying-22455 goto fail_tx; } -@@ -323,7 +386,7 @@ static void i2c_imx_dma_request(struct i +@@ -324,7 +387,7 @@ static void i2c_imx_dma_request(struct i dma_sconfig.direction = DMA_DEV_TO_MEM; ret = dmaengine_slave_config(dma->chan_rx, &dma_sconfig); if (ret < 0) { @@ -155,7 +155,7 @@ Signed-off-by: Zhang Ying-22455 goto fail_rx; } -@@ -332,7 +395,7 @@ static void i2c_imx_dma_request(struct i +@@ -333,7 +396,7 @@ static void i2c_imx_dma_request(struct i dev_info(dev, "using %s (tx) and %s (rx) for DMA transfers\n", dma_chan_name(dma->chan_tx), dma_chan_name(dma->chan_rx)); @@ -164,7 +164,7 @@ Signed-off-by: Zhang Ying-22455 fail_rx: dma_release_channel(dma->chan_rx); -@@ -340,7 +403,8 @@ fail_tx: +@@ -341,7 +404,8 @@ fail_tx: dma_release_channel(dma->chan_tx); fail_al: devm_kfree(dev, dma); @@ -174,7 +174,7 @@ Signed-off-by: Zhang Ying-22455 } static void i2c_imx_dma_callback(void *arg) -@@ -878,6 +942,78 @@ static int i2c_imx_read(struct imx_i2c_s +@@ -890,6 +954,78 @@ static int i2c_imx_read(struct imx_i2c_s return 0; } @@ -253,7 +253,7 @@ Signed-off-by: Zhang Ying-22455 static int i2c_imx_xfer(struct i2c_adapter *adapter, struct i2c_msg *msgs, int num) { -@@ -888,6 +1024,19 @@ static int i2c_imx_xfer(struct i2c_adapt +@@ -900,6 +1036,19 @@ static int i2c_imx_xfer(struct i2c_adapt dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__); @@ -273,7 +273,7 @@ Signed-off-by: Zhang Ying-22455 result = pm_runtime_get_sync(i2c_imx->adapter.dev.parent); if (result < 0) goto out; -@@ -1030,6 +1179,50 @@ static int i2c_imx_init_recovery_info(st +@@ -1042,6 +1191,50 @@ static int i2c_imx_init_recovery_info(st return 0; } @@ -324,7 +324,7 @@ Signed-off-by: Zhang Ying-22455 static u32 i2c_imx_func(struct i2c_adapter *adapter) { return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL -@@ -1085,6 +1278,11 @@ static int i2c_imx_probe(struct platform +@@ -1097,6 +1290,11 @@ static int i2c_imx_probe(struct platform i2c_imx->adapter.dev.of_node = pdev->dev.of_node; i2c_imx->base = base; @@ -336,17 +336,7 @@ Signed-off-by: Zhang Ying-22455 /* Get I2C clock */ i2c_imx->clk = devm_clk_get(&pdev->dev, NULL); if (IS_ERR(i2c_imx->clk)) { -@@ -1104,7 +1302,8 @@ static int i2c_imx_probe(struct platform - pdev->name, i2c_imx); - if (ret) { - dev_err(&pdev->dev, "can't claim irq %d\n", irq); -- goto clk_disable; -+ clk_disable_unprepare(i2c_imx->clk); -+ return ret; - } - - /* Init queue */ -@@ -1151,25 +1350,31 @@ static int i2c_imx_probe(struct platform +@@ -1166,17 +1364,25 @@ static int i2c_imx_probe(struct platform pm_runtime_mark_last_busy(&pdev->dev); pm_runtime_put_autosuspend(&pdev->dev); @@ -373,17 +363,9 @@ Signed-off-by: Zhang Ying-22455 +del_adapter: + i2c_del_adapter(&i2c_imx->adapter); - rpm_disable: - pm_runtime_put_noidle(&pdev->dev); - pm_runtime_disable(&pdev->dev); - pm_runtime_set_suspended(&pdev->dev); - pm_runtime_dont_use_autosuspend(&pdev->dev); - --clk_disable: -- clk_disable_unprepare(i2c_imx->clk); - return ret; - } - + clk_notifier_unregister: + clk_notifier_unregister(i2c_imx->clk, &i2c_imx->clk_change_nb); + free_irq(irq, i2c_imx); --- a/drivers/i2c/muxes/i2c-mux-pca954x.c +++ b/drivers/i2c/muxes/i2c-mux-pca954x.c @@ -85,6 +85,7 @@ struct pca954x { diff --git a/target/linux/layerscape/patches-4.14/812-flexspi-support-layerscape.patch b/target/linux/layerscape/patches-4.14/812-flexspi-support-layerscape.patch index e356101683..7fecaaeaf2 100644 --- a/target/linux/layerscape/patches-4.14/812-flexspi-support-layerscape.patch +++ b/target/linux/layerscape/patches-4.14/812-flexspi-support-layerscape.patch @@ -1504,7 +1504,7 @@ Signed-off-by: Yogesh Gaur +MODULE_LICENSE("GPL v2"); --- a/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c -@@ -269,6 +269,7 @@ static inline int set_4byte(struct spi_n +@@ -271,6 +271,7 @@ static inline int set_4byte(struct spi_n u8 cmd; switch (JEDEC_MFR(info)) { @@ -1512,7 +1512,7 @@ Signed-off-by: Yogesh Gaur case SNOR_MFR_MICRON: /* Some Micron need WREN command; all will accept it */ need_wren = true; -@@ -1044,7 +1045,7 @@ static const struct flash_info spi_nor_i +@@ -1054,7 +1055,7 @@ static const struct flash_info spi_nor_i { "mx66l1g45g", INFO(0xc2201b, 0, 64 * 1024, 2048, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, { "mx66l1g55g", INFO(0xc2261b, 0, 64 * 1024, 2048, SPI_NOR_QUAD_READ) }, @@ -1521,7 +1521,7 @@ Signed-off-by: Yogesh Gaur { "n25q016a", INFO(0x20bb15, 0, 64 * 1024, 32, SECT_4K | SPI_NOR_QUAD_READ) }, { "n25q032", INFO(0x20ba16, 0, 64 * 1024, 64, SPI_NOR_QUAD_READ) }, { "n25q032a", INFO(0x20bb16, 0, 64 * 1024, 64, SPI_NOR_QUAD_READ) }, -@@ -1059,6 +1060,12 @@ static const struct flash_info spi_nor_i +@@ -1069,6 +1070,12 @@ static const struct flash_info spi_nor_i { "n25q00", INFO(0x20ba21, 0, 64 * 1024, 2048, SECT_4K | USE_FSR | SPI_NOR_QUAD_READ | NO_CHIP_ERASE) }, { "n25q00a", INFO(0x20bb21, 0, 64 * 1024, 2048, SECT_4K | USE_FSR | SPI_NOR_QUAD_READ | NO_CHIP_ERASE) }, @@ -1534,7 +1534,7 @@ Signed-off-by: Yogesh Gaur /* PMC */ { "pm25lv512", INFO(0, 0, 32 * 1024, 2, SECT_4K_PMC) }, { "pm25lv010", INFO(0, 0, 32 * 1024, 4, SECT_4K_PMC) }, -@@ -2439,6 +2446,7 @@ static int spi_nor_init_params(struct sp +@@ -2449,6 +2456,7 @@ static int spi_nor_init_params(struct sp params->quad_enable = macronix_quad_enable; break; @@ -1542,7 +1542,7 @@ Signed-off-by: Yogesh Gaur case SNOR_MFR_MICRON: break; -@@ -2757,7 +2765,8 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -2776,7 +2784,8 @@ int spi_nor_scan(struct spi_nor *nor, co mtd->_read = spi_nor_read; /* NOR protection support for STmicro/Micron chips and similar */ diff --git a/target/linux/pistachio/patches-4.14/401-mtd-nor-support-mtd-name-from-device-tree.patch b/target/linux/pistachio/patches-4.14/401-mtd-nor-support-mtd-name-from-device-tree.patch index 065a0b77bc..20482d3765 100644 --- a/target/linux/pistachio/patches-4.14/401-mtd-nor-support-mtd-name-from-device-tree.patch +++ b/target/linux/pistachio/patches-4.14/401-mtd-nor-support-mtd-name-from-device-tree.patch @@ -10,7 +10,7 @@ Signed-off-by: Abhimanyu Vishwakarma --- a/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c -@@ -2671,6 +2671,7 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -2690,6 +2690,7 @@ int spi_nor_scan(struct spi_nor *nor, co struct device *dev = nor->dev; struct mtd_info *mtd = &nor->mtd; struct device_node *np = spi_nor_get_flash_node(nor); @@ -18,7 +18,7 @@ Signed-off-by: Abhimanyu Vishwakarma int ret; int i; -@@ -2746,7 +2747,12 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -2765,7 +2766,12 @@ int spi_nor_scan(struct spi_nor *nor, co spi_nor_wait_till_ready(nor); } diff --git a/target/linux/ramips/patches-4.14/0053-mtd-spi-nor-add-w25q256-3b-mode-switch.patch b/target/linux/ramips/patches-4.14/0053-mtd-spi-nor-add-w25q256-3b-mode-switch.patch index aa2fb60a2b..e940420f4e 100644 --- a/target/linux/ramips/patches-4.14/0053-mtd-spi-nor-add-w25q256-3b-mode-switch.patch +++ b/target/linux/ramips/patches-4.14/0053-mtd-spi-nor-add-w25q256-3b-mode-switch.patch @@ -13,18 +13,19 @@ Signed-off-by: Felix Fietkau --- --- a/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c -@@ -89,6 +89,10 @@ struct flash_info { +@@ -89,7 +89,10 @@ struct flash_info { #define NO_CHIP_ERASE BIT(12) /* Chip does not support chip erase */ #define SPI_NOR_SKIP_SFDP BIT(13) /* Skip parsing of SFDP tables */ #define USE_CLSR BIT(14) /* use CLSR command */ +- +#define SPI_NOR_4B_READ_OP BIT(15) /* + * Like SPI_NOR_4B_OPCODES, but for read + * op code only. + */ + int (*quad_enable)(struct spi_nor *nor); }; - #define JEDEC_MFR(info) ((info)->id[0]) -@@ -240,6 +244,15 @@ static inline u8 spi_nor_convert_3to4_er +@@ -242,6 +245,15 @@ static inline u8 spi_nor_convert_3to4_er ARRAY_SIZE(spi_nor_3to4_erase)); } @@ -40,7 +41,7 @@ Signed-off-by: Felix Fietkau static void spi_nor_set_4byte_opcodes(struct spi_nor *nor, const struct flash_info *info) { -@@ -467,6 +480,36 @@ static int spi_nor_erase_sector(struct s +@@ -469,6 +481,36 @@ static int spi_nor_erase_sector(struct s return nor->write_reg(nor, nor->erase_opcode, buf, nor->addr_width); } @@ -77,7 +78,7 @@ Signed-off-by: Felix Fietkau /* * Erase an address range on the nor chip. The address range may extend * one or more erase sectors. Return an error is there is a problem erasing. -@@ -492,6 +535,10 @@ static int spi_nor_erase(struct mtd_info +@@ -494,6 +536,10 @@ static int spi_nor_erase(struct mtd_info if (ret) return ret; @@ -88,7 +89,7 @@ Signed-off-by: Felix Fietkau /* whole-chip erase? */ if (len == mtd->size && !(nor->flags & SNOR_F_NO_OP_CHIP_ERASE)) { unsigned long timeout; -@@ -542,6 +589,7 @@ static int spi_nor_erase(struct mtd_info +@@ -544,6 +590,7 @@ static int spi_nor_erase(struct mtd_info write_disable(nor); erase_err: @@ -96,7 +97,7 @@ Signed-off-by: Felix Fietkau spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_ERASE); instr->state = ret ? MTD_ERASE_FAILED : MTD_ERASE_DONE; -@@ -834,7 +882,9 @@ static int spi_nor_lock(struct mtd_info +@@ -836,7 +883,9 @@ static int spi_nor_lock(struct mtd_info if (ret) return ret; @@ -106,7 +107,7 @@ Signed-off-by: Felix Fietkau spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_UNLOCK); return ret; -@@ -849,7 +899,9 @@ static int spi_nor_unlock(struct mtd_inf +@@ -851,7 +900,9 @@ static int spi_nor_unlock(struct mtd_inf if (ret) return ret; @@ -116,7 +117,7 @@ Signed-off-by: Felix Fietkau spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_LOCK); return ret; -@@ -1182,7 +1234,7 @@ static const struct flash_info spi_nor_i +@@ -1192,7 +1243,7 @@ static const struct flash_info spi_nor_i { "w25q80", INFO(0xef5014, 0, 64 * 1024, 16, SECT_4K) }, { "w25q80bl", INFO(0xef4014, 0, 64 * 1024, 16, SECT_4K) }, { "w25q128", INFO(0xef4018, 0, 64 * 1024, 256, SECT_4K) }, @@ -125,7 +126,7 @@ Signed-off-by: Felix Fietkau { "w25m512jv", INFO(0xef7119, 0, 64 * 1024, 1024, SECT_4K | SPI_NOR_QUAD_READ | SPI_NOR_DUAL_READ) }, -@@ -1245,6 +1297,9 @@ static int spi_nor_read(struct mtd_info +@@ -1255,6 +1306,9 @@ static int spi_nor_read(struct mtd_info if (ret) return ret; @@ -135,7 +136,7 @@ Signed-off-by: Felix Fietkau while (len) { loff_t addr = from; -@@ -1269,6 +1324,18 @@ static int spi_nor_read(struct mtd_info +@@ -1279,6 +1333,18 @@ static int spi_nor_read(struct mtd_info ret = 0; read_err: @@ -154,7 +155,7 @@ Signed-off-by: Felix Fietkau spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_READ); return ret; } -@@ -1370,6 +1437,10 @@ static int spi_nor_write(struct mtd_info +@@ -1380,6 +1446,10 @@ static int spi_nor_write(struct mtd_info if (ret) return ret; @@ -165,7 +166,7 @@ Signed-off-by: Felix Fietkau for (i = 0; i < len; ) { ssize_t written; loff_t addr = to + i; -@@ -1410,6 +1481,7 @@ static int spi_nor_write(struct mtd_info +@@ -1420,6 +1490,7 @@ static int spi_nor_write(struct mtd_info } write_err: @@ -173,7 +174,7 @@ Signed-off-by: Felix Fietkau spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_WRITE); return ret; } -@@ -2826,8 +2898,10 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -2845,8 +2916,10 @@ int spi_nor_scan(struct spi_nor *nor, co } else if (mtd->size > 0x1000000) { /* enable 4-byte addressing if the device exceeds 16MiB */ nor->addr_width = 4; diff --git a/target/linux/ramips/patches-4.14/0054-mtd-spi-nor-w25q256-respect-default-mode.patch b/target/linux/ramips/patches-4.14/0054-mtd-spi-nor-w25q256-respect-default-mode.patch index a686937989..70d050fc71 100644 --- a/target/linux/ramips/patches-4.14/0054-mtd-spi-nor-w25q256-respect-default-mode.patch +++ b/target/linux/ramips/patches-4.14/0054-mtd-spi-nor-w25q256-respect-default-mode.patch @@ -1,6 +1,6 @@ --- a/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c -@@ -142,20 +142,29 @@ static int read_fsr(struct spi_nor *nor) +@@ -143,20 +143,29 @@ static int read_fsr(struct spi_nor *nor) * location. Return the configuration register value. * Returns negative if error occurred. */ @@ -33,7 +33,7 @@ /* * Write status register 1 byte * Returns negative if error occurred. -@@ -2898,9 +2907,16 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -2916,9 +2925,16 @@ int spi_nor_scan(struct spi_nor *nor, co } else if (mtd->size > 0x1000000) { /* enable 4-byte addressing if the device exceeds 16MiB */ nor->addr_width = 4; diff --git a/target/linux/ramips/patches-4.14/302-spi-nor-add-gd25q512.patch b/target/linux/ramips/patches-4.14/302-spi-nor-add-gd25q512.patch index 836eec4f1e..ca39abbefa 100644 --- a/target/linux/ramips/patches-4.14/302-spi-nor-add-gd25q512.patch +++ b/target/linux/ramips/patches-4.14/302-spi-nor-add-gd25q512.patch @@ -1,6 +1,6 @@ --- a/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c -@@ -1076,6 +1076,11 @@ static const struct flash_info spi_nor_i +@@ -1075,6 +1075,11 @@ static const struct flash_info spi_nor_i SPI_NOR_4B_OPCODES | SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB) .quad_enable = macronix_quad_enable, }, diff --git a/target/linux/ramips/patches-4.14/304-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch b/target/linux/ramips/patches-4.14/304-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch index 8b59a106e1..7d6631bbab 100644 --- a/target/linux/ramips/patches-4.14/304-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch +++ b/target/linux/ramips/patches-4.14/304-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch @@ -10,7 +10,7 @@ For reference see: --- a/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c -@@ -1103,6 +1103,7 @@ static const struct flash_info spi_nor_i +@@ -1112,6 +1112,7 @@ static const struct flash_info spi_nor_i { "mx25l12805d", INFO(0xc22018, 0, 64 * 1024, 256, 0) }, { "mx25l12855e", INFO(0xc22618, 0, 64 * 1024, 256, 0) }, { "mx25l25635e", INFO(0xc22019, 0, 64 * 1024, 512, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, @@ -18,7 +18,7 @@ For reference see: { "mx25u25635f", INFO(0xc22539, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_4B_OPCODES) }, { "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, 0) }, { "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) }, -@@ -1275,11 +1276,12 @@ static const struct flash_info spi_nor_i +@@ -1284,11 +1285,12 @@ static const struct flash_info spi_nor_i { }, }; @@ -33,7 +33,7 @@ For reference see: tmp = nor->read_reg(nor, SPINOR_OP_RDID, id, SPI_NOR_MAX_ID_LEN); if (tmp < 0) { -@@ -1290,10 +1292,16 @@ static const struct flash_info *spi_nor_ +@@ -1299,10 +1301,16 @@ static const struct flash_info *spi_nor_ for (tmp = 0; tmp < ARRAY_SIZE(spi_nor_ids) - 1; tmp++) { info = &spi_nor_ids[tmp]; if (info->id_len) { @@ -52,7 +52,7 @@ For reference see: dev_err(nor->dev, "unrecognized JEDEC id bytes: %02x, %02x, %02x\n", id[0], id[1], id[2]); return ERR_PTR(-ENODEV); -@@ -2773,7 +2781,7 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -2791,7 +2799,7 @@ int spi_nor_scan(struct spi_nor *nor, co info = spi_nor_match_id(name); /* Try to auto-detect if chip name wasn't specified or not found */ if (!info) @@ -61,7 +61,7 @@ For reference see: if (IS_ERR_OR_NULL(info)) return -ENOENT; -@@ -2784,7 +2792,7 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -2802,7 +2810,7 @@ int spi_nor_scan(struct spi_nor *nor, co if (name && info->id_len) { const struct flash_info *jinfo;