endif
LINUX_VERSION-4.14 = .187
-LINUX_VERSION-4.19 = .123
+LINUX_VERSION-4.19 = .131
LINUX_VERSION-5.4 = .48
LINUX_KERNEL_HASH-4.14.187 = 5b223475eaeea196aa7e127d3f253bca5c35d8afdc72ca75230ce1ecdd1454bd
-LINUX_KERNEL_HASH-4.19.123 = a79914d31a8d8c6b0e2bb0f2b143d615fe8a6c4dd2e0f36e97aa20efd69a993f
+LINUX_KERNEL_HASH-4.19.131 = 19dfb9f6cc4ba30104b65dcce7d78240a4ae188cb366747d5f8eae35e98964ba
LINUX_KERNEL_HASH-5.4.48 = bf20ddafcd04c114d34654bb10d1eb74f1864f3d14b676c6f0d42d60bbcf1d53
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
--- a/arch/powerpc/platforms/4xx/pci.c
+++ b/arch/powerpc/platforms/4xx/pci.c
-@@ -1905,9 +1905,9 @@ static void __init ppc4xx_configure_pcie
+@@ -1903,9 +1903,9 @@ static void __init ppc4xx_configure_pcie
* if it works
*/
out_le32(mbase + PECFG_PIM0LAL, 0x00000000);
goto err_free_buf;
}
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 20, 0)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 130)
nand->dummy_controller.ops = &ar934x_nfc_controller_ops;
ret = nand_scan(mtd, 1);
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(4, 20, 0)
+ nand->dummy_controller.ops = &ar934x_nfc_controller_ops;
+ ret = nand_scan(nand, 1);
#else
nand->legacy.dummy_controller.ops = &ar934x_nfc_controller_ops;
ret = nand_scan(nand, 1);
nfc = platform_get_drvdata(pdev);
if (nfc) {
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 20, 0)
- mtd = ar934x_nfc_to_mtd(nfc);
- nand_release(mtd);
-#else
nand_release(&nfc->nand_chip);
-#endif
ar934x_nfc_free_buf(nfc);
}
nand->chip.dev_ready = rb4xx_nand_dev_ready;
nand->chip.chip_delay = 25;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,19,130)
ret = nand_scan(mtd, 1);
+#else
+ ret = nand_scan(&nand->chip, 1);
+#endif
#else
nand->chip.legacy.read_byte = rb4xx_nand_read_byte;
nand->chip.legacy.write_buf = rb4xx_nand_write_buf;
ret = mtd_device_register(mtd, NULL, 0);
if (ret) {
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,20,0)
- nand_release(mtd);
-#else
nand_release(&nand->chip);
-#endif
return ret;
}
{
struct rb4xx_nand *nand = platform_get_drvdata(pdev);
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,20,0)
- nand_release(nand_to_mtd(&nand->chip));
-#else
nand_release(&nand->chip);
-#endif
return 0;
}
--- a/drivers/usb/host/ehci-platform.c
+++ b/drivers/usb/host/ehci-platform.c
-@@ -161,6 +161,11 @@ static int ehci_platform_probe(struct pl
+@@ -271,6 +271,11 @@ static int ehci_platform_probe(struct pl
ehci = hcd_to_ehci(hcd);
if (pdata == &ehci_platform_defaults && dev->dev.of_node) {
case IPV6_2292HOPOPTS:
--- a/net/ipv6/ip6_gre.c
+++ b/net/ipv6/ip6_gre.c
-@@ -452,7 +452,7 @@ static void ip6gre_err(struct sk_buff *s
+@@ -455,7 +455,7 @@ static void ip6gre_err(struct sk_buff *s
return;
ipv6h = (const struct ipv6hdr *)skb->data;
greh = (const struct gre_base_hdr *)(skb->data + offset);
EXPORT_SYMBOL(xfrm_parse_spi);
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
-@@ -3896,14 +3896,16 @@ static bool tcp_parse_aligned_timestamp(
+@@ -3906,14 +3906,16 @@ static bool tcp_parse_aligned_timestamp(
{
const __be32 *ptr = (const __be32 *)(th + 1);
--- a/arch/mips/bcm47xx/board.c
+++ b/arch/mips/bcm47xx/board.c
-@@ -160,6 +160,7 @@ struct bcm47xx_board_type_list1 bcm47xx_board_list_board_id[] __initconst = {
+@@ -160,6 +160,7 @@ struct bcm47xx_board_type_list1 bcm47xx_
{{BCM47XX_BOARD_LUXUL_XVW_P30_V1, "Luxul XVW-P30 V1"}, "luxul_xvwp30_v1"},
{{BCM47XX_BOARD_LUXUL_XWR_600_V1, "Luxul XWR-600 V1"}, "luxul_xwr600_v1"},
{{BCM47XX_BOARD_LUXUL_XWR_1750_V1, "Luxul XWR-1750 V1"}, "luxul_xwr1750_v1"},
{{BCM47XX_BOARD_NETGEAR_WGR614_V10, "Netgear WGR614 V10"}, "U12H139T01_NETGEAR"},
--- a/arch/mips/bcm47xx/buttons.c
+++ b/arch/mips/bcm47xx/buttons.c
-@@ -384,6 +384,13 @@ bcm47xx_buttons_motorola_wr850gv2v3[] __initconst = {
-
+@@ -385,6 +385,13 @@ bcm47xx_buttons_motorola_wr850gv2v3[] __
/* Netgear */
-
-+static const struct gpio_keys_button
+
+ static const struct gpio_keys_button
+bcm47xx_buttons_netgear_r6200_v1[] __initconst = {
+ BCM47XX_GPIO_KEY(2, KEY_RFKILL),
+ BCM47XX_GPIO_KEY(3, KEY_RESTART),
+ BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON),
+};
+
- static const struct gpio_keys_button
++static const struct gpio_keys_button
bcm47xx_buttons_netgear_wndr3400v1[] __initconst = {
BCM47XX_GPIO_KEY(4, KEY_RESTART),
-@@ -664,6 +671,9 @@ int __init bcm47xx_buttons_register(void)
+ BCM47XX_GPIO_KEY(6, KEY_WPS_BUTTON),
+@@ -664,6 +671,9 @@ int __init bcm47xx_buttons_register(void
err = bcm47xx_copy_bdata(bcm47xx_buttons_motorola_wr850gv2v3);
break;
-
+
+ case BCM47XX_BOARD_NETGEAR_R6200_V1:
+ err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_r6200_v1);
+ break;
@@ -98,6 +98,7 @@ enum bcm47xx_board {
BCM47XX_BOARD_MOTOROLA_WR850GP,
BCM47XX_BOARD_MOTOROLA_WR850GV2V3,
-
+
+ BCM47XX_BOARD_NETGEAR_R6200_V1,
BCM47XX_BOARD_NETGEAR_WGR614V8,
BCM47XX_BOARD_NETGEAR_WGR614V9,
#include "b53_regs.h"
#include "b53_priv.h"
-@@ -1579,6 +1580,28 @@ static int b53_switch_init(struct b53_de
+@@ -1587,6 +1588,28 @@ static int b53_switch_init(struct b53_de
return ret;
}
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
-@@ -2634,7 +2634,8 @@ static void pcie_write_mrrs(struct pci_d
+@@ -2655,7 +2655,8 @@ static void pcie_write_mrrs(struct pci_d
* In the "safe" case, do not configure the MRRS. There appear to be
* issues with setting MRRS to 0 on a number of devices.
*/
#define INADDR_ANY ((unsigned long int) 0x00000000)
--- a/net/ipv4/devinet.c
+++ b/net/ipv4/devinet.c
-@@ -954,7 +954,7 @@ static int inet_abc_len(__be32 addr)
+@@ -955,7 +955,7 @@ static int inet_abc_len(__be32 addr)
{
int rc = -1; /* Something else, probably a multicast. */
rc = 0;
else {
__u32 haddr = ntohl(addr);
-@@ -965,6 +965,8 @@ static int inet_abc_len(__be32 addr)
+@@ -966,6 +966,8 @@ static int inet_abc_len(__be32 addr)
rc = 16;
else if (IN_CLASSC(haddr))
rc = 24;
q->flows[reduced_hash].dsthost = dsthost_idx;
}
}
-@@ -1793,20 +1797,30 @@ static s32 cake_enqueue(struct sk_buff *
+@@ -1817,20 +1821,30 @@ static s32 cake_enqueue(struct sk_buff *
b->sparse_flow_count++;
if (cake_dsrc(q->flow_mode))
}
if (q->buffer_used > q->buffer_max_used)
-@@ -1974,23 +1988,8 @@ retry:
+@@ -1998,23 +2012,8 @@ retry:
dsthost = &b->hosts[flow->dsthost];
host_load = 1;
/* Keep all flows with deficits out of the sparse and decaying
* rotations. No non-empty flow can go into the decaying
* rotation, so they can't get deficits
-@@ -1999,6 +1998,13 @@ retry:
+@@ -2023,6 +2022,13 @@ retry:
if (flow->head) {
b->sparse_flow_count--;
b->bulk_flow_count++;
flow->set = CAKE_SET_BULK;
} else {
/* we've moved it to the bulk rotation for
-@@ -2008,6 +2014,22 @@ retry:
+@@ -2032,6 +2038,22 @@ retry:
flow->set = CAKE_SET_SPARSE_WAIT;
}
}
goto retry;
}
-@@ -2028,6 +2050,13 @@ retry:
+@@ -2052,6 +2074,13 @@ retry:
&b->decaying_flows);
if (flow->set == CAKE_SET_BULK) {
b->bulk_flow_count--;
b->decaying_flow_count++;
} else if (flow->set == CAKE_SET_SPARSE ||
flow->set == CAKE_SET_SPARSE_WAIT) {
-@@ -2041,14 +2070,19 @@ retry:
+@@ -2065,14 +2094,19 @@ retry:
if (flow->set == CAKE_SET_SPARSE ||
flow->set == CAKE_SET_SPARSE_WAIT)
b->sparse_flow_count--;
};
/* COBALT operates the Codel and BLUE algorithms in parallel, in order to
-@@ -2623,6 +2624,13 @@ static int cake_change(struct Qdisc *sch
+@@ -2647,6 +2648,13 @@ static int cake_change(struct Qdisc *sch
q->rate_flags &= ~CAKE_FLAG_SPLIT_GSO;
}
if (q->tins) {
sch_tree_lock(sch);
cake_reconfigure(sch);
-@@ -2782,6 +2790,10 @@ static int cake_dump(struct Qdisc *sch,
+@@ -2806,6 +2814,10 @@ static int cake_dump(struct Qdisc *sch,
!!(q->rate_flags & CAKE_FLAG_SPLIT_GSO)))
goto nla_put_failure;
};
/* COBALT operates the Codel and BLUE algorithms in parallel, in order to
-@@ -1554,7 +1556,7 @@ static struct cake_tin_data *cake_select
+@@ -1573,7 +1575,7 @@ static struct cake_tin_data *cake_select
struct sk_buff *skb)
{
struct cake_sched_data *q = qdisc_priv(sch);
- u32 tin;
+ u32 tin, mark;
+ bool wash;
u8 dscp;
- /* Tin selection: Default to diffserv-based selection, allow overriding
-@@ -1562,6 +1564,7 @@ static struct cake_tin_data *cake_select
- */
- dscp = cake_handle_diffserv(skb,
- q->rate_flags & CAKE_FLAG_WASH);
+@@ -1584,6 +1586,7 @@ static struct cake_tin_data *cake_select
+ wash = !!(q->rate_flags & CAKE_FLAG_WASH);
+ if (wash)
+ dscp = cake_handle_diffserv(skb, wash);
+ mark = (skb->mark & q->fwmark_mask) >> q->fwmark_shft;
if (q->tin_mode == CAKE_DIFFSERV_BESTEFFORT)
tin = 0;
-@@ -2178,6 +2181,7 @@ static const struct nla_policy cake_poli
+@@ -2202,6 +2205,7 @@ static const struct nla_policy cake_poli
[TCA_CAKE_MPU] = { .type = NLA_U32 },
[TCA_CAKE_INGRESS] = { .type = NLA_U32 },
[TCA_CAKE_ACK_FILTER] = { .type = NLA_U32 },
};
static void cake_set_rate(struct cake_tin_data *b, u64 rate, u32 mtu,
-@@ -2625,10 +2629,8 @@ static int cake_change(struct Qdisc *sch
+@@ -2649,10 +2653,8 @@ static int cake_change(struct Qdisc *sch
}
if (tb[TCA_CAKE_FWMARK]) {
}
if (q->tins) {
-@@ -2790,8 +2792,7 @@ static int cake_dump(struct Qdisc *sch,
+@@ -2814,8 +2816,7 @@ static int cake_dump(struct Qdisc *sch,
!!(q->rate_flags & CAKE_FLAG_SPLIT_GSO)))
goto nla_put_failure;
s32 tin_deficit;
u32 tin_backlog;
u32 tin_dropped;
-@@ -1916,7 +1915,7 @@ begin:
+@@ -1940,7 +1939,7 @@ begin:
while (b->tin_deficit < 0 ||
!(b->sparse_flow_count + b->bulk_flow_count)) {
if (b->tin_deficit <= 0)
if (b->sparse_flow_count + b->bulk_flow_count)
empty = false;
-@@ -2237,8 +2236,7 @@ static int cake_config_besteffort(struct
+@@ -2261,8 +2260,7 @@ static int cake_config_besteffort(struct
cake_set_rate(b, rate, mtu,
us_to_ns(q->target), us_to_ns(q->interval));
return 0;
}
-@@ -2249,8 +2247,7 @@ static int cake_config_precedence(struct
+@@ -2273,8 +2271,7 @@ static int cake_config_precedence(struct
struct cake_sched_data *q = qdisc_priv(sch);
u32 mtu = psched_mtu(qdisc_dev(sch));
u64 rate = q->rate_bps;
u32 i;
q->tin_cnt = 8;
-@@ -2263,18 +2260,14 @@ static int cake_config_precedence(struct
+@@ -2287,18 +2284,14 @@ static int cake_config_precedence(struct
cake_set_rate(b, rate, mtu, us_to_ns(q->target),
us_to_ns(q->interval));
}
return 0;
-@@ -2343,8 +2336,7 @@ static int cake_config_diffserv8(struct
+@@ -2367,8 +2360,7 @@ static int cake_config_diffserv8(struct
struct cake_sched_data *q = qdisc_priv(sch);
u32 mtu = psched_mtu(qdisc_dev(sch));
u64 rate = q->rate_bps;
u32 i;
q->tin_cnt = 8;
-@@ -2360,18 +2352,14 @@ static int cake_config_diffserv8(struct
+@@ -2384,18 +2376,14 @@ static int cake_config_diffserv8(struct
cake_set_rate(b, rate, mtu, us_to_ns(q->target),
us_to_ns(q->interval));
}
return 0;
-@@ -2410,17 +2398,11 @@ static int cake_config_diffserv4(struct
+@@ -2434,17 +2422,11 @@ static int cake_config_diffserv4(struct
cake_set_rate(&q->tins[3], rate >> 2, mtu,
us_to_ns(q->target), us_to_ns(q->interval));
return 0;
}
-@@ -2451,15 +2433,10 @@ static int cake_config_diffserv3(struct
+@@ -2475,15 +2457,10 @@ static int cake_config_diffserv3(struct
cake_set_rate(&q->tins[2], rate >> 2, mtu,
us_to_ns(q->target), us_to_ns(q->interval));
--- a/net/sched/sch_cake.c
+++ b/net/sched/sch_cake.c
-@@ -2180,6 +2180,7 @@ static const struct nla_policy cake_poli
+@@ -2204,6 +2204,7 @@ static const struct nla_policy cake_poli
[TCA_CAKE_MPU] = { .type = NLA_U32 },
[TCA_CAKE_INGRESS] = { .type = NLA_U32 },
[TCA_CAKE_ACK_FILTER] = { .type = NLA_U32 },
+++ /dev/null
-From 9208d2863ac689a563b92f2161d8d1e7127d0add Mon Sep 17 00:00:00 2001
-From: Ilya Ponetayev <i.ponetaev@ndmsystems.com>
-Date: Thu, 25 Jun 2020 22:12:07 +0200
-Subject: [PATCH] sch_cake: don't try to reallocate or unshare skb
- unconditionally
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-cake_handle_diffserv() tries to linearize mac and network header parts of
-skb and to make it writable unconditionally. In some cases it leads to full
-skb reallocation, which reduces throughput and increases CPU load. Some
-measurements of IPv4 forward + NAPT on MIPS router with 580 MHz single-core
-CPU was conducted. It appears that on kernel 4.9 skb_try_make_writable()
-reallocates skb, if skb was allocated in ethernet driver via so-called
-'build skb' method from page cache (it was discovered by strange increase
-of kmalloc-2048 slab at first).
-
-Obtain DSCP value via read-only skb_header_pointer() call, and leave
-linearization only for DSCP bleaching or ECN CE setting. And, as an
-additional optimisation, skip diffserv parsing entirely if it is not needed
-by the current configuration.
-
-Fixes: c87b4ecdbe8d ("sch_cake: Make sure we can write the IP header before changing DSCP bits")
-Signed-off-by: Ilya Ponetayev <i.ponetaev@ndmsystems.com>
-[ fix a few style issues, reflow commit message ]
-Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
----
- net/sched/sch_cake.c | 41 ++++++++++++++++++++++++++++++-----------
- 1 file changed, 30 insertions(+), 11 deletions(-)
-
---- a/net/sched/sch_cake.c
-+++ b/net/sched/sch_cake.c
-@@ -1553,30 +1553,49 @@ static unsigned int cake_drop(struct Qdi
-
- static u8 cake_handle_diffserv(struct sk_buff *skb, u16 wash)
- {
-- int wlen = skb_network_offset(skb);
-+ const int offset = skb_network_offset(skb);
-+ u16 *buf, buf_;
- u8 dscp;
-
- switch (tc_skb_protocol(skb)) {
- case htons(ETH_P_IP):
-- wlen += sizeof(struct iphdr);
-- if (!pskb_may_pull(skb, wlen) ||
-- skb_try_make_writable(skb, wlen))
-+ buf = skb_header_pointer(skb, offset, sizeof(buf_), &buf_);
-+ if (unlikely(!buf))
- return 0;
-
-- dscp = ipv4_get_dsfield(ip_hdr(skb)) >> 2;
-- if (wash && dscp)
-+ /* ToS is in the second byte of iphdr */
-+ dscp = ipv4_get_dsfield((struct iphdr *)buf) >> 2;
-+
-+ if (wash && dscp) {
-+ const int wlen = offset + sizeof(struct iphdr);
-+
-+ if (!pskb_may_pull(skb, wlen) ||
-+ skb_try_make_writable(skb, wlen))
-+ return 0;
-+
- ipv4_change_dsfield(ip_hdr(skb), INET_ECN_MASK, 0);
-+ }
-+
- return dscp;
-
- case htons(ETH_P_IPV6):
-- wlen += sizeof(struct ipv6hdr);
-- if (!pskb_may_pull(skb, wlen) ||
-- skb_try_make_writable(skb, wlen))
-+ buf = skb_header_pointer(skb, offset, sizeof(buf_), &buf_);
-+ if (unlikely(!buf))
- return 0;
-
-- dscp = ipv6_get_dsfield(ipv6_hdr(skb)) >> 2;
-- if (wash && dscp)
-+ /* Traffic class is in the first and second bytes of ipv6hdr */
-+ dscp = ipv6_get_dsfield((struct ipv6hdr *)buf) >> 2;
-+
-+ if (wash && dscp) {
-+ const int wlen = offset + sizeof(struct ipv6hdr);
-+
-+ if (!pskb_may_pull(skb, wlen) ||
-+ skb_try_make_writable(skb, wlen))
-+ return 0;
-+
- ipv6_change_dsfield(ipv6_hdr(skb), INET_ECN_MASK, 0);
-+ }
-+
- return dscp;
-
- case htons(ETH_P_ARP):
+++ /dev/null
-From 8c95eca0bb8c4bd2231a0d581f1ad0d50c90488c Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= <toke@redhat.com>
-Date: Thu, 25 Jun 2020 22:12:08 +0200
-Subject: [PATCH] sch_cake: don't call diffserv parsing code when it is not
- needed
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-As a further optimisation of the diffserv parsing codepath, we can skip it
-entirely if CAKE is configured to neither use diffserv-based
-classification, nor to zero out the diffserv bits.
-
-Fixes: c87b4ecdbe8d ("sch_cake: Make sure we can write the IP header before changing DSCP bits")
-Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
----
- net/sched/sch_cake.c | 13 +++++++++----
- 1 file changed, 9 insertions(+), 4 deletions(-)
-
---- a/net/sched/sch_cake.c
-+++ b/net/sched/sch_cake.c
-@@ -1551,7 +1551,7 @@ static unsigned int cake_drop(struct Qdi
- return idx + (tin << 16);
- }
-
--static u8 cake_handle_diffserv(struct sk_buff *skb, u16 wash)
-+static u8 cake_handle_diffserv(struct sk_buff *skb, bool wash)
- {
- const int offset = skb_network_offset(skb);
- u16 *buf, buf_;
-@@ -1612,14 +1612,17 @@ static struct cake_tin_data *cake_select
- {
- struct cake_sched_data *q = qdisc_priv(sch);
- u32 tin, mark;
-+ bool wash;
- u8 dscp;
-
- /* Tin selection: Default to diffserv-based selection, allow overriding
-- * using firewall marks or skb->priority.
-+ * using firewall marks or skb->priority. Call DSCP parsing early if
-+ * wash is enabled, otherwise defer to below to skip unneeded parsing.
- */
-- dscp = cake_handle_diffserv(skb,
-- q->rate_flags & CAKE_FLAG_WASH);
- mark = (skb->mark & q->fwmark_mask) >> q->fwmark_shft;
-+ wash = !!(q->rate_flags & CAKE_FLAG_WASH);
-+ if (wash)
-+ dscp = cake_handle_diffserv(skb, wash);
-
- if (q->tin_mode == CAKE_DIFFSERV_BESTEFFORT)
- tin = 0;
-@@ -1630,6 +1633,8 @@ static struct cake_tin_data *cake_select
- tin = q->tin_order[TC_H_MIN(skb->priority) - 1];
-
- else {
-+ if (!wash)
-+ dscp = cake_handle_diffserv(skb, wash);
- tin = q->tin_index[dscp];
-
- if (unlikely(tin >= q->tin_cnt))
+++ /dev/null
-From 3f608f0c41360b11b04c763f348b712f651c8bac Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= <toke@redhat.com>
-Date: Thu, 25 Jun 2020 22:12:09 +0200
-Subject: [PATCH] sch_cake: fix a few style nits
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-I spotted a few nits when comparing the in-tree version of sch_cake with
-the out-of-tree one: A redundant error variable declaration shadowing an
-outer declaration, and an indentation alignment issue. Fix both of these.
-
-Fixes: 046f6fd5daef ("sched: Add Common Applications Kept Enhanced (cake) qdisc")
-Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
----
- net/sched/sch_cake.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/net/sched/sch_cake.c
-+++ b/net/sched/sch_cake.c
-@@ -2713,7 +2713,7 @@ static int cake_init(struct Qdisc *sch,
- qdisc_watchdog_init(&q->watchdog, sch);
-
- if (opt) {
-- int err = cake_change(sch, opt, extack);
-+ err = cake_change(sch, opt, extack);
-
- if (err)
- return err;
-@@ -3030,7 +3030,7 @@ static int cake_dump_class_stats(struct
- PUT_STAT_S32(BLUE_TIMER_US,
- ktime_to_us(
- ktime_sub(now,
-- flow->cvars.blue_timer)));
-+ flow->cvars.blue_timer)));
- }
- if (flow->cvars.dropping) {
- PUT_STAT_S32(DROP_NEXT_US,
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1781,6 +1781,19 @@ int phy_set_max_speed(struct phy_device
+@@ -1783,6 +1783,19 @@ int phy_set_max_speed(struct phy_device
}
EXPORT_SYMBOL(phy_set_max_speed);
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1794,6 +1794,36 @@ void phy_support_asym_pause(struct phy_d
+@@ -1796,6 +1796,36 @@ void phy_support_asym_pause(struct phy_d
}
EXPORT_SYMBOL(phy_support_asym_pause);
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -890,8 +890,6 @@ int phy_init_hw(struct phy_device *phyde
+@@ -892,8 +892,6 @@ int phy_init_hw(struct phy_device *phyde
if (phydev->drv->soft_reset)
ret = phydev->drv->soft_reset(phydev);
#include <linux/mdio.h>
#include <linux/io.h>
#include <linux/uaccess.h>
-@@ -948,6 +949,65 @@ void phy_attached_print(struct phy_devic
+@@ -950,6 +951,65 @@ void phy_attached_print(struct phy_devic
EXPORT_SYMBOL(phy_attached_print);
/**
* phy_attach_direct - attach a network device to a given PHY device pointer
* @dev: network device to attach
* @phydev: Pointer to phy_device to attach
-@@ -1020,6 +1080,9 @@ int phy_attach_direct(struct net_device
+@@ -1022,6 +1082,9 @@ int phy_attach_direct(struct net_device
phydev->attached_dev = dev;
dev->phydev = phydev;
/* Some Ethernet drivers try to connect to a PHY device before
* calling register_netdevice() -> netdev_register_kobject() and
* does the dev->dev.kobj initialization. Here we only check for
-@@ -1954,6 +2017,9 @@ static int phy_remove(struct device *dev
+@@ -1956,6 +2019,9 @@ static int phy_remove(struct device *dev
phydev->state = PHY_DOWN;
mutex_unlock(&phydev->lock);
continue;
if ((phydrv->phy_id & phydrv->phy_id_mask) ==
-@@ -627,10 +627,13 @@ static int get_phy_id(struct mii_bus *bu
+@@ -629,10 +629,13 @@ static int get_phy_id(struct mii_bus *bu
*/
struct phy_device *get_phy_device(struct mii_bus *bus, int addr, bool is_c45)
{
drivers/spi/spi-rb4xx.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
-diff --git a/drivers/spi/spi-rb4xx.c b/drivers/spi/spi-rb4xx.c
-index 4c9620e0d18c..17e1a77dc132 100644
--- a/drivers/spi/spi-rb4xx.c
+++ b/drivers/spi/spi-rb4xx.c
-@@ -158,6 +158,11 @@ static int rb4xx_spi_probe(struct platform_device *pdev)
+@@ -164,6 +164,11 @@ static int rb4xx_spi_probe(struct platfo
master->transfer_one = rb4xx_transfer_one;
master->set_cs = rb4xx_set_cs;
err = devm_spi_register_master(&pdev->dev, master);
if (err) {
dev_err(&pdev->dev, "failed to register SPI master\n");
-@@ -168,11 +173,6 @@ static int rb4xx_spi_probe(struct platform_device *pdev)
+@@ -174,11 +179,6 @@ static int rb4xx_spi_probe(struct platfo
if (err)
return err;
drivers/spi/spi-rb4xx.c | 9 +++++++++
1 file changed, 9 insertions(+)
-diff --git a/drivers/spi/spi-rb4xx.c b/drivers/spi/spi-rb4xx.c
-index 17e1a77dc132..8aa51beb4ff3 100644
--- a/drivers/spi/spi-rb4xx.c
+++ b/drivers/spi/spi-rb4xx.c
-@@ -14,6 +14,7 @@
+@@ -18,6 +18,7 @@
#include <linux/platform_device.h>
#include <linux/clk.h>
#include <linux/spi/spi.h>
#include <asm/mach-ath79/ar71xx_regs.h>
-@@ -150,6 +151,7 @@ static int rb4xx_spi_probe(struct platform_device *pdev)
+@@ -156,6 +157,7 @@ static int rb4xx_spi_probe(struct platfo
if (IS_ERR(ahb_clk))
return PTR_ERR(ahb_clk);
master->bus_num = 0;
master->num_chipselect = 3;
master->mode_bits = SPI_TX_DUAL;
-@@ -188,11 +190,18 @@ static int rb4xx_spi_remove(struct platform_device *pdev)
+@@ -194,11 +196,18 @@ static int rb4xx_spi_remove(struct platf
return 0;
}
--- a/Makefile
+++ b/Makefile
-@@ -1232,7 +1232,6 @@ all: modules
+@@ -1240,7 +1240,6 @@ endif
PHONY += modules
modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
@$(kecho) ' Building modules, stage 2.';
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
-@@ -1261,7 +1260,6 @@ _modinst_:
+@@ -1269,7 +1268,6 @@ _modinst_:
rm -f $(MODLIB)/build ; \
ln -s $(CURDIR) $(MODLIB)/build ; \
fi
# Read KERNELRELEASE from include/config/kernel.release (if it exists)
KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)
KERNELVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)
-@@ -782,11 +787,6 @@ ifdef CONFIG_DEBUG_SECTION_MISMATCH
+@@ -772,11 +777,6 @@ ifdef CONFIG_DEBUG_SECTION_MISMATCH
KBUILD_CFLAGS += $(call cc-option, -fno-inline-functions-called-once)
endif
#include <linux/mutex.h>
#include <linux/err.h>
#include <linux/of.h>
-@@ -3039,3 +3040,5 @@ static int __init regmap_initcall(void)
+@@ -3040,3 +3041,5 @@ static int __init regmap_initcall(void)
return 0;
}
postcore_initcall(regmap_initcall);
algorithm registration.
--- a/crypto/algboss.c
+++ b/crypto/algboss.c
-@@ -247,8 +247,12 @@ static int cryptomgr_schedule_test(struc
+@@ -245,8 +245,12 @@ static int cryptomgr_schedule_test(struc
type = alg->cra_flags;
/* Do not test internal algorithms. */
EXPORT_SYMBOL(default_qdisc_ops);
/* Main transmission queue. */
-@@ -1025,7 +1025,7 @@ static void attach_one_default_qdisc(str
+@@ -1026,7 +1026,7 @@ static void attach_one_default_qdisc(str
void *_unused)
{
struct Qdisc *qdisc;
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c
-@@ -612,207 +612,6 @@ struct Qdisc_ops noqueue_qdisc_ops __rea
+@@ -613,207 +613,6 @@ struct Qdisc_ops noqueue_qdisc_ops __rea
.owner = THIS_MODULE,
};
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1581,6 +1581,9 @@ int genphy_update_link(struct phy_device
+@@ -1583,6 +1583,9 @@ int genphy_update_link(struct phy_device
{
int status;
help
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -3255,10 +3255,20 @@ static int xmit_one(struct sk_buff *skb,
+@@ -3251,10 +3251,20 @@ static int xmit_one(struct sk_buff *skb,
if (!list_empty(&ptype_all) || !list_empty(&dev->ptype_all))
dev_queue_xmit_nit(skb, dev);
struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie)
{
struct dst_entry *dst = __sk_dst_get(sk);
-@@ -1603,9 +1615,11 @@ static void __sk_free(struct sock *sk)
+@@ -1604,9 +1616,11 @@ static void __sk_free(struct sock *sk)
if (likely(sk->sk_net_refcnt))
sock_inuse_add(sock_net(sk), -1);
--- a/net/core/sock.c
+++ b/net/core/sock.c
-@@ -3489,6 +3489,8 @@ static __net_initdata struct pernet_oper
+@@ -3491,6 +3491,8 @@ static __net_initdata struct pernet_oper
static int __init proto_init(void)
{
/*
--- a/drivers/usb/host/ehci-platform.c
+++ b/drivers/usb/host/ehci-platform.c
-@@ -208,6 +208,8 @@ static int ehci_platform_probe(struct pl
+@@ -321,6 +321,8 @@ static int ehci_platform_probe(struct pl
hcd->has_tt = 1;
if (pdata->reset_on_resume)
priv->reset_on_resume = true;
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
-@@ -6401,7 +6401,7 @@ static void __ref alloc_node_mem_map(str
+@@ -6396,7 +6396,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)
--- a/Makefile
+++ b/Makefile
-@@ -657,12 +657,12 @@ KBUILD_CFLAGS += $(call cc-disable-warni
+@@ -653,9 +653,9 @@ KBUILD_CFLAGS += $(call cc-disable-warni
KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
--KBUILD_CFLAGS += -Os $(call cc-disable-warning,maybe-uninitialized,)
-+KBUILD_CFLAGS += -Os $(call cc-disable-warning,maybe-uninitialized,) $(EXTRA_OPTIMIZATION)
- else
- ifdef CONFIG_PROFILE_ALL_BRANCHES
--KBUILD_CFLAGS += -O2 $(call cc-disable-warning,maybe-uninitialized,)
-+KBUILD_CFLAGS += -O2 $(call cc-disable-warning,maybe-uninitialized,) $(EXTRA_OPTIMIZATION)
+-KBUILD_CFLAGS += -Os
++KBUILD_CFLAGS += -Os $(EXTRA_OPTIMIZATION)
else
-KBUILD_CFLAGS += -O2
+KBUILD_CFLAGS += -O2 -fno-reorder-blocks -fno-tree-ch $(EXTRA_OPTIMIZATION)
endif
- endif
+ # Tell gcc to never replace conditional load with a non-conditional one
select OF
--- a/arch/mips/Makefile
+++ b/arch/mips/Makefile
-@@ -323,7 +323,7 @@ OBJCOPYFLAGS += --remove-section=.regin
+@@ -334,7 +334,7 @@ OBJCOPYFLAGS += --remove-section=.regin
head-y := arch/mips/kernel/head.o
libs-y += arch/mips/lib/
;----------------------------------------------------------------
--- a/arch/arc/kernel/setup.c
+++ b/arch/arc/kernel/setup.c
-@@ -526,7 +526,7 @@ void __init handle_uboot_args(void)
+@@ -527,7 +527,7 @@ void __init handle_uboot_args(void)
ignore_uboot_args:
if (use_embedded_dtb) {
if (!machine_desc)
panic("Embedded DT invalid\n");
}
-@@ -542,6 +542,8 @@ ignore_uboot_args:
+@@ -543,6 +543,8 @@ ignore_uboot_args:
}
}
#include <linux/nsproxy.h>
#include <net/net_namespace.h>
#include <net/netns/generic.h>
-@@ -976,8 +981,36 @@ static int pppoe_xmit(struct ppp_channel
+@@ -979,8 +984,36 @@ static int pppoe_xmit(struct ppp_channel
return __pppoe_xmit(sk, skb);
}
case RTN_THROW:
case RTN_UNREACHABLE:
default:
-@@ -3789,6 +3808,17 @@ static int ip6_pkt_prohibit_out(struct n
+@@ -3791,6 +3810,17 @@ static int ip6_pkt_prohibit_out(struct n
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
}
/*
* Allocate a dst for local (unicast / anycast) address.
*/
-@@ -4236,7 +4266,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -4238,7 +4268,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 ||
cfg->fc_flags |= RTF_REJECT;
if (rtm->rtm_type == RTN_LOCAL)
-@@ -5085,6 +5116,8 @@ static int ip6_route_dev_notify(struct n
+@@ -5087,6 +5118,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);
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
#endif
-@@ -5096,6 +5129,7 @@ static int ip6_route_dev_notify(struct n
+@@ -5098,6 +5131,7 @@ static int ip6_route_dev_notify(struct n
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
#endif
}
-@@ -5290,6 +5324,15 @@ static int __net_init ip6_route_net_init
+@@ -5292,6 +5326,15 @@ 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);
#endif
net->ipv6.sysctl.flush_delay = 0;
-@@ -5308,6 +5351,8 @@ out:
+@@ -5310,6 +5353,8 @@ out:
return ret;
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
out_ip6_prohibit_entry:
kfree(net->ipv6.ip6_prohibit_entry);
out_ip6_null_entry:
-@@ -5328,6 +5373,7 @@ static void __net_exit ip6_route_net_exi
+@@ -5330,6 +5375,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);
#endif
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
}
-@@ -5404,6 +5450,9 @@ void __init ip6_route_init_special_entri
+@@ -5406,6 +5452,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);
__u16 tc_index; /* traffic control index */
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -5457,6 +5457,9 @@ static enum gro_result dev_gro_receive(s
+@@ -5461,6 +5461,9 @@ static enum gro_result dev_gro_receive(s
int same_flow;
int grow;
if (netif_elide_gro(skb->dev))
goto normal;
-@@ -7115,6 +7118,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -7119,6 +7122,48 @@ static void __netdev_adjacent_dev_unlink
&upper_dev->adj_list.lower);
}
static int __netdev_upper_dev_link(struct net_device *dev,
struct net_device *upper_dev, bool master,
void *upper_priv, void *upper_info,
-@@ -7165,6 +7210,7 @@ static int __netdev_upper_dev_link(struc
+@@ -7169,6 +7214,7 @@ static int __netdev_upper_dev_link(struc
if (ret)
return ret;
ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
&changeupper_info.info);
ret = notifier_to_errno(ret);
-@@ -7257,6 +7303,7 @@ void netdev_upper_dev_unlink(struct net_
+@@ -7261,6 +7307,7 @@ void netdev_upper_dev_unlink(struct net_
__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
&changeupper_info.info);
-@@ -7896,6 +7943,7 @@ int dev_set_mac_address(struct net_devic
+@@ -7900,6 +7947,7 @@ int dev_set_mac_address(struct net_devic
if (err)
return err;
dev->addr_assign_type = NET_ADDR_SET;
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1205,6 +1205,9 @@ void phy_detach(struct phy_device *phyde
+@@ -1207,6 +1207,9 @@ void phy_detach(struct phy_device *phyde
struct module *ndev_owner = dev->dev.parent->driver->owner;
struct mii_bus *bus;
depends on ACPI
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
-@@ -731,6 +731,19 @@ u64 ata_tf_read_block(const struct ata_t
+@@ -730,6 +730,19 @@ u64 ata_tf_read_block(const struct ata_t
return block;
}
/**
* ata_build_rw_tf - Build ATA taskfile for given read/write request
* @tf: Target ATA taskfile
-@@ -5134,6 +5147,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
+@@ -5133,6 +5146,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
if (tag < 0)
return NULL;
}
qc = __ata_qc_from_tag(ap, tag);
qc->tag = qc->hw_tag = tag;
-@@ -6068,6 +6084,9 @@ struct ata_port *ata_port_alloc(struct a
+@@ -6067,6 +6083,9 @@ struct ata_port *ata_port_alloc(struct a
ap->stats.unhandled_irq = 1;
ap->stats.idle_irq = 1;
#endif
ata_sff_port_init(ap);
return ap;
-@@ -6103,6 +6122,12 @@ static void ata_host_release(struct kref
+@@ -6102,6 +6121,12 @@ static void ata_host_release(struct kref
kfree(ap->pmp_link);
kfree(ap->slave_link);
kfree(ap);
host->ports[i] = NULL;
}
-@@ -6566,7 +6591,23 @@ int ata_host_register(struct ata_host *h
+@@ -6565,7 +6590,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;
}
rc = ata_tport_add(host->dev,host->ports[i]);
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
-@@ -38,6 +38,9 @@
- #include <linux/acpi.h>
+@@ -39,6 +39,9 @@
#include <linux/cdrom.h>
#include <linux/sched.h>
+ #include <linux/async.h>
+#ifdef CONFIG_ATA_LEDS
+#include <linux/leds.h>
+#endif
/*
* Define if arch has non-standard setup. This is a _PCI_ standard
-@@ -893,6 +896,12 @@ struct ata_port {
+@@ -896,6 +899,12 @@ struct ata_port {
#ifdef CONFIG_ATA_ACPI
struct ata_acpi_gtm __acpi_init_gtm; /* use ata_acpi_init_gtm() */
#endif
--- a/drivers/mmc/host/sdhci-msm.c
+++ b/drivers/mmc/host/sdhci-msm.c
-@@ -1688,7 +1688,7 @@ MODULE_DEVICE_TABLE(of, sdhci_msm_dt_mat
+@@ -1694,7 +1694,7 @@ MODULE_DEVICE_TABLE(of, sdhci_msm_dt_mat
static const struct sdhci_ops sdhci_msm_ops = {
.reset = sdhci_reset,
--- a/drivers/firmware/qcom_scm.c
+++ b/drivers/firmware/qcom_scm.c
-@@ -609,6 +609,9 @@ static const struct of_device_id qcom_sc
+@@ -606,6 +606,9 @@ static const struct of_device_id qcom_sc
{ .compatible = "qcom,scm-ipq4019",
.data = NULL, /* no clocks */
},
unsigned long type);
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
-@@ -1065,6 +1065,12 @@
+@@ -1076,6 +1076,12 @@
#define PCI_DEVICE_ID_SGI_LITHIUM 0x1002
#define PCI_DEVICE_ID_SGI_IOC4 0x100a
#include <linux/of_address.h>
#include <linux/of_pci.h>
#include <linux/of_platform.h>
-@@ -162,6 +163,7 @@ struct mtk_pcie_soc {
+@@ -167,6 +168,7 @@ struct mtk_pcie_soc {
* @phy: pointer to PHY control block
* @lane: lane count
* @slot: port slot
* @irq_domain: legacy INTx IRQ domain
* @inner_domain: inner IRQ domain
* @msi_domain: MSI IRQ domain
-@@ -182,6 +184,7 @@ struct mtk_pcie_port {
+@@ -187,6 +189,7 @@ struct mtk_pcie_port {
struct phy *phy;
u32 lane;
u32 slot;
struct irq_domain *irq_domain;
struct irq_domain *inner_domain;
struct irq_domain *msi_domain;
-@@ -225,10 +228,8 @@ static void mtk_pcie_subsys_powerdown(st
+@@ -230,10 +233,8 @@ static void mtk_pcie_subsys_powerdown(st
clk_disable_unprepare(pcie->free_ck);
}
static void mtk_pcie_port_free(struct mtk_pcie_port *port)
-@@ -532,6 +533,27 @@ static void mtk_pcie_enable_msi(struct m
+@@ -537,6 +538,27 @@ static void mtk_pcie_enable_msi(struct m
writel(val, port->base + PCIE_INT_MASK);
}
static int mtk_pcie_intx_map(struct irq_domain *domain, unsigned int irq,
irq_hw_number_t hwirq)
{
-@@ -561,6 +583,7 @@ static int mtk_pcie_init_irq_domain(stru
+@@ -566,6 +588,7 @@ static int mtk_pcie_init_irq_domain(stru
port->irq_domain = irq_domain_add_linear(pcie_intc_node, PCI_NUM_INTX,
&intx_domain_ops, port);
if (!port->irq_domain) {
dev_err(dev, "failed to get INTx IRQ domain\n");
return -ENODEV;
-@@ -622,7 +645,7 @@ static int mtk_pcie_setup_irq(struct mtk
+@@ -627,7 +650,7 @@ static int mtk_pcie_setup_irq(struct mtk
struct mtk_pcie *pcie = port->pcie;
struct device *dev = pcie->dev;
struct platform_device *pdev = to_platform_device(dev);
err = mtk_pcie_init_irq_domain(port, node);
if (err) {
-@@ -630,8 +653,9 @@ static int mtk_pcie_setup_irq(struct mtk
+@@ -635,8 +658,9 @@ static int mtk_pcie_setup_irq(struct mtk
return err;
}
return 0;
}
-@@ -904,49 +928,29 @@ static int mtk_pcie_parse_port(struct mt
+@@ -912,49 +936,29 @@ static int mtk_pcie_parse_port(struct mt
/* sys_ck might be divided into the following parts in some chips */
snprintf(name, sizeof(name), "ahb_ck%d", slot);
snprintf(name, sizeof(name), "pcie-rst%d", slot);
port->reset = devm_reset_control_get_optional_exclusive(dev, name);
-@@ -999,10 +1003,8 @@ static int mtk_pcie_subsys_powerup(struc
+@@ -1007,10 +1011,8 @@ static int mtk_pcie_subsys_powerup(struc
pcie->free_ck = NULL;
}
/* enable top level clock */
err = clk_prepare_enable(pcie->free_ck);
-@@ -1014,10 +1016,8 @@ static int mtk_pcie_subsys_powerup(struc
+@@ -1022,10 +1024,8 @@ static int mtk_pcie_subsys_powerup(struc
return 0;
err_free_ck:
return err;
}
-@@ -1122,36 +1122,6 @@ static int mtk_pcie_request_resources(st
+@@ -1130,36 +1130,6 @@ static int mtk_pcie_request_resources(st
return err;
err = devm_pci_remap_iospace(dev, &pcie->pio, pcie->io.start);
return 0;
}
-@@ -1182,7 +1152,14 @@ static int mtk_pcie_probe(struct platfor
+@@ -1190,7 +1160,14 @@ static int mtk_pcie_probe(struct platfor
if (err)
goto put_resources;
if (err)
goto put_resources;
-@@ -1195,6 +1172,80 @@ put_resources:
+@@ -1203,6 +1180,80 @@ put_resources:
return err;
}
static const struct mtk_pcie_soc mtk_pcie_soc_v1 = {
.ops = &mtk_pcie_ops,
.startup = mtk_pcie_startup_port,
-@@ -1223,10 +1274,13 @@ static const struct of_device_id mtk_pci
+@@ -1241,10 +1292,13 @@ static const struct of_device_id mtk_pci
static struct platform_driver mtk_pcie_driver = {
.probe = mtk_pcie_probe,
},
[PORT_NPCM] = {
.name = "Nuvoton 16550",
-@@ -2648,6 +2648,11 @@ serial8250_do_set_termios(struct uart_po
+@@ -2650,6 +2650,11 @@ serial8250_do_set_termios(struct uart_po
unsigned long flags;
unsigned int baud, quot, frac = 0;
--- a/drivers/pci/controller/pci-aardvark.c
+++ b/drivers/pci/controller/pci-aardvark.c
-@@ -843,6 +843,7 @@ static int advk_pcie_probe(struct platfo
+@@ -839,6 +839,7 @@ static int advk_pcie_probe(struct platfo
struct device *dev = &pdev->dev;
struct advk_pcie *pcie;
struct resource *res;
struct pci_host_bridge *bridge;
int ret, irq;
-@@ -896,13 +897,22 @@ static int advk_pcie_probe(struct platfo
+@@ -892,13 +893,22 @@ static int advk_pcie_probe(struct platfo
bridge->map_irq = of_irq_parse_and_map_pci;
bridge->swizzle_irq = pci_common_swizzle;
PCIE_CORE_DEV_CTRL_STATS_SNOOP_DISABLE |
(PCIE_CORE_DEV_CTRL_STATS_MAX_RD_REQ_SZ <<
PCIE_CORE_DEV_CTRL_STATS_MAX_RD_REQ_SIZE_SHIFT);
-@@ -838,6 +841,58 @@ out_release_res:
+@@ -834,6 +837,58 @@ out_release_res:
return err;
}
static int advk_pcie_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
-@@ -912,6 +967,9 @@ static int advk_pcie_probe(struct platfo
+@@ -908,6 +963,9 @@ static int advk_pcie_probe(struct platfo
list_for_each_entry(child, &bus->children, node)
pcie_bus_configure_settings(child);
+++ /dev/null
-From patchwork Thu Sep 28 12:58:36 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [v2,5/7] PCI: aardvark: disable LOS state by default
-X-Patchwork-Submitter: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-X-Patchwork-Id: 819590
-Message-Id: <20170928125838.11887-6-thomas.petazzoni@free-electrons.com>
-To: Bjorn Helgaas <bhelgaas@google.com>, linux-pci@vger.kernel.org
-Cc: Jason Cooper <jason@lakedaemon.net>, Andrew Lunn <andrew@lunn.ch>,
- Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>, Gregory Clement
- <gregory.clement@free-electrons.com>,
- Nadav Haklai <nadavh@marvell.com>, Hanna Hawa <hannah@marvell.com>,
- Yehuda Yitschak <yehuday@marvell.com>,
- linux-arm-kernel@lists.infradead.org, Antoine Tenart
- <antoine.tenart@free-electrons.com>, =?utf-8?q?Miqu=C3=A8l_Raynal?=
- <miquel.raynal@free-electrons.com>, Victor Gu <xigu@marvell.com>,
- Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-Date: Thu, 28 Sep 2017 14:58:36 +0200
-From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-List-Id: <linux-pci.vger.kernel.org>
-
-From: Victor Gu <xigu@marvell.com>
-
-Some PCIe devices do not support LOS, and will cause timeouts if the
-root complex forces the LOS state. This patch disables the LOS state
-by default.
-
-This is part of fixing bug
-https://bugzilla.kernel.org/show_bug.cgi?id=196339, this commit was
-reported as the user to be important to get a Intel 7260 mini-PCIe
-WiFi card working.
-
-Fixes: 8c39d710363c1 ("PCI: aardvark: Add Aardvark PCI host controller driver")
-Signed-off-by: Victor Gu <xigu@marvell.com>
-Reviewed-by: Evan Wang <xswang@marvell.com>
-Reviewed-by: Nadav Haklai <nadavh@marvell.com>
-[Thomas: tweak commit log.]
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
----
- drivers/pci/controller/pci-aardvark.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
---- a/drivers/pci/controller/pci-aardvark.c
-+++ b/drivers/pci/controller/pci-aardvark.c
-@@ -324,8 +324,7 @@ static void advk_pcie_setup_hw(struct ad
-
- advk_pcie_wait_for_link(pcie);
-
-- reg = PCIE_CORE_LINK_L0S_ENTRY |
-- (1 << PCIE_CORE_LINK_WIDTH_SHIFT);
-+ reg = (1 << PCIE_CORE_LINK_WIDTH_SHIFT);
- advk_writel(pcie, reg, PCIE_CORE_LINK_CTRL_STAT_REG);
-
- reg = advk_readl(pcie, PCIE_CORE_CMD_STATUS_REG);
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
-@@ -469,6 +469,16 @@ static const struct dmi_system_id reboot
+@@ -477,6 +477,16 @@ static const struct dmi_system_id reboot
},
},