mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 04:13:31 +00:00
kernel: bump to 4.9.223, 4.14.180, 4.19.122 (#4600)
* kernel: bump 4.9 to 4.9.223 Refreshed all patches. Fixes: - CVE-2020-12114 Compile-tested on: ar71xx Runtime-tested on: ar71xx Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com> * kernel: bump 4.14 to 4.14.180 Refreshed all patches. Fixes: - CVE-2020-12114 - CVE-2020-11669 Compile-tested on: pistachio Runtime-tested on: none Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com> * kernel: bump 4.19 to 4.19.122 Refreshed all patches. Remove upstreamed: - 551-loop-Better-discard-support-for-block-devices.patch Fixed: - CVE-2020-11884 - CVE-2020-12114 - CVE-2019-3016 - CVE-2020-11669 Compile-tested on: cns3xxx Runtime-tested on: cns3xxx Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com> Co-authored-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
This commit is contained in:
parent
8ad037aed4
commit
c985a54a61
@ -6,13 +6,13 @@ ifdef CONFIG_TESTING_KERNEL
|
||||
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
|
||||
endif
|
||||
|
||||
LINUX_VERSION-4.9 = .219
|
||||
LINUX_VERSION-4.14 = .176
|
||||
LINUX_VERSION-4.19 = .115
|
||||
LINUX_VERSION-4.9 = .223
|
||||
LINUX_VERSION-4.14 = .180
|
||||
LINUX_VERSION-4.19 = .122
|
||||
|
||||
LINUX_KERNEL_HASH-4.9.219 = 6b17238cced3e1c2753d6d5b4f662bd347d4651f07c35506b849eb10aea7bc44
|
||||
LINUX_KERNEL_HASH-4.14.176 = bcae0956baaeb55dab5bad0401873fbc5baaa7fbe957ea6d27a5ab241cec5ca2
|
||||
LINUX_KERNEL_HASH-4.19.115 = 11b2d97c8ea5ceb40c5e1d0bb87ad5b2b8c84560181bc60c0d28ec3a3e3801c2
|
||||
LINUX_KERNEL_HASH-4.9.223 = cf5300e6f5d8c66c2bed8f00d53f9c58103731809862427012e4010f5d782ae5
|
||||
LINUX_KERNEL_HASH-4.14.180 = 444ef973d9b6a6ea174e4a9086f0aea980d8575d13302e431ad688f22e27ed0e
|
||||
LINUX_KERNEL_HASH-4.19.122 = 5050268ec5cf003d96366d1611ecfa4ab6974125d6fa26cea1ccb81dd4df00a5
|
||||
|
||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
||||
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
||||
|
@ -43,7 +43,7 @@
|
||||
static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip,
|
||||
unsigned long adr, const u_char *buf,
|
||||
int len)
|
||||
@@ -1926,7 +1931,6 @@ static int __xipram do_write_buffer(stru
|
||||
@@ -1930,7 +1935,6 @@ static int __xipram do_write_buffer(stru
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
static int cfi_amdstd_write_buffers(struct mtd_info *mtd, loff_t to, size_t len,
|
||||
size_t *retlen, const u_char *buf)
|
||||
{
|
||||
@@ -2001,6 +2005,7 @@ static int cfi_amdstd_write_buffers(stru
|
||||
@@ -2005,6 +2009,7 @@ static int cfi_amdstd_write_buffers(stru
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -325,7 +325,7 @@
|
||||
for (p = *head; p; p = p->next) {
|
||||
--- a/net/ipv4/route.c
|
||||
+++ b/net/ipv4/route.c
|
||||
@@ -466,7 +466,7 @@ static struct neighbour *ipv4_neigh_look
|
||||
@@ -464,7 +464,7 @@ static struct neighbour *ipv4_neigh_look
|
||||
else if (skb)
|
||||
pkey = &ip_hdr(skb)->daddr;
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
||||
xip_enable(map, chip, adr);
|
||||
op_done:
|
||||
if (mode == FL_OTP_WRITE)
|
||||
@@ -2232,7 +2234,6 @@ static int cfi_amdstd_panic_write(struct
|
||||
@@ -2236,7 +2238,6 @@ static int cfi_amdstd_panic_write(struct
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -26,7 +26,7 @@
|
||||
/*
|
||||
* Handle devices with one erase region, that only implement
|
||||
* the chip erase command.
|
||||
@@ -2300,7 +2301,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)))
|
||||
@ -35,7 +35,7 @@
|
||||
|
||||
if (time_after(jiffies, timeo)) {
|
||||
printk(KERN_WARNING "MTD %s(): software timeout\n",
|
||||
@@ -2324,6 +2325,7 @@ static int __xipram do_erase_chip(struct
|
||||
@@ -2328,6 +2329,7 @@ static int __xipram do_erase_chip(struct
|
||||
}
|
||||
}
|
||||
|
||||
@ -43,7 +43,7 @@
|
||||
chip->state = FL_READY;
|
||||
xip_enable(map, chip, adr);
|
||||
DISABLE_VPP(map);
|
||||
@@ -2397,7 +2399,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))) {
|
||||
xip_enable(map, chip, adr);
|
||||
@ -52,7 +52,7 @@
|
||||
}
|
||||
|
||||
if (time_after(jiffies, timeo)) {
|
||||
@@ -2423,6 +2425,7 @@ static int __xipram do_erase_oneblock(st
|
||||
@@ -2427,6 +2429,7 @@ static int __xipram do_erase_oneblock(st
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -43,7 +43,7 @@
|
||||
static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip,
|
||||
unsigned long adr, const u_char *buf,
|
||||
int len)
|
||||
@@ -1924,7 +1929,6 @@ static int __xipram do_write_buffer(stru
|
||||
@@ -1928,7 +1933,6 @@ static int __xipram do_write_buffer(stru
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
static int cfi_amdstd_write_buffers(struct mtd_info *mtd, loff_t to, size_t len,
|
||||
size_t *retlen, const u_char *buf)
|
||||
{
|
||||
@@ -1999,6 +2003,7 @@ static int cfi_amdstd_write_buffers(stru
|
||||
@@ -2003,6 +2007,7 @@ static int cfi_amdstd_write_buffers(stru
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -316,7 +316,7 @@
|
||||
for (p = *head; p; p = p->next) {
|
||||
--- a/net/ipv4/route.c
|
||||
+++ b/net/ipv4/route.c
|
||||
@@ -461,7 +461,7 @@ static struct neighbour *ipv4_neigh_look
|
||||
@@ -459,7 +459,7 @@ static struct neighbour *ipv4_neigh_look
|
||||
else if (skb)
|
||||
pkey = &ip_hdr(skb)->daddr;
|
||||
|
||||
|
@ -917,7 +917,7 @@ Fixes https://github.com/raspberrypi/linux/issues/2408
|
||||
}
|
||||
--- a/drivers/usb/core/hub.c
|
||||
+++ b/drivers/usb/core/hub.c
|
||||
@@ -5228,7 +5228,7 @@ static void port_event(struct usb_hub *h
|
||||
@@ -5246,7 +5246,7 @@ static void port_event(struct usb_hub *h
|
||||
u16 status = 0, unused;
|
||||
port_dev->over_current_count++;
|
||||
|
||||
@ -928,7 +928,7 @@ Fixes https://github.com/raspberrypi/linux/issues/2408
|
||||
USB_PORT_FEAT_C_OVER_CURRENT);
|
||||
--- a/drivers/usb/core/message.c
|
||||
+++ b/drivers/usb/core/message.c
|
||||
@@ -1993,6 +1993,85 @@ free_interfaces:
|
||||
@@ -2000,6 +2000,85 @@ free_interfaces:
|
||||
if (cp->string == NULL &&
|
||||
!(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS))
|
||||
cp->string = usb_cache_string(dev, cp->desc.iConfiguration);
|
||||
|
@ -156,7 +156,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm283x.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm283x.dtsi
|
||||
@@ -565,6 +565,32 @@
|
||||
@@ -566,6 +566,32 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
@ -18,7 +18,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
|
||||
@@ -2147,7 +2147,7 @@ static void bcmgenet_init_tx_ring(struct
|
||||
@@ -2150,7 +2150,7 @@ static void bcmgenet_init_tx_ring(struct
|
||||
|
||||
bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_PROD_INDEX);
|
||||
bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_CONS_INDEX);
|
||||
@ -27,7 +27,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
/* Disable rate control for now */
|
||||
bcmgenet_tdma_ring_writel(priv, index, flow_period_val,
|
||||
TDMA_FLOW_PERIOD);
|
||||
@@ -3576,9 +3576,12 @@ static int bcmgenet_probe(struct platfor
|
||||
@@ -3580,9 +3580,12 @@ static int bcmgenet_probe(struct platfor
|
||||
netif_set_real_num_rx_queues(priv->dev, priv->hw_params->rx_queues + 1);
|
||||
|
||||
/* Set default coalescing parameters */
|
||||
|
@ -159,8 +159,8 @@ Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
|
||||
jtag_gpio22: jtag_gpio22 {
|
||||
brcm,pins = <22 23 24 25 26 27>;
|
||||
brcm,function = <BCM2835_FSEL_ALT4>;
|
||||
@@ -487,14 +460,6 @@
|
||||
|
||||
@@ -488,14 +461,6 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
- thermal: thermal@7e212000 {
|
||||
@ -174,7 +174,7 @@ Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
|
||||
aux: aux@7e215000 {
|
||||
compatible = "brcm,bcm2835-aux";
|
||||
#clock-cells = <1>;
|
||||
@@ -660,12 +625,6 @@
|
||||
@@ -661,12 +626,6 @@
|
||||
phy-names = "usb2-phy";
|
||||
};
|
||||
|
||||
|
@ -46,7 +46,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
* have been called previously. Use for set_configuration, set_interface,
|
||||
--- a/drivers/usb/core/message.c
|
||||
+++ b/drivers/usb/core/message.c
|
||||
@@ -1113,6 +1113,21 @@ static void remove_intf_ep_devs(struct u
|
||||
@@ -1120,6 +1120,21 @@ static void remove_intf_ep_devs(struct u
|
||||
intf->ep_devs_created = 0;
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
|
||||
--- a/drivers/usb/host/xhci.c
|
||||
+++ b/drivers/usb/host/xhci.c
|
||||
@@ -1425,6 +1425,103 @@ command_cleanup:
|
||||
@@ -1427,6 +1427,103 @@ command_cleanup:
|
||||
}
|
||||
|
||||
/*
|
||||
@ -119,7 +119,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
* non-error returns are a promise to giveback() the urb later
|
||||
* we drop ownership so next owner (or urb unlink) can get it
|
||||
*/
|
||||
@@ -5217,6 +5314,7 @@ static const struct hc_driver xhci_hc_dr
|
||||
@@ -5219,6 +5316,7 @@ static const struct hc_driver xhci_hc_dr
|
||||
.endpoint_reset = xhci_endpoint_reset,
|
||||
.check_bandwidth = xhci_check_bandwidth,
|
||||
.reset_bandwidth = xhci_reset_bandwidth,
|
||||
|
@ -16,7 +16,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
@@ -1087,10 +1087,12 @@ static int vc4_hdmi_audio_init(struct vc
|
||||
@@ -1099,10 +1099,12 @@ static int vc4_hdmi_audio_init(struct vc
|
||||
struct device *dev = &hdmi->pdev->dev;
|
||||
const __be32 *addr;
|
||||
int ret;
|
||||
|
@ -38,7 +38,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
static inline void bcmgenet_writel(u32 value, void __iomem *offset)
|
||||
{
|
||||
/* MIPS chips strapped for BE will automagically configure the
|
||||
@@ -1993,6 +1997,11 @@ static void reset_umac(struct bcmgenet_p
|
||||
@@ -1996,6 +2000,11 @@ static void reset_umac(struct bcmgenet_p
|
||||
bcmgenet_rbuf_ctrl_set(priv, 0);
|
||||
udelay(10);
|
||||
|
||||
|
@ -488,7 +488,7 @@
|
||||
uasm_i_eret(&p); /* return from trap */
|
||||
}
|
||||
#ifdef CONFIG_MIPS_HUGE_TLB_SUPPORT
|
||||
@@ -2046,6 +2055,9 @@ build_r4000_tlbchange_handler_head(u32 *
|
||||
@@ -2049,6 +2058,9 @@ build_r4000_tlbchange_handler_head(u32 *
|
||||
#ifdef CONFIG_64BIT
|
||||
build_get_pmde64(p, l, r, wr.r1, wr.r2); /* get pmd in ptr */
|
||||
#else
|
||||
@ -498,7 +498,7 @@
|
||||
build_get_pgde32(p, wr.r1, wr.r2); /* get pgd in ptr */
|
||||
#endif
|
||||
|
||||
@@ -2092,6 +2104,9 @@ build_r4000_tlbchange_handler_tail(u32 *
|
||||
@@ -2095,6 +2107,9 @@ build_r4000_tlbchange_handler_tail(u32 *
|
||||
build_tlb_write_entry(p, l, r, tlb_indexed);
|
||||
uasm_l_leave(l, *p);
|
||||
build_restore_work_registers(p);
|
||||
|
@ -89,7 +89,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
--- a/drivers/gpio/gpiolib.c
|
||||
+++ b/drivers/gpio/gpiolib.c
|
||||
@@ -1958,7 +1958,8 @@ int gpiochip_add_pingroup_range(struct g
|
||||
@@ -1941,7 +1941,8 @@ int gpiochip_add_pingroup_range(struct g
|
||||
|
||||
list_add_tail(&pin_range->node, &gdev->pin_ranges);
|
||||
|
||||
@ -99,7 +99,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(gpiochip_add_pingroup_range);
|
||||
|
||||
@@ -2010,7 +2011,7 @@ int gpiochip_add_pin_range(struct gpio_c
|
||||
@@ -1993,7 +1994,7 @@ int gpiochip_add_pin_range(struct gpio_c
|
||||
|
||||
list_add_tail(&pin_range->node, &gdev->pin_ranges);
|
||||
|
||||
|
@ -48,7 +48,7 @@ Reviewed-by: John Gilmore <gnu@toad.com>
|
||||
#define INADDR_ANY ((unsigned long int) 0x00000000)
|
||||
--- a/net/ipv4/devinet.c
|
||||
+++ b/net/ipv4/devinet.c
|
||||
@@ -929,7 +929,7 @@ static int inet_abc_len(__be32 addr)
|
||||
@@ -934,7 +934,7 @@ static int inet_abc_len(__be32 addr)
|
||||
{
|
||||
int rc = -1; /* Something else, probably a multicast. */
|
||||
|
||||
@ -57,7 +57,7 @@ Reviewed-by: John Gilmore <gnu@toad.com>
|
||||
rc = 0;
|
||||
else {
|
||||
__u32 haddr = ntohl(addr);
|
||||
@@ -940,6 +940,8 @@ static int inet_abc_len(__be32 addr)
|
||||
@@ -945,6 +945,8 @@ static int inet_abc_len(__be32 addr)
|
||||
rc = 16;
|
||||
else if (IN_CLASSC(haddr))
|
||||
rc = 24;
|
||||
|
@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/include/net/ip6_route.h
|
||||
+++ b/include/net/ip6_route.h
|
||||
@@ -252,4 +252,26 @@ static inline bool rt6_duplicate_nexthop
|
||||
@@ -253,4 +253,26 @@ static inline bool rt6_duplicate_nexthop
|
||||
ipv6_addr_equal(&a->rt6i_gateway, &b->rt6i_gateway) &&
|
||||
!lwtunnel_cmp_encap(a->dst.lwtstate, b->dst.lwtstate);
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ Reviewed-by: John Gilmore <gnu@toad.com>
|
||||
#define INADDR_ANY ((unsigned long int) 0x00000000)
|
||||
--- a/net/ipv4/devinet.c
|
||||
+++ b/net/ipv4/devinet.c
|
||||
@@ -949,7 +949,7 @@ static int inet_abc_len(__be32 addr)
|
||||
@@ -954,7 +954,7 @@ static int inet_abc_len(__be32 addr)
|
||||
{
|
||||
int rc = -1; /* Something else, probably a multicast. */
|
||||
|
||||
@ -57,7 +57,7 @@ Reviewed-by: John Gilmore <gnu@toad.com>
|
||||
rc = 0;
|
||||
else {
|
||||
__u32 haddr = ntohl(addr);
|
||||
@@ -960,6 +960,8 @@ static int inet_abc_len(__be32 addr)
|
||||
@@ -965,6 +965,8 @@ static int inet_abc_len(__be32 addr)
|
||||
rc = 16;
|
||||
else if (IN_CLASSC(haddr))
|
||||
rc = 24;
|
||||
|
@ -28,7 +28,7 @@ Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
|
||||
--- a/drivers/mtd/nand/spi/core.c
|
||||
+++ b/drivers/mtd/nand/spi/core.c
|
||||
@@ -764,6 +764,7 @@ static const struct nand_ops spinand_ops
|
||||
@@ -762,6 +762,7 @@ static const struct nand_ops spinand_ops
|
||||
static const struct spinand_manufacturer *spinand_manufacturers[] = {
|
||||
¯onix_spinand_manufacturer,
|
||||
µn_spinand_manufacturer,
|
||||
|
@ -25,7 +25,7 @@ Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
|
||||
--- a/drivers/mtd/nand/spi/core.c
|
||||
+++ b/drivers/mtd/nand/spi/core.c
|
||||
@@ -762,6 +762,7 @@ static const struct nand_ops spinand_ops
|
||||
@@ -760,6 +760,7 @@ static const struct nand_ops spinand_ops
|
||||
};
|
||||
|
||||
static const struct spinand_manufacturer *spinand_manufacturers[] = {
|
||||
|
@ -17,7 +17,7 @@ Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
|
||||
--- a/drivers/mtd/nand/spi/core.c
|
||||
+++ b/drivers/mtd/nand/spi/core.c
|
||||
@@ -853,7 +853,7 @@ spinand_select_op_variant(struct spinand
|
||||
@@ -851,7 +851,7 @@ spinand_select_op_variant(struct spinand
|
||||
*/
|
||||
int spinand_match_and_init(struct spinand_device *spinand,
|
||||
const struct spinand_info *table,
|
||||
|
@ -33,7 +33,7 @@ ADOPTED FROM UPSTREAM due to upstream commit 377e517b5fa5 in Linux 5.2
|
||||
obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
|
||||
--- a/drivers/mtd/nand/spi/core.c
|
||||
+++ b/drivers/mtd/nand/spi/core.c
|
||||
@@ -765,6 +765,7 @@ static const struct spinand_manufacturer
|
||||
@@ -763,6 +763,7 @@ static const struct spinand_manufacturer
|
||||
&gigadevice_spinand_manufacturer,
|
||||
¯onix_spinand_manufacturer,
|
||||
µn_spinand_manufacturer,
|
||||
|
@ -232,7 +232,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
return -ENOMEM;
|
||||
--- a/mm/vmalloc.c
|
||||
+++ b/mm/vmalloc.c
|
||||
@@ -2786,6 +2786,8 @@ static const struct file_operations proc
|
||||
@@ -2798,6 +2798,8 @@ static const struct file_operations proc
|
||||
|
||||
static int __init proc_vmalloc_init(void)
|
||||
{
|
||||
@ -393,7 +393,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/ipv4/route.c
|
||||
+++ b/net/ipv4/route.c
|
||||
@@ -428,6 +428,9 @@ static struct pernet_operations ip_rt_pr
|
||||
@@ -426,6 +426,9 @@ static struct pernet_operations ip_rt_pr
|
||||
|
||||
static int __init ip_rt_proc_init(void)
|
||||
{
|
||||
|
@ -1,101 +0,0 @@
|
||||
From 3117c3f45edbcc269baaebd3d13f39b7bf884aa6 Mon Sep 17 00:00:00 2001
|
||||
From: Evan Green <evgreen@chromium.org>
|
||||
Date: Thu, 14 Nov 2019 15:50:08 -0800
|
||||
Subject: loop: Better discard support for block devices
|
||||
|
||||
If the backing device for a loop device is itself a block device,
|
||||
then mirror the "write zeroes" capabilities of the underlying
|
||||
block device into the loop device. Copy this capability into both
|
||||
max_write_zeroes_sectors and max_discard_sectors of the loop device.
|
||||
|
||||
The reason for this is that REQ_OP_DISCARD on a loop device translates
|
||||
into blkdev_issue_zeroout(), rather than blkdev_issue_discard(). This
|
||||
presents a consistent interface for loop devices (that discarded data
|
||||
is zeroed), regardless of the backing device type of the loop device.
|
||||
There should be no behavior change for loop devices backed by regular
|
||||
files.
|
||||
|
||||
This change fixes blktest block/003, and removes an extraneous
|
||||
error print in block/013 when testing on a loop device backed
|
||||
by a block device that does not support discard.
|
||||
|
||||
Signed-off-by: Evan Green <evgreen@chromium.org>
|
||||
Reviewed-by: Gwendal Grignou <gwendal@chromium.org>
|
||||
Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
|
||||
---
|
||||
drivers/block/loop.c | 40 +++++++++++++++++++++++++++++-----------
|
||||
1 file changed, 29 insertions(+), 11 deletions(-)
|
||||
|
||||
--- a/drivers/block/loop.c
|
||||
+++ b/drivers/block/loop.c
|
||||
@@ -426,11 +426,12 @@ static int lo_fallocate(struct loop_devi
|
||||
* information.
|
||||
*/
|
||||
struct file *file = lo->lo_backing_file;
|
||||
+ struct request_queue *q = lo->lo_queue;
|
||||
int ret;
|
||||
|
||||
mode |= FALLOC_FL_KEEP_SIZE;
|
||||
|
||||
- if ((!file->f_op->fallocate) || lo->lo_encrypt_key_size) {
|
||||
+ if (!blk_queue_discard(q)) {
|
||||
ret = -EOPNOTSUPP;
|
||||
goto out;
|
||||
}
|
||||
@@ -863,6 +864,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
|
||||
@@ -870,22 +886,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)
|
@ -232,7 +232,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (!pe)
|
||||
--- a/mm/vmalloc.c
|
||||
+++ b/mm/vmalloc.c
|
||||
@@ -2752,6 +2752,8 @@ static const struct seq_operations vmall
|
||||
@@ -2764,6 +2764,8 @@ static const struct seq_operations vmall
|
||||
|
||||
static int __init proc_vmalloc_init(void)
|
||||
{
|
||||
|
@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
__u16 tc_index; /* traffic control index */
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -4805,6 +4805,9 @@ static enum gro_result dev_gro_receive(s
|
||||
@@ -4806,6 +4806,9 @@ static enum gro_result dev_gro_receive(s
|
||||
enum gro_result ret;
|
||||
int grow;
|
||||
|
||||
@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (netif_elide_gro(skb->dev))
|
||||
goto normal;
|
||||
|
||||
@@ -6282,6 +6285,48 @@ static void __netdev_adjacent_dev_unlink
|
||||
@@ -6283,6 +6286,48 @@ static void __netdev_adjacent_dev_unlink
|
||||
&upper_dev->adj_list.lower);
|
||||
}
|
||||
|
||||
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
static int __netdev_upper_dev_link(struct net_device *dev,
|
||||
struct net_device *upper_dev, bool master,
|
||||
void *upper_priv, void *upper_info)
|
||||
@@ -6320,6 +6365,7 @@ static int __netdev_upper_dev_link(struc
|
||||
@@ -6321,6 +6366,7 @@ static int __netdev_upper_dev_link(struc
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -99,7 +99,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
|
||||
&changeupper_info.info);
|
||||
ret = notifier_to_errno(ret);
|
||||
@@ -6397,6 +6443,7 @@ void netdev_upper_dev_unlink(struct net_
|
||||
@@ -6398,6 +6444,7 @@ void netdev_upper_dev_unlink(struct net_
|
||||
|
||||
__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
|
||||
|
||||
@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
|
||||
&changeupper_info.info);
|
||||
}
|
||||
@@ -6961,6 +7008,7 @@ int dev_set_mac_address(struct net_devic
|
||||
@@ -6962,6 +7009,7 @@ int dev_set_mac_address(struct net_devic
|
||||
if (err)
|
||||
return err;
|
||||
dev->addr_assign_type = NET_ADDR_SET;
|
||||
|
@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
__u16 tc_index; /* traffic control index */
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -5456,6 +5456,9 @@ static enum gro_result dev_gro_receive(s
|
||||
@@ -5457,6 +5457,9 @@ static enum gro_result dev_gro_receive(s
|
||||
int same_flow;
|
||||
int grow;
|
||||
|
||||
@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (netif_elide_gro(skb->dev))
|
||||
goto normal;
|
||||
|
||||
@@ -7114,6 +7117,48 @@ static void __netdev_adjacent_dev_unlink
|
||||
@@ -7115,6 +7118,48 @@ static void __netdev_adjacent_dev_unlink
|
||||
&upper_dev->adj_list.lower);
|
||||
}
|
||||
|
||||
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
static int __netdev_upper_dev_link(struct net_device *dev,
|
||||
struct net_device *upper_dev, bool master,
|
||||
void *upper_priv, void *upper_info,
|
||||
@@ -7164,6 +7209,7 @@ static int __netdev_upper_dev_link(struc
|
||||
@@ -7165,6 +7210,7 @@ static int __netdev_upper_dev_link(struc
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -99,7 +99,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
|
||||
&changeupper_info.info);
|
||||
ret = notifier_to_errno(ret);
|
||||
@@ -7256,6 +7302,7 @@ void netdev_upper_dev_unlink(struct net_
|
||||
@@ -7257,6 +7303,7 @@ void netdev_upper_dev_unlink(struct net_
|
||||
|
||||
__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
|
||||
|
||||
@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
|
||||
&changeupper_info.info);
|
||||
|
||||
@@ -7895,6 +7942,7 @@ int dev_set_mac_address(struct net_devic
|
||||
@@ -7896,6 +7943,7 @@ int dev_set_mac_address(struct net_devic
|
||||
if (err)
|
||||
return err;
|
||||
dev->addr_assign_type = NET_ADDR_SET;
|
||||
|
@ -33,7 +33,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
/*
|
||||
* The Mellanox Tavor device gives false positive parity errors. Mark this
|
||||
* device with a broken_parity_status to allow PCI scanning code to "skip"
|
||||
@@ -3147,6 +3148,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
|
||||
@@ -3213,6 +3214,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata);
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata);
|
||||
|
||||
@ -42,7 +42,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
/*
|
||||
* Ivytown NTB BAR sizes are misreported by the hardware due to an erratum.
|
||||
* To work around this, query the size it should be configured to by the
|
||||
@@ -3172,6 +3175,8 @@ static void quirk_intel_ntb(struct pci_d
|
||||
@@ -3238,6 +3241,8 @@ static void quirk_intel_ntb(struct pci_d
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e08, quirk_intel_ntb);
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e0d, quirk_intel_ntb);
|
||||
|
||||
@ -51,7 +51,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
/*
|
||||
* Some BIOS implementations leave the Intel GPU interrupts enabled, even
|
||||
* though no one is handling them (e.g., if the i915 driver is never
|
||||
@@ -3210,6 +3215,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
|
||||
@@ -3276,6 +3281,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
|
||||
|
||||
|
@ -442,7 +442,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
|
||||
--- a/drivers/soc/imx/gpc.c
|
||||
+++ b/drivers/soc/imx/gpc.c
|
||||
@@ -209,7 +209,7 @@ static int imx_pgc_power_domain_probe(st
|
||||
@@ -210,7 +210,7 @@ static int imx_pgc_power_domain_probe(st
|
||||
goto genpd_err;
|
||||
}
|
||||
|
||||
@ -713,7 +713,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
}
|
||||
|
||||
#ifdef CONFIG_NET_INGRESS
|
||||
@@ -6341,7 +6342,15 @@ static int __netdev_upper_dev_link(struc
|
||||
@@ -6342,7 +6343,15 @@ static int __netdev_upper_dev_link(struc
|
||||
struct net_device *upper_dev, bool master,
|
||||
void *upper_priv, void *upper_info)
|
||||
{
|
||||
@ -730,7 +730,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
int ret = 0;
|
||||
|
||||
ASSERT_RTNL();
|
||||
@@ -6359,12 +6368,7 @@ static int __netdev_upper_dev_link(struc
|
||||
@@ -6360,12 +6369,7 @@ static int __netdev_upper_dev_link(struc
|
||||
if (master && netdev_master_upper_dev_get(dev))
|
||||
return -EBUSY;
|
||||
|
||||
@ -744,7 +744,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
&changeupper_info.info);
|
||||
ret = notifier_to_errno(ret);
|
||||
if (ret)
|
||||
@@ -6376,7 +6380,7 @@ static int __netdev_upper_dev_link(struc
|
||||
@@ -6377,7 +6381,7 @@ static int __netdev_upper_dev_link(struc
|
||||
return ret;
|
||||
|
||||
netdev_update_addr_mask(dev);
|
||||
@ -753,7 +753,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
&changeupper_info.info);
|
||||
ret = notifier_to_errno(ret);
|
||||
if (ret)
|
||||
@@ -6440,21 +6444,25 @@ EXPORT_SYMBOL(netdev_master_upper_dev_li
|
||||
@@ -6441,21 +6445,25 @@ EXPORT_SYMBOL(netdev_master_upper_dev_li
|
||||
void netdev_upper_dev_unlink(struct net_device *dev,
|
||||
struct net_device *upper_dev)
|
||||
{
|
||||
@ -784,7 +784,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
&changeupper_info.info);
|
||||
}
|
||||
EXPORT_SYMBOL(netdev_upper_dev_unlink);
|
||||
@@ -6470,11 +6478,13 @@ EXPORT_SYMBOL(netdev_upper_dev_unlink);
|
||||
@@ -6471,11 +6479,13 @@ EXPORT_SYMBOL(netdev_upper_dev_unlink);
|
||||
void netdev_bonding_info_change(struct net_device *dev,
|
||||
struct netdev_bonding_info *bonding_info)
|
||||
{
|
||||
@ -800,7 +800,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
&info.info);
|
||||
}
|
||||
EXPORT_SYMBOL(netdev_bonding_info_change);
|
||||
@@ -6600,11 +6610,13 @@ EXPORT_SYMBOL(dev_get_nest_level);
|
||||
@@ -6601,11 +6611,13 @@ EXPORT_SYMBOL(dev_get_nest_level);
|
||||
void netdev_lower_state_changed(struct net_device *lower_dev,
|
||||
void *lower_state_info)
|
||||
{
|
||||
@ -816,7 +816,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
&changelowerstate_info.info);
|
||||
}
|
||||
EXPORT_SYMBOL(netdev_lower_state_changed);
|
||||
@@ -6895,11 +6907,14 @@ void __dev_notify_flags(struct net_devic
|
||||
@@ -6896,11 +6908,14 @@ void __dev_notify_flags(struct net_devic
|
||||
|
||||
if (dev->flags & IFF_UP &&
|
||||
(changes & ~(IFF_UP | IFF_PROMISC | IFF_ALLMULTI | IFF_VOLATILE))) {
|
||||
|
@ -323,7 +323,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
|
||||
usb_phy_set_suspend(dwc->usb2_phy, 0);
|
||||
usb_phy_set_suspend(dwc->usb3_phy, 0);
|
||||
ret = phy_power_on(dwc->usb2_generic_phy);
|
||||
@@ -870,6 +1006,22 @@ static int dwc3_core_init(struct dwc3 *d
|
||||
@@ -873,6 +1009,22 @@ static int dwc3_core_init(struct dwc3 *d
|
||||
dwc3_writel(dwc->regs, DWC3_GUCTL1, reg);
|
||||
}
|
||||
|
||||
@ -346,7 +346,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
|
||||
return 0;
|
||||
|
||||
err4:
|
||||
@@ -1076,6 +1228,8 @@ static void dwc3_get_properties(struct d
|
||||
@@ -1079,6 +1231,8 @@ static void dwc3_get_properties(struct d
|
||||
&hird_threshold);
|
||||
dwc->usb3_lpm_capable = device_property_read_bool(dev,
|
||||
"snps,usb3_lpm_capable");
|
||||
@ -355,9 +355,9 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
|
||||
|
||||
dwc->disable_scramble_quirk = device_property_read_bool(dev,
|
||||
"snps,disable_scramble_quirk");
|
||||
@@ -1108,8 +1262,16 @@ static void dwc3_get_properties(struct d
|
||||
dwc->dis_tx_ipgap_linecheck_quirk = device_property_read_bool(dev,
|
||||
"snps,dis-tx-ipgap-linecheck-quirk");
|
||||
@@ -1113,8 +1267,16 @@ static void dwc3_get_properties(struct d
|
||||
dwc->parkmode_disable_ss_quirk = device_property_read_bool(dev,
|
||||
"snps,parkmode-disable-ss-quirk");
|
||||
|
||||
+ dwc->quirk_reverse_in_out = device_property_read_bool(dev,
|
||||
+ "snps,quirk_reverse_in_out");
|
||||
@ -372,7 +372,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
|
||||
device_property_read_u8(dev, "snps,tx_de_emphasis",
|
||||
&tx_de_emphasis);
|
||||
device_property_read_string(dev, "snps,hsphy_interface",
|
||||
@@ -1120,6 +1282,9 @@ static void dwc3_get_properties(struct d
|
||||
@@ -1125,6 +1287,9 @@ static void dwc3_get_properties(struct d
|
||||
dwc->dis_metastability_quirk = device_property_read_bool(dev,
|
||||
"snps,dis_metastability_quirk");
|
||||
|
||||
@ -382,7 +382,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
|
||||
dwc->lpm_nyet_threshold = lpm_nyet_threshold;
|
||||
dwc->tx_de_emphasis = tx_de_emphasis;
|
||||
|
||||
@@ -1371,12 +1536,14 @@ static int dwc3_resume_common(struct dwc
|
||||
@@ -1376,12 +1541,14 @@ static int dwc3_resume_common(struct dwc
|
||||
|
||||
switch (dwc->dr_mode) {
|
||||
case USB_DR_MODE_PERIPHERAL:
|
||||
@ -440,9 +440,9 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
|
||||
+#define DWC3_GUCTL_HSTINAUTORETRY BIT(14)
|
||||
+
|
||||
/* Global User Control 1 Register */
|
||||
#define DWC3_GUCTL1_PARKMODE_DISABLE_SS BIT(17)
|
||||
#define DWC3_GUCTL1_TX_IPGAP_LINECHECK_DIS BIT(28)
|
||||
#define DWC3_GUCTL1_DEV_L1_EXIT_BY_HW BIT(24)
|
||||
@@ -477,6 +506,14 @@
|
||||
@@ -478,6 +507,14 @@
|
||||
#define DWC3_DEV_IMOD_INTERVAL_SHIFT 0
|
||||
#define DWC3_DEV_IMOD_INTERVAL_MASK (0xffff << 0)
|
||||
|
||||
@ -457,7 +457,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
|
||||
/* Structures */
|
||||
|
||||
struct dwc3_trb;
|
||||
@@ -788,6 +825,7 @@ struct dwc3_scratchpad_array {
|
||||
@@ -789,6 +826,7 @@ struct dwc3_scratchpad_array {
|
||||
* @regs: base address for our registers
|
||||
* @regs_size: address space size
|
||||
* @fladj: frame length adjustment
|
||||
@ -465,7 +465,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
|
||||
* @irq_gadget: peripheral controller's IRQ number
|
||||
* @nr_scratch: number of scratch buffers
|
||||
* @u1u2: only used on revisions <1.83a for workaround
|
||||
@@ -843,6 +881,7 @@ struct dwc3_scratchpad_array {
|
||||
@@ -844,6 +882,7 @@ struct dwc3_scratchpad_array {
|
||||
* @setup_packet_pending: true when there's a Setup Packet in FIFO. Workaround
|
||||
* @three_stage_setup: set if we perform a three phase setup
|
||||
* @usb3_lpm_capable: set if hadrware supports Link Power Management
|
||||
@ -473,7 +473,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
|
||||
* @disable_scramble_quirk: set if we enable the disable scramble quirk
|
||||
* @u2exit_lfps_quirk: set if we enable u2exit lfps quirk
|
||||
* @u2ss_inp3_quirk: set if we enable P3 OK for U2/SS Inactive quirk
|
||||
@@ -922,6 +961,12 @@ struct dwc3 {
|
||||
@@ -925,6 +964,12 @@ struct dwc3 {
|
||||
enum usb_phy_interface hsphy_mode;
|
||||
|
||||
u32 fladj;
|
||||
@ -486,7 +486,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
|
||||
u32 irq_gadget;
|
||||
u32 nr_scratch;
|
||||
u32 u1u2;
|
||||
@@ -1006,6 +1051,7 @@ struct dwc3 {
|
||||
@@ -1009,6 +1054,7 @@ struct dwc3 {
|
||||
unsigned setup_packet_pending:1;
|
||||
unsigned three_stage_setup:1;
|
||||
unsigned usb3_lpm_capable:1;
|
||||
@ -494,7 +494,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
|
||||
|
||||
unsigned disable_scramble_quirk:1;
|
||||
unsigned u2exit_lfps_quirk:1;
|
||||
@@ -1025,6 +1071,11 @@ struct dwc3 {
|
||||
@@ -1029,6 +1075,11 @@ struct dwc3 {
|
||||
|
||||
unsigned tx_de_emphasis_quirk:1;
|
||||
unsigned tx_de_emphasis:2;
|
||||
@ -528,7 +528,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
|
||||
reg &= ~DWC3_DCTL_INITU2ENA;
|
||||
--- a/drivers/usb/dwc3/gadget.c
|
||||
+++ b/drivers/usb/dwc3/gadget.c
|
||||
@@ -3220,6 +3220,7 @@ int dwc3_gadget_init(struct dwc3 *dwc)
|
||||
@@ -3216,6 +3216,7 @@ int dwc3_gadget_init(struct dwc3 *dwc)
|
||||
{
|
||||
int ret;
|
||||
int irq;
|
||||
@ -536,7 +536,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
|
||||
|
||||
irq = dwc3_gadget_get_irq(dwc);
|
||||
if (irq < 0) {
|
||||
@@ -3298,6 +3299,12 @@ int dwc3_gadget_init(struct dwc3 *dwc)
|
||||
@@ -3294,6 +3295,12 @@ int dwc3_gadget_init(struct dwc3 *dwc)
|
||||
|
||||
dwc3_gadget_set_speed(&dwc->gadget, dwc->maximum_speed);
|
||||
|
||||
|
@ -5715,7 +5715,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
int (*start)(struct pci_epc *epc);
|
||||
void (*stop)(struct pci_epc *epc);
|
||||
struct module *owner;
|
||||
@@ -91,8 +97,17 @@ struct pci_epc {
|
||||
@@ -94,8 +100,17 @@ struct pci_epc {
|
||||
struct config_group *group;
|
||||
/* spinlock to protect against concurrent access of EP controller */
|
||||
spinlock_t lock;
|
||||
@ -5733,7 +5733,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
#define to_pci_epc(device) container_of((device), struct pci_epc, dev)
|
||||
|
||||
#define pci_epc_create(dev, ops) \
|
||||
@@ -124,17 +139,23 @@ void pci_epc_destroy(struct pci_epc *epc
|
||||
@@ -127,17 +142,23 @@ void pci_epc_destroy(struct pci_epc *epc
|
||||
int pci_epc_add_epf(struct pci_epc *epc, struct pci_epf *epf);
|
||||
void pci_epc_linkup(struct pci_epc *epc);
|
||||
void pci_epc_remove_epf(struct pci_epc *epc, struct pci_epf *epf);
|
||||
|
@ -31,10 +31,7 @@ platform_do_upgrade() {
|
||||
default_do_upgrade "$1"
|
||||
;;
|
||||
xiaomi,miwifi-r3)
|
||||
# this make it compatible with breed
|
||||
dd if=/dev/mtd0 bs=64 count=1 2>/dev/null | grep -qi breed && CI_KERNPART_EXT="kernel_stock"
|
||||
dd if=/dev/mtd7 bs=64 count=1 2>/dev/null | grep -o MIPS.*Linux | grep -qi X-WRT && CI_KERNPART_EXT="kernel_stock"
|
||||
dd if=/dev/mtd7 bs=64 count=1 2>/dev/null | grep -o MIPS.*Linux | grep -qi NATCAP && CI_KERNPART_EXT="kernel0_rsvd"
|
||||
nand_do_upgrade "$1"
|
||||
;;
|
||||
*)
|
||||
|
@ -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,
|
||||
unsigned long adr, const u_char *buf,
|
||||
int len)
|
||||
@@ -1926,7 +1931,6 @@ static int __xipram do_write_buffer(stru
|
||||
@@ -1930,7 +1935,6 @@ static int __xipram do_write_buffer(stru
|
||||
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,
|
||||
size_t *retlen, const u_char *buf)
|
||||
{
|
||||
@@ -2001,6 +2005,7 @@ static int cfi_amdstd_write_buffers(stru
|
||||
@@ -2005,6 +2009,7 @@ static int cfi_amdstd_write_buffers(stru
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user