sfc: Disable interrupts after a fatal interrupt occurs until reset
authorBen Hutchings <bhutchings@solarflare.com>
Mon, 1 Sep 2008 11:50:14 +0000 (12:50 +0100)
committerJeff Garzik <jgarzik@redhat.com>
Wed, 24 Sep 2008 22:54:40 +0000 (18:54 -0400)
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>
drivers/net/sfc/falcon.c

index 3a5289fe8d1d45768d57a25e4176e1a6c5cf7f6e..d30c938d0fbf784e20d692275ba1a8963d85e809 100644 (file)
@@ -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");