mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-19 05:38:00 +00:00
kernel: bump 4.14 to 4.14.59
Drop patch that was superseded upstream: ramips/0036-mtd-fix-cfi-cmdset-0002-erase-status-check.patch Drop upstreamed patches: - apm821xx/020-0001-crypto-crypto4xx-remove-bad-list_del.patch - apm821xx/020-0011-crypto-crypto4xx-fix-crypto4xx_build_pdr-crypto4xx_b.patch - ath79/0011-MIPS-ath79-fix-register-address-in-ath79_ddr_wb_flus.patch - brcm63xx/001-4.15-08-bcm63xx_enet-correct-clock-usage.patch - brcm63xx/001-4.15-09-bcm63xx_enet-do-not-write-to-random-DMA-channel-on-B.patch - generic/backport/080-net-convert-sock.sk_wmem_alloc-from-atomic_t-to-refc.patch - generic/pending/170-usb-dwc2-Fix-DMA-alignment-to-start-at-allocated-boun.patch - generic/pending/900-gen_stats-fix-netlink-stats-padding.patch In 4.14.55, a patch was introduced that breaks ext4 images in some cases. The newly introduced patch backport-4.14/500-ext4-fix-check-to-prevent-initializing-reserved-inod.patch addresses this breakage. Fixes the following CVEs: - CVE-2018-10876 - CVE-2018-10877 - CVE-2018-10879 - CVE-2018-10880 - CVE-2018-10881 - CVE-2018-10882 - CVE-2018-10883 Compile-tested: ath79, octeon, x86/64 Runtime-tested: ath79, octeon, x86/64 Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
This commit is contained in:
parent
c89195eb25
commit
22b9f99b87
@ -5,12 +5,12 @@ LINUX_RELEASE?=1
|
||||
LINUX_VERSION-3.18 = .71
|
||||
LINUX_VERSION-4.4 = .121
|
||||
LINUX_VERSION-4.9 = .111
|
||||
LINUX_VERSION-4.14 = .54
|
||||
LINUX_VERSION-4.14 = .59
|
||||
|
||||
LINUX_KERNEL_HASH-3.18.71 = 5abc9778ad44ce02ed6c8ab52ece8a21c6d20d21f6ed8a19287b4a38a50c1240
|
||||
LINUX_KERNEL_HASH-4.4.121 = 44a88268b5088dc326b30c9b9133ac35a9a200b636b7268d08f32abeae6ca729
|
||||
LINUX_KERNEL_HASH-4.9.111 = 5966558959dc580f163766f3fdefd7e57c01b2b45d51202d00b3807c253759dd
|
||||
LINUX_KERNEL_HASH-4.14.54 = 451642ac28c539a91072f1fb83b1c061d6d44df870ddf5562400ade5e1c4b6c6
|
||||
LINUX_KERNEL_HASH-4.14.59 = 7ec633c661bba941239e340bb35391d356eda541fb4c323d07034d09d05b319b
|
||||
|
||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
||||
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
||||
|
@ -1,32 +0,0 @@
|
||||
From a728a196d253530f17da5c86dc7dfbe58c5f7094 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Lamparter <chunkeey@googlemail.com>
|
||||
Date: Fri, 25 Aug 2017 15:47:14 +0200
|
||||
Subject: [PATCH 01/25] crypto: crypto4xx - remove bad list_del
|
||||
|
||||
alg entries are only added to the list, after the registration
|
||||
was successful. If the registration failed, it was never added
|
||||
to the list in the first place.
|
||||
|
||||
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
|
||||
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
---
|
||||
drivers/crypto/amcc/crypto4xx_core.c | 6 ++----
|
||||
1 file changed, 2 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -1033,12 +1033,10 @@ int crypto4xx_register_alg(struct crypto
|
||||
break;
|
||||
}
|
||||
|
||||
- if (rc) {
|
||||
- list_del(&alg->entry);
|
||||
+ if (rc)
|
||||
kfree(alg);
|
||||
- } else {
|
||||
+ else
|
||||
list_add_tail(&alg->entry, &sec_dev->alg_list);
|
||||
- }
|
||||
}
|
||||
|
||||
return 0;
|
@ -67,7 +67,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -962,7 +962,7 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
@@ -964,7 +964,7 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
|
||||
sa->sa_command_1.bf.hash_crypto_offset = 0;
|
||||
pd->pd_ctl.w = ctx->pd_ctl;
|
||||
|
@ -18,7 +18,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -1114,7 +1114,9 @@ struct crypto4xx_alg_common crypto4xx_al
|
||||
@@ -1116,7 +1116,9 @@ struct crypto4xx_alg_common crypto4xx_al
|
||||
.cra_name = "cbc(aes)",
|
||||
.cra_driver_name = "cbc-aes-ppc4xx",
|
||||
.cra_priority = CRYPTO4XX_CRYPTO_PRIORITY,
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -1079,7 +1079,6 @@ static void crypto4xx_bh_tasklet_cb(unsi
|
||||
@@ -1081,7 +1081,6 @@ static void crypto4xx_bh_tasklet_cb(unsi
|
||||
pd->pd_ctl.bf.pe_done = 0;
|
||||
crypto4xx_pd_done(core_dev->dev, tail);
|
||||
crypto4xx_put_pd_to_pdr(core_dev->dev, tail);
|
||||
|
@ -109,7 +109,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
#include <crypto/sha.h>
|
||||
#include "crypto4xx_reg_def.h"
|
||||
#include "crypto4xx_core.h"
|
||||
@@ -1133,6 +1134,103 @@ struct crypto4xx_alg_common crypto4xx_al
|
||||
@@ -1135,6 +1136,103 @@ struct crypto4xx_alg_common crypto4xx_al
|
||||
}
|
||||
}
|
||||
}},
|
||||
|
@ -27,7 +27,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
#include "crypto4xx_reg_def.h"
|
||||
#include "crypto4xx_core.h"
|
||||
#include "crypto4xx_sa.h"
|
||||
@@ -481,111 +482,44 @@ static inline struct ce_sd *crypto4xx_ge
|
||||
@@ -483,111 +484,44 @@ static inline struct ce_sd *crypto4xx_ge
|
||||
return (struct ce_sd *)(dev->sdr + sizeof(struct ce_sd) * idx);
|
||||
}
|
||||
|
||||
|
@ -17,7 +17,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -394,10 +394,9 @@ static u32 crypto4xx_build_sdr(struct cr
|
||||
@@ -396,10 +396,9 @@ static u32 crypto4xx_build_sdr(struct cr
|
||||
if (!dev->sdr)
|
||||
return -ENOMEM;
|
||||
|
||||
@ -29,7 +29,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
&dev->scatter_buffer_pa, GFP_ATOMIC);
|
||||
if (!dev->scatter_buffer_va) {
|
||||
dma_free_coherent(dev->core_dev->device,
|
||||
@@ -410,7 +409,7 @@ static u32 crypto4xx_build_sdr(struct cr
|
||||
@@ -412,7 +411,7 @@ static u32 crypto4xx_build_sdr(struct cr
|
||||
|
||||
for (i = 0; i < PPC4XX_NUM_SD; i++) {
|
||||
sd_array[i].ptr = dev->scatter_buffer_pa +
|
||||
@ -38,9 +38,9 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -425,7 +424,7 @@ static void crypto4xx_destroy_sdr(struct
|
||||
@@ -427,7 +426,7 @@ static void crypto4xx_destroy_sdr(struct
|
||||
|
||||
if (dev->scatter_buffer_va != NULL)
|
||||
if (dev->scatter_buffer_va)
|
||||
dma_free_coherent(dev->core_dev->device,
|
||||
- dev->scatter_buffer_size * PPC4XX_NUM_SD,
|
||||
+ PPC4XX_SD_BUFFER_SIZE * PPC4XX_NUM_SD,
|
||||
|
@ -1,84 +0,0 @@
|
||||
From 5d59ad6eea82ef8df92b4109615a0dde9d8093e9 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Lamparter <chunkeey@googlemail.com>
|
||||
Date: Fri, 25 Aug 2017 15:47:24 +0200
|
||||
Subject: [PATCH 11/25] crypto: crypto4xx - fix crypto4xx_build_pdr,
|
||||
crypto4xx_build_sdr leak
|
||||
|
||||
If one of the later memory allocations in rypto4xx_build_pdr()
|
||||
fails: dev->pdr (and/or) dev->pdr_uinfo wouldn't be freed.
|
||||
|
||||
crypto4xx_build_sdr() has the same issue with dev->sdr.
|
||||
|
||||
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
|
||||
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
---
|
||||
drivers/crypto/amcc/crypto4xx_core.c | 17 +++++++++--------
|
||||
1 file changed, 9 insertions(+), 8 deletions(-)
|
||||
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -209,7 +209,7 @@ static u32 crypto4xx_build_pdr(struct cr
|
||||
dev->pdr_pa);
|
||||
return -ENOMEM;
|
||||
}
|
||||
- memset(dev->pdr, 0, sizeof(struct ce_pd) * PPC4XX_NUM_PD);
|
||||
+ memset(dev->pdr, 0, sizeof(struct ce_pd) * PPC4XX_NUM_PD);
|
||||
dev->shadow_sa_pool = dma_alloc_coherent(dev->core_dev->device,
|
||||
256 * PPC4XX_NUM_PD,
|
||||
&dev->shadow_sa_pool_pa,
|
||||
@@ -242,13 +242,15 @@ static u32 crypto4xx_build_pdr(struct cr
|
||||
|
||||
static void crypto4xx_destroy_pdr(struct crypto4xx_device *dev)
|
||||
{
|
||||
- if (dev->pdr != NULL)
|
||||
+ if (dev->pdr)
|
||||
dma_free_coherent(dev->core_dev->device,
|
||||
sizeof(struct ce_pd) * PPC4XX_NUM_PD,
|
||||
dev->pdr, dev->pdr_pa);
|
||||
+
|
||||
if (dev->shadow_sa_pool)
|
||||
dma_free_coherent(dev->core_dev->device, 256 * PPC4XX_NUM_PD,
|
||||
dev->shadow_sa_pool, dev->shadow_sa_pool_pa);
|
||||
+
|
||||
if (dev->shadow_sr_pool)
|
||||
dma_free_coherent(dev->core_dev->device,
|
||||
sizeof(struct sa_state_record) * PPC4XX_NUM_PD,
|
||||
@@ -417,12 +419,12 @@ static u32 crypto4xx_build_sdr(struct cr
|
||||
|
||||
static void crypto4xx_destroy_sdr(struct crypto4xx_device *dev)
|
||||
{
|
||||
- if (dev->sdr != NULL)
|
||||
+ if (dev->sdr)
|
||||
dma_free_coherent(dev->core_dev->device,
|
||||
sizeof(struct ce_sd) * PPC4XX_NUM_SD,
|
||||
dev->sdr, dev->sdr_pa);
|
||||
|
||||
- if (dev->scatter_buffer_va != NULL)
|
||||
+ if (dev->scatter_buffer_va)
|
||||
dma_free_coherent(dev->core_dev->device,
|
||||
PPC4XX_SD_BUFFER_SIZE * PPC4XX_NUM_SD,
|
||||
dev->scatter_buffer_va,
|
||||
@@ -1223,7 +1225,7 @@ static int crypto4xx_probe(struct platfo
|
||||
|
||||
rc = crypto4xx_build_gdr(core_dev->dev);
|
||||
if (rc)
|
||||
- goto err_build_gdr;
|
||||
+ goto err_build_pdr;
|
||||
|
||||
rc = crypto4xx_build_sdr(core_dev->dev);
|
||||
if (rc)
|
||||
@@ -1266,12 +1268,11 @@ err_iomap:
|
||||
err_request_irq:
|
||||
irq_dispose_mapping(core_dev->irq);
|
||||
tasklet_kill(&core_dev->tasklet);
|
||||
- crypto4xx_destroy_sdr(core_dev->dev);
|
||||
err_build_sdr:
|
||||
+ crypto4xx_destroy_sdr(core_dev->dev);
|
||||
crypto4xx_destroy_gdr(core_dev->dev);
|
||||
-err_build_gdr:
|
||||
- crypto4xx_destroy_pdr(core_dev->dev);
|
||||
err_build_pdr:
|
||||
+ crypto4xx_destroy_pdr(core_dev->dev);
|
||||
kfree(core_dev->dev);
|
||||
err_alloc_dev:
|
||||
kfree(core_dev);
|
@ -44,7 +44,7 @@ produce a noisy warning.
|
||||
hcd->msi_enabled = 1;
|
||||
--- a/drivers/usb/host/xhci.h
|
||||
+++ b/drivers/usb/host/xhci.h
|
||||
@@ -1850,6 +1850,7 @@ struct xhci_hcd {
|
||||
@@ -1854,6 +1854,7 @@ struct xhci_hcd {
|
||||
/* support xHCI 0.96 spec USB2 software LPM */
|
||||
unsigned sw_lpm_support:1;
|
||||
/* support xHCI 1.0 spec USB2 hardware LPM */
|
||||
|
@ -1,27 +0,0 @@
|
||||
From 54204ef3edbb1aa2390cabba61fe185a12cc39f0 Mon Sep 17 00:00:00 2001
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Tue, 6 Mar 2018 08:35:44 +0100
|
||||
Subject: [PATCH 11/27] MIPS: ath79: fix register address in
|
||||
ath79_ddr_wb_flush()
|
||||
|
||||
ath79_ddr_wb_flush_base has the type void __iomem *, so register offsets
|
||||
need to be a multiple of 4.
|
||||
|
||||
Cc: Alban Bedel <albeu@free.fr>
|
||||
Fixes: 24b0e3e84fbf ("MIPS: ath79: Improve the DDR controller interface")
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
arch/mips/ath79/common.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/mips/ath79/common.c
|
||||
+++ b/arch/mips/ath79/common.c
|
||||
@@ -58,7 +58,7 @@ EXPORT_SYMBOL_GPL(ath79_ddr_ctrl_init);
|
||||
|
||||
void ath79_ddr_wb_flush(u32 reg)
|
||||
{
|
||||
- void __iomem *flush_reg = ath79_ddr_wb_flush_base + reg;
|
||||
+ void __iomem *flush_reg = ath79_ddr_wb_flush_base + (reg * 4);
|
||||
|
||||
/* Flush the DDR write buffer. */
|
||||
__raw_writel(0x1, flush_reg);
|
@ -250,7 +250,7 @@
|
||||
&sin->sin6_addr);
|
||||
sin->sin6_scope_id = 0;
|
||||
}
|
||||
@@ -833,12 +833,12 @@ int ip6_datagram_send_ctl(struct net *ne
|
||||
@@ -836,12 +836,12 @@ int ip6_datagram_send_ctl(struct net *ne
|
||||
}
|
||||
|
||||
if (fl6->flowlabel&IPV6_FLOWINFO_MASK) {
|
||||
@ -327,7 +327,7 @@
|
||||
return neigh_create(&arp_tbl, pkey, dev);
|
||||
--- a/net/ipv4/tcp_output.c
|
||||
+++ b/net/ipv4/tcp_output.c
|
||||
@@ -449,48 +449,53 @@ static void tcp_options_write(__be32 *pt
|
||||
@@ -454,48 +454,53 @@ static void tcp_options_write(__be32 *pt
|
||||
u16 options = opts->options; /* mungable copy */
|
||||
|
||||
if (unlikely(OPTION_MD5 & options)) {
|
||||
@ -404,7 +404,7 @@
|
||||
}
|
||||
|
||||
if (unlikely(opts->num_sack_blocks)) {
|
||||
@@ -498,16 +503,17 @@ static void tcp_options_write(__be32 *pt
|
||||
@@ -503,16 +508,17 @@ static void tcp_options_write(__be32 *pt
|
||||
tp->duplicate_sack : tp->selective_acks;
|
||||
int this_sack;
|
||||
|
||||
@ -428,7 +428,7 @@
|
||||
}
|
||||
|
||||
tp->rx_opt.dsack = 0;
|
||||
@@ -520,13 +526,14 @@ static void tcp_options_write(__be32 *pt
|
||||
@@ -525,13 +531,14 @@ static void tcp_options_write(__be32 *pt
|
||||
|
||||
if (foc->exp) {
|
||||
len = TCPOLEN_EXP_FASTOPEN_BASE + foc->len;
|
||||
@ -737,7 +737,7 @@
|
||||
EXPORT_SYMBOL(xfrm_parse_spi);
|
||||
--- a/net/ipv4/tcp_input.c
|
||||
+++ b/net/ipv4/tcp_input.c
|
||||
@@ -3844,14 +3844,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||
@@ -3854,14 +3854,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||
{
|
||||
const __be32 *ptr = (const __be32 *)(th + 1);
|
||||
|
||||
|
@ -127,7 +127,7 @@ it on BCM4708 family.
|
||||
/*
|
||||
--- a/drivers/usb/host/xhci.h
|
||||
+++ b/drivers/usb/host/xhci.h
|
||||
@@ -1831,6 +1831,7 @@ struct xhci_hcd {
|
||||
@@ -1835,6 +1835,7 @@ struct xhci_hcd {
|
||||
#define XHCI_LIMIT_ENDPOINT_INTERVAL_7 (1 << 26)
|
||||
#define XHCI_U2_DISABLE_WAKE (1 << 27)
|
||||
#define XHCI_ASMEDIA_MODIFY_FLOWCONTROL (1 << 28)
|
||||
|
@ -8,7 +8,7 @@
|
||||
#include <asm/bootinfo.h>
|
||||
#include <asm/idle.h>
|
||||
#include <asm/prom.h>
|
||||
@@ -231,6 +232,33 @@ static struct fixed_phy_status bcm47xx_f
|
||||
@@ -225,6 +226,33 @@ static struct fixed_phy_status bcm47xx_f
|
||||
.duplex = DUPLEX_FULL,
|
||||
};
|
||||
|
||||
@ -42,7 +42,7 @@
|
||||
static int __init bcm47xx_register_bus_complete(void)
|
||||
{
|
||||
switch (bcm47xx_bus_type) {
|
||||
@@ -250,6 +278,7 @@ static int __init bcm47xx_register_bus_c
|
||||
@@ -244,6 +272,7 @@ static int __init bcm47xx_register_bus_c
|
||||
bcm47xx_workarounds();
|
||||
|
||||
fixed_phy_add(PHY_POLL, 0, &bcm47xx_fixed_phy_status, -1);
|
||||
|
@ -1,101 +0,0 @@
|
||||
From d0423d3e4fa7ae305729cb50369427f075ccb279 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
Date: Sat, 25 Feb 2017 12:41:28 +0100
|
||||
Subject: [PATCH 1/6] bcm63xx_enet: correct clock usage
|
||||
|
||||
Check the return code of prepare_enable and change one last instance of
|
||||
enable only to prepare_enable. Also properly disable and release the
|
||||
clock in error paths and on remove for enetsw.
|
||||
|
||||
Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
---
|
||||
drivers/net/ethernet/broadcom/bcm63xx_enet.c | 31 +++++++++++++++++++++-------
|
||||
1 file changed, 23 insertions(+), 8 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -1773,7 +1773,9 @@ static int bcm_enet_probe(struct platfor
|
||||
ret = PTR_ERR(priv->mac_clk);
|
||||
goto out;
|
||||
}
|
||||
- clk_prepare_enable(priv->mac_clk);
|
||||
+ ret = clk_prepare_enable(priv->mac_clk);
|
||||
+ if (ret)
|
||||
+ goto out_put_clk_mac;
|
||||
|
||||
/* initialize default and fetch platform data */
|
||||
priv->rx_ring_size = BCMENET_DEF_RX_DESC;
|
||||
@@ -1805,9 +1807,11 @@ static int bcm_enet_probe(struct platfor
|
||||
if (IS_ERR(priv->phy_clk)) {
|
||||
ret = PTR_ERR(priv->phy_clk);
|
||||
priv->phy_clk = NULL;
|
||||
- goto out_put_clk_mac;
|
||||
+ goto out_disable_clk_mac;
|
||||
}
|
||||
- clk_prepare_enable(priv->phy_clk);
|
||||
+ ret = clk_prepare_enable(priv->phy_clk);
|
||||
+ if (ret)
|
||||
+ goto out_put_clk_phy;
|
||||
}
|
||||
|
||||
/* do minimal hardware init to be able to probe mii bus */
|
||||
@@ -1901,13 +1905,16 @@ out_free_mdio:
|
||||
out_uninit_hw:
|
||||
/* turn off mdc clock */
|
||||
enet_writel(priv, 0, ENET_MIISC_REG);
|
||||
- if (priv->phy_clk) {
|
||||
+ if (priv->phy_clk)
|
||||
clk_disable_unprepare(priv->phy_clk);
|
||||
+
|
||||
+out_put_clk_phy:
|
||||
+ if (priv->phy_clk)
|
||||
clk_put(priv->phy_clk);
|
||||
- }
|
||||
|
||||
-out_put_clk_mac:
|
||||
+out_disable_clk_mac:
|
||||
clk_disable_unprepare(priv->mac_clk);
|
||||
+out_put_clk_mac:
|
||||
clk_put(priv->mac_clk);
|
||||
out:
|
||||
free_netdev(dev);
|
||||
@@ -2752,7 +2759,9 @@ static int bcm_enetsw_probe(struct platf
|
||||
ret = PTR_ERR(priv->mac_clk);
|
||||
goto out_unmap;
|
||||
}
|
||||
- clk_enable(priv->mac_clk);
|
||||
+ ret = clk_prepare_enable(priv->mac_clk);
|
||||
+ if (ret)
|
||||
+ goto out_put_clk;
|
||||
|
||||
priv->rx_chan = 0;
|
||||
priv->tx_chan = 1;
|
||||
@@ -2773,7 +2782,7 @@ static int bcm_enetsw_probe(struct platf
|
||||
|
||||
ret = register_netdev(dev);
|
||||
if (ret)
|
||||
- goto out_put_clk;
|
||||
+ goto out_disable_clk;
|
||||
|
||||
netif_carrier_off(dev);
|
||||
platform_set_drvdata(pdev, dev);
|
||||
@@ -2782,6 +2791,9 @@ static int bcm_enetsw_probe(struct platf
|
||||
|
||||
return 0;
|
||||
|
||||
+out_disable_clk:
|
||||
+ clk_disable_unprepare(priv->mac_clk);
|
||||
+
|
||||
out_put_clk:
|
||||
clk_put(priv->mac_clk);
|
||||
|
||||
@@ -2813,6 +2825,9 @@ static int bcm_enetsw_remove(struct plat
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
release_mem_region(res->start, resource_size(res));
|
||||
|
||||
+ clk_disable_unprepare(priv->mac_clk);
|
||||
+ clk_put(priv->mac_clk);
|
||||
+
|
||||
free_netdev(dev);
|
||||
return 0;
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
From 23d94cb855b6f4f0ee1c01679224472104ac6440 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
Date: Sat, 30 Sep 2017 14:10:18 +0200
|
||||
Subject: [PATCH 2/6] bcm63xx_enet: do not write to random DMA channel on
|
||||
BCM6345
|
||||
|
||||
The DMA controller regs actually point to DMA channel 0, so the write to
|
||||
ENETDMA_CFG_REG will actually modify a random DMA channel.
|
||||
|
||||
Since DMA controller registers do not exist on BCM6345, guard the write
|
||||
with the usual check for dma_has_sram.
|
||||
|
||||
Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
---
|
||||
drivers/net/ethernet/broadcom/bcm63xx_enet.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -1062,7 +1062,8 @@ static int bcm_enet_open(struct net_devi
|
||||
val = enet_readl(priv, ENET_CTL_REG);
|
||||
val |= ENET_CTL_ENABLE_MASK;
|
||||
enet_writel(priv, val, ENET_CTL_REG);
|
||||
- enet_dma_writel(priv, ENETDMA_CFG_EN_MASK, ENETDMA_CFG_REG);
|
||||
+ if (priv->dma_has_sram)
|
||||
+ enet_dma_writel(priv, ENETDMA_CFG_EN_MASK, ENETDMA_CFG_REG);
|
||||
enet_dmac_writel(priv, priv->dma_chan_en_mask,
|
||||
ENETDMAC_CHANCFG, priv->rx_chan);
|
||||
|
@ -84,7 +84,7 @@ Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
|
||||
|
||||
--- a/include/linux/compiler-gcc.h
|
||||
+++ b/include/linux/compiler-gcc.h
|
||||
@@ -343,3 +343,28 @@
|
||||
@@ -358,3 +358,28 @@
|
||||
* code
|
||||
*/
|
||||
#define uninitialized_var(x) x = x
|
||||
|
@ -65,7 +65,7 @@ Cc: Kir Kolyshkin <kir@openvz.org>
|
||||
* Before updating sk_refcnt, we must commit prior changes to memory
|
||||
--- a/net/ipv4/tcp_output.c
|
||||
+++ b/net/ipv4/tcp_output.c
|
||||
@@ -1671,7 +1671,7 @@ u32 tcp_tso_autosize(const struct sock *
|
||||
@@ -1683,7 +1683,7 @@ u32 tcp_tso_autosize(const struct sock *
|
||||
{
|
||||
u32 bytes, segs;
|
||||
|
||||
@ -74,7 +74,7 @@ Cc: Kir Kolyshkin <kir@openvz.org>
|
||||
sk->sk_gso_max_size - 1 - MAX_TCP_HEADER);
|
||||
|
||||
/* Goal is to send at least one packet per ms,
|
||||
@@ -2172,7 +2172,7 @@ static bool tcp_small_queue_check(struct
|
||||
@@ -2184,7 +2184,7 @@ static bool tcp_small_queue_check(struct
|
||||
{
|
||||
unsigned int limit;
|
||||
|
||||
|
@ -63,7 +63,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
/**
|
||||
* dwc2_enable_host_interrupts() - Enables the Host mode interrupts
|
||||
*
|
||||
@@ -3276,6 +3293,7 @@ static void dwc2_conn_id_status_change(s
|
||||
@@ -3278,6 +3295,7 @@ static void dwc2_conn_id_status_change(s
|
||||
|
||||
/* B-Device connector (Device Mode) */
|
||||
if (gotgctl & GOTGCTL_CONID_B) {
|
||||
@ -71,7 +71,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
/* Wait for switch to device mode */
|
||||
dev_dbg(hsotg->dev, "connId B\n");
|
||||
if (hsotg->bus_suspended) {
|
||||
@@ -4382,6 +4400,9 @@ static int _dwc2_hcd_start(struct usb_hc
|
||||
@@ -4384,6 +4402,9 @@ static int _dwc2_hcd_start(struct usb_hc
|
||||
}
|
||||
|
||||
spin_unlock_irqrestore(&hsotg->lock, flags);
|
||||
@ -81,7 +81,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -4409,6 +4430,8 @@ static void _dwc2_hcd_stop(struct usb_hc
|
||||
@@ -4411,6 +4432,8 @@ static void _dwc2_hcd_stop(struct usb_hc
|
||||
clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
|
||||
spin_unlock_irqrestore(&hsotg->lock, flags);
|
||||
|
||||
@ -90,7 +90,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
usleep_range(1000, 3000);
|
||||
}
|
||||
|
||||
@@ -4445,6 +4468,7 @@ static int _dwc2_hcd_suspend(struct usb_
|
||||
@@ -4447,6 +4470,7 @@ static int _dwc2_hcd_suspend(struct usb_
|
||||
hprt0 |= HPRT0_SUSP;
|
||||
hprt0 &= ~HPRT0_PWR;
|
||||
dwc2_writel(hprt0, hsotg->regs + HPRT0);
|
||||
@ -98,7 +98,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
}
|
||||
|
||||
/* Enter hibernation */
|
||||
@@ -4525,6 +4549,8 @@ static int _dwc2_hcd_resume(struct usb_h
|
||||
@@ -4527,6 +4551,8 @@ static int _dwc2_hcd_resume(struct usb_h
|
||||
spin_unlock_irqrestore(&hsotg->lock, flags);
|
||||
dwc2_port_resume(hsotg);
|
||||
} else {
|
||||
|
@ -42,7 +42,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
|
||||
return regulator_enable(hsotg->vbus_supply);
|
||||
}
|
||||
@@ -4401,9 +4406,7 @@ static int _dwc2_hcd_start(struct usb_hc
|
||||
@@ -4403,9 +4408,7 @@ static int _dwc2_hcd_start(struct usb_hc
|
||||
|
||||
spin_unlock_irqrestore(&hsotg->lock, flags);
|
||||
|
||||
|
@ -1,172 +0,0 @@
|
||||
From 9bbe60a67be5a1c6f79b3c9be5003481a50529ff Mon Sep 17 00:00:00 2001
|
||||
From: David Woodhouse <dwmw2@infradead.org>
|
||||
Date: Sat, 16 Jun 2018 11:55:44 +0100
|
||||
Subject: atm: Preserve value of skb->truesize when accounting to vcc
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
ATM accounts for in-flight TX packets in sk_wmem_alloc of the VCC on
|
||||
which they are to be sent. But it doesn't take ownership of those
|
||||
packets from the sock (if any) which originally owned them. They should
|
||||
remain owned by their actual sender until they've left the box.
|
||||
|
||||
There's a hack in pskb_expand_head() to avoid adjusting skb->truesize
|
||||
for certain skbs, precisely to avoid messing up sk_wmem_alloc
|
||||
accounting. Ideally that hack would cover the ATM use case too, but it
|
||||
doesn't — skbs which aren't owned by any sock, for example PPP control
|
||||
frames, still get their truesize adjusted when the low-level ATM driver
|
||||
adds headroom.
|
||||
|
||||
This has always been an issue, it seems. The truesize of a packet
|
||||
increases, and sk_wmem_alloc on the VCC goes negative. But this wasn't
|
||||
for normal traffic, only for control frames. So I think we just got away
|
||||
with it, and we probably needed to send 2GiB of LCP echo frames before
|
||||
the misaccounting would ever have caused a problem and caused
|
||||
atm_may_send() to start refusing packets.
|
||||
|
||||
Commit 14afee4b609 ("net: convert sock.sk_wmem_alloc from atomic_t to
|
||||
refcount_t") did exactly what it was intended to do, and turned this
|
||||
mostly-theoretical problem into a real one, causing PPPoATM to fail
|
||||
immediately as sk_wmem_alloc underflows and atm_may_send() *immediately*
|
||||
starts refusing to allow new packets.
|
||||
|
||||
The least intrusive solution to this problem is to stash the value of
|
||||
skb->truesize that was accounted to the VCC, in a new member of the
|
||||
ATM_SKB(skb) structure. Then in atm_pop_raw() subtract precisely that
|
||||
value instead of the then-current value of skb->truesize.
|
||||
|
||||
Fixes: 158f323b9868 ("net: adjust skb->truesize in pskb_expand_head()")
|
||||
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
|
||||
Tested-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
include/linux/atmdev.h | 15 +++++++++++++++
|
||||
net/atm/br2684.c | 3 +--
|
||||
net/atm/clip.c | 3 +--
|
||||
net/atm/common.c | 3 +--
|
||||
net/atm/lec.c | 3 +--
|
||||
net/atm/mpc.c | 3 +--
|
||||
net/atm/pppoatm.c | 3 +--
|
||||
net/atm/raw.c | 4 ++--
|
||||
8 files changed, 23 insertions(+), 14 deletions(-)
|
||||
|
||||
--- a/include/linux/atmdev.h
|
||||
+++ b/include/linux/atmdev.h
|
||||
@@ -214,6 +214,7 @@ struct atmphy_ops {
|
||||
struct atm_skb_data {
|
||||
struct atm_vcc *vcc; /* ATM VCC */
|
||||
unsigned long atm_options; /* ATM layer options */
|
||||
+ unsigned int acct_truesize; /* truesize accounted to vcc */
|
||||
};
|
||||
|
||||
#define VCC_HTABLE_SIZE 32
|
||||
@@ -241,6 +242,20 @@ void vcc_insert_socket(struct sock *sk);
|
||||
|
||||
void atm_dev_release_vccs(struct atm_dev *dev);
|
||||
|
||||
+static inline void atm_account_tx(struct atm_vcc *vcc, struct sk_buff *skb)
|
||||
+{
|
||||
+ /*
|
||||
+ * Because ATM skbs may not belong to a sock (and we don't
|
||||
+ * necessarily want to), skb->truesize may be adjusted,
|
||||
+ * escaping the hack in pskb_expand_head() which avoids
|
||||
+ * doing so for some cases. So stash the value of truesize
|
||||
+ * at the time we accounted it, and atm_pop_raw() can use
|
||||
+ * that value later, in case it changes.
|
||||
+ */
|
||||
+ refcount_add(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc);
|
||||
+ ATM_SKB(skb)->acct_truesize = skb->truesize;
|
||||
+ ATM_SKB(skb)->atm_options = vcc->atm_options;
|
||||
+}
|
||||
|
||||
static inline void atm_force_charge(struct atm_vcc *vcc,int truesize)
|
||||
{
|
||||
--- a/net/atm/br2684.c
|
||||
+++ b/net/atm/br2684.c
|
||||
@@ -252,8 +252,7 @@ static int br2684_xmit_vcc(struct sk_buf
|
||||
|
||||
ATM_SKB(skb)->vcc = atmvcc = brvcc->atmvcc;
|
||||
pr_debug("atm_skb(%p)->vcc(%p)->dev(%p)\n", skb, atmvcc, atmvcc->dev);
|
||||
- refcount_add(skb->truesize, &sk_atm(atmvcc)->sk_wmem_alloc);
|
||||
- ATM_SKB(skb)->atm_options = atmvcc->atm_options;
|
||||
+ atm_account_tx(atmvcc, skb);
|
||||
dev->stats.tx_packets++;
|
||||
dev->stats.tx_bytes += skb->len;
|
||||
|
||||
--- a/net/atm/clip.c
|
||||
+++ b/net/atm/clip.c
|
||||
@@ -381,8 +381,7 @@ static netdev_tx_t clip_start_xmit(struc
|
||||
memcpy(here, llc_oui, sizeof(llc_oui));
|
||||
((__be16 *) here)[3] = skb->protocol;
|
||||
}
|
||||
- refcount_add(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc);
|
||||
- ATM_SKB(skb)->atm_options = vcc->atm_options;
|
||||
+ atm_account_tx(vcc, skb);
|
||||
entry->vccs->last_use = jiffies;
|
||||
pr_debug("atm_skb(%p)->vcc(%p)->dev(%p)\n", skb, vcc, vcc->dev);
|
||||
old = xchg(&entry->vccs->xoff, 1); /* assume XOFF ... */
|
||||
--- a/net/atm/common.c
|
||||
+++ b/net/atm/common.c
|
||||
@@ -630,10 +630,9 @@ int vcc_sendmsg(struct socket *sock, str
|
||||
goto out;
|
||||
}
|
||||
pr_debug("%d += %d\n", sk_wmem_alloc_get(sk), skb->truesize);
|
||||
- refcount_add(skb->truesize, &sk->sk_wmem_alloc);
|
||||
+ atm_account_tx(vcc, skb);
|
||||
|
||||
skb->dev = NULL; /* for paths shared with net_device interfaces */
|
||||
- ATM_SKB(skb)->atm_options = vcc->atm_options;
|
||||
if (!copy_from_iter_full(skb_put(skb, size), size, &m->msg_iter)) {
|
||||
kfree_skb(skb);
|
||||
error = -EFAULT;
|
||||
--- a/net/atm/lec.c
|
||||
+++ b/net/atm/lec.c
|
||||
@@ -182,9 +182,8 @@ lec_send(struct atm_vcc *vcc, struct sk_
|
||||
struct net_device *dev = skb->dev;
|
||||
|
||||
ATM_SKB(skb)->vcc = vcc;
|
||||
- ATM_SKB(skb)->atm_options = vcc->atm_options;
|
||||
+ atm_account_tx(vcc, skb);
|
||||
|
||||
- refcount_add(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc);
|
||||
if (vcc->send(vcc, skb) < 0) {
|
||||
dev->stats.tx_dropped++;
|
||||
return;
|
||||
--- a/net/atm/mpc.c
|
||||
+++ b/net/atm/mpc.c
|
||||
@@ -555,8 +555,7 @@ static int send_via_shortcut(struct sk_b
|
||||
sizeof(struct llc_snap_hdr));
|
||||
}
|
||||
|
||||
- refcount_add(skb->truesize, &sk_atm(entry->shortcut)->sk_wmem_alloc);
|
||||
- ATM_SKB(skb)->atm_options = entry->shortcut->atm_options;
|
||||
+ atm_account_tx(entry->shortcut, skb);
|
||||
entry->shortcut->send(entry->shortcut, skb);
|
||||
entry->packets_fwded++;
|
||||
mpc->in_ops->put(entry);
|
||||
--- a/net/atm/pppoatm.c
|
||||
+++ b/net/atm/pppoatm.c
|
||||
@@ -350,8 +350,7 @@ static int pppoatm_send(struct ppp_chann
|
||||
return 1;
|
||||
}
|
||||
|
||||
- refcount_add(skb->truesize, &sk_atm(ATM_SKB(skb)->vcc)->sk_wmem_alloc);
|
||||
- ATM_SKB(skb)->atm_options = ATM_SKB(skb)->vcc->atm_options;
|
||||
+ atm_account_tx(vcc, skb);
|
||||
pr_debug("atm_skb(%p)->vcc(%p)->dev(%p)\n",
|
||||
skb, ATM_SKB(skb)->vcc, ATM_SKB(skb)->vcc->dev);
|
||||
ret = ATM_SKB(skb)->vcc->send(ATM_SKB(skb)->vcc, skb)
|
||||
--- a/net/atm/raw.c
|
||||
+++ b/net/atm/raw.c
|
||||
@@ -35,8 +35,8 @@ static void atm_pop_raw(struct atm_vcc *
|
||||
struct sock *sk = sk_atm(vcc);
|
||||
|
||||
pr_debug("(%d) %d -= %d\n",
|
||||
- vcc->vci, sk_wmem_alloc_get(sk), skb->truesize);
|
||||
- WARN_ON(refcount_sub_and_test(skb->truesize, &sk->sk_wmem_alloc));
|
||||
+ vcc->vci, sk_wmem_alloc_get(sk), ATM_SKB(skb)->acct_truesize);
|
||||
+ WARN_ON(refcount_sub_and_test(ATM_SKB(skb)->acct_truesize, &sk->sk_wmem_alloc));
|
||||
dev_kfree_skb_any(skb);
|
||||
sk->sk_write_space(sk);
|
||||
}
|
@ -62,7 +62,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
static struct pernet_operations nfnl_log_net_ops = {
|
||||
--- a/net/netfilter/nfnetlink_queue.c
|
||||
+++ b/net/netfilter/nfnetlink_queue.c
|
||||
@@ -1512,10 +1512,15 @@ static int __net_init nfnl_queue_net_ini
|
||||
@@ -1515,10 +1515,15 @@ static int __net_init nfnl_queue_net_ini
|
||||
|
||||
static void __net_exit nfnl_queue_net_exit(struct net *net)
|
||||
{
|
||||
|
@ -0,0 +1,65 @@
|
||||
From 5012284700775a4e6e3fbe7eac4c543c4874b559 Mon Sep 17 00:00:00 2001
|
||||
From: Theodore Ts'o <tytso@mit.edu>
|
||||
Date: Sat, 28 Jul 2018 08:12:04 -0400
|
||||
Subject: [PATCH] ext4: fix check to prevent initializing reserved inodes
|
||||
|
||||
Commit 8844618d8aa7: "ext4: only look at the bg_flags field if it is
|
||||
valid" will complain if block group zero does not have the
|
||||
EXT4_BG_INODE_ZEROED flag set. Unfortunately, this is not correct,
|
||||
since a freshly created file system has this flag cleared. It gets
|
||||
almost immediately after the file system is mounted read-write --- but
|
||||
the following somewhat unlikely sequence will end up triggering a
|
||||
false positive report of a corrupted file system:
|
||||
|
||||
mkfs.ext4 /dev/vdc
|
||||
mount -o ro /dev/vdc /vdc
|
||||
mount -o remount,rw /dev/vdc
|
||||
|
||||
Instead, when initializing the inode table for block group zero, test
|
||||
to make sure that itable_unused count is not too large, since that is
|
||||
the case that will result in some or all of the reserved inodes
|
||||
getting cleared.
|
||||
|
||||
This fixes the failures reported by Eric Whiteney when running
|
||||
generic/230 and generic/231 in the the nojournal test case.
|
||||
|
||||
Fixes: 8844618d8aa7 ("ext4: only look at the bg_flags field if it is valid")
|
||||
Reported-by: Eric Whitney <enwlinux@gmail.com>
|
||||
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
|
||||
---
|
||||
fs/ext4/ialloc.c | 5 ++++-
|
||||
fs/ext4/super.c | 8 +-------
|
||||
2 files changed, 5 insertions(+), 8 deletions(-)
|
||||
|
||||
--- a/fs/ext4/ialloc.c
|
||||
+++ b/fs/ext4/ialloc.c
|
||||
@@ -1394,7 +1394,10 @@ int ext4_init_inode_table(struct super_b
|
||||
ext4_itable_unused_count(sb, gdp)),
|
||||
sbi->s_inodes_per_block);
|
||||
|
||||
- if ((used_blks < 0) || (used_blks > sbi->s_itb_per_group)) {
|
||||
+ if ((used_blks < 0) || (used_blks > sbi->s_itb_per_group) ||
|
||||
+ ((group == 0) && ((EXT4_INODES_PER_GROUP(sb) -
|
||||
+ ext4_itable_unused_count(sb, gdp)) <
|
||||
+ EXT4_FIRST_INO(sb)))) {
|
||||
ext4_error(sb, "Something is wrong with group %u: "
|
||||
"used itable blocks: %d; "
|
||||
"itable unused count: %u",
|
||||
--- a/fs/ext4/super.c
|
||||
+++ b/fs/ext4/super.c
|
||||
@@ -3103,14 +3103,8 @@ static ext4_group_t ext4_has_uninit_itab
|
||||
if (!gdp)
|
||||
continue;
|
||||
|
||||
- if (gdp->bg_flags & cpu_to_le16(EXT4_BG_INODE_ZEROED))
|
||||
- continue;
|
||||
- if (group != 0)
|
||||
+ if (!(gdp->bg_flags & cpu_to_le16(EXT4_BG_INODE_ZEROED)))
|
||||
break;
|
||||
- ext4_error(sb, "Inode table for bg 0 marked as "
|
||||
- "needing zeroing");
|
||||
- if (sb_rdonly(sb))
|
||||
- return ngroups;
|
||||
}
|
||||
|
||||
return group;
|
@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1227,7 +1227,6 @@ all: modules
|
||||
@@ -1228,7 +1228,6 @@ all: modules
|
||||
|
||||
PHONY += modules
|
||||
modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
|
||||
@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
@$(kecho) ' Building modules, stage 2.';
|
||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
|
||||
|
||||
@@ -1256,7 +1255,6 @@ _modinst_:
|
||||
@@ -1257,7 +1256,6 @@ _modinst_:
|
||||
rm -f $(MODLIB)/build ; \
|
||||
ln -s $(CURDIR) $(MODLIB)/build ; \
|
||||
fi
|
||||
|
@ -12,7 +12,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/tools/build/Build.include
|
||||
+++ b/tools/build/Build.include
|
||||
@@ -97,4 +97,4 @@ cxx_flags = -Wp,-MD,$(depfile) -Wp,-MT,$
|
||||
@@ -98,4 +98,4 @@ cxx_flags = -Wp,-MD,$(depfile) -Wp,-MT,$
|
||||
###
|
||||
## HOSTCC C flags
|
||||
|
||||
|
@ -33,7 +33,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
# 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)
|
||||
@@ -781,11 +786,6 @@ ifdef CONFIG_DEBUG_SECTION_MISMATCH
|
||||
@@ -782,11 +787,6 @@ ifdef CONFIG_DEBUG_SECTION_MISMATCH
|
||||
KBUILD_CFLAGS += $(call cc-option, -fno-inline-functions-called-once)
|
||||
endif
|
||||
|
||||
|
@ -243,7 +243,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
}
|
||||
--- a/mm/vmstat.c
|
||||
+++ b/mm/vmstat.c
|
||||
@@ -1946,10 +1946,12 @@ void __init init_mm_internals(void)
|
||||
@@ -1944,10 +1944,12 @@ void __init init_mm_internals(void)
|
||||
start_shepherd_timer();
|
||||
#endif
|
||||
#ifdef CONFIG_PROC_FS
|
||||
|
@ -13,11 +13,9 @@ Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
|
||||
drivers/w1/masters/w1-gpio.c | 7 +++----
|
||||
1 file changed, 3 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/w1/masters/w1-gpio.c b/drivers/w1/masters/w1-gpio.c
|
||||
index a90728ceec5a..7b80762941af 100644
|
||||
--- a/drivers/w1/masters/w1-gpio.c
|
||||
+++ b/drivers/w1/masters/w1-gpio.c
|
||||
@@ -112,17 +112,16 @@ static int w1_gpio_probe_dt(struct platform_device *pdev)
|
||||
@@ -112,17 +112,16 @@ static int w1_gpio_probe_dt(struct platf
|
||||
static int w1_gpio_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct w1_bus_master *master;
|
||||
@ -38,6 +36,3 @@ index a90728ceec5a..7b80762941af 100644
|
||||
if (!pdata) {
|
||||
dev_err(&pdev->dev, "No configuration data\n");
|
||||
return -ENXIO;
|
||||
--
|
||||
2.14.1
|
||||
|
||||
|
@ -46,7 +46,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/arch/mips/kernel/process.c
|
||||
+++ b/arch/mips/kernel/process.c
|
||||
@@ -357,6 +357,8 @@ static inline int is_sp_move_ins(union m
|
||||
@@ -358,6 +358,8 @@ static inline int is_sp_move_ins(union m
|
||||
|
||||
if (ip->i_format.opcode == addiu_op ||
|
||||
ip->i_format.opcode == daddiu_op) {
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/bridge/br_input.c
|
||||
+++ b/net/bridge/br_input.c
|
||||
@@ -238,7 +238,8 @@ static int br_handle_local_finish(struct
|
||||
@@ -239,7 +239,8 @@ static int br_handle_local_finish(struct
|
||||
{
|
||||
struct net_bridge_port *p = br_port_get_rcu(skb->dev);
|
||||
|
||||
@ -25,7 +25,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
BR_INPUT_SKB_CB(skb)->brdev = p->br->dev;
|
||||
br_pass_frame_up(skb);
|
||||
@@ -326,6 +327,15 @@ rx_handler_result_t br_handle_frame(stru
|
||||
@@ -327,6 +328,15 @@ rx_handler_result_t br_handle_frame(stru
|
||||
|
||||
forward:
|
||||
switch (p->state) {
|
||||
|
@ -1,126 +0,0 @@
|
||||
From 028c9191bdf88f120f65626920a6a679170fcc3e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Antti=20Sepp=C3=A4l=C3=A4?= <a.seppala@gmail.com>
|
||||
Date: Thu, 5 Jul 2018 11:37:03 +0300
|
||||
Subject: [PATCH 1/2] usb: dwc2: Fix DMA alignment to start at allocated
|
||||
boundary
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
The commit 3bc04e28a030 ("usb: dwc2: host: Get aligned DMA in a more
|
||||
supported way") introduced a common way to align DMA allocations.
|
||||
The code in the commit aligns the struct dma_aligned_buffer but the
|
||||
actual DMA address pointed by data[0] gets aligned to an offset from
|
||||
the allocated boundary by the kmalloc_ptr and the old_xfer_buffer
|
||||
pointers.
|
||||
|
||||
This is against the recommendation in Documentation/DMA-API.txt which
|
||||
states:
|
||||
|
||||
Therefore, it is recommended that driver writers who don't take
|
||||
special care to determine the cache line size at run time only map
|
||||
virtual regions that begin and end on page boundaries (which are
|
||||
guaranteed also to be cache line boundaries).
|
||||
|
||||
The effect of this is that architectures with non-coherent DMA caches
|
||||
may run into memory corruption or kernel crashes with Unhandled
|
||||
kernel unaligned accesses exceptions.
|
||||
|
||||
Fix the alignment by positioning the DMA area in front of the allocation
|
||||
and use memory at the end of the area for storing the orginal
|
||||
transfer_buffer pointer. This may have the added benefit of increased
|
||||
performance as the DMA area is now fully aligned on all architectures.
|
||||
|
||||
Tested with Lantiq xRX200 (MIPS) and RPi Model B Rev 2 (ARM).
|
||||
|
||||
Fixes: 3bc04e28a030 ("usb: dwc2: host: Get aligned DMA in a more
|
||||
supported way")
|
||||
|
||||
Signed-off-by: Antti Seppälä <a.seppala@gmail.com>
|
||||
---
|
||||
drivers/usb/dwc2/hcd.c | 44 +++++++++++++++++++++++---------------------
|
||||
1 file changed, 23 insertions(+), 21 deletions(-)
|
||||
|
||||
--- a/drivers/usb/dwc2/hcd.c
|
||||
+++ b/drivers/usb/dwc2/hcd.c
|
||||
@@ -2628,34 +2628,29 @@ static void dwc2_hc_init_xfer(struct dwc
|
||||
|
||||
#define DWC2_USB_DMA_ALIGN 4
|
||||
|
||||
-struct dma_aligned_buffer {
|
||||
- void *kmalloc_ptr;
|
||||
- void *old_xfer_buffer;
|
||||
- u8 data[0];
|
||||
-};
|
||||
-
|
||||
static void dwc2_free_dma_aligned_buffer(struct urb *urb)
|
||||
{
|
||||
- struct dma_aligned_buffer *temp;
|
||||
+ void *stored_xfer_buffer;
|
||||
|
||||
if (!(urb->transfer_flags & URB_ALIGNED_TEMP_BUFFER))
|
||||
return;
|
||||
|
||||
- temp = container_of(urb->transfer_buffer,
|
||||
- struct dma_aligned_buffer, data);
|
||||
+ /* Restore urb->transfer_buffer from the end of the allocated area */
|
||||
+ memcpy(&stored_xfer_buffer, urb->transfer_buffer +
|
||||
+ urb->transfer_buffer_length, sizeof(urb->transfer_buffer));
|
||||
|
||||
if (usb_urb_dir_in(urb))
|
||||
- memcpy(temp->old_xfer_buffer, temp->data,
|
||||
+ memcpy(stored_xfer_buffer, urb->transfer_buffer,
|
||||
urb->transfer_buffer_length);
|
||||
- urb->transfer_buffer = temp->old_xfer_buffer;
|
||||
- kfree(temp->kmalloc_ptr);
|
||||
+ kfree(urb->transfer_buffer);
|
||||
+ urb->transfer_buffer = stored_xfer_buffer;
|
||||
|
||||
urb->transfer_flags &= ~URB_ALIGNED_TEMP_BUFFER;
|
||||
}
|
||||
|
||||
static int dwc2_alloc_dma_aligned_buffer(struct urb *urb, gfp_t mem_flags)
|
||||
{
|
||||
- struct dma_aligned_buffer *temp, *kmalloc_ptr;
|
||||
+ void *kmalloc_ptr;
|
||||
size_t kmalloc_size;
|
||||
|
||||
if (urb->num_sgs || urb->sg ||
|
||||
@@ -2663,22 +2658,29 @@ static int dwc2_alloc_dma_aligned_buffer
|
||||
!((uintptr_t)urb->transfer_buffer & (DWC2_USB_DMA_ALIGN - 1)))
|
||||
return 0;
|
||||
|
||||
- /* Allocate a buffer with enough padding for alignment */
|
||||
+ /*
|
||||
+ * Allocate a buffer with enough padding for original transfer_buffer
|
||||
+ * pointer. This allocation is guaranteed to be aligned properly for
|
||||
+ * DMA
|
||||
+ */
|
||||
kmalloc_size = urb->transfer_buffer_length +
|
||||
- sizeof(struct dma_aligned_buffer) + DWC2_USB_DMA_ALIGN - 1;
|
||||
+ sizeof(urb->transfer_buffer);
|
||||
|
||||
kmalloc_ptr = kmalloc(kmalloc_size, mem_flags);
|
||||
if (!kmalloc_ptr)
|
||||
return -ENOMEM;
|
||||
|
||||
- /* Position our struct dma_aligned_buffer such that data is aligned */
|
||||
- temp = PTR_ALIGN(kmalloc_ptr + 1, DWC2_USB_DMA_ALIGN) - 1;
|
||||
- temp->kmalloc_ptr = kmalloc_ptr;
|
||||
- temp->old_xfer_buffer = urb->transfer_buffer;
|
||||
+ /*
|
||||
+ * Position value of original urb->transfer_buffer pointer to the end
|
||||
+ * of allocation for later referencing
|
||||
+ */
|
||||
+ memcpy(kmalloc_ptr + urb->transfer_buffer_length,
|
||||
+ &urb->transfer_buffer, sizeof(urb->transfer_buffer));
|
||||
+
|
||||
if (usb_urb_dir_out(urb))
|
||||
- memcpy(temp->data, urb->transfer_buffer,
|
||||
+ memcpy(kmalloc_ptr, urb->transfer_buffer,
|
||||
urb->transfer_buffer_length);
|
||||
- urb->transfer_buffer = temp->data;
|
||||
+ urb->transfer_buffer = kmalloc_ptr;
|
||||
|
||||
urb->transfer_flags |= URB_ALIGNED_TEMP_BUFFER;
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -645,12 +645,12 @@ KBUILD_CFLAGS += $(call cc-disable-warni
|
||||
@@ -646,12 +646,12 @@ KBUILD_CFLAGS += $(call cc-disable-warni
|
||||
|
||||
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
|
||||
KBUILD_CFLAGS += $(call cc-option,-Oz,-Os)
|
||||
|
@ -68,7 +68,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (!xt_percpu_counter_alloc(alloc_state, &e->counters))
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -817,6 +845,7 @@ copy_entries_to_user(unsigned int total_
|
||||
@@ -818,6 +846,7 @@ copy_entries_to_user(unsigned int total_
|
||||
const struct xt_table_info *private = table->private;
|
||||
int ret = 0;
|
||||
const void *loc_cpu_entry;
|
||||
@ -76,7 +76,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
counters = alloc_counters(table);
|
||||
if (IS_ERR(counters))
|
||||
@@ -844,6 +873,14 @@ copy_entries_to_user(unsigned int total_
|
||||
@@ -845,6 +874,14 @@ copy_entries_to_user(unsigned int total_
|
||||
goto free_counters;
|
||||
}
|
||||
|
||||
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
for (i = sizeof(struct ipt_entry);
|
||||
i < e->target_offset;
|
||||
i += m->u.match_size) {
|
||||
@@ -1226,12 +1263,15 @@ compat_copy_entry_to_user(struct ipt_ent
|
||||
@@ -1227,12 +1264,15 @@ compat_copy_entry_to_user(struct ipt_ent
|
||||
compat_uint_t origsize;
|
||||
const struct xt_entry_match *ematch;
|
||||
int ret = 0;
|
||||
|
@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||
goto drop;
|
||||
|
||||
@@ -3262,6 +3264,7 @@ static int packet_create(struct net *net
|
||||
@@ -3260,6 +3262,7 @@ static int packet_create(struct net *net
|
||||
mutex_init(&po->pg_vec_lock);
|
||||
po->rollover = NULL;
|
||||
po->prot_hook.func = packet_rcv;
|
||||
@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
if (sock->type == SOCK_PACKET)
|
||||
po->prot_hook.func = packet_rcv_spkt;
|
||||
@@ -3875,6 +3878,16 @@ packet_setsockopt(struct socket *sock, i
|
||||
@@ -3873,6 +3876,16 @@ packet_setsockopt(struct socket *sock, i
|
||||
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
|
||||
return 0;
|
||||
}
|
||||
@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
default:
|
||||
return -ENOPROTOOPT;
|
||||
}
|
||||
@@ -3927,6 +3940,13 @@ static int packet_getsockopt(struct sock
|
||||
@@ -3925,6 +3938,13 @@ static int packet_getsockopt(struct sock
|
||||
case PACKET_VNET_HDR:
|
||||
val = po->has_vnet_hdr;
|
||||
break;
|
||||
|
@ -65,7 +65,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
/**
|
||||
* ata_build_rw_tf - Build ATA taskfile for given read/write request
|
||||
* @tf: Target ATA taskfile
|
||||
@@ -5117,6 +5130,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
|
||||
@@ -5120,6 +5133,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
|
||||
if (tag < 0)
|
||||
return NULL;
|
||||
}
|
||||
@ -75,7 +75,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
|
||||
qc = __ata_qc_from_tag(ap, tag);
|
||||
qc->tag = tag;
|
||||
@@ -6018,6 +6034,9 @@ struct ata_port *ata_port_alloc(struct a
|
||||
@@ -6021,6 +6037,9 @@ struct ata_port *ata_port_alloc(struct a
|
||||
ap->stats.unhandled_irq = 1;
|
||||
ap->stats.idle_irq = 1;
|
||||
#endif
|
||||
@ -85,7 +85,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
ata_sff_port_init(ap);
|
||||
|
||||
return ap;
|
||||
@@ -6039,6 +6058,12 @@ static void ata_host_release(struct devi
|
||||
@@ -6042,6 +6061,12 @@ static void ata_host_release(struct devi
|
||||
|
||||
kfree(ap->pmp_link);
|
||||
kfree(ap->slave_link);
|
||||
@ -98,7 +98,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
kfree(ap);
|
||||
host->ports[i] = NULL;
|
||||
}
|
||||
@@ -6485,7 +6510,23 @@ int ata_host_register(struct ata_host *h
|
||||
@@ -6488,7 +6513,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;
|
||||
}
|
||||
@ -134,7 +134,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
|
||||
/*
|
||||
* Define if arch has non-standard setup. This is a _PCI_ standard
|
||||
@@ -889,6 +892,12 @@ struct ata_port {
|
||||
@@ -890,6 +893,12 @@ struct ata_port {
|
||||
#ifdef CONFIG_ATA_ACPI
|
||||
struct ata_acpi_gtm __acpi_init_gtm; /* use ata_acpi_init_gtm() */
|
||||
#endif
|
||||
|
@ -1,49 +0,0 @@
|
||||
The gen_stats facility will add a header for the toplevel nlattr of type
|
||||
TCA_STATS2 that contains all stats added by qdisc callbacks. A reference
|
||||
to this header is stored in the gnet_dump struct, and when all the
|
||||
per-qdisc callbacks have finished adding their stats, the length of the
|
||||
containing header will be adjusted to the right value.
|
||||
|
||||
However, on architectures that need padding (i.e., that don't set
|
||||
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS), the padding nlattr is added
|
||||
before the stats, which means that the stored pointer will point to the
|
||||
padding, and so when the header is fixed up, the result is just a very
|
||||
big padding nlattr. Because most qdiscs also supply the legacy TCA_STATS
|
||||
struct, this problem has been mostly invisible, but we exposed it with
|
||||
the netlink attribute-based statistics in CAKE.
|
||||
|
||||
Fix the issue by fixing up the stored pointer if it points to a padding
|
||||
nlattr.
|
||||
|
||||
Tested-by: Pete Heist <pete@heistp.net>
|
||||
Tested-by: Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>
|
||||
Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>
|
||||
---
|
||||
net/core/gen_stats.c | 16 ++++++++++++++--
|
||||
1 file changed, 14 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/net/core/gen_stats.c
|
||||
+++ b/net/core/gen_stats.c
|
||||
@@ -77,8 +77,20 @@ gnet_stats_start_copy_compat(struct sk_b
|
||||
d->lock = lock;
|
||||
spin_lock_bh(lock);
|
||||
}
|
||||
- if (d->tail)
|
||||
- return gnet_stats_copy(d, type, NULL, 0, padattr);
|
||||
+ if (d->tail) {
|
||||
+ int ret = gnet_stats_copy(d, type, NULL, 0, padattr);
|
||||
+
|
||||
+ /* The initial attribute added in gnet_stats_copy() may be
|
||||
+ * preceded by a padding attribute, in which case d->tail will
|
||||
+ * end up pointing at the padding instead of the real attribute.
|
||||
+ * Fix this so gnet_stats_finish_copy() adjusts the length of
|
||||
+ * the right attribute.
|
||||
+ */
|
||||
+ if (ret == 0 && d->tail->nla_type == padattr)
|
||||
+ d->tail = (struct nlattr *)((char *)d->tail +
|
||||
+ NLA_ALIGN(d->tail->nla_len));
|
||||
+ return ret;
|
||||
+ }
|
||||
|
||||
return 0;
|
||||
}
|
@ -12,11 +12,9 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
drivers/soc/qcom/spm.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/drivers/soc/qcom/spm.c b/drivers/soc/qcom/spm.c
|
||||
index f9d7a85b2822..53807e839664 100644
|
||||
--- a/drivers/soc/qcom/spm.c
|
||||
+++ b/drivers/soc/qcom/spm.c
|
||||
@@ -219,6 +219,9 @@ static int __init qcom_cpuidle_init(struct device_node *cpu_node, int cpu)
|
||||
@@ -219,6 +219,9 @@ static int __init qcom_cpuidle_init(stru
|
||||
cpumask_t mask;
|
||||
bool use_scm_power_down = false;
|
||||
|
||||
@ -26,6 +24,3 @@ index f9d7a85b2822..53807e839664 100644
|
||||
for (i = 0; ; i++) {
|
||||
state_node = of_parse_phandle(cpu_node, "cpu-idle-states", i);
|
||||
if (!state_node)
|
||||
--
|
||||
2.11.0
|
||||
|
||||
|
@ -20,11 +20,9 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
arch/arm/boot/dts/qcom-ipq4019.dtsi | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/qcom-ipq4019.dtsi b/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
index 98b9850ed2a0..3289b3a6c10e 100644
|
||||
--- a/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
+++ b/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
@@ -316,7 +316,7 @@
|
||||
@@ -262,7 +262,7 @@
|
||||
|
||||
saw0: regulator@b089000 {
|
||||
compatible = "qcom,saw2";
|
||||
@ -33,6 +31,3 @@ index 98b9850ed2a0..3289b3a6c10e 100644
|
||||
regulator;
|
||||
};
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
||||
|
@ -12,10 +12,8 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
arch/arm/mach-qcom/Kconfig | 5 +++++
|
||||
2 files changed, 6 insertions(+)
|
||||
|
||||
Index: linux-4.14.54/arch/arm/Makefile
|
||||
===================================================================
|
||||
--- linux-4.14.54.orig/arch/arm/Makefile
|
||||
+++ linux-4.14.54/arch/arm/Makefile
|
||||
--- a/arch/arm/Makefile
|
||||
+++ b/arch/arm/Makefile
|
||||
@@ -150,6 +150,7 @@ endif
|
||||
textofs-$(CONFIG_ARCH_MSM8X60) := 0x00208000
|
||||
textofs-$(CONFIG_ARCH_MSM8960) := 0x00208000
|
||||
@ -24,10 +22,8 @@ Index: linux-4.14.54/arch/arm/Makefile
|
||||
|
||||
# Machine directory name. This list is sorted alphanumerically
|
||||
# by CONFIG_* macro name.
|
||||
Index: linux-4.14.54/arch/arm/mach-qcom/Kconfig
|
||||
===================================================================
|
||||
--- linux-4.14.54.orig/arch/arm/mach-qcom/Kconfig
|
||||
+++ linux-4.14.54/arch/arm/mach-qcom/Kconfig
|
||||
--- a/arch/arm/mach-qcom/Kconfig
|
||||
+++ b/arch/arm/mach-qcom/Kconfig
|
||||
@@ -27,4 +27,9 @@ config ARCH_MDM9615
|
||||
bool "Enable support for MDM9615"
|
||||
select CLKSRC_QCOM
|
||||
|
@ -12,9 +12,6 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
1 file changed, 21 insertions(+)
|
||||
create mode 100644 Documentation/devicetree/bindings/phy/phy-qcom-ipq4019-usb.txt
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/phy/phy-qcom-ipq4019-usb.txt b/Documentation/devicetree/bindings/phy/phy-qcom-ipq4019-usb.txt
|
||||
new file mode 100644
|
||||
index 000000000000..362877fcafed
|
||||
--- /dev/null
|
||||
+++ b/Documentation/devicetree/bindings/phy/phy-qcom-ipq4019-usb.txt
|
||||
@@ -0,0 +1,21 @@
|
||||
@ -39,6 +36,3 @@ index 000000000000..362877fcafed
|
||||
+ <&gcc USB2_HSPHY_S_ARES>;
|
||||
+ reset-names = "por_rst", "srif_rst";
|
||||
+};
|
||||
--
|
||||
2.11.0
|
||||
|
||||
|
@ -15,10 +15,8 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
3 files changed, 196 insertions(+)
|
||||
create mode 100644 drivers/phy/qualcomm/phy-qcom-ipq4019-usb.c
|
||||
|
||||
Index: linux-4.14.54/drivers/phy/qualcomm/Kconfig
|
||||
===================================================================
|
||||
--- linux-4.14.54.orig/drivers/phy/qualcomm/Kconfig
|
||||
+++ linux-4.14.54/drivers/phy/qualcomm/Kconfig
|
||||
--- a/drivers/phy/qualcomm/Kconfig
|
||||
+++ b/drivers/phy/qualcomm/Kconfig
|
||||
@@ -8,6 +8,13 @@ config PHY_QCOM_APQ8064_SATA
|
||||
depends on OF
|
||||
select GENERIC_PHY
|
||||
@ -33,10 +31,8 @@ Index: linux-4.14.54/drivers/phy/qualcomm/Kconfig
|
||||
config PHY_QCOM_IPQ806X_SATA
|
||||
tristate "Qualcomm IPQ806x SATA SerDes/PHY driver"
|
||||
depends on ARCH_QCOM
|
||||
Index: linux-4.14.54/drivers/phy/qualcomm/phy-qcom-ipq4019-usb.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ linux-4.14.54/drivers/phy/qualcomm/phy-qcom-ipq4019-usb.c
|
||||
+++ b/drivers/phy/qualcomm/phy-qcom-ipq4019-usb.c
|
||||
@@ -0,0 +1,188 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2018 John Crispin <john@phrozen.org>
|
||||
@ -226,10 +222,8 @@ Index: linux-4.14.54/drivers/phy/qualcomm/phy-qcom-ipq4019-usb.c
|
||||
+MODULE_DESCRIPTION("QCOM/IPQ4019 USB phy driver");
|
||||
+MODULE_AUTHOR("John Crispin <john@phrozen.org>");
|
||||
+MODULE_LICENSE("GPL v2");
|
||||
Index: linux-4.14.54/drivers/phy/qualcomm/Makefile
|
||||
===================================================================
|
||||
--- linux-4.14.54.orig/drivers/phy/qualcomm/Makefile
|
||||
+++ linux-4.14.54/drivers/phy/qualcomm/Makefile
|
||||
--- a/drivers/phy/qualcomm/Makefile
|
||||
+++ b/drivers/phy/qualcomm/Makefile
|
||||
@@ -1,5 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
obj-$(CONFIG_PHY_QCOM_APQ8064_SATA) += phy-qcom-apq8064-sata.o
|
||||
|
@ -11,11 +11,9 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
arch/arm/boot/dts/qcom-ipq4019.dtsi | 74 +++++++++++++++++++++++++++
|
||||
2 files changed, 94 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi b/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi
|
||||
index 418f9a022336..2ee5f05d5a43 100644
|
||||
--- a/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi
|
||||
+++ b/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi
|
||||
@@ -109,5 +109,25 @@
|
||||
@@ -101,5 +101,25 @@
|
||||
wifi@a800000 {
|
||||
status = "ok";
|
||||
};
|
||||
@ -41,11 +39,9 @@ index 418f9a022336..2ee5f05d5a43 100644
|
||||
+ };
|
||||
};
|
||||
};
|
||||
diff --git a/arch/arm/boot/dts/qcom-ipq4019.dtsi b/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
index e5e52adbd5a3..e6b12129f0e4 100644
|
||||
--- a/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
+++ b/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
@@ -553,5 +553,79 @@
|
||||
@@ -410,5 +410,79 @@
|
||||
"legacy";
|
||||
status = "disabled";
|
||||
};
|
||||
@ -125,6 +121,3 @@ index e5e52adbd5a3..e6b12129f0e4 100644
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--
|
||||
2.11.0
|
||||
|
||||
|
@ -15,11 +15,9 @@ Signed-off-by: Andy Gross <andy.gross@linaro.org>
|
||||
arch/arm/boot/dts/qcom-ipq4019.dtsi | 156 ++++++++++++++++++++++++--
|
||||
2 files changed, 146 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi b/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi
|
||||
index ef8d8c88ed7b..418f9a022336 100644
|
||||
--- a/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi
|
||||
+++ b/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi
|
||||
@@ -69,7 +69,7 @@
|
||||
@@ -61,7 +61,7 @@
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
@ -28,12 +26,10 @@ index ef8d8c88ed7b..418f9a022336 100644
|
||||
pinctrl-0 = <&spi_0_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "ok";
|
||||
diff --git a/arch/arm/boot/dts/qcom-ipq4019.dtsi b/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
index 2efc8a2d41a7..737097e9fb4f 100644
|
||||
--- a/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
+++ b/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
@@ -40,8 +40,10 @@
|
||||
};
|
||||
@@ -24,8 +24,10 @@
|
||||
interrupt-parent = <&intc>;
|
||||
|
||||
aliases {
|
||||
- spi0 = &spi_0;
|
||||
@ -45,7 +41,7 @@ index 2efc8a2d41a7..737097e9fb4f 100644
|
||||
};
|
||||
|
||||
cpus {
|
||||
@@ -120,6 +122,12 @@
|
||||
@@ -132,6 +134,12 @@
|
||||
};
|
||||
};
|
||||
|
||||
@ -58,7 +54,7 @@ index 2efc8a2d41a7..737097e9fb4f 100644
|
||||
timer {
|
||||
compatible = "arm,armv7-timer";
|
||||
interrupts = <1 2 0xf08>,
|
||||
@@ -165,13 +173,13 @@
|
||||
@@ -177,13 +185,13 @@
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
@ -74,7 +70,7 @@ index 2efc8a2d41a7..737097e9fb4f 100644
|
||||
clocks = <&gcc GCC_BLSP1_AHB_CLK>;
|
||||
clock-names = "bam_clk";
|
||||
#dma-cells = <1>;
|
||||
@@ -179,7 +187,7 @@
|
||||
@@ -191,7 +199,7 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@ -83,7 +79,7 @@ index 2efc8a2d41a7..737097e9fb4f 100644
|
||||
compatible = "qcom,spi-qup-v2.2.1";
|
||||
reg = <0x78b5000 0x600>;
|
||||
interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
|
||||
@@ -188,10 +196,26 @@
|
||||
@@ -200,10 +208,26 @@
|
||||
clock-names = "core", "iface";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
@ -111,7 +107,7 @@ index 2efc8a2d41a7..737097e9fb4f 100644
|
||||
compatible = "qcom,i2c-qup-v2.2.1";
|
||||
reg = <0x78b7000 0x600>;
|
||||
interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
|
||||
@@ -200,14 +224,29 @@
|
||||
@@ -212,14 +236,29 @@
|
||||
clock-names = "iface", "core";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
@ -142,8 +138,8 @@ index 2efc8a2d41a7..737097e9fb4f 100644
|
||||
clocks = <&gcc GCC_CRYPTO_AHB_CLK>;
|
||||
clock-names = "bam_clk";
|
||||
#dma-cells = <1>;
|
||||
@@ -275,7 +314,7 @@
|
||||
blsp1_uart1: serial@78af000 {
|
||||
@@ -293,7 +332,7 @@
|
||||
serial@78af000 {
|
||||
compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
|
||||
reg = <0x78af000 0x200>;
|
||||
- interrupts = <0 107 0>;
|
||||
@ -151,7 +147,7 @@ index 2efc8a2d41a7..737097e9fb4f 100644
|
||||
status = "disabled";
|
||||
clocks = <&gcc GCC_BLSP1_UART1_APPS_CLK>,
|
||||
<&gcc GCC_BLSP1_AHB_CLK>;
|
||||
@@ -287,7 +326,7 @@
|
||||
@@ -305,7 +344,7 @@
|
||||
serial@78b0000 {
|
||||
compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
|
||||
reg = <0x78b0000 0x200>;
|
||||
@ -160,7 +156,7 @@ index 2efc8a2d41a7..737097e9fb4f 100644
|
||||
status = "disabled";
|
||||
clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>,
|
||||
<&gcc GCC_BLSP1_AHB_CLK>;
|
||||
@@ -309,6 +348,101 @@
|
||||
@@ -327,6 +366,101 @@
|
||||
reg = <0x4ab000 0x4>;
|
||||
};
|
||||
|
||||
@ -262,7 +258,7 @@ index 2efc8a2d41a7..737097e9fb4f 100644
|
||||
wifi0: wifi@a000000 {
|
||||
compatible = "qcom,ipq4019-wifi";
|
||||
reg = <0xa000000 0x200000>;
|
||||
@@ -342,7 +476,7 @@
|
||||
@@ -360,7 +494,7 @@
|
||||
<GIC_SPI 45 IRQ_TYPE_EDGE_RISING>,
|
||||
<GIC_SPI 46 IRQ_TYPE_EDGE_RISING>,
|
||||
<GIC_SPI 47 IRQ_TYPE_EDGE_RISING>,
|
||||
@ -271,7 +267,7 @@ index 2efc8a2d41a7..737097e9fb4f 100644
|
||||
interrupt-names = "msi0", "msi1", "msi2", "msi3",
|
||||
"msi4", "msi5", "msi6", "msi7",
|
||||
"msi8", "msi9", "msi10", "msi11",
|
||||
@@ -384,7 +518,7 @@
|
||||
@@ -402,7 +536,7 @@
|
||||
<GIC_SPI 61 IRQ_TYPE_EDGE_RISING>,
|
||||
<GIC_SPI 62 IRQ_TYPE_EDGE_RISING>,
|
||||
<GIC_SPI 63 IRQ_TYPE_EDGE_RISING>,
|
||||
@ -280,6 +276,3 @@ index 2efc8a2d41a7..737097e9fb4f 100644
|
||||
interrupt-names = "msi0", "msi1", "msi2", "msi3",
|
||||
"msi4", "msi5", "msi6", "msi7",
|
||||
"msi8", "msi9", "msi10", "msi11",
|
||||
--
|
||||
2.11.0
|
||||
|
||||
|
@ -12,12 +12,12 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
|
||||
|
||||
--- a/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
+++ b/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
@@ -359,7 +359,7 @@
|
||||
@@ -381,7 +381,7 @@
|
||||
#size-cells = <2>;
|
||||
|
||||
ranges = <0x81000000 0 0x40200000 0x40200000 0 0x00100000
|
||||
- 0x82000000 0 0x48000000 0x48000000 0 0x10000000>;
|
||||
+ 0x82000000 0 0x40300000 0x40300000 0 0x400000>;
|
||||
|
||||
interrupts = <GIC_SPI 141 IRQ_TYPE_NONE>;
|
||||
interrupts = <GIC_SPI 141 IRQ_TYPE_EDGE_RISING>;
|
||||
interrupt-names = "msi";
|
||||
|
@ -61,7 +61,7 @@ Origin: other, https://patchwork.kernel.org/patch/10339127/
|
||||
|
||||
--- a/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
+++ b/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
@@ -166,6 +166,7 @@
|
||||
@@ -182,6 +182,7 @@
|
||||
compatible = "qcom,ipq4019-pinctrl";
|
||||
reg = <0x01000000 0x300000>;
|
||||
gpio-controller;
|
||||
|
@ -42,11 +42,9 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
drivers/clk/qcom/gcc-ipq4019.c | 34 +++++++++++++++++++++++++++++++---
|
||||
1 file changed, 31 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/clk/qcom/gcc-ipq4019.c b/drivers/clk/qcom/gcc-ipq4019.c
|
||||
index 46cb256b4aa2..4ec43f7d2e52 100644
|
||||
--- a/drivers/clk/qcom/gcc-ipq4019.c
|
||||
+++ b/drivers/clk/qcom/gcc-ipq4019.c
|
||||
@@ -1253,6 +1253,29 @@ static const struct clk_fepll_vco gcc_fepll_vco = {
|
||||
@@ -1253,6 +1253,29 @@ static const struct clk_fepll_vco gcc_fe
|
||||
.reg = 0x2f020,
|
||||
};
|
||||
|
||||
@ -76,7 +74,7 @@ index 46cb256b4aa2..4ec43f7d2e52 100644
|
||||
/*
|
||||
* Round rate function for APSS CPU PLL Clock divider.
|
||||
* It looks up the frequency table and returns the next higher frequency
|
||||
@@ -1265,7 +1288,7 @@ static long clk_cpu_div_round_rate(struct clk_hw *hw, unsigned long rate,
|
||||
@@ -1265,7 +1288,7 @@ static long clk_cpu_div_round_rate(struc
|
||||
struct clk_hw *p_hw;
|
||||
const struct freq_tbl *f;
|
||||
|
||||
@ -85,7 +83,7 @@ index 46cb256b4aa2..4ec43f7d2e52 100644
|
||||
if (!f)
|
||||
return -EINVAL;
|
||||
|
||||
@@ -1288,7 +1311,7 @@ static int clk_cpu_div_set_rate(struct clk_hw *hw, unsigned long rate,
|
||||
@@ -1288,7 +1311,7 @@ static int clk_cpu_div_set_rate(struct c
|
||||
u32 mask;
|
||||
int ret;
|
||||
|
||||
@ -102,7 +100,7 @@ index 46cb256b4aa2..4ec43f7d2e52 100644
|
||||
struct clk_fepll *pll = to_clk_fepll(hw);
|
||||
u32 cdiv, pre_div;
|
||||
u64 rate;
|
||||
@@ -1335,7 +1359,11 @@ clk_cpu_div_recalc_rate(struct clk_hw *hw,
|
||||
@@ -1335,7 +1359,11 @@ clk_cpu_div_recalc_rate(struct clk_hw *h
|
||||
rate = clk_fepll_vco_calc_rate(pll, parent_rate) * 2;
|
||||
do_div(rate, pre_div);
|
||||
|
||||
@ -115,6 +113,3 @@ index 46cb256b4aa2..4ec43f7d2e52 100644
|
||||
};
|
||||
|
||||
static const struct clk_ops clk_regmap_cpu_div_ops = {
|
||||
--
|
||||
2.11.0
|
||||
|
||||
|
@ -84,5 +84,5 @@ this change qualifies for a stable@vger.kernel.org submission.
|
||||
+ };
|
||||
+
|
||||
aliases {
|
||||
spi0 = &spi_0;
|
||||
spi1 = &spi_1;
|
||||
spi0 = &blsp1_spi1;
|
||||
spi1 = &blsp1_spi2;
|
||||
|
@ -17,7 +17,7 @@ Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
|
||||
|
||||
--- a/drivers/mtd/ubi/build.c
|
||||
+++ b/drivers/mtd/ubi/build.c
|
||||
@@ -1184,6 +1184,9 @@ static void __init ubi_auto_attach(void)
|
||||
@@ -1187,6 +1187,9 @@ static void __init ubi_auto_attach(void)
|
||||
mtd = open_mtd_device("ubi");
|
||||
if (IS_ERR(mtd))
|
||||
mtd = open_mtd_device("data");
|
||||
@ -25,5 +25,5 @@ Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
|
||||
+ if (IS_ERR(mtd))
|
||||
+ mtd = open_mtd_device("UBI_DEV");
|
||||
|
||||
if (!IS_ERR(mtd)) {
|
||||
size_t len;
|
||||
if (IS_ERR(mtd))
|
||||
return;
|
||||
|
@ -15,7 +15,7 @@ so the info might change.
|
||||
|
||||
--- a/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
+++ b/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
@@ -540,6 +540,34 @@
|
||||
@@ -562,6 +562,34 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@ -48,5 +48,5 @@ so the info might change.
|
||||
+ };
|
||||
+
|
||||
usb3_ss_phy: ssphy@9a000 {
|
||||
compatible = "qca,uni-ssphy";
|
||||
reg = <0x9a000 0x800>;
|
||||
compatible = "qcom,usb-ss-ipq4019-phy";
|
||||
#phy-cells = <0>;
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
|
||||
--- a/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
+++ b/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
@@ -568,6 +568,29 @@
|
||||
@@ -590,6 +590,29 @@
|
||||
};
|
||||
};
|
||||
|
||||
@ -42,5 +42,5 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
+ };
|
||||
+
|
||||
usb3_ss_phy: ssphy@9a000 {
|
||||
compatible = "qca,uni-ssphy";
|
||||
reg = <0x9a000 0x800>;
|
||||
compatible = "qcom,usb-ss-ipq4019-phy";
|
||||
#phy-cells = <0>;
|
||||
|
@ -14,10 +14,8 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
arch/arm/boot/dts/qcom-ipq4019.dtsi | 60 +++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 60 insertions(+)
|
||||
|
||||
Index: linux-4.14.54/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
===================================================================
|
||||
--- linux-4.14.54.orig/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
+++ linux-4.14.54/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
--- a/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
+++ b/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
@@ -44,6 +44,8 @@
|
||||
spi1 = &blsp1_spi2;
|
||||
i2c0 = &blsp1_i2c3;
|
||||
@ -27,7 +25,7 @@ Index: linux-4.14.54/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
};
|
||||
|
||||
cpus {
|
||||
@@ -606,6 +608,64 @@
|
||||
@@ -613,6 +615,64 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
@ -1,7 +1,5 @@
|
||||
Index: linux-4.14.54/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi
|
||||
===================================================================
|
||||
--- linux-4.14.54.orig/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi
|
||||
+++ linux-4.14.54/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi
|
||||
--- a/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi
|
||||
+++ b/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi
|
||||
@@ -15,12 +15,39 @@
|
||||
*/
|
||||
|
||||
@ -80,10 +78,8 @@ Index: linux-4.14.54/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi
|
||||
usb3_ss_phy: ssphy@9a000 {
|
||||
status = "ok";
|
||||
};
|
||||
Index: linux-4.14.54/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1-c1.dts
|
||||
===================================================================
|
||||
--- linux-4.14.54.orig/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1-c1.dts
|
||||
+++ linux-4.14.54/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1-c1.dts
|
||||
--- a/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1-c1.dts
|
||||
+++ b/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1-c1.dts
|
||||
@@ -18,5 +18,73 @@
|
||||
|
||||
/ {
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts
|
||||
@@ -185,18 +185,18 @@
|
||||
@@ -186,18 +186,18 @@
|
||||
};
|
||||
|
||||
partition@a0000 {
|
||||
@ -22,7 +22,7 @@
|
||||
reg = <0x400000 0x1C00000>;
|
||||
};
|
||||
};
|
||||
@@ -210,7 +210,7 @@
|
||||
@@ -211,7 +211,7 @@
|
||||
};
|
||||
|
||||
ð0 {
|
||||
@ -30,4 +30,4 @@
|
||||
+ status = "disabled";
|
||||
ethernet0-port@0 {
|
||||
speed = <1000>;
|
||||
duplex = <1>;
|
||||
duplex = <1>;
|
||||
|
@ -10,7 +10,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
|
||||
--- a/drivers/net/phy/phy_device.c
|
||||
+++ b/drivers/net/phy/phy_device.c
|
||||
@@ -1929,7 +1929,7 @@ static struct phy_driver genphy_driver =
|
||||
@@ -1926,7 +1926,7 @@ static struct phy_driver genphy_driver =
|
||||
.config_init = genphy_config_init,
|
||||
.features = PHY_GBIT_FEATURES | SUPPORTED_MII |
|
||||
SUPPORTED_AUI | SUPPORTED_FIBRE |
|
||||
|
@ -127,7 +127,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
/* Set the HCD state before we enable the irqs */
|
||||
--- a/drivers/usb/host/xhci.h
|
||||
+++ b/drivers/usb/host/xhci.h
|
||||
@@ -1726,6 +1726,8 @@ struct xhci_hcd {
|
||||
@@ -1730,6 +1730,8 @@ struct xhci_hcd {
|
||||
u8 max_interrupters;
|
||||
u8 max_ports;
|
||||
u8 isoc_threshold;
|
||||
|
@ -11,8 +11,6 @@ Subject: [PATCH] arm: dts: Add Unielec U7623 DTS
|
||||
create mode 100644 arch/arm/boot/dts/mt7623a-unielec-u7623-02-emmc-512M.dts
|
||||
create mode 100644 arch/arm/boot/dts/mt7623a-unielec-u7623-02-emmc.dtsi
|
||||
|
||||
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
|
||||
index 3fec84fa0..e685ce9a4 100644
|
||||
--- a/arch/arm/boot/dts/Makefile
|
||||
+++ b/arch/arm/boot/dts/Makefile
|
||||
@@ -1062,6 +1062,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
|
||||
@ -23,9 +21,6 @@ index 3fec84fa0..e685ce9a4 100644
|
||||
mt7623n-rfb-nand.dtb \
|
||||
mt7623n-bananapi-bpi-r2.dtb \
|
||||
mt8127-moose.dtb \
|
||||
diff --git a/arch/arm/boot/dts/mt7623a-unielec-u7623-02-emmc-512M.dts b/arch/arm/boot/dts/mt7623a-unielec-u7623-02-emmc-512M.dts
|
||||
new file mode 100644
|
||||
index 000000000..3b14eccd3
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/mt7623a-unielec-u7623-02-emmc-512M.dts
|
||||
@@ -0,0 +1,17 @@
|
||||
@ -46,9 +41,6 @@ index 000000000..3b14eccd3
|
||||
+ reg = <0 0x80000000 0 0x20000000>;
|
||||
+ };
|
||||
+};
|
||||
diff --git a/arch/arm/boot/dts/mt7623a-unielec-u7623-02-emmc.dtsi b/arch/arm/boot/dts/mt7623a-unielec-u7623-02-emmc.dtsi
|
||||
new file mode 100644
|
||||
index 000000000..436b02f2d
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/mt7623a-unielec-u7623-02-emmc.dtsi
|
||||
@@ -0,0 +1,375 @@
|
||||
@ -427,6 +419,3 @@ index 000000000..436b02f2d
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
--
|
||||
2.14.1
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
/* initialize internal qc */
|
||||
|
||||
/* XXX: Tag 0 is used for drivers with legacy EH as some
|
||||
@@ -5124,6 +5132,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
|
||||
@@ -5127,6 +5135,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
|
||||
if (unlikely(ap->pflags & ATA_PFLAG_FROZEN))
|
||||
return NULL;
|
||||
|
||||
@ -25,7 +25,7 @@
|
||||
/* libsas case */
|
||||
if (ap->flags & ATA_FLAG_SAS_HOST) {
|
||||
tag = ata_sas_allocate_tag(ap);
|
||||
@@ -5169,6 +5180,8 @@ void ata_qc_free(struct ata_queued_cmd *
|
||||
@@ -5172,6 +5183,8 @@ void ata_qc_free(struct ata_queued_cmd *
|
||||
qc->tag = ATA_TAG_POISON;
|
||||
if (ap->flags & ATA_FLAG_SAS_HOST)
|
||||
ata_sas_free_tag(tag, ap);
|
||||
@ -36,7 +36,7 @@
|
||||
|
||||
--- a/include/linux/libata.h
|
||||
+++ b/include/linux/libata.h
|
||||
@@ -918,6 +918,8 @@ struct ata_port_operations {
|
||||
@@ -919,6 +919,8 @@ struct ata_port_operations {
|
||||
void (*qc_prep)(struct ata_queued_cmd *qc);
|
||||
unsigned int (*qc_issue)(struct ata_queued_cmd *qc);
|
||||
bool (*qc_fill_rtf)(struct ata_queued_cmd *qc);
|
||||
@ -45,7 +45,7 @@
|
||||
|
||||
/*
|
||||
* Configuration and exception handling
|
||||
@@ -1008,6 +1010,9 @@ struct ata_port_operations {
|
||||
@@ -1009,6 +1011,9 @@ struct ata_port_operations {
|
||||
void (*phy_reset)(struct ata_port *ap);
|
||||
void (*eng_timeout)(struct ata_port *ap);
|
||||
|
||||
|
@ -1,29 +0,0 @@
|
||||
From 8e72a3a1be8f6328bd7ef491332ba541547b6086 Mon Sep 17 00:00:00 2001
|
||||
From: John Crispin <blogic@openwrt.org>
|
||||
Date: Mon, 15 Jul 2013 00:38:51 +0200
|
||||
Subject: [PATCH 36/53] mtd: fix cfi cmdset 0002 erase status check
|
||||
|
||||
---
|
||||
drivers/mtd/chips/cfi_cmdset_0002.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||
@@ -2295,7 +2295,7 @@ static int __xipram do_erase_chip(struct
|
||||
chip->erase_suspended = 0;
|
||||
}
|
||||
|
||||
- if (chip_ready(map, adr))
|
||||
+ if (chip_good(map, adr, map_word_ff(map)))
|
||||
break;
|
||||
|
||||
if (time_after(jiffies, timeo)) {
|
||||
@@ -2385,7 +2385,7 @@ static int __xipram do_erase_oneblock(st
|
||||
chip->erase_suspended = 0;
|
||||
}
|
||||
|
||||
- if (chip_ready(map, adr)) {
|
||||
+ if (chip_good(map, adr, map_word_ff(map))) {
|
||||
xip_enable(map, chip, adr);
|
||||
break;
|
||||
}
|
@ -16,7 +16,7 @@ Subject: [PATCH 37/53] mtd: cfi cmdset 0002 force word write
|
||||
-#define FORCE_WORD_WRITE 0
|
||||
+#define FORCE_WORD_WRITE 1
|
||||
|
||||
#define MAX_WORD_RETRIES 3
|
||||
#define MAX_RETRIES 3
|
||||
|
||||
@@ -51,7 +51,9 @@
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user