mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-06-18 15:25:29 +08:00
kernel: bump to 4.9.196, 4.14.148, 4.19.78
This commit is contained in:
parent
ef6133ce6c
commit
6e2f8766af
@ -6,13 +6,13 @@ ifdef CONFIG_TESTING_KERNEL
|
|||||||
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
|
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
LINUX_VERSION-4.9 = .194
|
LINUX_VERSION-4.9 = .196
|
||||||
LINUX_VERSION-4.14 = .146
|
LINUX_VERSION-4.14 = .148
|
||||||
LINUX_VERSION-4.19 = .75
|
LINUX_VERSION-4.19 = .78
|
||||||
|
|
||||||
LINUX_KERNEL_HASH-4.9.194 = d5f4bb7584e461f1faa9a3f94c2ad292246fe692b0e992e072dac255f806c2e3
|
LINUX_KERNEL_HASH-4.9.196 = e0ab12b04a975630ece2142a1ac15cfe45140b8c3359226b035c15ca7c92c6ef
|
||||||
LINUX_KERNEL_HASH-4.14.146 = a3c54b887ea3e679382bd4c0536e6a281b071dab2258bd3ee8af75baef2023f5
|
LINUX_KERNEL_HASH-4.14.148 = 12d2b74003e13a6c1956064754255249fbe5c7af6cbdfb2ddeba45b5ed7c0fad
|
||||||
LINUX_KERNEL_HASH-4.19.75 = dd5e7147e1e4501560fba5beb86dae6bf6ba843518ab3d4cad283de77b651b78
|
LINUX_KERNEL_HASH-4.19.78 = df63ea77c6e28566102a33f503513bc6280f79b48c90921b39661d3ce6295049
|
||||||
|
|
||||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
||||||
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
||||||
|
@ -1,26 +1,24 @@
|
|||||||
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
|
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||||
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
|
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||||
@@ -1635,8 +1635,8 @@ static int __xipram do_write_oneword(str
|
@@ -1641,7 +1641,7 @@ static int __xipram do_write_oneword(str
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- if (chip_ready(map, adr))
|
if (chip_good(map, adr, datum))
|
||||||
- break;
|
- break;
|
||||||
+ if (chip_good(map, adr, datum))
|
|
||||||
+ goto enable_xip;
|
+ goto enable_xip;
|
||||||
|
|
||||||
/* Latency issues. Drop the lock, wait a while and retry */
|
/* Latency issues. Drop the lock, wait a while and retry */
|
||||||
UDELAY(map, chip, adr, 1);
|
UDELAY(map, chip, adr, 1);
|
||||||
@@ -1652,6 +1652,8 @@ static int __xipram do_write_oneword(str
|
@@ -1658,6 +1658,8 @@ static int __xipram do_write_oneword(str
|
||||||
|
goto retry;
|
||||||
ret = -EIO;
|
}
|
||||||
}
|
}
|
||||||
+
|
+
|
||||||
+ enable_xip:
|
+ enable_xip:
|
||||||
xip_enable(map, chip, adr);
|
xip_enable(map, chip, adr);
|
||||||
op_done:
|
op_done:
|
||||||
if (mode == FL_OTP_WRITE)
|
if (mode == FL_OTP_WRITE)
|
||||||
@@ -2230,7 +2232,6 @@ static int cfi_amdstd_panic_write(struct
|
@@ -2236,7 +2238,6 @@ static int cfi_amdstd_panic_write(struct
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -28,7 +26,7 @@
|
|||||||
/*
|
/*
|
||||||
* Handle devices with one erase region, that only implement
|
* Handle devices with one erase region, that only implement
|
||||||
* the chip erase command.
|
* the chip erase command.
|
||||||
@@ -2298,7 +2299,7 @@ static int __xipram do_erase_chip(struct
|
@@ -2304,7 +2305,7 @@ static int __xipram do_erase_chip(struct
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chip_good(map, adr, map_word_ff(map)))
|
if (chip_good(map, adr, map_word_ff(map)))
|
||||||
@ -37,7 +35,7 @@
|
|||||||
|
|
||||||
if (time_after(jiffies, timeo)) {
|
if (time_after(jiffies, timeo)) {
|
||||||
printk(KERN_WARNING "MTD %s(): software timeout\n",
|
printk(KERN_WARNING "MTD %s(): software timeout\n",
|
||||||
@@ -2322,6 +2323,7 @@ static int __xipram do_erase_chip(struct
|
@@ -2328,6 +2329,7 @@ static int __xipram do_erase_chip(struct
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,7 +43,7 @@
|
|||||||
chip->state = FL_READY;
|
chip->state = FL_READY;
|
||||||
xip_enable(map, chip, adr);
|
xip_enable(map, chip, adr);
|
||||||
DISABLE_VPP(map);
|
DISABLE_VPP(map);
|
||||||
@@ -2395,7 +2397,7 @@ static int __xipram do_erase_oneblock(st
|
@@ -2401,7 +2403,7 @@ static int __xipram do_erase_oneblock(st
|
||||||
|
|
||||||
if (chip_good(map, adr, map_word_ff(map))) {
|
if (chip_good(map, adr, map_word_ff(map))) {
|
||||||
xip_enable(map, chip, adr);
|
xip_enable(map, chip, adr);
|
||||||
@ -54,7 +52,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (time_after(jiffies, timeo)) {
|
if (time_after(jiffies, timeo)) {
|
||||||
@@ -2421,6 +2423,7 @@ static int __xipram do_erase_oneblock(st
|
@@ -2427,6 +2429,7 @@ static int __xipram do_erase_oneblock(st
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
/* Atmel chips don't use the same PRI format as AMD chips */
|
/* Atmel chips don't use the same PRI format as AMD chips */
|
||||||
static void fixup_convert_atmel_pri(struct mtd_info *mtd)
|
static void fixup_convert_atmel_pri(struct mtd_info *mtd)
|
||||||
@@ -1794,6 +1798,7 @@ static int cfi_amdstd_write_words(struct
|
@@ -1800,6 +1804,7 @@ static int cfi_amdstd_write_words(struct
|
||||||
/*
|
/*
|
||||||
* FIXME: interleaved mode not tested, and probably not supported!
|
* FIXME: interleaved mode not tested, and probably not supported!
|
||||||
*/
|
*/
|
||||||
@ -43,7 +43,7 @@
|
|||||||
static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip,
|
static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip,
|
||||||
unsigned long adr, const u_char *buf,
|
unsigned long adr, const u_char *buf,
|
||||||
int len)
|
int len)
|
||||||
@@ -1922,7 +1927,6 @@ static int __xipram do_write_buffer(stru
|
@@ -1928,7 +1933,6 @@ static int __xipram do_write_buffer(stru
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,7 +51,7 @@
|
|||||||
static int cfi_amdstd_write_buffers(struct mtd_info *mtd, loff_t to, size_t len,
|
static int cfi_amdstd_write_buffers(struct mtd_info *mtd, loff_t to, size_t len,
|
||||||
size_t *retlen, const u_char *buf)
|
size_t *retlen, const u_char *buf)
|
||||||
{
|
{
|
||||||
@@ -1997,6 +2001,7 @@ static int cfi_amdstd_write_buffers(stru
|
@@ -2003,6 +2007,7 @@ static int cfi_amdstd_write_buffers(stru
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1,26 +1,24 @@
|
|||||||
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
|
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||||
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
|
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||||
@@ -1635,8 +1635,8 @@ static int __xipram do_write_oneword(str
|
@@ -1641,7 +1641,7 @@ static int __xipram do_write_oneword(str
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- if (chip_ready(map, adr))
|
if (chip_good(map, adr, datum))
|
||||||
- break;
|
- break;
|
||||||
+ if (chip_good(map, adr, datum))
|
|
||||||
+ goto enable_xip;
|
+ goto enable_xip;
|
||||||
|
|
||||||
/* Latency issues. Drop the lock, wait a while and retry */
|
/* Latency issues. Drop the lock, wait a while and retry */
|
||||||
UDELAY(map, chip, adr, 1);
|
UDELAY(map, chip, adr, 1);
|
||||||
@@ -1652,6 +1652,8 @@ static int __xipram do_write_oneword(str
|
@@ -1658,6 +1658,8 @@ static int __xipram do_write_oneword(str
|
||||||
|
goto retry;
|
||||||
ret = -EIO;
|
}
|
||||||
}
|
}
|
||||||
+
|
+
|
||||||
+ enable_xip:
|
+ enable_xip:
|
||||||
xip_enable(map, chip, adr);
|
xip_enable(map, chip, adr);
|
||||||
op_done:
|
op_done:
|
||||||
if (mode == FL_OTP_WRITE)
|
if (mode == FL_OTP_WRITE)
|
||||||
@@ -2230,7 +2232,6 @@ static int cfi_amdstd_panic_write(struct
|
@@ -2236,7 +2238,6 @@ static int cfi_amdstd_panic_write(struct
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -28,7 +26,7 @@
|
|||||||
/*
|
/*
|
||||||
* Handle devices with one erase region, that only implement
|
* Handle devices with one erase region, that only implement
|
||||||
* the chip erase command.
|
* the chip erase command.
|
||||||
@@ -2298,7 +2299,7 @@ static int __xipram do_erase_chip(struct
|
@@ -2304,7 +2305,7 @@ static int __xipram do_erase_chip(struct
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chip_good(map, adr, map_word_ff(map)))
|
if (chip_good(map, adr, map_word_ff(map)))
|
||||||
@ -37,7 +35,7 @@
|
|||||||
|
|
||||||
if (time_after(jiffies, timeo)) {
|
if (time_after(jiffies, timeo)) {
|
||||||
printk(KERN_WARNING "MTD %s(): software timeout\n",
|
printk(KERN_WARNING "MTD %s(): software timeout\n",
|
||||||
@@ -2322,6 +2323,7 @@ static int __xipram do_erase_chip(struct
|
@@ -2328,6 +2329,7 @@ static int __xipram do_erase_chip(struct
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,7 +43,7 @@
|
|||||||
chip->state = FL_READY;
|
chip->state = FL_READY;
|
||||||
xip_enable(map, chip, adr);
|
xip_enable(map, chip, adr);
|
||||||
DISABLE_VPP(map);
|
DISABLE_VPP(map);
|
||||||
@@ -2395,7 +2397,7 @@ static int __xipram do_erase_oneblock(st
|
@@ -2401,7 +2403,7 @@ static int __xipram do_erase_oneblock(st
|
||||||
|
|
||||||
if (chip_good(map, adr, map_word_ff(map))) {
|
if (chip_good(map, adr, map_word_ff(map))) {
|
||||||
xip_enable(map, chip, adr);
|
xip_enable(map, chip, adr);
|
||||||
@ -54,7 +52,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (time_after(jiffies, timeo)) {
|
if (time_after(jiffies, timeo)) {
|
||||||
@@ -2421,6 +2423,7 @@ static int __xipram do_erase_oneblock(st
|
@@ -2427,6 +2429,7 @@ static int __xipram do_erase_oneblock(st
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,26 +1,24 @@
|
|||||||
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
|
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||||
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
|
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||||
@@ -1634,8 +1634,8 @@ static int __xipram do_write_oneword(str
|
@@ -1640,7 +1640,7 @@ static int __xipram do_write_oneword(str
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- if (chip_ready(map, adr))
|
if (chip_good(map, adr, datum))
|
||||||
- break;
|
- break;
|
||||||
+ if (chip_good(map, adr, datum))
|
|
||||||
+ goto enable_xip;
|
+ goto enable_xip;
|
||||||
|
|
||||||
/* Latency issues. Drop the lock, wait a while and retry */
|
/* Latency issues. Drop the lock, wait a while and retry */
|
||||||
UDELAY(map, chip, adr, 1);
|
UDELAY(map, chip, adr, 1);
|
||||||
@@ -1651,6 +1651,8 @@ static int __xipram do_write_oneword(str
|
@@ -1657,6 +1657,8 @@ static int __xipram do_write_oneword(str
|
||||||
|
goto retry;
|
||||||
ret = -EIO;
|
}
|
||||||
}
|
}
|
||||||
+
|
+
|
||||||
+ enable_xip:
|
+ enable_xip:
|
||||||
xip_enable(map, chip, adr);
|
xip_enable(map, chip, adr);
|
||||||
op_done:
|
op_done:
|
||||||
if (mode == FL_OTP_WRITE)
|
if (mode == FL_OTP_WRITE)
|
||||||
@@ -2229,7 +2231,6 @@ static int cfi_amdstd_panic_write(struct
|
@@ -2235,7 +2237,6 @@ static int cfi_amdstd_panic_write(struct
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -28,7 +26,7 @@
|
|||||||
/*
|
/*
|
||||||
* Handle devices with one erase region, that only implement
|
* Handle devices with one erase region, that only implement
|
||||||
* the chip erase command.
|
* the chip erase command.
|
||||||
@@ -2297,7 +2298,7 @@ static int __xipram do_erase_chip(struct
|
@@ -2303,7 +2304,7 @@ static int __xipram do_erase_chip(struct
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chip_good(map, adr, map_word_ff(map)))
|
if (chip_good(map, adr, map_word_ff(map)))
|
||||||
@ -37,7 +35,7 @@
|
|||||||
|
|
||||||
if (time_after(jiffies, timeo)) {
|
if (time_after(jiffies, timeo)) {
|
||||||
printk(KERN_WARNING "MTD %s(): software timeout\n",
|
printk(KERN_WARNING "MTD %s(): software timeout\n",
|
||||||
@@ -2321,6 +2322,7 @@ static int __xipram do_erase_chip(struct
|
@@ -2327,6 +2328,7 @@ static int __xipram do_erase_chip(struct
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,7 +43,7 @@
|
|||||||
chip->state = FL_READY;
|
chip->state = FL_READY;
|
||||||
xip_enable(map, chip, adr);
|
xip_enable(map, chip, adr);
|
||||||
DISABLE_VPP(map);
|
DISABLE_VPP(map);
|
||||||
@@ -2393,7 +2395,7 @@ static int __xipram do_erase_oneblock(st
|
@@ -2399,7 +2401,7 @@ static int __xipram do_erase_oneblock(st
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chip_good(map, adr, map_word_ff(map)))
|
if (chip_good(map, adr, map_word_ff(map)))
|
||||||
@ -54,7 +52,7 @@
|
|||||||
|
|
||||||
if (time_after(jiffies, timeo)) {
|
if (time_after(jiffies, timeo)) {
|
||||||
printk(KERN_WARNING "MTD %s(): software timeout\n",
|
printk(KERN_WARNING "MTD %s(): software timeout\n",
|
||||||
@@ -2417,6 +2419,7 @@ static int __xipram do_erase_oneblock(st
|
@@ -2423,6 +2425,7 @@ static int __xipram do_erase_oneblock(st
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
|||||||
|
|
||||||
struct bcm2835_dmadev {
|
struct bcm2835_dmadev {
|
||||||
struct dma_device ddev;
|
struct dma_device ddev;
|
||||||
@@ -912,6 +914,9 @@ static int bcm2835_dma_probe(struct plat
|
@@ -914,6 +916,9 @@ static int bcm2835_dma_probe(struct plat
|
||||||
base = devm_ioremap_resource(&pdev->dev, res);
|
base = devm_ioremap_resource(&pdev->dev, res);
|
||||||
if (IS_ERR(base))
|
if (IS_ERR(base))
|
||||||
return PTR_ERR(base);
|
return PTR_ERR(base);
|
||||||
@ -57,7 +57,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
|||||||
|
|
||||||
od->base = base;
|
od->base = base;
|
||||||
|
|
||||||
@@ -950,6 +955,9 @@ static int bcm2835_dma_probe(struct plat
|
@@ -952,6 +957,9 @@ static int bcm2835_dma_probe(struct plat
|
||||||
goto err_no_dma;
|
goto err_no_dma;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
|||||||
/* get irqs for each channel that we support */
|
/* get irqs for each channel that we support */
|
||||||
for (i = 0; i <= BCM2835_DMA_MAX_DMA_CHAN_SUPPORTED; i++) {
|
for (i = 0; i <= BCM2835_DMA_MAX_DMA_CHAN_SUPPORTED; i++) {
|
||||||
/* skip masked out channels */
|
/* skip masked out channels */
|
||||||
@@ -1024,6 +1032,7 @@ static int bcm2835_dma_remove(struct pla
|
@@ -1026,6 +1034,7 @@ static int bcm2835_dma_remove(struct pla
|
||||||
{
|
{
|
||||||
struct bcm2835_dmadev *od = platform_get_drvdata(pdev);
|
struct bcm2835_dmadev *od = platform_get_drvdata(pdev);
|
||||||
|
|
||||||
@ -75,7 +75,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
|||||||
dma_async_device_unregister(&od->ddev);
|
dma_async_device_unregister(&od->ddev);
|
||||||
bcm2835_dma_free(od);
|
bcm2835_dma_free(od);
|
||||||
|
|
||||||
@@ -1039,7 +1048,22 @@ static struct platform_driver bcm2835_dm
|
@@ -1041,7 +1050,22 @@ static struct platform_driver bcm2835_dm
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|||||||
static const struct of_device_id bcm2835_dma_of_match[] = {
|
static const struct of_device_id bcm2835_dma_of_match[] = {
|
||||||
{ .compatible = "brcm,bcm2835-dma", },
|
{ .compatible = "brcm,bcm2835-dma", },
|
||||||
{},
|
{},
|
||||||
@@ -964,6 +1064,13 @@ static int bcm2835_dma_probe(struct plat
|
@@ -966,6 +1066,13 @@ static int bcm2835_dma_probe(struct plat
|
||||||
/* Channel 0 is used by the legacy API */
|
/* Channel 0 is used by the legacy API */
|
||||||
chans_available &= ~BCM2835_DMA_BULK_MASK;
|
chans_available &= ~BCM2835_DMA_BULK_MASK;
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|||||||
|
|
||||||
--- a/drivers/mmc/host/sdhci.c
|
--- a/drivers/mmc/host/sdhci.c
|
||||||
+++ b/drivers/mmc/host/sdhci.c
|
+++ b/drivers/mmc/host/sdhci.c
|
||||||
@@ -2930,6 +2930,10 @@ static irqreturn_t sdhci_irq(int irq, vo
|
@@ -2932,6 +2932,10 @@ static irqreturn_t sdhci_irq(int irq, vo
|
||||||
result = IRQ_WAKE_THREAD;
|
result = IRQ_WAKE_THREAD;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -713,7 +713,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|||||||
|
|
||||||
if (!pdev->dev.dma_mask)
|
if (!pdev->dev.dma_mask)
|
||||||
pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask;
|
pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask;
|
||||||
@@ -1020,9 +1206,13 @@ static int bcm2835_dma_probe(struct plat
|
@@ -1022,9 +1208,13 @@ static int bcm2835_dma_probe(struct plat
|
||||||
base = devm_ioremap_resource(&pdev->dev, res);
|
base = devm_ioremap_resource(&pdev->dev, res);
|
||||||
if (IS_ERR(base))
|
if (IS_ERR(base))
|
||||||
return PTR_ERR(base);
|
return PTR_ERR(base);
|
||||||
@ -730,7 +730,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|||||||
|
|
||||||
od->base = base;
|
od->base = base;
|
||||||
|
|
||||||
@@ -1052,6 +1242,14 @@ static int bcm2835_dma_probe(struct plat
|
@@ -1054,6 +1244,14 @@ static int bcm2835_dma_probe(struct plat
|
||||||
|
|
||||||
platform_set_drvdata(pdev, od);
|
platform_set_drvdata(pdev, od);
|
||||||
|
|
||||||
@ -745,7 +745,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|||||||
/* Request DMA channel mask from device tree */
|
/* Request DMA channel mask from device tree */
|
||||||
if (of_property_read_u32(pdev->dev.of_node,
|
if (of_property_read_u32(pdev->dev.of_node,
|
||||||
"brcm,dma-channel-mask",
|
"brcm,dma-channel-mask",
|
||||||
@@ -1061,18 +1259,34 @@ static int bcm2835_dma_probe(struct plat
|
@@ -1063,18 +1261,34 @@ static int bcm2835_dma_probe(struct plat
|
||||||
goto err_no_dma;
|
goto err_no_dma;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -788,7 +788,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|||||||
/* skip masked out channels */
|
/* skip masked out channels */
|
||||||
if (!(chans_available & (1 << i))) {
|
if (!(chans_available & (1 << i))) {
|
||||||
irq[i] = -1;
|
irq[i] = -1;
|
||||||
@@ -1095,13 +1309,17 @@ static int bcm2835_dma_probe(struct plat
|
@@ -1097,13 +1311,17 @@ static int bcm2835_dma_probe(struct plat
|
||||||
irq[i] = platform_get_irq(pdev, i < 11 ? i : 11);
|
irq[i] = platform_get_irq(pdev, i < 11 ? i : 11);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -807,7 +807,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|||||||
irq_flags = 0;
|
irq_flags = 0;
|
||||||
for (j = 0; j <= BCM2835_DMA_MAX_DMA_CHAN_SUPPORTED; j++)
|
for (j = 0; j <= BCM2835_DMA_MAX_DMA_CHAN_SUPPORTED; j++)
|
||||||
if ((i != j) && (irq[j] == irq[i])) {
|
if ((i != j) && (irq[j] == irq[i])) {
|
||||||
@@ -1113,9 +1331,10 @@ static int bcm2835_dma_probe(struct plat
|
@@ -1115,9 +1333,10 @@ static int bcm2835_dma_probe(struct plat
|
||||||
rc = bcm2835_dma_chan_init(od, i, irq[i], irq_flags);
|
rc = bcm2835_dma_chan_init(od, i, irq[i], irq_flags);
|
||||||
if (rc)
|
if (rc)
|
||||||
goto err_no_dma;
|
goto err_no_dma;
|
||||||
@ -819,7 +819,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|||||||
|
|
||||||
/* Device-tree DMA controller registration */
|
/* Device-tree DMA controller registration */
|
||||||
rc = of_dma_controller_register(pdev->dev.of_node,
|
rc = of_dma_controller_register(pdev->dev.of_node,
|
||||||
@@ -1147,6 +1366,13 @@ static int bcm2835_dma_remove(struct pla
|
@@ -1149,6 +1368,13 @@ static int bcm2835_dma_remove(struct pla
|
||||||
|
|
||||||
bcm_dmaman_remove(pdev);
|
bcm_dmaman_remove(pdev);
|
||||||
dma_async_device_unregister(&od->ddev);
|
dma_async_device_unregister(&od->ddev);
|
||||||
|
@ -33,7 +33,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
|||||||
#define USB_VENDOR_ID_BELKIN 0x050d
|
#define USB_VENDOR_ID_BELKIN 0x050d
|
||||||
#define USB_DEVICE_ID_FLIP_KVM 0x3201
|
#define USB_DEVICE_ID_FLIP_KVM 0x3201
|
||||||
|
|
||||||
@@ -1188,6 +1191,9 @@
|
@@ -1189,6 +1192,9 @@
|
||||||
#define USB_VENDOR_ID_XAT 0x2505
|
#define USB_VENDOR_ID_XAT 0x2505
|
||||||
#define USB_DEVICE_ID_XAT_CSR 0x0220
|
#define USB_DEVICE_ID_XAT_CSR 0x0220
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
|||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH), HID_QUIRK_MULTI_INPUT },
|
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH), HID_QUIRK_MULTI_INPUT },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
|
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE2), HID_QUIRK_ALWAYS_POLL },
|
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE2), HID_QUIRK_ALWAYS_POLL },
|
||||||
@@ -173,6 +174,7 @@ static const struct hid_device_id hid_qu
|
@@ -174,6 +175,7 @@ static const struct hid_device_id hid_qu
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_SIRIUS_BATTERY_FREE_TABLET), HID_QUIRK_MULTI_INPUT },
|
{ HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_SIRIUS_BATTERY_FREE_TABLET), HID_QUIRK_MULTI_INPUT },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD2, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
|
{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD2, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
|
{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
|
||||||
|
@ -55,7 +55,7 @@ Cc: Kir Kolyshkin <kir@openvz.org>
|
|||||||
rwlock_t sk_callback_lock;
|
rwlock_t sk_callback_lock;
|
||||||
--- a/net/core/sock.c
|
--- a/net/core/sock.c
|
||||||
+++ b/net/core/sock.c
|
+++ b/net/core/sock.c
|
||||||
@@ -2740,6 +2740,7 @@ void sock_init_data(struct socket *sock,
|
@@ -2745,6 +2745,7 @@ void sock_init_data(struct socket *sock,
|
||||||
|
|
||||||
sk->sk_max_pacing_rate = ~0U;
|
sk->sk_max_pacing_rate = ~0U;
|
||||||
sk->sk_pacing_rate = ~0U;
|
sk->sk_pacing_rate = ~0U;
|
||||||
|
@ -55,7 +55,7 @@ Cc: Kir Kolyshkin <kir@openvz.org>
|
|||||||
rwlock_t sk_callback_lock;
|
rwlock_t sk_callback_lock;
|
||||||
--- a/net/core/sock.c
|
--- a/net/core/sock.c
|
||||||
+++ b/net/core/sock.c
|
+++ b/net/core/sock.c
|
||||||
@@ -2479,6 +2479,7 @@ void sock_init_data(struct socket *sock,
|
@@ -2484,6 +2484,7 @@ void sock_init_data(struct socket *sock,
|
||||||
|
|
||||||
sk->sk_max_pacing_rate = ~0U;
|
sk->sk_max_pacing_rate = ~0U;
|
||||||
sk->sk_pacing_rate = ~0U;
|
sk->sk_pacing_rate = ~0U;
|
||||||
|
@ -1379,7 +1379,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
*/
|
*/
|
||||||
--- a/drivers/net/xen-netfront.c
|
--- a/drivers/net/xen-netfront.c
|
||||||
+++ b/drivers/net/xen-netfront.c
|
+++ b/drivers/net/xen-netfront.c
|
||||||
@@ -1070,7 +1070,7 @@ err:
|
@@ -1071,7 +1071,7 @@ err:
|
||||||
if (work_done < budget) {
|
if (work_done < budget) {
|
||||||
int more_to_do = 0;
|
int more_to_do = 0;
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -1241,7 +1241,6 @@ all: modules
|
@@ -1243,7 +1243,6 @@ all: modules
|
||||||
|
|
||||||
PHONY += modules
|
PHONY += modules
|
||||||
modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
|
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.';
|
@$(kecho) ' Building modules, stage 2.';
|
||||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
|
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
|
||||||
|
|
||||||
@@ -1270,7 +1269,6 @@ _modinst_:
|
@@ -1272,7 +1271,6 @@ _modinst_:
|
||||||
rm -f $(MODLIB)/build ; \
|
rm -f $(MODLIB)/build ; \
|
||||||
ln -s $(CURDIR) $(MODLIB)/build ; \
|
ln -s $(CURDIR) $(MODLIB)/build ; \
|
||||||
fi
|
fi
|
||||||
|
@ -44,7 +44,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
device, it has to decide which ones to send first, which ones to
|
device, it has to decide which ones to send first, which ones to
|
||||||
--- a/net/sched/sch_api.c
|
--- a/net/sched/sch_api.c
|
||||||
+++ b/net/sched/sch_api.c
|
+++ b/net/sched/sch_api.c
|
||||||
@@ -2028,7 +2028,7 @@ static int __init pktsched_init(void)
|
@@ -2029,7 +2029,7 @@ static int __init pktsched_init(void)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie)
|
struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie)
|
||||||
{
|
{
|
||||||
struct dst_entry *dst = __sk_dst_get(sk);
|
struct dst_entry *dst = __sk_dst_get(sk);
|
||||||
@@ -1593,9 +1605,11 @@ void sk_destruct(struct sock *sk)
|
@@ -1598,9 +1610,11 @@ void sk_destruct(struct sock *sk)
|
||||||
|
|
||||||
static void __sk_free(struct sock *sk)
|
static void __sk_free(struct sock *sk)
|
||||||
{
|
{
|
||||||
|
@ -327,7 +327,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/net/core/sock.c
|
--- a/net/core/sock.c
|
||||||
+++ b/net/core/sock.c
|
+++ b/net/core/sock.c
|
||||||
@@ -3379,6 +3379,8 @@ static __net_initdata struct pernet_oper
|
@@ -3384,6 +3384,8 @@ static __net_initdata struct pernet_oper
|
||||||
|
|
||||||
static int __init proto_init(void)
|
static int __init proto_init(void)
|
||||||
{
|
{
|
||||||
|
@ -0,0 +1,164 @@
|
|||||||
|
From: Evan Green <evgreen@chromium.org>
|
||||||
|
Subject: [PATCH v5 0/2] loop: Better discard for block devices
|
||||||
|
Date: Mon, 6 May 2019 11:27:35 -0700
|
||||||
|
Message-Id: <20190506182736.21064-2-evgreen@chromium.org>
|
||||||
|
|
||||||
|
This series addresses some errors seen when using the loop
|
||||||
|
device directly backed by a block device.
|
||||||
|
|
||||||
|
The first change titled "loop: Better discard for block devices"
|
||||||
|
plumbs out the correct error message, and the second change prevents
|
||||||
|
the error from occurring in many cases.
|
||||||
|
|
||||||
|
The errors look like this:
|
||||||
|
[ 90.880875] print_req_error: I/O error, dev loop5, sector 0
|
||||||
|
|
||||||
|
The errors occur when trying to do a discard or write zeroes operation
|
||||||
|
on a loop device backed by a block device that does not support write zeroes.
|
||||||
|
Firstly, the error itself is incorrectly reported as I/O error, but is
|
||||||
|
actually EOPNOTSUPP. The first patch plumbs out EOPNOTSUPP to properly
|
||||||
|
report the error.
|
||||||
|
|
||||||
|
The second patch called "loop: Better discard support for block devices"
|
||||||
|
prevents these errors from occurring by mirroring the zeroing capabilities
|
||||||
|
of the underlying block device into the loop device.
|
||||||
|
Before this change, discard was always reported as being supported, and
|
||||||
|
the loop device simply turns around and does an fallocate operation on the
|
||||||
|
backing device. After this change, backing block devices that do support
|
||||||
|
zeroing will continue to work as before, and continue to get all the
|
||||||
|
benefits of doing that. Backing devices that do not support zeroing will
|
||||||
|
fail earlier, avoiding hitting the loop device at all and ultimately
|
||||||
|
avoiding this error in the logs.
|
||||||
|
|
||||||
|
I can also confirm that this fixes test block/003 in the blktests, when
|
||||||
|
running blktests on a loop device backed by a block device.
|
||||||
|
|
||||||
|
Signed-off-by: Evan Green <evgreen@chromium.org>
|
||||||
|
Reviewed-by: Ming Lei <ming.lei@redhat.com>
|
||||||
|
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
|
||||||
|
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
|
||||||
|
Reviewed-by: Gwendal Grignou <gwendal@chromium.org>
|
||||||
|
Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
|
||||||
|
---
|
||||||
|
|
||||||
|
--- a/drivers/block/loop.c
|
||||||
|
+++ b/drivers/block/loop.c
|
||||||
|
@@ -416,19 +416,14 @@ out_free_page:
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int lo_discard(struct loop_device *lo, struct request *rq, loff_t pos)
|
||||||
|
+static int lo_discard(struct loop_device *lo, struct request *rq,
|
||||||
|
+ int mode, loff_t pos)
|
||||||
|
{
|
||||||
|
- /*
|
||||||
|
- * We use punch hole to reclaim the free space used by the
|
||||||
|
- * image a.k.a. discard. However we do not support discard if
|
||||||
|
- * encryption is enabled, because it may give an attacker
|
||||||
|
- * useful information.
|
||||||
|
- */
|
||||||
|
struct file *file = lo->lo_backing_file;
|
||||||
|
- int mode = FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE;
|
||||||
|
+ struct request_queue *q = lo->lo_queue;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
- if ((!file->f_op->fallocate) || lo->lo_encrypt_key_size) {
|
||||||
|
+ if (!blk_queue_discard(q)) {
|
||||||
|
ret = -EOPNOTSUPP;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
@@ -457,7 +452,9 @@ static void lo_complete_rq(struct reques
|
||||||
|
|
||||||
|
if (!cmd->use_aio || cmd->ret < 0 || cmd->ret == blk_rq_bytes(rq) ||
|
||||||
|
req_op(rq) != REQ_OP_READ) {
|
||||||
|
- if (cmd->ret < 0)
|
||||||
|
+ if (cmd->ret == -EOPNOTSUPP)
|
||||||
|
+ ret = BLK_STS_NOTSUPP;
|
||||||
|
+ else if (cmd->ret < 0)
|
||||||
|
ret = BLK_STS_IOERR;
|
||||||
|
goto end_io;
|
||||||
|
}
|
||||||
|
@@ -597,8 +594,13 @@ static int do_req_filebacked(struct loop
|
||||||
|
case REQ_OP_FLUSH:
|
||||||
|
return lo_req_flush(lo, rq);
|
||||||
|
case REQ_OP_DISCARD:
|
||||||
|
+ return lo_discard(lo, rq,
|
||||||
|
+ FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, pos);
|
||||||
|
+
|
||||||
|
case REQ_OP_WRITE_ZEROES:
|
||||||
|
- return lo_discard(lo, rq, pos);
|
||||||
|
+ return lo_discard(lo, rq,
|
||||||
|
+ FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE, pos);
|
||||||
|
+
|
||||||
|
case REQ_OP_WRITE:
|
||||||
|
if (lo->transfer)
|
||||||
|
return lo_write_transfer(lo, rq, pos);
|
||||||
|
@@ -853,6 +855,21 @@ static void loop_config_discard(struct l
|
||||||
|
struct file *file = lo->lo_backing_file;
|
||||||
|
struct inode *inode = file->f_mapping->host;
|
||||||
|
struct request_queue *q = lo->lo_queue;
|
||||||
|
+ struct request_queue *backingq;
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
+ * If the backing device is a block device, mirror its zeroing
|
||||||
|
+ * capability. REQ_OP_DISCARD translates to a zero-out even when backed
|
||||||
|
+ * by block devices to keep consistent behavior with file-backed loop
|
||||||
|
+ * devices.
|
||||||
|
+ */
|
||||||
|
+ if (S_ISBLK(inode->i_mode) && !lo->lo_encrypt_key_size) {
|
||||||
|
+ backingq = bdev_get_queue(inode->i_bdev);
|
||||||
|
+ blk_queue_max_discard_sectors(q,
|
||||||
|
+ backingq->limits.max_write_zeroes_sectors);
|
||||||
|
+
|
||||||
|
+ blk_queue_max_write_zeroes_sectors(q,
|
||||||
|
+ backingq->limits.max_write_zeroes_sectors);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We use punch hole to reclaim the free space used by the
|
||||||
|
@@ -860,22 +877,24 @@ static void loop_config_discard(struct l
|
||||||
|
* encryption is enabled, because it may give an attacker
|
||||||
|
* useful information.
|
||||||
|
*/
|
||||||
|
- if ((!file->f_op->fallocate) ||
|
||||||
|
- lo->lo_encrypt_key_size) {
|
||||||
|
+ } else if ((!file->f_op->fallocate) || lo->lo_encrypt_key_size) {
|
||||||
|
q->limits.discard_granularity = 0;
|
||||||
|
q->limits.discard_alignment = 0;
|
||||||
|
blk_queue_max_discard_sectors(q, 0);
|
||||||
|
blk_queue_max_write_zeroes_sectors(q, 0);
|
||||||
|
- blk_queue_flag_clear(QUEUE_FLAG_DISCARD, q);
|
||||||
|
- return;
|
||||||
|
- }
|
||||||
|
|
||||||
|
- q->limits.discard_granularity = inode->i_sb->s_blocksize;
|
||||||
|
- q->limits.discard_alignment = 0;
|
||||||
|
+ } else {
|
||||||
|
+ q->limits.discard_granularity = inode->i_sb->s_blocksize;
|
||||||
|
+ q->limits.discard_alignment = 0;
|
||||||
|
|
||||||
|
- blk_queue_max_discard_sectors(q, UINT_MAX >> 9);
|
||||||
|
- blk_queue_max_write_zeroes_sectors(q, UINT_MAX >> 9);
|
||||||
|
- blk_queue_flag_set(QUEUE_FLAG_DISCARD, q);
|
||||||
|
+ blk_queue_max_discard_sectors(q, UINT_MAX >> 9);
|
||||||
|
+ blk_queue_max_write_zeroes_sectors(q, UINT_MAX >> 9);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (q->limits.max_write_zeroes_sectors)
|
||||||
|
+ blk_queue_flag_set(QUEUE_FLAG_DISCARD, q);
|
||||||
|
+ else
|
||||||
|
+ blk_queue_flag_clear(QUEUE_FLAG_DISCARD, q);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void loop_unprepare_queue(struct loop_device *lo)
|
||||||
|
@@ -1894,7 +1913,10 @@ static void loop_handle_cmd(struct loop_
|
||||||
|
failed:
|
||||||
|
/* complete non-aio request */
|
||||||
|
if (!cmd->use_aio || ret) {
|
||||||
|
- cmd->ret = ret ? -EIO : 0;
|
||||||
|
+ if (ret == -EOPNOTSUPP)
|
||||||
|
+ cmd->ret = ret;
|
||||||
|
+ else
|
||||||
|
+ cmd->ret = ret ? -EIO : 0;
|
||||||
|
blk_mq_complete_request(rq);
|
||||||
|
}
|
||||||
|
}
|
@ -44,7 +44,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
device, it has to decide which ones to send first, which ones to
|
device, it has to decide which ones to send first, which ones to
|
||||||
--- a/net/sched/sch_api.c
|
--- a/net/sched/sch_api.c
|
||||||
+++ b/net/sched/sch_api.c
|
+++ b/net/sched/sch_api.c
|
||||||
@@ -2157,7 +2157,7 @@ static int __init pktsched_init(void)
|
@@ -2160,7 +2160,7 @@ static int __init pktsched_init(void)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie)
|
struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie)
|
||||||
{
|
{
|
||||||
struct dst_entry *dst = __sk_dst_get(sk);
|
struct dst_entry *dst = __sk_dst_get(sk);
|
||||||
@@ -1598,9 +1610,11 @@ static void __sk_free(struct sock *sk)
|
@@ -1603,9 +1615,11 @@ static void __sk_free(struct sock *sk)
|
||||||
if (likely(sk->sk_net_refcnt))
|
if (likely(sk->sk_net_refcnt))
|
||||||
sock_inuse_add(sock_net(sk), -1);
|
sock_inuse_add(sock_net(sk), -1);
|
||||||
|
|
||||||
|
@ -327,7 +327,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/net/core/sock.c
|
--- a/net/core/sock.c
|
||||||
+++ b/net/core/sock.c
|
+++ b/net/core/sock.c
|
||||||
@@ -3480,6 +3480,8 @@ static __net_initdata struct pernet_oper
|
@@ -3485,6 +3485,8 @@ static __net_initdata struct pernet_oper
|
||||||
|
|
||||||
static int __init proto_init(void)
|
static int __init proto_init(void)
|
||||||
{
|
{
|
||||||
|
@ -41,7 +41,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
obj-$(CONFIG_PROC_FS) += net-procfs.o
|
obj-$(CONFIG_PROC_FS) += net-procfs.o
|
||||||
--- a/net/core/sock.c
|
--- a/net/core/sock.c
|
||||||
+++ b/net/core/sock.c
|
+++ b/net/core/sock.c
|
||||||
@@ -1458,9 +1458,11 @@ void sk_destruct(struct sock *sk)
|
@@ -1463,9 +1463,11 @@ void sk_destruct(struct sock *sk)
|
||||||
|
|
||||||
static void __sk_free(struct sock *sk)
|
static void __sk_free(struct sock *sk)
|
||||||
{
|
{
|
||||||
|
@ -328,7 +328,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/net/core/sock.c
|
--- a/net/core/sock.c
|
||||||
+++ b/net/core/sock.c
|
+++ b/net/core/sock.c
|
||||||
@@ -3088,6 +3088,8 @@ static __net_initdata struct pernet_oper
|
@@ -3093,6 +3093,8 @@ static __net_initdata struct pernet_oper
|
||||||
|
|
||||||
static int __init proto_init(void)
|
static int __init proto_init(void)
|
||||||
{
|
{
|
||||||
|
@ -18,7 +18,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|||||||
|
|
||||||
--- a/usr/Makefile
|
--- a/usr/Makefile
|
||||||
+++ b/usr/Makefile
|
+++ b/usr/Makefile
|
||||||
@@ -39,20 +39,22 @@ ifneq ($(wildcard $(obj)/$(datafile_d_y)
|
@@ -42,20 +42,22 @@ ifneq ($(wildcard $(obj)/$(datafile_d_y)
|
||||||
include $(obj)/$(datafile_d_y)
|
include $(obj)/$(datafile_d_y)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ Signed-off-by: George Kashperko <george@znau.edu.ua>
|
|||||||
1 file changed, 1 insertion(+)
|
1 file changed, 1 insertion(+)
|
||||||
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
|
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||||
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
|
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||||
@@ -1833,6 +1833,7 @@ static int __xipram do_write_buffer(stru
|
@@ -1839,6 +1839,7 @@ static int __xipram do_write_buffer(stru
|
||||||
|
|
||||||
/* Write Buffer Load */
|
/* Write Buffer Load */
|
||||||
map_write(map, CMD(0x25), cmd_adr);
|
map_write(map, CMD(0x25), cmd_adr);
|
||||||
|
@ -18,7 +18,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|||||||
|
|
||||||
--- a/usr/Makefile
|
--- a/usr/Makefile
|
||||||
+++ b/usr/Makefile
|
+++ b/usr/Makefile
|
||||||
@@ -39,20 +39,22 @@ ifneq ($(wildcard $(obj)/$(datafile_d_y)
|
@@ -42,20 +42,22 @@ ifneq ($(wildcard $(obj)/$(datafile_d_y)
|
||||||
include $(obj)/$(datafile_d_y)
|
include $(obj)/$(datafile_d_y)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ Signed-off-by: George Kashperko <george@znau.edu.ua>
|
|||||||
1 file changed, 1 insertion(+)
|
1 file changed, 1 insertion(+)
|
||||||
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
|
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||||
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
|
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||||
@@ -1832,6 +1832,7 @@ static int __xipram do_write_buffer(stru
|
@@ -1838,6 +1838,7 @@ static int __xipram do_write_buffer(stru
|
||||||
|
|
||||||
/* Write Buffer Load */
|
/* Write Buffer Load */
|
||||||
map_write(map, CMD(0x25), cmd_adr);
|
map_write(map, CMD(0x25), cmd_adr);
|
||||||
|
@ -7,7 +7,7 @@ Signed-off-by: George Kashperko <george@znau.edu.ua>
|
|||||||
1 file changed, 1 insertion(+)
|
1 file changed, 1 insertion(+)
|
||||||
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
|
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||||
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
|
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||||
@@ -1829,6 +1829,7 @@ static int __xipram do_write_buffer(stru
|
@@ -1835,6 +1835,7 @@ static int __xipram do_write_buffer(stru
|
||||||
|
|
||||||
/* Write Buffer Load */
|
/* Write Buffer Load */
|
||||||
map_write(map, CMD(0x25), cmd_adr);
|
map_write(map, CMD(0x25), cmd_adr);
|
||||||
|
@ -497,7 +497,7 @@ Signed-off-by: Yinbo Zhu <yinbo.zhu@nxp.com>
|
|||||||
.name = "sdhci-esdhc",
|
.name = "sdhci-esdhc",
|
||||||
--- a/drivers/mmc/host/sdhci.c
|
--- a/drivers/mmc/host/sdhci.c
|
||||||
+++ b/drivers/mmc/host/sdhci.c
|
+++ b/drivers/mmc/host/sdhci.c
|
||||||
@@ -2148,7 +2148,7 @@ static void sdhci_send_tuning(struct sdh
|
@@ -2150,7 +2150,7 @@ static void sdhci_send_tuning(struct sdh
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -506,7 +506,7 @@ Signed-off-by: Yinbo Zhu <yinbo.zhu@nxp.com>
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -2165,13 +2165,13 @@ static void __sdhci_execute_tuning(struc
|
@@ -2167,13 +2167,13 @@ static void __sdhci_execute_tuning(struc
|
||||||
pr_info("%s: Tuning timeout, falling back to fixed sampling clock\n",
|
pr_info("%s: Tuning timeout, falling back to fixed sampling clock\n",
|
||||||
mmc_hostname(host->mmc));
|
mmc_hostname(host->mmc));
|
||||||
sdhci_abort_tuning(host, opcode);
|
sdhci_abort_tuning(host, opcode);
|
||||||
@ -522,7 +522,7 @@ Signed-off-by: Yinbo Zhu <yinbo.zhu@nxp.com>
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2183,6 +2183,7 @@ static void __sdhci_execute_tuning(struc
|
@@ -2185,6 +2185,7 @@ static void __sdhci_execute_tuning(struc
|
||||||
pr_info("%s: Tuning failed, falling back to fixed sampling clock\n",
|
pr_info("%s: Tuning failed, falling back to fixed sampling clock\n",
|
||||||
mmc_hostname(host->mmc));
|
mmc_hostname(host->mmc));
|
||||||
sdhci_reset_tuning(host);
|
sdhci_reset_tuning(host);
|
||||||
@ -530,7 +530,7 @@ Signed-off-by: Yinbo Zhu <yinbo.zhu@nxp.com>
|
|||||||
}
|
}
|
||||||
|
|
||||||
int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode)
|
int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode)
|
||||||
@@ -2244,7 +2245,7 @@ int sdhci_execute_tuning(struct mmc_host
|
@@ -2246,7 +2247,7 @@ int sdhci_execute_tuning(struct mmc_host
|
||||||
|
|
||||||
sdhci_start_tuning(host);
|
sdhci_start_tuning(host);
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ Signed-off-by: Michael Gray <michael.gray@lantisproject.com>
|
|||||||
|
|
||||||
--- a/arch/arm/Kconfig
|
--- a/arch/arm/Kconfig
|
||||||
+++ b/arch/arm/Kconfig
|
+++ b/arch/arm/Kconfig
|
||||||
@@ -1925,6 +1925,17 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN
|
@@ -1926,6 +1926,17 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN
|
||||||
The command-line arguments provided by the boot loader will be
|
The command-line arguments provided by the boot loader will be
|
||||||
appended to the the device tree bootargs property.
|
appended to the the device tree bootargs property.
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ Subject: [PATCH 37/53] mtd: cfi cmdset 0002 force word write
|
|||||||
|
|
||||||
/* Atmel chips don't use the same PRI format as AMD chips */
|
/* Atmel chips don't use the same PRI format as AMD chips */
|
||||||
static void fixup_convert_atmel_pri(struct mtd_info *mtd)
|
static void fixup_convert_atmel_pri(struct mtd_info *mtd)
|
||||||
@@ -1792,6 +1796,7 @@ static int cfi_amdstd_write_words(struct
|
@@ -1798,6 +1802,7 @@ static int cfi_amdstd_write_words(struct
|
||||||
/*
|
/*
|
||||||
* FIXME: interleaved mode not tested, and probably not supported!
|
* FIXME: interleaved mode not tested, and probably not supported!
|
||||||
*/
|
*/
|
||||||
@ -52,7 +52,7 @@ Subject: [PATCH 37/53] mtd: cfi cmdset 0002 force word write
|
|||||||
static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip,
|
static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip,
|
||||||
unsigned long adr, const u_char *buf,
|
unsigned long adr, const u_char *buf,
|
||||||
int len)
|
int len)
|
||||||
@@ -1920,7 +1925,6 @@ static int __xipram do_write_buffer(stru
|
@@ -1926,7 +1931,6 @@ static int __xipram do_write_buffer(stru
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,7 +60,7 @@ Subject: [PATCH 37/53] mtd: cfi cmdset 0002 force word write
|
|||||||
static int cfi_amdstd_write_buffers(struct mtd_info *mtd, loff_t to, size_t len,
|
static int cfi_amdstd_write_buffers(struct mtd_info *mtd, loff_t to, size_t len,
|
||||||
size_t *retlen, const u_char *buf)
|
size_t *retlen, const u_char *buf)
|
||||||
{
|
{
|
||||||
@@ -1995,6 +1999,7 @@ static int cfi_amdstd_write_buffers(stru
|
@@ -2001,6 +2005,7 @@ static int cfi_amdstd_write_buffers(stru
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user