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_RELEASE?=1
|
||||||
|
|
||||||
LINUX_VERSION-3.18 = .43
|
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-3.18.43 = 1236e8123a6ce537d5029232560966feed054ae31776fe8481dd7d18cdd5492c
|
||||||
LINUX_KERNEL_HASH-4.4.167 = 33ca4c28a565404fc7b07f9d6b734c291035f7e7e46c280131494b04e3953edf
|
LINUX_KERNEL_HASH-4.4.182 = c409d88f61cd9a37cbba36d5d9c8162263eb1e5c9380efaf880a3ec10cd88527
|
||||||
|
|
||||||
ifdef KERNEL_PATCHVER
|
ifdef KERNEL_PATCHVER
|
||||||
LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(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"
|
#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)
|
if (rc)
|
||||||
goto err_start_dev;
|
goto err_start_dev;
|
||||||
|
|
||||||
|
@ -248,7 +248,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err_start_dev:
|
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 device *dev = &ofdev->dev;
|
||||||
struct crypto4xx_core_device *core_dev = dev_get_drvdata(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);
|
free_irq(core_dev->irq, dev);
|
||||||
irq_dispose_mapping(core_dev->irq);
|
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 = {
|
static struct platform_driver crypto4xx_driver = {
|
||||||
.driver = {
|
.driver = {
|
||||||
|
@ -266,7 +266,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||||
.of_match_table = crypto4xx_match,
|
.of_match_table = crypto4xx_match,
|
||||||
},
|
},
|
||||||
.probe = crypto4xx_probe,
|
.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_LICENSE("GPL");
|
||||||
MODULE_AUTHOR("James Hsiao <jhsiao@amcc.com>");
|
MODULE_AUTHOR("James Hsiao <jhsiao@amcc.com>");
|
||||||
MODULE_DESCRIPTION("Driver for AMCC PPC4xx crypto accelerator");
|
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/pm_runtime.h>
|
||||||
#include <linux/platform_device.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;
|
struct ata_port *ap = qc->ap;
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ produce a noisy warning.
|
||||||
|
|
||||||
--- a/drivers/usb/host/xhci.c
|
--- a/drivers/usb/host/xhci.c
|
||||||
+++ b/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);
|
free_irq(hcd->irq, hcd);
|
||||||
hcd->irq = 0;
|
hcd->irq = 0;
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ produce a noisy warning.
|
||||||
/* hcd->irq is 0, we have MSI */
|
/* hcd->irq is 0, we have MSI */
|
||||||
--- a/drivers/usb/host/xhci.h
|
--- a/drivers/usb/host/xhci.h
|
||||||
+++ b/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 */
|
/* support xHCI 0.96 spec USB2 software LPM */
|
||||||
unsigned sw_lpm_support:1;
|
unsigned sw_lpm_support:1;
|
||||||
/* support xHCI 1.0 spec USB2 hardware LPM */
|
/* support xHCI 1.0 spec USB2 hardware LPM */
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
--- a/arch/mips/Kconfig
|
--- a/arch/mips/Kconfig
|
||||||
+++ b/arch/mips/Kconfig
|
+++ b/arch/mips/Kconfig
|
||||||
@@ -1118,6 +1118,9 @@ config MIPS_MSC
|
@@ -1121,6 +1121,9 @@ config MIPS_MSC
|
||||||
config MIPS_NILE4
|
config MIPS_NILE4
|
||||||
bool
|
bool
|
||||||
|
|
||||||
|
|
|
@ -241,7 +241,7 @@
|
||||||
*/
|
*/
|
||||||
--- a/net/ipv6/datagram.c
|
--- a/net/ipv6/datagram.c
|
||||||
+++ b/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,
|
ipv6_iface_scope_id(&sin->sin6_addr,
|
||||||
IP6CB(skb)->iif);
|
IP6CB(skb)->iif);
|
||||||
} else {
|
} else {
|
||||||
|
@ -250,7 +250,7 @@
|
||||||
&sin->sin6_addr);
|
&sin->sin6_addr);
|
||||||
sin->sin6_scope_id = 0;
|
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) {
|
if (fl6->flowlabel&IPV6_FLOWINFO_MASK) {
|
||||||
|
@ -664,7 +664,7 @@
|
||||||
|
|
||||||
#define IP6_MF 0x0001
|
#define IP6_MF 0x0001
|
||||||
#define IP6_OFFSET 0xFFF8
|
#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
|
||||||
#endif
|
#endif
|
||||||
|
@ -675,7 +675,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void ipv6_addr_set(struct in6_addr *addr,
|
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 *a1 = addr1->s6_addr32;
|
||||||
const __be32 *a2 = addr2->s6_addr32;
|
const __be32 *a2 = addr2->s6_addr32;
|
||||||
unsigned int pdw, pbi;
|
unsigned int pdw, pbi;
|
||||||
|
@ -684,7 +684,7 @@
|
||||||
|
|
||||||
/* check complete u32 in prefix */
|
/* check complete u32 in prefix */
|
||||||
pdw = prefixlen >> 5;
|
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 */
|
/* check incomplete u32 in prefix */
|
||||||
pbi = prefixlen & 0x1f;
|
pbi = prefixlen & 0x1f;
|
||||||
|
@ -695,7 +695,7 @@
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
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)
|
static inline int __ipv6_addr_diff32(const void *token1, const void *token2, int addrlen)
|
||||||
{
|
{
|
||||||
|
@ -711,7 +711,7 @@
|
||||||
if (xb)
|
if (xb)
|
||||||
return i * 32 + 31 - __fls(ntohl(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,
|
static inline void ip6_flow_hdr(struct ipv6hdr *hdr, unsigned int tclass,
|
||||||
__be32 flowlabel)
|
__be32 flowlabel)
|
||||||
{
|
{
|
||||||
|
@ -814,7 +814,7 @@
|
||||||
static struct fib6_node *node_alloc(void)
|
static struct fib6_node *node_alloc(void)
|
||||||
--- a/net/netfilter/nf_conntrack_proto_tcp.c
|
--- a/net/netfilter/nf_conntrack_proto_tcp.c
|
||||||
+++ b/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 */
|
/* Fast path for timestamp-only option */
|
||||||
if (length == TCPOLEN_TSTAMP_ALIGNED
|
if (length == TCPOLEN_TSTAMP_ALIGNED
|
||||||
|
@ -838,7 +838,7 @@
|
||||||
|
|
||||||
--- a/net/ipv4/tcp_input.c
|
--- a/net/ipv4/tcp_input.c
|
||||||
+++ b/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);
|
const __be32 *ptr = (const __be32 *)(th + 1);
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ it on BCM4708 family.
|
||||||
/* called during probe() after chip reset completes */
|
/* called during probe() after chip reset completes */
|
||||||
--- a/drivers/usb/host/xhci.c
|
--- a/drivers/usb/host/xhci.c
|
||||||
+++ b/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;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ it on BCM4708 family.
|
||||||
/*
|
/*
|
||||||
* Reset a halted HC.
|
* 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)
|
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->shared_hcd->state = HC_STATE_RUNNING;
|
||||||
xhci->cmd_ring_state = CMD_RING_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,
|
xhci_dbg_trace(xhci, trace_xhci_dbg_init,
|
||||||
"Finished xhci_run for USB3 roothub");
|
"Finished xhci_run for USB3 roothub");
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -127,7 +127,7 @@ it on BCM4708 family.
|
||||||
/*
|
/*
|
||||||
--- a/drivers/usb/host/xhci.h
|
--- a/drivers/usb/host/xhci.h
|
||||||
+++ b/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_BROKEN_STREAMS (1 << 19)
|
||||||
#define XHCI_PME_STUCK_QUIRK (1 << 20)
|
#define XHCI_PME_STUCK_QUIRK (1 << 20)
|
||||||
#define XHCI_MISSING_CAS (1 << 24)
|
#define XHCI_MISSING_CAS (1 << 24)
|
||||||
|
|
|
@ -13,7 +13,7 @@ http://www.spinics.net/lists/linux-mm/msg72236.html
|
||||||
|
|
||||||
--- a/include/linux/vmstat.h
|
--- a/include/linux/vmstat.h
|
||||||
+++ b/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)
|
static inline void __dec_zone_state(struct zone *zone, enum zone_stat_item item)
|
||||||
{
|
{
|
||||||
atomic_long_dec(&zone->vm_stat[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
|
--- a/drivers/spi/spi-bcm2835.c
|
||||||
+++ b/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;
|
int err;
|
||||||
struct gpio_chip *chip;
|
struct gpio_chip *chip;
|
||||||
|
@ -28,7 +28,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
/*
|
/*
|
||||||
* sanity checking the native-chipselects
|
* 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");
|
"setup: only two native chip-selects are supported\n");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -659,7 +659,7 @@ dwc_otg: Remove duplicate gadget probe/unregister function
|
||||||
}
|
}
|
||||||
--- a/drivers/usb/core/hub.c
|
--- a/drivers/usb/core/hub.c
|
||||||
+++ b/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) {
|
if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
|
||||||
u16 status = 0, unused;
|
u16 status = 0, unused;
|
||||||
|
|
||||||
|
@ -670,7 +670,7 @@ dwc_otg: Remove duplicate gadget probe/unregister function
|
||||||
msleep(100); /* Cool down */
|
msleep(100); /* Cool down */
|
||||||
--- a/drivers/usb/core/message.c
|
--- a/drivers/usb/core/message.c
|
||||||
+++ b/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 &&
|
if (cp->string == NULL &&
|
||||||
!(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS))
|
!(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS))
|
||||||
cp->string = usb_cache_string(dev, cp->desc.iConfiguration);
|
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
|
--- a/drivers/video/fbdev/core/fbmem.c
|
||||||
+++ b/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);
|
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,
|
static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
|
||||||
unsigned long arg)
|
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 cmap_from;
|
||||||
struct fb_cmap_user cmap;
|
struct fb_cmap_user cmap;
|
||||||
struct fb_event event;
|
struct fb_event event;
|
||||||
|
@ -51,7 +51,7 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
|
||||||
void __user *argp = (void __user *)arg;
|
void __user *argp = (void __user *)arg;
|
||||||
long ret = 0;
|
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);
|
unlock_fb_info(info);
|
||||||
console_unlock();
|
console_unlock();
|
||||||
break;
|
break;
|
||||||
|
@ -67,7 +67,7 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
|
||||||
default:
|
default:
|
||||||
if (!lock_fb_info(info))
|
if (!lock_fb_info(info))
|
||||||
return -ENODEV;
|
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 FBIOPAN_DISPLAY:
|
||||||
case FBIOGET_CON2FBMAP:
|
case FBIOGET_CON2FBMAP:
|
||||||
case FBIOPUT_CON2FBMAP:
|
case FBIOPUT_CON2FBMAP:
|
||||||
|
|
|
@ -16,7 +16,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
|
|
||||||
--- a/drivers/mmc/card/block.c
|
--- a/drivers/mmc/card/block.c
|
||||||
+++ b/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_FIXUP("V10016", CID_MANFID_KINGSTON, CID_OEMID_ANY, add_quirk_mmc,
|
||||||
MMC_QUIRK_TRIM_BROKEN),
|
MMC_QUIRK_TRIM_BROKEN),
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
|
|
||||||
--- a/drivers/mmc/core/core.c
|
--- a/drivers/mmc/core/core.c
|
||||||
+++ b/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)
|
int mmc_can_erase(struct mmc_card *card)
|
||||||
{
|
{
|
||||||
if ((card->host->caps & MMC_CAP_ERASE) &&
|
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
|
--- a/drivers/mmc/card/block.c
|
||||||
+++ b/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_FIXUP("SD16G", 0x41, 0x3432, add_quirk_mmc,
|
||||||
MMC_QUIRK_ERASE_BROKEN),
|
MMC_QUIRK_ERASE_BROKEN),
|
||||||
|
|
|
@ -17,7 +17,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
|
|
||||||
--- a/drivers/mmc/card/block.c
|
--- a/drivers/mmc/card/block.c
|
||||||
+++ b/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_param(perdev_minors, int, 0444);
|
||||||
MODULE_PARM_DESC(perdev_minors, "Minors numbers to allocate per device");
|
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,
|
static inline int mmc_blk_part_switch(struct mmc_card *card,
|
||||||
struct mmc_blk_data *md);
|
struct mmc_blk_data *md);
|
||||||
static int get_card_status(struct mmc_card *card, u32 *status, int retries);
|
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;
|
struct mmc_blk_data *md, *part_md;
|
||||||
char cap_str[10];
|
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.
|
* 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))
|
if (!(card->csd.cmdclass & CCC_BLOCK_READ))
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
|
|
||||||
md = mmc_blk_alloc(card);
|
md = mmc_blk_alloc(card);
|
||||||
if (IS_ERR(md))
|
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,
|
string_get_size((u64)get_capacity(md->disk), 512, STRING_UNITS_2,
|
||||||
cap_str, sizeof(cap_str));
|
cap_str, sizeof(cap_str));
|
||||||
|
|
|
@ -10,7 +10,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
|
|
||||||
--- a/drivers/mmc/card/block.c
|
--- a/drivers/mmc/card/block.c
|
||||||
+++ b/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
|
* On some Kingston SD cards, multiple erases of less than 64
|
||||||
* sectors can cause corruption.
|
* sectors can cause corruption.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -28,7 +28,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
i2c0: i2c@7e205000 {
|
i2c0: i2c@7e205000 {
|
||||||
--- a/drivers/spi/spi-bcm2835.c
|
--- a/drivers/spi/spi-bcm2835.c
|
||||||
+++ b/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;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
/* now translate native cs to GPIO */
|
/* now translate native cs to GPIO */
|
||||||
/* first look for chip select pins in the devices pin groups */
|
/* first look for chip select pins in the devices pin groups */
|
||||||
for (pingroup_index = 0;
|
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
|
* so we are setting it here explicitly
|
||||||
*/
|
*/
|
||||||
gpio_set_value(spi->cs_gpio, (spi->mode & SPI_CS_HIGH) ? 0 : 1);
|
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
|
--- a/drivers/video/fbdev/core/fbmem.c
|
||||||
+++ b/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;
|
int ret = 0;
|
||||||
if (!lock_fb_info(info))
|
if (!lock_fb_info(info))
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
|
@ -9,7 +9,7 @@ Subject: [PATCH] spi-bcm2835: Remove unused code
|
||||||
|
|
||||||
--- a/drivers/spi/spi-bcm2835.c
|
--- a/drivers/spi/spi-bcm2835.c
|
||||||
+++ b/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);
|
bcm2835_wr(bs, BCM2835_SPI_CS, cs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ Subject: [PATCH] spi-bcm2835: Remove unused code
|
||||||
/*
|
/*
|
||||||
* sanity checking the native-chipselects
|
* 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;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
--- a/arch/arm/mach-cns3xxx/pcie.c
|
--- a/arch/arm/mach-cns3xxx/pcie.c
|
||||||
+++ b/arch/arm/mach-cns3xxx/pcie.c
|
+++ b/arch/arm/mach-cns3xxx/pcie.c
|
||||||
@@ -86,6 +86,79 @@ static void __iomem *cns3xxx_pci_map_bus
|
@@ -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)
|
+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
|
@@ -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)) {
|
+ 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);
|
+ 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
|
--- a/drivers/spi/spi.c
|
||||||
+++ b/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) {
|
list_for_each_entry(xfer, &msg->transfers, transfer_list) {
|
||||||
trace_spi_transfer_start(msg, xfer);
|
trace_spi_transfer_start(msg, xfer);
|
||||||
|
|
||||||
|
|
|
@ -1891,6 +1891,7 @@ CONFIG_LBDAF=y
|
||||||
# CONFIG_LCD_S6E63M0 is not set
|
# CONFIG_LCD_S6E63M0 is not set
|
||||||
# CONFIG_LCD_TDO24M is not set
|
# CONFIG_LCD_TDO24M is not set
|
||||||
# CONFIG_LCD_VGG2432A4 is not set
|
# CONFIG_LCD_VGG2432A4 is not set
|
||||||
|
CONFIG_LDISC_AUTOLOAD=y
|
||||||
# CONFIG_LDM_PARTITION is not set
|
# CONFIG_LDM_PARTITION is not set
|
||||||
# CONFIG_LEDS_BCM6328 is not set
|
# CONFIG_LEDS_BCM6328 is not set
|
||||||
# CONFIG_LEDS_BCM6358 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
|
--- a/drivers/spi/spi.c
|
||||||
+++ b/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);
|
trace_spi_message_start(master->cur_msg);
|
||||||
|
|
||||||
if (master->prepare_message) {
|
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);
|
"failed to prepare message: %d\n", ret);
|
||||||
master->cur_msg->status = ret;
|
master->cur_msg->status = ret;
|
||||||
spi_finalize_current_message(master);
|
spi_finalize_current_message(master);
|
||||||
|
@ -40,7 +40,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
master->cur_msg_prepared = true;
|
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) {
|
if (ret) {
|
||||||
master->cur_msg->status = ret;
|
master->cur_msg->status = ret;
|
||||||
spi_finalize_current_message(master);
|
spi_finalize_current_message(master);
|
||||||
|
@ -48,7 +48,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||||
return;
|
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) {
|
if (ret) {
|
||||||
dev_err(&master->dev,
|
dev_err(&master->dev,
|
||||||
"failed to transfer one message from queue\n");
|
"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);
|
EXPORT_SYMBOL_GPL(spi_async_locked);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
|
||||||
|
|
||||||
--- a/arch/mips/Kconfig
|
--- a/arch/mips/Kconfig
|
||||||
+++ b/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.
|
the documented boot protocol using a device tree.
|
||||||
|
|
||||||
config MIPS_RAW_APPENDED_DTB
|
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).
|
(e.g. cat vmlinux.bin <filename>.dtb > vmlinux_w_dtb).
|
||||||
|
|
||||||
This is meant as a backward compatibility convenience for those
|
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
|
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
|
to vmlinux.bin. Do not leave this option active in a production kernel
|
||||||
if you don't intend to always append a DTB.
|
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 */
|
/* Gobi 1000 QMI/wwan interface number is 3 according to qcserial */
|
||||||
#define QMI_GOBI1K_DEVICE(vend, prod) \
|
#define QMI_GOBI1K_DEVICE(vend, prod) \
|
||||||
QMI_FIXED_INTF(vend, prod, 3)
|
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(0x03f0, 0x9d1d, 1)}, /* HP lt4120 Snapdragon X5 LTE */
|
||||||
{QMI_FIXED_INTF(0x22de, 0x9061, 3)}, /* WeTelecom WPD-600N */
|
{QMI_FIXED_INTF(0x22de, 0x9061, 3)}, /* WeTelecom WPD-600N */
|
||||||
{QMI_FIXED_INTF(0x1e0e, 0x9001, 5)}, /* SIMCom 7230E */
|
{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 +-
|
arch/arm/mach-cns3xxx/pcie.c | 2 +-
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
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
|
--- a/arch/arm/mach-cns3xxx/pcie.c
|
||||||
+++ b/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;
|
u32 mask = (0x1ull << (size * 8)) - 1;
|
||||||
int shift = (where % 4) * 8;
|
int shift = (where % 4) * 8;
|
||||||
|
|
||||||
|
@ -46,6 +44,3 @@ index 5e11ad3164e0..95a11d5b3587 100644
|
||||||
|
|
||||||
if (ret == PCIBIOS_SUCCESSFUL && !bus->number && !devfn &&
|
if (ret == PCIBIOS_SUCCESSFUL && !bus->number && !devfn &&
|
||||||
(where & 0xffc) == PCI_CLASS_REVISION)
|
(where & 0xffc) == PCI_CLASS_REVISION)
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
||||||
--- a/arch/mips/Kconfig
|
--- a/arch/mips/Kconfig
|
||||||
+++ b/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_EHCI_BIG_ENDIAN_MMIO if CPU_BIG_ENDIAN
|
||||||
select USB_OHCI_BIG_ENDIAN_MMIO if CPU_BIG_ENDIAN
|
select USB_OHCI_BIG_ENDIAN_MMIO if CPU_BIG_ENDIAN
|
||||||
select MIPS_L1_CACHE_SHIFT_7
|
select MIPS_L1_CACHE_SHIFT_7
|
||||||
|
@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
help
|
help
|
||||||
The Cavium Octeon processor is a highly integrated chip containing
|
The Cavium Octeon processor is a highly integrated chip containing
|
||||||
many ethernet hardware widgets for networking tasks. The processor
|
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
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
|
|
|
@ -85,7 +85,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||||
dmactl |= BIT(DMA_REQUEST_OUTSTANDING);
|
dmactl |= BIT(DMA_REQUEST_OUTSTANDING);
|
||||||
writel(dmactl, &dma->dmactl);
|
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? */
|
/* kickstart this i/o queue? */
|
||||||
if (list_empty(&ep->queue) && !ep->stopped &&
|
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)))) {
|
(readl(&ep->regs->ep_rsp) & BIT(CLEAR_ENDPOINT_HALT)))) {
|
||||||
|
|
||||||
/* use DMA if the endpoint supports it, else pio */
|
/* 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;
|
break;
|
||||||
} else if (!ep->is_in &&
|
} else if (!ep->is_in &&
|
||||||
(req->req.length % ep->ep.maxpacket) &&
|
(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);
|
tmp = readl(&ep->regs->ep_stat);
|
||||||
/* AVOID TROUBLE HERE by not issuing short reads from
|
/* 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;
|
ep->wedged = 1;
|
||||||
} else {
|
} else {
|
||||||
clear_halt(ep);
|
clear_halt(ep);
|
||||||
|
@ -112,7 +112,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||||
!list_empty(&ep->queue) && ep->td_dma)
|
!list_empty(&ep->queue) && ep->td_dma)
|
||||||
restart_dma(ep);
|
restart_dma(ep);
|
||||||
ep->wedged = 0;
|
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);
|
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);
|
defect7374_enable_data_eps_zero(dev);
|
||||||
|
|
||||||
ep0_start(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;
|
ep->stopped = 0;
|
||||||
dev->protocol_stall = 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)
|
if (ep->dev->quirks & PLX_2280)
|
||||||
tmp = BIT(FIFO_OVERFLOW) |
|
tmp = BIT(FIFO_OVERFLOW) |
|
||||||
BIT(FIFO_UNDERFLOW);
|
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[0]);
|
||||||
cpu_to_le32s(&u.raw[1]);
|
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);
|
defect7374_workaround(dev, u.r);
|
||||||
|
|
||||||
tmp = 0;
|
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 {
|
} else {
|
||||||
ep_vdbg(dev, "%s clear halt\n", e->ep.name);
|
ep_vdbg(dev, "%s clear halt\n", e->ep.name);
|
||||||
clear_halt(e);
|
clear_halt(e);
|
||||||
|
@ -148,7 +148,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||||
!list_empty(&e->queue) && e->td_dma)
|
!list_empty(&e->queue) && e->td_dma)
|
||||||
restart_dma(e);
|
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)
|
if (e->ep.name == ep0name)
|
||||||
goto do_stall;
|
goto do_stall;
|
||||||
set_halt(e);
|
set_halt(e);
|
||||||
|
@ -157,7 +157,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||||
abort_dma(e);
|
abort_dma(e);
|
||||||
allow_status(ep);
|
allow_status(ep);
|
||||||
ep_vdbg(dev, "%s set halt\n", ep->ep.name);
|
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
|
#undef w_length
|
||||||
|
|
||||||
next_endpoints:
|
next_endpoints:
|
||||||
|
@ -166,7 +166,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||||
u32 mask = (BIT(ENDPOINT_0_INTERRUPT) |
|
u32 mask = (BIT(ENDPOINT_0_INTERRUPT) |
|
||||||
USB3380_IRQSTAT0_EP_INTR_MASK_IN |
|
USB3380_IRQSTAT0_EP_INTR_MASK_IN |
|
||||||
USB3380_IRQSTAT0_EP_INTR_MASK_OUT);
|
USB3380_IRQSTAT0_EP_INTR_MASK_OUT);
|
||||||
@@ -3404,7 +3404,7 @@ __acquires(dev->lock)
|
@@ -3402,7 +3402,7 @@ __acquires(dev->lock)
|
||||||
writel(tmp, &dma->dmastat);
|
writel(tmp, &dma->dmastat);
|
||||||
|
|
||||||
/* dma sync*/
|
/* dma sync*/
|
||||||
|
@ -175,7 +175,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||||
u32 r_dmacount = readl(&dma->dmacount);
|
u32 r_dmacount = readl(&dma->dmacount);
|
||||||
if (!ep->is_in && (r_dmacount & 0x00FFFFFF) &&
|
if (!ep->is_in && (r_dmacount & 0x00FFFFFF) &&
|
||||||
(tmp & BIT(DMA_TRANSACTION_DONE_INTERRUPT)))
|
(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 */
|
/* control requests and PIO */
|
||||||
handle_stat0_irqs(dev, readl(&dev->regs->irqstat0));
|
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 */
|
/* re-enable interrupt to trigger any possible new interrupt */
|
||||||
u32 pciirqenb1 = readl(&dev->regs->pciirqenb1);
|
u32 pciirqenb1 = readl(&dev->regs->pciirqenb1);
|
||||||
writel(pciirqenb1 & 0x7FFFFFFF, &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)
|
if (dev->got_irq)
|
||||||
free_irq(pdev->irq, dev);
|
free_irq(pdev->irq, dev);
|
||||||
|
@ -193,7 +193,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||||
pci_disable_msi(pdev);
|
pci_disable_msi(pdev);
|
||||||
if (dev->regs)
|
if (dev->regs)
|
||||||
iounmap(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->dep = (struct net2280_dep_regs __iomem *) (base + 0x0200);
|
||||||
dev->epregs = (struct net2280_ep_regs __iomem *) (base + 0x0300);
|
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 fsmvalue;
|
||||||
u32 usbstat;
|
u32 usbstat;
|
||||||
dev->usb_ext = (struct usb338x_usb_ext_regs __iomem *)
|
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;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -211,7 +211,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||||
if (pci_enable_msi(pdev))
|
if (pci_enable_msi(pdev))
|
||||||
ep_err(dev, "Failed to enable MSI mode\n");
|
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 = ((PCI_CLASS_SERIAL_USB << 8) | 0xfe),
|
||||||
.class_mask = ~0,
|
.class_mask = ~0,
|
||||||
.vendor = PCI_VENDOR_ID_PLX,
|
.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),
|
.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,
|
.device = 0x3382,
|
||||||
.subvendor = PCI_ANY_ID,
|
.subvendor = PCI_ANY_ID,
|
||||||
.subdevice = PCI_ANY_ID,
|
.subdevice = PCI_ANY_ID,
|
||||||
|
|
|
@ -4,8 +4,8 @@
|
||||||
KBUILD_CFLAGS += $(call cc-disable-warning, attribute-alias)
|
KBUILD_CFLAGS += $(call cc-disable-warning, attribute-alias)
|
||||||
|
|
||||||
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
|
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
|
||||||
-KBUILD_CFLAGS += $(call cc-option,-Oz,-Os)
|
-KBUILD_CFLAGS += -Os
|
||||||
+KBUILD_CFLAGS += $(call cc-option,-Oz,-Os) $(EXTRA_OPTIMIZATION)
|
+KBUILD_CFLAGS += -Os $(EXTRA_OPTIMIZATION)
|
||||||
else
|
else
|
||||||
ifdef CONFIG_PROFILE_ALL_BRANCHES
|
ifdef CONFIG_PROFILE_ALL_BRANCHES
|
||||||
-KBUILD_CFLAGS += -O2
|
-KBUILD_CFLAGS += -O2
|
||||||
|
|
|
@ -123,7 +123,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
set_license(mod, get_modinfo(info, "license"));
|
set_license(mod, get_modinfo(info, "license"));
|
||||||
--- a/scripts/mod/modpost.c
|
--- a/scripts/mod/modpost.c
|
||||||
+++ b/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);
|
symname = remove_dot(info.strtab + sym->st_name);
|
||||||
|
|
||||||
handle_modversions(mod, &info, sym, symname);
|
handle_modversions(mod, &info, sym, symname);
|
||||||
|
@ -133,7 +133,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
}
|
}
|
||||||
if (!is_vmlinux(modname) ||
|
if (!is_vmlinux(modname) ||
|
||||||
(is_vmlinux(modname) && vmlinux_section_warnings))
|
(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/vermagic.h>\n");
|
||||||
buf_printf(b, "#include <linux/compiler.h>\n");
|
buf_printf(b, "#include <linux/compiler.h>\n");
|
||||||
buf_printf(b, "\n");
|
buf_printf(b, "\n");
|
||||||
|
@ -143,7 +143,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
buf_printf(b, "\n");
|
buf_printf(b, "\n");
|
||||||
buf_printf(b, "__visible struct module __this_module\n");
|
buf_printf(b, "__visible struct module __this_module\n");
|
||||||
buf_printf(b, "__attribute__((section(\".gnu.linkonce.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)
|
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 */
|
/* 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)
|
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;
|
/* 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)
|
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)
|
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);
|
add_staging_flag(&buf, mod->name);
|
||||||
err |= add_versions(&buf, mod);
|
err |= add_versions(&buf, mod);
|
||||||
add_depends(&buf, mod, modules);
|
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
|
* 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
|
--- a/include/uapi/linux/libc-compat.h
|
||||||
+++ b/include/uapi/linux/libc-compat.h
|
+++ b/include/uapi/linux/libc-compat.h
|
||||||
@@ -85,6 +85,14 @@
|
@@ -85,6 +85,14 @@
|
||||||
|
|
|
@ -8,7 +8,7 @@ Acked-by: Rob Landley <rob@landley.net>
|
||||||
---
|
---
|
||||||
--- a/arch/mips/Kconfig
|
--- a/arch/mips/Kconfig
|
||||||
+++ b/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
|
config ARCH_MAY_HAVE_PC_FDC
|
||||||
bool
|
bool
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ Acked-by: Rob Landley <rob@landley.net>
|
||||||
config CEVT_BCM1480
|
config CEVT_BCM1480
|
||||||
bool
|
bool
|
||||||
|
|
||||||
@@ -2793,6 +2790,18 @@ choice
|
@@ -2796,6 +2793,18 @@ choice
|
||||||
bool "Bootloader kernel arguments if available"
|
bool "Bootloader kernel arguments if available"
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/arch/mips/Kconfig
|
--- a/arch/mips/Kconfig
|
||||||
+++ b/arch/mips/Kconfig
|
+++ b/arch/mips/Kconfig
|
||||||
@@ -1124,6 +1124,10 @@ config SYNC_R4K
|
@@ -1127,6 +1127,10 @@ config SYNC_R4K
|
||||||
config MIPS_MACHINE
|
config MIPS_MACHINE
|
||||||
def_bool n
|
def_bool n
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ v2: incorporated changes suggested by Jonas Gorski
|
||||||
|
|
||||||
--- a/arch/mips/Kconfig
|
--- a/arch/mips/Kconfig
|
||||||
+++ b/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.
|
If unsure, say N.
|
||||||
|
|
||||||
|
|
|
@ -21,8 +21,8 @@ Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
|
||||||
|
|
||||||
--- a/arch/arc/kernel/head.S
|
--- a/arch/arc/kernel/head.S
|
||||||
+++ b/arch/arc/kernel/head.S
|
+++ b/arch/arc/kernel/head.S
|
||||||
@@ -49,6 +49,16 @@
|
@@ -59,6 +59,16 @@
|
||||||
1:
|
#endif
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
+; Here "patch-dtb" will embed external .dtb
|
+; Here "patch-dtb" will embed external .dtb
|
||||||
|
|
|
@ -206,7 +206,7 @@
|
||||||
+}
|
+}
|
||||||
--- a/fs/jffs2/super.c
|
--- a/fs/jffs2/super.c
|
||||||
+++ b/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_inode) != 68);
|
||||||
BUILD_BUG_ON(sizeof(struct jffs2_raw_summary) != 32);
|
BUILD_BUG_ON(sizeof(struct jffs2_raw_summary) != 32);
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
/* "Be conservative in what you do,
|
/* "Be conservative in what you do,
|
||||||
be liberal in what you accept from others."
|
be liberal in what you accept from others."
|
||||||
If it's non-zero, we mark only out of window RST segments as INVALID. */
|
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;
|
s32 receiver_offset;
|
||||||
bool res, in_recv_win;
|
bool res, in_recv_win;
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
/*
|
/*
|
||||||
* Get the required data from the packet.
|
* 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,
|
.mode = 0644,
|
||||||
.proc_handler = proc_dointvec,
|
.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)))
|
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||||
goto drop;
|
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);
|
mutex_init(&po->pg_vec_lock);
|
||||||
po->rollover = NULL;
|
po->rollover = NULL;
|
||||||
po->prot_hook.func = packet_rcv;
|
po->prot_hook.func = packet_rcv;
|
||||||
|
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
||||||
if (sock->type == SOCK_PACKET)
|
if (sock->type == SOCK_PACKET)
|
||||||
po->prot_hook.func = packet_rcv_spkt;
|
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;
|
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
default:
|
default:
|
||||||
return -ENOPROTOOPT;
|
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:
|
case PACKET_VNET_HDR:
|
||||||
val = po->has_vnet_hdr;
|
val = po->has_vnet_hdr;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -61,7 +61,7 @@ Isolating individual bridge ports
|
||||||
skb = NULL;
|
skb = NULL;
|
||||||
--- a/net/bridge/br_forward.c
|
--- a/net/bridge/br_forward.c
|
||||||
+++ b/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 */
|
/* called with rcu_read_lock */
|
||||||
void br_forward(const struct net_bridge_port *to, struct sk_buff *skb, struct sk_buff *skb0)
|
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)
|
if (skb0)
|
||||||
deliver_clone(to, skb, __br_forward);
|
deliver_clone(to, skb, __br_forward);
|
||||||
else
|
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,
|
struct sk_buff *skb0,
|
||||||
void (*__packet_hook)(const struct net_bridge_port *p,
|
void (*__packet_hook)(const struct net_bridge_port *p,
|
||||||
struct sk_buff *skb),
|
struct sk_buff *skb),
|
||||||
|
@ -79,7 +79,7 @@ Isolating individual bridge ports
|
||||||
{
|
{
|
||||||
struct net_bridge_port *p;
|
struct net_bridge_port *p;
|
||||||
struct net_bridge_port *prev;
|
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;
|
prev = NULL;
|
||||||
|
|
||||||
list_for_each_entry_rcu(p, &br->port_list, list) {
|
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 */
|
/* Do not flood unicast traffic to ports that turn it off */
|
||||||
if (unicast && !(p->flags & BR_FLOOD))
|
if (unicast && !(p->flags & BR_FLOOD))
|
||||||
continue;
|
continue;
|
||||||
@@ -239,14 +241,14 @@ out:
|
@@ -238,14 +240,14 @@ out:
|
||||||
/* called with rcu_read_lock */
|
/* called with rcu_read_lock */
|
||||||
void br_flood_deliver(struct net_bridge *br, struct sk_buff *skb, bool unicast)
|
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)
|
if (err)
|
||||||
break;
|
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 net_bridge_port *port,
|
||||||
struct br_ip *group,
|
struct br_ip *group,
|
||||||
struct bridge_mcast_other_query *other_query,
|
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_htable *mdb;
|
||||||
struct net_bridge_mdb_entry *mp;
|
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;
|
for (pp = &mp->ports;
|
||||||
(p = mlock_dereference(*pp, br)) != NULL;
|
(p = mlock_dereference(*pp, br)) != NULL;
|
||||||
pp = &p->next) {
|
pp = &p->next) {
|
||||||
|
@ -191,7 +191,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
rcu_assign_pointer(*pp, p->next);
|
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);
|
for (p = mlock_dereference(mp->ports, br);
|
||||||
p != NULL;
|
p != NULL;
|
||||||
p = mlock_dereference(p->next, br)) {
|
p = mlock_dereference(p->next, br)) {
|
||||||
|
@ -200,7 +200,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!hlist_unhashed(&p->mglist) &&
|
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,
|
static void br_ip4_multicast_leave_group(struct net_bridge *br,
|
||||||
struct net_bridge_port *port,
|
struct net_bridge_port *port,
|
||||||
|
@ -211,7 +211,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||||
{
|
{
|
||||||
struct br_ip br_group;
|
struct br_ip br_group;
|
||||||
struct bridge_mcast_own_query *own_query;
|
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_group.vid = vid;
|
||||||
|
|
||||||
br_multicast_leave_group(br, port, &br_group, &br->ip4_other_query,
|
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 br_ip br_group;
|
||||||
struct bridge_mcast_own_query *own_query;
|
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_group.vid = vid;
|
||||||
|
|
||||||
br_multicast_leave_group(br, port, &br_group, &br->ip6_other_query,
|
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
|
#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,
|
struct sk_buff *skb,
|
||||||
u16 vid)
|
u16 vid)
|
||||||
{
|
{
|
||||||
|
@ -245,7 +245,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||||
struct sk_buff *skb_trimmed = NULL;
|
struct sk_buff *skb_trimmed = NULL;
|
||||||
struct igmphdr *ih;
|
struct igmphdr *ih;
|
||||||
int err;
|
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;
|
BR_INPUT_SKB_CB(skb)->igmp = 1;
|
||||||
ih = igmp_hdr(skb);
|
ih = igmp_hdr(skb);
|
||||||
|
@ -260,7 +260,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||||
break;
|
break;
|
||||||
case IGMPV3_HOST_MEMBERSHIP_REPORT:
|
case IGMPV3_HOST_MEMBERSHIP_REPORT:
|
||||||
err = br_ip4_multicast_igmp3_report(br, port, skb_trimmed, vid);
|
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);
|
err = br_ip4_multicast_query(br, port, skb_trimmed, vid);
|
||||||
break;
|
break;
|
||||||
case IGMP_HOST_LEAVE_MESSAGE:
|
case IGMP_HOST_LEAVE_MESSAGE:
|
||||||
|
@ -269,7 +269,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||||
break;
|
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,
|
struct sk_buff *skb,
|
||||||
u16 vid)
|
u16 vid)
|
||||||
{
|
{
|
||||||
|
@ -277,7 +277,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||||
struct sk_buff *skb_trimmed = NULL;
|
struct sk_buff *skb_trimmed = NULL;
|
||||||
struct mld_msg *mld;
|
struct mld_msg *mld;
|
||||||
int err;
|
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) {
|
switch (mld->mld_type) {
|
||||||
case ICMPV6_MGM_REPORT:
|
case ICMPV6_MGM_REPORT:
|
||||||
|
@ -288,7 +288,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||||
break;
|
break;
|
||||||
case ICMPV6_MLD2_REPORT:
|
case ICMPV6_MLD2_REPORT:
|
||||||
err = br_ip6_multicast_mld2_report(br, port, skb_trimmed, vid);
|
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);
|
err = br_ip6_multicast_query(br, port, skb_trimmed, vid);
|
||||||
break;
|
break;
|
||||||
case ICMPV6_MGM_REDUCTION:
|
case ICMPV6_MGM_REDUCTION:
|
||||||
|
@ -333,7 +333,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||||
rcu_assign_pointer(*pp, p);
|
rcu_assign_pointer(*pp, p);
|
||||||
--- a/net/bridge/br_forward.c
|
--- a/net/bridge/br_forward.c
|
||||||
+++ b/net/bridge/br_forward.c
|
+++ b/net/bridge/br_forward.c
|
||||||
@@ -192,6 +192,34 @@ out:
|
@@ -191,6 +191,34 @@ out:
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -368,7 +368,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
|
||||||
/* called under bridge lock */
|
/* called under bridge lock */
|
||||||
static void br_flood(struct net_bridge *br, struct sk_buff *skb,
|
static void br_flood(struct net_bridge *br, struct sk_buff *skb,
|
||||||
struct sk_buff *skb0,
|
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 *prev = NULL;
|
||||||
struct net_bridge_port_group *p;
|
struct net_bridge_port_group *p;
|
||||||
struct hlist_node *rp;
|
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));
|
rp = rcu_dereference(hlist_first_rcu(&br->router_list));
|
||||||
p = mdst ? rcu_dereference(mdst->ports) : NULL;
|
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) :
|
rport = rp ? hlist_entry(rp, struct net_bridge_port, rlist) :
|
||||||
NULL;
|
NULL;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/include/linux/skbuff.h
|
--- a/include/linux/skbuff.h
|
||||||
+++ b/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)
|
* NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
|
||||||
*/
|
*/
|
||||||
#ifndef NET_SKB_PAD
|
#ifndef NET_SKB_PAD
|
||||||
|
|
|
@ -84,7 +84,7 @@
|
||||||
if (!qdisc)
|
if (!qdisc)
|
||||||
--- a/net/sched/sch_api.c
|
--- a/net/sched/sch_api.c
|
||||||
+++ b/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;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||||
static void rt_fibinfo_free(struct rtable __rcu **rtp)
|
static void rt_fibinfo_free(struct rtable __rcu **rtp)
|
||||||
--- a/net/ipv4/fib_trie.c
|
--- a/net/ipv4/fib_trie.c
|
||||||
+++ b/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_THROW] = "THROW",
|
||||||
[RTN_NAT] = "NAT",
|
[RTN_NAT] = "NAT",
|
||||||
[RTN_XRESOLVE] = "XRESOLVE",
|
[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)
|
static inline const char *rtn_type(char *buf, size_t len, unsigned int t)
|
||||||
--- a/net/ipv4/ipmr.c
|
--- a/net/ipv4/ipmr.c
|
||||||
+++ b/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:
|
case FR_ACT_UNREACHABLE:
|
||||||
return -ENETUNREACH;
|
return -ENETUNREACH;
|
||||||
case FR_ACT_PROHIBIT:
|
case FR_ACT_PROHIBIT:
|
||||||
|
@ -101,7 +101,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||||
table = fib6_get_table(net, rule->table);
|
table = fib6_get_table(net, rule->table);
|
||||||
--- a/net/ipv6/ip6mr.c
|
--- a/net/ipv6/ip6mr.c
|
||||||
+++ b/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;
|
return -ENETUNREACH;
|
||||||
case FR_ACT_PROHIBIT:
|
case FR_ACT_PROHIBIT:
|
||||||
return -EACCES;
|
return -EACCES;
|
||||||
|
|
|
@ -113,7 +113,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
#endif
|
#endif
|
||||||
--- a/include/linux/skbuff.h
|
--- a/include/linux/skbuff.h
|
||||||
+++ b/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 inner_protocol_type:1;
|
||||||
__u8 remcsum_offload:1;
|
__u8 remcsum_offload:1;
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
/**
|
/**
|
||||||
* mdiobus_alloc_size - allocate a mii_bus structure
|
* mdiobus_alloc_size - allocate a mii_bus structure
|
||||||
* @size: extra amount of memory to allocate for private storage.
|
* @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);
|
EXPORT_SYMBOL(mdiobus_free);
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
phydev = get_phy_device(bus, addr, false);
|
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);
|
of_mdiobus_link_phydev(bus, phydev);
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
*/
|
*/
|
||||||
--- a/include/linux/skbuff.h
|
--- a/include/linux/skbuff.h
|
||||||
+++ b/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;
|
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
|
* pskb_trim_unique - remove end from a paged unique (not cloned) buffer
|
||||||
* @skb: buffer to alter
|
* @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/protocol.h>
|
||||||
#include <net/dst.h>
|
#include <net/dst.h>
|
||||||
@@ -520,6 +521,22 @@ skb_fail:
|
@@ -524,6 +525,22 @@ skb_fail:
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__napi_alloc_skb);
|
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
|
* ata_build_rw_tf - Build ATA taskfile for given read/write request
|
||||||
* @tf: Target ATA taskfile
|
* @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)
|
if (tag < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -79,7 +79,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
|
|
||||||
qc = __ata_qc_from_tag(ap, tag);
|
qc = __ata_qc_from_tag(ap, tag);
|
||||||
qc->tag = 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.unhandled_irq = 1;
|
||||||
ap->stats.idle_irq = 1;
|
ap->stats.idle_irq = 1;
|
||||||
#endif
|
#endif
|
||||||
|
@ -89,7 +89,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
ata_sff_port_init(ap);
|
ata_sff_port_init(ap);
|
||||||
|
|
||||||
return 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->pmp_link);
|
||||||
kfree(ap->slave_link);
|
kfree(ap->slave_link);
|
||||||
|
@ -102,7 +102,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
kfree(ap);
|
kfree(ap);
|
||||||
host->ports[i] = NULL;
|
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]->print_id = atomic_inc_return(&ata_print_id);
|
||||||
host->ports[i]->local_port_no = i + 1;
|
host->ports[i]->local_port_no = i + 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
obj-$(CONFIG_PROC_FS) += net-procfs.o
|
obj-$(CONFIG_PROC_FS) += net-procfs.o
|
||||||
--- a/net/core/sock.c
|
--- a/net/core/sock.c
|
||||||
+++ b/net/core/sock.c
|
+++ b/net/core/sock.c
|
||||||
@@ -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)
|
static void __sk_free(struct sock *sk)
|
||||||
{
|
{
|
||||||
|
|
|
@ -117,12 +117,12 @@
|
||||||
|
|
||||||
+ if (IS_ENABLED(CONFIG_PROC_STRIPPED))
|
+ if (IS_ENABLED(CONFIG_PROC_STRIPPED))
|
||||||
+ return 0;
|
+ return 0;
|
||||||
pe = proc_create("timer_list", 0444, NULL, &timer_list_fops);
|
pe = proc_create("timer_list", 0400, NULL, &timer_list_fops);
|
||||||
if (!pe)
|
if (!pe)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
--- a/mm/vmalloc.c
|
--- a/mm/vmalloc.c
|
||||||
+++ b/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)
|
static int __init proc_vmalloc_init(void)
|
||||||
{
|
{
|
||||||
|
@ -133,7 +133,7 @@
|
||||||
}
|
}
|
||||||
--- a/mm/vmstat.c
|
--- a/mm/vmstat.c
|
||||||
+++ b/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();
|
cpu_notifier_register_done();
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_PROC_FS
|
#ifdef CONFIG_PROC_FS
|
||||||
|
@ -173,7 +173,7 @@
|
||||||
goto err;
|
goto err;
|
||||||
--- a/net/core/sock.c
|
--- a/net/core/sock.c
|
||||||
+++ b/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)
|
static int __init proto_init(void)
|
||||||
{
|
{
|
||||||
|
@ -184,7 +184,7 @@
|
||||||
|
|
||||||
--- a/net/ipv4/fib_trie.c
|
--- a/net/ipv4/fib_trie.c
|
||||||
+++ b/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)
|
int __net_init fib_proc_init(struct net *net)
|
||||||
{
|
{
|
||||||
|
@ -199,7 +199,7 @@
|
||||||
&fib_triestat_fops))
|
&fib_triestat_fops))
|
||||||
goto out2;
|
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;
|
return 0;
|
||||||
|
|
||||||
out3:
|
out3:
|
||||||
|
@ -227,7 +227,7 @@
|
||||||
|
|
||||||
--- a/net/ipv4/proc.c
|
--- a/net/ipv4/proc.c
|
||||||
+++ b/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)
|
int __init ip_misc_proc_init(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
#ifdef CONFIG_UEVENT_HELPER
|
#ifdef CONFIG_UEVENT_HELPER
|
||||||
/* path to the userspace helper executed on an event */
|
/* path to the userspace helper executed on an event */
|
||||||
extern char uevent_helper[];
|
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,
|
int kobject_action_type(const char *buf, size_t count,
|
||||||
enum kobject_action *type);
|
enum kobject_action *type);
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/drivers/net/ethernet/marvell/sky2.c
|
--- a/drivers/net/ethernet/marvell/sky2.c
|
||||||
+++ b/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
|
* 1) from device tree data
|
||||||
* 2) from internal registers set by bootloader
|
* 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");
|
irq_ack = platform_get_irq_byname(pdev, "ack");
|
||||||
if (irq_ack < 0) {
|
if (irq_ack < 0) {
|
||||||
dev_err(&pdev->dev, "required ack interrupt missing\n");
|
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)
|
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
|
--- a/drivers/usb/dwc3/gadget.c
|
||||||
+++ b/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;
|
left = evt->count;
|
||||||
|
|
||||||
if (!(evt->flags & DWC3_EVENT_PENDING))
|
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;
|
evt->lpos = (evt->lpos + 4) % DWC3_EVENT_BUFFERS_SIZE;
|
||||||
left -= 4;
|
left -= 4;
|
||||||
|
|
||||||
|
@ -187,7 +187,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||||
}
|
}
|
||||||
|
|
||||||
evt->count = 0;
|
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;
|
ret = IRQ_HANDLED;
|
||||||
|
|
||||||
/* Unmask interrupt */
|
/* Unmask interrupt */
|
||||||
|
@ -199,7 +199,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||||
|
|
||||||
return ret;
|
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;
|
struct dwc3 *dwc = _dwc;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
irqreturn_t ret = IRQ_NONE;
|
irqreturn_t ret = IRQ_NONE;
|
||||||
|
@ -231,7 +231,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||||
count &= DWC3_GEVNTCOUNT_MASK;
|
count &= DWC3_GEVNTCOUNT_MASK;
|
||||||
if (!count)
|
if (!count)
|
||||||
return IRQ_NONE;
|
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;
|
evt->flags |= DWC3_EVENT_PENDING;
|
||||||
|
|
||||||
/* Mask interrupt */
|
/* Mask interrupt */
|
||||||
|
@ -243,7 +243,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||||
|
|
||||||
return IRQ_WAKE_THREAD;
|
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)
|
static irqreturn_t dwc3_interrupt(int irq, void *_dwc)
|
||||||
{
|
{
|
||||||
struct dwc3 *dwc = _dwc;
|
struct dwc3 *dwc = _dwc;
|
||||||
|
|
|
@ -76,7 +76,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||||
struct usb_gadget gadget;
|
struct usb_gadget gadget;
|
||||||
--- a/drivers/usb/dwc3/gadget.c
|
--- a/drivers/usb/dwc3/gadget.c
|
||||||
+++ b/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;
|
int left;
|
||||||
u32 reg;
|
u32 reg;
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||||
left = evt->count;
|
left = evt->count;
|
||||||
|
|
||||||
if (!(evt->flags & DWC3_EVENT_PENDING))
|
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 count;
|
||||||
u32 reg;
|
u32 reg;
|
||||||
|
|
||||||
|
|
|
@ -820,7 +820,7 @@ Signed-off-by: Mathieu Olivari <mathieu@codeaurora.org>
|
||||||
#endif
|
#endif
|
||||||
--- a/net/dsa/slave.c
|
--- a/net/dsa/slave.c
|
||||||
+++ b/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;
|
p->xmit = brcm_netdev_ops.xmit;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -180,6 +180,6 @@ Signed-off-by: Adrian Panella <ianchi74@outlook.com>
|
||||||
+ }
|
+ }
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
|
/* parameters may set static keys */
|
||||||
|
jump_label_init();
|
||||||
parse_early_param();
|
parse_early_param();
|
||||||
after_dashes = parse_args("Booting kernel",
|
|
||||||
static_command_line, __start___param,
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
/* Get the HEAD */
|
/* Get the HEAD */
|
||||||
skb = kmem_cache_alloc_node(cache, gfp_mask & ~__GFP_DMA, node);
|
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))
|
if (skb_shared(skb))
|
||||||
BUG();
|
BUG();
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ Signed-off-by: Ezequiel Garcia <ezequiel.garcia <at> free-electrons.com>
|
||||||
---
|
---
|
||||||
--- a/drivers/net/ethernet/marvell/mv643xx_eth.c
|
--- a/drivers/net/ethernet/marvell/mv643xx_eth.c
|
||||||
+++ b/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->watchdog_timeo = 2 * HZ;
|
||||||
dev->base_addr = 0;
|
dev->base_addr = 0;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/arch/mips/Kconfig
|
--- a/arch/mips/Kconfig
|
||||||
+++ b/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
|
Includes a loader for loading an elf relocatable object
|
||||||
onto another VPE and running it.
|
onto another VPE and running it.
|
||||||
|
|
||||||
|
|
|
@ -109,7 +109,7 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||||
help
|
help
|
||||||
--- a/arch/powerpc/Kconfig
|
--- a/arch/powerpc/Kconfig
|
||||||
+++ b/arch/powerpc/Kconfig
|
+++ b/arch/powerpc/Kconfig
|
||||||
@@ -787,6 +787,11 @@ config FSL_GTM
|
@@ -792,6 +792,11 @@ config FSL_GTM
|
||||||
help
|
help
|
||||||
Freescale General-purpose Timers support
|
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
|
# Yes MCA RS/6000s exist but Linux-PPC does not currently support any
|
||||||
config MCA
|
config MCA
|
||||||
bool
|
bool
|
||||||
@@ -919,14 +924,14 @@ config DYNAMIC_MEMSTART
|
@@ -924,14 +929,14 @@ config DYNAMIC_MEMSTART
|
||||||
select NONSTATIC_KERNEL
|
select NONSTATIC_KERNEL
|
||||||
help
|
help
|
||||||
This option enables the kernel to be loaded at any page aligned
|
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
|
--- a/include/linux/skbuff.h
|
||||||
+++ b/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 kfree_skb_list(struct sk_buff *segs);
|
||||||
void skb_tx_error(struct sk_buff *skb);
|
void skb_tx_error(struct sk_buff *skb);
|
||||||
void consume_skb(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
|
--- a/net/core/skbuff.c
|
||||||
+++ b/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);
|
EXPORT_SYMBOL(consume_skb);
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ Integrated-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||||
|
|
||||||
--- a/include/linux/netdev_features.h
|
--- a/include/linux/netdev_features.h
|
||||||
+++ b/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_VLAN_STAG_FILTER_BIT,/* Receive filtering on VLAN STAGs */
|
||||||
NETIF_F_HW_L2FW_DOFFLOAD_BIT, /* Allow L2 Forwarding in Hardware */
|
NETIF_F_HW_L2FW_DOFFLOAD_BIT, /* Allow L2 Forwarding in Hardware */
|
||||||
NETIF_F_BUSY_POLL_BIT, /* Busy poll */
|
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
|
* 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_VLAN_STAG_TX __NETIF_F(HW_VLAN_STAG_TX)
|
||||||
#define NETIF_F_HW_L2FW_DOFFLOAD __NETIF_F(HW_L2FW_DOFFLOAD)
|
#define NETIF_F_HW_L2FW_DOFFLOAD __NETIF_F(HW_L2FW_DOFFLOAD)
|
||||||
#define NETIF_F_BUSY_POLL __NETIF_F(BUSY_POLL)
|
#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_QDISC __NETIF_F(HW_QDISC)
|
||||||
+#define NETIF_F_HW_ACCEL_MQ __NETIF_F(HW_ACCEL_MQ)
|
+#define NETIF_F_HW_ACCEL_MQ __NETIF_F(HW_ACCEL_MQ)
|
||||||
|
|
||||||
#define for_each_netdev_feature(mask_addr, bit) \
|
/* Finds the next feature with the highest number of the range of start till 0.
|
||||||
for_each_set_bit(bit, (unsigned long *)mask_addr, NETDEV_FEATURE_COUNT)
|
*/
|
||||||
|
|
|
@ -17,7 +17,7 @@ Integrated-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||||
|
|
||||||
--- a/arch/arm64/Kconfig
|
--- a/arch/arm64/Kconfig
|
||||||
+++ b/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"
|
menu "Bus support"
|
||||||
|
|
||||||
|
|
|
@ -15054,7 +15054,7 @@ Integrated-by: Yutang Jiang <yutang.jiang@nxp.com>
|
||||||
+#endif /* _PLATFORM_H_ */
|
+#endif /* _PLATFORM_H_ */
|
||||||
--- a/include/linux/skbuff.h
|
--- a/include/linux/skbuff.h
|
||||||
+++ b/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);
|
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
|
--- a/scripts/mod/file2alias.c
|
||||||
+++ b/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 */
|
+/* Looks like: fsl-mc:vNdN */
|
||||||
+static int do_fsl_mc_entry(const char *filename, void *symval,
|
+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
|
--- a/drivers/mmc/host/sdhci-of-esdhc.c
|
||||||
+++ b/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"))
|
if (of_device_is_compatible(np, "fsl,ls1021a-esdhc"))
|
||||||
host->quirks |= SDHCI_QUIRK_BROKEN_TIMEOUT_VAL;
|
host->quirks |= SDHCI_QUIRK_BROKEN_TIMEOUT_VAL;
|
||||||
|
|
||||||
|
|
|
@ -180,7 +180,7 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||||
+#endif /* _PCI_LAYERSCAPE_H */
|
+#endif /* _PCI_LAYERSCAPE_H */
|
||||||
--- a/drivers/pci/quirks.c
|
--- a/drivers/pci/quirks.c
|
||||||
+++ b/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)
|
static void quirk_dma_func0_alias(struct pci_dev *dev)
|
||||||
{
|
{
|
||||||
if (PCI_FUNC(dev->devfn) != 0) {
|
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)
|
static void quirk_dma_func1_alias(struct pci_dev *dev)
|
||||||
{
|
{
|
||||||
if (PCI_FUNC(dev->devfn) != 1) {
|
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);
|
id = pci_match_id(fixed_dma_alias_tbl, dev);
|
||||||
if (id) {
|
if (id) {
|
||||||
|
|
|
@ -10,7 +10,7 @@ Signed-off-by: Yutang Jiang <yutang.jiang@nxp.com>
|
||||||
|
|
||||||
--- a/drivers/mmc/host/sdhci-of-esdhc.c
|
--- a/drivers/mmc/host/sdhci-of-esdhc.c
|
||||||
+++ b/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,p4080-esdhc") ||
|
||||||
of_device_is_compatible(np, "fsl,p1020-esdhc") ||
|
of_device_is_compatible(np, "fsl,p1020-esdhc") ||
|
||||||
of_device_is_compatible(np, "fsl,t1040-esdhc") ||
|
of_device_is_compatible(np, "fsl,t1040-esdhc") ||
|
||||||
|
|
|
@ -96,7 +96,7 @@ Signed-off-by: Yutang Jiang <yutang.jiang@nxp.com>
|
||||||
#endif
|
#endif
|
||||||
--- a/arch/arm64/kernel/head.S
|
--- a/arch/arm64/kernel/head.S
|
||||||
+++ b/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
|
bl el2_setup // Drop to EL1, w20=cpu_boot_mode
|
||||||
adrp x24, __PHYS_OFFSET
|
adrp x24, __PHYS_OFFSET
|
||||||
bl set_cpu_boot_mode_flag
|
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
|
bl __create_page_tables // x25=TTBR0, x26=TTBR1
|
||||||
/*
|
/*
|
||||||
* The following calls CPU setup code, see arch/arm64/mm/proc.S for
|
* 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)
|
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.
|
* Macro to create a table entry to the next page.
|
||||||
*
|
*
|
||||||
* tbl: page table address
|
* 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:
|
* required to get the kernel running. The following sections are required:
|
||||||
* - identity mapping to enable the MMU (low address, TTBR0)
|
* - identity mapping to enable the MMU (low address, TTBR0)
|
||||||
* - first few MB of the kernel linear mapping to jump to once the MMU has
|
* - 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:
|
__create_page_tables:
|
||||||
adrp x25, idmap_pg_dir
|
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
|
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
|
* 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;
|
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 */
|
/* Queueing functions don't count the current TRB into transferred */
|
||||||
return (total_packet_count - ((transferred + trb_buff_len) / maxp));
|
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;
|
field |= 0x1;
|
||||||
|
|
||||||
/* xHCI 1.0/1.1 6.4.1.2.1: Transfer Type field */
|
/* 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);
|
field |= TRB_TX_TYPE(TRB_DATA_IN);
|
||||||
--- a/drivers/usb/host/xhci.c
|
--- a/drivers/usb/host/xhci.c
|
||||||
+++ b/drivers/usb/host/xhci.c
|
+++ b/drivers/usb/host/xhci.c
|
||||||
@@ -31,6 +31,7 @@
|
@@ -32,6 +32,7 @@
|
||||||
|
|
||||||
#include "xhci.h"
|
#include "xhci.h"
|
||||||
#include "xhci-trace.h"
|
#include "xhci-trace.h"
|
||||||
|
@ -1474,7 +1474,7 @@ Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
|
||||||
|
|
||||||
#define DRIVER_AUTHOR "Sarah Sharp"
|
#define DRIVER_AUTHOR "Sarah Sharp"
|
||||||
#define DRIVER_DESC "'eXtensible' Host Controller (xHC) Driver"
|
#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");
|
"// Set the interrupt modulation register");
|
||||||
temp = readl(&xhci->ir_set->irq_control);
|
temp = readl(&xhci->ir_set->irq_control);
|
||||||
temp &= ~ER_IRQ_INTERVAL_MASK;
|
temp &= ~ER_IRQ_INTERVAL_MASK;
|
||||||
|
@ -1487,7 +1487,7 @@ Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
|
||||||
writel(temp, &xhci->ir_set->irq_control);
|
writel(temp, &xhci->ir_set->irq_control);
|
||||||
|
|
||||||
/* Set the HCD state before we enable the irqs */
|
/* 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);
|
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",
|
xhci_dbg(xhci, "drop ep 0x%x, slot id %d, new drop flags = %#x, new add flags = %#x\n",
|
||||||
(unsigned int) ep->desc.bEndpointAddress,
|
(unsigned int) ep->desc.bEndpointAddress,
|
||||||
udev->slot_id,
|
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;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1515,7 +1515,7 @@ Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
|
||||||
|
|
||||||
--- a/drivers/usb/host/xhci.h
|
--- a/drivers/usb/host/xhci.h
|
||||||
+++ b/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 */
|
/* For controllers with a broken beyond repair streams implementation */
|
||||||
#define XHCI_BROKEN_STREAMS (1 << 19)
|
#define XHCI_BROKEN_STREAMS (1 << 19)
|
||||||
#define XHCI_PME_STUCK_QUIRK (1 << 20)
|
#define XHCI_PME_STUCK_QUIRK (1 << 20)
|
||||||
|
|
|
@ -17,7 +17,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||||
|
|
||||||
--- a/arch/powerpc/boot/Makefile
|
--- a/arch/powerpc/boot/Makefile
|
||||||
+++ b/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_POWERNV) += pseries-head.S
|
||||||
src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
|
src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
|
||||||
src-plat-$(CONFIG_PPC_CELL_QPACE) += 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-wlib := $(sort $(src-wlib-y))
|
||||||
src-plat := $(sort $(src-plat-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_TQM8560) += cuImage.tqm8560
|
||||||
image-$(CONFIG_SBC8548) += cuImage.sbc8548
|
image-$(CONFIG_SBC8548) += cuImage.sbc8548
|
||||||
image-$(CONFIG_KSI8560) += cuImage.ksi8560
|
image-$(CONFIG_KSI8560) += cuImage.ksi8560
|
||||||
|
|
|
@ -180,6 +180,6 @@ Signed-off-by: Adrian Panella <ianchi74@outlook.com>
|
||||||
+ }
|
+ }
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
|
/* parameters may set static keys */
|
||||||
|
jump_label_init();
|
||||||
parse_early_param();
|
parse_early_param();
|
||||||
after_dashes = parse_args("Booting kernel",
|
|
||||||
static_command_line, __start___param,
|
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
/* initialize internal qc */
|
/* initialize internal qc */
|
||||||
|
|
||||||
/* XXX: Tag 0 is used for drivers with legacy EH as some
|
/* 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))
|
if (unlikely(ap->pflags & ATA_PFLAG_FROZEN))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
/* libsas case */
|
/* libsas case */
|
||||||
if (ap->flags & ATA_FLAG_SAS_HOST) {
|
if (ap->flags & ATA_FLAG_SAS_HOST) {
|
||||||
tag = ata_sas_allocate_tag(ap);
|
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;
|
qc->tag = ATA_TAG_POISON;
|
||||||
if (ap->flags & ATA_FLAG_SAS_HOST)
|
if (ap->flags & ATA_FLAG_SAS_HOST)
|
||||||
ata_sas_free_tag(tag, ap);
|
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
|
--- a/drivers/media/usb/uvc/uvc_driver.c
|
||||||
+++ b/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,
|
.bInterfaceSubClass = 1,
|
||||||
.bInterfaceProtocol = 0,
|
.bInterfaceProtocol = 0,
|
||||||
.driver_info = UVC_QUIRK_FORCE_Y8 },
|
.driver_info = UVC_QUIRK_FORCE_Y8 },
|
||||||
|
@ -64,7 +64,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
|
|
||||||
#include <media/v4l2-common.h>
|
#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. */
|
/* Mark the buffer as done if the EOF marker is set. */
|
||||||
if (data[1] & UVC_STREAM_EOF && buf->bytesused != 0) {
|
if (data[1] & UVC_STREAM_EOF && buf->bytesused != 0) {
|
||||||
uvc_trace(UVC_TRACE_FRAME, "Frame complete (EOF found).\n");
|
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)
|
if (npackets == 0)
|
||||||
return -ENOMEM;
|
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
|
* 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;
|
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 */
|
/* Queueing functions don't count the current TRB into transferred */
|
||||||
return (total_packet_count - ((transferred + trb_buff_len) / maxp));
|
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;
|
field |= 0x1;
|
||||||
|
|
||||||
/* xHCI 1.0/1.1 6.4.1.2.1: Transfer Type field */
|
/* 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);
|
field |= TRB_TX_TYPE(TRB_DATA_IN);
|
||||||
--- a/drivers/usb/host/xhci.c
|
--- a/drivers/usb/host/xhci.c
|
||||||
+++ b/drivers/usb/host/xhci.c
|
+++ b/drivers/usb/host/xhci.c
|
||||||
@@ -31,6 +31,7 @@
|
@@ -32,6 +32,7 @@
|
||||||
|
|
||||||
#include "xhci.h"
|
#include "xhci.h"
|
||||||
#include "xhci-trace.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_AUTHOR "Sarah Sharp"
|
||||||
#define DRIVER_DESC "'eXtensible' Host Controller (xHC) Driver"
|
#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");
|
"// Set the interrupt modulation register");
|
||||||
temp = readl(&xhci->ir_set->irq_control);
|
temp = readl(&xhci->ir_set->irq_control);
|
||||||
temp &= ~ER_IRQ_INTERVAL_MASK;
|
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);
|
writel(temp, &xhci->ir_set->irq_control);
|
||||||
|
|
||||||
/* Set the HCD state before we enable the irqs */
|
/* 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);
|
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",
|
xhci_dbg(xhci, "drop ep 0x%x, slot id %d, new drop flags = %#x, new add flags = %#x\n",
|
||||||
(unsigned int) ep->desc.bEndpointAddress,
|
(unsigned int) ep->desc.bEndpointAddress,
|
||||||
udev->slot_id,
|
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;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1507,7 +1507,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
|
||||||
--- a/drivers/usb/host/xhci.h
|
--- a/drivers/usb/host/xhci.h
|
||||||
+++ b/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 */
|
/* For controllers with a broken beyond repair streams implementation */
|
||||||
#define XHCI_BROKEN_STREAMS (1 << 19)
|
#define XHCI_BROKEN_STREAMS (1 << 19)
|
||||||
#define XHCI_PME_STUCK_QUIRK (1 << 20)
|
#define XHCI_PME_STUCK_QUIRK (1 << 20)
|
||||||
|
|
Loading…
Reference in New Issue