mirror of
https://github.com/openwrt/openwrt.git
synced 2025-04-19 00:27:20 +00:00
kernel: Update to version 4.4.182
Fixes: - CVE-2019-11479 - CVE-2019-11478 - CVE-2019-11477 - CVE-2019-11833 - CVE-2019-11091 - CVE-2018-12126 - CVE-2018-12130 - CVE-2018-12127 - CVE-2019-3882 - CVE-2019-6974 - CVE-2019-3819 - CVE-2019-7221 - CVE-2019-7222 - CVE-2019-3701 - CVE-2018-19985 - CVE-2018-1120 And probably more Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
parent
af50ce32c5
commit
6c5c3a2edc
@ -3,10 +3,10 @@
|
||||
LINUX_RELEASE?=1
|
||||
|
||||
LINUX_VERSION-3.18 = .43
|
||||
LINUX_VERSION-4.4 = .167
|
||||
LINUX_VERSION-4.4 = .182
|
||||
|
||||
LINUX_KERNEL_HASH-3.18.43 = 1236e8123a6ce537d5029232560966feed054ae31776fe8481dd7d18cdd5492c
|
||||
LINUX_KERNEL_HASH-4.4.167 = 33ca4c28a565404fc7b07f9d6b734c291035f7e7e46c280131494b04e3953edf
|
||||
LINUX_KERNEL_HASH-4.4.182 = c409d88f61cd9a37cbba36d5d9c8162263eb1e5c9380efaf880a3ec10cd88527
|
||||
|
||||
ifdef KERNEL_PATCHVER
|
||||
LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
|
||||
|
@ -0,0 +1,65 @@
|
||||
--- a/backport-include/linux/mm.h
|
||||
+++ b/backport-include/linux/mm.h
|
||||
@@ -39,8 +39,20 @@ static inline
|
||||
long backport_get_user_pages_locked(unsigned long start, unsigned long nr_pages,
|
||||
int write, int force, struct page **pages, int *locked)
|
||||
{
|
||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,4,168))
|
||||
return get_user_pages_locked(current, current->mm, start, nr_pages,
|
||||
write, force, pages, locked);
|
||||
+#else
|
||||
+ int flags = 0;
|
||||
+
|
||||
+ if (write)
|
||||
+ flags |= FOLL_WRITE;
|
||||
+ if (force)
|
||||
+ flags |= FOLL_FORCE;
|
||||
+
|
||||
+ return get_user_pages_locked(current, current->mm, start, nr_pages,
|
||||
+ flags, pages, locked);
|
||||
+#endif
|
||||
}
|
||||
#define get_user_pages_locked LINUX_BACKPORT(get_user_pages_locked)
|
||||
|
||||
@@ -48,8 +60,20 @@ static inline
|
||||
long backport_get_user_pages_unlocked(unsigned long start, unsigned long nr_pages,
|
||||
int write, int force, struct page **pages)
|
||||
{
|
||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,4,168))
|
||||
return get_user_pages_unlocked(current, current->mm, start, nr_pages,
|
||||
write, force, pages);
|
||||
+#else
|
||||
+ int flags = 0;
|
||||
+
|
||||
+ if (write)
|
||||
+ flags |= FOLL_WRITE;
|
||||
+ if (force)
|
||||
+ flags |= FOLL_FORCE;
|
||||
+
|
||||
+ return get_user_pages_unlocked(current, current->mm, start, nr_pages,
|
||||
+ pages, flags);
|
||||
+#endif
|
||||
}
|
||||
#define get_user_pages_unlocked LINUX_BACKPORT(get_user_pages_unlocked)
|
||||
#endif
|
||||
@@ -60,8 +84,20 @@ long backport_get_user_pages(unsigned lo
|
||||
int write, int force, struct page **pages,
|
||||
struct vm_area_struct **vmas)
|
||||
{
|
||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,4,168))
|
||||
return get_user_pages(current, current->mm, start, nr_pages,
|
||||
write, force, pages, vmas);
|
||||
+#else
|
||||
+ int flags = 0;
|
||||
+
|
||||
+ if (write)
|
||||
+ flags |= FOLL_WRITE;
|
||||
+ if (force)
|
||||
+ flags |= FOLL_FORCE;
|
||||
+
|
||||
+ return get_user_pages(current, current->mm, start, nr_pages,
|
||||
+ flags, pages, vmas);
|
||||
+#endif
|
||||
}
|
||||
#define get_user_pages LINUX_BACKPORT(get_user_pages)
|
||||
#endif
|
@ -240,7 +240,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
|
||||
#define PPC4XX_SEC_VERSION_STR "0.5"
|
||||
|
||||
@@ -1221,6 +1222,7 @@ static int crypto4xx_probe(struct platfo
|
||||
@@ -1230,6 +1231,7 @@ static int crypto4xx_probe(struct platfo
|
||||
if (rc)
|
||||
goto err_start_dev;
|
||||
|
||||
@ -248,7 +248,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
return 0;
|
||||
|
||||
err_start_dev:
|
||||
@@ -1247,6 +1249,8 @@ static int crypto4xx_remove(struct platf
|
||||
@@ -1256,6 +1258,8 @@ static int crypto4xx_remove(struct platf
|
||||
struct device *dev = &ofdev->dev;
|
||||
struct crypto4xx_core_device *core_dev = dev_get_drvdata(dev);
|
||||
|
||||
@ -257,7 +257,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
free_irq(core_dev->irq, dev);
|
||||
irq_dispose_mapping(core_dev->irq);
|
||||
|
||||
@@ -1267,7 +1271,7 @@ MODULE_DEVICE_TABLE(of, crypto4xx_match)
|
||||
@@ -1276,7 +1280,7 @@ MODULE_DEVICE_TABLE(of, crypto4xx_match)
|
||||
|
||||
static struct platform_driver crypto4xx_driver = {
|
||||
.driver = {
|
||||
@ -266,7 +266,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
.of_match_table = crypto4xx_match,
|
||||
},
|
||||
.probe = crypto4xx_probe,
|
||||
@@ -1279,4 +1283,3 @@ module_platform_driver(crypto4xx_driver)
|
||||
@@ -1288,4 +1292,3 @@ module_platform_driver(crypto4xx_driver)
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("James Hsiao <jhsiao@amcc.com>");
|
||||
MODULE_DESCRIPTION("Driver for AMCC PPC4xx crypto accelerator");
|
||||
|
@ -47,7 +47,7 @@ Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
@@ -4945,6 +4946,9 @@ void ata_qc_complete(struct ata_queued_c
|
||||
@@ -4946,6 +4947,9 @@ void ata_qc_complete(struct ata_queued_c
|
||||
{
|
||||
struct ata_port *ap = qc->ap;
|
||||
|
||||
|
@ -24,7 +24,7 @@ produce a noisy warning.
|
||||
|
||||
--- a/drivers/usb/host/xhci.c
|
||||
+++ b/drivers/usb/host/xhci.c
|
||||
@@ -388,10 +388,14 @@ static int xhci_try_enable_msi(struct us
|
||||
@@ -386,10 +386,14 @@ static int xhci_try_enable_msi(struct us
|
||||
free_irq(hcd->irq, hcd);
|
||||
hcd->irq = 0;
|
||||
|
||||
@ -44,7 +44,7 @@ produce a noisy warning.
|
||||
/* hcd->irq is 0, we have MSI */
|
||||
--- a/drivers/usb/host/xhci.h
|
||||
+++ b/drivers/usb/host/xhci.h
|
||||
@@ -1656,6 +1656,7 @@ struct xhci_hcd {
|
||||
@@ -1657,6 +1657,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 */
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
--- a/arch/mips/Kconfig
|
||||
+++ b/arch/mips/Kconfig
|
||||
@@ -1118,6 +1118,9 @@ config MIPS_MSC
|
||||
@@ -1121,6 +1121,9 @@ config MIPS_MSC
|
||||
config MIPS_NILE4
|
||||
bool
|
||||
|
||||
|
@ -241,7 +241,7 @@
|
||||
*/
|
||||
--- a/net/ipv6/datagram.c
|
||||
+++ b/net/ipv6/datagram.c
|
||||
@@ -433,7 +433,7 @@ int ipv6_recv_error(struct sock *sk, str
|
||||
@@ -434,7 +434,7 @@ int ipv6_recv_error(struct sock *sk, str
|
||||
ipv6_iface_scope_id(&sin->sin6_addr,
|
||||
IP6CB(skb)->iif);
|
||||
} else {
|
||||
@ -250,7 +250,7 @@
|
||||
&sin->sin6_addr);
|
||||
sin->sin6_scope_id = 0;
|
||||
}
|
||||
@@ -773,12 +773,12 @@ int ip6_datagram_send_ctl(struct net *ne
|
||||
@@ -772,12 +772,12 @@ int ip6_datagram_send_ctl(struct net *ne
|
||||
}
|
||||
|
||||
if (fl6->flowlabel&IPV6_FLOWINFO_MASK) {
|
||||
@ -664,7 +664,7 @@
|
||||
|
||||
#define IP6_MF 0x0001
|
||||
#define IP6_OFFSET 0xFFF8
|
||||
@@ -418,8 +418,8 @@ static inline void __ipv6_addr_set_half(
|
||||
@@ -411,8 +411,8 @@ static inline void __ipv6_addr_set_half(
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
@ -675,7 +675,7 @@
|
||||
}
|
||||
|
||||
static inline void ipv6_addr_set(struct in6_addr *addr,
|
||||
@@ -478,6 +478,8 @@ static inline bool ipv6_prefix_equal(con
|
||||
@@ -471,6 +471,8 @@ static inline bool ipv6_prefix_equal(con
|
||||
const __be32 *a1 = addr1->s6_addr32;
|
||||
const __be32 *a2 = addr2->s6_addr32;
|
||||
unsigned int pdw, pbi;
|
||||
@ -684,7 +684,7 @@
|
||||
|
||||
/* check complete u32 in prefix */
|
||||
pdw = prefixlen >> 5;
|
||||
@@ -486,7 +488,9 @@ static inline bool ipv6_prefix_equal(con
|
||||
@@ -479,7 +481,9 @@ static inline bool ipv6_prefix_equal(con
|
||||
|
||||
/* check incomplete u32 in prefix */
|
||||
pbi = prefixlen & 0x1f;
|
||||
@ -695,7 +695,7 @@
|
||||
return false;
|
||||
|
||||
return true;
|
||||
@@ -630,13 +634,13 @@ static inline void ipv6_addr_set_v4mappe
|
||||
@@ -608,13 +612,13 @@ static inline void ipv6_addr_set_v4mappe
|
||||
*/
|
||||
static inline int __ipv6_addr_diff32(const void *token1, const void *token2, int addrlen)
|
||||
{
|
||||
@ -711,7 +711,7 @@
|
||||
if (xb)
|
||||
return i * 32 + 31 - __fls(ntohl(xb));
|
||||
}
|
||||
@@ -805,17 +809,18 @@ static inline int ip6_default_np_autolab
|
||||
@@ -783,17 +787,18 @@ static inline int ip6_default_np_autolab
|
||||
static inline void ip6_flow_hdr(struct ipv6hdr *hdr, unsigned int tclass,
|
||||
__be32 flowlabel)
|
||||
{
|
||||
@ -814,7 +814,7 @@
|
||||
static struct fib6_node *node_alloc(void)
|
||||
--- a/net/netfilter/nf_conntrack_proto_tcp.c
|
||||
+++ b/net/netfilter/nf_conntrack_proto_tcp.c
|
||||
@@ -456,7 +456,7 @@ static void tcp_sack(const struct sk_buf
|
||||
@@ -458,7 +458,7 @@ static void tcp_sack(const struct sk_buf
|
||||
|
||||
/* Fast path for timestamp-only option */
|
||||
if (length == TCPOLEN_TSTAMP_ALIGNED
|
||||
@ -838,7 +838,7 @@
|
||||
|
||||
--- a/net/ipv4/tcp_input.c
|
||||
+++ b/net/ipv4/tcp_input.c
|
||||
@@ -3836,14 +3836,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||
@@ -3852,14 +3852,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||
{
|
||||
const __be32 *ptr = (const __be32 *)(th + 1);
|
||||
|
||||
|
@ -40,7 +40,7 @@ it on BCM4708 family.
|
||||
/* called during probe() after chip reset completes */
|
||||
--- a/drivers/usb/host/xhci.c
|
||||
+++ b/drivers/usb/host/xhci.c
|
||||
@@ -152,6 +152,49 @@ static int xhci_start(struct xhci_hcd *x
|
||||
@@ -150,6 +150,49 @@ static int xhci_start(struct xhci_hcd *x
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -90,7 +90,7 @@ it on BCM4708 family.
|
||||
/*
|
||||
* Reset a halted HC.
|
||||
*
|
||||
@@ -568,10 +611,20 @@ int xhci_init(struct usb_hcd *hcd)
|
||||
@@ -566,10 +609,20 @@ int xhci_init(struct usb_hcd *hcd)
|
||||
|
||||
static int xhci_run_finished(struct xhci_hcd *xhci)
|
||||
{
|
||||
@ -114,7 +114,7 @@ it on BCM4708 family.
|
||||
xhci->shared_hcd->state = HC_STATE_RUNNING;
|
||||
xhci->cmd_ring_state = CMD_RING_STATE_RUNNING;
|
||||
|
||||
@@ -581,6 +634,10 @@ static int xhci_run_finished(struct xhci
|
||||
@@ -579,6 +632,10 @@ static int xhci_run_finished(struct xhci
|
||||
xhci_dbg_trace(xhci, trace_xhci_dbg_init,
|
||||
"Finished xhci_run for USB3 roothub");
|
||||
return 0;
|
||||
@ -127,7 +127,7 @@ it on BCM4708 family.
|
||||
/*
|
||||
--- a/drivers/usb/host/xhci.h
|
||||
+++ b/drivers/usb/host/xhci.h
|
||||
@@ -1639,6 +1639,7 @@ struct xhci_hcd {
|
||||
@@ -1640,6 +1640,7 @@ struct xhci_hcd {
|
||||
#define XHCI_BROKEN_STREAMS (1 << 19)
|
||||
#define XHCI_PME_STUCK_QUIRK (1 << 20)
|
||||
#define XHCI_MISSING_CAS (1 << 24)
|
||||
|
@ -13,7 +13,7 @@ http://www.spinics.net/lists/linux-mm/msg72236.html
|
||||
|
||||
--- a/include/linux/vmstat.h
|
||||
+++ b/include/linux/vmstat.h
|
||||
@@ -219,7 +219,11 @@ static inline void __inc_zone_state(stru
|
||||
@@ -220,7 +220,11 @@ static inline void __inc_zone_state(stru
|
||||
static inline void __dec_zone_state(struct zone *zone, enum zone_stat_item item)
|
||||
{
|
||||
atomic_long_dec(&zone->vm_stat[item]);
|
||||
|
@ -19,7 +19,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/spi/spi-bcm2835.c
|
||||
+++ b/drivers/spi/spi-bcm2835.c
|
||||
@@ -688,6 +688,8 @@ static int bcm2835_spi_setup(struct spi_
|
||||
@@ -686,6 +686,8 @@ static int bcm2835_spi_setup(struct spi_
|
||||
{
|
||||
int err;
|
||||
struct gpio_chip *chip;
|
||||
@ -28,7 +28,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
/*
|
||||
* sanity checking the native-chipselects
|
||||
*/
|
||||
@@ -704,15 +706,42 @@ static int bcm2835_spi_setup(struct spi_
|
||||
@@ -702,15 +704,42 @@ static int bcm2835_spi_setup(struct spi_
|
||||
"setup: only two native chip-selects are supported\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
@ -659,7 +659,7 @@ dwc_otg: Remove duplicate gadget probe/unregister function
|
||||
}
|
||||
--- a/drivers/usb/core/hub.c
|
||||
+++ b/drivers/usb/core/hub.c
|
||||
@@ -5007,7 +5007,7 @@ static void port_event(struct usb_hub *h
|
||||
@@ -5014,7 +5014,7 @@ static void port_event(struct usb_hub *h
|
||||
if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
|
||||
u16 status = 0, unused;
|
||||
|
||||
@ -670,7 +670,7 @@ dwc_otg: Remove duplicate gadget probe/unregister function
|
||||
msleep(100); /* Cool down */
|
||||
--- a/drivers/usb/core/message.c
|
||||
+++ b/drivers/usb/core/message.c
|
||||
@@ -1924,6 +1924,85 @@ free_interfaces:
|
||||
@@ -1925,6 +1925,85 @@ free_interfaces:
|
||||
if (cp->string == NULL &&
|
||||
!(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS))
|
||||
cp->string = usb_cache_string(dev, cp->desc.iConfiguration);
|
||||
|
@ -17,7 +17,7 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
|
||||
|
||||
--- a/drivers/video/fbdev/core/fbmem.c
|
||||
+++ b/drivers/video/fbdev/core/fbmem.c
|
||||
@@ -1084,6 +1084,25 @@ fb_blank(struct fb_info *info, int blank
|
||||
@@ -1091,6 +1091,25 @@ fb_blank(struct fb_info *info, int blank
|
||||
}
|
||||
EXPORT_SYMBOL(fb_blank);
|
||||
|
||||
@ -43,7 +43,7 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
|
||||
static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
|
||||
unsigned long arg)
|
||||
{
|
||||
@@ -1094,6 +1113,7 @@ static long do_fb_ioctl(struct fb_info *
|
||||
@@ -1101,6 +1120,7 @@ static long do_fb_ioctl(struct fb_info *
|
||||
struct fb_cmap cmap_from;
|
||||
struct fb_cmap_user cmap;
|
||||
struct fb_event event;
|
||||
@ -51,7 +51,7 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
|
||||
void __user *argp = (void __user *)arg;
|
||||
long ret = 0;
|
||||
|
||||
@@ -1211,6 +1231,15 @@ static long do_fb_ioctl(struct fb_info *
|
||||
@@ -1218,6 +1238,15 @@ static long do_fb_ioctl(struct fb_info *
|
||||
unlock_fb_info(info);
|
||||
console_unlock();
|
||||
break;
|
||||
@ -67,7 +67,7 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
|
||||
default:
|
||||
if (!lock_fb_info(info))
|
||||
return -ENODEV;
|
||||
@@ -1365,6 +1394,7 @@ static long fb_compat_ioctl(struct file
|
||||
@@ -1372,6 +1401,7 @@ static long fb_compat_ioctl(struct file
|
||||
case FBIOPAN_DISPLAY:
|
||||
case FBIOGET_CON2FBMAP:
|
||||
case FBIOPUT_CON2FBMAP:
|
||||
|
@ -16,7 +16,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/mmc/card/block.c
|
||||
+++ b/drivers/mmc/card/block.c
|
||||
@@ -2553,6 +2553,13 @@ static const struct mmc_fixup blk_fixups
|
||||
@@ -2547,6 +2547,13 @@ static const struct mmc_fixup blk_fixups
|
||||
MMC_FIXUP("V10016", CID_MANFID_KINGSTON, CID_OEMID_ANY, add_quirk_mmc,
|
||||
MMC_QUIRK_TRIM_BROKEN),
|
||||
|
||||
@ -32,7 +32,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/mmc/core/core.c
|
||||
+++ b/drivers/mmc/core/core.c
|
||||
@@ -2253,7 +2253,8 @@ EXPORT_SYMBOL(mmc_erase);
|
||||
@@ -2257,7 +2257,8 @@ EXPORT_SYMBOL(mmc_erase);
|
||||
int mmc_can_erase(struct mmc_card *card)
|
||||
{
|
||||
if ((card->host->caps & MMC_CAP_ERASE) &&
|
||||
|
@ -10,7 +10,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/mmc/card/block.c
|
||||
+++ b/drivers/mmc/card/block.c
|
||||
@@ -2559,6 +2559,10 @@ static const struct mmc_fixup blk_fixups
|
||||
@@ -2553,6 +2553,10 @@ static const struct mmc_fixup blk_fixups
|
||||
*/
|
||||
MMC_FIXUP("SD16G", 0x41, 0x3432, add_quirk_mmc,
|
||||
MMC_QUIRK_ERASE_BROKEN),
|
||||
|
@ -17,7 +17,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/mmc/card/block.c
|
||||
+++ b/drivers/mmc/card/block.c
|
||||
@@ -137,6 +137,13 @@ enum {
|
||||
@@ -134,6 +134,13 @@ enum {
|
||||
module_param(perdev_minors, int, 0444);
|
||||
MODULE_PARM_DESC(perdev_minors, "Minors numbers to allocate per device");
|
||||
|
||||
@ -31,7 +31,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
static inline int mmc_blk_part_switch(struct mmc_card *card,
|
||||
struct mmc_blk_data *md);
|
||||
static int get_card_status(struct mmc_card *card, u32 *status, int retries);
|
||||
@@ -2571,6 +2578,7 @@ static int mmc_blk_probe(struct mmc_card
|
||||
@@ -2565,6 +2572,7 @@ static int mmc_blk_probe(struct mmc_card
|
||||
{
|
||||
struct mmc_blk_data *md, *part_md;
|
||||
char cap_str[10];
|
||||
@ -39,7 +39,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
/*
|
||||
* Check that the card supports the command class(es) we need.
|
||||
@@ -2578,7 +2586,16 @@ static int mmc_blk_probe(struct mmc_card
|
||||
@@ -2572,7 +2580,16 @@ static int mmc_blk_probe(struct mmc_card
|
||||
if (!(card->csd.cmdclass & CCC_BLOCK_READ))
|
||||
return -ENODEV;
|
||||
|
||||
@ -57,7 +57,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
md = mmc_blk_alloc(card);
|
||||
if (IS_ERR(md))
|
||||
@@ -2586,9 +2603,14 @@ static int mmc_blk_probe(struct mmc_card
|
||||
@@ -2580,9 +2597,14 @@ static int mmc_blk_probe(struct mmc_card
|
||||
|
||||
string_get_size((u64)get_capacity(md->disk), 512, STRING_UNITS_2,
|
||||
cap_str, sizeof(cap_str));
|
||||
|
@ -10,7 +10,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/mmc/card/block.c
|
||||
+++ b/drivers/mmc/card/block.c
|
||||
@@ -2564,12 +2564,9 @@ static const struct mmc_fixup blk_fixups
|
||||
@@ -2558,12 +2558,9 @@ static const struct mmc_fixup blk_fixups
|
||||
* On some Kingston SD cards, multiple erases of less than 64
|
||||
* sectors can cause corruption.
|
||||
*/
|
||||
|
@ -28,7 +28,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
i2c0: i2c@7e205000 {
|
||||
--- a/drivers/spi/spi-bcm2835.c
|
||||
+++ b/drivers/spi/spi-bcm2835.c
|
||||
@@ -707,6 +707,7 @@ static int bcm2835_spi_setup(struct spi_
|
||||
@@ -705,6 +705,7 @@ static int bcm2835_spi_setup(struct spi_
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -36,7 +36,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
/* now translate native cs to GPIO */
|
||||
/* first look for chip select pins in the devices pin groups */
|
||||
for (pingroup_index = 0;
|
||||
@@ -761,6 +762,7 @@ static int bcm2835_spi_setup(struct spi_
|
||||
@@ -759,6 +760,7 @@ static int bcm2835_spi_setup(struct spi_
|
||||
* so we are setting it here explicitly
|
||||
*/
|
||||
gpio_set_value(spi->cs_gpio, (spi->mode & SPI_CS_HIGH) ? 0 : 1);
|
||||
|
@ -10,7 +10,7 @@ Subject: [PATCH] fbmem: Ensure that parameters are properly checked within
|
||||
|
||||
--- a/drivers/video/fbdev/core/fbmem.c
|
||||
+++ b/drivers/video/fbdev/core/fbmem.c
|
||||
@@ -1090,7 +1090,13 @@ static int fb_copyarea_user(struct fb_in
|
||||
@@ -1097,7 +1097,13 @@ static int fb_copyarea_user(struct fb_in
|
||||
int ret = 0;
|
||||
if (!lock_fb_info(info))
|
||||
return -ENODEV;
|
||||
|
@ -9,7 +9,7 @@ Subject: [PATCH] spi-bcm2835: Remove unused code
|
||||
|
||||
--- a/drivers/spi/spi-bcm2835.c
|
||||
+++ b/drivers/spi/spi-bcm2835.c
|
||||
@@ -679,17 +679,8 @@ static void bcm2835_spi_set_cs(struct sp
|
||||
@@ -677,17 +677,8 @@ static void bcm2835_spi_set_cs(struct sp
|
||||
bcm2835_wr(bs, BCM2835_SPI_CS, cs);
|
||||
}
|
||||
|
||||
@ -27,7 +27,7 @@ Subject: [PATCH] spi-bcm2835: Remove unused code
|
||||
/*
|
||||
* sanity checking the native-chipselects
|
||||
*/
|
||||
@@ -707,63 +698,6 @@ static int bcm2835_spi_setup(struct spi_
|
||||
@@ -705,63 +696,6 @@ static int bcm2835_spi_setup(struct spi_
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
--- a/arch/arm/mach-cns3xxx/pcie.c
|
||||
+++ b/arch/arm/mach-cns3xxx/pcie.c
|
||||
@@ -86,6 +86,79 @@ static void __iomem *cns3xxx_pci_map_bus
|
||||
return base + (where & 0xffc) + (devfn << 12);
|
||||
return base + where + (devfn << 12);
|
||||
}
|
||||
|
||||
+static inline int check_master_abort(struct pci_bus *bus, unsigned int devfn, int where)
|
||||
@ -82,7 +82,7 @@
|
||||
{
|
||||
@@ -95,6 +168,11 @@ static int cns3xxx_pci_read_config(struc
|
||||
|
||||
ret = pci_generic_config_read32(bus, devfn, where, size, val);
|
||||
ret = pci_generic_config_read(bus, devfn, where, size, val);
|
||||
|
||||
+ if (check_master_abort(bus, devfn, where)) {
|
||||
+ printk(KERN_ERR "pci error: %04d:%02x:%02x.%02x %02x(%d)= master_abort on read\n", pci_domain_nr(bus), bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn), where, size);
|
||||
|
@ -39,7 +39,7 @@
|
||||
/**
|
||||
--- a/drivers/spi/spi.c
|
||||
+++ b/drivers/spi/spi.c
|
||||
@@ -939,6 +939,9 @@ static int spi_transfer_one_message(stru
|
||||
@@ -941,6 +941,9 @@ static int spi_transfer_one_message(stru
|
||||
list_for_each_entry(xfer, &msg->transfers, transfer_list) {
|
||||
trace_spi_transfer_start(msg, xfer);
|
||||
|
||||
|
@ -1891,6 +1891,7 @@ CONFIG_LBDAF=y
|
||||
# CONFIG_LCD_S6E63M0 is not set
|
||||
# CONFIG_LCD_TDO24M is not set
|
||||
# CONFIG_LCD_VGG2432A4 is not set
|
||||
CONFIG_LDISC_AUTOLOAD=y
|
||||
# CONFIG_LDM_PARTITION is not set
|
||||
# CONFIG_LEDS_BCM6328 is not set
|
||||
# CONFIG_LEDS_BCM6358 is not set
|
||||
|
@ -1,40 +0,0 @@
|
||||
From e9156cd26a495a18706e796f02a81fee41ec14f4 Mon Sep 17 00:00:00 2001
|
||||
From: James Hughes <james.hughes@raspberrypi.org>
|
||||
Date: Wed, 19 Apr 2017 11:13:40 +0100
|
||||
Subject: [PATCH] smsc95xx: Use skb_cow_head to deal with cloned skbs
|
||||
|
||||
The driver was failing to check that the SKB wasn't cloned
|
||||
before adding checksum data.
|
||||
Replace existing handling to extend/copy the header buffer
|
||||
with skb_cow_head.
|
||||
|
||||
Signed-off-by: James Hughes <james.hughes@raspberrypi.org>
|
||||
Acked-by: Eric Dumazet <edumazet@google.com>
|
||||
Acked-by: Woojung Huh <Woojung.Huh@microchip.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/usb/smsc95xx.c | 12 ++++++------
|
||||
1 file changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
--- a/drivers/net/usb/smsc95xx.c
|
||||
+++ b/drivers/net/usb/smsc95xx.c
|
||||
@@ -1838,13 +1838,13 @@ static struct sk_buff *smsc95xx_tx_fixup
|
||||
/* We do not advertise SG, so skbs should be already linearized */
|
||||
BUG_ON(skb_shinfo(skb)->nr_frags);
|
||||
|
||||
- if (skb_headroom(skb) < overhead) {
|
||||
- struct sk_buff *skb2 = skb_copy_expand(skb,
|
||||
- overhead, 0, flags);
|
||||
+ /* Make writable and expand header space by overhead if required */
|
||||
+ if (skb_cow_head(skb, overhead)) {
|
||||
+ /* Must deallocate here as returning NULL to indicate error
|
||||
+ * means the skb won't be deallocated in the caller.
|
||||
+ */
|
||||
dev_kfree_skb_any(skb);
|
||||
- skb = skb2;
|
||||
- if (!skb)
|
||||
- return NULL;
|
||||
+ return NULL;
|
||||
}
|
||||
|
||||
if (csum) {
|
@ -1,38 +0,0 @@
|
||||
From 6bc6895bdd6744e0136eaa4a11fbdb20a7db4e40 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Dumazet <edumazet@google.com>
|
||||
Date: Wed, 19 Apr 2017 09:59:25 -0700
|
||||
Subject: [PATCH] ch9200: use skb_cow_head() to deal with cloned skbs
|
||||
|
||||
We need to ensure there is enough headroom to push extra header,
|
||||
but we also need to check if we are allowed to change headers.
|
||||
|
||||
skb_cow_head() is the proper helper to deal with this.
|
||||
|
||||
Fixes: 4a476bd6d1d9 ("usbnet: New driver for QinHeng CH9200 devices")
|
||||
Signed-off-by: Eric Dumazet <edumazet@google.com>
|
||||
Cc: James Hughes <james.hughes@raspberrypi.org>
|
||||
Cc: Matthew Garrett <mjg59@srcf.ucam.org>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/usb/ch9200.c | 9 ++-------
|
||||
1 file changed, 2 insertions(+), 7 deletions(-)
|
||||
|
||||
--- a/drivers/net/usb/ch9200.c
|
||||
+++ b/drivers/net/usb/ch9200.c
|
||||
@@ -255,14 +255,9 @@ static struct sk_buff *ch9200_tx_fixup(s
|
||||
tx_overhead = 0x40;
|
||||
|
||||
len = skb->len;
|
||||
- if (skb_headroom(skb) < tx_overhead) {
|
||||
- struct sk_buff *skb2;
|
||||
-
|
||||
- skb2 = skb_copy_expand(skb, tx_overhead, 0, flags);
|
||||
+ if (skb_cow_head(skb, tx_overhead)) {
|
||||
dev_kfree_skb_any(skb);
|
||||
- skb = skb2;
|
||||
- if (!skb)
|
||||
- return NULL;
|
||||
+ return NULL;
|
||||
}
|
||||
|
||||
__skb_push(skb, tx_overhead);
|
@ -1,43 +0,0 @@
|
||||
From 39fba7835aacda65284a86e611774cbba71dac20 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Dumazet <edumazet@google.com>
|
||||
Date: Wed, 19 Apr 2017 09:59:26 -0700
|
||||
Subject: [PATCH] kaweth: use skb_cow_head() to deal with cloned skbs
|
||||
|
||||
We can use skb_cow_head() to properly deal with clones,
|
||||
especially the ones coming from TCP stack that allow their head being
|
||||
modified. This avoids a copy.
|
||||
|
||||
Signed-off-by: Eric Dumazet <edumazet@google.com>
|
||||
Cc: James Hughes <james.hughes@raspberrypi.org>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/usb/kaweth.c | 18 ++++++------------
|
||||
1 file changed, 6 insertions(+), 12 deletions(-)
|
||||
|
||||
--- a/drivers/net/usb/kaweth.c
|
||||
+++ b/drivers/net/usb/kaweth.c
|
||||
@@ -812,18 +812,12 @@ static netdev_tx_t kaweth_start_xmit(str
|
||||
}
|
||||
|
||||
/* We now decide whether we can put our special header into the sk_buff */
|
||||
- if (skb_cloned(skb) || skb_headroom(skb) < 2) {
|
||||
- /* no such luck - we make our own */
|
||||
- struct sk_buff *copied_skb;
|
||||
- copied_skb = skb_copy_expand(skb, 2, 0, GFP_ATOMIC);
|
||||
- dev_kfree_skb_irq(skb);
|
||||
- skb = copied_skb;
|
||||
- if (!copied_skb) {
|
||||
- kaweth->stats.tx_errors++;
|
||||
- netif_start_queue(net);
|
||||
- spin_unlock_irq(&kaweth->device_lock);
|
||||
- return NETDEV_TX_OK;
|
||||
- }
|
||||
+ if (skb_cow_head(skb, 2)) {
|
||||
+ kaweth->stats.tx_errors++;
|
||||
+ netif_start_queue(net);
|
||||
+ spin_unlock_irq(&kaweth->device_lock);
|
||||
+ dev_kfree_skb_any(skb);
|
||||
+ return NETDEV_TX_OK;
|
||||
}
|
||||
|
||||
private_header = (__le16 *)__skb_push(skb, 2);
|
@ -24,7 +24,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
|
||||
--- a/drivers/spi/spi.c
|
||||
+++ b/drivers/spi/spi.c
|
||||
@@ -1141,6 +1141,7 @@ static void __spi_pump_messages(struct s
|
||||
@@ -1143,6 +1143,7 @@ static void __spi_pump_messages(struct s
|
||||
}
|
||||
}
|
||||
|
||||
@ -32,7 +32,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
trace_spi_message_start(master->cur_msg);
|
||||
|
||||
if (master->prepare_message) {
|
||||
@@ -1150,6 +1151,7 @@ static void __spi_pump_messages(struct s
|
||||
@@ -1152,6 +1153,7 @@ static void __spi_pump_messages(struct s
|
||||
"failed to prepare message: %d\n", ret);
|
||||
master->cur_msg->status = ret;
|
||||
spi_finalize_current_message(master);
|
||||
@ -40,7 +40,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
return;
|
||||
}
|
||||
master->cur_msg_prepared = true;
|
||||
@@ -1159,6 +1161,7 @@ static void __spi_pump_messages(struct s
|
||||
@@ -1161,6 +1163,7 @@ static void __spi_pump_messages(struct s
|
||||
if (ret) {
|
||||
master->cur_msg->status = ret;
|
||||
spi_finalize_current_message(master);
|
||||
@ -48,7 +48,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1166,8 +1169,10 @@ static void __spi_pump_messages(struct s
|
||||
@@ -1168,8 +1171,10 @@ static void __spi_pump_messages(struct s
|
||||
if (ret) {
|
||||
dev_err(&master->dev,
|
||||
"failed to transfer one message from queue\n");
|
||||
@ -59,7 +59,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2335,6 +2340,46 @@ int spi_async_locked(struct spi_device *
|
||||
@@ -2337,6 +2342,46 @@ int spi_async_locked(struct spi_device *
|
||||
EXPORT_SYMBOL_GPL(spi_async_locked);
|
||||
|
||||
|
||||
|
@ -27,7 +27,7 @@ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
|
||||
|
||||
--- a/arch/mips/Kconfig
|
||||
+++ b/arch/mips/Kconfig
|
||||
@@ -2753,10 +2753,10 @@ choice
|
||||
@@ -2756,10 +2756,10 @@ choice
|
||||
the documented boot protocol using a device tree.
|
||||
|
||||
config MIPS_RAW_APPENDED_DTB
|
||||
@ -40,7 +40,7 @@ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
|
||||
(e.g. cat vmlinux.bin <filename>.dtb > vmlinux_w_dtb).
|
||||
|
||||
This is meant as a backward compatibility convenience for those
|
||||
@@ -2768,24 +2768,6 @@ choice
|
||||
@@ -2771,24 +2771,6 @@ choice
|
||||
look like a DTB header after a reboot if no actual DTB is appended
|
||||
to vmlinux.bin. Do not leave this option active in a production kernel
|
||||
if you don't intend to always append a DTB.
|
||||
|
@ -1,24 +0,0 @@
|
||||
From cd4b1e34655d46950c065d9284b596cd8d7b28cd Mon Sep 17 00:00:00 2001
|
||||
From: John Youn <johnyoun@synopsys.com>
|
||||
Date: Thu, 3 Nov 2016 17:55:45 -0700
|
||||
Subject: [PATCH] usb: dwc2: Remove unnecessary kfree
|
||||
|
||||
This shouldn't be freed by the HCD as it is owned by the core and
|
||||
allocated with devm_kzalloc.
|
||||
|
||||
Signed-off-by: John Youn <johnyoun@synopsys.com>
|
||||
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
---
|
||||
drivers/usb/dwc2/hcd.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
--- a/drivers/usb/dwc2/hcd.c
|
||||
+++ b/drivers/usb/dwc2/hcd.c
|
||||
@@ -3164,7 +3164,6 @@ error3:
|
||||
error2:
|
||||
usb_put_hcd(hcd);
|
||||
error1:
|
||||
- kfree(hsotg->core_params);
|
||||
|
||||
#ifdef CONFIG_USB_DWC2_TRACK_MISSED_SOFS
|
||||
kfree(hsotg->last_frame_num_array);
|
@ -82,7 +82,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
/* Gobi 1000 QMI/wwan interface number is 3 according to qcserial */
|
||||
#define QMI_GOBI1K_DEVICE(vend, prod) \
|
||||
QMI_FIXED_INTF(vend, prod, 3)
|
||||
@@ -915,6 +939,8 @@ static const struct usb_device_id produc
|
||||
@@ -916,6 +940,8 @@ static const struct usb_device_id produc
|
||||
{QMI_FIXED_INTF(0x03f0, 0x9d1d, 1)}, /* HP lt4120 Snapdragon X5 LTE */
|
||||
{QMI_FIXED_INTF(0x22de, 0x9061, 3)}, /* WeTelecom WPD-600N */
|
||||
{QMI_FIXED_INTF(0x1e0e, 0x9001, 5)}, /* SIMCom 7230E */
|
||||
|
@ -1,79 +0,0 @@
|
||||
From 03556dab1cb02d85b50d7be3ee3a3bac001f5991 Mon Sep 17 00:00:00 2001
|
||||
From: Koen Vandeputte <koen.vandeputte@ncentric.com>
|
||||
Date: Tue, 18 Dec 2018 12:14:06 +0100
|
||||
Subject: [PATCH] arm: cns3xxx: fix writing to wrong PCI registers after
|
||||
alignment
|
||||
|
||||
Originally, cns3xxx used it's own functions for mapping, reading and writing registers.
|
||||
|
||||
Commit 802b7c06adc7 ("ARM: cns3xxx: Convert PCI to use generic config accessors")
|
||||
removed the internal PCI config write function in favor of the generic one:
|
||||
|
||||
cns3xxx_pci_write_config() --> pci_generic_config_write()
|
||||
|
||||
cns3xxx_pci_write_config() expected aligned addresses, being produced by cns3xxx_pci_map_bus()
|
||||
while the generic one pci_generic_config_write() actually expects the real address
|
||||
as both the function and hardware are capable of byte-aligned writes.
|
||||
|
||||
This currently leads to pci_generic_config_write() writing
|
||||
to the wrong registers on some ocasions.
|
||||
|
||||
First issue seen due to this:
|
||||
|
||||
- driver ath9k gets loaded
|
||||
- The driver wants to write value 0xA8 to register PCI_LATENCY_TIMER, located at 0x0D
|
||||
- cns3xxx_pci_map_bus() aligns the address to 0x0C
|
||||
- pci_generic_config_write() effectively writes 0xA8 into register 0x0C (CACHE_LINE_SIZE)
|
||||
|
||||
This seems to cause some slight instability when certain PCI devices are used.
|
||||
|
||||
Another issue example caused by this this is the PCI bus numbering,
|
||||
where the primary bus is higher than the secondary, which is impossible.
|
||||
|
||||
Before:
|
||||
|
||||
00:00.0 PCI bridge: Cavium, Inc. Device 3400 (rev 01) (prog-if 00 [Normal decode])
|
||||
Flags: bus master, fast devsel, latency 0, IRQ 255
|
||||
Bus: primary=02, secondary=01, subordinate=ff, sec-latency=0
|
||||
|
||||
After fix:
|
||||
|
||||
00:00.0 PCI bridge: Cavium, Inc. Device 3400 (rev 01) (prog-if 00 [Normal decode])
|
||||
Flags: bus master, fast devsel, latency 0, IRQ 255
|
||||
Bus: primary=00, secondary=01, subordinate=02, sec-latency=0
|
||||
|
||||
And very likely some more ..
|
||||
|
||||
Fix all by omitting the alignment being done in the mapping function.
|
||||
|
||||
Fixes: 802b7c06adc7 ("ARM: cns3xxx: Convert PCI to use generic config accessors")
|
||||
Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
|
||||
CC: Arnd Bergmann <arnd@arndb.de>
|
||||
CC: Bjorn Helgaas <bhelgaas@google.com>
|
||||
CC: Krzysztof Halasa <khalasa@piap.pl>
|
||||
CC: Olof Johansson <olof@lixom.net>
|
||||
CC: Robin Leblon <robin.leblon@ncentric.com>
|
||||
CC: Rob Herring <robh@kernel.org>
|
||||
CC: Russell King <linux@armlinux.org.uk>
|
||||
CC: Tim Harvey <tharvey@gateworks.com>
|
||||
CC: stable@vger.kernel.org # v4.0+
|
||||
---
|
||||
arch/arm/mach-cns3xxx/pcie.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm/mach-cns3xxx/pcie.c b/arch/arm/mach-cns3xxx/pcie.c
|
||||
index 318394ed5c7a..5e11ad3164e0 100644
|
||||
--- a/arch/arm/mach-cns3xxx/pcie.c
|
||||
+++ b/arch/arm/mach-cns3xxx/pcie.c
|
||||
@@ -83,7 +83,7 @@ static void __iomem *cns3xxx_pci_map_bus(struct pci_bus *bus,
|
||||
} else /* remote PCI bus */
|
||||
base = cnspci->cfg1_regs + ((busno & 0xf) << 20);
|
||||
|
||||
- return base + (where & 0xffc) + (devfn << 12);
|
||||
+ return base + where + (devfn << 12);
|
||||
}
|
||||
|
||||
static int cns3xxx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
|
||||
--
|
||||
2.17.1
|
||||
|
@ -33,11 +33,9 @@ CC: stable@vger.kernel.org # v4.0+
|
||||
arch/arm/mach-cns3xxx/pcie.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm/mach-cns3xxx/pcie.c b/arch/arm/mach-cns3xxx/pcie.c
|
||||
index 5e11ad3164e0..95a11d5b3587 100644
|
||||
--- a/arch/arm/mach-cns3xxx/pcie.c
|
||||
+++ b/arch/arm/mach-cns3xxx/pcie.c
|
||||
@@ -93,7 +93,7 @@ static int cns3xxx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
|
||||
@@ -93,7 +93,7 @@ static int cns3xxx_pci_read_config(struc
|
||||
u32 mask = (0x1ull << (size * 8)) - 1;
|
||||
int shift = (where % 4) * 8;
|
||||
|
||||
@ -46,6 +44,3 @@ index 5e11ad3164e0..95a11d5b3587 100644
|
||||
|
||||
if (ret == PCIBIOS_SUCCESSFUL && !bus->number && !devfn &&
|
||||
(where & 0xffc) == PCI_CLASS_REVISION)
|
||||
--
|
||||
2.17.1
|
||||
|
||||
|
@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/arch/mips/Kconfig
|
||||
+++ b/arch/mips/Kconfig
|
||||
@@ -1619,6 +1619,7 @@ config CPU_CAVIUM_OCTEON
|
||||
@@ -1622,6 +1622,7 @@ config CPU_CAVIUM_OCTEON
|
||||
select USB_EHCI_BIG_ENDIAN_MMIO if CPU_BIG_ENDIAN
|
||||
select USB_OHCI_BIG_ENDIAN_MMIO if CPU_BIG_ENDIAN
|
||||
select MIPS_L1_CACHE_SHIFT_7
|
||||
@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
help
|
||||
The Cavium Octeon processor is a highly integrated chip containing
|
||||
many ethernet hardware widgets for networking tasks. The processor
|
||||
@@ -1914,6 +1915,9 @@ config MIPS_MALTA_PM
|
||||
@@ -1917,6 +1918,9 @@ config MIPS_MALTA_PM
|
||||
bool
|
||||
default y
|
||||
|
||||
|
@ -85,7 +85,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
dmactl |= BIT(DMA_REQUEST_OUTSTANDING);
|
||||
writel(dmactl, &dma->dmactl);
|
||||
|
||||
@@ -1046,7 +1046,7 @@ net2280_queue(struct usb_ep *_ep, struct
|
||||
@@ -1044,7 +1044,7 @@ net2280_queue(struct usb_ep *_ep, struct
|
||||
|
||||
/* kickstart this i/o queue? */
|
||||
if (list_empty(&ep->queue) && !ep->stopped &&
|
||||
@ -94,7 +94,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
(readl(&ep->regs->ep_rsp) & BIT(CLEAR_ENDPOINT_HALT)))) {
|
||||
|
||||
/* use DMA if the endpoint supports it, else pio */
|
||||
@@ -1169,7 +1169,7 @@ static void scan_dma_completions(struct
|
||||
@@ -1167,7 +1167,7 @@ static void scan_dma_completions(struct
|
||||
break;
|
||||
} else if (!ep->is_in &&
|
||||
(req->req.length % ep->ep.maxpacket) &&
|
||||
@ -103,7 +103,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
|
||||
tmp = readl(&ep->regs->ep_stat);
|
||||
/* AVOID TROUBLE HERE by not issuing short reads from
|
||||
@@ -1367,7 +1367,7 @@ net2280_set_halt_and_wedge(struct usb_ep
|
||||
@@ -1365,7 +1365,7 @@ net2280_set_halt_and_wedge(struct usb_ep
|
||||
ep->wedged = 1;
|
||||
} else {
|
||||
clear_halt(ep);
|
||||
@ -112,7 +112,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
!list_empty(&ep->queue) && ep->td_dma)
|
||||
restart_dma(ep);
|
||||
ep->wedged = 0;
|
||||
@@ -2397,7 +2397,7 @@ static int net2280_start(struct usb_gadg
|
||||
@@ -2395,7 +2395,7 @@ static int net2280_start(struct usb_gadg
|
||||
*/
|
||||
net2280_led_active(dev, 1);
|
||||
|
||||
@ -121,7 +121,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
defect7374_enable_data_eps_zero(dev);
|
||||
|
||||
ep0_start(dev);
|
||||
@@ -3066,7 +3066,7 @@ static void handle_stat0_irqs(struct net
|
||||
@@ -3064,7 +3064,7 @@ static void handle_stat0_irqs(struct net
|
||||
}
|
||||
ep->stopped = 0;
|
||||
dev->protocol_stall = 0;
|
||||
@ -130,7 +130,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
if (ep->dev->quirks & PLX_2280)
|
||||
tmp = BIT(FIFO_OVERFLOW) |
|
||||
BIT(FIFO_UNDERFLOW);
|
||||
@@ -3093,7 +3093,7 @@ static void handle_stat0_irqs(struct net
|
||||
@@ -3091,7 +3091,7 @@ static void handle_stat0_irqs(struct net
|
||||
cpu_to_le32s(&u.raw[0]);
|
||||
cpu_to_le32s(&u.raw[1]);
|
||||
|
||||
@ -139,7 +139,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
defect7374_workaround(dev, u.r);
|
||||
|
||||
tmp = 0;
|
||||
@@ -3176,7 +3176,7 @@ static void handle_stat0_irqs(struct net
|
||||
@@ -3174,7 +3174,7 @@ static void handle_stat0_irqs(struct net
|
||||
} else {
|
||||
ep_vdbg(dev, "%s clear halt\n", e->ep.name);
|
||||
clear_halt(e);
|
||||
@ -148,7 +148,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
!list_empty(&e->queue) && e->td_dma)
|
||||
restart_dma(e);
|
||||
}
|
||||
@@ -3198,7 +3198,7 @@ static void handle_stat0_irqs(struct net
|
||||
@@ -3196,7 +3196,7 @@ static void handle_stat0_irqs(struct net
|
||||
if (e->ep.name == ep0name)
|
||||
goto do_stall;
|
||||
set_halt(e);
|
||||
@ -157,7 +157,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
abort_dma(e);
|
||||
allow_status(ep);
|
||||
ep_vdbg(dev, "%s set halt\n", ep->ep.name);
|
||||
@@ -3237,7 +3237,7 @@ do_stall:
|
||||
@@ -3235,7 +3235,7 @@ do_stall:
|
||||
#undef w_length
|
||||
|
||||
next_endpoints:
|
||||
@ -166,7 +166,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
u32 mask = (BIT(ENDPOINT_0_INTERRUPT) |
|
||||
USB3380_IRQSTAT0_EP_INTR_MASK_IN |
|
||||
USB3380_IRQSTAT0_EP_INTR_MASK_OUT);
|
||||
@@ -3404,7 +3404,7 @@ __acquires(dev->lock)
|
||||
@@ -3402,7 +3402,7 @@ __acquires(dev->lock)
|
||||
writel(tmp, &dma->dmastat);
|
||||
|
||||
/* dma sync*/
|
||||
@ -175,7 +175,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
u32 r_dmacount = readl(&dma->dmacount);
|
||||
if (!ep->is_in && (r_dmacount & 0x00FFFFFF) &&
|
||||
(tmp & BIT(DMA_TRANSACTION_DONE_INTERRUPT)))
|
||||
@@ -3473,7 +3473,7 @@ static irqreturn_t net2280_irq(int irq,
|
||||
@@ -3471,7 +3471,7 @@ static irqreturn_t net2280_irq(int irq,
|
||||
/* control requests and PIO */
|
||||
handle_stat0_irqs(dev, readl(&dev->regs->irqstat0));
|
||||
|
||||
@ -184,7 +184,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
/* re-enable interrupt to trigger any possible new interrupt */
|
||||
u32 pciirqenb1 = readl(&dev->regs->pciirqenb1);
|
||||
writel(pciirqenb1 & 0x7FFFFFFF, &dev->regs->pciirqenb1);
|
||||
@@ -3518,7 +3518,7 @@ static void net2280_remove(struct pci_de
|
||||
@@ -3516,7 +3516,7 @@ static void net2280_remove(struct pci_de
|
||||
}
|
||||
if (dev->got_irq)
|
||||
free_irq(pdev->irq, dev);
|
||||
@ -193,7 +193,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
pci_disable_msi(pdev);
|
||||
if (dev->regs)
|
||||
iounmap(dev->regs);
|
||||
@@ -3598,7 +3598,7 @@ static int net2280_probe(struct pci_dev
|
||||
@@ -3596,7 +3596,7 @@ static int net2280_probe(struct pci_dev
|
||||
dev->dep = (struct net2280_dep_regs __iomem *) (base + 0x0200);
|
||||
dev->epregs = (struct net2280_ep_regs __iomem *) (base + 0x0300);
|
||||
|
||||
@ -202,7 +202,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
u32 fsmvalue;
|
||||
u32 usbstat;
|
||||
dev->usb_ext = (struct usb338x_usb_ext_regs __iomem *)
|
||||
@@ -3642,7 +3642,7 @@ static int net2280_probe(struct pci_dev
|
||||
@@ -3640,7 +3640,7 @@ static int net2280_probe(struct pci_dev
|
||||
goto done;
|
||||
}
|
||||
|
||||
@ -211,7 +211,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
if (pci_enable_msi(pdev))
|
||||
ep_err(dev, "Failed to enable MSI mode\n");
|
||||
|
||||
@@ -3760,10 +3760,19 @@ static const struct pci_device_id pci_id
|
||||
@@ -3758,10 +3758,19 @@ static const struct pci_device_id pci_id
|
||||
.class = ((PCI_CLASS_SERIAL_USB << 8) | 0xfe),
|
||||
.class_mask = ~0,
|
||||
.vendor = PCI_VENDOR_ID_PLX,
|
||||
@ -232,7 +232,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
},
|
||||
{
|
||||
.class = ((PCI_CLASS_SERIAL_USB << 8) | 0xfe),
|
||||
@@ -3772,7 +3781,7 @@ static const struct pci_device_id pci_id
|
||||
@@ -3770,7 +3779,7 @@ static const struct pci_device_id pci_id
|
||||
.device = 0x3382,
|
||||
.subvendor = PCI_ANY_ID,
|
||||
.subdevice = PCI_ANY_ID,
|
||||
|
@ -4,8 +4,8 @@
|
||||
KBUILD_CFLAGS += $(call cc-disable-warning, attribute-alias)
|
||||
|
||||
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
|
||||
-KBUILD_CFLAGS += $(call cc-option,-Oz,-Os)
|
||||
+KBUILD_CFLAGS += $(call cc-option,-Oz,-Os) $(EXTRA_OPTIMIZATION)
|
||||
-KBUILD_CFLAGS += -Os
|
||||
+KBUILD_CFLAGS += -Os $(EXTRA_OPTIMIZATION)
|
||||
else
|
||||
ifdef CONFIG_PROFILE_ALL_BRANCHES
|
||||
-KBUILD_CFLAGS += -O2
|
||||
|
@ -123,7 +123,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
set_license(mod, get_modinfo(info, "license"));
|
||||
--- a/scripts/mod/modpost.c
|
||||
+++ b/scripts/mod/modpost.c
|
||||
@@ -1964,7 +1964,9 @@ static void read_symbols(char *modname)
|
||||
@@ -1966,7 +1966,9 @@ static void read_symbols(char *modname)
|
||||
symname = remove_dot(info.strtab + sym->st_name);
|
||||
|
||||
handle_modversions(mod, &info, sym, symname);
|
||||
@ -133,7 +133,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
}
|
||||
if (!is_vmlinux(modname) ||
|
||||
(is_vmlinux(modname) && vmlinux_section_warnings))
|
||||
@@ -2108,7 +2110,9 @@ static void add_header(struct buffer *b,
|
||||
@@ -2110,7 +2112,9 @@ static void add_header(struct buffer *b,
|
||||
buf_printf(b, "#include <linux/vermagic.h>\n");
|
||||
buf_printf(b, "#include <linux/compiler.h>\n");
|
||||
buf_printf(b, "\n");
|
||||
@ -143,7 +143,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
buf_printf(b, "\n");
|
||||
buf_printf(b, "__visible struct module __this_module\n");
|
||||
buf_printf(b, "__attribute__((section(\".gnu.linkonce.this_module\"))) = {\n");
|
||||
@@ -2125,8 +2129,10 @@ static void add_header(struct buffer *b,
|
||||
@@ -2127,8 +2131,10 @@ static void add_header(struct buffer *b,
|
||||
|
||||
static void add_intree_flag(struct buffer *b, int is_intree)
|
||||
{
|
||||
@ -154,7 +154,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
}
|
||||
|
||||
/* Cannot check for assembler */
|
||||
@@ -2139,10 +2145,12 @@ static void add_retpoline(struct buffer
|
||||
@@ -2141,10 +2147,12 @@ static void add_retpoline(struct buffer
|
||||
|
||||
static void add_staging_flag(struct buffer *b, const char *name)
|
||||
{
|
||||
@ -167,7 +167,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
}
|
||||
|
||||
/* In kernel, this size is defined in linux/module.h;
|
||||
@@ -2246,11 +2254,13 @@ static void add_depends(struct buffer *b
|
||||
@@ -2248,11 +2256,13 @@ static void add_depends(struct buffer *b
|
||||
|
||||
static void add_srcversion(struct buffer *b, struct module *mod)
|
||||
{
|
||||
@ -181,7 +181,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
}
|
||||
|
||||
static void write_if_changed(struct buffer *b, const char *fname)
|
||||
@@ -2485,7 +2495,9 @@ int main(int argc, char **argv)
|
||||
@@ -2487,7 +2497,9 @@ int main(int argc, char **argv)
|
||||
add_staging_flag(&buf, mod->name);
|
||||
err |= add_versions(&buf, mod);
|
||||
add_depends(&buf, mod, modules);
|
||||
|
@ -24,20 +24,6 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
|
||||
/*
|
||||
* IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble
|
||||
@@ -136,11 +137,13 @@
|
||||
* This is an Ethernet frame header.
|
||||
*/
|
||||
|
||||
+#if __UAPI_DEF_ETHHDR
|
||||
struct ethhdr {
|
||||
unsigned char h_dest[ETH_ALEN]; /* destination eth addr */
|
||||
unsigned char h_source[ETH_ALEN]; /* source ether addr */
|
||||
__be16 h_proto; /* packet type ID field */
|
||||
} __attribute__((packed));
|
||||
+#endif
|
||||
|
||||
|
||||
#endif /* _UAPI_LINUX_IF_ETHER_H */
|
||||
--- a/include/uapi/linux/libc-compat.h
|
||||
+++ b/include/uapi/linux/libc-compat.h
|
||||
@@ -85,6 +85,14 @@
|
||||
|
@ -8,7 +8,7 @@ Acked-by: Rob Landley <rob@landley.net>
|
||||
---
|
||||
--- a/arch/mips/Kconfig
|
||||
+++ b/arch/mips/Kconfig
|
||||
@@ -1033,9 +1033,6 @@ config FW_ARC
|
||||
@@ -1036,9 +1036,6 @@ config FW_ARC
|
||||
config ARCH_MAY_HAVE_PC_FDC
|
||||
bool
|
||||
|
||||
@ -18,7 +18,7 @@ Acked-by: Rob Landley <rob@landley.net>
|
||||
config CEVT_BCM1480
|
||||
bool
|
||||
|
||||
@@ -2793,6 +2790,18 @@ choice
|
||||
@@ -2796,6 +2793,18 @@ choice
|
||||
bool "Bootloader kernel arguments if available"
|
||||
endchoice
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/arch/mips/Kconfig
|
||||
+++ b/arch/mips/Kconfig
|
||||
@@ -1124,6 +1124,10 @@ config SYNC_R4K
|
||||
@@ -1127,6 +1127,10 @@ config SYNC_R4K
|
||||
config MIPS_MACHINE
|
||||
def_bool n
|
||||
|
||||
|
@ -26,7 +26,7 @@ v2: incorporated changes suggested by Jonas Gorski
|
||||
|
||||
--- a/arch/mips/Kconfig
|
||||
+++ b/arch/mips/Kconfig
|
||||
@@ -2725,6 +2725,20 @@ config MIPS_O32_FP64_SUPPORT
|
||||
@@ -2728,6 +2728,20 @@ config MIPS_O32_FP64_SUPPORT
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
|
@ -21,8 +21,8 @@ Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
|
||||
|
||||
--- a/arch/arc/kernel/head.S
|
||||
+++ b/arch/arc/kernel/head.S
|
||||
@@ -49,6 +49,16 @@
|
||||
1:
|
||||
@@ -59,6 +59,16 @@
|
||||
#endif
|
||||
.endm
|
||||
|
||||
+; Here "patch-dtb" will embed external .dtb
|
||||
|
@ -206,7 +206,7 @@
|
||||
+}
|
||||
--- a/fs/jffs2/super.c
|
||||
+++ b/fs/jffs2/super.c
|
||||
@@ -373,14 +373,41 @@ static int __init init_jffs2_fs(void)
|
||||
@@ -377,14 +377,41 @@ static int __init init_jffs2_fs(void)
|
||||
BUILD_BUG_ON(sizeof(struct jffs2_raw_inode) != 68);
|
||||
BUILD_BUG_ON(sizeof(struct jffs2_raw_summary) != 32);
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
/* "Be conservative in what you do,
|
||||
be liberal in what you accept from others."
|
||||
If it's non-zero, we mark only out of window RST segments as INVALID. */
|
||||
@@ -515,6 +518,9 @@ static bool tcp_in_window(const struct n
|
||||
@@ -519,6 +522,9 @@ static bool tcp_in_window(const struct n
|
||||
s32 receiver_offset;
|
||||
bool res, in_recv_win;
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
/*
|
||||
* Get the required data from the packet.
|
||||
*/
|
||||
@@ -1481,6 +1487,13 @@ static struct ctl_table tcp_sysctl_table
|
||||
@@ -1485,6 +1491,13 @@ static struct ctl_table tcp_sysctl_table
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
|
@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||
goto drop;
|
||||
|
||||
@@ -3139,6 +3141,7 @@ static int packet_create(struct net *net
|
||||
@@ -3148,6 +3150,7 @@ static int packet_create(struct net *net
|
||||
mutex_init(&po->pg_vec_lock);
|
||||
po->rollover = NULL;
|
||||
po->prot_hook.func = packet_rcv;
|
||||
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
if (sock->type == SOCK_PACKET)
|
||||
po->prot_hook.func = packet_rcv_spkt;
|
||||
@@ -3797,6 +3800,16 @@ packet_setsockopt(struct socket *sock, i
|
||||
@@ -3806,6 +3809,16 @@ packet_setsockopt(struct socket *sock, i
|
||||
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
|
||||
return 0;
|
||||
}
|
||||
@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
default:
|
||||
return -ENOPROTOOPT;
|
||||
}
|
||||
@@ -3849,6 +3862,13 @@ static int packet_getsockopt(struct sock
|
||||
@@ -3858,6 +3871,13 @@ static int packet_getsockopt(struct sock
|
||||
case PACKET_VNET_HDR:
|
||||
val = po->has_vnet_hdr;
|
||||
break;
|
||||
|
@ -61,7 +61,7 @@ Isolating individual bridge ports
|
||||
skb = NULL;
|
||||
--- a/net/bridge/br_forward.c
|
||||
+++ b/net/bridge/br_forward.c
|
||||
@@ -141,7 +141,7 @@ EXPORT_SYMBOL_GPL(br_deliver);
|
||||
@@ -140,7 +140,7 @@ EXPORT_SYMBOL_GPL(br_deliver);
|
||||
/* called with rcu_read_lock */
|
||||
void br_forward(const struct net_bridge_port *to, struct sk_buff *skb, struct sk_buff *skb0)
|
||||
{
|
||||
@ -70,7 +70,7 @@ Isolating individual bridge ports
|
||||
if (skb0)
|
||||
deliver_clone(to, skb, __br_forward);
|
||||
else
|
||||
@@ -197,7 +197,7 @@ static void br_flood(struct net_bridge *
|
||||
@@ -196,7 +196,7 @@ static void br_flood(struct net_bridge *
|
||||
struct sk_buff *skb0,
|
||||
void (*__packet_hook)(const struct net_bridge_port *p,
|
||||
struct sk_buff *skb),
|
||||
@ -79,7 +79,7 @@ Isolating individual bridge ports
|
||||
{
|
||||
struct net_bridge_port *p;
|
||||
struct net_bridge_port *prev;
|
||||
@@ -205,6 +205,8 @@ static void br_flood(struct net_bridge *
|
||||
@@ -204,6 +204,8 @@ static void br_flood(struct net_bridge *
|
||||
prev = NULL;
|
||||
|
||||
list_for_each_entry_rcu(p, &br->port_list, list) {
|
||||
@ -88,7 +88,7 @@ Isolating individual bridge ports
|
||||
/* Do not flood unicast traffic to ports that turn it off */
|
||||
if (unicast && !(p->flags & BR_FLOOD))
|
||||
continue;
|
||||
@@ -239,14 +241,14 @@ out:
|
||||
@@ -238,14 +240,14 @@ out:
|
||||
/* called with rcu_read_lock */
|
||||
void br_flood_deliver(struct net_bridge *br, struct sk_buff *skb, bool unicast)
|
||||
{
|
||||
|
@ -172,7 +172,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||
if (err)
|
||||
break;
|
||||
}
|
||||
@@ -1439,7 +1465,8 @@ br_multicast_leave_group(struct net_brid
|
||||
@@ -1432,7 +1458,8 @@ br_multicast_leave_group(struct net_brid
|
||||
struct net_bridge_port *port,
|
||||
struct br_ip *group,
|
||||
struct bridge_mcast_other_query *other_query,
|
||||
@ -182,7 +182,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||
{
|
||||
struct net_bridge_mdb_htable *mdb;
|
||||
struct net_bridge_mdb_entry *mp;
|
||||
@@ -1463,7 +1490,7 @@ br_multicast_leave_group(struct net_brid
|
||||
@@ -1456,7 +1483,7 @@ br_multicast_leave_group(struct net_brid
|
||||
for (pp = &mp->ports;
|
||||
(p = mlock_dereference(*pp, br)) != NULL;
|
||||
pp = &p->next) {
|
||||
@ -191,7 +191,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||
continue;
|
||||
|
||||
rcu_assign_pointer(*pp, p->next);
|
||||
@@ -1526,7 +1553,7 @@ br_multicast_leave_group(struct net_brid
|
||||
@@ -1519,7 +1546,7 @@ br_multicast_leave_group(struct net_brid
|
||||
for (p = mlock_dereference(mp->ports, br);
|
||||
p != NULL;
|
||||
p = mlock_dereference(p->next, br)) {
|
||||
@ -200,7 +200,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||
continue;
|
||||
|
||||
if (!hlist_unhashed(&p->mglist) &&
|
||||
@@ -1544,8 +1571,8 @@ out:
|
||||
@@ -1537,8 +1564,8 @@ out:
|
||||
|
||||
static void br_ip4_multicast_leave_group(struct net_bridge *br,
|
||||
struct net_bridge_port *port,
|
||||
@ -211,7 +211,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||
{
|
||||
struct br_ip br_group;
|
||||
struct bridge_mcast_own_query *own_query;
|
||||
@@ -1560,14 +1587,14 @@ static void br_ip4_multicast_leave_group
|
||||
@@ -1553,14 +1580,14 @@ static void br_ip4_multicast_leave_group
|
||||
br_group.vid = vid;
|
||||
|
||||
br_multicast_leave_group(br, port, &br_group, &br->ip4_other_query,
|
||||
@ -228,7 +228,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||
{
|
||||
struct br_ip br_group;
|
||||
struct bridge_mcast_own_query *own_query;
|
||||
@@ -1582,7 +1609,7 @@ static void br_ip6_multicast_leave_group
|
||||
@@ -1575,7 +1602,7 @@ static void br_ip6_multicast_leave_group
|
||||
br_group.vid = vid;
|
||||
|
||||
br_multicast_leave_group(br, port, &br_group, &br->ip6_other_query,
|
||||
@ -237,7 +237,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1591,6 +1618,7 @@ static int br_multicast_ipv4_rcv(struct
|
||||
@@ -1584,6 +1611,7 @@ static int br_multicast_ipv4_rcv(struct
|
||||
struct sk_buff *skb,
|
||||
u16 vid)
|
||||
{
|
||||
@ -245,7 +245,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||
struct sk_buff *skb_trimmed = NULL;
|
||||
struct igmphdr *ih;
|
||||
int err;
|
||||
@@ -1607,12 +1635,13 @@ static int br_multicast_ipv4_rcv(struct
|
||||
@@ -1600,12 +1628,13 @@ static int br_multicast_ipv4_rcv(struct
|
||||
|
||||
BR_INPUT_SKB_CB(skb)->igmp = 1;
|
||||
ih = igmp_hdr(skb);
|
||||
@ -260,7 +260,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||
break;
|
||||
case IGMPV3_HOST_MEMBERSHIP_REPORT:
|
||||
err = br_ip4_multicast_igmp3_report(br, port, skb_trimmed, vid);
|
||||
@@ -1621,7 +1650,7 @@ static int br_multicast_ipv4_rcv(struct
|
||||
@@ -1614,7 +1643,7 @@ static int br_multicast_ipv4_rcv(struct
|
||||
err = br_ip4_multicast_query(br, port, skb_trimmed, vid);
|
||||
break;
|
||||
case IGMP_HOST_LEAVE_MESSAGE:
|
||||
@ -269,7 +269,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1637,6 +1666,7 @@ static int br_multicast_ipv6_rcv(struct
|
||||
@@ -1630,6 +1659,7 @@ static int br_multicast_ipv6_rcv(struct
|
||||
struct sk_buff *skb,
|
||||
u16 vid)
|
||||
{
|
||||
@ -277,7 +277,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||
struct sk_buff *skb_trimmed = NULL;
|
||||
struct mld_msg *mld;
|
||||
int err;
|
||||
@@ -1656,8 +1686,9 @@ static int br_multicast_ipv6_rcv(struct
|
||||
@@ -1649,8 +1679,9 @@ static int br_multicast_ipv6_rcv(struct
|
||||
|
||||
switch (mld->mld_type) {
|
||||
case ICMPV6_MGM_REPORT:
|
||||
@ -288,7 +288,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||
break;
|
||||
case ICMPV6_MLD2_REPORT:
|
||||
err = br_ip6_multicast_mld2_report(br, port, skb_trimmed, vid);
|
||||
@@ -1666,7 +1697,8 @@ static int br_multicast_ipv6_rcv(struct
|
||||
@@ -1659,7 +1690,8 @@ static int br_multicast_ipv6_rcv(struct
|
||||
err = br_ip6_multicast_query(br, port, skb_trimmed, vid);
|
||||
break;
|
||||
case ICMPV6_MGM_REDUCTION:
|
||||
@ -333,7 +333,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||
rcu_assign_pointer(*pp, p);
|
||||
--- a/net/bridge/br_forward.c
|
||||
+++ b/net/bridge/br_forward.c
|
||||
@@ -192,6 +192,34 @@ out:
|
||||
@@ -191,6 +191,34 @@ out:
|
||||
return p;
|
||||
}
|
||||
|
||||
@ -368,7 +368,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||
/* called under bridge lock */
|
||||
static void br_flood(struct net_bridge *br, struct sk_buff *skb,
|
||||
struct sk_buff *skb0,
|
||||
@@ -264,6 +292,7 @@ static void br_multicast_flood(struct ne
|
||||
@@ -263,6 +291,7 @@ static void br_multicast_flood(struct ne
|
||||
struct net_bridge_port *prev = NULL;
|
||||
struct net_bridge_port_group *p;
|
||||
struct hlist_node *rp;
|
||||
@ -376,7 +376,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||
|
||||
rp = rcu_dereference(hlist_first_rcu(&br->router_list));
|
||||
p = mdst ? rcu_dereference(mdst->ports) : NULL;
|
||||
@@ -274,10 +303,19 @@ static void br_multicast_flood(struct ne
|
||||
@@ -273,10 +302,19 @@ static void br_multicast_flood(struct ne
|
||||
rport = rp ? hlist_entry(rp, struct net_bridge_port, rlist) :
|
||||
NULL;
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/include/linux/skbuff.h
|
||||
+++ b/include/linux/skbuff.h
|
||||
@@ -2177,7 +2177,7 @@ static inline int pskb_network_may_pull(
|
||||
@@ -2182,7 +2182,7 @@ static inline int pskb_network_may_pull(
|
||||
* NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
|
||||
*/
|
||||
#ifndef NET_SKB_PAD
|
||||
|
@ -84,7 +84,7 @@
|
||||
if (!qdisc)
|
||||
--- a/net/sched/sch_api.c
|
||||
+++ b/net/sched/sch_api.c
|
||||
@@ -1951,7 +1951,7 @@ static int __init pktsched_init(void)
|
||||
@@ -1950,7 +1950,7 @@ static int __init pktsched_init(void)
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -68,7 +68,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
static void rt_fibinfo_free(struct rtable __rcu **rtp)
|
||||
--- a/net/ipv4/fib_trie.c
|
||||
+++ b/net/ipv4/fib_trie.c
|
||||
@@ -2370,6 +2370,7 @@ static const char *const rtn_type_names[
|
||||
@@ -2380,6 +2380,7 @@ static const char *const rtn_type_names[
|
||||
[RTN_THROW] = "THROW",
|
||||
[RTN_NAT] = "NAT",
|
||||
[RTN_XRESOLVE] = "XRESOLVE",
|
||||
@ -78,7 +78,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
static inline const char *rtn_type(char *buf, size_t len, unsigned int t)
|
||||
--- a/net/ipv4/ipmr.c
|
||||
+++ b/net/ipv4/ipmr.c
|
||||
@@ -182,6 +182,7 @@ static int ipmr_rule_action(struct fib_r
|
||||
@@ -183,6 +183,7 @@ static int ipmr_rule_action(struct fib_r
|
||||
case FR_ACT_UNREACHABLE:
|
||||
return -ENETUNREACH;
|
||||
case FR_ACT_PROHIBIT:
|
||||
@ -101,7 +101,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
table = fib6_get_table(net, rule->table);
|
||||
--- a/net/ipv6/ip6mr.c
|
||||
+++ b/net/ipv6/ip6mr.c
|
||||
@@ -167,6 +167,8 @@ static int ip6mr_rule_action(struct fib_
|
||||
@@ -169,6 +169,8 @@ static int ip6mr_rule_action(struct fib_
|
||||
return -ENETUNREACH;
|
||||
case FR_ACT_PROHIBIT:
|
||||
return -EACCES;
|
||||
|
@ -113,7 +113,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#endif
|
||||
--- a/include/linux/skbuff.h
|
||||
+++ b/include/linux/skbuff.h
|
||||
@@ -642,7 +642,8 @@ struct sk_buff {
|
||||
@@ -647,7 +647,8 @@ struct sk_buff {
|
||||
|
||||
__u8 inner_protocol_type:1;
|
||||
__u8 remcsum_offload:1;
|
||||
|
@ -9,7 +9,7 @@
|
||||
/**
|
||||
* mdiobus_alloc_size - allocate a mii_bus structure
|
||||
* @size: extra amount of memory to allocate for private storage.
|
||||
@@ -346,9 +348,21 @@ void mdiobus_free(struct mii_bus *bus)
|
||||
@@ -345,9 +347,21 @@ void mdiobus_free(struct mii_bus *bus)
|
||||
}
|
||||
EXPORT_SYMBOL(mdiobus_free);
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
int err;
|
||||
|
||||
phydev = get_phy_device(bus, addr, false);
|
||||
@@ -361,6 +375,12 @@ struct phy_device *mdiobus_scan(struct m
|
||||
@@ -360,6 +374,12 @@ struct phy_device *mdiobus_scan(struct m
|
||||
*/
|
||||
of_mdiobus_link_phydev(bus, phydev);
|
||||
|
||||
|
@ -41,7 +41,7 @@
|
||||
*/
|
||||
--- a/include/linux/skbuff.h
|
||||
+++ b/include/linux/skbuff.h
|
||||
@@ -2208,6 +2208,10 @@ static inline int pskb_trim(struct sk_bu
|
||||
@@ -2213,6 +2213,10 @@ static inline int pskb_trim(struct sk_bu
|
||||
return (len < skb->len) ? __pskb_trim(skb, len) : 0;
|
||||
}
|
||||
|
||||
@ -52,7 +52,7 @@
|
||||
/**
|
||||
* pskb_trim_unique - remove end from a paged unique (not cloned) buffer
|
||||
* @skb: buffer to alter
|
||||
@@ -2314,16 +2318,6 @@ static inline struct sk_buff *dev_alloc_
|
||||
@@ -2319,16 +2323,6 @@ static inline struct sk_buff *dev_alloc_
|
||||
}
|
||||
|
||||
|
||||
@ -121,7 +121,7 @@
|
||||
|
||||
#include <net/protocol.h>
|
||||
#include <net/dst.h>
|
||||
@@ -520,6 +521,22 @@ skb_fail:
|
||||
@@ -524,6 +525,22 @@ skb_fail:
|
||||
}
|
||||
EXPORT_SYMBOL(__napi_alloc_skb);
|
||||
|
||||
|
@ -69,7 +69,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
|
||||
@@ -4811,6 +4824,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
|
||||
@@ -4812,6 +4825,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
|
||||
if (tag < 0)
|
||||
return NULL;
|
||||
}
|
||||
@ -79,7 +79,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
|
||||
qc = __ata_qc_from_tag(ap, tag);
|
||||
qc->tag = tag;
|
||||
@@ -5707,6 +5723,9 @@ struct ata_port *ata_port_alloc(struct a
|
||||
@@ -5708,6 +5724,9 @@ struct ata_port *ata_port_alloc(struct a
|
||||
ap->stats.unhandled_irq = 1;
|
||||
ap->stats.idle_irq = 1;
|
||||
#endif
|
||||
@ -89,7 +89,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
ata_sff_port_init(ap);
|
||||
|
||||
return ap;
|
||||
@@ -5728,6 +5747,12 @@ static void ata_host_release(struct devi
|
||||
@@ -5729,6 +5748,12 @@ static void ata_host_release(struct devi
|
||||
|
||||
kfree(ap->pmp_link);
|
||||
kfree(ap->slave_link);
|
||||
@ -102,7 +102,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
kfree(ap);
|
||||
host->ports[i] = NULL;
|
||||
}
|
||||
@@ -6174,7 +6199,23 @@ int ata_host_register(struct ata_host *h
|
||||
@@ -6175,7 +6200,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;
|
||||
}
|
||||
|
@ -25,7 +25,7 @@
|
||||
obj-$(CONFIG_PROC_FS) += net-procfs.o
|
||||
--- a/net/core/sock.c
|
||||
+++ b/net/core/sock.c
|
||||
@@ -1474,9 +1474,11 @@ void sk_destruct(struct sock *sk)
|
||||
@@ -1475,9 +1475,11 @@ void sk_destruct(struct sock *sk)
|
||||
|
||||
static void __sk_free(struct sock *sk)
|
||||
{
|
||||
|
@ -117,12 +117,12 @@
|
||||
|
||||
+ if (IS_ENABLED(CONFIG_PROC_STRIPPED))
|
||||
+ return 0;
|
||||
pe = proc_create("timer_list", 0444, NULL, &timer_list_fops);
|
||||
pe = proc_create("timer_list", 0400, NULL, &timer_list_fops);
|
||||
if (!pe)
|
||||
return -ENOMEM;
|
||||
--- a/mm/vmalloc.c
|
||||
+++ b/mm/vmalloc.c
|
||||
@@ -2685,6 +2685,8 @@ static const struct file_operations proc
|
||||
@@ -2689,6 +2689,8 @@ static const struct file_operations proc
|
||||
|
||||
static int __init proc_vmalloc_init(void)
|
||||
{
|
||||
@ -133,7 +133,7 @@
|
||||
}
|
||||
--- a/mm/vmstat.c
|
||||
+++ b/mm/vmstat.c
|
||||
@@ -1560,10 +1560,12 @@ static int __init setup_vmstat(void)
|
||||
@@ -1574,10 +1574,12 @@ static int __init setup_vmstat(void)
|
||||
cpu_notifier_register_done();
|
||||
#endif
|
||||
#ifdef CONFIG_PROC_FS
|
||||
@ -173,7 +173,7 @@
|
||||
goto err;
|
||||
--- a/net/core/sock.c
|
||||
+++ b/net/core/sock.c
|
||||
@@ -3044,6 +3044,8 @@ static __net_initdata struct pernet_oper
|
||||
@@ -3048,6 +3048,8 @@ static __net_initdata struct pernet_oper
|
||||
|
||||
static int __init proto_init(void)
|
||||
{
|
||||
@ -184,7 +184,7 @@
|
||||
|
||||
--- a/net/ipv4/fib_trie.c
|
||||
+++ b/net/ipv4/fib_trie.c
|
||||
@@ -2641,10 +2641,12 @@ static const struct file_operations fib_
|
||||
@@ -2651,10 +2651,12 @@ static const struct file_operations fib_
|
||||
|
||||
int __net_init fib_proc_init(struct net *net)
|
||||
{
|
||||
@ -199,7 +199,7 @@
|
||||
&fib_triestat_fops))
|
||||
goto out2;
|
||||
|
||||
@@ -2654,17 +2656,21 @@ int __net_init fib_proc_init(struct net
|
||||
@@ -2664,17 +2666,21 @@ int __net_init fib_proc_init(struct net
|
||||
return 0;
|
||||
|
||||
out3:
|
||||
@ -227,7 +227,7 @@
|
||||
|
||||
--- a/net/ipv4/proc.c
|
||||
+++ b/net/ipv4/proc.c
|
||||
@@ -539,6 +539,9 @@ static __net_initdata struct pernet_oper
|
||||
@@ -541,6 +541,9 @@ static __net_initdata struct pernet_oper
|
||||
|
||||
int __init ip_misc_proc_init(void)
|
||||
{
|
||||
|
@ -9,7 +9,7 @@
|
||||
#ifdef CONFIG_UEVENT_HELPER
|
||||
/* path to the userspace helper executed on an event */
|
||||
extern char uevent_helper[];
|
||||
@@ -222,4 +224,7 @@ int add_uevent_var(struct kobj_uevent_en
|
||||
@@ -239,4 +241,7 @@ int add_uevent_var(struct kobj_uevent_en
|
||||
int kobject_action_type(const char *buf, size_t count,
|
||||
enum kobject_action *type);
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/ethernet/marvell/sky2.c
|
||||
+++ b/drivers/net/ethernet/marvell/sky2.c
|
||||
@@ -4812,7 +4812,24 @@ static struct net_device *sky2_init_netd
|
||||
@@ -4813,7 +4813,24 @@ static struct net_device *sky2_init_netd
|
||||
* 1) from device tree data
|
||||
* 2) from internal registers set by bootloader
|
||||
*/
|
||||
|
@ -76,7 +76,7 @@ Signed-off-by: Lee Jones <lee.jones@linaro.org>
|
||||
irq_ack = platform_get_irq_byname(pdev, "ack");
|
||||
if (irq_ack < 0) {
|
||||
dev_err(&pdev->dev, "required ack interrupt missing\n");
|
||||
@@ -621,7 +637,11 @@ static int qcom_rpm_probe(struct platfor
|
||||
@@ -625,7 +641,11 @@ static int qcom_rpm_probe(struct platfor
|
||||
|
||||
static int qcom_rpm_remove(struct platform_device *pdev)
|
||||
{
|
||||
|
@ -161,7 +161,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
|
||||
--- a/drivers/usb/dwc3/gadget.c
|
||||
+++ b/drivers/usb/dwc3/gadget.c
|
||||
@@ -2571,14 +2571,14 @@ static void dwc3_process_event_entry(str
|
||||
@@ -2572,14 +2572,14 @@ static void dwc3_process_event_entry(str
|
||||
}
|
||||
}
|
||||
|
||||
@ -178,7 +178,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
left = evt->count;
|
||||
|
||||
if (!(evt->flags & DWC3_EVENT_PENDING))
|
||||
@@ -2603,7 +2603,7 @@ static irqreturn_t dwc3_process_event_bu
|
||||
@@ -2604,7 +2604,7 @@ static irqreturn_t dwc3_process_event_bu
|
||||
evt->lpos = (evt->lpos + 4) % DWC3_EVENT_BUFFERS_SIZE;
|
||||
left -= 4;
|
||||
|
||||
@ -187,7 +187,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
}
|
||||
|
||||
evt->count = 0;
|
||||
@@ -2611,9 +2611,9 @@ static irqreturn_t dwc3_process_event_bu
|
||||
@@ -2612,9 +2612,9 @@ static irqreturn_t dwc3_process_event_bu
|
||||
ret = IRQ_HANDLED;
|
||||
|
||||
/* Unmask interrupt */
|
||||
@ -199,7 +199,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -2623,27 +2623,23 @@ static irqreturn_t dwc3_thread_interrupt
|
||||
@@ -2624,27 +2624,23 @@ static irqreturn_t dwc3_thread_interrupt
|
||||
struct dwc3 *dwc = _dwc;
|
||||
unsigned long flags;
|
||||
irqreturn_t ret = IRQ_NONE;
|
||||
@ -231,7 +231,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
count &= DWC3_GEVNTCOUNT_MASK;
|
||||
if (!count)
|
||||
return IRQ_NONE;
|
||||
@@ -2652,9 +2648,9 @@ static irqreturn_t dwc3_check_event_buf(
|
||||
@@ -2653,9 +2649,9 @@ static irqreturn_t dwc3_check_event_buf(
|
||||
evt->flags |= DWC3_EVENT_PENDING;
|
||||
|
||||
/* Mask interrupt */
|
||||
@ -243,7 +243,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
|
||||
return IRQ_WAKE_THREAD;
|
||||
}
|
||||
@@ -2662,18 +2658,8 @@ static irqreturn_t dwc3_check_event_buf(
|
||||
@@ -2663,18 +2659,8 @@ static irqreturn_t dwc3_check_event_buf(
|
||||
static irqreturn_t dwc3_interrupt(int irq, void *_dwc)
|
||||
{
|
||||
struct dwc3 *dwc = _dwc;
|
||||
|
@ -76,7 +76,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
struct usb_gadget gadget;
|
||||
--- a/drivers/usb/dwc3/gadget.c
|
||||
+++ b/drivers/usb/dwc3/gadget.c
|
||||
@@ -2578,7 +2578,7 @@ static irqreturn_t dwc3_process_event_bu
|
||||
@@ -2579,7 +2579,7 @@ static irqreturn_t dwc3_process_event_bu
|
||||
int left;
|
||||
u32 reg;
|
||||
|
||||
@ -85,7 +85,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
left = evt->count;
|
||||
|
||||
if (!(evt->flags & DWC3_EVENT_PENDING))
|
||||
@@ -2637,7 +2637,7 @@ static irqreturn_t dwc3_check_event_buf(
|
||||
@@ -2638,7 +2638,7 @@ static irqreturn_t dwc3_check_event_buf(
|
||||
u32 count;
|
||||
u32 reg;
|
||||
|
||||
|
@ -820,7 +820,7 @@ Signed-off-by: Mathieu Olivari <mathieu@codeaurora.org>
|
||||
#endif
|
||||
--- a/net/dsa/slave.c
|
||||
+++ b/net/dsa/slave.c
|
||||
@@ -1186,6 +1186,11 @@ int dsa_slave_create(struct dsa_switch *
|
||||
@@ -1190,6 +1190,11 @@ int dsa_slave_create(struct dsa_switch *
|
||||
p->xmit = brcm_netdev_ops.xmit;
|
||||
break;
|
||||
#endif
|
||||
|
@ -180,6 +180,6 @@ Signed-off-by: Adrian Panella <ianchi74@outlook.com>
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
/* parameters may set static keys */
|
||||
jump_label_init();
|
||||
parse_early_param();
|
||||
after_dashes = parse_args("Booting kernel",
|
||||
static_command_line, __start___param,
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
/* Get the HEAD */
|
||||
skb = kmem_cache_alloc_node(cache, gfp_mask & ~__GFP_DMA, node);
|
||||
@@ -1148,6 +1151,10 @@ int pskb_expand_head(struct sk_buff *skb
|
||||
@@ -1152,6 +1155,10 @@ int pskb_expand_head(struct sk_buff *skb
|
||||
if (skb_shared(skb))
|
||||
BUG();
|
||||
|
||||
|
@ -19,7 +19,7 @@ Signed-off-by: Ezequiel Garcia <ezequiel.garcia <at> free-electrons.com>
|
||||
---
|
||||
--- a/drivers/net/ethernet/marvell/mv643xx_eth.c
|
||||
+++ b/drivers/net/ethernet/marvell/mv643xx_eth.c
|
||||
@@ -3178,11 +3178,11 @@ static int mv643xx_eth_probe(struct plat
|
||||
@@ -3183,11 +3183,11 @@ static int mv643xx_eth_probe(struct plat
|
||||
dev->watchdog_timeo = 2 * HZ;
|
||||
dev->base_addr = 0;
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/arch/mips/Kconfig
|
||||
+++ b/arch/mips/Kconfig
|
||||
@@ -2221,6 +2221,12 @@ config MIPS_VPE_LOADER
|
||||
@@ -2224,6 +2224,12 @@ config MIPS_VPE_LOADER
|
||||
Includes a loader for loading an elf relocatable object
|
||||
onto another VPE and running it.
|
||||
|
||||
|
@ -109,7 +109,7 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||
help
|
||||
--- a/arch/powerpc/Kconfig
|
||||
+++ b/arch/powerpc/Kconfig
|
||||
@@ -787,6 +787,11 @@ config FSL_GTM
|
||||
@@ -792,6 +792,11 @@ config FSL_GTM
|
||||
help
|
||||
Freescale General-purpose Timers support
|
||||
|
||||
@ -121,7 +121,7 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||
# Yes MCA RS/6000s exist but Linux-PPC does not currently support any
|
||||
config MCA
|
||||
bool
|
||||
@@ -919,14 +924,14 @@ config DYNAMIC_MEMSTART
|
||||
@@ -924,14 +929,14 @@ config DYNAMIC_MEMSTART
|
||||
select NONSTATIC_KERNEL
|
||||
help
|
||||
This option enables the kernel to be loaded at any page aligned
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: Madalin Bucur <madalin.bucur@freescale.com>
|
||||
|
||||
--- a/include/linux/skbuff.h
|
||||
+++ b/include/linux/skbuff.h
|
||||
@@ -799,6 +799,7 @@ void kfree_skb(struct sk_buff *skb);
|
||||
@@ -804,6 +804,7 @@ void kfree_skb(struct sk_buff *skb);
|
||||
void kfree_skb_list(struct sk_buff *segs);
|
||||
void skb_tx_error(struct sk_buff *skb);
|
||||
void consume_skb(struct sk_buff *skb);
|
||||
@ -24,7 +24,7 @@ Signed-off-by: Madalin Bucur <madalin.bucur@freescale.com>
|
||||
|
||||
--- a/net/core/skbuff.c
|
||||
+++ b/net/core/skbuff.c
|
||||
@@ -766,6 +766,32 @@ void consume_skb(struct sk_buff *skb)
|
||||
@@ -770,6 +770,32 @@ void consume_skb(struct sk_buff *skb)
|
||||
}
|
||||
EXPORT_SYMBOL(consume_skb);
|
||||
|
||||
|
@ -18,7 +18,7 @@ Integrated-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||
|
||||
--- a/include/linux/netdev_features.h
|
||||
+++ b/include/linux/netdev_features.h
|
||||
@@ -66,6 +66,9 @@ enum {
|
||||
@@ -68,6 +68,9 @@ enum {
|
||||
NETIF_F_HW_VLAN_STAG_FILTER_BIT,/* Receive filtering on VLAN STAGs */
|
||||
NETIF_F_HW_L2FW_DOFFLOAD_BIT, /* Allow L2 Forwarding in Hardware */
|
||||
NETIF_F_BUSY_POLL_BIT, /* Busy poll */
|
||||
@ -28,7 +28,7 @@ Integrated-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||
|
||||
/*
|
||||
* Add your fresh new feature above and remember to update
|
||||
@@ -124,6 +127,9 @@ enum {
|
||||
@@ -126,6 +129,9 @@ enum {
|
||||
#define NETIF_F_HW_VLAN_STAG_TX __NETIF_F(HW_VLAN_STAG_TX)
|
||||
#define NETIF_F_HW_L2FW_DOFFLOAD __NETIF_F(HW_L2FW_DOFFLOAD)
|
||||
#define NETIF_F_BUSY_POLL __NETIF_F(BUSY_POLL)
|
||||
@ -36,5 +36,5 @@ Integrated-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||
+#define NETIF_F_HW_QDISC __NETIF_F(HW_QDISC)
|
||||
+#define NETIF_F_HW_ACCEL_MQ __NETIF_F(HW_ACCEL_MQ)
|
||||
|
||||
#define for_each_netdev_feature(mask_addr, bit) \
|
||||
for_each_set_bit(bit, (unsigned long *)mask_addr, NETDEV_FEATURE_COUNT)
|
||||
/* Finds the next feature with the highest number of the range of start till 0.
|
||||
*/
|
||||
|
@ -17,7 +17,7 @@ Integrated-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||
|
||||
--- a/arch/arm64/Kconfig
|
||||
+++ b/arch/arm64/Kconfig
|
||||
@@ -188,6 +188,11 @@ source "arch/arm64/Kconfig.platforms"
|
||||
@@ -187,6 +187,11 @@ source "arch/arm64/Kconfig.platforms"
|
||||
|
||||
menu "Bus support"
|
||||
|
||||
|
@ -15054,7 +15054,7 @@ Integrated-by: Yutang Jiang <yutang.jiang@nxp.com>
|
||||
+#endif /* _PLATFORM_H_ */
|
||||
--- a/include/linux/skbuff.h
|
||||
+++ b/include/linux/skbuff.h
|
||||
@@ -858,6 +858,17 @@ static inline struct sk_buff *alloc_skb_
|
||||
@@ -863,6 +863,17 @@ static inline struct sk_buff *alloc_skb_
|
||||
return __alloc_skb(size, priority, SKB_ALLOC_FCLONE, NUMA_NO_NODE);
|
||||
}
|
||||
|
||||
|
@ -77,9 +77,9 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
}
|
||||
--- a/scripts/mod/file2alias.c
|
||||
+++ b/scripts/mod/file2alias.c
|
||||
@@ -1271,6 +1271,18 @@ static int do_hda_entry(const char *file
|
||||
@@ -1186,6 +1186,18 @@ static int do_hda_entry(const char *file
|
||||
return 1;
|
||||
}
|
||||
ADD_TO_DEVTABLE("hdaudio", hda_device_id, do_hda_entry);
|
||||
|
||||
+/* Looks like: fsl-mc:vNdN */
|
||||
+static int do_fsl_mc_entry(const char *filename, void *symval,
|
||||
|
@ -34,7 +34,7 @@ Integrated-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||
|
||||
--- a/drivers/mmc/host/sdhci-of-esdhc.c
|
||||
+++ b/drivers/mmc/host/sdhci-of-esdhc.c
|
||||
@@ -635,6 +635,14 @@ static int sdhci_esdhc_probe(struct plat
|
||||
@@ -640,6 +640,14 @@ static int sdhci_esdhc_probe(struct plat
|
||||
if (of_device_is_compatible(np, "fsl,ls1021a-esdhc"))
|
||||
host->quirks |= SDHCI_QUIRK_BROKEN_TIMEOUT_VAL;
|
||||
|
||||
|
@ -180,7 +180,7 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||
+#endif /* _PCI_LAYERSCAPE_H */
|
||||
--- a/drivers/pci/quirks.c
|
||||
+++ b/drivers/pci/quirks.c
|
||||
@@ -3593,8 +3593,9 @@ int pci_dev_specific_reset(struct pci_de
|
||||
@@ -3594,8 +3594,9 @@ int pci_dev_specific_reset(struct pci_de
|
||||
static void quirk_dma_func0_alias(struct pci_dev *dev)
|
||||
{
|
||||
if (PCI_FUNC(dev->devfn) != 0) {
|
||||
@ -192,7 +192,7 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3609,8 +3610,9 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_R
|
||||
@@ -3610,8 +3611,9 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_R
|
||||
static void quirk_dma_func1_alias(struct pci_dev *dev)
|
||||
{
|
||||
if (PCI_FUNC(dev->devfn) != 1) {
|
||||
@ -204,7 +204,7 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3681,11 +3683,12 @@ static void quirk_fixed_dma_alias(struct
|
||||
@@ -3684,11 +3686,12 @@ static void quirk_fixed_dma_alias(struct
|
||||
|
||||
id = pci_match_id(fixed_dma_alias_tbl, dev);
|
||||
if (id) {
|
||||
|
@ -10,7 +10,7 @@ Signed-off-by: Yutang Jiang <yutang.jiang@nxp.com>
|
||||
|
||||
--- a/drivers/mmc/host/sdhci-of-esdhc.c
|
||||
+++ b/drivers/mmc/host/sdhci-of-esdhc.c
|
||||
@@ -629,6 +629,7 @@ static int sdhci_esdhc_probe(struct plat
|
||||
@@ -634,6 +634,7 @@ static int sdhci_esdhc_probe(struct plat
|
||||
of_device_is_compatible(np, "fsl,p4080-esdhc") ||
|
||||
of_device_is_compatible(np, "fsl,p1020-esdhc") ||
|
||||
of_device_is_compatible(np, "fsl,t1040-esdhc") ||
|
||||
|
@ -96,7 +96,7 @@ Signed-off-by: Yutang Jiang <yutang.jiang@nxp.com>
|
||||
#endif
|
||||
--- a/arch/arm64/kernel/head.S
|
||||
+++ b/arch/arm64/kernel/head.S
|
||||
@@ -212,6 +212,8 @@ ENTRY(stext)
|
||||
@@ -213,6 +213,8 @@ ENTRY(stext)
|
||||
bl el2_setup // Drop to EL1, w20=cpu_boot_mode
|
||||
adrp x24, __PHYS_OFFSET
|
||||
bl set_cpu_boot_mode_flag
|
||||
@ -105,7 +105,7 @@ Signed-off-by: Yutang Jiang <yutang.jiang@nxp.com>
|
||||
bl __create_page_tables // x25=TTBR0, x26=TTBR1
|
||||
/*
|
||||
* The following calls CPU setup code, see arch/arm64/mm/proc.S for
|
||||
@@ -243,6 +245,24 @@ preserve_boot_args:
|
||||
@@ -244,6 +246,24 @@ preserve_boot_args:
|
||||
ENDPROC(preserve_boot_args)
|
||||
|
||||
/*
|
||||
@ -130,7 +130,7 @@ Signed-off-by: Yutang Jiang <yutang.jiang@nxp.com>
|
||||
* Macro to create a table entry to the next page.
|
||||
*
|
||||
* tbl: page table address
|
||||
@@ -306,7 +326,8 @@ ENDPROC(preserve_boot_args)
|
||||
@@ -307,7 +327,8 @@ ENDPROC(preserve_boot_args)
|
||||
* required to get the kernel running. The following sections are required:
|
||||
* - identity mapping to enable the MMU (low address, TTBR0)
|
||||
* - first few MB of the kernel linear mapping to jump to once the MMU has
|
||||
@ -140,7 +140,7 @@ Signed-off-by: Yutang Jiang <yutang.jiang@nxp.com>
|
||||
*/
|
||||
__create_page_tables:
|
||||
adrp x25, idmap_pg_dir
|
||||
@@ -396,6 +417,22 @@ __create_page_tables:
|
||||
@@ -397,6 +418,22 @@ __create_page_tables:
|
||||
create_block_map x0, x7, x3, x5, x6
|
||||
|
||||
/*
|
||||
|
@ -1428,7 +1428,7 @@ Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
|
||||
|
||||
/*
|
||||
* Returns zero if the TRB isn't in this segment, otherwise it returns the DMA
|
||||
@@ -3113,17 +3114,22 @@ static u32 xhci_td_remainder(struct xhci
|
||||
@@ -3116,17 +3117,22 @@ static u32 xhci_td_remainder(struct xhci
|
||||
{
|
||||
u32 maxp, total_packet_count;
|
||||
|
||||
@ -1455,7 +1455,7 @@ Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
|
||||
/* Queueing functions don't count the current TRB into transferred */
|
||||
return (total_packet_count - ((transferred + trb_buff_len) / maxp));
|
||||
}
|
||||
@@ -3511,7 +3517,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
|
||||
@@ -3514,7 +3520,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
|
||||
field |= 0x1;
|
||||
|
||||
/* xHCI 1.0/1.1 6.4.1.2.1: Transfer Type field */
|
||||
@ -1466,7 +1466,7 @@ Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
|
||||
field |= TRB_TX_TYPE(TRB_DATA_IN);
|
||||
--- a/drivers/usb/host/xhci.c
|
||||
+++ b/drivers/usb/host/xhci.c
|
||||
@@ -31,6 +31,7 @@
|
||||
@@ -32,6 +32,7 @@
|
||||
|
||||
#include "xhci.h"
|
||||
#include "xhci-trace.h"
|
||||
@ -1474,7 +1474,7 @@ Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
|
||||
|
||||
#define DRIVER_AUTHOR "Sarah Sharp"
|
||||
#define DRIVER_DESC "'eXtensible' Host Controller (xHC) Driver"
|
||||
@@ -635,7 +636,11 @@ int xhci_run(struct usb_hcd *hcd)
|
||||
@@ -633,7 +634,11 @@ int xhci_run(struct usb_hcd *hcd)
|
||||
"// Set the interrupt modulation register");
|
||||
temp = readl(&xhci->ir_set->irq_control);
|
||||
temp &= ~ER_IRQ_INTERVAL_MASK;
|
||||
@ -1487,7 +1487,7 @@ Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
|
||||
writel(temp, &xhci->ir_set->irq_control);
|
||||
|
||||
/* Set the HCD state before we enable the irqs */
|
||||
@@ -1730,6 +1735,9 @@ int xhci_drop_endpoint(struct usb_hcd *h
|
||||
@@ -1728,6 +1733,9 @@ int xhci_drop_endpoint(struct usb_hcd *h
|
||||
|
||||
xhci_endpoint_zero(xhci, xhci->devs[udev->slot_id], ep);
|
||||
|
||||
@ -1497,7 +1497,7 @@ Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
|
||||
xhci_dbg(xhci, "drop ep 0x%x, slot id %d, new drop flags = %#x, new add flags = %#x\n",
|
||||
(unsigned int) ep->desc.bEndpointAddress,
|
||||
udev->slot_id,
|
||||
@@ -1825,6 +1833,15 @@ int xhci_add_endpoint(struct usb_hcd *hc
|
||||
@@ -1823,6 +1831,15 @@ int xhci_add_endpoint(struct usb_hcd *hc
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
@ -1515,7 +1515,7 @@ Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
|
||||
|
||||
--- a/drivers/usb/host/xhci.h
|
||||
+++ b/drivers/usb/host/xhci.h
|
||||
@@ -1638,6 +1638,7 @@ struct xhci_hcd {
|
||||
@@ -1639,6 +1639,7 @@ struct xhci_hcd {
|
||||
/* For controllers with a broken beyond repair streams implementation */
|
||||
#define XHCI_BROKEN_STREAMS (1 << 19)
|
||||
#define XHCI_PME_STUCK_QUIRK (1 << 20)
|
||||
|
@ -17,7 +17,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
|
||||
--- a/arch/powerpc/boot/Makefile
|
||||
+++ b/arch/powerpc/boot/Makefile
|
||||
@@ -114,6 +114,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
|
||||
@@ -115,6 +115,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
|
||||
src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
|
||||
src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
|
||||
src-plat-$(CONFIG_PPC_CELL_QPACE) += pseries-head.S
|
||||
@ -25,7 +25,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
|
||||
src-wlib := $(sort $(src-wlib-y))
|
||||
src-plat := $(sort $(src-plat-y))
|
||||
@@ -297,6 +298,7 @@ image-$(CONFIG_TQM8555) += cuImage.tqm
|
||||
@@ -298,6 +299,7 @@ image-$(CONFIG_TQM8555) += cuImage.tqm
|
||||
image-$(CONFIG_TQM8560) += cuImage.tqm8560
|
||||
image-$(CONFIG_SBC8548) += cuImage.sbc8548
|
||||
image-$(CONFIG_KSI8560) += cuImage.ksi8560
|
||||
|
@ -180,6 +180,6 @@ Signed-off-by: Adrian Panella <ianchi74@outlook.com>
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
/* parameters may set static keys */
|
||||
jump_label_init();
|
||||
parse_early_param();
|
||||
after_dashes = parse_args("Booting kernel",
|
||||
static_command_line, __start___param,
|
||||
|
@ -15,7 +15,7 @@
|
||||
/* initialize internal qc */
|
||||
|
||||
/* XXX: Tag 0 is used for drivers with legacy EH as some
|
||||
@@ -4818,6 +4826,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
|
||||
@@ -4819,6 +4827,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);
|
||||
@@ -4863,6 +4874,8 @@ void ata_qc_free(struct ata_queued_cmd *
|
||||
@@ -4864,6 +4875,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);
|
||||
|
@ -13,7 +13,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
--- a/drivers/media/usb/uvc/uvc_driver.c
|
||||
+++ b/drivers/media/usb/uvc/uvc_driver.c
|
||||
@@ -2665,6 +2665,18 @@ static struct usb_device_id uvc_ids[] =
|
||||
@@ -2673,6 +2673,18 @@ static struct usb_device_id uvc_ids[] =
|
||||
.bInterfaceSubClass = 1,
|
||||
.bInterfaceProtocol = 0,
|
||||
.driver_info = UVC_QUIRK_FORCE_Y8 },
|
||||
@ -64,7 +64,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
#include <media/v4l2-common.h>
|
||||
|
||||
@@ -1104,9 +1109,149 @@ static void uvc_video_decode_data(struct
|
||||
@@ -1112,9 +1117,149 @@ static void uvc_video_decode_data(struct
|
||||
}
|
||||
}
|
||||
|
||||
@ -214,7 +214,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
/* Mark the buffer as done if the EOF marker is set. */
|
||||
if (data[1] & UVC_STREAM_EOF && buf->bytesused != 0) {
|
||||
uvc_trace(UVC_TRACE_FRAME, "Frame complete (EOF found).\n");
|
||||
@@ -1519,6 +1664,8 @@ static int uvc_init_video_isoc(struct uv
|
||||
@@ -1527,6 +1672,8 @@ static int uvc_init_video_isoc(struct uv
|
||||
if (npackets == 0)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@ -1420,7 +1420,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
/*
|
||||
* Returns zero if the TRB isn't in this segment, otherwise it returns the DMA
|
||||
@@ -3113,17 +3114,22 @@ static u32 xhci_td_remainder(struct xhci
|
||||
@@ -3116,17 +3117,22 @@ static u32 xhci_td_remainder(struct xhci
|
||||
{
|
||||
u32 maxp, total_packet_count;
|
||||
|
||||
@ -1447,7 +1447,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
/* Queueing functions don't count the current TRB into transferred */
|
||||
return (total_packet_count - ((transferred + trb_buff_len) / maxp));
|
||||
}
|
||||
@@ -3511,7 +3517,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
|
||||
@@ -3514,7 +3520,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
|
||||
field |= 0x1;
|
||||
|
||||
/* xHCI 1.0/1.1 6.4.1.2.1: Transfer Type field */
|
||||
@ -1458,7 +1458,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
field |= TRB_TX_TYPE(TRB_DATA_IN);
|
||||
--- a/drivers/usb/host/xhci.c
|
||||
+++ b/drivers/usb/host/xhci.c
|
||||
@@ -31,6 +31,7 @@
|
||||
@@ -32,6 +32,7 @@
|
||||
|
||||
#include "xhci.h"
|
||||
#include "xhci-trace.h"
|
||||
@ -1466,7 +1466,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
#define DRIVER_AUTHOR "Sarah Sharp"
|
||||
#define DRIVER_DESC "'eXtensible' Host Controller (xHC) Driver"
|
||||
@@ -635,7 +636,11 @@ int xhci_run(struct usb_hcd *hcd)
|
||||
@@ -633,7 +634,11 @@ int xhci_run(struct usb_hcd *hcd)
|
||||
"// Set the interrupt modulation register");
|
||||
temp = readl(&xhci->ir_set->irq_control);
|
||||
temp &= ~ER_IRQ_INTERVAL_MASK;
|
||||
@ -1479,7 +1479,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
writel(temp, &xhci->ir_set->irq_control);
|
||||
|
||||
/* Set the HCD state before we enable the irqs */
|
||||
@@ -1730,6 +1735,9 @@ int xhci_drop_endpoint(struct usb_hcd *h
|
||||
@@ -1728,6 +1733,9 @@ int xhci_drop_endpoint(struct usb_hcd *h
|
||||
|
||||
xhci_endpoint_zero(xhci, xhci->devs[udev->slot_id], ep);
|
||||
|
||||
@ -1489,7 +1489,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
xhci_dbg(xhci, "drop ep 0x%x, slot id %d, new drop flags = %#x, new add flags = %#x\n",
|
||||
(unsigned int) ep->desc.bEndpointAddress,
|
||||
udev->slot_id,
|
||||
@@ -1825,6 +1833,15 @@ int xhci_add_endpoint(struct usb_hcd *hc
|
||||
@@ -1823,6 +1831,15 @@ int xhci_add_endpoint(struct usb_hcd *hc
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
@ -1507,7 +1507,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/drivers/usb/host/xhci.h
|
||||
+++ b/drivers/usb/host/xhci.h
|
||||
@@ -1638,6 +1638,7 @@ struct xhci_hcd {
|
||||
@@ -1639,6 +1639,7 @@ struct xhci_hcd {
|
||||
/* For controllers with a broken beyond repair streams implementation */
|
||||
#define XHCI_BROKEN_STREAMS (1 << 19)
|
||||
#define XHCI_PME_STUCK_QUIRK (1 << 20)
|
||||
|
Loading…
x
Reference in New Issue
Block a user