Home Home > GIT Browse
summaryrefslogtreecommitdiff
authorBrandon Philips <bphilips@suse.de>2010-10-22 21:42:57 (GMT)
committer Brandon Philips <bphilips@suse.de>2010-10-22 21:42:57 (GMT)
commit66ba8d330fb4b9ced5a1854de2dbe7996ec21e81 (patch) (side-by-side diff)
treec068d655166214f8f7d69aa7e0ca9a96ac98dad2
parentd22f6f94b389d9175abc3df505755a4d04ce7bc6 (diff)
- patches.drivers/cxgb3-parity-managment.patch: cxgb3: Parityrpm-2.6.16.60-0.73
errors management updates (bnc#643606, fate#309997).
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kernel-source.changes6
-rw-r--r--patches.drivers/cxgb3-parity-managment.patch199
-rw-r--r--series.conf1
3 files changed, 206 insertions, 0 deletions
diff --git a/kernel-source.changes b/kernel-source.changes
index 4f38333..bdaa04d 100644
--- a/kernel-source.changes
+++ b/kernel-source.changes
@@ -1,4 +1,10 @@
-------------------------------------------------------------------
+Fri Oct 22 23:42:54 CEST 2010 - bphilips@suse.de
+
+- patches.drivers/cxgb3-parity-managment.patch: cxgb3: Parity
+ errors management updates (bnc#643606, fate#309997).
+
+-------------------------------------------------------------------
Fri Oct 22 23:02:06 CEST 2010 - bphilips@suse.de
- patches.drivers/tg3-3.99c-to-3.114b.patch: tg3: 3.99c to 3.114b
diff --git a/patches.drivers/cxgb3-parity-managment.patch b/patches.drivers/cxgb3-parity-managment.patch
new file mode 100644
index 0000000..6bbaef8
--- a/dev/null
+++ b/patches.drivers/cxgb3-parity-managment.patch
@@ -0,0 +1,199 @@
+From: Pranjal Joshi <pjoshi@chelsio.com>
+References: bnc#643606, fate#309997
+Subject: cxgb3: Parity errors management updates
+Patch-mainline: Merged into net-next-2.6 for 2.6.37
+
+Backport for patches from upstream.
+
+commit 55bc3228ccef255041d697fe55dcc7fe4b37feb6
+Author: Casey Leedom <leedom@chelsio.com>
+Date: Thu Sep 2 13:07:32 2010 +0000
+
+ cxgb3: Avoid flush_workqueue() deadlock.
+
+ Don't call flush_workqueue() on the cxgb3 Work Queue in cxgb_down() when
+ we're being called from the fatal error task ... which is executing on the
+ cxgb3 Work Queue.
+
+ Signed-off-by: Casey Leedom <leedom@chelsio.com>
+ Signed-off-by: David S. Miller <davem@davemloft.net>
+
+
+commit aa476321022ac6c3cb8ebfd1736555ccf61da276
+Author: Casey Leedom <leedom@chelsio.com>
+Date: Thu Sep 2 13:07:31 2010 +0000
+
+ cxgb3: Leave interrupts for fatal errors asserted in common code.
+
+ Platform code needs to deal with them now.
+
+ Signed-off-by: Dimitris Michailidis <dm@chelsio.com>
+ Signed-off-by: Casey Leedom <leedom@chelsio.com>
+ Signed-off-by: David S. Miller <davem@davemloft.net>
+
+
+commit e05e6a397c65ac9a31ce799cf85157f2d85f45b7
+Author: Casey Leedom <leedom@chelsio.com>
+Date: Thu Sep 2 13:07:30 2010 +0000
+
+ cxgb3: Set FATALPERREN.
+
+ Signed-off-by: Dimitris Michailidis <dm@chelsio.com>
+ Signed-off-by: Casey Leedom <leedom@chelsio.com>
+ Signed-off-by: David S. Miller <davem@davemloft.net>
+
+
+commit 96e4a387528cfe806fbdf7b022a6c3f103af4ae1
+Author: Casey Leedom <leedom@chelsio.com>
+Date: Thu Sep 2 13:07:29 2010 +0000
+
+ cxgb3: Add register bit definition for Fatal Parity Error.
+
+ Signed-off-by: Casey Leedom <leedom@chelsio.com>
+ Signed-off-by: David S. Miller <davem@davemloft.net>
+
+Signed-off-by: Brandon Philips <bphilips@suse.de>
+
+---
+ drivers/net/cxgb3/cxgb3_main.c | 24 +++++++++++++++---------
+ drivers/net/cxgb3/regs.h | 4 ++++
+ drivers/net/cxgb3/t3_hw.c | 4 +++-
+ 3 files changed, 22 insertions(+), 10 deletions(-)
+
+--- a/drivers/net/cxgb3/cxgb3_main.c
++++ b/drivers/net/cxgb3/cxgb3_main.c
+@@ -1184,7 +1184,7 @@ irq_err:
+ /*
+ * Release resources when all the ports and offloading have been stopped.
+ */
+-static void cxgb_down(struct adapter *adapter)
++static void cxgb_down(struct adapter *adapter, int on_wq)
+ {
+ t3_sge_stop(adapter);
+ spin_lock_irq(&adapter->work_lock); /* sync with PHY intr task */
+@@ -1193,7 +1193,8 @@ static void cxgb_down(struct adapter *ad
+
+ free_irq_resources(adapter);
+ quiesce_rx(adapter);
+- flush_workqueue(cxgb3_wq); /* wait for external IRQ handler */
++ if(!on_wq)
++ flush_workqueue(cxgb3_wq);/* wait for external IRQ handler */
+ }
+
+ static void schedule_chk_task(struct adapter *adap)
+@@ -1271,7 +1272,7 @@ static int offload_close(struct t3cdev *
+ clear_bit(OFFLOAD_DEVMAP_BIT, &adapter->open_device_map);
+
+ if (!adapter->open_device_map)
+- cxgb_down(adapter);
++ cxgb_down(adapter, 0);
+
+ cxgb3_offload_deactivate(adapter);
+ return 0;
+@@ -1304,7 +1305,7 @@ static int cxgb_open(struct net_device *
+ return 0;
+ }
+
+-static int cxgb_close(struct net_device *dev)
++static int __cxgb_close(struct net_device *dev, int on_wq)
+ {
+ struct port_info *pi = netdev_priv(dev);
+ struct adapter *adapter = pi->adapter;
+@@ -1332,11 +1333,16 @@ static int cxgb_close(struct net_device
+ &adapter->adap_check_task);
+
+ if (!adapter->open_device_map)
+- cxgb_down(adapter);
++ cxgb_down(adapter, on_wq);
+
+ return 0;
+ }
+
++static int cxgb_close(struct net_device *dev)
++{
++ return __cxgb_close(dev, 0);
++}
++
+ static struct net_device_stats *cxgb_get_stats(struct net_device *dev)
+ {
+ struct port_info *pi = netdev_priv(dev);
+@@ -2812,7 +2818,7 @@ void t3_os_link_fault_handler(struct ada
+ spin_unlock(&adapter->work_lock);
+ }
+
+-static int t3_adapter_error(struct adapter *adapter, int reset)
++static int t3_adapter_error(struct adapter *adapter, int reset, int on_wq)
+ {
+ int i, ret = 0;
+
+@@ -2827,7 +2833,7 @@ static int t3_adapter_error(struct adapt
+ struct net_device *netdev = adapter->port[i];
+
+ if (netif_running(netdev))
+- cxgb_close(netdev);
++ __cxgb_close(netdev, on_wq);
+ }
+
+ /* Stop SGE timers */
+@@ -2897,7 +2903,7 @@ static void fatal_error_task(struct work
+ int err = 0;
+
+ rtnl_lock();
+- err = t3_adapter_error(adapter, 1);
++ err = t3_adapter_error(adapter, 1, 1);
+ if (!err)
+ err = t3_reenable_adapter(adapter);
+ if (!err)
+@@ -2947,7 +2953,7 @@ static pci_ers_result_t t3_io_error_dete
+ if (state == pci_channel_io_perm_failure)
+ return PCI_ERS_RESULT_DISCONNECT;
+
+- ret = t3_adapter_error(adapter, 0);
++ ret = t3_adapter_error(adapter, 0, 0);
+
+ /* Request a slot reset. */
+ return PCI_ERS_RESULT_NEED_RESET;
+--- a/drivers/net/cxgb3/regs.h
++++ b/drivers/net/cxgb3/regs.h
+@@ -1981,6 +1981,10 @@
+
+ #define A_PL_RST 0x6f0
+
++#define S_FATALPERREN 4
++#define V_FATALPERREN(x) ((x) << S_FATALPERREN)
++#define F_FATALPERREN V_FATALPERREN(1U)
++
+ #define S_CRSTWRM 1
+ #define V_CRSTWRM(x) ((x) << S_CRSTWRM)
+ #define F_CRSTWRM V_CRSTWRM(1U)
+--- a/drivers/net/cxgb3/t3_hw.c
++++ b/drivers/net/cxgb3/t3_hw.c
+@@ -1408,6 +1408,7 @@ static int t3_handle_intr_status(struct
+ fatal++;
+ CH_ALERT(adapter, "%s (0x%x)\n",
+ acts->msg, status & acts->mask);
++ status &= ~acts->mask;
+ } else if (acts->msg)
+ CH_WARN(adapter, "%s (0x%x)\n",
+ acts->msg, status & acts->mask);
+@@ -1840,11 +1841,11 @@ static int mac_intr_handler(struct adapt
+ t3_os_link_fault_handler(adap, idx);
+ }
+
+- t3_write_reg(adap, A_XGM_INT_CAUSE + mac->offset, cause);
+
+ if (cause & XGM_INTR_FATAL)
+ t3_fatal_err(adap);
+
++ t3_write_reg(adap, A_XGM_INT_CAUSE + mac->offset, cause);
+ return cause != 0;
+ }
+
+@@ -3566,6 +3567,7 @@ int t3_init_hw(struct adapter *adapter,
+ t3_write_reg(adapter, A_PM1_TX_MODE, 0);
+ chan_init_hw(adapter, adapter->params.chan_map);
+ t3_sge_init(adapter, &adapter->params.sge);
++ t3_set_reg_field(adapter, A_PL_RST, 0, F_FATALPERREN);
+
+ t3_write_reg(adapter, A_T3DBG_GPIO_ACT_LOW, calc_gpio_intr(adapter));
+
diff --git a/series.conf b/series.conf
index 626ab11..81f7783 100644
--- a/series.conf
+++ b/series.conf
@@ -3148,6 +3148,7 @@
patches.drivers/cxgb3-fix-gen2-pci-default-settings.patch
patches.drivers/cxgb3-add-memory-barriers.patch
patches.drivers/cxgb3-fix-premature-page-unmap.patch
+ patches.drivers/cxgb3-parity-managment.patch
patches.fixes/agp-zero-pages-before-sending-to-userspace
patches.drivers/ppc-saturn-serial
patches.fixes/dvb-core-fix-dos-bug-in-ule-decapsulation-code-that-can-be-triggered-by-an-invalid