Compile and runtime tested on lantiq/xrx200 + ar71xx/generic.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
LINUX_RELEASE?=1
-LINUX_VERSION-4.9 = .234
+LINUX_VERSION-4.9 = .237
LINUX_VERSION-4.14 = .199
-LINUX_KERNEL_HASH-4.9.234 = 756f8544d261e8117716c911261690e4fb5491e14c1f4612c83e0986453782e3
+LINUX_KERNEL_HASH-4.9.237 = 81ec5792c0ccdc244faff9dbb3d9c97857d9df4cb1f0c1c3db6bc4031faf861f
LINUX_KERNEL_HASH-4.14.199 = 02f3432a262b3804745501f8c3c51d735133af48a39909df8b031d0b9653d4f9
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
config ATH25
bool "Atheros AR231x/AR531x SoC support"
-@@ -1007,6 +1007,7 @@ config MIPS_PARAVIRT
+@@ -1008,6 +1008,7 @@ config MIPS_PARAVIRT
endchoice
source "arch/mips/alchemy/Kconfig"
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
-@@ -252,6 +252,37 @@ int ehci_reset(struct ehci_hcd *ehci)
+@@ -253,6 +253,37 @@ int ehci_reset(struct ehci_hcd *ehci)
command |= CMD_RESET;
dbg_cmd (ehci, "reset", command);
ehci_writel(ehci, command, &ehci->regs->command);
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
-@@ -1152,6 +1152,9 @@ config MIPS_MSC
+@@ -1153,6 +1153,9 @@ config MIPS_MSC
config MIPS_NILE4
bool
msleep(100); /* Cool down */
--- a/drivers/usb/core/message.c
+++ b/drivers/usb/core/message.c
-@@ -1931,6 +1931,85 @@ free_interfaces:
+@@ -1924,6 +1924,85 @@ free_interfaces:
if (cp->string == NULL &&
!(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS))
cp->string = usb_cache_string(dev, cp->desc.iConfiguration);
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
-@@ -2515,7 +2515,12 @@ static int pl011_setup_port(struct devic
+@@ -2514,7 +2514,12 @@ static int pl011_setup_port(struct devic
if (IS_ERR(base))
return PTR_ERR(base);
/* Clear pending error and receive interrupts */
pl011_write(UART011_OEIS | UART011_BEIS | UART011_PEIS |
-@@ -2319,7 +2336,7 @@ static int __init pl011_console_setup(st
+@@ -2318,7 +2335,7 @@ static int pl011_console_setup(struct co
plat->init();
}
if (uap->vendor->fixed_options) {
baud = uap->fixed_baud;
-@@ -2446,6 +2463,7 @@ static struct uart_driver amba_reg = {
+@@ -2445,6 +2462,7 @@ static struct uart_driver amba_reg = {
.cons = AMBA_CONSOLE,
};
static int pl011_probe_dt_alias(int index, struct device *dev)
{
struct device_node *np;
-@@ -2477,6 +2495,7 @@ static int pl011_probe_dt_alias(int inde
+@@ -2476,6 +2494,7 @@ static int pl011_probe_dt_alias(int inde
return ret;
}
if (!cpu_has_ic_fills_f_dc) {
if (dc_lsize)
vaddr ? flush_dcache_line(addr & ~(dc_lsize - 1))
-@@ -1845,6 +1859,17 @@ static void coherency_setup(void)
+@@ -1849,6 +1863,17 @@ static void coherency_setup(void)
* silly idea of putting something else there ...
*/
switch (current_cpu_type()) {
case CPU_R4000PC:
case CPU_R4000SC:
case CPU_R4000MC:
-@@ -1891,6 +1916,15 @@ void r4k_cache_init(void)
+@@ -1895,6 +1920,15 @@ void r4k_cache_init(void)
extern void build_copy_page(void);
struct cpuinfo_mips *c = ¤t_cpu_data;
probe_pcache();
probe_vcache();
setup_scache();
-@@ -1968,7 +2002,15 @@ void r4k_cache_init(void)
+@@ -1972,7 +2006,15 @@ void r4k_cache_init(void)
*/
local_r4k___flush_cache_all(NULL);
---
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
-@@ -204,7 +204,11 @@ static inline void ide_std_init_ports(st
+@@ -203,7 +203,11 @@ static inline void ide_std_init_ports(st
hw->io_ports.ctl_addr = ctl_addr;
}
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
-@@ -678,6 +678,10 @@ int ehci_setup(struct usb_hcd *hcd)
+@@ -679,6 +679,10 @@ int ehci_setup(struct usb_hcd *hcd)
/* cache this readonly data; minimize chip reads */
ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params);
return received;
--- a/drivers/net/ethernet/freescale/gianfar.c
+++ b/drivers/net/ethernet/freescale/gianfar.c
-@@ -3201,7 +3201,7 @@ static int gfar_poll_rx_sq(struct napi_s
+@@ -3203,7 +3203,7 @@ static int gfar_poll_rx_sq(struct napi_s
if (work_done < budget) {
u32 imask;
/* Clear the halt bit in RSTAT */
gfar_write(®s->rstat, gfargrp->rstat);
-@@ -3290,7 +3290,7 @@ static int gfar_poll_rx(struct napi_stru
+@@ -3292,7 +3292,7 @@ static int gfar_poll_rx(struct napi_stru
if (!num_act_queues) {
u32 imask;
--- a/net/ipv6/ip6_tunnel.c
+++ b/net/ipv6/ip6_tunnel.c
-@@ -958,7 +958,7 @@ static void init_tel_txopt(struct ipv6_t
+@@ -966,7 +966,7 @@ static void init_tel_txopt(struct ipv6_t
opt->dst_opt[5] = IPV6_TLV_PADN;
opt->dst_opt[6] = 1;
opt->ops.opt_nflen = 8;
}
-@@ -1200,7 +1200,7 @@ route_lookup:
+@@ -1208,7 +1208,7 @@ route_lookup:
if (encap_limit >= 0) {
init_tel_txopt(&opt, encap_limit);
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
-@@ -1158,6 +1158,10 @@ config SYNC_R4K
+@@ -1159,6 +1159,10 @@ config SYNC_R4K
config MIPS_MACHINE
def_bool n
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
-@@ -651,7 +651,7 @@ static int ehci_run (struct usb_hcd *hcd
+@@ -652,7 +652,7 @@ static int ehci_run (struct usb_hcd *hcd
"USB %x.%x started, EHCI %x.%02x%s\n",
((ehci->sbrn & 0xf0)>>4), (ehci->sbrn & 0x0f),
temp >> 8, temp & 0xff,
&ehci->regs->intr_enable); /* Turn On Interrupts */
--- a/drivers/usb/host/ehci-hub.c
+++ b/drivers/usb/host/ehci-hub.c
-@@ -638,7 +638,7 @@ ehci_hub_status_data (struct usb_hcd *hc
+@@ -637,7 +637,7 @@ ehci_hub_status_data (struct usb_hcd *hc
* always set, seem to clear PORT_OCC and PORT_CSC when writing to
* PORT_POWER; that's surprising, but maybe within-spec.
*/
mask = PORT_CSC | PORT_PEC | PORT_OCC;
else
mask = PORT_CSC | PORT_PEC;
-@@ -1008,7 +1008,7 @@ int ehci_hub_control(
+@@ -1007,7 +1007,7 @@ int ehci_hub_control(
if (temp & PORT_PEC)
status |= USB_PORT_STAT_C_ENABLE << 16;
---
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
-@@ -1067,9 +1067,6 @@ config FW_ARC
+@@ -1068,9 +1068,6 @@ config FW_ARC
config ARCH_MAY_HAVE_PC_FDC
bool
config CEVT_BCM1480
bool
-@@ -2966,6 +2963,18 @@ choice
+@@ -2967,6 +2964,18 @@ choice
bool "Extend builtin kernel arguments with bootloader arguments"
endchoice
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
-@@ -2890,6 +2890,20 @@ config MIPS_O32_FP64_SUPPORT
+@@ -2891,6 +2891,20 @@ config MIPS_O32_FP64_SUPPORT
If unsure, say N.
select HAVE_PCSPKR_PLATFORM
select IRQ_MIPS_CPU
select I8253
-@@ -1128,6 +1130,9 @@ config DMA_NONCOHERENT
+@@ -1129,6 +1131,9 @@ config DMA_NONCOHERENT
bool
select NEED_DMA_MAP_STATE
config NEED_DMA_MAP_STATE
bool
-@@ -1652,6 +1657,7 @@ config CPU_R10000
+@@ -1653,6 +1658,7 @@ config CPU_R10000
select CPU_SUPPORTS_64BIT_KERNEL
select CPU_SUPPORTS_HIGHMEM
select CPU_SUPPORTS_HUGEPAGES
help
MIPS Technologies R10000-series processors.
-@@ -1897,9 +1903,11 @@ config SYS_HAS_CPU_MIPS32_R3_5
+@@ -1898,9 +1904,11 @@ config SYS_HAS_CPU_MIPS32_R3_5
bool
config SYS_HAS_CPU_MIPS32_R5
bool
config SYS_HAS_CPU_MIPS64_R1
-@@ -1909,6 +1917,7 @@ config SYS_HAS_CPU_MIPS64_R2
+@@ -1910,6 +1918,7 @@ config SYS_HAS_CPU_MIPS64_R2
bool
config SYS_HAS_CPU_MIPS64_R6
__skb_tunnel_rx(skb, tunnel->dev, tunnel->net);
err = dscp_ecn_decapsulate(tunnel, ipv6h, skb);
-@@ -962,6 +1101,7 @@ static void init_tel_txopt(struct ipv6_t
+@@ -970,6 +1109,7 @@ static void init_tel_txopt(struct ipv6_t
opt->ops.opt_nflen = 8;
}
/**
* ip6_tnl_addr_conflict - compare packet addresses to tunnel's own
* @t: the outgoing tunnel device
-@@ -1300,6 +1440,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1308,6 +1448,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
{
struct ip6_tnl *t = netdev_priv(dev);
struct ipv6hdr *ipv6h;
int encap_limit = -1;
__u16 offset;
struct flowi6 fl6;
-@@ -1364,6 +1505,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1372,6 +1513,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
dsfield = INET_ECN_encapsulate(dsfield, ipv6_get_dsfield(ipv6h));
if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
return -1;
-@@ -1489,6 +1642,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
+@@ -1497,6 +1650,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
t->parms.flowinfo = p->flowinfo;
t->parms.link = p->link;
t->parms.proto = p->proto;
dst_cache_reset(&t->dst_cache);
ip6_tnl_link_config(t);
return 0;
-@@ -1527,6 +1688,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
+@@ -1535,6 +1696,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
p->flowinfo = u->flowinfo;
p->link = u->link;
p->proto = u->proto;
memcpy(p->name, u->name, sizeof(u->name));
}
-@@ -1902,6 +2064,15 @@ static int ip6_tnl_validate(struct nlatt
+@@ -1910,6 +2072,15 @@ static int ip6_tnl_validate(struct nlatt
return 0;
}
static void ip6_tnl_netlink_parms(struct nlattr *data[],
struct __ip6_tnl_parm *parms)
{
-@@ -1936,6 +2107,46 @@ static void ip6_tnl_netlink_parms(struct
+@@ -1944,6 +2115,46 @@ static void ip6_tnl_netlink_parms(struct
if (data[IFLA_IPTUN_COLLECT_METADATA])
parms->collect_md = true;
}
static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
-@@ -2049,6 +2260,12 @@ static void ip6_tnl_dellink(struct net_d
+@@ -2057,6 +2268,12 @@ static void ip6_tnl_dellink(struct net_d
static size_t ip6_tnl_get_size(const struct net_device *dev)
{
return
/* IFLA_IPTUN_LINK */
nla_total_size(4) +
-@@ -2076,6 +2293,24 @@ static size_t ip6_tnl_get_size(const str
+@@ -2084,6 +2301,24 @@ static size_t ip6_tnl_get_size(const str
nla_total_size(2) +
/* IFLA_IPTUN_COLLECT_METADATA */
nla_total_size(0) +
0;
}
-@@ -2083,6 +2318,9 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2091,6 +2326,9 @@ static int ip6_tnl_fill_info(struct sk_b
{
struct ip6_tnl *tunnel = netdev_priv(dev);
struct __ip6_tnl_parm *parm = &tunnel->parms;
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
-@@ -2091,9 +2329,27 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2099,9 +2337,27 @@ static int ip6_tnl_fill_info(struct sk_b
nla_put_u8(skb, IFLA_IPTUN_ENCAP_LIMIT, parm->encap_limit) ||
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
-@@ -2131,6 +2387,7 @@ static const struct nla_policy ip6_tnl_p
+@@ -2139,6 +2395,7 @@ static const struct nla_policy ip6_tnl_p
[IFLA_IPTUN_ENCAP_SPORT] = { .type = NLA_U16 },
[IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
[IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG },
if (!(skb->dev->features & NETIF_F_GRO))
goto normal;
-@@ -5863,6 +5866,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -5864,6 +5867,48 @@ static void __netdev_adjacent_dev_unlink
&upper_dev->adj_list.lower);
}
static int __netdev_upper_dev_link(struct net_device *dev,
struct net_device *upper_dev, bool master,
void *upper_priv, void *upper_info)
-@@ -5935,6 +5980,7 @@ static int __netdev_upper_dev_link(struc
+@@ -5936,6 +5981,7 @@ static int __netdev_upper_dev_link(struc
goto rollback_lower_mesh;
}
ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
&changeupper_info.info);
ret = notifier_to_errno(ret);
-@@ -6061,6 +6107,7 @@ void netdev_upper_dev_unlink(struct net_
+@@ -6062,6 +6108,7 @@ void netdev_upper_dev_unlink(struct net_
list_for_each_entry(i, &upper_dev->all_adj_list.upper, list)
__netdev_adjacent_dev_unlink(dev, i->dev, i->ref_nr);
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
&changeupper_info.info);
}
-@@ -6664,6 +6711,7 @@ int dev_set_mac_address(struct net_devic
+@@ -6665,6 +6712,7 @@ int dev_set_mac_address(struct net_devic
if (err)
return err;
dev->addr_assign_type = NET_ADDR_SET;
/**
* ata_build_rw_tf - Build ATA taskfile for given read/write request
* @tf: Target ATA taskfile
-@@ -4997,6 +5010,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
+@@ -4996,6 +5009,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
if (tag < 0)
return NULL;
}
qc = __ata_qc_from_tag(ap, tag);
qc->tag = tag;
-@@ -5898,6 +5914,9 @@ struct ata_port *ata_port_alloc(struct a
+@@ -5897,6 +5913,9 @@ struct ata_port *ata_port_alloc(struct a
ap->stats.unhandled_irq = 1;
ap->stats.idle_irq = 1;
#endif
ata_sff_port_init(ap);
return ap;
-@@ -5919,6 +5938,12 @@ static void ata_host_release(struct devi
+@@ -5918,6 +5937,12 @@ static void ata_host_release(struct devi
kfree(ap->pmp_link);
kfree(ap->slave_link);
kfree(ap);
host->ports[i] = NULL;
}
-@@ -6365,7 +6390,23 @@ int ata_host_register(struct ata_host *h
+@@ -6364,7 +6389,23 @@ int ata_host_register(struct ata_host *h
host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
host->ports[i]->local_port_no = i + 1;
}
/*
* Define if arch has non-standard setup. This is a _PCI_ standard
-@@ -887,6 +890,12 @@ struct ata_port {
+@@ -888,6 +891,12 @@ struct ata_port {
#ifdef CONFIG_ATA_ACPI
struct ata_acpi_gtm __acpi_init_gtm; /* use ata_acpi_init_gtm() */
#endif
case UPIO_AU:
p->serial_out(p, offset, value);
p->serial_in(p, UART_LCR); /* safe, no side-effects */
-@@ -2763,6 +2783,7 @@ static int serial8250_request_std_resour
+@@ -2766,6 +2786,7 @@ static int serial8250_request_std_resour
case UPIO_MEM32BE:
case UPIO_MEM16:
case UPIO_MEM:
if (!port->mapbase)
break;
-@@ -2801,6 +2822,7 @@ static void serial8250_release_std_resou
+@@ -2804,6 +2825,7 @@ static void serial8250_release_std_resou
case UPIO_MEM32BE:
case UPIO_MEM16:
case UPIO_MEM:
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
-@@ -2323,6 +2323,12 @@ config MIPS_VPE_LOADER
+@@ -2324,6 +2324,12 @@ config MIPS_VPE_LOADER
Includes a loader for loading an elf relocatable object
onto another VPE and running it.
* These are the defined Ethernet Protocol ID's.
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -6656,9 +6656,18 @@ int dev_set_mtu(struct net_device *dev,
+@@ -6657,9 +6657,18 @@ int dev_set_mtu(struct net_device *dev,
if (new_mtu == dev->mtu)
return 0;
#endif /* _EHCI_FSL_H */
--- a/drivers/usb/host/ehci-hub.c
+++ b/drivers/usb/host/ehci-hub.c
-@@ -278,6 +278,8 @@ static int ehci_bus_suspend (struct usb_
+@@ -277,6 +277,8 @@ static int ehci_bus_suspend (struct usb_
else if ((t1 & PORT_PE) && !(t1 & PORT_SUSPEND)) {
t2 |= PORT_SUSPEND;
set_bit(port, &ehci->bus_suspended);
}
/* enable remote wakeup on all ports, if told to do so */
-@@ -305,6 +307,8 @@ static int ehci_bus_suspend (struct usb_
+@@ -304,6 +306,8 @@ static int ehci_bus_suspend (struct usb_
USB_PORT_STAT_HIGH_SPEED)
fs_idle_delay = true;
ehci_writel(ehci, t2, reg);
#define BCSR5_INT_USB (0x02)
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
-@@ -360,6 +360,7 @@ struct usb_bus {
+@@ -395,6 +395,7 @@ struct usb_bus {
* for control transfers?
*/
u8 otg_port; /* 0, or number of OTG/HNP port */
#define DRIVER_VERSION "0.2"
#define DRIVER_AUTHOR "Alex Williamson <alex.williamson@redhat.com>"
-@@ -733,6 +735,27 @@ static void vfio_test_domain_fgsp(struct
+@@ -763,6 +765,27 @@ static void vfio_test_domain_fgsp(struct
__free_pages(pages, order);
}
static int vfio_iommu_type1_attach_group(void *iommu_data,
struct iommu_group *iommu_group)
{
-@@ -741,6 +764,8 @@ static int vfio_iommu_type1_attach_group
+@@ -771,6 +794,8 @@ static int vfio_iommu_type1_attach_group
struct vfio_domain *domain, *d;
struct bus_type *bus = NULL;
int ret;
mutex_lock(&iommu->lock);
-@@ -787,11 +812,15 @@ static int vfio_iommu_type1_attach_group
+@@ -817,11 +842,15 @@ static int vfio_iommu_type1_attach_group
if (ret)
goto out_domain;
pr_warn("%s: No interrupt remapping support. Use the module param \"allow_unsafe_interrupts\" to enable VFIO IOMMU support on this platform\n",
__func__);
ret = -EPERM;
-@@ -833,6 +862,12 @@ static int vfio_iommu_type1_attach_group
+@@ -863,6 +892,12 @@ static int vfio_iommu_type1_attach_group
if (ret)
goto out_detach;