summaryrefslogtreecommitdiffstats
path: root/drivers/net/sfc/falcon.c
diff options
context:
space:
mode:
authorBen Hutchings2008-09-01 13:50:14 +0200
committerJeff Garzik2008-09-25 00:54:40 +0200
commit0a62f1a681006719c226a682dbcfb4358c8b3d28 (patch)
tree19f3f64b5b4c720f2180730619fab56f172a6c1d /drivers/net/sfc/falcon.c
parentsfc: Insert read memory barrier after checking MAC statistics flag (diff)
downloadkernel-qcow2-linux-0a62f1a681006719c226a682dbcfb4358c8b3d28.tar.gz
kernel-qcow2-linux-0a62f1a681006719c226a682dbcfb4358c8b3d28.tar.xz
kernel-qcow2-linux-0a62f1a681006719c226a682dbcfb4358c8b3d28.zip
sfc: Disable interrupts after a fatal interrupt occurs until reset
This should avoid an interrupt storm, which has been observed in the field with one faulty board. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/net/sfc/falcon.c')
-rw-r--r--drivers/net/sfc/falcon.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/sfc/falcon.c b/drivers/net/sfc/falcon.c
index 3a5289fe8d1d..d30c938d0fbf 100644
--- a/drivers/net/sfc/falcon.c
+++ b/drivers/net/sfc/falcon.c
@@ -1374,10 +1374,11 @@ static irqreturn_t falcon_fatal_interrupt(struct efx_nic *efx)
EFX_OWORD_FMT "\n", EFX_OWORD_VAL(reg));
}
- /* Disable DMA bus mastering on both devices */
+ /* Disable both devices */
pci_disable_device(efx->pci_dev);
if (FALCON_IS_DUAL_FUNC(efx))
pci_disable_device(nic_data->pci_dev2);
+ falcon_disable_interrupts(efx);
if (++n_int_errors < FALCON_MAX_INT_ERRORS) {
EFX_ERR(efx, "SYSTEM ERROR - reset scheduled\n");