Bump kernel to 4.4.44. Compile-tested on ar71xx, ramips/mt7621 and x86/64.
.44 has been run-tested on the 17.01 branch here on ar71xx and mt7621.
Signed-off-by: Stijn Segers <francesco.borromini@inventati.org>
LINUX_RELEASE?=1
LINUX_VERSION-3.18 = .43
-LINUX_VERSION-4.4 = .42
+LINUX_VERSION-4.4 = .44
LINUX_KERNEL_HASH-3.18.43 = 1236e8123a6ce537d5029232560966feed054ae31776fe8481dd7d18cdd5492c
-LINUX_KERNEL_HASH-4.4.42 = 324747568e92f203e3ee5ec8b291a868f58b870f1ad214fa64aa3507ed42e878
+LINUX_KERNEL_HASH-4.4.44 = fabdcf2703f22a5b8aa3a3407909f18fdeea610c3d0f418fdc29123ed04de748
ifdef KERNEL_PATCHVER
LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
memcpy(p, foc->val, foc->len);
--- a/net/ipv4/igmp.c
+++ b/net/ipv4/igmp.c
-@@ -500,7 +500,7 @@ static struct sk_buff *add_grec(struct s
+@@ -505,7 +505,7 @@ static struct sk_buff *add_grec(struct s
if (!skb)
return NULL;
psrc = (__be32 *)skb_put(skb, sizeof(__be32));
goto next_ht;
--- a/net/ipv6/ip6_offload.c
+++ b/net/ipv6/ip6_offload.c
-@@ -221,7 +221,7 @@ static struct sk_buff **ipv6_gro_receive
+@@ -222,7 +222,7 @@ static struct sk_buff **ipv6_gro_receive
continue;
iph2 = (struct ipv6hdr *)(p->data + off);
-Index: linux-4.4.4/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
-===================================================================
---- linux-4.4.4.orig/arch/mips/include/asm/mach-ath79/ar71xx_regs.h 2016-03-31 21:43:10.595132564 +0300
-+++ linux-4.4.4/arch/mips/include/asm/mach-ath79/ar71xx_regs.h 2016-03-31 21:56:21.463152017 +0300
-@@ -641,6 +641,7 @@
+--- a/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
++++ b/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
+@@ -644,6 +644,7 @@
#define AR933X_BOOTSTRAP_MDIO_GPIO_EN BIT(18)
#define AR933X_BOOTSTRAP_EEPBUSY BIT(4)
#define AR933X_BOOTSTRAP_REF_CLK_40 BIT(0)
#define AR934X_BOOTSTRAP_SW_OPTION8 BIT(23)
-@@ -670,6 +671,8 @@
+@@ -673,6 +674,8 @@
#define QCA956X_BOOTSTRAP_REF_CLK_40 BIT(2)
#define AR934X_PCIE_WMAC_INT_WMAC_MISC BIT(0)
#define AR934X_PCIE_WMAC_INT_WMAC_TX BIT(1)
#define AR934X_PCIE_WMAC_INT_WMAC_RXLP BIT(2)
-Index: linux-4.4.4/arch/mips/ath79/dev-usb.c
-===================================================================
---- linux-4.4.4.orig/arch/mips/ath79/dev-usb.c 2016-03-31 21:43:10.407132560 +0300
-+++ linux-4.4.4/arch/mips/ath79/dev-usb.c 2016-03-31 21:43:10.707132567 +0300
+--- a/arch/mips/ath79/dev-usb.c
++++ b/arch/mips/ath79/dev-usb.c
@@ -19,6 +19,9 @@
#include <linux/platform_device.h>
#include <linux/usb/ehci_pdriver.h>
#include <asm/mach-ath79/ath79.h>
#include <asm/mach-ath79/ar71xx_regs.h>
-@@ -170,6 +173,54 @@
+@@ -170,6 +173,54 @@ static void __init ar913x_usb_setup(void
&ath79_ehci_pdata_v2, sizeof(ath79_ehci_pdata_v2));
}
static void __init ar933x_usb_setup(void)
{
ath79_device_reset_set(AR933X_RESET_USBSUS_OVERRIDE);
-@@ -185,6 +236,8 @@
+@@ -185,6 +236,8 @@ static void __init ar933x_usb_setup(void
AR933X_EHCI_BASE, AR933X_EHCI_SIZE,
ATH79_CPU_IRQ(3),
&ath79_ehci_pdata_v2, sizeof(ath79_ehci_pdata_v2));
-Index: linux-4.4.4/drivers/usb/chipidea/ci.h
-===================================================================
---- linux-4.4.4.orig/drivers/usb/chipidea/ci.h 2016-03-31 21:39:23.571126980 +0300
-+++ linux-4.4.4/drivers/usb/chipidea/ci.h 2016-03-31 21:39:23.567126980 +0300
-@@ -199,6 +199,7 @@
+--- a/drivers/usb/chipidea/ci.h
++++ b/drivers/usb/chipidea/ci.h
+@@ -199,6 +199,7 @@ struct hw_bank {
* @in_lpm: if the core in low power mode
* @wakeup_int: if wakeup interrupt occur
* @rev: The revision number for controller
*/
struct ci_hdrc {
struct device *dev;
-@@ -248,6 +249,7 @@
+@@ -248,6 +249,7 @@ struct ci_hdrc {
bool in_lpm;
bool wakeup_int;
enum ci_revision rev;
};
static inline struct ci_role_driver *ci_role(struct ci_hdrc *ci)
-Index: linux-4.4.4/drivers/usb/chipidea/core.c
-===================================================================
---- linux-4.4.4.orig/drivers/usb/chipidea/core.c 2016-03-31 21:39:23.571126980 +0300
-+++ linux-4.4.4/drivers/usb/chipidea/core.c 2016-03-31 21:41:33.159130168 +0300
-@@ -883,7 +883,7 @@
+--- a/drivers/usb/chipidea/core.c
++++ b/drivers/usb/chipidea/core.c
+@@ -883,7 +883,7 @@ static inline void ci_role_destroy(struc
{
ci_hdrc_gadget_destroy(ci);
ci_hdrc_host_destroy(ci);
ci_hdrc_otg_destroy(ci);
}
-@@ -933,6 +933,9 @@
+@@ -934,6 +934,9 @@ static int ci_hdrc_probe(struct platform
ci->supports_runtime_pm = !!(ci->platdata->flags &
CI_HDRC_SUPPORTS_RUNTIME_PM);
ret = hw_device_init(ci, base);
if (ret < 0) {
dev_err(dev, "can't initialize hardware\n");
-@@ -998,7 +1001,7 @@
+@@ -999,7 +1002,7 @@ static int ci_hdrc_probe(struct platform
goto deinit_phy;
}
ret = ci_hdrc_otg_init(ci);
if (ret) {
dev_err(dev, "init otg fails, ret = %d\n", ret);
-Index: linux-4.4.4/drivers/usb/chipidea/otg.c
-===================================================================
---- linux-4.4.4.orig/drivers/usb/chipidea/otg.c 2016-03-31 21:39:23.571126980 +0300
-+++ linux-4.4.4/drivers/usb/chipidea/otg.c 2016-03-31 21:39:23.567126980 +0300
-@@ -95,8 +95,10 @@
+--- a/drivers/usb/chipidea/otg.c
++++ b/drivers/usb/chipidea/otg.c
+@@ -95,8 +95,10 @@ enum ci_role ci_otg_role(struct ci_hdrc
void ci_handle_vbus_change(struct ci_hdrc *ci)
{
if (hw_read_otgsc(ci, OTGSC_BSV))
usb_gadget_vbus_connect(&ci->gadget);
-Index: linux-4.4.4/include/linux/usb/chipidea.h
-===================================================================
---- linux-4.4.4.orig/include/linux/usb/chipidea.h 2016-03-31 21:39:23.571126980 +0300
-+++ linux-4.4.4/include/linux/usb/chipidea.h 2016-03-31 21:39:23.567126980 +0300
-@@ -55,6 +55,7 @@
+--- a/include/linux/usb/chipidea.h
++++ b/include/linux/usb/chipidea.h
+@@ -55,6 +55,7 @@ struct ci_hdrc_platform_data {
#define CI_HDRC_OVERRIDE_AHB_BURST BIT(9)
#define CI_HDRC_OVERRIDE_TX_BURST BIT(10)
#define CI_HDRC_OVERRIDE_RX_BURST BIT(11)
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
-@@ -6782,8 +6782,6 @@ int alloc_contig_range(unsigned long sta
+@@ -6785,8 +6785,6 @@ int alloc_contig_range(unsigned long sta
/* Make sure the range is really isolated. */
if (test_pages_isolated(outer_start, end, false)) {
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -4222,6 +4222,9 @@ static enum gro_result dev_gro_receive(s
+@@ -4224,6 +4224,9 @@ static enum gro_result dev_gro_receive(s
enum gro_result ret;
int grow;
if (!(skb->dev->features & NETIF_F_GRO))
goto normal;
-@@ -5381,6 +5384,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -5383,6 +5386,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 *private)
-@@ -5452,6 +5497,7 @@ static int __netdev_upper_dev_link(struc
+@@ -5454,6 +5499,7 @@ static int __netdev_upper_dev_link(struc
goto rollback_lower_mesh;
}
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
&changeupper_info.info);
return 0;
-@@ -5578,6 +5624,7 @@ void netdev_upper_dev_unlink(struct net_
+@@ -5580,6 +5626,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);
}
-@@ -6118,6 +6165,7 @@ int dev_set_mac_address(struct net_devic
+@@ -6120,6 +6167,7 @@ int dev_set_mac_address(struct net_devic
if (err)
return err;
dev->addr_assign_type = NET_ADDR_SET;
drivers/tty/serial/imx.c | 23 +++++++++++++++++------
1 file changed, 17 insertions(+), 6 deletions(-)
-diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
-index 76818f5..086675e 100644
--- a/drivers/tty/serial/imx.c
+++ b/drivers/tty/serial/imx.c
@@ -148,8 +148,11 @@
#define USR2_RTSF (1<<4) /* RTS edge interrupt flag */
#define USR2_TXDC (1<<3) /* Transmitter complete */
#define USR2_BRCD (1<<2) /* Break condition */
-@@ -804,16 +807,19 @@ static unsigned int imx_tx_empty(struct uart_port *port)
+@@ -804,16 +807,19 @@ static unsigned int imx_tx_empty(struct
static unsigned int imx_get_mctrl(struct uart_port *port)
{
struct imx_port *sport = (struct imx_port *)port;
- if (readl(sport->port.membase + UCR2) & UCR2_CTS)
- tmp |= TIOCM_RTS;
+-
+- if (readl(sport->port.membase + uts_reg(sport)) & UTS_LOOP)
+- tmp |= TIOCM_LOOP;
+ /* in DCE mode DCDIN is always 0 */
+ if (!(usr1 & USR2_DCDIN))
+ tmp |= TIOCM_CAR;
-
-- if (readl(sport->port.membase + uts_reg(sport)) & UTS_LOOP)
-- tmp |= TIOCM_LOOP;
++
+ /* in DCE mode RIIN is always 0 */
+ if (readl(sport->port.membase + USR2) & USR2_RIIN)
+ tmp |= TIOCM_RI;
return tmp;
}
-@@ -831,6 +837,11 @@ static void imx_set_mctrl(struct uart_port *port, unsigned int mctrl)
+@@ -831,6 +837,11 @@ static void imx_set_mctrl(struct uart_po
writel(temp, sport->port.membase + UCR2);
}
temp = readl(sport->port.membase + uts_reg(sport)) & ~UTS_LOOP;
if (mctrl & TIOCM_LOOP)
temp |= UTS_LOOP;
---
-1.9.1
-
drivers/tty/serial/imx.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
-diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
-index 231e7d5..bfc4555 100644
--- a/drivers/tty/serial/imx.c
+++ b/drivers/tty/serial/imx.c
-@@ -797,9 +797,9 @@ static unsigned int imx_get_hwmctrl(struct imx_port *sport)
+@@ -817,9 +817,9 @@ static unsigned int imx_get_mctrl(struct
if (!(usr1 & USR2_DCDIN))
tmp |= TIOCM_CAR;
return tmp;
}
---
-1.9.1
-
drivers/tty/serial/imx.c | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
-diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
-index bfc4555..5ced61e 100644
--- a/drivers/tty/serial/imx.c
+++ b/drivers/tty/serial/imx.c
-@@ -734,6 +734,7 @@ static irqreturn_t imx_int(int irq, void *dev_id)
+@@ -753,6 +753,7 @@ static irqreturn_t imx_int(int irq, void
struct imx_port *sport = dev_id;
unsigned int sts;
unsigned int sts2;
sts = readl(sport->port.membase + USR1);
sts2 = readl(sport->port.membase + USR2);
-@@ -743,26 +744,34 @@ static irqreturn_t imx_int(int irq, void *dev_id)
+@@ -762,26 +763,34 @@ static irqreturn_t imx_int(int irq, void
imx_dma_rxint(sport);
else
imx_rxint(irq, dev_id);
}
/*
---
-1.9.1
-
drivers/tty/serial/imx.c | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
-diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
-index 5ced61e..fcd48fd 100644
--- a/drivers/tty/serial/imx.c
+++ b/drivers/tty/serial/imx.c
-@@ -1221,11 +1221,32 @@ static int imx_startup(struct uart_port *port)
+@@ -1184,11 +1184,32 @@ static int imx_startup(struct uart_port
temp |= (UCR2_RXEN | UCR2_TXEN);
if (!sport->have_rtscts)
temp |= UCR2_IRTS;
writel(temp, sport->port.membase + UCR3);
}
---
-1.9.1
-
/*
* Returns zero if the TRB isn't in this segment, otherwise it returns the DMA
-@@ -3121,17 +3122,22 @@ static u32 xhci_td_remainder(struct xhci
+@@ -3110,17 +3111,22 @@ static u32 xhci_td_remainder(struct xhci
{
u32 maxp, total_packet_count;
/* Queueing functions don't count the current TRB into transferred */
return (total_packet_count - ((transferred + trb_buff_len) / maxp));
}
-@@ -3519,7 +3525,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
+@@ -3508,7 +3514,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
field |= 0x1;
/* xHCI 1.0/1.1 6.4.1.2.1: Transfer Type field */
writel(temp, &xhci->ir_set->irq_control);
/* Set the HCD state before we enable the irqs */
-@@ -1704,6 +1709,9 @@ int xhci_drop_endpoint(struct usb_hcd *h
+@@ -1691,6 +1696,9 @@ int xhci_drop_endpoint(struct usb_hcd *h
xhci_endpoint_zero(xhci, xhci->devs[udev->slot_id], ep);
xhci_dbg(xhci, "drop ep 0x%x, slot id %d, new drop flags = %#x, new add flags = %#x\n",
(unsigned int) ep->desc.bEndpointAddress,
udev->slot_id,
-@@ -1799,6 +1807,15 @@ int xhci_add_endpoint(struct usb_hcd *hc
+@@ -1786,6 +1794,15 @@ int xhci_add_endpoint(struct usb_hcd *hc
return -ENOMEM;
}
/*
* Returns zero if the TRB isn't in this segment, otherwise it returns the DMA
-@@ -3121,17 +3122,22 @@ static u32 xhci_td_remainder(struct xhci
+@@ -3110,17 +3111,22 @@ static u32 xhci_td_remainder(struct xhci
{
u32 maxp, total_packet_count;
/* Queueing functions don't count the current TRB into transferred */
return (total_packet_count - ((transferred + trb_buff_len) / maxp));
}
-@@ -3519,7 +3525,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
+@@ -3508,7 +3514,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
field |= 0x1;
/* xHCI 1.0/1.1 6.4.1.2.1: Transfer Type field */
writel(temp, &xhci->ir_set->irq_control);
/* Set the HCD state before we enable the irqs */
-@@ -1704,6 +1709,9 @@ int xhci_drop_endpoint(struct usb_hcd *h
+@@ -1691,6 +1696,9 @@ int xhci_drop_endpoint(struct usb_hcd *h
xhci_endpoint_zero(xhci, xhci->devs[udev->slot_id], ep);
xhci_dbg(xhci, "drop ep 0x%x, slot id %d, new drop flags = %#x, new add flags = %#x\n",
(unsigned int) ep->desc.bEndpointAddress,
udev->slot_id,
-@@ -1799,6 +1807,15 @@ int xhci_add_endpoint(struct usb_hcd *hc
+@@ -1786,6 +1794,15 @@ int xhci_add_endpoint(struct usb_hcd *hc
return -ENOMEM;
}
drivers/watchdog/sp5100_tco.c | 2 ++
1 file changed, 2 insertions(+)
-diff --git a/drivers/watchdog/sp5100_tco.c b/drivers/watchdog/sp5100_tco.c
-index eb8044e..ef039f8 100644
--- a/drivers/watchdog/sp5100_tco.c
+++ b/drivers/watchdog/sp5100_tco.c
-@@ -306,6 +306,8 @@ static struct miscdevice sp5100_tco_miscdev = {
+@@ -306,6 +306,8 @@ static struct miscdevice sp5100_tco_misc
static const struct pci_device_id sp5100_tco_pci_tbl[] = {
{ PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_SBX00_SMBUS, PCI_ANY_ID,
PCI_ANY_ID, },
{ 0, }, /* End of list */
};
MODULE_DEVICE_TABLE(pci, sp5100_tco_pci_tbl);
---
-2.7.4
drivers/watchdog/sp5100_tco.c | 2 ++
1 file changed, 2 insertions(+)
-diff --git a/drivers/watchdog/sp5100_tco.c b/drivers/watchdog/sp5100_tco.c
-index ef039f8..0ccadb4 100644
--- a/drivers/watchdog/sp5100_tco.c
+++ b/drivers/watchdog/sp5100_tco.c
-@@ -308,6 +308,8 @@ static const struct pci_device_id sp5100_tco_pci_tbl[] = {
+@@ -308,6 +308,8 @@ static const struct pci_device_id sp5100
PCI_ANY_ID, },
{ PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_HUDSON2_SMBUS, PCI_ANY_ID,
PCI_ANY_ID, },
{ 0, }, /* End of list */
};
MODULE_DEVICE_TABLE(pci, sp5100_tco_pci_tbl);
---
-2.7.4
drivers/watchdog/sp5100_tco.c | 28 ++++++++++++++++------------
1 file changed, 16 insertions(+), 12 deletions(-)
-diff --git a/drivers/watchdog/sp5100_tco.c b/drivers/watchdog/sp5100_tco.c
-index 0ccadb4..6467b91 100644
--- a/drivers/watchdog/sp5100_tco.c
+++ b/drivers/watchdog/sp5100_tco.c
-@@ -335,21 +335,24 @@ static unsigned char sp5100_tco_setupdevice(void)
+@@ -335,21 +335,24 @@ static unsigned char sp5100_tco_setupdev
if (!sp5100_tco_pci)
return 0;
-
+
- pr_info("PCI Revision ID: 0x%x\n", sp5100_tco_pci->revision);
+ pr_info("PCI Vendor ID: 0x%x, Device ID: 0x%x, Revision ID: 0x%x\n",
+ sp5100_tco_pci->vendor, sp5100_tco_pci->device,
+ sp5100_tco_pci->revision);
-
+
/*
* Determine type of southbridge chipset.
*/
+ data_reg = SB800_IO_PM_DATA_REG;
+ base_addr = SB800_PM_WATCHDOG_BASE;
}
-
+
/* Request the IO ports used by this driver */
-@@ -385,7 +388,12 @@ static unsigned char sp5100_tco_setupdevice(void)
+@@ -385,7 +388,12 @@ static unsigned char sp5100_tco_setupdev
* Secondly, Find the watchdog timer MMIO address
* from SBResource_MMIO register.
*/
/* Read SBResource_MMIO from AcpiMmioEn(PM_Reg: 24h) */
outb(SB800_PM_ACPI_MMIO_EN+3, SB800_IO_PM_INDEX_REG);
val = inb(SB800_IO_PM_DATA_REG);
-@@ -395,10 +403,6 @@ static unsigned char sp5100_tco_setupdevice(void)
+@@ -395,10 +403,6 @@ static unsigned char sp5100_tco_setupdev
val = val << 8 | inb(SB800_IO_PM_DATA_REG);
outb(SB800_PM_ACPI_MMIO_EN+0, SB800_IO_PM_INDEX_REG);
val = val << 8 | inb(SB800_IO_PM_DATA_REG);
- pci_read_config_dword(sp5100_tco_pci,
- SP5100_SB_RESOURCE_MMIO_BASE, &val);
}
-
+
/* The SBResource_MMIO is enabled and mapped memory space? */
---
-2.7.4
drivers/watchdog/sp5100_tco.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
-diff --git a/drivers/watchdog/sp5100_tco.c b/drivers/watchdog/sp5100_tco.c
-index 6467b91..028618c 100644
--- a/drivers/watchdog/sp5100_tco.c
+++ b/drivers/watchdog/sp5100_tco.c
-@@ -73,6 +73,13 @@ MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started."
+@@ -73,6 +73,13 @@ MODULE_PARM_DESC(nowayout, "Watchdog can
/*
* Some TCO specific functions
*/
@@ -129,7 +136,7 @@ static void tco_timer_enable(void)
{
int val;
-
+
- if (sp5100_tco_pci->revision >= 0x40) {
+ if (!tco_has_sp5100_reg_layout(sp5100_tco_pci)) {
/* For SB800 or later */
/* Set the Watchdog timer resolution to 1 sec */
outb(SB800_PM_WATCHDOG_CONFIG, SB800_IO_PM_INDEX_REG);
-@@ -342,8 +349,7 @@ static unsigned char sp5100_tco_setupdevice(void)
+@@ -342,8 +349,7 @@ static unsigned char sp5100_tco_setupdev
/*
* Determine type of southbridge chipset.
*/
dev_name = SP5100_DEVNAME;
index_reg = SP5100_IO_PM_INDEX_REG;
data_reg = SP5100_IO_PM_DATA_REG;
-@@ -388,8 +394,7 @@ static unsigned char sp5100_tco_setupdevice(void)
+@@ -388,8 +394,7 @@ static unsigned char sp5100_tco_setupdev
* Secondly, Find the watchdog timer MMIO address
* from SBResource_MMIO register.
*/
/* Read SBResource_MMIO from PCI config(PCI_Reg: 9Ch) */
pci_read_config_dword(sp5100_tco_pci,
SP5100_SB_RESOURCE_MMIO_BASE, &val);
---
-2.7.4