Commit 0a62f1a6 authored by Ben Hutchings's avatar Ben Hutchings Committed by Jeff Garzik

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: default avatarBen Hutchings <bhutchings@solarflare.com>
Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
parent 1d0680fd
...@@ -1374,10 +1374,11 @@ static irqreturn_t falcon_fatal_interrupt(struct efx_nic *efx) ...@@ -1374,10 +1374,11 @@ static irqreturn_t falcon_fatal_interrupt(struct efx_nic *efx)
EFX_OWORD_FMT "\n", EFX_OWORD_VAL(reg)); EFX_OWORD_FMT "\n", EFX_OWORD_VAL(reg));
} }
/* Disable DMA bus mastering on both devices */ /* Disable both devices */
pci_disable_device(efx->pci_dev); pci_disable_device(efx->pci_dev);
if (FALCON_IS_DUAL_FUNC(efx)) if (FALCON_IS_DUAL_FUNC(efx))
pci_disable_device(nic_data->pci_dev2); pci_disable_device(nic_data->pci_dev2);
falcon_disable_interrupts(efx);
if (++n_int_errors < FALCON_MAX_INT_ERRORS) { if (++n_int_errors < FALCON_MAX_INT_ERRORS) {
EFX_ERR(efx, "SYSTEM ERROR - reset scheduled\n"); EFX_ERR(efx, "SYSTEM ERROR - reset scheduled\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment