From 04ae6e35156a1cfdab09fb351d695b316ff5e039 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 25 Jul 2013 14:03:39 -0700 Subject: [PATCH] delete queue-3.4/net-tg3-avoid-delay-during-mmio-access.patch --- ...t-tg3-avoid-delay-during-mmio-access.patch | 120 ------------------ queue-3.4/series | 1 - 2 files changed, 121 deletions(-) delete mode 100644 queue-3.4/net-tg3-avoid-delay-during-mmio-access.patch diff --git a/queue-3.4/net-tg3-avoid-delay-during-mmio-access.patch b/queue-3.4/net-tg3-avoid-delay-during-mmio-access.patch deleted file mode 100644 index b0551670b92..00000000000 --- a/queue-3.4/net-tg3-avoid-delay-during-mmio-access.patch +++ /dev/null @@ -1,120 +0,0 @@ -From 8684b4f0dadba8d920360be134a68b452ab1d713 Mon Sep 17 00:00:00 2001 -From: Gavin Shan -Date: Tue, 25 Jun 2013 15:24:32 +0800 -Subject: net/tg3: Avoid delay during MMIO access - -From: Gavin Shan - -[ Upstream commit 6d446ec32f169c6a5d9bc90684a8082a6cbe90f6 ] - -When the EEH error is the result of a fenced host bridge, MMIO accesses -can be very slow (milliseconds) to timeout and return all 1's, -thus causing the driver various timeout loops to take way too long and -trigger soft-lockup warnings (in addition to taking minutes to recover). - -It might be worthwhile to check if for any of these cases, ffffffff is -a valid possible value, and if not, bail early since that means the HW -is either gone or isolated. In the meantime, checking that the PCI channel -is offline would be workaround of the problem. - -Signed-off-by: Gavin Shan -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman ---- - drivers/net/ethernet/broadcom/tg3.c | 36 ++++++++++++++++++++++++++++++++++++ - 1 file changed, 36 insertions(+) - ---- a/drivers/net/ethernet/broadcom/tg3.c -+++ b/drivers/net/ethernet/broadcom/tg3.c -@@ -689,6 +689,9 @@ static int tg3_ape_lock(struct tg3 *tp, - status = tg3_ape_read32(tp, gnt + off); - if (status == bit) - break; -+ if (pci_channel_offline(tp->pdev)) -+ break; -+ - udelay(10); - } - -@@ -1466,6 +1469,9 @@ static void tg3_wait_for_event_ack(struc - for (i = 0; i < delay_cnt; i++) { - if (!(tr32(GRC_RX_CPU_EVENT) & GRC_RX_CPU_DRIVER_EVENT)) - break; -+ if (pci_channel_offline(tp->pdev)) -+ break; -+ - udelay(8); - } - } -@@ -1636,6 +1642,9 @@ static int tg3_poll_fw(struct tg3 *tp) - for (i = 0; i < 200; i++) { - if (tr32(VCPU_STATUS) & VCPU_STATUS_INIT_DONE) - return 0; -+ if (pci_channel_offline(tp->pdev)) -+ return -ENODEV; -+ - udelay(100); - } - return -ENODEV; -@@ -1646,6 +1655,15 @@ static int tg3_poll_fw(struct tg3 *tp) - tg3_read_mem(tp, NIC_SRAM_FIRMWARE_MBOX, &val); - if (val == ~NIC_SRAM_FIRMWARE_MBOX_MAGIC1) - break; -+ if (pci_channel_offline(tp->pdev)) { -+ if (!tg3_flag(tp, NO_FWARE_REPORTED)) { -+ tg3_flag_set(tp, NO_FWARE_REPORTED); -+ netdev_info(tp->dev, "No firmware running\n"); -+ } -+ -+ break; -+ } -+ - udelay(10); - } - -@@ -3204,6 +3222,8 @@ static int tg3_nvram_write_block_buffere - ret = tg3_nvram_exec_cmd(tp, nvram_cmd); - if (ret) - break; -+ if (pci_channel_offline(tp->pdev)) -+ return -EBUSY; - } - return ret; - } -@@ -7674,6 +7694,14 @@ static int tg3_stop_block(struct tg3 *tp - tw32_f(ofs, val); - - for (i = 0; i < MAX_WAIT_CNT; i++) { -+ if (pci_channel_offline(tp->pdev)) { -+ dev_err(&tp->pdev->dev, -+ "tg3_stop_block device offline, " -+ "ofs=%lx enable_bit=%x\n", -+ ofs, enable_bit); -+ return -ENODEV; -+ } -+ - udelay(100); - val = tr32(ofs); - if ((val & enable_bit) == 0) -@@ -7697,6 +7725,13 @@ static int tg3_abort_hw(struct tg3 *tp, - - tg3_disable_ints(tp); - -+ if (pci_channel_offline(tp->pdev)) { -+ tp->rx_mode &= ~(RX_MODE_ENABLE | TX_MODE_ENABLE); -+ tp->mac_mode &= ~MAC_MODE_TDE_ENABLE; -+ err = -ENODEV; -+ goto err_no_dev; -+ } -+ - tp->rx_mode &= ~RX_MODE_ENABLE; - tw32_f(MAC_RX_MODE, tp->rx_mode); - udelay(10); -@@ -7745,6 +7780,7 @@ static int tg3_abort_hw(struct tg3 *tp, - err |= tg3_stop_block(tp, BUFMGR_MODE, BUFMGR_MODE_ENABLE, silent); - err |= tg3_stop_block(tp, MEMARB_MODE, MEMARB_MODE_ENABLE, silent); - -+err_no_dev: - for (i = 0; i < tp->irq_cnt; i++) { - struct tg3_napi *tnapi = &tp->napi[i]; - if (tnapi->hw_status) diff --git a/queue-3.4/series b/queue-3.4/series index 2175cb0a0c7..4064b84df5b 100644 --- a/queue-3.4/series +++ b/queue-3.4/series @@ -19,7 +19,6 @@ bridge-fix-switched-interval-for-mld-query-types.patch ipv4-fixed-md5-key-lookups-when-adding-removing-md5-to-from-tcp-sockets.patch ipv6-don-t-call-addrconf_dst_alloc-again-when-enable-lo.patch macvtap-fix-recovery-from-gup-errors.patch -net-tg3-avoid-delay-during-mmio-access.patch ipv6-ip6_sk_dst_check-must-not-assume-ipv6-dst.patch af_key-fix-info-leaks-in-notify-messages.patch sh_eth-fix-unhandled-rfe-interrupt.patch -- 2.47.3