diff options
author | Koen Vandeputte <koen.vandeputte@ncentric.com> | 2018-09-26 12:53:35 +0200 |
---|---|---|
committer | Koen Vandeputte <koen.vandeputte@ncentric.com> | 2018-09-26 15:54:18 +0200 |
commit | e9d92bf1e1af71ff19e4cdc753de3f65963c58a5 (patch) | |
tree | 94d32e8e9d432430ab0df146213b8fbac164949e /target/linux | |
parent | 3caf940cc6f2fbaf34ab663f7fdd14ca562dd770 (diff) | |
download | upstream-e9d92bf1e1af71ff19e4cdc753de3f65963c58a5.tar.gz upstream-e9d92bf1e1af71ff19e4cdc753de3f65963c58a5.tar.bz2 upstream-e9d92bf1e1af71ff19e4cdc753de3f65963c58a5.zip |
kernel: bump 4.14 to 4.14.72
Refreshed all patches.
Removed upstreamed:
- 203-MIPS-ath79-fix-restart.patch
- 0013-MIPS-ath79-fix-system-restart.patch
- 180-earlycon-initialize-port-uartclk-based-on-clock-frequency-property.patch
- 181-earlycon-remove-hardcoded-port-uartclk-initialization-in-of_setup_earlycon. patch
- 700-1-6-e1000e-Remove-Other-from-EIAC.patch
- 700-2-6-Partial-revert-e1000e-Avoid-receiver-overrun-interrupt-bursts.patch
- 700-3-6-e1000e-Fix-queue-interrupt-re-raising-in-Other-interrupt.patch
- 700-4-6-e1000e-Avoid-missed-interrupts-following-ICR-read.patch
Compile-tested on: cns3xxx, imx6
Runtime-tested on: cns3xxx, imx6
Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
Diffstat (limited to 'target/linux')
15 files changed, 19 insertions, 490 deletions
diff --git a/target/linux/apm821xx/patches-4.14/802-usb-xhci-force-msi-renesas-xhci.patch b/target/linux/apm821xx/patches-4.14/802-usb-xhci-force-msi-renesas-xhci.patch index 1e781b5dae..c09d1547bd 100644 --- a/target/linux/apm821xx/patches-4.14/802-usb-xhci-force-msi-renesas-xhci.patch +++ b/target/linux/apm821xx/patches-4.14/802-usb-xhci-force-msi-renesas-xhci.patch @@ -24,7 +24,7 @@ produce a noisy warning. --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c -@@ -357,10 +357,14 @@ static int xhci_try_enable_msi(struct us +@@ -372,10 +372,14 @@ static int xhci_try_enable_msi(struct us free_irq(hcd->irq, hcd); hcd->irq = 0; diff --git a/target/linux/ar71xx/patches-4.14/203-MIPS-ath79-fix-restart.patch b/target/linux/ar71xx/patches-4.14/203-MIPS-ath79-fix-restart.patch deleted file mode 100644 index 48f4d95e74..0000000000 --- a/target/linux/ar71xx/patches-4.14/203-MIPS-ath79-fix-restart.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- a/arch/mips/ath79/setup.c -+++ b/arch/mips/ath79/setup.c -@@ -40,6 +40,7 @@ static char ath79_sys_type[ATH79_SYS_TYP - - static void ath79_restart(char *command) - { -+ local_irq_disable(); - ath79_device_reset_set(AR71XX_RESET_FULL_CHIP); - for (;;) - if (cpu_wait) ---- a/arch/mips/include/asm/mach-ath79/ath79.h -+++ b/arch/mips/include/asm/mach-ath79/ath79.h -@@ -135,6 +135,7 @@ static inline u32 ath79_pll_rr(unsigned - static inline void ath79_reset_wr(unsigned reg, u32 val) - { - __raw_writel(val, ath79_reset_base + reg); -+ (void) __raw_readl(ath79_reset_base + reg); /* flush */ - } - - static inline u32 ath79_reset_rr(unsigned reg) diff --git a/target/linux/ath79/patches-4.14/0010-MIPS-ath79-add-support-for-QCA953x-QCA956x-TP9343.patch b/target/linux/ath79/patches-4.14/0010-MIPS-ath79-add-support-for-QCA953x-QCA956x-TP9343.patch index fcf4fe47fc..1a87f52d18 100644 --- a/target/linux/ath79/patches-4.14/0010-MIPS-ath79-add-support-for-QCA953x-QCA956x-TP9343.patch +++ b/target/linux/ath79/patches-4.14/0010-MIPS-ath79-add-support-for-QCA953x-QCA956x-TP9343.patch @@ -280,7 +280,7 @@ Signed-off-by: John Crispin <john@phrozen.org> --- a/arch/mips/ath79/setup.c +++ b/arch/mips/ath79/setup.c -@@ -59,6 +59,7 @@ static void __init ath79_detect_sys_type +@@ -60,6 +60,7 @@ static void __init ath79_detect_sys_type u32 major; u32 minor; u32 rev = 0; @@ -288,7 +288,7 @@ Signed-off-by: John Crispin <john@phrozen.org> id = ath79_reset_rr(AR71XX_RESET_REG_REV_ID); major = id & REV_ID_MAJOR_MASK; -@@ -151,6 +152,17 @@ static void __init ath79_detect_sys_type +@@ -152,6 +153,17 @@ static void __init ath79_detect_sys_type rev = id & AR934X_REV_ID_REVISION_MASK; break; @@ -306,7 +306,7 @@ Signed-off-by: John Crispin <john@phrozen.org> case REV_ID_MAJOR_QCA9556: ath79_soc = ATH79_SOC_QCA9556; chip = "9556"; -@@ -163,14 +175,30 @@ static void __init ath79_detect_sys_type +@@ -164,14 +176,30 @@ static void __init ath79_detect_sys_type rev = id & QCA955X_REV_ID_REVISION_MASK; break; diff --git a/target/linux/ath79/patches-4.14/0013-MIPS-ath79-fix-system-restart.patch b/target/linux/ath79/patches-4.14/0013-MIPS-ath79-fix-system-restart.patch deleted file mode 100644 index a23304930f..0000000000 --- a/target/linux/ath79/patches-4.14/0013-MIPS-ath79-fix-system-restart.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 59c7470bc5c4b29ed77d46fc4982f1d85b5cbec1 Mon Sep 17 00:00:00 2001 -From: Felix Fietkau <nbd@nbd.name> -Date: Mon, 5 Mar 2018 11:33:54 +0100 -Subject: [PATCH 13/33] MIPS: ath79: fix system restart - -This patch disables irq on reboot to fix hang issues that were observed -due to pending interrupts. - -Signed-off-by: Felix Fietkau <nbd@nbd.name> -Signed-off-by: John Crispin <john@phrozen.org> ---- - arch/mips/ath79/setup.c | 1 + - arch/mips/include/asm/mach-ath79/ath79.h | 1 + - 2 files changed, 2 insertions(+) - ---- a/arch/mips/ath79/setup.c -+++ b/arch/mips/ath79/setup.c -@@ -40,6 +40,7 @@ static char ath79_sys_type[ATH79_SYS_TYP - - static void ath79_restart(char *command) - { -+ local_irq_disable(); - ath79_device_reset_set(AR71XX_RESET_FULL_CHIP); - for (;;) - if (cpu_wait) ---- a/arch/mips/include/asm/mach-ath79/ath79.h -+++ b/arch/mips/include/asm/mach-ath79/ath79.h -@@ -167,6 +167,7 @@ static inline u32 ath79_pll_rr(unsigned - static inline void ath79_reset_wr(unsigned reg, u32 val) - { - __raw_writel(val, ath79_reset_base + reg); -+ (void) __raw_readl(ath79_reset_base + reg); /* flush */ - } - - static inline u32 ath79_reset_rr(unsigned reg) diff --git a/target/linux/bcm53xx/patches-4.14/180-usb-xhci-add-support-for-performing-fake-doorbell.patch b/target/linux/bcm53xx/patches-4.14/180-usb-xhci-add-support-for-performing-fake-doorbell.patch index ac622010ff..7ab5ffcb14 100644 --- a/target/linux/bcm53xx/patches-4.14/180-usb-xhci-add-support-for-performing-fake-doorbell.patch +++ b/target/linux/bcm53xx/patches-4.14/180-usb-xhci-add-support-for-performing-fake-doorbell.patch @@ -40,7 +40,7 @@ it on BCM4708 family. /* called during probe() after chip reset completes */ --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c -@@ -153,6 +153,49 @@ int xhci_start(struct xhci_hcd *xhci) +@@ -168,6 +168,49 @@ int xhci_start(struct xhci_hcd *xhci) return ret; } @@ -90,7 +90,7 @@ it on BCM4708 family. /* * Reset a halted HC. * -@@ -536,10 +579,20 @@ static int xhci_init(struct usb_hcd *hcd +@@ -551,10 +594,20 @@ static int xhci_init(struct usb_hcd *hcd static int xhci_run_finished(struct xhci_hcd *xhci) { @@ -114,7 +114,7 @@ it on BCM4708 family. xhci->shared_hcd->state = HC_STATE_RUNNING; xhci->cmd_ring_state = CMD_RING_STATE_RUNNING; -@@ -549,6 +602,10 @@ static int xhci_run_finished(struct xhci +@@ -564,6 +617,10 @@ static int xhci_run_finished(struct xhci xhci_dbg_trace(xhci, trace_xhci_dbg_init, "Finished xhci_run for USB3 roothub"); return 0; diff --git a/target/linux/generic/backport-4.14/180-earlycon-initialize-port-uartclk-based-on-clock-frequency-property.patch b/target/linux/generic/backport-4.14/180-earlycon-initialize-port-uartclk-based-on-clock-frequency-property.patch deleted file mode 100644 index 1b98958af4..0000000000 --- a/target/linux/generic/backport-4.14/180-earlycon-initialize-port-uartclk-based-on-clock-frequency-property.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 814453adea7d081ad8917aa0f32d6a14165a3563 Mon Sep 17 00:00:00 2001 -From: Michal Simek <michal.simek@xilinx.com> -Date: Tue, 10 Apr 2018 15:32:28 +0200 -Subject: earlycon: Initialize port->uartclk based on clock-frequency property - -From: Michal Simek <michal.simek@xilinx.com> - -commit 814453adea7d081ad8917aa0f32d6a14165a3563 upstream. - -On DT based platforms when current-speed property is present baudrate -is setup. Also port->uartclk is initialized to bogus BASE_BAUD * 16 -value. Drivers like uartps/ns16550 contain logic when baudrate and -uartclk is used for baudrate calculation. - -The patch is reading optional clock-frequency property to replace bogus -BASE_BAUD * 16 calculation to have proper baudrate calculation. - -[-stable comment: commit 31cb9a8575ca ("earlycon: initialise baud field - of earlycon device structure") has changed 8250_early.c behavior which - now tries to setup UART speed. Ignoring clock-frequency results in - wrong value of calculated divisor & malformed early console output.] - -Fixes: 31cb9a8575ca ("earlycon: initialise baud field of earlycon device structure") -Signed-off-by: Michal Simek <michal.simek@xilinx.com> -[rmilecki: add -stable comment and Fixes tag] -Signed-off-by: Rafał Miłecki <rafal@milecki.pl> -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> - ---- - drivers/tty/serial/earlycon.c | 4 ++++ - 1 file changed, 4 insertions(+) - ---- a/drivers/tty/serial/earlycon.c -+++ b/drivers/tty/serial/earlycon.c -@@ -289,6 +289,10 @@ int __init of_setup_earlycon(const struc - if (val) - early_console_dev.baud = be32_to_cpu(*val); - -+ val = of_get_flat_dt_prop(node, "clock-frequency", NULL); -+ if (val) -+ port->uartclk = be32_to_cpu(*val); -+ - if (options) { - early_console_dev.baud = simple_strtoul(options, NULL, 0); - strlcpy(early_console_dev.options, options, diff --git a/target/linux/generic/backport-4.14/181-earlycon-remove-hardcoded-port-uartclk-initialization-in-of_setup_earlycon.patch b/target/linux/generic/backport-4.14/181-earlycon-remove-hardcoded-port-uartclk-initialization-in-of_setup_earlycon.patch deleted file mode 100644 index a4df913840..0000000000 --- a/target/linux/generic/backport-4.14/181-earlycon-remove-hardcoded-port-uartclk-initialization-in-of_setup_earlycon.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 182ead3e418a20328b73152b8e81fc8b4cac3b0b Mon Sep 17 00:00:00 2001 -From: Michal Simek <michal.simek@xilinx.com> -Date: Wed, 25 Apr 2018 15:48:42 +0200 -Subject: earlycon: Remove hardcoded port->uartclk initialization in of_setup_earlycon - -From: Michal Simek <michal.simek@xilinx.com> - -commit 182ead3e418a20328b73152b8e81fc8b4cac3b0b upstream. - -There is no reason to initialize uartclk to BASE_BAUD * 16 for DT based -systems. - -[-stable comment: commit 31cb9a8575ca ("earlycon: initialise baud field - of earlycon device structure") has changed 8250_early.c behavior which - now tries to setup UART speed. - Already-backported upstream commit 0ff3ab701963 ("serial: 8250_early: - Only set divisor if valid clk & baud") handles properly uartclk not - being set but it still requires backporting fix for wrong uartclk val. - This fixes malformed early console output on arch-es with BASE_BAUD.] - -Fixes: 31cb9a8575ca ("earlycon: initialise baud field of earlycon device structure") -Signed-off-by: Michal Simek <michal.simek@xilinx.com> -Tested-by: Matt Redfearn <matt.redfearn@mips.com> -[rmilecki: add -stable comment and Fixes tag] -Signed-off-by: Rafał Miłecki <rafal@milecki.pl> -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> ---- - drivers/tty/serial/earlycon.c | 1 - - 1 file changed, 1 deletion(-) - ---- a/drivers/tty/serial/earlycon.c -+++ b/drivers/tty/serial/earlycon.c -@@ -254,7 +254,6 @@ int __init of_setup_earlycon(const struc - return -ENXIO; - } - port->mapbase = addr; -- port->uartclk = BASE_BAUD * 16; - - val = of_get_flat_dt_prop(node, "reg-offset", NULL); - if (val) diff --git a/target/linux/generic/backport-4.14/700-1-6-e1000e-Remove-Other-from-EIAC.diff b/target/linux/generic/backport-4.14/700-1-6-e1000e-Remove-Other-from-EIAC.diff deleted file mode 100644 index 9ce01aac5e..0000000000 --- a/target/linux/generic/backport-4.14/700-1-6-e1000e-Remove-Other-from-EIAC.diff +++ /dev/null @@ -1,66 +0,0 @@ -From patchwork Mon Mar 5 21:40:25 2018 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [net,v2,1/6] e1000e: Remove Other from EIAC -X-Patchwork-Submitter: "Kirsher, Jeffrey T" <jeffrey.t.kirsher@intel.com> -X-Patchwork-Id: 881773 -X-Patchwork-Delegate: davem@davemloft.net -Message-Id: <20180305214030.25141-2-jeffrey.t.kirsher@intel.com> -To: davem@davemloft.net -Cc: Benjamin Poirier <bpoirier@suse.com>, netdev@vger.kernel.org, - nhorman@redhat.com, sassmann@redhat.com, jogreene@redhat.com, - Jeff Kirsher <jeffrey.t.kirsher@intel.com> -Date: Mon, 5 Mar 2018 13:40:25 -0800 -From: Jeff Kirsher <jeffrey.t.kirsher@intel.com> -List-Id: <netdev.vger.kernel.org> - -From: Benjamin Poirier <bpoirier@suse.com> - -It was reported that emulated e1000e devices in vmware esxi 6.5 Build -7526125 do not link up after commit 4aea7a5c5e94 ("e1000e: Avoid receiver -overrun interrupt bursts", v4.15-rc1). Some tracing shows that after -e1000e_trigger_lsc() is called, ICR reads out as 0x0 in e1000_msix_other() -on emulated e1000e devices. In comparison, on real e1000e 82574 hardware, -icr=0x80000004 (_INT_ASSERTED | _LSC) in the same situation. - -Some experimentation showed that this flaw in vmware e1000e emulation can -be worked around by not setting Other in EIAC. This is how it was before -16ecba59bc33 ("e1000e: Do not read ICR in Other interrupt", v4.5-rc1). - -Fixes: 4aea7a5c5e94 ("e1000e: Avoid receiver overrun interrupt bursts") -Signed-off-by: Benjamin Poirier <bpoirier@suse.com> -Tested-by: Aaron Brown <aaron.f.brown@intel.com> -Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> ---- - drivers/net/ethernet/intel/e1000e/netdev.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - ---- a/drivers/net/ethernet/intel/e1000e/netdev.c -+++ b/drivers/net/ethernet/intel/e1000e/netdev.c -@@ -1914,6 +1914,8 @@ static irqreturn_t e1000_msix_other(int - bool enable = true; - - icr = er32(ICR); -+ ew32(ICR, E1000_ICR_OTHER); -+ - if (icr & E1000_ICR_RXO) { - ew32(ICR, E1000_ICR_RXO); - enable = false; -@@ -2036,7 +2038,6 @@ static void e1000_configure_msix(struct - hw->hw_addr + E1000_EITR_82574(vector)); - else - writel(1, hw->hw_addr + E1000_EITR_82574(vector)); -- adapter->eiac_mask |= E1000_IMS_OTHER; - - /* Cause Tx interrupts on every write back */ - ivar |= BIT(31); -@@ -2261,7 +2262,7 @@ static void e1000_irq_enable(struct e100 - - if (adapter->msix_entries) { - ew32(EIAC_82574, adapter->eiac_mask & E1000_EIAC_MASK_82574); -- ew32(IMS, adapter->eiac_mask | E1000_IMS_LSC); -+ ew32(IMS, adapter->eiac_mask | E1000_IMS_OTHER | E1000_IMS_LSC); - } else if (hw->mac.type >= e1000_pch_lpt) { - ew32(IMS, IMS_ENABLE_MASK | E1000_IMS_ECCER); - } else { diff --git a/target/linux/generic/backport-4.14/700-2-6-Partial-revert-e1000e-Avoid-receiver-overrun-interrupt-bursts.diff b/target/linux/generic/backport-4.14/700-2-6-Partial-revert-e1000e-Avoid-receiver-overrun-interrupt-bursts.diff deleted file mode 100644 index 2800e6f8d8..0000000000 --- a/target/linux/generic/backport-4.14/700-2-6-Partial-revert-e1000e-Avoid-receiver-overrun-interrupt-bursts.diff +++ /dev/null @@ -1,84 +0,0 @@ -From patchwork Mon Mar 5 21:40:26 2018 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [net, v2, - 2/6] Partial revert "e1000e: Avoid receiver overrun interrupt bursts" -X-Patchwork-Submitter: "Kirsher, Jeffrey T" <jeffrey.t.kirsher@intel.com> -X-Patchwork-Id: 881769 -X-Patchwork-Delegate: davem@davemloft.net -Message-Id: <20180305214030.25141-3-jeffrey.t.kirsher@intel.com> -To: davem@davemloft.net -Cc: Benjamin Poirier <bpoirier@suse.com>, netdev@vger.kernel.org, - nhorman@redhat.com, sassmann@redhat.com, jogreene@redhat.com, - Jeff Kirsher <jeffrey.t.kirsher@intel.com> -Date: Mon, 5 Mar 2018 13:40:26 -0800 -From: Jeff Kirsher <jeffrey.t.kirsher@intel.com> -List-Id: <netdev.vger.kernel.org> - -From: Benjamin Poirier <bpoirier@suse.com> - -This partially reverts commit 4aea7a5c5e940c1723add439f4088844cd26196d. - -We keep the fix for the first part of the problem (1) described in the log -of that commit, that is to read ICR in the other interrupt handler. We -remove the fix for the second part of the problem (2), Other interrupt -throttling. - -Bursts of "Other" interrupts may once again occur during rxo (receive -overflow) traffic conditions. This is deemed acceptable in the interest of -avoiding unforeseen fallout from changes that are not strictly necessary. -As discussed, the e1000e driver should be in "maintenance mode". - -Link: https://www.spinics.net/lists/netdev/msg480675.html -Signed-off-by: Benjamin Poirier <bpoirier@suse.com> -Acked-by: Alexander Duyck <alexander.h.duyck@intel.com> -Tested-by: Aaron Brown <aaron.f.brown@intel.com> -Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> ---- - drivers/net/ethernet/intel/e1000e/netdev.c | 16 ++-------------- - 1 file changed, 2 insertions(+), 14 deletions(-) - ---- a/drivers/net/ethernet/intel/e1000e/netdev.c -+++ b/drivers/net/ethernet/intel/e1000e/netdev.c -@@ -1911,21 +1911,10 @@ static irqreturn_t e1000_msix_other(int - struct e1000_adapter *adapter = netdev_priv(netdev); - struct e1000_hw *hw = &adapter->hw; - u32 icr; -- bool enable = true; - - icr = er32(ICR); - ew32(ICR, E1000_ICR_OTHER); - -- if (icr & E1000_ICR_RXO) { -- ew32(ICR, E1000_ICR_RXO); -- enable = false; -- /* napi poll will re-enable Other, make sure it runs */ -- if (napi_schedule_prep(&adapter->napi)) { -- adapter->total_rx_bytes = 0; -- adapter->total_rx_packets = 0; -- __napi_schedule(&adapter->napi); -- } -- } - if (icr & E1000_ICR_LSC) { - ew32(ICR, E1000_ICR_LSC); - hw->mac.get_link_status = true; -@@ -1934,7 +1923,7 @@ static irqreturn_t e1000_msix_other(int - mod_timer(&adapter->watchdog_timer, jiffies + 1); - } - -- if (enable && !test_bit(__E1000_DOWN, &adapter->state)) -+ if (!test_bit(__E1000_DOWN, &adapter->state)) - ew32(IMS, E1000_IMS_OTHER); - - return IRQ_HANDLED; -@@ -2704,8 +2693,7 @@ static int e1000e_poll(struct napi_struc - napi_complete_done(napi, work_done); - if (!test_bit(__E1000_DOWN, &adapter->state)) { - if (adapter->msix_entries) -- ew32(IMS, adapter->rx_ring->ims_val | -- E1000_IMS_OTHER); -+ ew32(IMS, adapter->rx_ring->ims_val); - else - e1000_irq_enable(adapter); - } diff --git a/target/linux/generic/backport-4.14/700-3-6-e1000e-Fix-queue-interrupt-re-raising-in-Other-interrupt.diff b/target/linux/generic/backport-4.14/700-3-6-e1000e-Fix-queue-interrupt-re-raising-in-Other-interrupt.diff deleted file mode 100644 index 8ad13ba69a..0000000000 --- a/target/linux/generic/backport-4.14/700-3-6-e1000e-Fix-queue-interrupt-re-raising-in-Other-interrupt.diff +++ /dev/null @@ -1,50 +0,0 @@ -From patchwork Mon Mar 5 21:40:27 2018 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [net, v2, - 3/6] e1000e: Fix queue interrupt re-raising in Other interrupt -X-Patchwork-Submitter: "Kirsher, Jeffrey T" <jeffrey.t.kirsher@intel.com> -X-Patchwork-Id: 881775 -X-Patchwork-Delegate: davem@davemloft.net -Message-Id: <20180305214030.25141-4-jeffrey.t.kirsher@intel.com> -To: davem@davemloft.net -Cc: Benjamin Poirier <bpoirier@suse.com>, netdev@vger.kernel.org, - nhorman@redhat.com, sassmann@redhat.com, jogreene@redhat.com, - Jeff Kirsher <jeffrey.t.kirsher@intel.com> -Date: Mon, 5 Mar 2018 13:40:27 -0800 -From: Jeff Kirsher <jeffrey.t.kirsher@intel.com> -List-Id: <netdev.vger.kernel.org> - -From: Benjamin Poirier <bpoirier@suse.com> - -Restores the ICS write for Rx/Tx queue interrupts which was present before -commit 16ecba59bc33 ("e1000e: Do not read ICR in Other interrupt", v4.5-rc1) -but was not restored in commit 4aea7a5c5e94 -("e1000e: Avoid receiver overrun interrupt bursts", v4.15-rc1). - -This re-raises the queue interrupts in case the txq or rxq bits were set in -ICR and the Other interrupt handler read and cleared ICR before the queue -interrupt was raised. - -Fixes: 4aea7a5c5e94 ("e1000e: Avoid receiver overrun interrupt bursts") -Signed-off-by: Benjamin Poirier <bpoirier@suse.com> -Acked-by: Alexander Duyck <alexander.h.duyck@intel.com> -Tested-by: Aaron Brown <aaron.f.brown@intel.com> -Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> ---- - drivers/net/ethernet/intel/e1000e/netdev.c | 3 +++ - 1 file changed, 3 insertions(+) - ---- a/drivers/net/ethernet/intel/e1000e/netdev.c -+++ b/drivers/net/ethernet/intel/e1000e/netdev.c -@@ -1915,6 +1915,9 @@ static irqreturn_t e1000_msix_other(int - icr = er32(ICR); - ew32(ICR, E1000_ICR_OTHER); - -+ if (icr & adapter->eiac_mask) -+ ew32(ICS, (icr & adapter->eiac_mask)); -+ - if (icr & E1000_ICR_LSC) { - ew32(ICR, E1000_ICR_LSC); - hw->mac.get_link_status = true; diff --git a/target/linux/generic/backport-4.14/700-4-6-e1000e-Avoid-missed-interrupts-following-ICR-read.diff b/target/linux/generic/backport-4.14/700-4-6-e1000e-Avoid-missed-interrupts-following-ICR-read.diff deleted file mode 100644 index f218f34d29..0000000000 --- a/target/linux/generic/backport-4.14/700-4-6-e1000e-Avoid-missed-interrupts-following-ICR-read.diff +++ /dev/null @@ -1,131 +0,0 @@ -From patchwork Mon Mar 5 21:40:28 2018 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [net,v2,4/6] e1000e: Avoid missed interrupts following ICR read -X-Patchwork-Submitter: "Kirsher, Jeffrey T" <jeffrey.t.kirsher@intel.com> -X-Patchwork-Id: 881771 -X-Patchwork-Delegate: davem@davemloft.net -Message-Id: <20180305214030.25141-5-jeffrey.t.kirsher@intel.com> -To: davem@davemloft.net -Cc: Benjamin Poirier <bpoirier@suse.com>, netdev@vger.kernel.org, - nhorman@redhat.com, sassmann@redhat.com, jogreene@redhat.com, - Jeff Kirsher <jeffrey.t.kirsher@intel.com> -Date: Mon, 5 Mar 2018 13:40:28 -0800 -From: Jeff Kirsher <jeffrey.t.kirsher@intel.com> -List-Id: <netdev.vger.kernel.org> - -From: Benjamin Poirier <bpoirier@suse.com> - -The 82574 specification update errata 12 states that interrupts may be -missed if ICR is read while INT_ASSERTED is not set. Avoid that problem by -setting all bits related to events that can trigger the Other interrupt in -IMS. - -The Other interrupt is raised for such events regardless of whether or not -they are set in IMS. However, only when they are set is the INT_ASSERTED -bit also set in ICR. - -By doing this, we ensure that INT_ASSERTED is always set when we read ICR -in e1000_msix_other() and steer clear of the errata. This also ensures that -ICR will automatically be cleared on read, therefore we no longer need to -clear bits explicitly. - -Signed-off-by: Benjamin Poirier <bpoirier@suse.com> -Acked-by: Alexander Duyck <alexander.h.duyck@intel.com> -Tested-by: Aaron Brown <aaron.f.brown@intel.com> -Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> ---- - drivers/net/ethernet/intel/e1000e/defines.h | 21 ++++++++++++++++++++- - drivers/net/ethernet/intel/e1000e/netdev.c | 11 ++++------- - 2 files changed, 24 insertions(+), 8 deletions(-) - ---- a/drivers/net/ethernet/intel/e1000e/defines.h -+++ b/drivers/net/ethernet/intel/e1000e/defines.h -@@ -400,6 +400,10 @@ - #define E1000_ICR_RXDMT0 0x00000010 /* Rx desc min. threshold (0) */ - #define E1000_ICR_RXO 0x00000040 /* Receiver Overrun */ - #define E1000_ICR_RXT0 0x00000080 /* Rx timer intr (ring 0) */ -+#define E1000_ICR_MDAC 0x00000200 /* MDIO Access Complete */ -+#define E1000_ICR_SRPD 0x00010000 /* Small Receive Packet Detected */ -+#define E1000_ICR_ACK 0x00020000 /* Receive ACK Frame Detected */ -+#define E1000_ICR_MNG 0x00040000 /* Manageability Event Detected */ - #define E1000_ICR_ECCER 0x00400000 /* Uncorrectable ECC Error */ - /* If this bit asserted, the driver should claim the interrupt */ - #define E1000_ICR_INT_ASSERTED 0x80000000 -@@ -407,7 +411,7 @@ - #define E1000_ICR_RXQ1 0x00200000 /* Rx Queue 1 Interrupt */ - #define E1000_ICR_TXQ0 0x00400000 /* Tx Queue 0 Interrupt */ - #define E1000_ICR_TXQ1 0x00800000 /* Tx Queue 1 Interrupt */ --#define E1000_ICR_OTHER 0x01000000 /* Other Interrupts */ -+#define E1000_ICR_OTHER 0x01000000 /* Other Interrupt */ - - /* PBA ECC Register */ - #define E1000_PBA_ECC_COUNTER_MASK 0xFFF00000 /* ECC counter mask */ -@@ -431,12 +435,27 @@ - E1000_IMS_RXSEQ | \ - E1000_IMS_LSC) - -+/* These are all of the events related to the OTHER interrupt. -+ */ -+#define IMS_OTHER_MASK ( \ -+ E1000_IMS_LSC | \ -+ E1000_IMS_RXO | \ -+ E1000_IMS_MDAC | \ -+ E1000_IMS_SRPD | \ -+ E1000_IMS_ACK | \ -+ E1000_IMS_MNG) -+ - /* Interrupt Mask Set */ - #define E1000_IMS_TXDW E1000_ICR_TXDW /* Transmit desc written back */ - #define E1000_IMS_LSC E1000_ICR_LSC /* Link Status Change */ - #define E1000_IMS_RXSEQ E1000_ICR_RXSEQ /* Rx sequence error */ - #define E1000_IMS_RXDMT0 E1000_ICR_RXDMT0 /* Rx desc min. threshold */ -+#define E1000_IMS_RXO E1000_ICR_RXO /* Receiver Overrun */ - #define E1000_IMS_RXT0 E1000_ICR_RXT0 /* Rx timer intr */ -+#define E1000_IMS_MDAC E1000_ICR_MDAC /* MDIO Access Complete */ -+#define E1000_IMS_SRPD E1000_ICR_SRPD /* Small Receive Packet */ -+#define E1000_IMS_ACK E1000_ICR_ACK /* Receive ACK Frame Detected */ -+#define E1000_IMS_MNG E1000_ICR_MNG /* Manageability Event */ - #define E1000_IMS_ECCER E1000_ICR_ECCER /* Uncorrectable ECC Error */ - #define E1000_IMS_RXQ0 E1000_ICR_RXQ0 /* Rx Queue 0 Interrupt */ - #define E1000_IMS_RXQ1 E1000_ICR_RXQ1 /* Rx Queue 1 Interrupt */ ---- a/drivers/net/ethernet/intel/e1000e/netdev.c -+++ b/drivers/net/ethernet/intel/e1000e/netdev.c -@@ -1910,16 +1910,12 @@ static irqreturn_t e1000_msix_other(int - struct net_device *netdev = data; - struct e1000_adapter *adapter = netdev_priv(netdev); - struct e1000_hw *hw = &adapter->hw; -- u32 icr; -- -- icr = er32(ICR); -- ew32(ICR, E1000_ICR_OTHER); -+ u32 icr = er32(ICR); - - if (icr & adapter->eiac_mask) - ew32(ICS, (icr & adapter->eiac_mask)); - - if (icr & E1000_ICR_LSC) { -- ew32(ICR, E1000_ICR_LSC); - hw->mac.get_link_status = true; - /* guard against interrupt when we're going down */ - if (!test_bit(__E1000_DOWN, &adapter->state)) -@@ -1927,7 +1923,7 @@ static irqreturn_t e1000_msix_other(int - } - - if (!test_bit(__E1000_DOWN, &adapter->state)) -- ew32(IMS, E1000_IMS_OTHER); -+ ew32(IMS, E1000_IMS_OTHER | IMS_OTHER_MASK); - - return IRQ_HANDLED; - } -@@ -2254,7 +2250,8 @@ static void e1000_irq_enable(struct e100 - - if (adapter->msix_entries) { - ew32(EIAC_82574, adapter->eiac_mask & E1000_EIAC_MASK_82574); -- ew32(IMS, adapter->eiac_mask | E1000_IMS_OTHER | E1000_IMS_LSC); -+ ew32(IMS, adapter->eiac_mask | E1000_IMS_OTHER | -+ IMS_OTHER_MASK); - } else if (hw->mac.type >= e1000_pch_lpt) { - ew32(IMS, IMS_ENABLE_MASK | E1000_IMS_ECCER); - } else { diff --git a/target/linux/generic/pending-4.14/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-4.14/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch index 74baa80cdd..a5cb9579f7 100644 --- a/target/linux/generic/pending-4.14/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch +++ b/target/linux/generic/pending-4.14/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch @@ -181,7 +181,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> cfg->fc_flags |= RTF_REJECT; if (rtm->rtm_type == RTN_LOCAL) -@@ -3494,6 +3528,9 @@ static int rt6_fill_node(struct net *net +@@ -3499,6 +3533,9 @@ static int rt6_fill_node(struct net *net case -EACCES: rtm->rtm_type = RTN_PROHIBIT; break; @@ -191,7 +191,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> case -EAGAIN: rtm->rtm_type = RTN_THROW; break; -@@ -3812,6 +3849,8 @@ static int ip6_route_dev_notify(struct n +@@ -3817,6 +3854,8 @@ static int ip6_route_dev_notify(struct n #ifdef CONFIG_IPV6_MULTIPLE_TABLES net->ipv6.ip6_prohibit_entry->dst.dev = dev; net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev); @@ -200,7 +200,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> net->ipv6.ip6_blk_hole_entry->dst.dev = dev; net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev); #endif -@@ -3823,6 +3862,7 @@ static int ip6_route_dev_notify(struct n +@@ -3828,6 +3867,7 @@ static int ip6_route_dev_notify(struct n in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev); #ifdef CONFIG_IPV6_MULTIPLE_TABLES in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev); @@ -208,7 +208,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev); #endif } -@@ -4039,6 +4079,17 @@ static int __net_init ip6_route_net_init +@@ -4044,6 +4084,17 @@ static int __net_init ip6_route_net_init net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops; dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst, ip6_template_metrics, true); @@ -226,7 +226,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> #endif net->ipv6.sysctl.flush_delay = 0; -@@ -4057,6 +4108,8 @@ out: +@@ -4062,6 +4113,8 @@ out: return ret; #ifdef CONFIG_IPV6_MULTIPLE_TABLES @@ -235,7 +235,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> out_ip6_prohibit_entry: kfree(net->ipv6.ip6_prohibit_entry); out_ip6_null_entry: -@@ -4074,6 +4127,7 @@ static void __net_exit ip6_route_net_exi +@@ -4079,6 +4132,7 @@ static void __net_exit ip6_route_net_exi #ifdef CONFIG_IPV6_MULTIPLE_TABLES kfree(net->ipv6.ip6_prohibit_entry); kfree(net->ipv6.ip6_blk_hole_entry); @@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> #endif dst_entries_destroy(&net->ipv6.ip6_dst_ops); } -@@ -4147,6 +4201,9 @@ void __init ip6_route_init_special_entri +@@ -4152,6 +4206,9 @@ void __init ip6_route_init_special_entri init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev; init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); diff --git a/target/linux/ipq40xx/patches-4.14/080-pinctrl-msm-fix-gpio-hog-related-boot-issues.patch b/target/linux/ipq40xx/patches-4.14/080-pinctrl-msm-fix-gpio-hog-related-boot-issues.patch index f76dd18187..cffcd6c76c 100644 --- a/target/linux/ipq40xx/patches-4.14/080-pinctrl-msm-fix-gpio-hog-related-boot-issues.patch +++ b/target/linux/ipq40xx/patches-4.14/080-pinctrl-msm-fix-gpio-hog-related-boot-issues.patch @@ -71,7 +71,7 @@ Origin: other, https://patchwork.kernel.org/patch/10339127/ #interrupt-cells = <2>; --- a/drivers/pinctrl/qcom/pinctrl-msm.c +++ b/drivers/pinctrl/qcom/pinctrl-msm.c -@@ -831,11 +831,24 @@ static int msm_gpio_init(struct msm_pinc +@@ -839,11 +839,24 @@ static int msm_gpio_init(struct msm_pinc return ret; } diff --git a/target/linux/ipq806x/patches-4.14/0073-pinctrl-qom-use-scm_call-to-route-GPIO-irq-to-Apps.patch b/target/linux/ipq806x/patches-4.14/0073-pinctrl-qom-use-scm_call-to-route-GPIO-irq-to-Apps.patch index c92393495b..4ecdf094e6 100644 --- a/target/linux/ipq806x/patches-4.14/0073-pinctrl-qom-use-scm_call-to-route-GPIO-irq-to-Apps.patch +++ b/target/linux/ipq806x/patches-4.14/0073-pinctrl-qom-use-scm_call-to-route-GPIO-irq-to-Apps.patch @@ -112,7 +112,7 @@ Signed-off-by: Ajay Kishore <akisho@codeaurora.org> #include "../core.h" #include "../pinconf.h" #include "pinctrl-msm.h" -@@ -638,6 +639,9 @@ static void msm_gpio_irq_ack(struct irq_ +@@ -646,6 +647,9 @@ static void msm_gpio_irq_ack(struct irq_ const struct msm_pingroup *g; unsigned long flags; u32 val; @@ -122,7 +122,7 @@ Signed-off-by: Ajay Kishore <akisho@codeaurora.org> g = &pctrl->soc->groups[d->hwirq]; -@@ -676,11 +680,30 @@ static int msm_gpio_irq_set_type(struct +@@ -684,11 +688,30 @@ static int msm_gpio_irq_set_type(struct else clear_bit(d->hwirq, pctrl->dual_edge_irqs); @@ -157,7 +157,7 @@ Signed-off-by: Ajay Kishore <akisho@codeaurora.org> /* Update configuration for gpio. * RAW_STATUS_EN is left on for all gpio irqs. Due to the -@@ -954,4 +977,3 @@ int msm_pinctrl_remove(struct platform_d +@@ -962,4 +985,3 @@ int msm_pinctrl_remove(struct platform_d return 0; } EXPORT_SYMBOL(msm_pinctrl_remove); diff --git a/target/linux/mediatek/patches-4.14/0191-usb-xhci-allow-imod-interval-to-be-configurable.patch b/target/linux/mediatek/patches-4.14/0191-usb-xhci-allow-imod-interval-to-be-configurable.patch index ee260d2aab..5230487739 100644 --- a/target/linux/mediatek/patches-4.14/0191-usb-xhci-allow-imod-interval-to-be-configurable.patch +++ b/target/linux/mediatek/patches-4.14/0191-usb-xhci-allow-imod-interval-to-be-configurable.patch @@ -112,7 +112,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> ret = PTR_ERR(hcd->usb_phy); --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c -@@ -597,11 +597,7 @@ int xhci_run(struct usb_hcd *hcd) +@@ -612,11 +612,7 @@ int xhci_run(struct usb_hcd *hcd) "// Set the interrupt modulation register"); temp = readl(&xhci->ir_set->irq_control); temp &= ~ER_IRQ_INTERVAL_MASK; |